mikrocontroller.net

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


Autor: Christian L. (lorio)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MC1489 bzw. SN75189. Braucht 5V Versorgungsspannung und sonst nichts, 
ist ein Pfennigartikel.

Autor: Christian L. (lorio)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Christian L. (lorio)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

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

Autor: Christian L. (lorio)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian L. (lorio)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Magnus Müller (Gast)
Datum:

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

Autor: Christian L. (lorio)
Datum:

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

Gruß
Christian

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.