Forum: Mikrocontroller und Digitale Elektronik Atmega328P @ 3,3 V - Tx Rx Kommunikation mit 5 V?


von Nick (Gast)


Lesenswert?

Hey,

ich habe hier für ein kleines Projekt einen nackten Atmega328P, welchen 
ich mit einem ISP-Programmer beschrieben habe. An dem µC hängen zwei 
Sensoren. Jetzt wollte ich die Sensoren über den seriellen Monitor der 
Arduino IDE debuggen, doch leider fehlt mir ein dedizierter 
USB-Seriell-Adapter. Daher plane ich den auf einem Arduino Uno Board, 
welches hier noch rumliegt, zu verwenden. Einziges "Problem": der 
Adapter des Uno arbeitet auf einem 5 V Level, da ich den einzelnen 328P 
aber mit 3,3 V @ 8 MHz (intern) betreibe, habe ich mich gefragt, ob das 
einfach so geht oder ich trotzdem einen Pegelshifter, Spannungsteiler, 
etc. für die Rx Leitung (vom nackten µC aus gesehen) bräuchte. 
Eigentlich dürften die 5 V dem µC mit den Sensoren ja nix machen, ist ja 
auch auf 5 V spezifiziert. Doch da er nur mit 3,3 V betrieben wird, bin 
ich mir etwas unsicher, ob es da nicht zu Fehlströmen wegen der 
unterschiedlichen Spannungsniveaus kommen kann!?

Leider konnte ich in der Doku dazu nix finden, mag auch an ihrem Umfang 
liegen :D

Danke für eure Hilfe!

LG Nick

von c-hater (Gast)


Lesenswert?

Nick schrieb:

> Eigentlich dürften die 5 V dem µC mit den Sensoren ja nix machen, ist ja
> auch auf 5 V spezifiziert. Doch da er nur mit 3,3 V betrieben wird, bin
> ich mir etwas unsicher, ob es da nicht zu Fehlströmen wegen der
> unterschiedlichen Spannungsniveaus kommen kann!?

Kommt es.

Abhilfe: Spannungsteiler. Oben 1k, unten 2.2k.

von fchk (Gast)


Lesenswert?

Solange nicht anderweitig ausdrücklich spezifiziert vertragen digitale 
ICs nur Eingangsspannungen zwischen GND und Vcc/Vdd (ihrer 
Versorgungsspannung). Ausnahmen sind z.B. die Reset-Pins von AVR und 
8-Bit PICs (da wird eine höhere Spannung als Aktivierungssignal für den 
Progrmmiermodus genutzt) und die Eingänge der 74LVC-Gatterserie, die 
immer max 5.5V abkönnen unabhängig von ihrer Versorgungsspannung.

Du willst einen Pegelwandler/Level Shifter haben. Universelle Baustele 
sind z.B. 74LVC1T45/2T45/8T245, die hoch und runter wandeln können.
Ansonsten : 3.3V->5.0V: 74(A)HCT-Gatter; 5V->3.3V: 74LVC-Gatter.

Spannungsteiler sind einfach, gehen aber nur von einer hohen auf eine 
geringere Spannung und gehen in ihrer Grundform nur für langsame 
Signale, weil die Eingangskapzität des Gatters nicht berücksichtigt 
wird.

fchk

von Ingo E. (ogni42)


Lesenswert?

Du musst nicht zwingend mit einem 74... los gehen. Falls Du die nicht 
zur Hand hast geht es auch mit zwei Mosfets (bei mir BS 170 mit 4k7 
Pullup):
https://www.nxp.com/docs/en/application-note/AN10441.pdf

Nutze ich für die Anbindung von 3v3 I2C Sensoren an 328P mit 5V. Habe 
ich mit 400kHz I2C laufen. Sollte also für 115kBd Seriell-USB auch 
funktionieren.

: Bearbeitet durch User
von Nick (Gast)


Angehängte Dateien:

Lesenswert?

Danke für eure Antworten, gut, dass ich vorher gefragt habe :D

Das Dokument mit den Mosfets werde ich mir mal durchlesen. Allerdings 
ist für mich am schnellsten und einfachsten der Spannungsteiler 
umsetzbar (wegen der verfügbaren Teile). Damit würde ich mal anfangen, 
falls es nicht funktioniert, wie oben von @fchk angedeutet, muss ich ein 
paar Bauteile besorgen. Aber für den ersten Versuch: Die angehängte 
Schaltung müsste doch so stimmen oder? ACHTUNG: Der Tx und Rx Pin der 
Uno Leiste läuft intern über kreuz zum eigentlichen USB-Seriell-Adapter. 
Daher ist hier Tx an Tx und Rx an Rx angeschlossen.

Für die Tx-Leitung muss ich ja eigentlich nichts machen, da die 3,3 V, 
welche vom 328P kommen, den Rx-Eingang des 16U2 als logisch high 
ansprechen müssten.

Kann ich das so mal testen?

von Helmut H. (helmuth)


Lesenswert?

Welcher Sketch läuft denn auf dem Uno? Nicht dass der auch auf RX und TX 
zugreift.

von Nick (Gast)


Lesenswert?

Keiner. Der 328P Chip auf dem Uno wird entfernt.

von MaWin (Gast)


Lesenswert?

Nick schrieb:
> ob das einfach so geht

Nein.

> oder ich trotzdem einen Pegelshifter

Ja.

Immerhin ist die serielle Kommunikation eher langsam, es tut ein 1k 
Vorwiderstand in der Leitung.
Die Schaltschwelle (des 5V Chips) wird von den 3.3V erreicht.

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

MaWin schrieb:
> Immerhin ist die serielle Kommunikation eher langsam, es tut ein 1k
> Vorwiderstand in der Leitung.

ich habs mit 470 Ohm und auf der 3,3V Seite mit BAT42 nach 3,3V als 
Ableitdioden gemacht!

von Mitleser (Gast)


Lesenswert?

Nick schrieb:
> Eigentlich dürften die 5 V dem µC mit den Sensoren ja nix machen, ist ja
> auch auf 5 V spezifiziert. Doch da er nur mit 3,3 V betrieben wird, bin
> ich mir etwas unsicher, ob es da nicht zu Fehlströmen wegen der
> unterschiedlichen Spannungsniveaus kommen kann!?

Tut es. Wenn dein Arduino Uno mit 5V arbeitet, kommen aus den Ausgängen 
5V raus.

> Leider konnte ich in der Doku dazu nix finden, mag auch an ihrem Umfang
> liegen :D

Welche Doku auch immer du beguckt hast, im Datenblatt des ATmega328P 
steht im Kapitel Electrical Characteristics gleich im ersten Abschnitt 
unter /Absolute Maximum Ratings/: "Voltage on any Pin except RESET
with respect to Ground .......-0.5V to VCC+0.5V". Wenn dein ATmega328P 
mit VCC=3.3V betrieben wird, hast du also ein Problem, wenn du da mit 5V 
auf einen Eingang gehst (-> Eingangsschutzdioden, Tip: Spannungsteiler). 
Umgekehrt wird es ein Ausgang deines ATmega328P bei 3.3V in der Praxis 
meist schaffen, einer 5V Logik ein H-Signal zu liefern. Das reduziert 
allerdings den Störabstand und kann z.B. bei höherer Temperatur unsicher 
sein, weil sich dann Schaltschwellen verschieben können. Sauber würde 
man die o.g. Pegelwandler dazwischen setzen.

von Mitleser (Gast)


Lesenswert?

Joachim B. schrieb:
> rs232.jpg

TxD und RxD sind unidirektional. Was sollen die Doppelpfeile bedeuten?

Wozu sollen R1 und D1 gut sein - Angstwiderstand/-diode, falls du den 
RX-Pin vom Mega8 (?) auf Ausgang schaltest. Na gut, wenn du dir bei der 
Programmierung so unsicher bist. Bei der ganzen Konstruktion musst du 
immer sicher stellen, dass der in die 3.3V eingespeiste Strom garantiert 
irgendwo abgenommen wird - sonst könntn die Dioden nichts ausrichten und 
deine 3.3V-Schaltung bekommt "von hinten" eine überhöhte Spannung.

von Georg M. (g_m)


Lesenswert?


von Joachim B. (jar)


Lesenswert?

Mitleser schrieb:
> Was sollen die Doppelpfeile bedeuten?

das mit dem R und Diode funktioniert egal in welche Richtung und ich war 
faul, also C&P und musste mich nicht festlegen und 2 Pfeile malen.

Zumal Rx und Tx immer eine Bedingung der Guckrichtung ist jeder sieht 
das anders!

Klar muss gekreuzt werden bei 2 Contoller Rx an Tx und Tx an Rx.

Mitleser schrieb:
> dass der in die 3.3V eingespeiste Strom garantiert
> irgendwo abgenommen wird - sonst könntn die Dioden nichts ausrichten und
> deine 3.3V-Schaltung bekommt "von hinten" eine überhöhte Spannung.

ich war sicher das ein PI o.ä. den Strom nimmt

: Bearbeitet durch User
von Wolfgang (Gast)


Lesenswert?

Joachim B. schrieb:
> Zumal Rx und Tx immer eine Bedingung der Guckrichtung ist jeder sieht
> das anders!

Bestimmt nicht. Wenn am Controller steht "Rx", dann ist das der Eingang 
und wenn dort steht "Tx", dann ist das der Ausgang.
Und Tx mit Tx zu verbinden, bringt die Welt i.A. nicht weiter (mal 
abgesehen von wired-or Konstruktionen)

von c-hater (Gast)


Lesenswert?

Nick schrieb:

> Damit würde ich mal anfangen,
> falls es nicht funktioniert, wie oben von @fchk angedeutet

Dann kannst du immer noch den oberen Widerstand mit einem Kondensator 
von einigen wenigen pF "überbrücken" und damit den Spannungsteiler 
"schneller" machen.

Aber bei den üblichen Bitraten bis 115.2kbps wird das auch ohne den 
Kondensator ziemlich sicher funktionieren.

von Nick (Gast)


Lesenswert?

Danke für eure vielen Tipps!

Ich habe es nun mit einem Spannungsteiler gemacht und es hat problemlos 
funktioniert :)

von Stefan F. (Gast)


Lesenswert?

Joachim B. schrieb:
> ich habs mit 470 Ohm und auf der 3,3V Seite mit BAT42 nach 3,3V als
> Ableitdioden gemacht!

Riskant. Wenn die Bauteile an der 3,3V Seite weniger Strom aufnehmen, 
als der Ableitstrom, erhöht sich die Versorgungsspannung auf mehr als 
3,3V.

von Joachim B. (jar)


Lesenswert?

Wolfgang schrieb:
> Wenn am Controller steht "Rx"

du hast es nicht verstanden, man schliesst ja nicht immer Controller 
miteinenander an, auch deswegen ist die FEMALE Buchse an AVR oder PI 
eben blöd, ich betrachte die wie ein Computer und da gehören halt MALE 
ran, damit geht ein klassisches Nullmodemkabel mit FEMALE.

Wolfgang schrieb:
> Und Tx mit Tx zu verbinden, bringt die Welt i.A. nicht weiter

Ich habe schon Geräte gesehen die einen PIN Tx nannten aber damit 
meinten an Tx zum Computer zu wollen, deswegen sind Namen Schall und 
Rauch.

Vom Gerät gesehen ja nicht verkehrt, aber es war doch nur der Geräte Rx 
Pin.
Du muss nicht immer widersprechen nur weil du mich nicht verstehst oder 
was ich für komische Geräte sah.

Die Datenrichtungen der verschiedenen Geräte sind nun mal verschieden.
DEE DTE DCE DÜE und nicht jeder benennt die Pins anständig.

von Dietrich L. (dietrichl)


Lesenswert?

Joachim B. schrieb:
> Die Datenrichtungen der verschiedenen Geräte sind nun mal verschieden.
> DEE DTE DCE DÜE und nicht jeder benennt die Pins anständig.

Da hast du recht!
Es gibt ja einen Standard (zumindest quasi-Standard). Wenn sich alle 
daran halten würden wäre die Welt so einfach. Es gäbe dann auch nur 2 
Kabel:
- Verlängerungskabel, eine Seite Männchen und andere Weibchen, 1:1 
verdrahtet
- Nullmodemkabel, beide Seiten Weibchen, Leitungen gekreuzt.
Nur richtig schwierig wird es, wenn neben Rx und Tx Steuerleitungen im 
Spiel sind, die die eine Seite benötigt, die andere aber nicht liefert 
:-((

von Günter R. (galileo14)


Lesenswert?

Ja, da habt ihr beiden, Joachim und Dietrich, vollkommen recht. Ich 
mache es bei all meinen Geräten mit RS232 immer so, daß am Gerät Male 
eingebaut wird. Dann wird, wie ihr geschrieben habt, immer ein 
gekreuztes Female-Female-Kabel genommen und die Verbindung klappt immer, 
auch zu PCs. Bedauerlich, daß viele Firmen oftmals Female-Steckverbinder 
einbauen, z.B. auch an den Pollin-AVR-Boards (sind ja leider vergriffen, 
hatte damals noch 2 Fertig-Boards zum Bausatzpreis ergattert). Habe 
einige davon, und die meisten habe ich - durch Durchtrennen von 
Leiterbahnen - auf Male umgebaut, bei den Fertigteilen gings leider 
nicht.
Das mit den Steuerleitungen ist so, wie geschrieben. Zum Glück braucht 
man sie fast nie.

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.