继电器突然冻结

时间:2017-11-07 23:56:08

标签: arduino-uno

  

大家好,我为一家需要包装机的工厂做了一个项目,所以我使用arduino,继电器,红外传感器制作了一些气缸。
  我附上我的代码和图片如何看起来模式,因为有时我的继电器突然冻结,他们只需要关闭然后再打开电源然后就可以了。
  顺便说一句,我只为一个具有所有元素的中继附加模式,代码为4
   继电器。
  对此有何疑问?

Picture of schema

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
    }
 }

1 个答案:

答案 0 :(得分:0)

我设计的系统带有在生产工厂中运行的继电器。粘贴继电器是一种罕见的情况,但在某些情况下可能会发生。

继电器线圈电压稳定性---- 如果继电器线圈电压不足,则继电器可能无法接通。我会测量线圈开关上的电压,确保继电器线圈电压稳定。为了获得最佳效果,我将从单独调节的(5 VDC)电源供应继电器线圈。这可确保继电器线圈对电源电压的任何负载影响不会导致Arduino电源断电并停止程序。

继电器接触因感应负载引起的腐蚀---- 继电器触点会随着时间的推移而受到侵蚀,偶尔会粘住并最终导致焊接关闭。关闭感应负载时会发生损坏。如果感应产生的电压足够高,则感应负载的能量通过触点放电并且可以在接触间隙中产生电弧。然后等离子体侵蚀触点。解决方案是在额定值高于正常负载电压(例如,高于24 VDC)的触点上添加transorb。这将无害地吸收感应能量。另一种选择是RC滤波器。有关此主题的更多信息,请参阅继电器制造商的技术指南。

您系统中可能存在的一些问题。由于缺少某些电路,详细信息在发布的电路图中并不明显。

隔离地球---- 确保未连接Arduino和24V电源的接地电压。否则,当您开启和关闭电磁阀时,可能会出现Arduino接地电压尖峰。这可能会绊倒Arduino并停止计划。 Arduino电源和24 VDC电源应独立且浮动。

继电器驱动器隔离---- 将光隔离器添加到继电器驱动器电路,以便Arduino和继电器驱动器之间至少有1000 V的屏障。

继电器线圈电压抑制---- 在线圈两端连接一个反极性二极管,以吸收继电器线圈放电时的感应能量。否则该能量可能会损坏arduino输出引脚。

祝你的系统好运