Suche Pegelwandler

TommyB

Team Bitschubse
17. Mai 2010
2.151
80
48
40
127.0.0.1 ;)
Sprachen
  1. C#
  2. VB.Net
  3. LunaAVR
  4. Assembler
  5. Python
Hiho,

ich weiß nicht ob es so ein Bauteil exakt so gibt, vielleicht kennt ihr da ja was.
Es geht um das leidige RS232 Problem. Das ist ja eigentlich ±15V (ja irgendwie per Strom begrenzt, egal, das war glaub ich maximum). Aber es gibt ja auch die TTL Form (wie beim AVR).

Jetzt habe ich durch meine Arbeit schon gesehen dass es manche "Anschlüsse" gibt (entweder Geräteintern oder USB zu RS232 Wandler) die ihre Pegel für RS232 vom Port selber nutzen (via den Steuerleitungen). Eine Steuerleitung ist immer High, eine immer Low (also sind beide Zustände vorhanden). Ausgangsseitig sollte es immer 0V - VCC sein.

Kurz um: Dass man echtes RS232, TTL 232 (5V oder 3.3V) anlegen kann und es passend umgewandelt wird zu eben AVR kompatiblen 0..VCC.
Vielleicht kann man ja auch mit wenig Aufwand was mit Optokopplern machen?
 
Also auf der einen Seite beliebig entweder echtes RS232 (+/-12V), 5V-TTL, 3V3-TTL (Was ist mit 1V8-TTL?), und auf der anderen Seite "AVR-Kompatibel"?

Wart mal, ich suche...
 
Jupp, ganz genau :)
1V8 hab ich nie was mit gemacht, wäre mir persönlich egal. Ich selbst nutz nur 5V, RasPI nutzt 3V3 (bei batteriebetriebenen Anwendungen wären es 3V3..4V2).

OffTopic:
Wo ist Dino eigentlich hin? Den hab ich ja seit dem Update garnich mehr gesehen 0.o
 
Ich hatte mich mal wegen 'nem Bluetooth-Modul umgesehen, und fand dafür den ADUM5201 sehr interessant.
Das ist ein Dual Channel Isolator (also ein Kanal für jede Richtung, galvanische Trennung induktiv), mit integriertem (komplett galvanisch getrenntem) DC-DC-Konverter
Für Dich könnten da eher die Standard Digital Isolators interessant sein.
OffTopic:
Wo ist Dino eigentlich hin? Den hab ich ja seit dem Update garnich mehr gesehen 0.o
ALABEL war schon vor dem Update ziemlich ... rar.
Hab ihn hier aber auch schon rumhuschen gesehen...
Wird wohl viel um die Ohren haben...
 
Hab mir die mal angeschaut, die schaun wirklich interessant aus - aber für andere Anwendungszwecke.
Leider mögen die alle samt keine negativen Spannungen, und VCC steht mir nur 5V zur Verfügung. Also eher nix für echtes RS232 :-/
 
Also so'n eierlegender-Wollmilchsau-IC ist mir nicht bekannt, vielleicht kannst Du das aber auch irgendwie selbst zusammenbasteln?
[Brainstorming] Auf der einen Seite hast Du sowohl festgelegte(!) 3V3 oder 5V-TTL-Pegel und(!) die entsprechende Versorgungsspannung bereitzustehen.
Auf der anderen Seite nur Rx, Tx und das dazugehörende Gnd.
Rx/Tx können beliebig 3V3-TTL, 5V-TTL oder echtes RS232 (bis +/-15V) sein.
Hmm...
Vielleicht, indem man die Leitungen entweder über einen konventionellen RS232-Wandler schickt, oder über einen 3V3-5V-Wandler oder (bei galvanischer Trennung) über einen 5V-5V-Wandler...
Dazu müßte man den Sender-Tx messen (im idle), und -3V, 3V3 und 5V unterscheiden.
Wurden 5V oder 3V3 erkannt, schaltet man Rx/Tx auf die entsprechenden TTL-Wandler (mit Optokopplern oder vielleicht Digitalschaltern(?))
Bei -3V halt einen RS232-TTL-Wandler, und den dann ggf auf den galvanisch getrennten Wandler.
Der ADUM5201 könnte zB zwischen 3V3 und 5V-TTL umgeschaltet werden und vielleicht nebenbei die Betriebsspannung für den RS232-Wandler bereitstellen.
Außerdem müßte man die -3V sicher erfassen (also zB mit'nem Optokoppler erkennen daß Tx<Gnd), und Tx mit Gnd über 'ne Graetzbrücke auf'n Differenzverstärker (Idealerweise einen isolierten)...

Oder man versucht das nur mit Optokopplern zu signalisieren (einer, der bei -3V durchschaltet, und -15V verträgt, einer der bei 3V3 durchschaltet, und 15V verträgt, einer der bei 5V durchschaltet und ...) Wann die Durchschalten und was die "vertragen", mußt Du mit externer Beschaltung beeinflussen.
Die OKs werden dann von'nem Tiny ausgewertet, der die entsprechende Wandler aufschaltet. Wenn länger als das langsamste zu erwartende UART-Frame weder -3V noch 3V3 oder 5V erkannt wurden, werden die Wandler abgetrennt (Start und Stopbit sind komplementär, Idle wird auch signalisiert, also würde dann nix angeschlossen sein)
[/Brainstorming]
 
Hallo,

JOffTopic:
Wo ist Dino eigentlich hin? Den hab ich ja seit dem Update garnich mehr gesehen 0.o

ALABEL war schon vor dem Update ziemlich ... rar.
Hab ihn hier aber auch schon rumhuschen gesehen...
Wird wohl viel um die Ohren haben...

im Moment auf der Arbeit ein bischen viel los. :fie: Darum such ich mir grad ein paar Freiräume. Meine ehrenamtliche Tätigkeit leided zZt auch ziemlich darunter :flute: hab schon bestimmt 2-3 Monate nichts mehr gemacht. Mit dem neuen Forum muß ich auch erstmal warm werden. Hat sich doch so einiges geändert. Ich lese aber noch mit auch wenn ich grade weniger schreibe. Aber ich hab ja noch genug Vorsprung :sarcastic: (ca 6500 auf 1000-2000 Beiträge)

Gruß
Dino
 
Der Vorsprung geht mir sonstwo vorbei...
Ich (und sicher auch Thomas) hätten da eher auf Deine fachlichen Kompetenzen zurückgegriffen.
"Da war mal was in der Elektor Sommer 1723" oder sowas in der Art...;)
 
