2017-11-07 3 views
0

Hallo zusammen, ich habe ein Projekt für eine Fabrik gemacht, die eine Verpackungsmaschine brauchte, also habe ich es mit einigen pneumatischen Zylindern gemacht, die Arduino, Relais, IR-Sensor verwenden.
Ich füge meinen Code und ein Bild, wie Schema aussieht, da manchmal meine Relais plötzlich einfrieren und sie müssen nur dann wieder einschalten und es ist in Ordnung.
Btw; Ich füge Schema nur für ein Relais mit allen Elementen an, Code ist für 4
Relais.
Irgendeine Idee zu diesem bitte?Relais, die plötzlich einfrieren

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

Antwort

0

I entwerfen Systeme mit Relais in Produktionsanlagen arbeitet. Das Haften der Relais ist eine seltene Bedingung, kann aber in bestimmten Situationen auftreten.

Spannung der Relaisspulenspannung ---- Wenn die Relaisspulenspannung nicht ausreicht, können die Relais möglicherweise nicht einschalten. Ich würde die Spannung beim Einschalten der Spule messen, um sicherzustellen, dass die Spannung der Relaisspule stabil ist. Für beste Ergebnisse würde ich die Relaisspulen von einer separat geregelten (5 VDC) Versorgung versorgen. Dadurch wird sichergestellt, dass etwaige Belastungseinflüsse der Relaisspulen auf die Versorgungsspannung keine Aussetzer an der Arduino-Versorgung verursachen und das Programm stoppen.

Relaiskontakt Erosion aufgrund von induktiven Lasten ---- Relaiskontakte können im Laufe der Zeit erodieren, gelegentlich kleben und schließlich schweißen. Der Schaden tritt auf, wenn induktive Lasten abgeschaltet werden. Die Energie der induktiven Last entlädt sich über die Kontakte und kann einen Lichtbogen im Kontaktspalt erzeugen, wenn die induktiv erzeugte Spannung ausreichend hoch ist. Das Plasma erodiert dann die Kontakte. Eine Lösung besteht darin, ein Transorb über die Kontakte hinzuzufügen, das über der normalen Lastspannung (z. B. über 24 VDC) liegt. Dies wird die induktive Energie harmlos absorbieren. Eine andere Option ist ein RC-Filter. Weitere Informationen zu diesem Thema finden Sie in den technischen Richtlinien des Relaisherstellers.

Einige Probleme, die in Ihrem System vorhanden sein können. Die Details sind aufgrund des Fehlens eines Teils der Schaltung aus dem ausgeschriebenen Schaltplan nicht ersichtlich.

Isolierung der Erdung ---- Stellen Sie sicher, dass die Erdspannungen des Arduino und der 24-V-Stromversorgung nicht angeschlossen sind. Andernfalls kann es beim Ein- und Ausschalten der Magnetspulen zu einer Arduino-Erdspannungsspitze kommen. Dies könnte eine Reise des Arduino und stoppen Sie das Programm. Die Arduino-Stromversorgung und die 24-VDC-Stromquellen sollten unabhängig und potentialfrei sein.

Relaistreiber Isolierung ---- Fügen Sie der Relaistreiberschaltung optische Isolatoren hinzu, so dass zwischen dem Arduino und dem Relaistreiber mindestens eine 1000 V-Barriere vorhanden ist.

Relaisspulenspannungsunterdrückung ---- Fügen Sie eine Diode mit umgekehrter Polarität hinzu, die an die Spule angeschlossen ist, um die induktive Energie zu absorbieren, wenn die Relaisspule entladen wird. Andernfalls kann diese Energie den Arduino-Ausgangspin beschädigen.

Viel Glück mit Ihrem System