一板网电子技术论坛

风筝
发表于: 2019-12-17 23:55:14 | 显示全部楼层

自动灌装机常用于饮料汽水行业。这些机器一般采用传送带进行灌装,这是一种经济快速的灌装方法。在大多数情况下,自动灌装机使用的是PLC进行控制,但是我们也可以使用Arduino开发板制作一台非常基本且用途广泛的灌装机。您可以通过对Arduino进行编程,使用红外或超声波传感器自动检测瓶子,当检测到瓶子时,停止传送带一段时间使瓶子装满。然后再次移动传送带并在检测到下一个瓶子时停止移动。


在本篇文章中,我们将使用Arduino Uno、传送带、电磁阀、红外传感器和步进电机设计自动灌装机的原型。传送带由步进电机以恒定的预设速度驱动。步进电机将持续驱动传送带,直到红外传感器检测到传送带上有瓶子为止。我们使用红外传感器作为外部触发。因此,每当红外传感器变为高电平时,它都会向Arduino发送触发信号,停止电机并打开电磁阀。所需的延迟时间已经在代码中预设。 Arduino将保持电磁阀打开,步进电机保持关闭,直到指定的时间为止。之后,电磁阀关闭灌装,传送带开始移动,以便可以灌装下一个瓶子。


所需的组件

●    Arduino Uno开发板

●    步进电机(Nema17

●    继电器

●    电磁阀

●    红外传感器

●    A4988电机驱动器

●    电池


电路原理图

下面给出了使用Arduino的自动灌装机的电路图。

Automatic-Bottle-Filling-System-using-Arduino-Circuit-Diagram.png

在该电路中,电磁阀通过继电器模块连接到Arduino,A4988驱动器模块用于控制步进电机。


继电器模块的输入引脚连接到Arduino的引脚7。 A4988模块的Direction和Step引脚分别连接到Arduino的2和4引脚。在本文中,红外传感器用作Arduino的外部中断。在Arduino Uno中,数字引脚2和3是中断引脚,因此将IR传感器的Out引脚连接到Arduino的3号引脚。电磁阀由24V电源供电,而步进电机由12V电源供电。


Arduino自动灌装机的程序

在本文的末尾给出了使用自动灌装机的完整程序。在这里只进行一些简单介绍。


首先包含步进电机的库文件。您可以从此处下载步进电机库。之后,定义步进电机每转的步数。对于NEMA来说,每转17步为200。

  1. #include <Stepper.h>
  2. #define STEPS 200
复制代码

定义电机驱动器模块的Step和Direction引脚连接的Arduino引脚。步进电机通过驱动模块连接,因此将电机接口类型定义为Type1。

  1. Stepper stepper(STEPS, 2, 4);
  2. #define motorInterfaceType 1
复制代码

设置步进电机速度。

  1. stepper.setSpeed(500);
复制代码

将继电器、Step和Direction引脚定义为输出

  1. pinMode(relay,OUTPUT);  
  2. pinMode(4,OUTPUT);
  3. pinMode(2,OUTPUT);
复制代码

attachInterrupt()函数中,将引脚3指定为外部中断引脚,并且每当IR传感器的状态从LOW变为HIGH(RISING)时,都会调用IR_detected函数。

  1. attachInterrupt(digitalPinToInterrupt(3),IR_detected,HIGH);
复制代码

IR_detected()是一个中断服务函数(ISR),当IR传感器变高电平时执行。因此,每当红外传感器变高电平时,此函数都会使步进电机运行几步,然后停止步进电机并打开电磁阀。

  1. void IR_detected()           {                  
  2.   stepper.step(150);
  3.   digitalWrite(relay,HIGH);
  4.   stepper.step(0);
复制代码

最后将其连接到笔记本电脑,将代码上传到Arduino中。以下是制作的原型:

Automatic-Bottle-Filling-System-Setup.jpg


代码

以下是本文使用的完整代码: main.rar (578 Bytes, 下载次数: 21)

跳转到指定楼层
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题 557 | 回复: 1077



手机版|

GMT+8, 2021-4-15 07:27 , Processed in 0.083011 second(s), 31 queries . Powered by Discuz! X3.4

YiBoard一板网 © 2015-2020 地址:河北省石家庄市长安区高营大街 ( 冀ICP备18020117号 )

快速回复 返回顶部 返回列表