Heizungssteuerung Startseite
Zurück

Die QAA70 Schnittstelle

Das QAA70 ist über eine Zweidrahtleitung mit dem WGB20 verbunden. Auf der Leitung liegt eine Spannung von ca. 12,8 V an. Diese versorgt das QAA70 mit Strom und überträgt gleichzeitig die Daten.

Mit einem alten Philips ScopeMeter mit galvanisch getrenntem (!) Netzteil habe ich zunächst die Leitung angezapft. Das Protokoll ist nicht OpenTherm (die OpenTherm Protokoll Spezifikation liegt mir vor, das wäre zu einfach gewesen). Es ist auch nicht e-bus.

Auf dem Oszilloskop sieht man Rechteckimpulse von 208µs oder Vielfachen davon, in denen die Spannung auf 0,88V oder 1,68V abfällt. Es handelt sich augenscheinlich zunächst um eine asynchrone serielle Übertragung mit 4800 Bd, einem Startbit, 9 Datenbits und 2 Stopbits. Etwa alle 0,5 s wird ein Telegramm aus mehreren Bytes gesendet.

Als nächstes habe ich einen 4,7 Ohm Widerstand in die Minusleitung eingefügt. Laut Datenblatt verträgt das System ja einen Leitungswiderstand von max. 2 x 3 Ohm. An diesem Widerstand mißt man im Ruhezustand, also bei 12 V auf der Leitung, eine Spannung von 32 mV. Dies entspricht der Stromaufnahme des QAA70 in Höhe von 6,8 mA.

Bei der einen Art von Impulsen sinkt die Spannung am Meßwiderstand auf 0, bei der anderen Art steigt sie auf 116 mV, was einem Stromfluß von 24,7 mA Richtung QAA70 entspricht.

Daraus schließe ich, daß die Leitung auf der LGM-Seite von einer 12 V Quelle gespeist wird, die auf ca. 25 mA strombegrenzt ist. Der LGM11.34 sendet Daten, indem er die Spannung auf Null zieht. Ebenso macht es das QAA70. Ein Kondensator mit vorgeschalteter Diode sorgt beim QAA70 für die Spannungsversorgung während der Datenübertragung.

Die Schnüffelschaltung

Die folgende Schaltung habe ich mir ausgedacht, um die Daten getrennt nach Richtung auf einen PC zu übertragen.

"Schnüffelschaltung"

R1 = 1,5k
R2 = 30,8 k (24k + 6,8k)
R3 = 330 R
R4 = 100 R
R5 = 4,7
R6 = 2,2k
R7 = 1,2 k
R8 = 100 k Spindeltrimmer

IC1 = TLC272 oder anderer Operationsverstärker der am Ausgang 0V erreicht und 0V im zulässigen Eingangsspannungsbereich einschließt
IC2 = LP2950 Ultra Low Power 5V Voltage Regulator
IC3 = 6N139 Optokoppler mit 1mA Ansteuerstrom

Die Schaltung wird aus der Busleitung versorgt und verbraucht ca. 1,5 mA. Über die Diode links wird der 47µ Elko geladen. R1 schützt den Bus vor der kapazitiven Belastung durch den Elko. Die Diode dient dem Verpolungsschutz. Der Spannungsregler IC2 erzeugt eine stabilisierte 5V Versorgung.

R5 ist der 4,7 R Meßwiderstand. Der Strom in der Minusleitung fließt von rechts (QAA-Seite) nach links (LGM-Seite). Das Stromsignal wird über den 10 k Widerstand abgegriffen und auf die beiden Komparatoreingänge gegeben. Die Schottkydiode SD103 schützt zusammen mit dem 10 k Widerstand die Komparatoreingänge vor Spannungsspitzen.

