Forum: PC Hard- und Software DIY RS232 Pegelwandler zwischen Raspi und Heizung


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Henning R. (fow0ryl)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte regelmäßig Betriebsdaten aus meiner Heizung auslesen, bzw. 
Parameter verändern.
Es gibt eine Service Software, die unter DOS läuft und über einen Adpter 
an die Heizung angeschlossen wird. Da der Hersteller nicht mehr am Markt 
ist, gibt es da auch nichts aktuelleres.
Ein Problem stellt die RS232 Schnittstelle dar. Die Service Software 
kommt offensichtlich nicht mit allen Notebooks/PC's zurecht. Nach einem 
ersten Zugriff ist die Schnittstelle bei den mir zur Verfügung stehenden 
Notebooks tot.
Um 10 Ecken hat es dann doch nocht funktioniet.
- Notebook mit Manjaro Linux und Profilic USB-RS232 Adapter
- Virtualbox mit Mapping von /dev/ttyUSB0 auf Seriell
- FreeDos 1.3

Den Adapter zum Anschluss an die Heizung konnte ich mir ausleihen und 
habe mir das Schaltbild aufgezeichnet. Ich bin zwar kein Elektroniker, 
habe das sieht mir irgendwie nach Pegelwandler aus.

Meine Idee war jetzt einen RaspPi mit einer DOSBOX, in der die Servie 
Software läuft, permanent an die Heizung anzuklemmen und dann remote auf 
den RasPi zuzugreifen. Das Ganze wäre dann eine Lösung mit der man auch 
Anderen einen Zugang zu den inneren Werten ihrer Heizung verschaffen 
könnte.

Am Raspi müsste ich ja auf jeden Fall einen Pegelwandler von GPIO auf 
RS232 betreiben. Dann käme ein weiterer Pegelwandler von RS232 auf 
Heizung.
Das sollte sich doch sicher auch in einer Einheit erledigen lassen. Dazu 
müsste ich aber verstehen, wie der Pegelwandler (siehe Bild) 
funktioniert.

Was ich meine verstanden zu haben:
a) Die Heizungsseite wird durch die beiden Optokoppler bedient.
b) D1 ist eine Schutzdiode, damit die LED in Optokoppler U1 nicht durch 
negative Spannungen zerstört wird. R5 begrenzt den Strom durch die 
Optokoppler LED auf einen zulässigen Wert. Bei Anschluss an den GPIO 
Port würde die Schutzdiode nicht benötigt und der Vorwiderstand müsste 
angepasst werden.
Damit wäre die Sendeseite vollständig beschrieben ...
c) D2 stellt sicher, das nur positive Spannungen den Kondensator C1 
aufladen. Wird das DTR Signal gesetzt, dann bekommt die Schaltung 
sozusagen Betriebsspannung. Gleichzeitig wird über D2 ein Rückfluss in 
Richtung PC verhindert. Ich denke, beim Anschluss an GPIO kann man sich 
das ebenfalls sparen. 3,3V oder auch 5V lassen sich ja direkt abgreifen.

Unklar ist mir hingegen wozu das Konstrukt um den Transistor dient, bzw. 
wie es funktioniert und welche Aufgabe das RTS Signal hat.
Braucht man das überhaupt?

Es wäre toll wenn mir das jemand erklären könnte.

von Achim M. (minifloat)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Henning R. schrieb:
> Am Raspi müsste ich ja auf jeden Fall einen Pegelwandler von GPIO auf
> RS232 betreiben.

Nö. Dein Optokopplerzeugs kann direkt an die GPIO ran. Schaltplan ist 
angehängt.
Ob der Raspi den Optokoppler am TX treiben kann weiß ich nicht. Die 
Widerstände musst du dir noch berechnen, dass das mit dem CTR von den 
Optos hinhaut.

mfg mf

: Bearbeitet durch User
von Georg A. (georga)


Bewertung
0 lesenswert
nicht lesenswert
Henning R. schrieb:
> Nach einem
> ersten Zugriff ist die Schnittstelle bei den mir zur Verfügung stehenden
> Notebooks tot.

Was soll das denn heissen? Ist sie dauerhaft kaputt oder reagiert sie 
nur mit deinem Serviceprogramm nicht mehr?