Hi,

Also so'n eierlegender-Wollmilchsau-IC ist mir nicht bekannt, vielleicht kannst Du das aber auch irgendwie selbst zusammenbasteln?
... ist mir auch nicht bekannt. Ich habe lediglich mal kapazitive Koppler-ICs (statt Optokoppler) mit eingebautem isolierten DC-DC-Wandler gesehen. Die sind aber nicht variabel mit den Pegeln. Außerdem müßte man bei RS232 gegenüber TTL-Eingang noch eine Signalinvertierung vornehmen. https://de.wikipedia.org/wiki/RS-232
Logisch 0 ist da -12V und logisch 1 ist +12V. Also bei der Spannung genau invertiert. Das muß man beachten wenn man den Eingang auch mit TTL-UART befüllen will.

[Brainstorming] Auf der einen Seite hast Du sowohl festgelegte(!) 3V3 oder 5V-TTL-Pegel und(!) die entsprechende Versorgungsspannung bereitzustehen.
Auf der anderen Seite nur Rx, Tx und das dazugehörende Gnd.
Rx/Tx können beliebig 3V3-TTL, 5V-TTL oder echtes RS232 (bis +/-15V) sein.
...
Wurden 5V oder 3V3 erkannt, schaltet man Rx/Tx auf die entsprechenden TTL-Wandler (mit Optokopplern oder vielleicht Digitalschaltern(?))[/Brainstorming]
Mit Optokopplern würde ich wegen dem recht hohen Stromverbrauch der LED bei dieser Problemstellung nicht arbeiten. Die zieht einem die mickrige angelieferte Versorgung total in die Knie.

Da wird wohl noch ein wenig mehr an "Brainstorming" nötig sein. Mir fällt da im Moment aber auch nicht wirklich was zu ein. Eingangsseitig könnte einem evtl ein RS485-Wandler bei den verschiedenen Spannungspegeln behilflich sein. Dann die maximale Signalspannung per Diode und Kondensator klemmen. Wenn man dann einen Tiny mit ADC als intelligenten Signalwandler mißbraucht und der die geklemmte Spannung per ADC mißt, dann könnte der per Software evtl automatisch die nur beim RS232 notwendige Invertierung am Eingang gegenüber dem TTL am Ausgang durchführen. Außerdem sollte der Tiny den Eingang per PCINT auch relativ Resourcenschonend zum Ausgang durchreichen können.

EDIT: Schaltpunkt für die Invertierung würde ich wegen den MAXen (die machen nur etwa 8-9V am Ausgang) bei etwa 6-7V setzen. Da drüber wird invertiert (RS232) und da drunter nicht (TTL-UART 3,3V/5V).

Gruß
Dino
 
Außerdem müßte man bei RS232 gegenüber TTL-Eingang noch eine Signalinvertierung vornehmen. https://de.wikipedia.org/wiki/RS-232
Logisch 0 ist da -12V und logisch 1 ist +12V.
Huh? Ist das beim AVR nicht auch so? Da halt logisch 0 = 0V, 1 = VCC?
Sonst würden diese ganzen Pseudo-Pegelwandler mit Wiederstand und (Z)Diode doch nicht funktionieren, weil da wird ja nix inventiert. Oder lieg ich nu komplett falsch? 0.o
 
