Forum: Mikrocontroller und Digitale Elektronik Raspberry Pi GPIO - externe Geräte 12V - galvanische Trennung - ein Netzteil


von Steff H. (blueshark)


Lesenswert?

Hallo zusammen,

ich möchte mich Tiefer in die Materie einarbeiten. Dafür habe ich mir 
ein Projekt herausgesucht. Ich möchte mit dem Raspberry Pi ein Ventil 
steuern, welches bei 12V und 300mA schaltet. Dazu stellen sich mir 
folgende Fragen, zu denen ich bisher nur eine Idee für eine Antwort 
habe.

1. Brauche ich eine galvanische Trennung? Also muss dazwischen z.B. ein 
Optokoppler verwendet werden? Durch meine Recherchen tendiere ich zu 
"nein", bin mir aber nicht sicher.

2. Falls ich keine galvanische Trennung brauche, kann ich alles mit 
einem Netzteil betreiben? Also ein 12V Netzteil, natürlich muss für den 
Pi die Spannung gewandelt werden. Hier bin ich mir nicht sicher, ob das 
Schalten des Ventils eine Spitze oder dergleichen verursacht, was sich 
negativ auf den Pi auswirken kann? Hier bin ich aktuell auf dem Stand, 
dass ich die Spitzen filtern/glätten kann. Bin mir auch hier nicht 
sicher.

Danke

von Norbert (Gast)


Lesenswert?

Steffen H. schrieb:
> 1. Brauche ich eine galvanische Trennung? Also muss dazwischen z.B. ein
> Optokoppler verwendet werden? Durch meine Recherchen tendiere ich zu
> "nein", bin mir aber nicht sicher.

Wenn's ordentlich gemacht ist: Nein
Aber die GPIO Pins sind verdammt empfindliche kleine Dinger, da ist 
wenig Spielraum für Fehler.

Wie willst du denn 12V und 300mA schalten?

> 2. Falls ich keine galvanische Trennung brauche, kann ich alles mit
> einem Netzteil betreiben? Also ein 12V Netzteil, natürlich muss für den
> Pi die Spannung gewandelt werden.

Abhängig vom Modell nimmt sich so ein Pi gerne mal ein Ampere oder mehr. 
Wenn du von 12V auf 5V regeln willst, böte sich ein Schaltregler an.

von Noch ein Kommentar (Gast)


Lesenswert?

> da ist wenig Spielraum für Fehler.

Sicher verursacht das Ventil Funkstörungen und Spannungsabfälle auf der 
Masseleitung.

Bei 300mA sollte es aber ausreichen, wenn du die Grundregeln für 
sternförmige Masse und Freilaufdiode einhältst. Und die Kabel möglichst 
kurz halten.

von Steff H. (blueshark)


Lesenswert?

Danke für die schnellen Antworten

> Wenn's ordentlich gemacht ist: Nein
> Aber die GPIO Pins sind verdammt empfindliche kleine Dinger, da ist
> wenig Spielraum für Fehler.

> Bei 300mA sollte es aber ausreichen, wenn du die Grundregeln für
> sternförmige Masse und Freilaufdiode einhältst. Und die Kabel möglichst
> kurz halten.

Baulich bedingt haben die Kabel zum Ventil eine bestimmte Länge. Es sind 
etwa 3m. Dann ist wohl eine galvanische Trennung notwendig, oder?

Und daher sollte ich dann auch zwei Netzteile verwenden? Oder gibt es 
einen Weg, das mit einem Netzteil zu lösen?

von Falk B. (falk)


Lesenswert?

Steffen H. schrieb:

> Baulich bedingt haben die Kabel zum Ventil eine bestimmte Länge. Es sind
> etwa 3m. Dann ist wohl eine galvanische Trennung notwendig, oder?

NEIN!

> Und daher sollte ich dann auch zwei Netzteile verwenden?

NEIN!

> Oder gibt es
> einen Weg, das mit einem Netzteil zu lösen?

Sicher! Man nehmen ein 12V Netzteil + DC/DC Wandler auf 5V/2A für den 
Raspberry PI.

Relais mit Logik ansteuern.

von Falk B. (falk)


Lesenswert?

Man kann auch ein 5V Netzteil nehmen und den Raspberry Pi direkt damit 
versorgen. Das 12V Relais mit nur 300mA wird dann über einen DC/DC 
Wandler auf 12V versorgt. Hat den Vorteil, daß die größere Leistung für 
den Raspberry Pi direkt aus dem Netzteil kommt und nicht noch durch den 
DC/DC Wandler muss, der dann entsprechend leistungsstark sein muss und 
mehr kostet. 12V/300mA sind nur 3,6W, ein 5W Wandler sollte reichen.

