Forum: Mikrocontroller und Digitale Elektronik Wie per RX/TX 5V-AVR und 3,3V-AVR verbinden?


von Max (Gast)


Lesenswert?

Hallo Leute,

ich muß zwei AVR auf verschiedenen Platinen zum Datenaustausch 
verbinden. Problem ist, daß der Sender-AVR mit 5V läuft, der Empfänger 
AVR mit 3,3V. Jetzt habe ich das Forum durchsucht und einiges gefunden, 
bin mir aber unsicher:

1. Einfach verbinden, die Schutzdioden halten beim 3,3V AVR die 5 V 
schon aus
2. in die RX/TX-Leitung einfach 2 Dioden in Reihe, der Spannungsabfall 
reich
3. Levelshifter in die RX/TX einbauen, nur welchen kaufen als 
Normalsterblicher?

Jetzt stellt sich die Frage, was am sichersten ist. Schaffen die 
Schutzdioden die wirklich sicher die 5V? Oder verfälschen die Dioden 
vielleicht die Datenrate und es kommt nur Müll beim Empfänger an?

Würde mich über hilreiche Ideen freuen, vielen Dank.

von vollbrücke (Gast)


Lesenswert?

1 oder einen 1 K Serie  in RX des Empfängers

von Jan H. (jan_m_h)


Lesenswert?

vollbrücke schrieb:
> 1 K Serie  in RX des Empfängers

Dann halten die Schutzdioden das aus ;-)

Von 5V zu 3.3V kann man auch einen Spannungsteiler verwenden.

von Marco H. (damarco)


Lesenswert?

Es kommt auch auf die Geschwindigkeit an. Wirklich sauber ist die Lösung 
mit den Widerstände nicht. Man bewegt sich außerhalb der Spezifikation 
und somit sind defekte nicht auszuschließen.

Eine einfache Lösung ist Logikgatter vor zuschalten das mit 3.3V 
betrieben wird. Fast alle Gatter sind 5V tolerant und können in weiten 
Betriebsspannungsbereichen betrieben werden.

Nicht benötigte Gatter können zum treiben von LEDs etc verwendet werden.

von Stefan F. (Gast)


Lesenswert?

Um die 5V auf 3,3V runter zu bringen, nimm einen simplen 1k Ohm 
Widerstand in Reihe. Oder (wenn du die ESD Dioden nicht belasten 
möchtest) nimm Spannungsteiler:
1
          1k       2,2k
2
Tx o----[===]---+---[===]---|
3
                |
4
               Rx

Das funktioniert mit und ohne den 2,2k Widerstand mindestens bis 115200 
Baud einwandfrei.

Für die andere Richtung brauchst du nichts zu tun. 5V AVR's erkennen 
3,3V Signale zuverlässig. Mehr als 115200 baud habe ich aber auch dort 
nicht versucht.

von Frank K. (fchk)


Lesenswert?

Max schrieb:

> 3. Levelshifter in die RX/TX einbauen, nur welchen kaufen als
> Normalsterblicher?

74LVC1T45.

http://www.diodes.com/_files/datasheets/74LVC1T45.pdf

funktioniert sicher für beliebige VccA,VccB mit 1.8V<VccA<5.5V und 
1.8V<VccB<5.5V.

: Bearbeitet durch User
von Ralph S. (jjflash)


Lesenswert?

Sender TxD 5V auf 3,3V RxD Empfänger
1
             3,3V
2
              ^
3
              |
4
              | 
5
              /
6
              \   1,8k
7
              /
8
              |
9
              |
10
TxD o---|<----*------O RxD
11
12
      1N4148

Bei einer logischen 1 auf TxD sperrt die Diode und RxD erhält über den 
Widerstand 3,3V als eine logische 1.

Bei einer 0 auf TxD ist Diode leitend, an RxD liegt die Flussspannung 
der Diode an (0,7V) welches als 0 erkannt wird. Wem die 0,7V zu viel 
sind, kann anstelle der 1N4148 auch eine BAT48 nehmen.

Hat (mit einer BAT48) getestet bis 230400 Baud funktioniert.

von Frank (Gast)


Lesenswert?

Ich sehe es schon kommen das der TO noch eine Leitung dazwischen haben 
will wo die Kapazität nicht mehr vernachlässigbar ist. Dann kann man den 
Vorschlag mit Widerstand vergessen. Je nach Übertragungsrate.

In der Praxis schon oft gesehen habe ich die Variante von Marco H. Und 
Frank K. Mit Logik Gattern. Dann sollte auch das treiben eines (kurzen) 
Leitungsstückes kein Problem sein.

von Stefan F. (Gast)


Lesenswert?

Ja, auch die Variante mit der Diode hat bei mir nie Probleme gemacht.

