自动瓶灌装机最常用于饮料和软饮料行业。这些机器使用传送带,这是一种经济,快速的瓶子灌装方法。大多数情况下,PLC用于自动灌装机,但是您可以使用Arduino制作非常基本且用途广泛的灌装机。您可以对Arduino进行编程,以使用IR或超声波传感器自动检测瓶子,并通过停止传送带一段时间使瓶子装满。然后再次移动皮带并在检测到下一个瓶子时停止。
在这里,我们将使用Arduino Uno,传送带,电磁阀,IR传感器和步进电机设计自动灌装机的原型。带式输送机由步进电机以恒定的预设速度驱动。步进电机将继续驱动皮带,直到红外传感器检测到皮带上有瓶子为止。我们使用红外传感器作为外部触发。因此,每当红外传感器变高时,它都会向Arduino发送触发信号,以停止电动机并打开电磁阀。预设的所需延迟已经在瓶装代码中输入。 Arduino将保持电磁阀打开,而步进电机保持关闭,直到指定的时间为止。在那之后,电磁阀关闭灌装,传送带开始移动,以便可以灌装下一个瓶子。
我们之前将Arduino与电磁阀,IR传感器和步进电机一起使用,因此要了解有关Arduino与这些组件的基本接口的更多信息,请访问链接。
所需组件
- Arduino Uno
- 步进马达(Nema17)
- 中继
- 电磁阀
- 红外传感器
- A4988电机驱动器
- 电池
电路原理图
下面给出了使用Arduino的自动瓶灌装系统的电路图。
我已经用Fritzing绘制了电路图。在该电路中,电磁阀通过继电器模块连接到Arduino,A4988驱动器模块用于控制步进电机。您可以按照《如何使用Arduino和A4988控制Nema17》教程获取有关Nema17和A4988驱动程序模块的更多信息。
Relay模块的输入引脚连接到Arduino的引脚7。A4988模块的Direction和Step引脚分别连接到Arduino的2和4引脚。在此项目中,红外传感器用作Arduino的外部中断。在Arduino的乌诺,数字管脚2和3是在中断引脚,所以IR传感器的输出管脚连接到3次的Arduino的销。电磁阀由24V电源供电,而步进电机由12V电源供电。
Arduino自动灌装程序
最后给出了使用Arduino的自动瓶灌装系统的完整程序。我在这里解释一些重要的观点。
通过包含步进电机库来启动程序。您可以从此处下载步进电机库。
然后,为步进电机定义每转的步数。对于NEMA,每转17步为200。
#包括
指定电机驱动器模块的步进和方向针所连接的针。在通过驱动器模块连接电动机时,将电动机接口类型定义为 Type1 。
步进步进(STEPS,2,4); #define motorInterfaceType 1
设置步进电机速度。
stepper.setSpeed(500);
将继电器,步进和方向引脚定义为输出
pinMode(继电器,输出); pinMode(4,输出); pinMode(2,输出);
Arduino中外部中断的语法如下:
attachInterrupt(digitalPinToInterrupt(pin),ISR,模式);
哪里:
digitalPinToInterrupt(pin):用于定义连接外部中断的引脚。在Arduino中,Uno引脚2和3是外部中断引脚。
ISR:调用外部中断时会调用的函数。
模式:要触发的过渡类型,例如下降,上升等。
通过以下链接了解有关Arduino中断的更多信息。
在 attachInterrupt() 函数中,将引脚3指定为外部中断引脚,并且每当IR传感器的状态从LOW变为HIGH(RISING)时,就会调用 IR_detected 函数。
attachInterrupt(digitalPinToInterrupt(3),IR_detected,HIGH);
IR_detected() 是一个ISR函数,当IR传感器变高时执行。因此,每当红外传感器变高时,此功能都会使步进电机运行几步,然后停止步进电机并打开电磁阀。
无效IR_detected(){stepper.step(150); digitalWrite(relay,HIGH); stepper.step(0);
现在,通过将其连接到笔记本电脑,最终将代码上传到Arduino。下图显示了我们使用Arduino的自动瓶灌装系统的原型。
完整的代码和演示视频如下。