自动灌装机常用于饮料汽水行业。这些机器一般采用传送带进行灌装,这是一种经济快速的灌装方法。在大多数情况下,自动灌装机使用的是PLC进行控制,但是我们也可以使用Arduino开发板制作一台非常基本且用途广泛的灌装机。您可以通过对Arduino进行编程,使用红外或超声波传感器自动检测瓶子,当检测到瓶子时,停止传送带一段时间使瓶子装满。然后再次移动传送带并在检测到下一个瓶子时停止移动。
在本篇文章中,我们将使用Arduino Uno、传送带、电磁阀、红外传感器和步进电机设计自动灌装机的原型。传送带由步进电机以恒定的预设速度驱动。步进电机将持续驱动传送带,直到红外传感器检测到传送带上有瓶子为止。我们使用红外传感器作为外部触发。因此,每当红外传感器变为高电平时,它都会向Arduino发送触发信号,停止电机并打开电磁阀。所需的延迟时间已经在代码中预设。 Arduino将保持电磁阀打开,步进电机保持关闭,直到指定的时间为止。之后,电磁阀关闭灌装,传送带开始移动,以便可以灌装下一个瓶子。
所需的组件 ● Arduino Uno开发板 ● 步进电机(Nema17) ● 继电器 ● 电磁阀 ● 红外传感器 ● A4988电机驱动器 ● 电池
电路原理图 下面给出了使用Arduino的自动灌装机的电路图。
在该电路中,电磁阀通过继电器模块连接到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。 - #include <Stepper.h>
- #define STEPS 200
复制代码定义电机驱动器模块的Step和Direction引脚连接的Arduino引脚。步进电机通过驱动模块连接,因此将电机接口类型定义为Type1。 - Stepper stepper(STEPS, 2, 4);
- #define motorInterfaceType 1
复制代码设置步进电机速度。 将继电器、Step和Direction引脚定义为输出 - pinMode(relay,OUTPUT);
- pinMode(4,OUTPUT);
- pinMode(2,OUTPUT);
复制代码
在attachInterrupt()函数中,将引脚3指定为外部中断引脚,并且每当IR传感器的状态从LOW变为HIGH(RISING)时,都会调用IR_detected函数。 - attachInterrupt(digitalPinToInterrupt(3),IR_detected,HIGH);
复制代码
IR_detected()是一个中断服务函数(ISR),当IR传感器变高电平时执行。因此,每当红外传感器变高电平时,此函数都会使步进电机运行几步,然后停止步进电机并打开电磁阀。 - void IR_detected() {
- stepper.step(150);
- digitalWrite(relay,HIGH);
- stepper.step(0);
复制代码
最后将其连接到笔记本电脑,将代码上传到Arduino中。以下是制作的原型:
代码 以下是本文使用的完整代码:
main.rar
(578 Bytes, 下载次数: 21)
|