Forum: Mikrocontroller und Digitale Elektronik UART Pegelwandler (selfmade) richtig?


von Rene H. (ballibou)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe zwei Bluetoothmodule. Diese laufen mit 3,3V. Mein uC muss 
allerdings wegen diverser anderer Peripherie mit 5V betrieben werden. 
Daher muss ein Pegelwandler für UART her.

Ich dachte dabei ans selber erstellen. Klappt das so wie ich mir das 
gedacht habe (Anhang)?

Es handelt sich einmal um das BTM-222 und einmal um das BLK-MD-SPK-B.

Da ich das BLK-MD-SPK-B nur ab und an eventuell mal programmieren muss 
dachte ich mir das ich die Module einfach mittels "jumper" an die UART 
verbindung hängen kann.

Ich danke euch schonmal.

von indi (Gast)


Lesenswert?

>Klappt das so wie ich mir das
gedacht habe (Anhang)?
Nein.
Mach an die Basis aller Transistoren einen 1k Widerstand. Genauso 
nochmals je einen an die BC556 vom Kollektor nach Masse

von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

warum einfach wenn es auch kompliziert geht?

von Timmo H. (masterfx)


Lesenswert?

Ich würde einfach den rx vom btm direkt an den uC anschließen (alles 
>2,5V sollte eigentlich als high erkannt werden). An den tx einfach 
einen Spannungsteiler und gut is

von g457 (Gast)


Lesenswert?

Wenns der µC unterstützt: die 3V3-TX kannst direkt an den 5V-RX hängen 
(TTL regelt). In die andere Richtung tuts ein einfacher Spannungsteiler 
aus zwei Widerständen.

von (prx) A. K. (prx)


Lesenswert?

Feststellen, ob die 5V-Seite mit 3,3V high leben kann. Wen ja, dann ist 
eine Richtung schon fertig.

Für die andere Richtung tut es ein Spannungsteiler.

von Rene H. (ballibou)


Lesenswert?

Ist ein ATMega128A also der sollte ja 3,3V als High erkennen.

Und vom uC zum BTM222 ein Widerstand in die Leitung und ein weiterer 
nach dem Widerstand gegen GND!?

von (prx) A. K. (prx)


Lesenswert?

Rene H. schrieb:
> Ist ein ATMega128A also der sollte ja 3,3V als High erkennen.

Tut er.

> Und vom uC zum BTM222 ein Widerstand in die Leitung und ein weiterer
> nach dem Widerstand gegen GND!?

Ja. 2K2/4K7 beispielsweise.

von Rene H. (ballibou)


Lesenswert?

Ja cool das dass doch einfacher geht als gedacht :)

Dann änder ich das mal. Aber wie ich gezeichnet habe würde theoretisch 
auch klappen!?

Klappt es mit einem Spannungsteiler als mit i2c oder reicht es da 
vollkommen aus die Leitungen einfach auf 3V3 zu pullen und gut ist?

von (prx) A. K. (prx)


Lesenswert?

Joachim B. schrieb:
> warum einfach wenn es auch kompliziert geht?

Bei der Variante wär ich vorsichtig, wenn die 3,3V Seite einen 
stromsparenden Modus kennt. Weils dann passieren kann, dass sie darin 
fast 5V Betriebsspannung abkriegt, versorgt über Widerstand und Diode.

von (prx) A. K. (prx)


Lesenswert?

Rene H. schrieb:
> Aber wie ich gezeichnet habe würde theoretisch auch klappen!?

Nur zusammenklappen aka Kurzschluss. Da fehlen allerhand Widerstände.

> Klappt es mit einem Spannungsteiler als mit i2c oder reicht es da
> vollkommen aus die Leitungen einfach auf 3V3 zu pullen und gut ist?

Pullup auf 3,3V und fertig.

: Bearbeitet durch User
von Joachim B. (jar)


Angehängte Dateien:

Lesenswert?