Ansonsten sind diese Basteleien mit Pseudo-RS232-Pegeln ohne echte dafür 
gedachte Treiber ala MAX232 grundsätzlich Mist. Kann gehen, kann nicht 
gehen, kann je nach Mondstand, Gegenstelle und Baudrate gehen. BTDT, 
brauchs nicht mehr.

In deinem Fall wäre ein TTL-RS232-USB-Adapter deutlich sinnvoller. Da 
könnte man die Ausgänge/Eingänge der Optokoppler nahezu direkt 
(+Vorwiderstände für LEDs, Pullup/down) anschliessen und muss nicht mehr 
analog rumtricksen.

Dank Maker-Hype sind die jetzt auch nicht unerschwinglich:

https://www.amazon.de/Serial-Converter-CHG340G-Arduino-Multiwii/dp/B01N9M2WKD

https://www.amazon.de/AZDelivery-Adapter-FT232RL-Serial-gratis/dp/B0753GY7FR/

Gibts mit CH340, FT232, mit Pins oder Kabeln, etc. Fürn Raspi sollte 
sich da aber immer das passende Treibermodul finden.

von Henning R. (fow0ryl)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die RS232 Schnittstelle am Notebook ist nach Aufruf des Service 
Programmes nicht mehr ansprechbar.
Der Mode Befehl sagt dann, das die Schnittstelle nicht vorhanden ist.
Auch wenn man das DOS Programm unter Virtualbox betreibt ist das so.

Es handelt sich dabei aber wirklich um ein Problem mit den 3 
verschiedenen HP Notebooks, die ich hier zum Test nutzen kann.
Mit einem Uralt PC mit einem ASUS A8N-E Board funktioniert alles prima.

Und das es mit den beschriebenen Adaptern funktioniert möchte ich nicht 
ausschließen, aber auch nicht ohne Zusatzbeschaltung mit den 
Optokopplern  ausprobieren. Schließlich weiß ich nicht, welche 
Signalpegel tatsächlich von der Heizung geliefert werden.
Solche Adapter habe ich sogar herumliegen, da ich sie zur Programmierung 
von Arduinos verwende. Aber: Wenn ich die Anschlüsse der Heizung grille 
wird es teuer...

Der Raspi hat am am GPIO Port Anschlüsse für RS232, jedoch mit 3,3V 
Pegeln.
Ist also genau das, was aus den USB-RS232-TTL WAndler herauskommt.
Diese Schnittstelle läßt sich von DOS Seite problemlos ansprechen.
Shields auf RS232 Pegel gibt es zwar auch. Dann muss man aber wieder von 
RS232 Pegel zurück mit dem Adapter der zur Heizung gehört.

Nur frage ich mich was das ganze hin und her gewandel soll?
Die Optokoppler direkt ansteuern ist doch wesentlich einfacher.

Aber dazu müssten man verstehen, wie die Schaltung um den Transistor 
herum funktioniert. Vielleicht braucht man das RTS Signal ja gar nicht 
für die Kommunikation, und es wird hier nur zum Betrieb des Adapters 
benötigt.
Kann ja nicht sooo kompliziert sein.

: Bearbeitet durch User
von Georg A. (georga)


Bewertung
0 lesenswert
nicht lesenswert
Henning R. schrieb:
> Kann ja nicht sooo kompliziert sein.

Das Problem bei den Tricksereien ist, dass hier versucht wird, ohne 
aktive Versorgungsspannung und damit "echte" +-5V (oder mehr) 
auszukommen und trotzdem für das RX-Signal einen halbwegs RS232-gültigen 
Pegel zu erzeugen. Daher werden die Handshake-Signale von RS232 DTR und 
RTS als Pseudo-Versorgung für +5V und -5V zweckentfremdet. Das geht 
natürlich auch nur, wenn man sie in der SW überhaupt mal richtig 
setzt... Wenn die LED in U2 nicht leuchtet, hat der Foto-T zu, damit ist 
Q1 auch zu und über R4 liegt RXD dann am RTS-Pegel, der normalerweise 
-5V ist. Mit Licht macht Q1 auf und zieht auf positiven DTR-Pegel, so 
ca. +5V. C1 puffert das etwas ab, schliesslich fliesst da jetzt Strom 
auf RTS und RXD.

