Gemeinsame Masse / GND unbedenklich?

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo liebes Forum,

    ich habe aktuell ein kleines Projekt in dem ich die Lüftersteuerung zu Hause "Smart" nachrüsten möchte.

    Es handelt sich um ein dezentrales System wobei der "Controller" (welcher die einzelnen Lüfter steuert) mit einem "Bedienelement" eingestellt wird. Beide sind mit einem kurzen Flachbandkabel verbunden.

    Auf dem Bedienelement ist hinten ein einzelner IC und laut Spezifikationen und Pinout fiel der Verdacht direkt auf eine UART Schnittstelle womit der IC mit dem Controller kommunizieren könnte. Also testweise Oszilloskope drangeklemmt und das sah gut aus ;).

    Da ich eher in der Softwareentwicklung fit bin als in der Elektronik, habe ich daraufhin mit einem 10€ Logic-Analyzer weiter gemacht und das "Protokoll" in PulseView dekodiert

    (UART Decoder auf korrekte Baudrate eingestellt, 38400 aus den Intervallen am Oszilloskope abgeleitet, 8N1 - dann einen eigenen Decoder für die Pakete gebastelt).

    Daraufhin wollte ich mit dem Raspberry weiter machen und dort das Signal verarbeiten. Also flott den GPIO 15 (RX) verbunden, uuuuuuuund: keine Daten =O.

    Alles doppelt gecheckt, aber es kam nichts rein. Da viel mir auf: am Logic-Analyzer habe ich natürlich GND des Bedienelements verbunden, beim RPI habe ich ein "eigenes" GND, da er mit einem Netzteil via USB versorgt wird.

    Oszilloskope wieder raus und das Signal zwischen RX und GND am RPI geprüft, das war deutlich "überlagert". Kein Wunder das da nichts ankommt.

    (Die "Blobs" sind das eigentliche RX Signal)

    Jetzt die Frage: ist es unbedenklich, einfach GND des RPI mit GND des Bedienelements zu verbinden? Oder riskiere ich damit einen Defekt auf der einen oder anderen Seite?

    Immerhin scheint das um fast 6V zu schwanken.

    Viele Grüße!

  • Die GPIOs des Pi mögen nur 3,3 Volt, wenn die Kiste eine eigene Stromversorgung mit 6 Volt hat und das Signal auch, brauchst du einen Pegelwandler, der das Signal auf eine für den Pi überlebensfähige Spannung reduziert, dann solltest du beide Geräte mit einer gemeinsamen Masse verbinden. Falls der Rx vom Pi nicht schon gestorben ist.

  • um fast 6V zu schwanken

    Niemals einfach so anschliessen, wie Fred schon schreib. Wenn Du Glück hast, lebt der GPIO noch. Die beiden GND MUSST Du verbinden, sonst klappts nur vielleicht zufällig. Eine evtl. auf dem Pi laufende serielle Konsole musst Du abschalten, die funkt sonst dazwischen.

  • Hab das nicht ganz verstanden:

    Dein oberes Ossi-Bild ist ist an der Lüftersteuerung mit angeschlossenem Bedienteil gemessen?

    Dein unteres Ossi-Bild ist an der Lüftersteuerung mit angeschlossener RPi gemessen (aber ohne GND)?

    Wenn dem so ist:

    Ich würde als allererstes die GND miteinander verbinden und dann nochmal die Spannungen messen.

  • Danke für die flotten Antworten!

    Erstmal zur Frage.

    Dein oberes Ossi-Bild ist ist an der Lüftersteuerung mit angeschlossenem Bedienteil gemessen?

    Dein unteres Ossi-Bild ist an der Lüftersteuerung mit angeschlossener RPi gemessen (aber ohne GND)?

    Das obere Ossi-Bild ist zwischen dem Bedienelement RX (also kommend vom "Controller", dort wird der aktuelle Lüftungsstatus übertragen, Element interpretiert die Daten und stellt sie als LED Leiste dar) und Bedienelement GND. Hier war ich noch happy, denn 3.3V Pegel, perfekt um das an den RPi zu geben.
    Das untere Ossi-Bild ist zwischen dem Bedienelement RX (also auch RPi RX) und RPi GND.

    Bei beiden Bildern war der RPi RX bereits mit dem Bedienelement RX verbunden in der Hoffnung flott ein Programm zu schreiben das mir den "Lüftungsstatus vom Controller" ausgibt.

    Die GPIOs des Pi mögen nur 3,3 Volt, wenn die Kiste eine eigene Stromversorgung mit 6 Volt hat und das Signal auch, brauchst du einen Pegelwandler, der das Signal auf eine für den Pi überlebensfähige Spannung reduziert, dann solltest du beide Geräte mit einer gemeinsamen Masse verbinden. Falls der Rx vom Pi nicht schon gestorben ist.

    Der GPIO von RPi scheint meine Flapsigkeit überlebt zu haben :huh:. Aber ganz genau, die Kiste (hier der Controller) hat eine eigene Spannungsversorgung und liefert VCC 3,3V und GND an das Bedienelement mit dem Flachbandkabel.


    Aufgrund der sehr unterschiedlichen Pegel bin ich jetzt aber unsicher, ob ich nicht doch etwas zerstören würde, wenn ich einfach GND direkt verbinde.

    RPi wäre "ok", aber lieber nicht das Lüftersystem zerlegen. Wie schätzt ihr das Risiko da ein?

    Ansonsten wäre meine Alternative einen ESP32 direkt zu nutzen, der dann auch von dem Controller mit den vorhandenen 3.3V VCC betrieben wird. Das wäre eh die finale Stufe, jedoch kann ich auf dem RPi schneller "mal eben via SSH" am Programm schrauben und testen :).

    Viele Grüße!

    Einmal editiert, zuletzt von -markus- (8. Januar 2021 um 09:41)

  • Das untere Ossi-Bild ist zwischen dem Bedienelement RX (also auch RPi RX) und RPi GND.

    Ich denke, das ist ein schönes Beispiel für "Wer viel misst, misst auch Mist." Wenn Du vom Bedienteil keine Unterlagen zum Nachsehen hast, verbinde die GND und miss einfach nochmal GND - TX bzw. RX Bedienteil. Es sollte dann IMHO einen Pegel von 3.3V ergeben.

    Es gibt immer verschiedene Möglichkeiten, z.B. auch den Einsatz eines USB seriell Wandlers am Pi.

  • Ich denke, das ist ein schönes Beispiel für "Wer viel misst, misst auch Mist." Wenn Du vom Bedienteil keine Unterlagen zum Nachsehen hast, verbinde die GND und miss einfach nochmal GND - TX bzw. RX Bedienteil. Es sollte dann IMHO einen Pegel von 3.3V ergeben.

    Haha, ja das trifft zu.
    Unterlagen gibt es leider keine, da gibt der Hersteller nichts raus.

  • Hallo und willkommen hier im Forum.

    Um zu wissen ob man die Masse der Steuerung mit dem der RPi verbinden muß, sollte man zuvor feststellen wie die SV der Steuerung aufgebaut ist. Es ist durchaus möglich, dass das Steuergerät die Spannung direkt aus den 230V ( ohne sichere galvanische Trennung ) erzeugt, dann wäre eine Signalübertragung von der Steuerung zum RPi per Optokopler oder mit einem speziellen IC ( ADUM120x o.ä. ) besser.

  • Als erstes GND verbinden und keine weitere Verbindung zwischen RPi und dem Rest.

    Dann messen. (Rx, Tx, GPIO....) Immer gegen GND.

    Jetzt wird vermutlich nix mehr über 3,3V sein.

    Ohne gemeinsame Masse ist Messen schwierig und Steuern sinnlos. (Außer, man trennt absichtlich mit Optokopplern etc).

    Wenn Du nix mehr über 3,3V hast kannst Du die Rx und Tx verbinden und anfangen zu programmieren.

  • Also nach einer UART-Schnittstelle sehen mir die Daten nicht aus. Wenn der erste Impuls (von high nach low) das Startbit wäre, müssten die Zeiten für ein Bit genau so breit sein wie das Startbit und nach spätestens 9 Bit müsste dann ein Stopbit (high-Pegel) anliegen, wobei die Zahl der Bits zwischen Start- und Stopbit bei jedem Datenwort immer gleich sein muss. Das habe ich für verschiedene Anzahl an Bits zwischen Start und Stop ausprobiert, Es passte aber nicht. Außerdem konnte ich die Zeit der Pulsbreite nicht so genau herausfinden, dass sich eine "vernünftige" Baudrate ergab. Da würde ich erst noch einmal nachforschen um herauszufinden, ob es sich wirklich um ein UART-Datentelegramm - mit welcher Baudrate, mit wieviel Datenbits und ob mit oder ohne Parity (odd oder even) gesendet wird. Dann würde ich für den ersten Versuch die Daten über einen Optokoppler an den Raspi übertragen. Da stellt sich die Frage einer unterschiedlichen Potentialdifferenz erst einmal nicht. Die würde ich dann in einem zweiten Schritt klären. (Falls die Datenleitung einen Optokoppler nicht treiben kann, einen Transistor - als Emitterfolger geschaltet - zwischen Datenleitung und Optokoppler schalten.

  • Auf die kurze Entfernung hätte ich auch keinen UART sondern eher einen I2C Bus vermutet. Der Controller befindet sich im Taster und steuert die Leistungselektronik. Aber Gewissheit darüber bekommt man erst, wenn man die gesamte Kommunikation aufzeichnet.

  • Hallo Gnatz,

    danke - das ist ein sehr interessantes Feedback!

    Bisher habe ich es einfach mal versucht und habe bei 38400 Baud, 8 Bits, keine Parität, 1 Stop-Bit die Eingaben am Bedienelement zuverlässig auslesen können (TX) und den Status des Controllers (RX) auch. Fairerweise ist mir aber auch bereits aufgefallen, dass bisher nur die Low-Half-Bytes genutzt werden und ich schon etwas skeptisch war ob ich da nicht zu viel "interpretiert" habe. Ergebnis stimmt in PulseView, aber durchaus möglich das die Zwischenschritte falsch sind. Hier mal ein Screenshot:

  • Auf die kurze Entfernung hätte ich auch keinen UART sondern eher einen I2C Bus vermutet. Der Controller befindet sich im Taster und steuert die Leistungselektronik. Aber Gewissheit darüber bekommt man erst, wenn man die gesamte Kommunikation aufzeichnet.

    Danke für das Feedback!

    Ich lade hier einfach mal eine komplette Aufzeichnung einer 10 Sekunden "Session" hoch, auf der ich alle Knöpfe am Bedienelement einmal gedrückt habe.

    Nach dem Entpacken der Datei lässt sich diese in PulseView öffnen für alle die Interessiert sind ;)

  • Hallo Markus,

    danke für die Info. Das passt gut. Ich habe das aus dem Diagramm nicht herauslesen können - auch weil ich die Zeitachse nicht genau genug ablesen konnte. Sorry für die Mehrarbeit. Leider kann ich im Moment nicht viel Zeit aufbringen, aber ich verfolge das Ganze weiter und melde mich, wenn ich meine, dass ich Hilfreiches beitragen kann.

    Noch eine Frage: Soll der Raspi nur mithören oder soll er aktiv (Daten gehen erst zum Raspi und werden dann von ihm nach Auswertung weitergeleitet) in die Kommunikation eingebunden werden? Bei einem aktiven Eingriff ist es vielleicht sinnvoll, die dazu nötige Unterbrechung der Kommunikationsleitung über eine Schaltung automatisch wieder herzustellen, wenn der Raspi ausgeschaltet oder "abgestürzt" ist (z.B. durch ein 2-poliges Umschaltrelais, das von einem Raspi-Watchdog immer wieder getriggert wird). Nur wenn die Watchdog-Impulse regelmäßig kommen, ist die "Umleitung" über den Raspi aktiv. (Überwachung durch ein retriggerbares Monoflop, das das Relais bedient.)

  • Ich hab zu danken, toll wie engagiert hier das Thema verfolgt wird.

    Gnatz Du hast es richtig erraten, der RPi soll später aktiv in die Kommunikation eingreifen (und später durch einen ESP32 ersetzt werden der in das Loch in der Wand hinter dem Bedienelement passt und auch mit den 3,3V vom Controller versorgt werden kann).

    Deine Idee mit einem Watchdog die "Umleitung" aufrecht zu erhalten finde ich gut, die würde dem Projekt das gewisse Finish geben :thumbup:

  • Ob das mit den 3,3V vom Controller als SV für den ESP klappt, würde ich mal in Frage stellen. Der ESP im w-LAN Betrieb braucht ca. 300mA und da ist fraglich ob die SV des Controllers genug Leistungsreserve hat. Zur Not könnte man aber einen kleinen Stepdown SV Konverter an die 12V hängen und damit den ESP mit Spannung versorgen.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!