Joachim B. schrieb:
> warum einfach wenn es auch kompliziert geht?

von Bülent C. (mirki)


Lesenswert?

Hallo, viel zu umständlich.. Wie schon die Vorredner es geschrieben 
haben, wird dein Controller die high Pegel aus der 3V3 Seite als high 
erkennen.
Für 5V ausgehend 3V3 eingehend nimmst Du einfach einen einen schnellen 
Mosfet. Spannungsteiler sind nicht so toll wenn Du hohe 
Übertragungsraten hast.

Oder noch besser, wenn es mit der anderen Peripherie passt und dein 
Controller es unterstützt, versorge ihn doch mit 3V3. Dann brauchst du 
nichts mehr wandeln.

von Joachim B. (jar)


Lesenswert?

A. K. schrieb:
> Bei der Variante wär ich vorsichtig, wenn die 3,3V Seite einen
> stromsparenden Modus kennt.

OK, ich betreibe das am Atmel zu PI und vom Atmel zum ESP8266 ohne 
Probleme

von (prx) A. K. (prx)


Lesenswert?

Bülent C. schrieb:
> Spannungsteiler sind nicht so toll wenn Du hohe
> Übertragungsraten hast.

Obige Dimensionierung 2K2/4K7 verbindet problemlos einen 5V ATtiny841 
mit einem 3,3V Raspberry Pi bei 115200 bps über 20cm. Viel schneller 
wird er hier vmtl. auch nicht arbeiten.

Im Prinzip hast du recht, bei 8 MHz SPI könnte das ein Thema sein, oder 
bei meterlangem Kabel. Aber nicht bei UART mit dafür normalen Bitraten 
auf kurze Distanz.

: Bearbeitet durch User
von Bülent C. (mirki)


Lesenswert?

A. K. schrieb:
> Bülent C. schrieb:
>> Spannungsteiler sind nicht so toll wenn Du hohe
>> Übertragungsraten hast.
>
> Obige Dimensionierung 2K2/4K7 verbindet problemlos einen 5V ATtiny841
> mit einem 3,3V Raspberry Pi bei 115200 bps. Viel schneller wird er hier
> vmtl. auch nicht arbeiten.
>
> Im Prinzip hast du recht, bei 8 MHz SPI könnte das ein Thema sein. Aber
> nicht bei UART mit dafür normalen Bitraten.

Ein weiterer Aspekt ist der erhöhte Stromverbrauch. Da bratet er 
unnötig, um nur einen Highpegel zu zerteilen.

Wenn ich mich nicht irre, wird die maximale Übertragungsrate durch das 
Tiefpassverhalten des Spannungteilers in Verbindung mit dem I/O Port 
begrenzt.

von Bülent C. (mirki)


Lesenswert?

Rene H. schrieb:
> allerdings wegen diverser anderer Peripherie mit 5V betrieben werden.
> Daher muss ein Pegelwandler für UART her.

Dann fällt die Variante mit 3V3 Versorgung aus.

von (prx) A. K. (prx)


Lesenswert?

Bülent C. schrieb:
> Ein weiterer Aspekt ist der erhöhte Stromverbrauch. Da bratet er
> unnötig, um nur einen Highpegel zu zerteilen.

Ja. Bei Batteriebetrieb würde ich das nicht machen. Unter 1mA treiben 
einen aber nicht in jeder Schaltung in die Pleite.

> Wenn ich mich nicht irre, wird die maximale Übertragungsrate durch das
> Tiefpassverhalten des Spannungteilers in Verbindung mit dem I/O Port
> begrenzt.

Richtig. Aber ist das hier relevant?

von Rene H. (ballibou)


Lesenswert?

also das ist mein ersten UART projekt. Bislang kam ich immer mit i2c au, 
dies kann das BTM222 nicht. Auch finde ich es langsam nervig ständig 
PCA9515 als i2c levelshifter einzusetzen. Werden teuer auf dauer, habe 
ich gerade nicht da und kriege ich bis zum Wochenende nicht. Gleiches 
gilt für UART levelshifter. Daher kam mir diese idee. Freue mich das es 
auch einfacher geht.

