Forum: Mikrocontroller und Digitale Elektronik Drei AVR mit UART verbinden. Pegel zu niedrig


von Georg (Gast)


Lesenswert?

Hallo,

ich möchte gerne drei AVR mittels UART verbinden. Jeder AVR hat seine 
eigene Versorung über eine Batterie. Der Steuer AVR wird mit 3,3V, die 
Empfänger mit 5V betrieben. Die Masse ist bei allen die selbe.
Den Steuer AVR mit 5V zu betreiben ist nicht möglich.
An die UART Schnittstelle des Steuer AVR werden beide Empfänger UART 
angeschlossen.

Die UART Verbindung funktioniert wunderbar, solange die Batterie an 
jedem der Empfänger funktioniert. Sobald eine Batterie leer ist, bzw. 
nicht angeschlossen, bricht der Pegel des UART Signals auf etwa 1,2 V 
ein und wird bei dem funktionieren Empfänger nicht mehr erkannt.

Wie kann ich dieses Problem lösen? Ist es möglich das Signal hoch zu 
ziehen? Einen Ausfall einer Empfänger Batterie kann ich erkennen.

Vielen Dank
Georg

von slowslow (Gast)


Lesenswert?

Verstehe die Aufgabenstellung nicht so ganz.

Der uC ohne Stromversorgung kann doch eh keine Daten verarbeiten, der 
braucht dann auch keinen gültigen Pegel am UART-Eingang mehr, der ist 
doch tot.

Ein Schaltplan wäre hilfreich für die Definition der Aufgabenstellung.

von Lord Z. (lordziu)


Lesenswert?

Na er sagt er hat 2 Empfänger A und B.

Wenn bei A die Batt zusammenbricht, empfängt auch B (volle Batterie) 
nichts mehr.

So habe ich das verstanden.

von Olaf (Gast)


Lesenswert?

> Wie kann ich dieses Problem lösen?

Indem du die Leitung die gerade nicht gebraucht wird, abtrennst.

> Ist es möglich das Signal hoch zu ziehen?

Wenn du das machst dann laeuft dein Microcontroller ohne Strom wieder 
weil er sich ueber seine Schutzdioden versorgt.

Olaf

von Georg (Gast)


Lesenswert?

Daniel R. schrieb:
> Na er sagt er hat 2 Empfänger A und B.
>
> Wenn bei A die Batt zusammenbricht, empfängt auch B (volle Batterie)
> nichts mehr.
>
> So habe ich das verstanden.

Genau darum geht es.

Olaf schrieb:
> Indem du die Leitung die gerade nicht gebraucht wird, abtrennst.

Wie mache ich das am besten? Das Signal mittels Transistorschalter 
durchschalten?

von Olaf (Gast)


Lesenswert?

> Wie mache ich das am besten? Das Signal mittels Transistorschalter
> durchschalten?

Ich wuerde an den Empfangseingaengen eine Diode und einen Pullup an ihre 
jeweils eigene Betriebspannung machen. Dann kann man von aussen nur noch 
aktiv runterziehen.
Ich hoffe das geht noch, da in dem anderen Thread jemanden drei Dioden 
und ein Widerstand zu kompliziert waren. Aber vielleicht hat Maxim das 
ja schon als Muster in einem Gehäuse. :-)


Ich wuerde mir aber dann mal die Flanken an den Eingaengen anschauen ob 
sie noch okay aussehen. Da sie dann nicht mehr aktiv hochgezogen werden 
koennten die etwas schlapper werden. Haengt natuerlich vom Widerstand 
und der Baudrate ab.

Olaf

von Karl H. (kbuchegg)


Lesenswert?

Olaf schrieb:
>> Wie mache ich das am besten? Das Signal mittels Transistorschalter
>> durchschalten?
>
> Ich wuerde an den Empfangseingaengen eine Diode und einen Pullup an ihre
> jeweils eigene Betriebspannung machen. Dann kann man von aussen nur noch
> aktiv runterziehen.

Die Frage ist an dieser Stelle:
Was macht der Eingangspin vom µC, dessen Batterie gerade am sterben ist 
mit der Signalleitung.
                                    +---------
                                    |
                +-------------------|  RxD  Controller A
                |                   |
    ------------+
                |         +--------------
                |         |
                +---------| RxD  Controller B
                          |