Wenn DTR/RTS ungünstig erzeugt werden (und je neuer die Schnittstelle, 
umso wahrscheinlicher ist das, weil der ganze RS232-Handshakekram ein 
Relikt von vor 60 Jahren ist...), dann stimmen diese Pseudo-Versorgungen 
nicht mehr bzw. wackeln bei Belastung zu sehr rum. Damit macht der 
RX-Zweig matschige Pegel, die evtl. nicht mehr sauber erkannt werden.

(Anekdote am Rand: Ich hab neulich einen USB-RS232-Adapter gekauft, der 
macht schon gar keine negativen Spannungen mehr. Gibt nur noch 5V und 0V 
:-O )

BTW: Die Optokoppler will ich auch gar nicht weglassen. Allerdings wäre 
eine Bastelei an einem USB-Stick auch noch harmloser als direkt an den 
Raspi-Pins.

: Bearbeitet durch User
von Henning R. (fow0ryl)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@Georg
Vielen Dank für die ausführliche Beschreibung. Ich glaube ich habe jetzt 
kapiert, wie der Orignial Adapter funktioniert :)

@Achim
Vielen Dank für das Schaltbild. Das ist genau das Desgin was ich mir 
unter KISS vorstelle.

Ich denke ich werde erst mal die Schaltung von Achim nachbauen, und 
diese dann an den USB-RS232-TTL Adapter klemmen. Also im Grunde Georgs 
Vorschlag umsetzen.
Das Adapter-Modell, das ich hier habe unterstützt 3,3V und ist insofern 
Raspi kompatibel, so das später nichts neu berechnet werden muss.

Den so entstandenen Adapter werde ich dann aber erst mal an mein 
Notebook anschließen und schauen ob die Service-Software mit meiner 
Heizung kommuniziert.
Das wäre dann schon mal ein schlanker Ersatz für die jetzt verwendete 
Adapterkette (Profilic USB-RS232 Adapter -> DB9 auf DB25 Adapter -> 
Original Heizungs Adapter)

In einem zweiten Schritt werde ich dann die Schaltung direkt an die GPIO 
Pins vom Raspi zu klemmen, und schauen was da geht.

Die Steckverbinder, damit ich das Ganze auch an die Heizung anschließen 
kann, habe ich bereits bestellt. Werden hoffentlich bald geliefert...

Nochmals vielen, vielen Dank.
Henning

von A. K. (prx)


Bewertung
0 lesenswert
nicht lesenswert
Georg A. schrieb:
> trotzdem für das RX-Signal einen halbwegs RS232-gültigen
> Pegel zu erzeugen.

Peinlich wirds, wenn man versucht, die negative Versorgung an beiden 
Enden der Verbindung von der jeweils anderen Seite zu beziehen. ;-)

von Peter D. (peda)


Bewertung
0 lesenswert
nicht lesenswert
Georg A. schrieb:
> (Anekdote am Rand: Ich hab neulich einen USB-RS232-Adapter gekauft, der
> macht schon gar keine negativen Spannungen mehr. Gibt nur noch 5V und 0V
> :-O )

Wenn man mal ins Datenblatt von RS-232 Transceivern (MAX232) schaut, 
sieht man, daß der RXD-Eingang TTL-kompatibel ist (high >2,4V, low 
<0,8V).
Selbst die uralten SN75189 hatten die Schwelle bei ~1V.
Negative Pegel wurden also noch nie gebraucht.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Achim M. schrieb:
> Ob der Raspi den Optokoppler am TX treiben kann weiß ich nicht. Die
> Widerstände musst du dir noch berechnen, dass das mit dem CTR von den
> Optos hinhaut.

selbst die besten Optokoppler CNY17-F4 (CTR bis 400%), haben als 
schlechtesten Wert lt. Datenblatt einen CTR von 50%, also 50%-400%.

Ein Raspi sollte am GPIO nicht mehr als 3mA entnommen werden, im 
Einzelfall etwas mehr aber man darf die Summenbelastung GPU/Ports nicht 
überschreiten, war in Summe 250mA bei den single core, wobei rund 50mA 
für allePorts übrig blieben.

Also Optokoppler sind schon mal schlecht geeignet, ein Photomos AQV252g 
schafft mit 3mA immerhin 1A zu schalten, aber es ist langsamer, für hohe 
Baudzahlen eher weniger geeignet!