von Steff H. (blueshark)


Lesenswert?

> Sicher! Man nehmen ein 12V Netzteil + DC/DC Wandler auf 5V/2A für den
> Raspberry PI.

Super. Das war einer meiner Gedanken, wie es umgesetzt werden kann.

> Relais mit Logik ansteuern.

Danke für den Link. Mir ist bewusst, dass die Ansteuerung intelligent 
gemacht werden muss. Sich die Details anzueignen ist mein zweiter 
Schritt, nachdem ich die Stromversorgung geklärt habe.

> Man kann auch ein 5V Netzteil nehmen und den Raspberry Pi direkt damit
> versorgen. Das 12V Relais mit nur 300mA wird dann über einen DC/DC
> Wandler auf 12V versorgt. Hat den Vorteil, daß die größere Leistung für
> den Raspberry Pi direkt aus dem Netzteil kommt und nicht noch durch den
> DC/DC Wandler muss, der dann entsprechend leistungsstark sein muss und
> mehr kostet. 12V/300mA sind nur 3,6W, ein 5W Wandler sollte reichen.

Jetzt muss ich mal blöd fragen. 5V auf 12V Wandeln? Bisher dachte ich, 
dass funktioniert nur bei Wechselstrom mithilfe eines Trafos. Oder habe 
ich das falsch verstanden?

von Gerald K. (geku)


Lesenswert?

Man könnte auch einen Optomos einsetzen.

z.B. AQZ202

Last-Nennstrom:3 A
Last-Nennspannung:60 VAC, 60 VDC

https://mou.sr/3yMfwWJ

Beispiel: Beitrag "Ausgabemodul für Raspberry Pi"

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Steffen H. schrieb:
> Jetzt muss ich mal blöd fragen. 5V auf 12V Wandeln? Bisher dachte ich,
> dass funktioniert nur bei Wechselstrom mithilfe eines Trafos.

Das ist auch so.

> Oder habe
> ich das falsch verstanden?

Ja. In jedem DC/DC Wandler steckt ein Zerhacker, der Wechselspannung 
erzeugt und mittels Spule oder Trafo die Spannung hoch oder runter 
setzt.

von Cartman (Gast)


Lesenswert?

> mich Tiefer in die Materie einarbeiten

Mit einem RPi wohl kaum. Das Bitwackeln dann per Python?
Richtig?
Blos die Haende nicht schmutzig machen.

Selbst wenn alles auf Anhieb funktioniert und anfaenglich nichts
kaputt geht, bist du danach weitestgehend genau so schlau wie davor.

Mit einem "allseits" beliebten A*ino wuerde es auch nicht besser.

von Norbert (Gast)


Lesenswert?

Cartman schrieb:
> Mit einem RPi wohl kaum. Das Bitwackeln dann per Python?

Schwierig. Da so ein Relais ja durchaus mehrere hundert Millionen Mal 
pro Sekunde geschaltet werden muss, sollten wir da besser direkt auf 
Assembler Ebene arbeiten. Ach was red' ich, direkt auf Maschinenebene, 
echte Männer:innen brauchen keinen Assembler.

von Steff H. (blueshark)


Lesenswert?

Cartman schrieb:
>> mich Tiefer in die Materie einarbeiten
>
> Mit einem RPi wohl kaum. Das Bitwackeln dann per Python?
> Richtig?
> Blos die Haende nicht schmutzig machen.
>
> Selbst wenn alles auf Anhieb funktioniert und anfaenglich nichts
> kaputt geht, bist du danach weitestgehend genau so schlau wie davor.
>
> Mit einem "allseits" beliebten A*ino wuerde es auch nicht besser.

Mein Lernfokus liegt auf der Elektronik. Also wie kann ich das Signal 
der GPIOs abgreifen und damit dann Dinge tun. Wichtig ist mir dabei, 
dass ich die Schaltungen verstehe und nicht irgendwelche Sachen ohne 
Verstand übernehme. Ich möchte wissen, wie ich die Größen/Werte der 
verwendeten Bauteile ausrechnen kann. Da erscheint mir das simple 
Projekt des Ein- und Ausschalten geeignet für den Einstieg. Vor allem 
auch deshalb, weil ich Effekte entstehend durch hohe Schaltfrequenzen 
vernachlässigen kann.

