Forum: Mikrocontroller und Digitale Elektronik Unidirektionaler Pegelwandler RS232 -> TTL


von Christian L. (lorio)


Angehängte Dateien:

Lesenswert?

Guten Abend!

Ich habe mir eine GPS-Maus gekauft. Diese liefert mir die NMEA-Daten mit 
RS232 Pegeln. Also hab ich sie mal aufgeschraubt, musste jedoch 
feststellen, dass dort KEINE TTL-kompatiblen abgezapft werden können.

Da ich diese Pegelwandlung nur einkanalig und unidirektonal (GPS-Maus 
RS232 -> TTL  ATMega) brauche, wäre ein MAX232 total Overkill. D.h. 
Pegelwandler selbst bauen. (siehe Anhang)

Gibt es irgendwelche Einwände gegen dieses Entwurf?
RS232 ist wohl eine Spannungsschnittstelle, aber >100k Eingangsimpedanz 
dürfte ja nicht ausmachen.

Gruß
Christian

von Benedikt K. (benedikt)


Lesenswert?

Ich würde noch eine Diode von E nach B anschließen, denn RS232 Pegel 
können -10V und mehr betragen. Die Basis Emitter Diode verkraftet aber 
nur meist -5 bis -7V.
Ein Spannungsteiler mit einem 2. 100k Widerstand würde auch reichen.
Davon abgesehen mache ich es meist auch so.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

MC1489 bzw. SN75189. Braucht 5V Versorgungsspannung und sonst nichts, 
ist ein Pfennigartikel.

von Christian L. (lorio)


Angehängte Dateien:

Lesenswert?

> Ein Spannungsteiler mit einem 2. 100k Widerstand würde auch reichen.

Dann in der Software XOR 0xFF ?
Hm, das wäre auch eine Idee.

Obwohl ich lieber bei dem Pegelwandler bleibe, denn vielleicht wird das 
Ganze
 dann doch mal nur mit 3.3V betrieben.

Also den Anhang kann ich bedenkenlos aufbauen?
Ok, viel kann ja nicht kaputt gehen. =)
Output ist ja maximal VCC; nur an die Sperrspannung der BE-Diode habe 
ich garnicht gedacht.

Zum Thema Flankensteilheit:

bei logischer 0 hat RS232 min. 3V

=> (3V - 0,7V) / 100kOhm = 0,000023 A

=> mit hfe = 100 max. BC-Strom von 0,0023 A

=> 5V / 0,0023 A = 2200 Ohm


so grob 5fach Übersteuert sind wir bei R2 = 10kOhm


Jetzt meine Frage:
Um gute Schaltzeiten zu erzielen sollte ich den Transistor ja möglichst 
wenig in Sättigung bringen, oder?
Ist aber eher eine allgemeine Frage, denn 9600 Baud sind da schon drin.
Aber wie siehts aus, wenn es mal flotter sein sollte ( > 100k Baud)?

Gruß
Christian
----------------------
EDIT:
@rufus:

Deine Empfehlung ist gut, jedoch bruach ich keine 4 Leitungen.
Klar ist platzmäßig eher nicht das Problem (v.a. wenn als SMD), aber mal 
schauen. Für 9600 Baut müsste die Schaltung reichen, für Baudraten 
darüber wäre ein IC schon sinnvoll. Oder eben Kollektorwiderstand 
verkleinern.

von Benedikt K. (benedikt)


Lesenswert?

Christian L. wrote:
>> Ein Spannungsteiler mit einem 2. 100k Widerstand würde auch reichen.
>
> Dann in der Software XOR 0xFF ?
> Hm, das wäre auch eine Idee.

Wieso XOR 0xFF? Der Widerstand bildet nur einen Spannungsteiler, mehr 
nicht.

> Jetzt meine Frage:
> Um gute Schaltzeiten zu erzielen sollte ich den Transistor ja möglichst
> wenig in Sättigung bringen, oder?
> Ist aber eher eine allgemeine Frage, denn 9600 Baud sind da schon drin.
> Aber wie siehts aus, wenn es mal flotter sein sollte ( > 100k Baud)?

Das Abschalten kann man durch einen Kondensator (100pF) parallel zu dem 
100k Vorwiderstand beschleunigen, oder mit einer Schottky Diode zwischen 
Basis und Kollektor den Transistor am Sättigen hindern.
Oder einen kleinen Mosfet wie den BS170 verwenden. Dann sollten selbst 
1MBaud kein Problem sein, wenn der Pullup ausreichend klein ist (z.B. 
1kOhm).

von Christian L. (lorio)


Lesenswert?

Ich dachte an XOR 0xFF, weil RS232 ja negative Logik besitzt. (also <-3V 
logische 1; >3V logische 0)

Ansonsten vielen Dank für eure Hilfe.

Gruß
Christian

von Benedikt K. (benedikt)


Lesenswert?

Der UART von µC hat aber eine positive Logik (Ruhepegel high), somit 
passt das genau wieder.

von Christian L. (lorio)


Lesenswert?

Achso, jetzt ist mir eingefallen, was du gemeint hast.
Anstelle der Diode einen 100kOhm Widerstand.

Dachte am Anfang du meinstest einen einfachen Spannungsteiler anstatt 
einen Pegelwandler.

Gruß
Christian

von Benedikt K. (benedikt)


Lesenswert?

Ja, genau. Man muss irgendwie verhindern, dass der Transistor eine zu 
hohe negative Spannung an die Basis bekommt. Und allzu hochohmig braucht 
so ein Eingang auch nicht zu sein, der MAX232 hat glaube ich irgendwas 
im Bereich von wenigen 10kOhm.

von Christian L. (lorio)


Lesenswert?

Benedikt K. wrote:
> Ja, genau. Man muss irgendwie verhindern, dass der Transistor eine zu
> hohe negative Spannung an die Basis bekommt. Und allzu hochohmig braucht
> so ein Eingang auch nicht zu sein, der MAX232 hat glaube ich irgendwas
> im Bereich von wenigen 10kOhm.

Ja, ich dachte am Anfang, dass du meistest, ich solle NUR einen 
Spannungsteiler verwenden. Also KEIN Pegelwandler; alles OHNE 
Transistor.

Müssten wohl die internen Schutzdioden der ATMegas abkönnen, aber mit so 
einem Pfusch wird erst garnicht angefangen.

von Magnus Müller (Gast)


Lesenswert?

Die reine Spannungsteilervariante wird in Verbindung mit einem in 
Hardware gegossenem UART nicht funktionieren. Mit einem (angepassten) 
Software-UART gehts.

von Christian L. (lorio)


Lesenswert?

Stimmt, Hardware-UART würde meckern, schon allein wegen Start- und 
Stoppbits.

Gruß
Christian

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.