Kurzum das Konzept ist deutlich überarbeitungswürdig!
Wozu auch an den GPIO wo doch RS232/USB direkt am PI arbeiten? (auch gut 
schnell günstig und es USB Trenner gibt wer Trennung braucht)

: Bearbeitet durch User
von Wolfgang (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Henning R. schrieb:
> Schließlich weiß ich nicht, welche
> Signalpegel tatsächlich von der Heizung geliefert werden.

Wäre MESSEN eine Option?

Georg A. schrieb:
> Daher werden die Handshake-Signale von RS232 DTR und
> RTS als Pseudo-Versorgung für +5V und -5V zweckentfremdet.

Mit einem USB-Seriell Adapter kann das aber nur funktionieren, wenn der 
verwendete USB-Seriell Adapter die Handshakeleitungen auch unterstützt.
Das ist lange nicht bei allen der Fall.

von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Mit einem USB-Seriell Adapter kann das aber nur funktionieren, wenn der
> verwendete USB-Seriell Adapter die Handshakeleitungen auch unterstützt.
> Das ist lange nicht bei allen der Fall.

auch das ist wahr

Peter D. schrieb:
> Negative Pegel wurden also noch nie gebraucht.

man sollte aber nie NIE sagen!

Georg A. schrieb:
> (Anekdote am Rand: Ich hab neulich einen USB-RS232-Adapter gekauft, der
> macht schon gar keine negativen Spannungen mehr. Gibt nur noch 5V und 0V
> :-O )

kann man messen, besser MAX3232 die echte +- auch aus 3,3V VCC erzeugen, 
aber auch da taucht das "Problem" mit den Handshakeleitungen evtl. auf.
Keiner weiss wieviele benutzt werden und wie die SW alle anspricht.

: Bearbeitet durch User
von Henning R. (fow0ryl)


Bewertung
0 lesenswert
nicht lesenswert
Wolfgang schrieb:
> Wäre MESSEN eine Option?

Option ja, funktioniert aber nur mit einem Oszilloskop. Schließlich 
dürfte ja ein mehr oder weniger sauberes Rechtecksignal mit unbekannter 
Frequenz anliegen.
Und das kann man mit einem Standard Multimeter eben nicht messen.

Joachim B. schrieb:
> Ein Raspi sollte am GPIO nicht mehr als 3mA entnommen werden,

Hm, ich war der Meinung das man nicht mehr als 16mA entnehmen sollte...
Schließlich wird ja nur 1 Output genutzt.

Aber generell ist der Hinweis auf den CTR gut.
Den tatsächlich notwendigen Strom durch die Kollektor Emitter Strecke in 
U1 kenne ich schließlich auch nicht :(
Den werde ich wohl erst mal ermitteln müssen. Dazu fällt mir nur ein, 
den Spannungsabfall R1 messen. Da hätten wir dann wieder das Thema Oszi.
Oder ich sehe von vorn herein eine Verstärkung des Eingangsstromes vor.

: Bearbeitet durch User
von Joachim B. (jar)


Bewertung
0 lesenswert
nicht lesenswert
Henning R. schrieb:
> Hm, ich war der Meinung das man nicht mehr als 16mA entnehmen sollte...
> Schließlich wird ja nur 1 Output genutzt.

der Meinung sind ja viele, es geisterte mal ein Blockschaltbild im Netz 
wo 4 Ausgangstreiber zugeschaltet werden können von 2mA bis 8mA und in 
Summe bis zu 16mA gezogen werden können, dummerweise nur für den alten 
BCM und wie die neuen sind dazu findet man nichts.
Auch hat noch niemand ein Programm gezeigt wie die Treiber gesetzt sind 
oder die ausgelesen werden können. Es ist eine Sache des Kernels und des 
OS.

Also weiss im Prinzip niemand für welche KErnelversion und welches OS 
das gilt, lesen kann es auch niemand und für die neueren Cores auch 
nicht.
Ich weiss also nicht ob jemand noch den alten PI1 dafür nutzt oder bei 
PI allgemein für 1/2/3/4 b,+ spricht.

Von daher alles undurchsichtig und nicht belastbar!

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.

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