Der Spannungsteiler R2, R3, R4 erzeugt zwei Referenzspannungen von 69 mV und 16 mV. Im Normalfall liegen an R5 32 mV an. Fällt diese Spannung unter 16 mV (Daten vom LGM), schaltet IC1-B gegen Masse. Steigt die Spannung über 69 mV (Daten vom QAA), schaltet IC1-A gegen Masse. Die beiden LED dienen zur optischen Kontrolle. Mit den beiden Jumpern JP kann gewählt werden, welche Daten beobachtet werden sollen. Über R6 wird der Optokoppler 6N139 angesteuert. Die Schaltung ist so angelegt, daß nur während der Datenübertragung Strom durch den Optokoppler fließt. Während der Pausen wird kein Strom verbraucht.

Auf der anderen Seite des Optokopplers ist der direkte Anschluß an einen RS232-Port vorgesehen. Die RS232 Datenleitung hat im Ruhezustand -12 V (logisch 0) und aktiv +12 V (logisch 1). In den meisten Fällen reicht eine Spannung von ca. 3 V aus, um logisch 1 zu erkennen. Über die Diode wird der 10µ Elko auf 12V geladen. Die DTR-Leitung muß dazu programmseitig high gesetzt werden. Bei ankommenden Daten zieht der Optokoppler die RX-Leitung auf 12V, ansonsten liegt sie auf Null.

Der Vorteil des 6N139 ist der geringe Ansteuerstrom, der Nachteil ist die lange Schaltzeit in der gewählten Beschaltung, wobei das schalten auf High immer schnell geht, das Abschalten jedoch lange dauert. Der Trimmer R8 dient dazu, die Schaltzeiten zu verringern. Je kleiner der eingestellte Wert ist, um so schneller schaltet der Transistor ab, aber um so kleiner wird auch die Spannung an RX wenn er durchgesteuert ist. R8 muß so eingestellt werden, daß die Schaltflanken halbwegs symmetrisch sind. Dann gibt es nur eine Verzögerung, und die ist bei RS232 egal.

Foto Schnüffelschaltung

"Schnüffelschaltung" auf Lochraster

Das Problem mit dem 9. Datenbit

Neun Datenbits sind im Computerbereich eher selten. Genau genommen ist kein 16C550 in der Lage, 9 Datenbits zu empfangen. Im Microcontrollerbereich sind 9 Datenbits dagegen häufig anzutreffen. Ein Siemens-Mitarbeiter hatte mir gesagt, der QAA70 Bus basiere auf RS485. Und RS485 arbeitet immer mit 9 Bit.

Deshalb habe ich die Schaltung noch abgewandelt und ein ATmega16 Demoboard dazwischengeschaltet. An den Ausgängen der Komparatoren werden die LEDs wie abgebildet angeschlossen, sowie zwei Schottkydioden. Von dort geht es auf den RX-Eingang des ATmega16. Vom TX-Ausgang geht es dann auf den Optokoppler und von da auf den PC.

Schaltungserweiterung

Schaltungserweiterung

So arbeitet der ATmega16 gleichzeitig als Signalverbesserer, da der Optokoppler jetzt 100% steile Flanken angeboten bekommt. Für den ATmega16 habe ich ein kleines Programm geschrieben, welches für jedes empfangene Byte ein Paket aus 6 Byte zum PC sendet. Darin enthalten sind 2 Byte als Startmarkierung, die Zeit seit dem letzten Empfang in ms mit 16 Bit Auflösung, das eigentliche Datenbyte und das Fehlerregister des ATmega16, worin ich noch das neunte Datenbit abgebildet habe. Bei den Daten, die zum PC gesendet werden, ist das neunte Bit immer zu logisch 1 gesetzt. Somit wird es vom PC als Stopbit erkannt, bzw. als 8N1 Daten, zwischen denen immer eine kleine Lücke ist.

Das Programm für den PC habe ich in QBASIC geschrieben. Später habe ich herausgefunden, daß das neunte Datenbit ein Paritätsbit ist. Damit habe ich nicht gerechnet, schließlich erkennt ein Paritybit nur 50% der Fehler. Deshalb habe ich nicht geglaubt, daß das irgend jemand benutzt.

Aber auch mit einem 8O1 Format hat QBASIC Probleme, deswegen bleibt der ATmega16 zunächst erhalten.

Weiter zu QAA70 - das Protokoll