大家好,我为一家需要包装机的工厂做了一个项目,所以我使用arduino,继电器,红外传感器制作了一些气缸。
我附上我的代码和图片如何看起来模式,因为有时我的继电器突然冻结,他们只需要关闭然后再打开电源然后就可以了。
顺便说一句,我只为一个具有所有元素的中继附加模式,代码为4
继电器。
对此有何疑问?
int relay1 = 13;
int relay2 = 12;
int relay3 = 11;
int relay4 = 10;
int sensor1 = 5;
int sensor2 = 6;
int sensor3 = 3;
int sensor4 = 2;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
pinMode(relay1, OUTPUT);
pinMode(sensor1, INPUT);
pinMode(relay2, OUTPUT);
pinMode(sensor2,INPUT);
pinMode(relay 3, OUTPUT);
pinMode(sensor3,INPUT);
pinMode(relay4, OUTPUT);
pinMode(sensor4,INPUT);
pinMode(LED_BUILTIN,OUTPUT);
}
void loop() {
digitalWrite(relay1, LOW);
delay(2000);
digitalWrite(relay1, HIGH);
delay(2000);
digitalWrite(relay2, LOW);
delay(2000);
digitalWrite(relay2, HIGH);
delay(2000);
digitalWrite(relay 3, LOW);
delay(2000);
digitalWrite(relay3, HIGH);
delay(2000);
digitalWrite(relay4, LOW);
delay(2000);
digitalWrite(relay4, HIGH);
delay(2000);
while(1){
delay(100);
if(digitalRead(sensor2) == LOW)
{
Serial.println("Eggs on");
digitalWrite(relay1,HIGH);
delay(350); // shpejtesia sensorit // sensor speed
}
else
{
Serial.println("No eggs");
digitalWrite(relay1,LOW);
delay(50); // sa mu kthy shpejt klipi mbrapa // speed of cylinder getting back
}
if(digitalRead(sensor1) == LOW)
{
Serial.println("Eggs on");
digitalWrite(relay2,HIGH);
delay(350); // shpejtesia sensorit // sensor speed
}
else
{
Serial.println("No eggs");
digitalWrite(relay2,LOW);
delay(50); // sa mu kthy shpejt klipi mbrapa // speed of cylinder getting back
}
if(digitalRead(sensor3) == LOW)
{
Serial.println("Eggs on");
digitalWrite(relay3,HIGH);
delay(350); // shpejtesia sensorit // sensor speed
}
else
{
Serial.println("No egs");
digitalWrite(relay3 ,LOW);
delay(50); // sa mu kthy shpejt klipi mbrapa // speed of cylinder getting back
}
if(digitalRead(sensor4) == LOW)
{
Serial.println("Eggs on");
digitalWrite(relay4,HIGH);
delay(100); // shpejtesia sensorit // sensor speed
}
else
{
Serial.println("No eggs");
digitalWrite(relay4 ,LOW);
delay(50); // sa mu kthy shpejt klipi mbrapa // speed of cylinder getting back
}
}
答案 0 :(得分:0)
我设计的系统带有在生产工厂中运行的继电器。粘贴继电器是一种罕见的情况,但在某些情况下可能会发生。
继电器线圈电压稳定性---- 如果继电器线圈电压不足,则继电器可能无法接通。我会测量线圈开关上的电压,确保继电器线圈电压稳定。为了获得最佳效果,我将从单独调节的(5 VDC)电源供应继电器线圈。这可确保继电器线圈对电源电压的任何负载影响不会导致Arduino电源断电并停止程序。
继电器接触因感应负载引起的腐蚀---- 继电器触点会随着时间的推移而受到侵蚀,偶尔会粘住并最终导致焊接关闭。关闭感应负载时会发生损坏。如果感应产生的电压足够高,则感应负载的能量通过触点放电并且可以在接触间隙中产生电弧。然后等离子体侵蚀触点。解决方案是在额定值高于正常负载电压(例如,高于24 VDC)的触点上添加transorb。这将无害地吸收感应能量。另一种选择是RC滤波器。有关此主题的更多信息,请参阅继电器制造商的技术指南。
您系统中可能存在的一些问题。由于缺少某些电路,详细信息在发布的电路图中并不明显。
隔离地球---- 确保未连接Arduino和24V电源的接地电压。否则,当您开启和关闭电磁阀时,可能会出现Arduino接地电压尖峰。这可能会绊倒Arduino并停止计划。 Arduino电源和24 VDC电源应独立且浮动。
继电器驱动器隔离---- 将光隔离器添加到继电器驱动器电路,以便Arduino和继电器驱动器之间至少有1000 V的屏障。
继电器线圈电压抑制---- 在线圈两端连接一个反极性二极管,以吸收继电器线圈放电时的感应能量。否则该能量可能会损坏arduino输出引脚。
祝你的系统好运