Hallo zusammen, ich möchte zwei Mikrocontroller über Serial (UART) miteinander kommunizieren lassen. Da Diese unterschiedliche Spannungen (5V und 3.3V) verwenden, möchte ich einen Levelshifter wie diesen: http://www.adafruit.com/product/757 einsetzen. Ich wurde durch folgende Schaltung, welche bei SparkFun in einem Tutorial gezeigt wird nun etwas verwirrt. Und zwar wird dort zusätzlich der 3,3 V Ausgang vom Arduino auf den LV Eingang des LevelShifters gelegt. Welchen Hintergrund hat dies? https://dlnmh9ip6v2uc.cloudfront.net/assets/6/3/6/e/d/5266e578757b7fdf4c8b4570.png Vielen Dank und viele Grüße Stefan
Stefan schrieb: > Da Diese unterschiedliche Spannungen (5V und 3.3V) verwenden, möchte ich > einen Levelshifter wie diesen: http://www.adafruit.com/product/757 > einsetzen. Zitat aus der dort verlinkten Appnote:
1 | AN10441 |
2 | Level shifting techniques in I2C-bus design |
Ein I2C Bus ist aber kein RS232-Bus. > Und zwar wird dort zusätzlich der 3,3 V Ausgang vom Arduino auf den LV > Eingang des LevelShifters gelegt. Welchen Hintergrund hat dies Naja, LV wird wohl Low Voltage heißen und HV High Voltage. In der velinkten AppNote AN10441 von NXP ist sogar die Funktion erklärt... Aber wie gesagt: für eine RS232-Verbindung brauchst du keinen bidirektionalen Pegelwandler. Von 5V-Ausgang nahc 3V3 Eingang reicht ein Spannungsteiler, und den 3V3-Ausgang kannst du direkt an den 5V-eingang anschließen. Zwei Bauteile und fertig... Siehe auch Pegelwandler
:
Bearbeitet durch Moderator
Lothar Miller schrieb: > Ein I2C Bus ist aber kein RS232-Bus. ..und RS232 ist kein Bus Es stimmt, ein Spannungsteiler reicht vollkommen aus für die UART Beschaltung.
Stefan schrieb: > Ich wurde durch folgende Schaltung, welche bei SparkFun in einem > Tutorial gezeigt wird nun etwas verwirrt. Und zwar wird dort zusätzlich > der 3,3 V Ausgang vom Arduino auf den LV Eingang des LevelShifters > gelegt. Welchen Hintergrund hat dies? > > Sowohl LevelShifter, als auch die 3,3V Schaltung brauchen Strom/Suppe/Futter, und der Arduino kann es liefern. Lothar Miller schrieb: > Von 5V-Ausgang nahc 3V3 Eingang reicht > ein Spannungsteiler, und den 3V3-Ausgang kannst du direkt an den > 5V-eingang anschließen. Zwei Bauteile und fertig... Wenn die Baudrate nicht zu hoch ist und die Kabel nicht zu lang, dann geht das.
Danke für die Eure schnellen Antworten. An Spannungsteiler hat ich auch gedacht aber durch Recherchen wurde öfters erwähnt, dass wie von Ulrich erwähnt dann die Geschwindigkeit vielleicht leidet... Da ich keine Erfahrung habe wollte ich halt sicher gehen. Aber wenn Ihr sagt, dass passt. Es ist mir halt wichtig, dass das Ganze dann zuverlässig und nicht zu träge läuft. Gruß Stefan
Ulrich F. schrieb: > Wenn die Baudrate nicht zu hoch ist und die Kabel nicht zu lang, dann > geht das. Ja, aber wenn die Kabel länger werden, dann wäre es auch sinnvoll, "übliche" Pegel und Pegelwandler zu verwenden... Bülent C. schrieb: > ..und RS232 ist kein Bus Man kann auch Löcher in Pfennige bohren... ;-) BTW: PCIe wird auch erstaunlich oft als Bus bezeichnet... Stefan schrieb: > An Spannungsteiler hat ich auch gedacht aber durch Recherchen wurde > öfters erwähnt, dass wie von Ulrich erwähnt dann die Geschwindigkeit > vielleicht leidet... Welche Geschwindigkeit brauchst oder willst du denn überhaupt? > Es ist mir halt wichtig, dass das Ganze dann zuverlässig und nicht zu > träge läuft. Bitte Zahlen! Definiere "träge". Und welches "Ganze" denn?
:
Bearbeitet durch Moderator
Lothar Miller schrieb: > Bülent C. schrieb: >> ..und RS232 ist kein Bus > Man kann auch Löcher in Pfennige bohren... ;-) > BTW: PCIe wird auch erstaunlich oft als Bus bezeichnet... > Und USB auch ;)
Ulrich F. schrieb: > Sowohl LevelShifter, als auch die 3,3V Schaltung brauchen > Strom/Suppe/Futter, und der Arduino kann es liefern. Aber die 3,3 V Schaltung rechts hat dort einen Ausgang....
Hans-Georg Lehnard schrieb: > Lothar Miller schrieb: >> Bülent C. schrieb: >>> ..und RS232 ist kein Bus >> Man kann auch Löcher in Pfennige bohren... ;-) >> BTW: PCIe wird auch erstaunlich oft als Bus bezeichnet... >> > > Und USB auch ;) USB ist ein Bus. PCI ist ein Bus. PCIe ist KEIN Bus. Ist doch ganz einfach gelle?
TX 3V an RX 5V kannst du problemlos direkt anschließen. TX 5V an RX 3V würde ich einen kleinen Pegelwandler bauen, wenn Du hohe Geschwindigkeiten fahren willst. Im Grunde genommen reicht eigentlich nur ein BSS138 und zwei 10k Widerstände (wobei Du auf der Eingangsseite den einen widerstand weglassen könntest für Deine UART Anwendung) vollkommen aus.
Bülent C. schrieb: > TX 3V an RX 5V kannst du problemlos direkt anschließen. > TX 5V an RX 3V würde ich einen kleinen Pegelwandler bauen, wenn Du hohe > Geschwindigkeiten fahren willst. Im Grunde genommen reicht eigentlich > nur ein BSS138 und zwei 10k Widerstände (wobei Du auf der Eingangsseite > den einen widerstand weglassen könntest für Deine UART Anwendung) > vollkommen aus. Alles klar. Dann werde ich es mal mit dem BSS138 versuchen. Vielen Dank an Alle!
Cyblord ---- schrieb: > USB ist ein Bus. Ist er das? Mit welcher Topologie? Punkt-zu-Punkt, wie der PCIe? Und PCIe: https://www.google.de/search?q="pci+express+bus" Sogar die pcisig verstolpert sich da ab&an. Z.B. gleich da: https://www.pcisig.com/specifications/pciexpress/technical_library/pciexpress_whitepaper.pdf Stefan schrieb: > Alles klar. Dann werde ich es mal mit dem BSS138 versuchen. Du solltest wenigstens versuchen, dir selbst die gestellten Frage zur Baudrate und Leitungslänge beantworten. Wir sind es schon gewohnt, ohne oder mit unzureichenden Informationen zu arbeiten...
:
Bearbeitet durch Moderator
Cyblord ---- schrieb: > Hans-Georg Lehnard schrieb: >> Lothar Miller schrieb: >>> Bülent C. schrieb: >>>> ..und RS232 ist kein Bus >>> Man kann auch Löcher in Pfennige bohren... ;-) >>> BTW: PCIe wird auch erstaunlich oft als Bus bezeichnet... >>> >> >> Und USB auch ;) > > USB ist ein Bus. > einfach gelle? Für den Host Controller mag das ja irgendwie zutreffen aber für ein Device nicht ...
Stefan schrieb: > Da Diese unterschiedliche Spannungen (5V und 3.3V) > verwenden, möchte ich einen Levelshifter wie diesen: > http://www.adafruit.com/product/757 einsetzen. sowas gibts auch hier: http://www.watterott.com/de/Level-Shifter Pegelwandler Baustein mit 4 Ein- / Ausgängen. Mit diesem Wandler kann man die Pegel von zwei unterschiedlichen Signalebenen mit einander verbinden. z.B. 5V System mit 3,3V. Der Wandler arbeitet aber auch mit 1,8V und/oder 2,8V Pegeln und kann für I2C verwendet werden.
Es ist die Frage wie kritisch ist die Verbindung ???? Wie weit sind die beiden Controller auseinander bzw. wie lang ist die Leitung. Wie groß ist das Störfeld in der Nähe der Prozessoren ?? Alles unter 10cm.. von 5V auf 3V3 --> einfach Spannungsteiler 1K zu 1K8 ---- Und umgekehrt die 3V3 übersteigen die 2V2 Schwellspannung des 5V Controller . Das sollte für den 5 V Controller als High reichen. Quick and dirty ... 2 Widerstände....... Gruß Thomas
Thomas DG5MPQ schrieb: > Es ist die Frage wie kritisch ist die Verbindung ???? > Wie weit sind die beiden Controller auseinander bzw. wie lang ist die > Leitung. Wie groß ist das Störfeld in der Nähe der Prozessoren ?? > > Alles unter 10cm.. von 5V auf 3V3 --> einfach Spannungsteiler 1K zu > 1K8 > > ---- > Und umgekehrt die 3V3 übersteigen die 2V2 Schwellspannung des 5V > Controller . Das sollte für den 5 V Controller als High reichen. > > Quick and dirty ... 2 Widerstände....... > > Gruß Thomas Hi Thomas, also die Verbindung sollte so stabil wie möglich laufen. Die beiden Controller werden direkt nebeneinander liegen. Gruß Stefan
Stefan schrieb: > also die Verbindung sollte so stabil wie möglich laufen. Tolle Aussage. Meinst du irgendjemand will dass seine Verbindung instabil läuft? Warum nimmst du dann nicht einfach einen PASSENDEN Levelshifter (mit 2x unidirektional, gegenläufig), gibts zuhauf und schon bist fertig? Die Spannungsteilerlösung ist immer irgendwie Pfusch.
:
Bearbeitet durch User
Guido Lehwalder schrieb: > Stefan schrieb: >> Da Diese unterschiedliche Spannungen (5V und 3.3V) >> verwenden, möchte ich einen Levelshifter wie diesen: >> http://www.adafruit.com/product/757 einsetzen. > > sowas gibts auch hier: > http://www.watterott.com/de/Level-Shifter > Pegelwandler Baustein mit 4 Ein- / Ausgängen. > > Mit diesem Wandler kann man die Pegel von zwei unterschiedlichen > Signalebenen mit einander verbinden. z.B. 5V System mit 3,3V. > > Der Wandler arbeitet aber auch mit 1,8V und/oder 2,8V Pegeln > und kann für I2C verwendet werden. Hallo Guido, danke für den Hinweis. Die scheinen ja auch einen BSS138 zu nutzen. Der Vorteil wäre, dass ich alles auf einer Platine habe und fertig. 2 EUR kann ich verschmerzen. Muss mal schauen ob ich sowas bei Conrad finde. Denn den habe ich in der Nähe und kann vorbeifahren. Gruß Stefan
Cyblord ---- schrieb: > Stefan schrieb: >> also die Verbindung sollte so stabil wie möglich laufen. > > Tolle Aussage. Meinst du irgendjemand will dass seine Verbindung > instabil läuft? > > Warum nimmst du dann nicht einfach einen PASSENDEN Levelshifter (mit 2x > unidirektional, gegenläufig), gibts zuhauf und schon bist fertig? Die > Spannungsteilerlösung ist immer irgendwie Pfusch. Das habe ich erwähnt weil Thomas fragte, wie kritisch die Verbindung ist. Und es wäre halt schade wenn das ganze nicht richtig rund läuft.
Stefan schrieb: > Das habe ich erwähnt weil Thomas fragte, wie kritisch die Verbindung > ist. Und du hast ihm keine Antwort gegeben... Wir hören immer nur wie Stefan schrieb: > also die Verbindung sollte so stabil wie möglich laufen. Aber es wird nicht der Hauch eines Wortes über die Anwendung verloren: nötige Baudrate? maximale Leitungslänge? > also die Verbindung sollte so stabil wie möglich laufen. Dann musst du eben maximalen Aufwand treiben. Und am besten noch glavanisch trennen. Damit läuft es dann sicher "so stabil wie möglich", wenn das die einzige Forderung ist... Cyblord ---- schrieb: > Die Spannungsteilerlösung ist immer irgendwie Pfusch. Nun, sie wandelt die Pegel definiert von 5V auf 3,3V. Tadellos. Und jetzt muss einfach noch die Frage nach der nötigen Geschwindigkeit geklärt werden...
Lothar Miller schrieb: > > Cyblord ---- schrieb: >> Die Spannungsteilerlösung ist immer irgendwie Pfusch. > Nun, sie wandelt die Pegel definiert von 5V auf 3,3V. Tadellos. WENN der Eingang hochohmig ist. Wenn da bisserl Last drauf kommt (z.B. PullDown irgendwo) dann nicht mehr.
Cyblord ---- schrieb: > WENN der Eingang hochohmig ist. Wenn da bisserl Last drauf kommt (z.B. > PullDown irgendwo) dann nicht mehr. Ja, aber auch das wird mangels Auskunft nicht geklärt werden. Und wo sollte denn die "Last" herkommen, wenn zwei uC Ausgang->Eingang miteinander verbunden werden?
Warum eientlich immer diese Doktorarbeit's ähnlichen Auswuchungen der Lösungsfindungen. Spannungsteiler ja, machbar..aber unter bestimmten Umständen instabil Ein MOSFET und ein Widerstand auf 3V Seite hat nur einen Lötpunkt mehr auf der Platine, und eliminiert die Nachteile des Spannungsteilers.
> Cyblord ---- schrieb: >> Die Spannungsteilerlösung ist immer irgendwie Pfusch. > Nun, sie wandelt die Pegel definiert von 5V auf 3,3V. Tadellos. Und > jetzt muss einfach noch die Frage nach der nötigen Geschwindigkeit > geklärt werden... Wenn ich mich mit Baudraten auskennen würde, hätte ich schon eine genannt. Ich kann euch meinen Anwendungsfall beschreiben. Ich habe einen electric imp und einen Arduino pro mini. Aus diesen Beiden möchte ich mir quasi einen "Smart Home Controller bauen". Also hänge ich an den Arduino mini noch ein RF Modul, über welches ich dann andere Controller ansteuere.
Stefan schrieb: > ein RF Modul Welches denn? Sag doch einfach Alles, oder wenigstens möglichst Viel...
:
Bearbeitet durch Moderator
Stefan schrieb: >> Cyblord ---- schrieb: >>> Die Spannungsteilerlösung ist immer irgendwie Pfusch. >> Nun, sie wandelt die Pegel definiert von 5V auf 3,3V. Tadellos. Und >> jetzt muss einfach noch die Frage nach der nötigen Geschwindigkeit >> geklärt werden... > > Wenn ich mich mit Baudraten auskennen würde, hätte ich schon eine > genannt. Ich kann euch meinen Anwendungsfall beschreiben. Ich habe einen > electric imp und einen Arduino pro mini. Aus diesen Beiden möchte ich > mir quasi einen "Smart Home Controller bauen". Also hänge ich an den > Arduino mini noch ein RF Modul, über welches ich dann andere Controller > ansteuere. Und es geht mir aktuell über die Verbindung von electric imp 3,3V mit Arduino Pro Mini 5,5V
> > Und es geht mir aktuell über die Verbindung von electric imp 3,3V mit > Arduino Pro Mini 5,5V Ich meinte 5V
Stefan schrieb: > electric imp https://electricimp.com/docs/api/hardware/uart/configure/ Also gut: für die dort möglichen Baudraten (2400 Baud...234kBaud...7,5MBaud) würde ich aber gleich einen richtigen Pegelwandler einsetzen, nicht dieses quasi-passive Mosfet-Ding...
:
Bearbeitet durch Moderator
Lothar Miller schrieb: > Also gut: für die dort möglichen Baudraten (2400 > Baud...234kBaud...7,5MBaud) würde ich aber gleich einen richtigen > Pegelwandler einsetzen, nicht dieses quasi-passive Mosfet-Ding... Also mit dem Mosfet-Ding :-) kann man ohne weiteres bis 500kbit/s fahren (Baud nicht mit Übertragungsgeschwindkeit verwechseln!!) und das dürfte dem TO vollkommen ausreichen denke ich.
Bülent C. schrieb: > Lothar Miller schrieb: >> Also gut: für die dort möglichen Baudraten (2400 >> Baud...234kBaud...7,5MBaud) würde ich aber gleich einen richtigen >> Pegelwandler einsetzen, nicht dieses quasi-passive Mosfet-Ding... > > Also mit dem Mosfet-Ding :-) kann man ohne weiteres bis 500kbit/s fahren > (Baud nicht mit Übertragungsgeschwindkeit verwechseln!!) und das dürfte > dem TO vollkommen ausreichen denke ich. davon abgesehen benutzt dieser Wandler: http://www.watterott.com/de/Level-Shifter ja auch den BSS138. Also wie gesagt mir ist es lieber ne fertige Platine zu haben. Deswegen hole ich mir so ein Teil wie oben und dann sollte es gut sein oder?
Bülent C. schrieb: > Also mit dem Mosfet-Ding :-) kann man ohne weiteres bis 500kbit/s fahren In der Richtung 5V->3V3 glaube ich das sogar. In der Richtung 3V3->5V wird es dann spannend, weil da alles ab ca. 3V nur vom Pullup geregelt wird... Ich würde nach wie vor einen richtigen Pegelwandler vorschlagen: http://www.ti.com/product/sn74lvc1t45 Stefan schrieb: > hole ich mir so ein Teil wie oben und dann sollte es gut sein oder? Ja, mach das. Für die nötigen und möglichen Baudraten reicht das sicher...
:
Bearbeitet durch Moderator
Aber beim MOSFET nicht vergessen, dass Du das Signal invertierst. Wenn es noch einfacher sein soll, nimm einen 20k-Längswiderstand zur Strombegrenzung und benutze die interne Clamp-Diode im 3,3V-Eingang. Die allermeisten ICs können das problemlos ab. Schau im Datenblatt nach Injection Current. Das empfiehlt sich aber nur, wenn keine benutzen AD-Pins in der Nachbarschaft liegen.
Statler schrieb: > Aber beim MOSFET nicht vergessen, dass Du das Signal invertierst. Sieh dir diese Schaltung nochmal genau an. In der AppNote AN10441 von NXP ist sie erklärt. Sie ist genialer als du denkst...
:
Bearbeitet durch Moderator
Stefan schrieb: > Ulrich F. schrieb: >> Sowohl LevelShifter, als auch die 3,3V Schaltung brauchen >> Strom/Suppe/Futter, und der Arduino kann es liefern. > > Aber die 3,3 V Schaltung rechts hat dort einen Ausgang.... Ich sehe aber keine Stromversorgung der rechten Schaltung, außer eben über den Arduino.
Lothar Miller schrieb: > Bülent C. schrieb: >> Also mit dem Mosfet-Ding :-) kann man ohne weiteres bis 500kbit/s fahren > In der Richtung 5V->3V3 glaube ich das sogar. In der Richtung 3V3->5V > wird es dann spannend, weil da alles ab ca. 3V nur vom Pullup geregelt > wird... Bei UART braucht er keinen Pull-up auf der RX Seite und kann die TX 3V3 direkt an RX 5V direkt anschließen. Die 5V seite sollte den High Pegel schon erkennen können. Stefan schrieb: > ja auch den BSS138. Also wie gesagt mir ist es lieber > ne fertige Platine zu haben. Deswegen hole ich mir so ein > Teil wie oben und dann sollte es gut sein oder? Ja, kannst Du machen. Aber wie gesagt, eigentlich brauchst Du für Deine Anwendung nur einen BSS138 (oder vergleichbaren MOSFET) und einen Widerstand. Da liegst Du unter 10 Cent ;-)
:
Bearbeitet durch User
Lothar Miller schrieb: > Bülent C. schrieb: >> Also mit dem Mosfet-Ding :-) kann man ohne weiteres bis 500kbit/s fahren > In der Richtung 5V->3V3 glaube ich das sogar. In der Richtung 3V3->5V > wird es dann spannend, weil da alles ab ca. 3V nur vom Pullup geregelt > wird... Der SN74CBTD3861 ist auch nur so ein integriertes Mosfet-Ding und kann weit über 10 MHz. Anpassen von 5V PCI auf 3.3V PCI war eine der ersten Anwendungen für solche Levelshifter. Mit diskreten MOS-FET muss man etwas aufpassen. Gate auf 3.3V ist in der Tat problematisch, da zu früh gesperrt wird. Je nach Vgs muss dann entweder das Gate auf 5V (z.B. mit 2N7002) oder bei schnelleren FETS und niedrigeren Vgs mit Diode dazwischen. Weiter geht es in der Richtung 3.3 -> 5V nur wenn die 5V Seite mit TTL Schwellen arbeitet. Mit CMOS Schwellen ist es zu knapp. Das Schwellenproblem existiert auch bei einer rein passiven Variante.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.