An ein Relais angeschlossene LEDs bleiben an?

Ich habe ein einfaches Projekt mit einem Arduino-Board erstellt. Ich verwende die Platine, um analoge Eingangswerte von einem Rotationssensor (Potentiometer) zu lesen und die Werte zu verwenden, um zu bestimmen, welches SSR-Relais auf einem Modul eingeschaltet werden soll. Ich habe dann die Relais mit LEDs verbunden und das Projekt funktioniert, aber nur auf eine Weise. Wenn ich zum Beispiel das Potentiometer auf Maximum drehe, schließen die Relais sequentiell, wie sie es sollen. Das Gleiche gilt, wenn ich das Maximum erreiche und den Pot wähle. zurück in Richtung 0. Ich kann in der Mitte herumzappeln und der Arduino schaltet das/die Relais entsprechend den gelesenen Analogwerten ein. Dieses Teil funktioniert wie es soll.

Das Problem ist, wenn ich LEDs an die Relais anschließe, schalten sich die LEDs nacheinander ein, wenn die Relais einschalten, wenn ich den Pot wähle. von 0 zum Maximum. Aber die LEDs gehen nicht aus, wenn ich den Pot wähle. wieder nach unten in Richtung 0. Die Relais zeigen an, dass sie am Modul ausgeschaltet werden (sie haben jeweils eine LED-Anzeige), aber die LEDs, die ich angeschlossen habe, bleiben eingeschaltet, egal was passiert.

Der Standard-5-V-Ausgang der Arduino-Platine versorgt das Relaismodul, die LEDs und den Sensor. Jede Masse ist mit dem Arduino GND gemeinsam.

Warum gehen die LEDs nicht aus? Es ist wahrscheinlich sehr Anfänger-Zeug, von dem ich nichts weiß. Ich habe irgendwo gelesen, dass Sie, wenn Sie einen MOSFET zum Ein- und Ausschalten verwenden, einen Pulldown-Widerstand an GND anschließen sollten, damit das "Ausschalten" funktioniert. Andernfalls bleibt das Licht oder der Motor oder was auch immer an. Klingt das so, als würde es hier zutreffen?

Hier ist mein Relaismodul: http://www.sainsmart.com/sainsmart-4-channel-5v-solid-state-relay-module-board-omron-ssr-avr-dsp-arduino.html

Mein Rotationssensor (pot.): https://www.bananarobotics.com/shop/Analog-Rotation-Sensor-V1-Potentiometer?gclid=CjwKEAiAk8qkBRDOqYediILQ5BMSJAB40A5UiGMFbpiVo9rWMI-ooeUwOA2ZftD-h5ctmCyOAwcUzBoCIo_w_wcB

Und hier ist mein Arduino-Code, wenn es hilft:

//define the digital pins for controlling the relays on the module
//these pins are connected to the relay gate pins on the module
#define in1 13
#define in2 11
#define in3 10
#define in4 9

void setup(){     //make sure the pins are all output, as 5V will be drawn from them
 pinMode(in1, OUTPUT);
 pinMode(in2, OUTPUT);
 pinMode(in3, OUTPUT);
 pinMode(in4, OUTPUT);
}

void loop(){
 float rotationValue = analogRead(A0);        //read the raw sensor value
 float percentValue = rotationValue / 10.23;      //convert raw value to 0-100

 if(percentValue >= 0.00 && percentValue <= 1.00){        //all relays off
  digitalWrite(in1, LOW);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW); 
 }

 else if(percentValue > 1.00 && percentValue <= 25.00){         //turn on relay 1
  digitalWrite(in1, HIGH);
  digitalWrite(in2, LOW);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW); 
 }

 else if(percentValue > 25.00 && percentValue <= 50.00){      //turn on relay 1, 2  
  digitalWrite(in1, HIGH);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, LOW);
  digitalWrite(in4, LOW); 
 }
 else if(percentValue > 50.00 && percentValue <= 75.00){       //turn on relays 1,2,3
  digitalWrite(in1, HIGH);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, LOW); 
 }
 else if(percentValue > 75.00){         //turn on all the relays
  digitalWrite(in1, HIGH);
  digitalWrite(in2, HIGH);
  digitalWrite(in3, HIGH);
  digitalWrite(in4, HIGH); 
 }
}

Antworten (1)

Was Sie dort haben, sind Halbleiterrelais. Sie sind so ausgelegt, dass sie AC schalten, nicht DC.

Sie verlassen sich darauf, dass die Spannung, die durch die geschaltete Seite fließt, auf 0 V fällt (der „Nulldurchgangspunkt“ einer AC-Wellenform), um abzuschalten.

Sie sind nicht zum Schalten von Gleichstrom geeignet.

Ah, dumm von mir. Ich habe mir nicht einmal die Mühe gemacht, die Schrift auf den Relais zu überprüfen. Danke.