Am Ende möchte mich mit meinem Mobiltelefon mit dem Raspi kommunizieren. 
Bisher denke ich daran einen Webserver aufzusetzen. Das Frontend ist 
eine Website für Mobilgeräte, welche dann die Backend-Skripte ansteuert. 
Das scheint mir am einfachsten. Ob die Skripte dann in Python oder in 
einer anderen Sprache geschrieben werden, weiß ich noch nicht. Mit 
Python ist man sicherlich am schnellsten.

Da ich am Ende mit dem Handy alles steuern möchte, wähle ich den Raspi 
und keinen anderen Mikrocontroller.

Wenn das dann alles läuft ist ein weiteres Fernziel eine 
native-"hybrid"-App zu schreiben, die dann wahlweise nach iOS oder 
Android compiled werden kann. Da ich etwas lernen möchte und in Sachen 
Software sehr viel Erfahrung habe, ist das nicht mein Fokus.

Was heißt denn in "Hände schmutzig machen" in diesem Kontext? Und welche 
Methode ist denn besser geeignet sich in die Materie einzuarbeiten? 
Grundsätzlich bin ich offen für andere Projekte, die eine steilere 
Lernkurve bieten.

von Noch ein Kommentar (Gast)


Lesenswert?

Ja, würde auch so vorschlagen, erst mal mit Raspi, Webserver und 
CGI-Script irgend was ausprobieren.

Dann mal schauen, ob dir so etwas liegt und du eine komplette 
Hausautomatisierung entwickeln willst, oder ob es wieder ein schläft.

Ich gehe davon aus, wenn du das ganze Haus über App steuerst, kommst du 
zu der Einschätzung, Raspi ist ein Spielzeug. Da braucht man einen 
robusteren Server. Aber das ist im Augenblick vollkommen egal.

von Cartman (Gast)


Lesenswert?

Du koenntest deinem "Ventil" einen eigenen kleinen Controller goennen.
Der koennte dann auch die Funkton des Ventils ueberwachen und
Fehler melden. Und bei Fehlern auch das System in einen sicheren
Zustand bringen. So werden Systeme in der Industrie designt.
Genau wie die Ueberwachung der Ventilspannung/strom,
Umgebungstempetur und Stellzeiten. Alles Dinge, fuer die ein
RPi wegen seiner notorischen Unzuverlaessig nicht brauchbar ist.

Die dann bidirektionale Kommunikation dahin, kannst du dann
auch mit Optokopplern galvanisch trennen und an deinen RPi tackern.

Bei einem RPi einfach ein GPIO-Bit anzumachen, ist ja selbst wenn
man das in (ARM-)Assembler und z.B. memmap()-Systemcall macht,
viel zu trivial um irgendwelche Lerneffekte auszuloesen.

von Steff H. (blueshark)


Lesenswert?

> Ich gehe davon aus, wenn du das ganze Haus über App steuerst, kommst du
> zu der Einschätzung, Raspi ist ein Spielzeug. Da braucht man einen
> robusteren Server. Aber das ist im Augenblick vollkommen egal.

Die GPIO-Pins machen den Raspi sehr attraktiv. Darum fange ich damit an. 
Ob er sich am Ende als Spielzeug entpuppt ist, wie du geschrieben hast, 
erstmal egal.

> Du koenntest deinem "Ventil" einen eigenen kleinen Controller goennen.

Das ist eine schöne Idee. Allerdings möchte ich im Moment keinen Sensor 
verbauen. Somit kann der Controller lediglich messen, ob Strom fließt 
und das Ventil somit geschaltet hat. Oder gibt es noch etwas weiteres?

> Bei einem RPi einfach ein GPIO-Bit anzumachen, ist ja selbst wenn
> man das in (ARM-)Assembler und z.B. memmap()-Systemcall macht,
> viel zu trivial um irgendwelche Lerneffekte auszuloesen.

Wie oben schon erwähnt geht es mir nicht um die Programmierung. Da sage 
ich jetzt mal ganz selbstbewusst, dass ich viel Erfahrung habe. Als ich 
noch in der Schule war, lange bevor es den Raspi gab, habe ich solche 
Spielereien mit dem Seriellen Port eines PCs gemacht. Allerdings ohne 
Sinn und Verstand. Einfach Try and Error. Ich hatte mich damals gefreut, 
wenn ich so LEDs ein und ausschalten konnte, oder einen kleinen Motor 
zum laufen gebracht hatte.

Mir geht es jetzt darum, was mache ich mit dem Pin. Den Pin kann ich ja 
nicht ohne weiteres mit dem Ventil verbinden. Diese Fragen möchte ich 
für mich in diesem Projekt beantworten.

von Cartman (Gast)


Lesenswert?

