Forum: Mikrocontroller und Digitale Elektronik Zwei Chips per UART verbinden + USB Adapter


von T.M .. (max)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe einen Atmega328 und ein ESP8266 Modul über Uart verbunden, um 
Daten auszutauschen. Nun werden diese Module auch über TX/RX jeweils 
programmiert.
Der Atmega läuft mit 5V, der ESP mit 3.3. Beides über Pegelwandler 
verbunden.
Auf dem Steckbrett funktioniert das programmieren von AVR und ESP 
soweit. Verwendet werden zwei USB-UART Adapter(CP2102).

Auf der eigentlichen Platine soll das ein Dual USB-Uart Chip erledigen.
Zum programmieren des Atmegas und ESP müssen die Jumper gezogen werden. 
Was passiert aber, wenn der Jumper gesteckt ist und programmiert wird? 
Dann liegt der USB TX direkt auf dem AVR TX.
So gabs kein Problem (außer das nichts programmiert werden kann) aber 
das ganze soll auch länger funktionieren.
Kann ich das so machen über die Widerstände, oder müsste etwas geändert 
werden? Eventuell Dioden an TX?

von Stefan F. (Gast)


Lesenswert?

> Was passiert aber, wenn der Jumper gesteckt ist und programmiert wird?
> Dann liegt der USB TX direkt auf dem AVR TX.

R40 und R41 begrenzen den Strom.

> Kann ich das so machen über die Widerstände

Ich denke schon. Deine Pegelwandler kommen mir allerdings unnötig 
aufwändig vor.

1) Dem Rx Eingang des AVR genügen die 3,3V als High Pegel. Dieser 
Wandler ist total überflüssig.

2) Die 5V vom Tx Ausgang des AVR kannst du mit einem simplen 
Spannungsteiler (1k Ohm und 2,2k Ohm) auf 3,3V runter bringen. Bei 
115200 Baud klappt das absolut zuverlässig. Höhere Baudraten habe ich 
nicht versucht.

von Max (Gast)


Lesenswert?

Hallo, ok super, dann schmeisse ich zumindest den einen Wandler schon 
einmal raus. und wenn die Widerstände reichen ist das auch gut vor dem 
AVR.  Das wären bei 5V und 470 Ohm um die 10mA

von T.M .. (max)


Lesenswert?

Hat die Lösung mit dem Spannungsteiler denn auch Nachteile bzw die mit 
dem FET Vorteile?
Die Geschwindigkeit sind 9600bd und beim Programmieren etwas höher, 
wobei ich jetzt gar nicht weiss wie hoch die mit der Arduino IDE ist.

wichtig ist mir nur, dass das zuverlässig läuft, also die Kommunikation 
zwischen ESP und AVR. Wenn ich den FET einsparen kann würde ich das 
natürlich tun, wenn sich sonst keine Nachteile ergeben.

von Stefan F. (Gast)


Lesenswert?

> Das wären bei 5V und 470 Ohm um die 10mA

Was habe ich geschrieben? 1k Ohm und 2,2k Ohm. Da fließen bei 5V pi mal 
Daumen 1,5mA.

von T.M .. (max)


Lesenswert?

Das bezog sich auf den Widerstand mit FET

von Stefan F. (Gast)


Lesenswert?

Die Widerstände bilden zusammen mit den parasitären Kondensatoren der 
Leitungen und IC's einen Tiefpass, der die Signalflanken abflacht. Wenn 
dieser Effekt zu stark wird, funktioniert es nicht mehr.

Der Effekt tritt bei der FET Schaltung ebenfalls auf, allerdings sehr 
unsymmetrisch. Der Wechseln von High nach Low geht schneller, der 
Wechsel von Low nach High aber viel langsamer. Um dies zu verbessern, 
müsste man die Pull-Up Widerstände verringern, dann erhöht sich 
allerdings die Spannung des LOW Pegels, die hinter dem FET ohnehin schon 
Grenzwertig ist.

Berücksichtigt man die Signalfrequenz (ich nehme an, dass du unter 1M 
Baud bleibst) bring die FET Schaltung mehr Nachteile als Vorteile. Ich 
würde sie nur verwenden, wenn eine bidirektionale Übertragung notwendig 
ist. Das ist bei Dir nicht der Fall.

