Jeder, der eine Autogasanlage eingebaut hat, kennt diese kleinen Umschalter mit integrierter Tank- und Statusanzeige und Umschalttaste.
Leider sind diese Annzeigen nie so richtig in das Design integriert - dieses Projekt soll das ändern und eine LCD-Anzeige im Klartext bereitstellen: LUGS Luxus Gas/Benzin-Schalter...
Wenn man etwas Internetrecherche betreibt, findet man heraus, dass die LPG-Anlagen der folgenden Hersteller angeblich auf der selben Elektronik-Hardware basieren, die von der Firma A.E.B. srl hergestellt wird:
- ELPIGAZ (Voila Plus, Stella/Eliza, Millenium, Nicolaus/2004, Leonardo)
- KME (Bingo, Diego)
- ZAVOLI (Alisei, Regal)
- D.T GAS (Datec Basic, Datec Super, Gas-tech)
- EMMEGAS (ICS-03)
- AC (Stag 100)
- OMVL (Dream XXI N)
- BIGAS( Sgis N, Elc’92, Elc Pegaso)
- PROTECDIGITAL (Orion)
- AG (Razmus AF-800, Sirocco)
- ROMANO (Romano ris)
Wen die Interna interessieren:
In dem Gas-Steuergerät werkelt ein flashbares Freescale/Motorola 16-Bit Star12-Derivat, die Stromversorgung ist herkömmlich mit einem Längsregler realisiert, für den Fail-Silent-Betrieb sind die Signale von den Benzin-Einspritzventilen über Relais geführt.
Da ich eine Zavoli-Anlage eingebaut habe, beruhen die hier vorgestellten Ergebnisse auf einer Zavoli-Anlage. Der Original-Umschalter in meinem Wagen hat die Typenbezeichung AEB750.
Es gibt mittlerweile aber einen neuen, kleineren Umschalter mit Folientaster und einem wesentlich kleineren Anschluss... dazu folgen noch Informationen. Ich kann mir eigentlich nicht vorstellen, das AEB nur für den anderen Umschalter das Protokoll der Gas-ECU geändert hat.
Ach ja: Hier gibt es noch einen Thread bei Motor-Talk zum Thema. Unter anderem wird auch ein "universeller" Kennlinienrechner für die Tankanzeige entwickelt.
Wie immer bei solchen Internet-Anleitungen gilt: Die hier gemachten Aussagen sind nach bestem Wissen getätigt. Dennoch können Sie Fehler enthalten. Vor dem Nachbau oder der Anwendung sollten Sie sich selber vergewissern, ob alle Aussagen korrekt sind bzw. für Ihre Autogasanlage zutreffen. Weiterhin kann das Einbauen von Elektronik in die Autogas-Anlage dazu führen, dass die Betriebserlaubnis des Fahrzeuges erlischt!
Projektstatus:
Status: eingestellt. nicht fertiggestellt
Letzte Änderung Technik: 06.05.2007 (SW 1.6 online)
Letzte Änderung Webseite: 11.05.2007 (Nachtrag Synthese: Low-Impuls)
Dem Umschalter und aufs Bit schauen oder: Mein Freund O.Szilloskop fährt mit. Haha.
Die Hardware:
Rückseite des Umschalters AEB750 mit Stecker und Kabeln
Innenansicht
Man sieht, dass nicht sooo viel Technik in dem Umschalter steckt:
- Herzstück ist ein PIC 16C505 mit interner Takterzeugung und 12 I/O-Pins
- Dazu LEDs + Vorwiderstände
- Der Umschalt-Taster
- Der Pieper für die Tank-Leer-Warnung
- Ein Stützkondensator, ein paar Block-Kondensatoren
- Ein Programmier/Teststecker
- 1mm Epoxydharz-Leiterplatte
Der Einsatz eines Microcontrollers legt nahe, dass die Verbindung zwischen dem Gas-Steuergerät und dem Umschalter über ein digitales, serielles Protokoll geschieht. Da kein Spannungsregler auf der Leiterplatte ist und der PIC 3.5-5.5V Versorgung benötigt, sind die verbleibenden Leitungen wahrscheinlich GND und 5V-Versorgung.
Auch die Pinbilanz des PICs untermauert diese Analyse:
1x Gas-LED
1x Benzin-LED
4x Füllstand grün
1x Füllstand rot
1x Taste
1x Summer
2x Kommunikation
----
11 Pins
Anschlussbelegung (von hinten)
Achtung! Bei nicht-Zavoli-Anlagen können evtl. auch die 12V Bordnetz anliegen! Umbedingt selber messen!
Das Protokoll vom Steuergerät zum Umschalter:
Es handelt sich um einen "Pulslängencode": Jedes Bit besteht aus einem Puls - Nullen sind genau 2ms lang, Einsen 4ms und die Pausen immer 3ms.
Null-Impuls mit 2ms
Eins-Impuls mit 4ms
Pause mit 3ms
Insgesamt überträgt das Steuergerät 14 Bit (Bits 0..13), MSB first:
Bit Funktion ------------------------------------------------------------------- 13 Startbit (immer eins) 5..12 Funktion unbekannt, könnten Fehlernummern sein 3..4 Bitcodiert Gas/Benzin-LEDs 00 ??? 01 Benzin an, Gas blinkt 10 Benzin aus, Gas an 11 Benzin an, Gas aus 0..2 Tankanzeige 000 Reserve 001 Viertel 010 Halb 011 Dreiviertel 100 Voll
Das Steuergerät wiederholt den Code alle 6,2s oder wenn sich eine Änderung ergibt. Der kürzeste Abstand zwischen zwei Botschaften ist rund 9ms (also drei Pausen). Ruhepegel der Leitung ist 5V, das Telegramm beginnt und endet immer mit einer Pause.
Ein Beispielcode: Tank voll, Gasbetrieb
Alle Füllstände zusammengefasst, Änderungen rot markiert
Die Taste
Die Information des Tasters wird 1:1 übertragen, sprich: die blaue Leitung führt als Ruhepegel 5V. Wenn die Taste gedrückt wird führt sie 0V - die Leitung ist also LOW-aktiv.
Taste gedrückt, 8ms dannach kommt die Antwort vom Steuergerät
Offene Punkte
- Was bedeuten die Bits 5-12? Beim Ausmachen des Motors kam bei mir noch ein Telegramm mit den Bits 6 und 7 auf 1... Gasdruck zu klein? Tankventil geschlossen?
- Welches Bit steuert den Pieper?
- Was wird gesendet um alles blinken zu lassen (Tank leer)?
Wer da etwas zu beitragen kann - immer her damit!
Abschluss der Analyse: 09.10.2006
Der Signalgenerator fuer LUGS / AEB750
Damit man das in der Analyse gefundene Wissen mit dem Umschalter verifizieren kann, bietet es sich an, erstmal ein kleines Zwischenprojekt zu starten: Einen Signalgenerator für die Signale des Gas-Steuergerätes. Da so ein PIC ja recht genügsam ist, was seine Aussenbeschaltung angeht, kann man die 5V-Versorgung einfach gestalten : 7805 mit Siebelkos und Verpolschutzdiode (kostet nix, spart aber jede Menge Ärger) reichen. Port B (mit 8x internen Pull-Ups) und das untere Nibble + Bit5 von Port A (mit 5 externen Pull-Ups 10k) lesen 13 DIP-Schalter für die Bits in der Botschaft ein, zwei LEDs (RA4/6) zeigen den Status an (Senden, Zykluszaehler) und RA7 gibt das Signal an den Umschalter aus. Gesendet wird ca. alle 6s bzw. wenn sich die Schalterstellung der DIPs ändert.
Stückliste: PIC16F628 Microcontroller 7805 Spannungsregler 1N4001 Verpolschutz Kerko 470nF 40V Kerko 100nF ELKO 330uF 16V 220R LED 3mm rot LED 3mm gruen Widerstandsnetzwerk 5x10k Dip-Schalterbank 10fach Dip-Schalterbank 4fach
Außerdem erspart der Simulator den Gang zum Auto, wenn man Umschalter-Eigenbau testen will. Hier ist der Quellcode für CC5X.
Durchspielen der Bitkombinationen mit angeschlossenem Umschalter ergibt dann folgende vervollständigte Tabelle:
Bit Funktion ------------------------------------------------------------------- 13 Startbit (immer eins) 7..12 Funktion unbekannt, koennten Fehlernummern sein 6 Störungs-Signal: Benzin an, Gas aus, schnelles Piepsignal, Tankanzeigen blinken (wenn Bit3-5=0) 3..5 Bitcodiert Gas/Benzin-LEDs 543 --- 000 alles aus 001 Benzin an, Gas blinkt 010 Benzin aus, Gas an 011 Benzin an, Gas aus 100 Benzin an, Gas an (*) 101 Benzin aus, Gas blinkt (*) 110 Benzin aus, Gas blinkt, langsames Piepsignal, Tankanzeige aus (*) 111 Benzin an, Gas aus, Tankanzeige aus (*) 0..2 Tankanzeige 210 --- 000 Reserve 001 Viertel 010 Halb 011 Dreiviertel 100 Voll (*) bisher nicht im Fahrzeug beobachtet
Tastensignal nach Power On
Noch eine interessante Entdeckung: Das Signal der Taste wird auch über den µC ausgewertet bzw. ausgegeben. 18,6ms nach Power On wechselt der Pegel aktiv auf "High". Die Taste zieht also nicht nur eine per Pull-up hochgehaltene Leitung nach Low... sondern der uC liefert über einen 1k-Widerstand den High-Pegel, den die Taste nach Low ziehen kann. Der Original-Umschalter liest den Pegel auf der Tastenleitung an einem zweiten Port auch noch zurück, warum er das tut, habe ich nicht heraustüfteln wollen. Auch wenn der Umschalter das Kommando AUS bekommt, bleibt der Tastenpegel bei 5V.
Kleine Gemeinheit: Die Tastenleitung wird nach dem Power-On Reset (=Input bzw. Tristate des Controller-Pins) für 30µs aktiv auf LOW gezogen, bevor sie auf High gesetzt wird... das sieht man natürlich erst, wenn man die TX-Leitung im Simulator per 10k Pull-Up auf 5V legt.
Um die Bits 7..12 noch zu erkunden, wird man wohl den Teil 3 angehen und die Anzeige im Betrieb beobachten müssen. Schön wäre ja, wenn man z.B. "Temperatur erreicht" aus den Daten ablesen könnte...
Ach ja: Der Umschalter verbraucht 18mA, wenn 6 LEDs eingeschaltet sind.
Verbleibende offene Punkte
- Was bedeuten die Bits 7-12? Gasdruck zu klein? Tankventil geschlossen?
Abschluss der Synthese: 15.03.2007
(Nachtrag Tastenausgabe am 29.4.2007)
(Nachtrag Low-Impuls am 11.5.2007)
Features
- Balkenanzeige für Tankfüllstand und Status im Klartext
- Ausgabe unbekannter Statuscodes als Hexwert
- Einen eigenen Spannungsregler braucht LUGS nicht, die 5V-Versorgung aus der GAS-ECU reicht:
Der 16F628 gibt sich mit rd. 3mA zufrieden, die LCD-Anzeige ohne Hintergrundbeleuchtung braucht 2,2mA... bleiben noch rund 14mA für die Display-Beleuchtung und den Summer übrig, wenn man den Stromverbrauch des Original-Umschalters zu Grunde legt. - (optional) Schalten der Hintergrundbeleuchtung über die Armaturentafel-Beleuchtung: Einfach den PIC-Ausgang für die Hintergrundbeleuchtung die 12V der Skalenbeleuchtung (natuerlich mit entsprechendem Vorwiderstand!!!) schalten lassen.
- Lesen der seriellen Daten (Signal RX) über den INT-Pin (RB0/INT) des PIC
- Thema LCD-Display und Automotive... Die meisten LCD-Displays sind nur für 0-50 Grad Celsius spezifiziert, was für das Auto nicht ausreicht - dort sind im Innenraum -40...+85 Grad gefragt. Es gibt aber Displays mit erweitertem Temperaturbereich, die -20..70 können - die sind auf jeden Fall empfehlenswert! (Das 2x8-Display EA DIPS082-HNLED von Electronic Assembly ist so eins...)
- Eine Taste für die Gas/Benzin-Umschaltung wie gehabt.
- Ein Piezo-Summer ...
- geänderte Piepsignale gegenüber dem Original: kurzes Beep beim Umschalten auf Gas, dezentes Beep....Beep bei Umschaltung auf Benzin wegen Tank leer
Nächste Schritte: Test im Auto
Lugs-Schaltplan (Klicken für Großbild)
Stückliste: (6.5.2007) IC 1 PIC16F628 Microcontroller LCD 2x8 LCD-Display HD44780-kompatibel, LED-Beleuchtung z.B. LCD 082 DIP von (Reichelt) (= EA DIPS082-HNLED von Electronic Assembly) C1 Kerko 100nF C2 ELKO 100µF/16V C3,4 10pF R1 Trimmer 4k7 R3,4 1k R5 220R CON 1 Molex Micro-Fit 3.0 Steckverbinder 43025(Gehäuse) und 43030(Kontaktbuchse)(auf Kabelseite) und 43045(Umschalterseite)4pol, 2reihig BUZZ Piezo Summer TDB 05 (Reichelt) T1 Taster, z.B. Conrad-Nr.707740 (Miniatur-Printtaster 20mm)
Aufbauhinweise
Damit die Strombilanz des neuen Umschalters dem des alten entspricht, muss man die Hintergrundbeleuchtung des Displays von EA auf externe Versorgung umbauen, damit man sie separat schalten kann (z.B. bei -Tank leer- und -Aus-) sowie den LED-Strom auf insgesamt rd. 12mA herabsetzen kann. Dazu muss man den Widerstand R5 auf der Displayrückseite auslöten sowie die Lötbrücke LB2 schliessen -> Siehe Foto. Die Hintergrundbeleuchtung wird dann über Pin 7 (D0) versorgt, der dank des 4-Bit Mode des Displays bei LUGS nicht benötigt wird.
Display-Rückseite mit den markierten Umbaustellen
Prototyp-Vorderseite
Prototyp-Rückseite, leider noch ohne die Molex-Buchse
Software
Quellcode, Make-Batch für cc5xund fertiges HEX-File Version 1.6
Das bitweise einlesen der Daten vom Gas-Steuergerät ist über den Interrupt-Pin bzw. Timer0 des PIC realisiert. Die Zeiten zwischen zwei Flankenwechseln werden ausgemessen, in get_code() wird das Startbit bewertet und bei gültiger Bitlänge read_code() zum lesen der restlichen 13 Bit aufgerufen.
Wird ein gültiger Code erkannt (=14 Bit mit den richtigen Bitzeiten), wird in decode() der Tankfüllstand und der Status decodiert und angezeigt.
Der restliche Quellcode in main() besorgt nur das Blinken für die -WARTEN- und L E E R - Meldung, sowie die Ansteuerung des Buzers.
Generell muss man bei Änderugnen in der Software darauf achten, dass man die Stromaufnahme von LUGS nicht ändert, z.B. genehmigt sich der Piezo-Summer bei Dauerbetrieb 22mA - man darf in also nur implusweise einschalten - und das auch nur, wenn der PIC die LCD-Hintergrundbeleuchtung gerade deaktiviert hat!
Anmerkungen zum Test im Auto:
Die Software 1.6 ist eine recht komplette Version für eigene Experimente, sie ersetzt bisher noch nicht den Original-Umschalter, da sie erst kurz im Auto getestet ist:
Stand 6.5.2007: Setzt man den Umschalter ein und startet dann den Motor, funktioniert alles: Der Anlagenzustand und Füllstand werden angezeigt. Lässt man die Anzeige aber auch bei abgestelltem Fahrzeug angeschlossen, hängt sie sich beim nächsten Start auf. Ich tippe mal, dass es sich um ein Versorgungsspannungsproblem handelt, dass die VCC zwischendurch mal über 2,5V steigt und der PIC mit dem internen POR ein wenig startet, dann bei VCC=5V aber irgendwie im Wald steht. Dem LC-Display geht es da nicht anders.
Abhilfe: Der PIC bekommt eine ordentliche POR-Schaltung mit TL7705 (... ist in Schaltplan und Stückliste vom 6.5. noch nicht enthalten) und das LCD wird vom PIC aus über einen Portpin versorgt.
Stand 9.5.2007: Tja... Test mit TL7705 uns SW 1.7 im Auto: Wie gehabt, LUGS anstecken, Motor starten - alles Prima. Motor stoppen - LUGS geht aus. Soweit, so gut. Nochmal starten - und schon startet die Anlage das nächste Mal nicht richtig... Der übertragene Code ist 0x2068. Da muss ich wohl nochmal mit dem Scope ganz auf den Datenverkehr und die Versorgungsspannung sehen. Selbst wenn man die TX-Leitung erst auf Input programmiert und erst nach den 18ms (die der Original-Umschalter für den Reset benötigt) auf Output und High programmiert, verhält sich die Anlage so. Grrr. Jetzt lass ich mal den C4 weg, vielleicht erkennt die Anlage das Laden des Kondensators schon als Low. Allerdings kann man die Anlage durch Bedienen der Umschalter-Taste in den Benzin- und durch nochmaliges Drücken in den Automatikbetrieb bringen. Der Code 0x2068... könnte der Notbetrieb sein, bei dem die Anlage sofort auf Gas startet. Wenn das so wäre, dann erkennt die Anlage scheinbar beim Einschalten direkt eine gedrückte Taste... tbc.
Sauberer Reset bei schwacher Versorgung: TL7705 statt internem POR
Eigentlich läuft LUGS im Auto...