> ganz selbstbewusst, dass ich viel Erfahrung habe

Das mag auf Webkram zutreffen. Du wirst sehen,
dass "Embedded" eine ganz andere Welt ist.
Ich kenne den Zweck deines Ventils nicht, aber ein
Kuehlkreislauf der wegen "Absturz" nicht peffnet, kann
ueble Folgen haben. Oder eben mal ein ganzes Stockwerk
ueberschwemmt.

Mal ein erlebtes Beispiel:
Die Spezialisten "brauchten" einen Controller der ca. 4 GFlops
konnte, um ein 200 Hz Digitalfilter mit nicht zu speziellen
Eigenschaften zu realisieren.
Und selbst das haben sie schlussendlich nicht geschafft.
Auch die haben gedacht dass sie viel Erfahrung hatten.
Das war wohl eher das Zusammenklicken von GUIs fuer eine DB.

von Steff H. (blueshark)


Lesenswert?

>> ganz selbstbewusst, dass ich viel Erfahrung habe

> Das mag auf Webkram zutreffen. Du wirst sehen,
> dass "Embedded" eine ganz andere Welt ist.
> Ich kenne den Zweck deines Ventils nicht, aber ein
> Kuehlkreislauf der wegen "Absturz" nicht peffnet, kann
> ueble Folgen haben. Oder eben mal ein ganzes Stockwerk
> ueberschwemmt.

Jetzt verstehe ich, was du meintest. Da stimmte ich dir zu.

BTW: Mit Erfahrung meinte ich nicht Frontend, GUI oder dergleichen. 
Damit wollte ich ausdrücken, dass mein Fokus nicht darauf liegt, wie ich 
letztendlich die GPIOs mithilfe von Skripten von low nach high schalte.
Ich komme aus der Bildverarbeitung. Hatte lange Zeit Algorithmen direkt 
auf der GPU implementiert. So hab ich auch mal eine zweidimensionale 
schnelle Fourier-Transformation zu Fuß implementiert, weil es damals 
noch keine passende Bibliothek gab. Somit habe ich auch eine Vorstellung 
von deinem geschilderten Beispiel.

Mein Ziel ist vielleicht in deinen Augen zu primitiv, so dass du mich 
missverstanden hast. Ich möchte das Ventil einfach nur auf und zu 
machen. Ohne dass dahinter eine großartige Reglung steckt. Zumindest im 
ersten Schritt.

Im Ebedded-Bereich habe ich etwas Erfahrung. Ist aber noch ausbaufähig. 
Hier habe ich zwar schon Mikrocontroller programmiert, aber nie selbst 
an einer Platine gelötet, zumindest nicht ernsthaft. Und das ist der 
Punkt, an dem ich ansetzen möchte. Die Fragen, die ich für mich als 
erstes beantworten möchte sind in der Art:
- Wie kann ich mithilfe eines GPIO-Pins, der bei high >1,3V hat, 
besagtes Ventil schalten, ohne den Raspi dabei zu zerstören.
- Wie kann ich sicherstellen, dass nicht mehr als 8mA aus einem GPIO 
gezogen werden.
- Wie lange dauert das schalten von low nach high? Gibt es dazwischen 
einen undefinierten Zustand.

Bisher habe ich viel gelesen und bereits ein gesundes Halbwissen 
aufgebaut. Doch wenn es konkret wird, bin ich bereits bei einfachen 
Fragen verunsichert. Daher auch meine Ausgangsfragen. Mit den Antworten 
kann ich dann weiter recherchieren.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Steff H. schrieb:
> Wie kann ich mithilfe eines GPIO-Pins, der bei high >1,3V hat,
Der GPIO-Pin sollte bei High in etwa die Versorgungsspannung und mithin 
etwa 3V ausgeben.

> besagtes Ventil schalten, ohne den Raspi dabei zu zerstören.
Du schaltest den üblichen Transistor dazwischen. Und die übliche 
Freilaufdiode parallel zur Relaisspule.

> Wie kann ich sicherstellen, dass nicht mehr als 8mA aus einem GPIO
> gezogen werden.
Du berechnest den dafür nötigen Basiswiderstand so, dass nicht mehr als 
diese 8mA fließen. (wobei diese 8mA ein von dir angenommener Wert 
sind...)

> Wie lange dauert das schalten von low nach high?
Ein paar µs.

> Gibt es dazwischen einen undefinierten Zustand.
Nein. Entweder ist das Ventil ein- oder ausgeschaltet. Wenn das Ventil 
umgeschaltet hat, dann hilft eine magnetische Hysterese, dass kein 
andauernder "Schwebezustand" eintritt.

