Serielle Kommunikation zwischen zwei Arduinos und Stromversorgung

Hallo zusammen,

ich habe schon das Forum und das Internet durchsucht, konnte aber nirgends eine Antwort finden, daher versuche ich es einmal hier...

Ich arbeite an einem Projekt, bei dem ich einen Arduino Mega und einen Arduinao Leonardo per Serial1 miteinander kommunizieren lasse. So wie es in vielen Tutorials beschrieben ist, habe ich RX1 und TX1 über Kreuz sowie die beiden GND miteinander verbunden. Alles funktioniert auch wunderbar und die Kommunikation funktioniert ohne Probleme. Beide Boards haben eine eigene Stromversorgung.

Allerdings ist mir beim letzten Testen folgendes aufgefallen. Nach dem Test habe ich zuerst den Leonardo vom Strom getrennt. Bevor ich dann den Mega vom Netz nehmen konnte, ist mir aufgefallen, daß der Leonardo immer noch mit Strom versorgt wurde. Ich konnte den am Leonardo angeschlossenen Schalter betätigen, und er sendete dann Daten über Serial1 an den Mega (so ist auch gewollt). Ich dachte erst, ich hätte irgendetwas falsch verkabelt. Zum Gegentest habe ich dann einmal zwei Arduino Unos genommen und nur RX und TX über Kreuz sowie GND verbunden. Sobald ich den Stromstecker in den einen Arduino eingesteckt habe, wurden beide mit Strom versorgt!

Ist das ein normales Verhalten? Kann das zu Problemen führen, so daß die Boards sogar Schaden nehmen können? Muss ich eine bestimmte Reihenfolge beim Ein-/Ausstecken der Kabel beachten?

Ich bin da gerade sehr verunsichert, weil ich dachte, daß bei der seriellen Kommunikation kein großer Strom zwischen den Boards fließen sollte, vor allem keiner, der beide Boards mit Strom versorgt (ich nutze ja auch nicht VIN oder ähnliches)...

Leider wurde dieses Verhalten in keinem der Tutorials auch nur ansatzweise erwähnt...

Gruß,
Grobiwan

So ein Verhalten wurde schon öfters beobachtet, daß sich Controller von der Spannung an Eingangspins "ernähren". Das liegt an den parasitären Dioden parallel zu den Ausgangstransistoren, über die Strom in den Controller hineinfließen kann. Wenn das TX Kabel an dem versorgten Arduino abgezogen wird, sollte der andere ausgehen. Auf die gleiche Art kann aber auch Strom von Ausgangspins von anderen Modulen abgezapft werden, die an einer eigenen Stromversorgung hängen.

Von größeren Schäden am Controller durch diesen Effekt weiß ich nichts, nur sonstige angeschlossene Elektronik könnte unerwünschtes Verhalten zeigen, wenn nicht beide Controller richtig mit Strom versorgt werden. Man kann aber vorsorglich Widerstände (1k) in die Signalleitungen zwischen beiden Controllern einbauen, dann können zumindest keine gefährlich hohen Ströme mehr fließen und der stromlose Controller kann mit seinen Ausgängen keinen Ärger bereiten.

Vielen Dank für die schnelle und gut erklärte Antwort! In Richtung der Widerstände hatte ich auch schon überlegt, von daher werde ich heute Abend den Lötkolben anschmeißen und das direkt umsetzen :slight_smile: Man lernt nie aus...

Dieser Strom fließt über die Schutzdioden in den Eingängen (innerhalb des IC), welche eigentlich Überspannungen (statische Elektrizität) ableiten sollen, nicht auf hohe Ströme ausgelegt sind und daher gefährdet sind.

Eigentlich sollte man erst externe Signale ( fremdes TX =5V Output HIGH in Ruhe -> eigenes RX ) wegschalten, bevor man einen Arduino stromlos macht, aber das ist leichter gesagt als getan, besonders wenn zwei Controller über Kreuz verbunden sind..
Mit dem 1k Widerstand kann man erreichen, das die Kondensatoren am Ziel-Controller langsam aufgeladen werden, der Controller ein paar Takte läuft, bis die Spannung wieder zusammengebrochen ist, und das Ganze von vorne losgeht. Auch nicht schön.

Das sind keine speziellen Schutzdioden, sondern die parasitären Dioden der Ausgangs-MOSFET.

