Was haben die Namen Hans Christian Ørsted und Joseph Henry mit unserem heutigen Blog zu tun? Sie haben die physikalischen Grundlagen gelegt für eine technische Revolution vor 200 Jahren. 1820 entdeckte Ørsted die magnetische Wirkung des elektrischen Stromes und schaffte damit die Voraussetzung für Dinge, die heute jeder kennt: den Elektromagneten, den Transformator und die Elektromotoren. Und Henry erfand 1835 das elektromagnetische Relais, ohne das weder das einfache Schalten von elektrischen Stromkreisen noch die Telegraphie über größere Entfernungen möglich gewesen wären.
Auch wenn der Transistor heute millionenfach auf einem kleinen Chip als Schalter eingesetzt wird, haben Sie heute mit dem Relais ein Bauteil, das immer noch vielfältig eingesetzt wird, denn damit kann man mit einer kleinen Spannung bzw. Stromstärke große Spannungen und große Ströme an- oder abschalten. Das physikalische Zauberwort dafür heißt „galvanische“ Trennung.
Auch wenn der Name auf den italienischen Arzt Luigi Galvani zurück geht, hat dieses Prinzip nichts mit dessen Froschschenkelversuchen zu tun. Es handelt sich vielmehr um eine völlige Trennung zweier Stromkreise, um Störungen oder gar Beschädigungen zu vermeiden. Wir können im Datenblatt des Uno Microkontrollers (eigentlich dem robustesten aller Micro Controller und deshalb so beliebt) lesen, dass die Datenpins 5V, max. 40mA und damit 200mW liefern. Damit bringen wir eine LED zum Leuchten, aber unsere Kaffeemaschine bleibt kalt.
Schauen wir uns das Relais-Modul näher an, sehen wir neben jedem blauen Quader – dem eigentlichen Relais – auf der einen Seite drei Schraubanschlüsse und auf der anderen Seite elektronische Bauteile und Pins für unsere Jumperkabel, also auch eine räumliche Trennung der beiden Stromkreise.
Betrachten wir zunächst die Seite mit den Schraubanschlüssen für die hohe Spannung. Und deshalb kommt hier selbstverständlich zunächst die Warnung:
Arbeiten an Netzspannung sind lebensgefährlich. Wir wollen unsere Kunden nicht auf diese Weise verlieren. (Wir wollen sie eigentlich gar nicht verlieren.) Wenn Sie damit nicht vertraut sind, überlassen Sie diese Arbeiten einem Elektriker. Und sorgen Sie dafür, dass die Kontakte unerreichbar verbaut werden.
Auf dem Relais steht 10A 250VAC und 10A 30VDC. Diese Werte habe ich zunächst hinterfragt und deshalb einen kleinen Versuch mit einem Wasserkocher von 2kW auf der Terrasse unternommen. Das Relais hat den Wasserkocher anstandslos an- und abgeschaltet und sich dabei trotz der 9A nicht erwärmt. Tatsächlich findet man diese Relais in Schaltsteckdosen, dann aber sicher verbaut.
Für unsere Versuche benutzen wir die Relais für kleine Spannungen von 5 bis 12 Volt; das ist ungefährlich. Aber wir können Verbraucher an- und abschalten, die mehr Strom als die 15 oder 40mA unserer Ausgangspins der Micro Controller für den sicheren Betrieb benötigen. Dabei können wir programmgesteuert anschalten, abschalten oder zwischen zwei Verbrauchern umschalten. Wie geht das?
Das Pluskabel von der Batterie wird am mittleren Anschluss (manchmal mit CO=common=gemeinsamer Anschluss bezeichnet) angeschraubt. Wenn wir mit dem Relais etwas einschalten wollen, geht das Kabel vom NO-Anschluss zum Verbraucher (Masse von der Batterie geht direkt zum Verbraucher).
NO steht für „normally open“, also ein geöffneter Schalter, der bei Betätigung des Relais geschlossen wird. Der dritte Anschluss heißt NC für „normally closed“, also normalerweise geschlossen; dieser Kontakt wird bei Betätigung des Relais geöffnet. Die beiden äußeren Anschlüsse können so selbstverständlich auch als Umschalter/Wechselschalter verwendet werden.
Nun endlich betrachten wir die Elektronik auf der anderen Seite:
Ganz schön viele Bauteile dafür, dass das Relais ja eigentlich nur mit 5V angesteuert werden soll. Eine LED als Kontrollleuchte und die zwei Widerstände R in SMD-Bauweise sind schnell identifiziert. Mit D wird eine Diode bezeichnet, mit Q ein NPN-Bipolartransistor, und der schwarze IC ist ein sogenannter Optokoppler.
Auch Optokoppler dienen der galvanischen Trennung, indem in einem Stromkreis eine LED an- und abgeschaltet wird, während in dem zweiten Stromkreis ein lichtempfindlicher Sensor, meist ein Transistor, das jeweilige Signal erfasst; also eine Trennung der Stromkreise bei optischer Kopplung.
Das wird gemacht, weil auch das Relais kein unproblematischer Verbraucher in unserem Steuer-Stromkreis ist. Und da das Relais beim Abschalten die magnetische Energie in elektrische Energie zurück verwandelt (ein Strom in entgegengesetzter Richtung) wird auch noch die Freilaufdiode benötigt.
Und jetzt kommt das Besondere an der Schaltung des Relais: Selbstverständlich benötigen elektronische Schaltungen eine Spannungsversorgung mit VCC=5V und GND, aber dass die Relais schalten, wenn die jeweiligen Eingänge auf GND gelegt werden, hat mich doch überrascht. Wir haben also eine umgekehrte Logik, und für den Programmcode bedeutet das, dass wir den jeweiligen Ausgangspin auf LOW setzen müssen, damit das Relais anzieht.
Ein letzter Anschluss, der egal wie viele Relais auf dem Modul sind, nur einmal vorhanden ist, muss noch erklärt werden: die eigentliche Spannungsversorgung der Relais.
Zwei Pins, auf denen im Auslieferungszustand ein Kurzschlussstecker sitzt, sind mit VCC auf der einen Seite und mit JD-VCC an der anderen Seite bezeichnet. Das bedeutet, dass man die Wahl hat, ob die Spannungsversorgung für die Relais vom Micro Controller kommt (Kurzschlussstecker gesetzt, VCC durchgeschleift) oder auch von einer externen Spannungsquelle kommt (anstelle des Kurzschlusssteckers kommt der Pluspol der externen Spannungsquelle an JD, Minuspol muss dann noch mit GND des Micro Controllers verbunden werden). Bei dem Modul mit 16 Relais hat man übrigens keine Wahl; bei so vielen Relais wird immer eine externe Spannungsversorgung benötigt.
Mit dem Relais-Modul haben wir durch das Relais und den Optokoppler sowie wahlweise auch die externe Spannungsversorgung der Relais eine eindeutige Trennung der Stromkreise für die Steuerung mit dem Micro-Controller und für die Verbraucher erreicht.
Und mit dem Micro-Controller können wir dann Schaltvorgänge zeitgesteuert oder an Bedingungen geknüpft vornehmen. Lassen Sie den Lüfter jede Stunde, oder wenn „dicke Luft ist“, für 5 Minuten laufen.
Als Simulation habe ich folgenden Sketch geschrieben, in dem ich neben zwei Relais auch eine Bi-Color LED und einen Luftsensor MQ-2 zur Detektion von LPG, i-Butan, Propan, Methan, Alkohol, Wasserstoff und Rauch verwende. Nach 60 Sekunden werden die LED gelb (Rotanteil 255, Grünanteil 128) und das Relais1 für 5 Sekunden eingeschaltet. Wenn der MQ-2 seinen Sollwert (hier 200) überschreitet, werden die LED rot und das Relais2 für 5 Sekunden eingeschaltet.
#define LED_BUILTIN 13
const int ledred = 6; // the PWM pin the red LED is attached to
const int ledgreen = 5; // the PWM pin the green LED is attached to
const int relay1 = 7; // normal digital out pin
const int relay2 = 8; // normal digital out pin
int sensorPin = A0; // MQ-2 attached to analog input A0
int sensorValue = 0; // analog Value btn 0 and 1023
int count = 0; // counter
int ledState = LOW; // ledState used to set the LED_BUILTIN
// Use "unsigned long" for variables that hold time
// The value will quickly become too large for an int to store
unsigned long previousMillis = 0; // will store last time LED was updated
const long interval = 1000; // interval at which to blink (milliseconds)
unsigned long currentMillis;
void setup() {
Serial.begin(9600);
// set the digital pins as output:
pinMode(LED_BUILTIN, OUTPUT);
pinMode(ledred, OUTPUT);
pinMode(ledgreen, OUTPUT);
pinMode(relay1, OUTPUT);
pinMode(relay2, OUTPUT);
digitalWrite(relay1, HIGH);
digitalWrite(relay2, HIGH);
}
void loop() {
currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
// save the last time you blinked the LED
previousMillis = currentMillis;
// if the LED is off turn it on and vice-versa:
if (ledState == LOW) {
ledState = HIGH;
Serial.println(analogRead(sensorPin));
count+=1;
} else {
ledState = LOW;
}
// set the LED with the ledState of the variable:
digitalWrite(LED_BUILTIN, ledState);
}
if (count >= 30) {
stateyellow();
count = 0;
}
if (analogRead(sensorPin) > 200) {
statered();
}
}
void stateyellow() {
analogWrite(ledred, 255);
analogWrite(ledgreen, 128);
digitalWrite(relay1, LOW);
delay(5000);
analogWrite(ledred, 0);
analogWrite(ledgreen, 0);
digitalWrite(relay1, HIGH);
}
void statered() {
analogWrite(ledred, 255);
digitalWrite(relay2, LOW);
delay(5000);
analogWrite(ledred, 0);
digitalWrite(relay2, HIGH);
}
Hier der ganze Sketch als Download und der Blogbeitrag als pdf.
Wir wünschen euch viel Spaß mit den Relais!
4 Reacties
F. Weidmann
Der Abstand zwischen Relaisspule und Relaiskontakt ist nicht groß genug (Kriechstromabstand). Daher zum schalten von höheren Spannungen (z.B. 220VAC) aus sicherheitstechnischen Gründen nicht geeignet. Für nähere Informationen siehe auch “www.mikrocontroller.net/articles/Leiterbahnabstände”.
Bernd Albrecht
Stellungnahme AZ-Delivery:
Diese Kritik ist berechtigt. Auch wenn diese Relais grundsätzlich geprüft sind, übernimmt AZ-Delivery ausdrücklich keine Verantwortung bei Verwendung mit Netzspannung.
Die bestimmungsgemäße Verwendung geht bis 50 Volt.
Max Hüttmeier
Wenn ich in der Beschreibung der Relaiskarten das richtig lese, sind diese nicht für das Schalten von Netzspannung ausgelegt / freigegeben / geprüft. Auch wenn das Relais selber es kann.
Können Sie dazu etwas sagen?
Markus
Hallo,
ich verstehe nicht ganz wie hier ein Artikel über 10A 250VAC Relais geschriebne wird aber die Angebotenen Artikel sind nur 50V AC, 5A. Was ich auch nicht verstehe ist warum auf deren Abbildung keine Kennwerte mehr stehen, ich würde mir so ein Relais nie und nimmer kaufen.
Gruß aus Bayern
Markus