Wenn du einen annähernd idealen Pegelwandler haben willst, dann schau 
Dir die 74LVCxx Logikgatter an. Die können zwischen zwei Spannungspegeln 
übersetzen, liefern Top saubere Flanken und Pegel. Die gibt es auch als 
Einzelgatter, dann sind sie sogar noch kompakter als deine FET 
Schaltungen.

von T.M .. (max)


Lesenswert?

Hallo,

das klingt interessant! Ja Baud sind nur 9600. Ich schau mal ob ich da 
fündig werde unter der Bezeichnung 74LVCxx.

von T.M .. (max)


Lesenswert?

Hallo,

so ich habe mich versucht einzulesen und dabei folgende Chips zur 
Wandlung 5V -> 3.3V gefunden

 https://www.mouser.com/ProjectManager/ProjectDetail.aspx?AccessID=ed90d86c9e

Habe sie mal hier zusammengefasst um besser vergleichen zu können.
Welchen sollte ich denn hier nun nehmen?

: Bearbeitet durch User
von T.M .. (max)


Lesenswert?

OK, mir wurde nun der http://www.ti.com/lit/ds/symlink/sn74lvc1g34.pdf 
empfohlen

Das war eine sehr gute Idee da so ein Gatter zu nehmen. Ist wirklich 
kompakter

: Bearbeitet durch User
von T.M .. (max)


Angehängte Dateien:

Lesenswert?

Hallo,

noch eine andere Frage, ich habe momentan die TX (bei R20) und RX 
Leitung auf vorder und die andere auf der Rückseite der PLatine. 
Allerdings habe ich die etwas versetzt angeordnet, da ich dachte wegen 
übersprechen etc. Da kenne ich mich leider nicht aus,ob das überhaupt 
der Fall ist. Übertragen wird auf den Leitungen mit 9600bd. Kann ich die 
Leiterbahnen direkt übereinander anordnen oder spielt das doch eine 
Rolle. Ist das denn bei I2C Leitungen ähnlich?Wie nah kann ich die 
zusammen bringen?

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Bei unter 1Mhz brauchst du dir um solche Details keine Gedanken machen.

von Max (Gast)


Lesenswert?

Ok, danke. Das macht die SAche noch einmal einfacher. Hatte bisher 
TX/RX, Uart und die PWM ausgänge sehr großzügig geroutet was das ganze 
aber sher kompliziert macht

von HildeK (Gast)


Lesenswert?

T.M .. schrieb:
> Hat die Lösung mit dem Spannungsteiler denn auch Nachteile

Ja, damit hatte ich mal ein Problem.
Wenn die TX-Seite z.B. einen Reset erhält, dann sieht die ggf. noch 
aktive Rx-Seite einen Übergang nach LOW und interpretiert dies als 
Startbit.
Daher ist es besser, nur einen Serienwiderstand zu nehmen und die 
eingebauten Schutzdioden die Begrenzung vornimmt (natürlich über die 
Spezifikationen prüfen).

von T.M .. (max)


Lesenswert?

Hallo,
noch einmal eine Frage, warum sich die Schaltung direkt zusammen 
geschlossen so merkwürdig verhält:
USB-Widerstand-AVR
USB-Widerstand-ESP

und die beiden dann AVR <-> ESP direkt verbunden (ohne Widerstände) über 
Levelshifter

Wenn beide UART Adapter verbunden sind und die beiden Chips auch 
miteinander funktioniert das zunächst.
Manchmal kommt es nun vor,
1) dass die Richtung ESP TX -> AVR RX gar nicht mehr funktioniert oder
2) nur noch funktioniert nachdem man die USB-Adapter gezogen hat.

Beides ist irgendwie irreversibel und funktioniert wieder, wenn man den 
AVR getauscht hat. Gleichzeitig gibt der AVR dennoch immer korrekt über 
UART den Text aus.

Ich habe nun eine Schaltung gefunden, die auch diese beiden Chips 
verbindet:

https://robotdyn.com/upload/PHOTO/0G-00005215==UNO+WiFi-R3-AT328-ESP8266-CH340G/DOCS/Schematic==0G-00005215==UNO+WiFi-R3-AT328-ESP8266-CH340G.pdf

https://robotdyn.com/catalog/boards/uno_wifi_r3_atmega328p_esp8266_usb_ttl_ch340g_micro_usb/

Was ich hier nicht verstehe ist was Diode D4 macht. Wie kann hier in 
dieser Position TX funktionieren

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.