Ich sehe Dioden vor den MOSFET Eingängen.

Vcc ---+----
       |
       _
	   ^
	   |
In ----+----- Gate
       |
       _
	   ^
	   |
GND ---+----	  

Daher auch immer die Forderung, dass Eingangssignale max Vcc + 0.3V haben dürfen...
Diese ist natürlich nicht immer erfüllt, wenn Vcc = 0 V ist.

Dann zeichne die Ausgangstransistoren mit ein, die zu jedem GPIO Pin auch noch gehören. Weglassen von scheinbar unwesentlichen Schaltungsteilen ist kein Beweis für irgendwas.

Ich würde diese Dioden Schutzdioden der Eingänge nennen Damit Überspannungen bzw negative Spannungen über die Spannungsversorung bzw Masse abgeleitet werden.

Generell gesagt (bis auf wenige Außnahmen) dürfen an Halbleitern keine Spannungen an Eingängen, noch weniger an Ausgängen anliegen wenn keinen Spannungsversorgung vorhanden ist.

Grüße Uwe

Ich eigentlich auch:
https://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-7810-Automotive-Microcontrollers-ATmega328P_Datasheet.pdf Seite 58.

All I/O pins have protection diodes to both VCC and Ground as indicated in Figure 13-1.

Aber am schlimmsten ist wen bei Spannungsteiler und CO der GND als erster abgezogen wird Dan spielen die Indianer mit Rauchzeichen und öfters mit loch im IC.

Durfte da schon beobachten :cold_sweat:

Naja, das ist jetzt wieder ein anderes Thema. Wenn am Spannungsteiler der GND abgezogen wird, steht plötzlich die eigentlich geteilte Spannung volle Sahne da. Da geht natürlich der Rauch auf. Das darf man auf keinen Fall machen. Aber kann passieren im Eifer des Gefechtes :slightly_smiling_face:

Franz

...dann passiert garnichts, wenn man damit den Stromkreis unterbricht. Wird der Stromkreis nicht unterbrochen, weil der GND noch von anderswo kommt, dann passiert auch nichts.

Doch, wenn man nur den GND von Spannungsteiler wegnimmt, steht der VCC plötzlich voll da. Natürlich nur wenn der GND an der CPU noch da ist. Also wenn man NUR den GND von Spannungsteiler klaut.

Kannst Du mal ein Schaltbild zeichnen, das Deine Vermutung erklärt?

Ach nein, das zeichnen fange ich jetzt nicht an. 20 Volt VCC auf einen 15k Widerstand. Weiter auf einen 5k Widerstand, von dem auf GND. Die Mittelanzapfung zwischen den zwei Widerständen geht auf nen Analogen Pin des Arduinos. Der bekommt somit um die 5 Volt, von den 20 Volt. Jetzt lasse den Arduino in Betrieb, nehme am Spannungsteiler den GND am 5k Widerstand weg. Dann hat der Analoge Pin des Arduinos plötzlich 20 Volt anstehen. Das wird ihm nicht gefallen.

Es würde Dir aber helfen, den Denkfehler zu erkennen. Es heißt nicht umsonst Stromkreis.

Du meinst da, wo ich das = eingezeichnet habe?


        #----- 20V
        |
       | |
       | |15K
       | |
        |
PIN *---+
        |
       | |
       | |5K
       | |
        |
        =
GND *-:-+--:-- GND

Nochmal drüber nachdenken.

Das paßt aber nicht zur ursprünglichen Situation. Wenn ein GND abgezogen wird, bleibt der Widerstand immer noch verbunden.

Doch!
Genau so, wie beschrieben.

Das mag von @Franz54 richtig gedacht sein.
Aber schau mal in meine ASCII-Grafik.

Ich hab da nicht sinnlos : eingezeichnet.

Wenn der GND am = weg geht, dann ist was falsch.
Und wer das zulässt, ist - sorry @fony :wink: - dann selbst schuld.

Na dann auch euch gute Nacht ...

Ja, natürlich. Nichts anderes habe ich ihm auch geschrieben. Das kann natürlich passieren. Alleine schon, wenn man am Breadboard einen Wackler hat und der 5k Widerstand deshalb nicht mehr durchgeht. Schon hat man die 20 Volt anstehen.