Hi,

Logisch 0 ist da -12V und logisch 1 ist +12V.
Dein Link:
wobei eine Spannung zwischen −3 V und −15 V (ANSI/EIA/TIA-232-F-1997) eine logische Eins und eine Spannung zwischen +3 V und +15 V eine logische Null darstellt.

stimmt ... ich habs im Hirn gehabt und zur Bestätigung den Link rausgesucht und dann doch falsch in den Beitrag geschrieben :vollkommenauf: :banghead:

Ich hau mir jetzt noch nen Gläschen Wein weg und dann reicht das auch für heute :fie:

Gruß
Dino
 
Zuletzt bearbeitet von einem Moderator:
Ich hau mir jetzt noch nen Gläschen Wein weg und dann reicht das auch für heute

Gute Idee. Aber es ist so heiß, ich weiß nicht, ob ich es bis zum Kühlschrank schaffe (sorry für OT :D)

zum Thema: Da weiß ich im Moment leider auch keine Lösung, musste mich damit auch noch nicht befassen. Aber ich schau da auch mal nach.
 
Äh... Dirk...
von mir waren nur die zwei Zitate und der Satz dazwischen...

Dino braucht die Pause...
 
von mir waren nur die zwei Zitate und der Satz dazwischen...

Ok, Dino braucht die Pause.

Ich hatte von deinem Beitrag 12 zitiert, ich dachte du brauchst den Wein :) Also ganz ehrlich, ich hatte noch gar keinen Wein! :D

Edit: Dino hat sich vertan, er hat deinen beitrag anscheinend bearbeitet, anstelle seinen ;)
 
Ein moderatives oopsalla quasi :D
Hab ich auch noch nicht erlebt :)

Mach Feierabend Dino, hast es dir verdient :)
 
Warum habe ich jetzt grade Johnny Castaway im Kopf? :D


Aber nich dass Dino jetzt n 3. Spitznamen bekommt ^^
 
Ich greifs nochmal auf, neuer Ansatz:
Das soll fest in irgend'nem Gerät eingebaut werden, oder 'ne eigene Schaltung sein, die zwischen zwei seriell zu verbindende Geräte gesteckt werden kann?
Also Kernfrage: Steht die AVR-seitige Versorgungsspannung fest (auf 5V), oder können das auch mal 3V3 oder 5V sein (und die Schaltung muß damit klarkommen)?
Schau Dir mal den MAX3221 an. Da können nämlich beide Seiten getrennt tristate geschaltet werden. Wenn der also direkt an den eingehenden Fragezeichen-UART geklemmt wird, kannst Du den TTL-->MAX--RS232-->Fragezeichen-Zweig erstmal tristate halten (/FORCEOFF=low) und den TTL<--MAX--RS232<--Fragezeichen-Zweig am TTL auswerten. Liefert er im Idle 'n Hi "1", hast Du da 'n echtes RS232 drann, und schaltest den TTL-->MAX-->Fragezeichen auch auf.
Das /Invalid-Signal läßt sich leider so nicht nutzen, da es auch auf anliegende TTL-Pegel reagiert.
Wurde kein gültiges RS232 erkannt, müßtest Du die vorn anliegende Fragezeichen-UART (Tx) weiter untersuchen. Nach entsprechenden ICs (Bus-Switches/Level-Translatoren) mit entsprechenden tristate-Möglichkeiten hab ich da jetzt noch nicht gesucht...
Da die ja dann AVR-seitig wieder zusammenlaufen sollten, müßte der MAX dann auch auf der TTL-Seite tristate gehen (/EN=Hi).
Dann läßt sich allerdings der TTL<--MAX--RS232<--Fragezeichen-Zweig nicht weiter auswerten - Du müßtest also prüfen
-liegt RS232 an? ja MAX enablen bis irgendwann kein RS232 mehr anliegt
-nein, dann MAX abschalten, und auf TTL prüfen - wenn ja TTL nutzen
-sonst wieder von oben.

Das /Invalid-Signal sollte sich eigentlich trotzdem nutzen lassen um zu erkennen, ob irgendwas Angeschlossen ist - auch wenn der MAX irgendwo abgeschaltet ist.
Noch interessanter ist übrigens der MAX3243. Der hat nämlich zu einem RS232-->TTL-Gate parallel ein zweites RS232-->TTL-Gate, welches beim Shutdown nicht mitabgeschaltet wird, sich also Fragezeichen-->TTL trotz deaktiviertem Tristate-MAX3243 (in beiden Richtungen) weiterverfolgen lassen würde. Allerdings hätte der mehr Gates als du brauchst. 28 Beine.
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)