2017-11-07 10 views
0

안녕하세요. 포장 기계가 필요한 공장을위한 프로젝트를 수행 했으므로 arduino, 릴레이, IR 센서를 사용하는 공압 실린더를 사용하여 프로젝트를 진행했습니다.
갑자기 내 릴레이가 갑자기 멈추고 전원을 껐다가 다시 켜야하기 때문에 스키마와 모양이 어떻게 달라지는 지 알 수 있습니다.
Btw; 나는 모든 요소가있는 하나의 릴레이에 대해서만 스키마를 첨부 할 것이며 코드는 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 
    } 
} 

답변

0

나는 릴레이 생산 공장의 운영과 시스템을 설계. 릴레이 부착은 드문 경우이지만 특정 상황에서 발생할 수 있습니다.

릴레이 코일 전압 안정성 ---- 릴레이 코일 전압이 충분하지 않으면 릴레이가 켜지지 않을 수 있습니다. 릴레이 코일 전압이 안정적인지 확인하기 위해 코일 스위치의 전압을 측정 할 것입니다. 최상의 결과를 얻으려면 별도로 조절되는 (5 VDC) 전원에서 릴레이 코일을 공급해야합니다. 이는 공급 전압에서 릴레이 코일의 부하 영향이 Arduino 전원에 드롭 아웃을 발생시키지 않고 프로그램을 중단시키지 않도록합니다.

릴레이 접점 유도 성 부하로 인한 침식 ---- 릴레이 접점은 시간이 지남에 따라 침식 될 수 있으며, 때로는 달라 붙어 결국 용접이 종료 될 수 있습니다. 유도 부하를 차단할 때 손상이 발생합니다. 유도 성 부하의 에너지는 접점을 통해 방전되며, 유도 성 전압이 충분히 높으면 접촉 갭에서 아크를 생성 할 수 있습니다. 그러면 플라즈마가 접촉을 침식합니다. 해결책은 정상 부하 전압보다 높은 정격 (예를 들어, 24 VDC 이상)으로 콘택트에 트랜스 오르 브 (transorb)를 추가하는 것이다. 이렇게하면 유도 에너지가 무해하게 흡수됩니다. 또 다른 옵션은 RC 필터입니다. 이 주제에 대한 자세한 내용은 릴레이 제조업체의 기술 지침을 참조하십시오.

시스템에 몇 가지 문제가있을 수 있습니다. 회로의 일부가 없기 때문에 세부 사항은 게시 된 회로도에서 분명하지 않습니다.

지구 격리 ---- Arduino 및 24V 전원의 접지 전압이 연결되어 있지 않은지 확인하십시오. 그렇지 않으면 솔레노이드를 켜거나 껐을 때 Arduino 접지 전압 스파이크가있을 수 있습니다. 이것은 Arduino의 여행과 프로그램을 중단 수 있습니다. Arduino 전원 및 24 VDC 전원은 독립적이고 유동적이어야합니다.

릴레이 드라이버 절연 ---- Arduino와 릴레이 드라이버 사이에 최소한 1000V 장벽이 있도록 릴레이 드라이버 회로에 광 절연체를 추가하십시오. 릴레이 코일 전압 억제 ---- 릴레이 코일이 방전 될 때 유도 에너지를 흡수하기 위해 코일에 역 극성 다이오드를 추가하십시오. 그렇지 않으면 에너지가 arduino 출력 핀에 손상을 줄 수 있습니다.

행운을 빕니다