Das ist doch die Situation. Und die Frage lautet. Wenn A der Saft 
ausgeht, was veranstaltet dann sein RxD Pin mit der Leitung. Ich 
gestehe: Ich weiß es nicht.

Wie wäre es mit je einem Optokoppler vor den RxD Pins? Damit wäre die 
Signalleitung erst mal komplett von den µC entkoppelt. Oder verbraucht 
das schon zuviel Strom?

von Newbi (Gast)


Lesenswert?

NPN Transistor in Emitterschaltung sollte auf funktionieren:

Tx -------------------+--------------------------RX
                      |
                    |RC |
                    |   |
                      |
                      |
                     /
          -----    |/
I/O-------|RB  |---|
          -----    |\>
                      |
                      |
                      |
                     ---

Allerdings brauchst du das für jeden Empfänger. Ein- und Ausschalten je 
nachdem ob die Batterie an ist.

von Olaf (Gast)


Lesenswert?

> Und die Frage lautet. Wenn A der Saft
> ausgeht, was veranstaltet dann sein RxD Pin mit der Leitung. Ich
> gestehe: Ich weiß es nicht.

Wieso? Das ist doch klar. Seine eigene Betriebspannung sinkt. Sagen wir 
mal der Prozessor laeuft dann mit 2-3V. Dann liegt an seinem RxD Pin 
eine Spannung von 5V an und die ist ueber seiner eigenen 
Betriebspannung.
Dann fliesst ein Strom ueber die Schutzdioden am Eingang zur Versorung 
des Prozessors. Wenn der Strom gross genug ist dann geht der Eingang 
kaputt. Ist er so klein das der Prozessor das aushaelt kann es sogar 
sein das er sich aus der Leitung selber mit Strom versorgt und munter 
weiter laeuft.

Ausserdem kommt natuerlich irgendwann der Punkt wo der Prozessor Unsinn 
macht weil die Spannung zu niedrig sein koennte damit er noch sein 
normales Programm ausfuehrt. Dann stuerzt er ab. Dann waere es sogar 
denkbar das ein fehlerhaftes Programm die RxD Leitung auf Ausgang 
schaltet und dann irgendwas da ausgibt. Auch da hilft meine 
Diodenloesung.

Olaf

von dr.schmock (Gast)


Lesenswert?

Ich würde - wie von Karl Heinz vorgeschlagen - versuchen, das mit 
Optokopplern zu lösen (z.B CNY 17). Das ist die übliche und sicherste 
Methode. Wenn dann doch irgendetwas dagegen spricht (wenig Platz auf der 
Platine...), kannst du ja immernoch stattdessen Dioden verwenden.

Grüße

von Georg (Gast)


Lesenswert?

Hallo,

danke schonmal. Optokoppler kommen nicht in Frage, Gründe sind der 
fehlende Platz und der Stromverbrauch. Ich werde es mit den Dioden 
testen.

von Theo (Gast)


Lesenswert?

Olaf schrieb:
> Ich wuerde an den Empfangseingaengen eine Diode und einen Pullup an ihre
> jeweils eigene Betriebspannung machen.

meinst du das so?

                  5V
                  |
                  R pullup
0..3,3V           |
UART ---|< Diode--*------RxD Empfang

Das funktioniert doch nicht, da die Diode immer im Durchlassrichtung 
geschalten ist, folglich der RxD immer auf 5V gepullt wird. Oder habe 
ich dich missverstanden?

von Heiko (Gast)


Lesenswert?

Doch, das funktioniert schon.

Wenn der UART-Ausgang auf High liegt, fließt ein Strom von +5V über den 
R, die Diode und die Schutzdiode des Senders nach +3.3V. Die Spannung am 
RxD dürfte also bei ungefähr 3.3V+0.7V (Schutzdiode) +0.7V (Diode) = 
4.7V liegen.

Wenn TxD auf Low liegt, fließt ein Strom von +5V über den R und die 
Diode in den TxD-Pin (und weiter nach GND). Die Spannung an RxD dürfte 
also bei ungefähr 0.7V (Diode) liegen.

Wenn jetzt die 5V-Batteriespannung niedriger wird, sinkt nur die 
RxD-Spannung bei High. Wenn sie auf Null liegt, kann trotzdem von TxD 
kein Strom in den RxD-Pin (und über dessen Schutzdiode weiter nach +5V) 
fließen, weil die Diode diesen Strom sperrt.

MfG, Heiko

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.