使用Arduino实现自动瓶子灌装系统的设计

安全设备/系统

160人已加入

描述

  自动瓶灌装机最常用于饮料和软饮料行业。这些机器使用传送带,这是一种经济且快速的装瓶方式。大多数 PLC 用于自动灌装机,但您可以使用 Arduino制作非常基本且多功能的灌装机。您可以对 Arduino 进行编程,使其使用红外或超声波传感器自动检测瓶子,并通过停止传送带一段时间让装瓶机进行灌装。然后再次移动皮带并在检测到下一个瓶子时停止。

  在这里,我们将使用 Arduino Uno 、传送带、电磁阀、红外传感器和步进电机设计自动灌装机的原型。带式输送机由步进电机以恒定的预设速度驱动。步进电机将继续驱动传送带,直到 IR 传感器检测到传送带上存在瓶子。我们使用红外传感器作为外部触发器。因此,只要 IR 传感器变高,它就会向 Arduino 发送触发器以停止电机并打开电磁阀。已在灌装代码中输入预设的所需延迟时间。Arduino 将保持电磁阀开启并关闭步进电机,直到指定时间。之后,电磁阀关闭灌装,传送带开始移动,以便灌装下一个瓶子。

  我们之前使用Arduino 与电磁阀、红外传感器和步进电机,因此要了解有关 Arduino 与这些组件的基本接口的更多信息,您可以访问链接。

  所需组件

  阿杜诺

  步进电机 (Nema17)

  中继

  电磁阀

  红外传感器

  A4988 电机驱动器

  电池

  电路原理图

  下面给出了使用 Arduino 的自动瓶子灌装系统的电路图。

  ​​​

Arduino

  我用Fritzing画了电路图。在该电路中,电磁阀通过继电器模块连接到Arduino,A4988驱动模块用于控制步进电机。您可以按照如何使用 Arduino 和 A4988 控制 Nema17 教程了解有关 Nema17 和 A4988 驱动模块的更多信息。

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

Arduino

Arduino自动灌装程序

最后给出了这个使用 Arduino 的自动灌装系统的完整程序。在这里,我解释了一些重要的行。

通过包含步进电机库来启动程序。您可以从这里下载步进电机库。

之后,定义步进电机每转的步数。对于 NEMA,每转 17 步是 200。

 

#include 
#定义步骤 200

 

指定连接电机驱动模块的 Step 和 Direction 引脚的引脚。由于电机是通过驱动模块连接的,所以定义电机接口类型为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 传感器将其状态从低电平变为高电平(上升),就会调用IR_detected函数。

 

attachInterrupt(digitalPinToInterrupt(3),IR_detected,HIGH);

 

void IR_detected()是一个 ISR 函数,当 IR 传感器变高时执行。因此,每当 IR 传感器变为高电平时,此功能会使步进电机运行几步,然后停止步进电机并打开电磁阀。 

 

无效 IR_detected() {                   
  stepper.step(150);
  数字写入(继电器,高);
  stepper.step(0);

 

  现在最后通过将代码连接到笔记本电脑将代码上传到 Arduino。下图显示了我们使用 Arduino 的自动瓶子灌装系统原型。

Arduino


#include

#定义步骤 200

#define motorInterfaceType 1

步进步进器(STEPS, 2, 4);

诠释继电器=7;

int step_num =700;

无效设置(){

序列号.开始(9600);

pinMode(继电器,输出);

stepper.setSpeed(500);

pinMode(4,输出);

pinMode(2,输出);

attachInterrupt(digitalPinToInterrupt(3),IR_detected,RISING);

}

布尔螺线管_on = false;

无效循环(){

如果 (solenoid_on)

{

延迟(6000);//等待6秒

螺线管开启 = 假;

}

数字写入(继电器,低);// 现在继电器处于关闭状态(并且电机处于开启状态)

stepper.step(step_num);

}

void IR_detected() //ISR 函数在 IR 传感器变高时执行。

{

Serial.println("检测到中断");

stepper.step(150); //在步进电机停止前运行几步

数字写入(继电器,高);//打开电磁阀

stepper.step(0); //停止步进电机

螺线管开启 = 真;

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分