Da ich noch nichts mit UART gemacht habe und ich mir das BTM222 nicht 
gerade zerschießen möchte ein paar Daten:

ATMega128, 16Mhz Quarz,  5v
BTM222, 3,3v
Baudrate Standard 19.....
Verbindung auf der selben Platine. Leiterbahnen 4-5 cm lang.

Befehle kommen per Handy rein und sollen verarbeitet werde,  Werte 
werden per BT ans Handy gegeben und sollen angezeigt werden.

Nichts zeitkritisches. Das Handy soll rein als "Fernbedienung" 
fungieren.

von (prx) A. K. (prx)


Lesenswert?

Wichtig ist aber, dass du die direkt verbundene Leitung seitens des 5V 
Gerätes nicht versehentlich mal als Ausgang programmierst. Kannst ggf. 
einen Angstwiderstand 2K2 reinmachen.

von Bülent C. (mirki)


Lesenswert?

A. K. schrieb:
> Ja. Bei Batteriebetrieb würde ich das nicht machen. Unter 1mA treiben
> einen aber nicht in jeder Schaltung in die Pleite.

Das wissen wir ja eben nicht, ob es Batteriebetrieben sein sollte. 
Ausserdem müssen wir ja Energiebewusst denken :-)

A. K. schrieb:
>> Wenn ich mich nicht irre, wird die maximale Übertragungsrate durch das
>> Tiefpassverhalten des Spannungteilers in Verbindung mit dem I/O Port
>> begrenzt.
>
> Richtig. Aber ist das hier relevant?

Kommt auf die Anforderung und seinem Platinen Layout an.. Auf einer 
Platine wimmelt ja es nur so an Kapazitäten.

von Bülent C. (mirki)


Lesenswert?

Rene H. schrieb:

> ATMega128, 16Mhz Quarz,  5v
> BTM222, 3,3v
> Baudrate Standard 19.....
> Verbindung auf der selben Platine. Leiterbahnen 4-5 cm lang.
>
> Befehle kommen per Handy rein und sollen verarbeitet werde,  Werte
> werden per BT ans Handy gegeben und sollen angezeigt werden.
>
> Nichts zeitkritisches. Das Handy soll rein als "Fernbedienung"
> fungieren.

Wegen welcher Peripherie musst Du deinen ATMega mit 5V betreiben?

von (prx) A. K. (prx)


Lesenswert?

Bülent C. schrieb:
> Kommt auf die Anforderung und seinem Platinen Layout an.. Auf einer
> Platine wimmelt ja es nur so an Kapazitäten.

3K/50pF gibt eine Grenzfrequenz von ca. 1MHz und mehr als 50pF sind das 
auch einmal rund um die Platine gewickelt nicht. Er arbeitet aber 
offenbar mit 19200bd.

von Rene H. (ballibou)


Lesenswert?

Also alleine schon durch den 16Mhz Quarz muss der ATMega zwingend mit 5V 
betrieben werden.

Der Verbrauch ist erstmal nicht wirklich Vorrangig. Betrieben wird das 
ganze an einem 500VA Ringkerntrafo, 2x 30V gleichgerichtet mit 
Mittelanzapfung und Schaltregler zu 5V und 3,3V.

Also wieviel da "verbraten" wird ist mir egal. Es muss funktionieren.

von Bülent C. (mirki)


Lesenswert?

A. K. schrieb:
> 1MHz

A. K. schrieb:
> 19200bd.

Da vergleichen wir jetzt aber Äpfel mit Birnen...Es stimmt aber, das er 
von der Begrenzung weit weg ist.

Hast Recht, in seinem Fall würde ein Spannungsteiler ausreichen, dann 
hat er halt einen Lötpunkt mehr als wenn er nur einen Mosfet nehmen 
würde. :-)

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.