Aktive level Shifter sind bei kurzen leitungen und "niedrigen" Baudraten 
(wie 155200) in der Regel nicht notwendig. Schaden aber auch nicht.

von Max (Gast)


Lesenswert?

Okay, das habe ich vergessen: 3m über Cat-6 und bei 19200bps

von Stefan F. (Gast)


Lesenswert?

Bei langen Kabeln würde ich definitiv aktive Levelshifter verwenden.

Eigentlich ist das ein Fall für den MAX232 bzw. Max3232.

Bei dem Wechselspiel aus Kabel und der hohen Impedanz des 
Spannungsteilers (bzw Dioden/Widerstand Kombi) würde ich sonst starke 
Signalverzerrungen erwarten.

von Max (Gast)


Lesenswert?

okay....meine amateurhafte Meinung war: wenn es für Netzwerkdaten im 
M-bit-Bereich gut ist, sollte es doch eigentlich auch für das bißchen 
von mir gut sein...aber die Netzwerkhardware hat sicher noch 
Verstärkerhardware, richtig?

von Stefan F. (Gast)


Lesenswert?

Probier es aus - hängt sehr vom kabel ab. Wenn es zuverlässig sicher 
klappen soll, dann nimmt die richtigen treiber-IC's.

von peter (Gast)


Lesenswert?

Wenn du Softseriell nimmst von einem beliebigen zugewiesenen PIN , 
passiert nichts von TX 5 Volt zu RX 3,3 Volt. Du darst nur nicht die den 
Festverdrahteten TX auf dem AVR nehmen wenn damit über USB eine 
Übertragung mit TX stattfindet.

Gruss

von Max (Gast)


Lesenswert?

Und warum nicht?

von Stefan F. (Gast)


Lesenswert?

Dass man 5V Ausgänge nicht an 3V Eingänge anschließen soll, ist wohl 
klar.

@Peter
> Wenn du Softseriell nimmst von einem beliebigen zugewiesenen
> PIN, passiert nichts von TX 5 Volt zu RX 3,3 Volt.

Du wolltest damit nicht das Gegenteil aussagen, oder doch? Ich verstehe 
diesen Satz nicht.

von Sascha (Gast)


Lesenswert?

Damit ist vllt gemeint dass die GPIO Pins 5V tolerant sind bei 3,3V 
Betrieb. Das wäre mir allerdings neu.

Pegelwandler:
https://www.mikrocontroller.net/articles/Pegelwandler

Durch die extreme Einfachheit sollte man den Minimal-Pegelwandler mal 
ausprobieren:

Beitrag "Re: 1 Transitor + 2 Widerstände = Verwirrung"

Klappt für I2C super, bei UART muss mans mal probieren. Kann auch sein 
dass der die Schaltzeiten zu stark verändert.

von peter (Gast)


Lesenswert?

Na denn...
Wenn  du einen AVR hast, wo du das Flashen mit USB über TX0 machst soll 
man den TX nicht an RX 3,3 Volt legen. Wenn du aber einen TX hast der 
Softwaremäßig erzeugt wird an einem bestimmten PIN den man selber 
festlegt, ist es total ungefährlich den TX an eine RX von 3,3 Volt 
anzuschliessen.
Wenn du einmal die Spannung abtasten wirst von diesen TX, weißt du 
warum.

Gruss

von peter (Gast)


Lesenswert?

Es geht auch auch an den TX1, TX2 usw.

von peter (Gast)


Lesenswert?

---------------
Dass man 5V Ausgänge nicht an 3V Eingänge anschließen soll, ist wohl
klar.
---------------

Das ist nicht meine Aussage für einen TX die du da falsch auslegst.
Mess die Spannung am Software-TX , der nicht in Verbindung mit USB 
steht.

Ihr seit zuviel Theoretiker...

Gruss

von peter (Gast)


Lesenswert?

-------------
Und warum nicht?
-------------

Au mein Gott.... mess doch einmal die Spannung.

von Jodel (Gast)


Lesenswert?

@peter
Was du von Dir gibst, ist schlicht kaum zu verstehen.

von Marco H. (damarco)


Lesenswert?

Also wenn die Kopplung über ein Kabel erfolgt auch noch unsymmetrisch 
würde ich dies über RS422/RS485 Linedriver laufen lassen. z.Bsp SN75176 
für die 5V Seite.

Da leider die 3.3V Typen sehr rar und teuer sind würde ich wieder über 
ein Logikgatter die Anpassung an die 3.3 GPIO erledigen. Somit ist auch 
auf der 3.3V der SN75176 verwendbar.

Vorteil:

