Pages: [1]   Go Down
Author Topic: 16 Relay Module  (Read 1025 times)
0 Members and 1 Guest are viewing this topic.
Cloppenburg
Offline Offline
Edison Member
*
Karma: 30
Posts: 1247
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hallo, ich habe ein Problem mit dem Relay Module. Wenn ich Pin 13 auf ON stelle, leuchtet die LED auf dem UNO Board aber auf dem Relay Module nicht. Wenn ich aber Pin 13 auf OFF stelle, dann leuchtet die LED auf dem Relay Module. Dies geschieht natürlich auch mit anderen Pins. Was mache ich falsch oder wo liegt das Problem? Das Relay Module macht praktisch das gegenteil was ich dem sage!

Ich habe dieses Module: http://www.amazon.de/SainSmart-16-Kan%C3%A4le-RelaisModul-Arduino-Module/dp/B005WR747I

Ich verwende dabei den originalen Blink Sketch.
« Last Edit: March 02, 2013, 10:33:16 am by skorpi08 » Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Wien
Offline Offline
Edison Member
*
Karma: 28
Posts: 1888
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

hi,

poste doch einen link zum modul. vielleicht kann man festlegen, ob es bei HIGH oder bei LOW durchschaltet.

gruß stefan
Logged

Germany S-H
Offline Offline
Faraday Member
**
Karma: 145
Posts: 3022
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das Relay Module macht praktisch das gegenteil was ich dem sage!

Nö, die meisten Relay-Module sind nur so verdrahtet, dass das Relais bei Eingang=HIGH nicht geschaltet ist und Eingang=LOW wird geschaltet. Das ist dann vom Hersteller so beabsichtigt!

Und Du mußt dem Relais das richtige sagen damit es richtig schaltet!
Logged

Cloppenburg
Offline Offline
Edison Member
*
Karma: 30
Posts: 1247
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Okay, habe ich nicht gewusst. Und wozu soll es gut sein dass man es "vertauscht" hat?
Logged

Nicht Mensch, nicht Tier: Programmierer halt...

Germany S-H
Offline Offline
Faraday Member
**
Karma: 145
Posts: 3022
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Okay, habe ich nicht gewusst. Und wozu soll es gut sein dass man es "vertauscht" hat?

Was heißt schon "vertauscht"?

Das ist absolut gängiger Standard bei mit Optokopplern ausgestatteten Relais-Boards der untersten Preisklasse. Mit Optokopplern arbeiten Relais in Mikrocontrollerschaltungen besonders störungsfrei, und inzwischen findet man Optokoppler sogar auf Billig-Relaismodulen. Durch trickreiche Beschaltung des Optokopplers wird wenig äußere Beschaltung benötigt, die Herstellungskosten sind niedrig, die Störanfälligkeit gering, und das Relais schaltet "active low".

Wenn Du stattdessen "active high" schalten möchtest, ist es Dir unbenommen, in Deine Schaltung den bei der Herstellung des Relais-Moduls eingesparten Transistor selbst wieder einzubauen. Schaltungsbeispiel:
http://www.raspberrypi.org/phpBB3/download/file.php?id=1580
Dann schaltet das normalerweise "active low" schaltende Board mit zusätzlichem Transistor dazwischen "active high", falls Dir das lieber ist.

Der Aufwand ist allerdings völliger Quatsch, denn normalerweise machst Du ja bei der Programmierung "sprechenden Code" durch Definition entsprechender Konstanten, und dann kann es Dir vollkommen egal sein, ob ein bestimmtes Relais "active low" oder "active high" schaltet.

Code:
#define RELAIS_LICHT 3
#define RELAIS_PUMPE 4
#define RELAIS_EIN LOW
#define RELAIS_AUS HIGH
...
digitalWrite(RELAIS_LICHT, RELAIS_EIN);
digitalWrite(RELAIS_PUMPE, RELAIS_AUS);

Und wenn Du statt eines Relais-Boards mit "active low" Relais in der nächsten Schaltung andere Relais verbaust, die "active high" schalten, dann änderst Du nur die Definition für RELAIS_EIN und RELAIS_AUS um in:
Code:
#define RELAIS_EIN HIGH
#define RELAIS_AUS LOW

Und der Rest des Codes bleibt wie er ist. Insbesondere verwendest Du im Code Deines Programms immer die Konstante "RELAIS_EIN" zum Einschalten und "RELAIS_AUS" zum Ausschalten. Mußt Du eben nur am Anfang des Programms einmal die Konstanten RELAIS_EIN und RELAIS_AUS passend definieren, je nachdem ob Du "active low" oder "active high" Relais-Module verwendest. Dann ist die Schaltung des Relais doch völlig gehupft wie gesprungen.
Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 20
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wo genau muss der Transistor eingebaut werden? Direkt vor dem Eingang auf der Relaisplatine oder zwischen drin?



* image.jpg (29.6 KB, 1024x462 - viewed 30 times.)
Logged

im Neckartal
Offline Offline
Jr. Member
**
Karma: 0
Posts: 60
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sorry,
wenn ich diesen Thread jetzt etwas "mißbrauchen" sollte:

@ Jurs:
Quote
Das ist absolut gängiger Standard bei mit Optokopplern ausgestatteten Relais-Boards der untersten Preisklasse. Mit Optokopplern arbeiten Relais in Mikrocontrollerschaltungen besonders störungsfrei, und inzwischen findet man Optokoppler sogar auf Billig-Relaismodulen. Durch trickreiche Beschaltung des Optokopplers wird wenig äußere Beschaltung benötigt, die Herstellungskosten sind niedrig, die Störanfälligkeit gering, und das Relais schaltet "active low".

Ich grübel schon seit einiger Zeit über diese "Chinamade" Relaisboards mit den Optokopplern.
Aus Sicht der galvanischen Trennung macht der Optokoppler ja eigentlich keinen Sinn, da diese ja schon durch das Relais gegeben ist.
Eigentlich würde doch ein "Feld-Wald-Wiesen"-Schalttransistor anstelle des Optokopplers das gleiche machen ?!?
Wo liegt also der Trick, der den Einsatz eines Optokopplers rechtfertigt?

Grüßle Bend

Logged

Theoretisch gibt es keinen Unterschied zwischen Theorie und Praxis ...

Offline Offline
Faraday Member
**
Karma: 118
Posts: 3945
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Relais können schon Störungen verursachen obwohl sie mechanisch getrennt sind. Hängt mit dem Magnetfeld zusammen, das beim Abfallen eine Spannung in die Erregerspule induziert. Die Freilaufdiode verhindert da das schlimmste, aber sie ist kein Filter. Optokoppler haben da halt nochmal eine Trennung der Erregerspule und des Controllers.

Es ist übrigens völlig normal Mikrokontroller-Ausgänge als Senke zu verwenden. Das heißt Last gegen Versorgungsspannung und dann Strom in den Controller fließen lassen wenn der Ausgang LOW ist. Viele können nämlich so mehr Strom treiben als wenn sie als Quelle betrieben werden. Der Arduino kann beides, aber da er an Anfänger gerichtet ist, ist das Standardbeispiel wohl Stromquelle/Active-High.
« Last Edit: June 15, 2013, 10:52:54 pm by Serenifly » Logged

Pages: [1]   Go Up
Jump to: