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
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.
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
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.
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?
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.
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!
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.
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.
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
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)
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.
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.
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.
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
:-((
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.