Aber einfach mal mein Tipp: bau diese Transistorschaltung auf und 
steuere sie mit einem Kippschalter (0V/3V3) als PIN-Ersatz an. Dann 
kannst du ohne Gefahr für den µC deine Ansteuerschaltung unztersuchen 
und musst nur den Kippschalter umschalten, um zwischen High und Low zu 
wechseln...

Steff H. schrieb:
> Hier bin ich mir nicht sicher, ob das Schalten des Ventils eine Spitze
> oder dergleichen verursacht, was sich negativ auf den Pi auswirken kann?
Und es kann dir der Himmel auf den Kopf fallen...
Natürlich kann es da Probleme geben, aber das ist ja die Aufgabe des 
Hardwareentwicklers: seine Schaltung so auszulegen, dass diese Probleme 
nicht auftreten.

Zigmilliarden Geräte zeigen, dass solche Verbraucher (und noch 
wesentlich aufwendigere Lasten und sogar ganze Maschinen) problemlos 
auch ohne Potentialtrennung angesteuert weden kann.

> Hier bin ich aktuell auf dem Stand, dass ich die Spitzen filtern/glätten
> kann. Bin mir auch hier nicht sicher.
Wenn du das richtig machst, gibt es da keine "Spitzen", die irgendwie 
gefiltert oder geglättet werden müssen.

von Steff H. (blueshark)


Lesenswert?

Danke für die ausführliche Antwort.

> Aber einfach mal mein Tipp: bau diese Transistorschaltung auf und
> steuere sie mit einem Kippschalter (0V/3V3) als PIN-Ersatz an. Dann
> kannst du ohne Gefahr für den µC deine Ansteuerschaltung unztersuchen
> und musst nur den Kippschalter umschalten, um zwischen High und Low zu
> wechseln...

Das ist eine gute Idee und das versuche ich als erstes umzusetzen. Dazu 
habe ich noch eine Anfängerfrage: Muss ich den Schalter entprellen oder 
kann ich das in diesem Fall vernachlässigen?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Steff H. schrieb:
> Dazu habe ich noch eine Anfängerfrage: Muss ich den Schalter entprellen
> oder kann ich das in diesem Fall vernachlässigen?
Ein Tipp: dnek einfach mal drüber nach, was passieren könnte, wenn der 
Schalter irgendwie prellt. Versuche, deine Überlegungen in der Praxis 
nachzuvollziehen. Bedenke dabei, wie schnell das Ventil, das Messgerät 
und dein Auge reagieren reagieren können. Und wie tolerant dein Gehirn 
gegen einen einmalig auf dem Messgerät dargestellten "Zwischenwert" 
ist...


(Die korrekte Antwort ist natürlich: Entprellen ist für diesen 
Testaufbau nicht nötig.)

Steff H. schrieb:
>> Aber einfach mal mein Tipp: bau diese Transistorschaltung auf und
>> steuere sie mit einem Kippschalter (0V/3V3) als PIN-Ersatz an.
> Das ist eine gute Idee
Sie basiert auf dem alten Strategieansatz "teile und herrsche". Denn 
nicht der µC ist dein Problem und nicht das Ventil, sondern nur die 
Schaltung dazwischen. Also simulierst du einfach mal den µC durch den 
Schalter und das Ventil wird ohne nachfolgende Maschine betrieben. Und 
wenn dabei was kaputt geht, kann es nicht mehr als ein paar Cent kosten.

Beitrag #7132031 wurde von einem Moderator gelöscht.
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Vorbeugen ist besser als nach hinten umfallen! schrieb im Beitrag 
#7132031:
> Entgegen der Ansicht einiger hochkarätiger Experten hier wäre ich mir
> nicht zu schade, den sicher hohen finanziellen Aufwand für ein paar
> Optokoppler zu treiben.
Ja, die Optokopplerindustrie muss ja auch von was leben.

> Angesichts der heutigen Preise und der Verfügbarkeit von jeglichen
> Raspberrys würde ich alles tun, um einen Schutz dafür zu gewährleisten.
Ich finde die vorteilhaft stromgerenzend wirkende Art und Weise eines 
Widerstands da völlig ausreichend.

Wenn schon Optokoppler, dann unbedingt auch getrennte Versorgungen von 
Logik und Last. Und dann am bsten gleich ein Halbleiterrelais (Photomos 
o.ä.), das das Ventil direkt ansteuern kann.

Und eines ist klar: mit der falschen Beschaltung bekomme ich den Rechner 
auch mit einem Optokoppler kaputt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.