-symmetrisch
-störsicher
-billig
- funktioniert bis 1Mbit/s sicher bis über 100m bei 110 OHM Kabel und 
Abschlusswiderstand
- fachlich korrekte Lösung

Wie gesagt Abschlusswiderstand am Empfänger nicht vergessen bei RS485 
auf Anschaltung des Treibers beachten da sich die Busrichtung dreht.


Alternativ kann man auch über CAN Bus oder so nachdenken.

Prinzipiell kann ja auch auf beiden Seiten einen RS232 Linedriver 
einsetzen nur die Kondensatoren für die Ladungspumpen benötigen sehr 
viel Platz.

: Bearbeitet durch User
von Peter (Gast)


Lesenswert?

Da die Leitungen immer nur in eine Richtung gehen kann man das auch 
einfach mit je einem Transistor machen.
Musst nur aufpassen das Du nicht invertierst.

Peter

von Stefan F. (Gast)


Lesenswert?

@Peter

Die Ausgänge von AVR Mikrocontrollern haben bei 5V Spannungsversorgung 
auch 5V Pegel. Es spielt keine Rolle, ob das ein Hardware-UART Pin ist, 
oder durch Software gesteuerter Pin.

Wenn du einen 5V Ausgang an einen 3,3V Eingang anschließt, fließt ein 
überhöhter Strom durch die ESD Schutzdiode des Eingangs in Richtung 3,3V 
VCC. Dadurch kann die Diode kaputt gehen, wodurch wiederum der Eingang 
nicht mehr vor ESD geschützt ist.

Außerdem kann sich die 3,3V Versorgungsspannung auf unzulässige Werte 
erhöhen und dadurch weitere Bauteile beschädigen.

> Au mein Gott.... mess doch einmal die Spannung.

Danke, so werde ich nur selten genannt :-)

Wenn du am Ausgang nicht mehr als 3,3V gemessen hast, dann kann das nur 
drei Gründe haben:

a) Deine angebliche 5V Schaltung wird gar nicht mit 5V Betrieben, 
sondern mit 3,3V.

b) Dein Ausgang wurde so hoch überlastet, dass er nur noch 3,3V 
erreicht. Mach das mit mehr als 5 Ausgängen gleichzeitig, und dein µC 
wird kaputt gehen.

c) Dein Ausgang ist gar kein Ausgang, sondern ein Eingang mit Pull-Up 
Widerstand. Dann wird er aber in den meisten Fällen nicht korrekt 
funktionieren.

von Marco H. (damarco)


Lesenswert?

@ Peter schon verstanden wie Schnittstellentreiber funktionieren und 
wozu sie da sind?  Auch den Unterschied zwischen symmetrisch und 
unsymmetrisch?

von Max (Gast)


Lesenswert?

>Wenn du einen 5V Ausgang an einen 3,3V Eingang anschließt, fließt ein
>überhöhter Strom durch die ESD Schutzdiode des Eingangs in Richtung 3,3V
>VCC. Dadurch kann die Diode kaputt gehen, wodurch wiederum der Eingang
>nicht mehr vor ESD geschützt ist.

deswegen soll ja kurz vor dem Empfänger-AVR (läuft mit 3,3V) ein 1k 
Widerstand eingepflegt werden...oder ist das jetzt doch nichts für 3m- 
Leitungslänge und 19200kps?

von Frank K. (fchk)


Lesenswert?

Ich würde auf jeden Fall einen Treiberbaustein in die seriellen 
Leitungen einschleifen. Wenn irgendwas passiert, ist es einfacher, einen 
5-Pinner zu wechseln als ein TQFP32 oder 64 oder so. Treiberbausteine 
haben auch gröbere Silizium-STrukturen und sind daher auch robuster als 
ein Mikrocontroller.

fchk

von Stefan F. (Gast)


Lesenswert?

> oder ist das jetzt doch nichts für 3m- Leitungslänge und 19200kps?

Das kann ich nicht einschätzen, habe ich noch nie probiert. Einfach 
Widerstände als Spannungsteiler habe ich nur bei sehr kurzen 
Verbindungen innerhalb eines Gerätes probiert.

Die parallelen Drucker Interface vergangener Jahre hatten R/C Filter 
drin, zum Beispiel aus 100 Ohm und 220pF. Ich schätze, dass die 
Hersteller gerne auch 1k Ohm verwendet hätten, wenn das funktioniert 
hätte.

Hast du ein Oszilloskop? Wenn ja, wäre das doch eigentlich der Moment, 
es mal auszuprobieren. Mit dem konkreten Kabel, das verwendet werden 
soll.

von Max (Gast)


Lesenswert?

Das ist alles noch in der Planung;) Daher ist noch nichts 
vorhanden...also wohl doch den sicheren Weg über Treiberbaustein...

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.