Grafische Anzeige CAN
Aus Prius Wiki
Inhaltsverzeichnis |
Einleitung
Warnhinweise:
Das Projekt ist noch nicht fertig und weitere Arbeit daran notwendig, jedoch hat zeigt der heutige Stand (24.06.2007), dass es funktionieren wird!
Heutiger Realisierungsstand:
Anzeige Uhrzeit, Innentemperatur, Bordnetzspannung und Auswertung einer ID ( $52C = Kühlwassertemperatur ).
Aktuelle Mängel
1. Uhrzeit z. Zt. nur Software - weicht daher zu stark ab - es wird eine "I2C - RTC" (= Hardware - Uhr) nachgerüstet.
2. Die Basic - Programme müssen optimiert werden, damit alle CAN - ID ausgewertet werden können.
3. Das Assembler - Programm des "RS232-Umsetzers" muß geringfügig geändert werden (Debug-Informationen entfernen).
4. Der Hardwareanschluß: bisher nur SW-Darstellung und Spannungsversorgung "CAN232" ungünstig gewählt.
Basic-Computer
Den Basic Computer von Joerg Wolfram kann man nicht kaufen, er muss selbst gebaut werden. Dafür ist die Software "Public Domain".
Die aktuelle Version kann unter www.mikrocontroller.net BASIC-Computer mit Mega32 heruntergeladen werden.
ACHTUNG:
Immer die letzte Version laden! In dem "gezippten" Archiv befindet sich Software, Schaltpläne, Platinenlayout und "Handbücher".
Für das Programmieren des "Atmel-Controllers" ist weiterhin ein Programmiergerät erforderlich.
Beschreibung
Dieses Projekt dient zur (frei konfigurierbaren) Anzeige von Daten auf dem MFD.
Die "Hardware" besteht aus einem von Joerg Wolfram entwickelten Einchip - Basic - Computer und einem von mir programmierten Atmel - Controller, der die Anbindung des CAN (z. Zt. über einen "CAN232" - später durch direkten Anschluß eines CAN-Transceiver - Chips )übernimmt.
Die "Software", also die verschiedenen "Bildschirme" und deren "Parametrierung" und "Datenversorgung", sind in "BASIC" programmiert und können relativ einfach eigenen Vorstellungen angepasst werden - die Programmierung des Controllers zur "CAN-Anbindung" erfolgte in "Assembler" (AVR-Studio).
Das "BASIC" entspricht ungefähr dem wohl fast jedem "Computerfreak" noch von "C64" bekannten Umfang, jedoch fehlt (leider) eine "Stringverarbeitung" komplett, die die Programmierung wesentlich vereinfacht hätte.
Für die "Grundfunktion" ist keine weitere Bedienung erforderlich, jedoch wird zur Einstellung der Uhrzeit einmalig eine beliebige "MF-2" Tastatur benötigt.
Idee
Anzeige der Uhrzeit im 24-Stunden-Format, Innentemperatur, Bordnetzspannung und weiterer Betriebsdaten auf dem MFD.
Vergleich einer grafischen mit einer Alphanumerischen Visualisierung
Realisierungsansätze
1. Der Einsatz eines OSD (On-Screen-Display) IC wurde verworfen, da z. T. abgekündigt oder schwer erhältlich.
2. Einbau eines "CAR-PC" wurde aus mehreren Gründen verworfen: hohe Kosten, Dauer Bootvorgang, ungenügender Bauraum
3. Als geeignet wurde "AVR-Chipbasic" von Joerg Wolfram befunden (Stromaufnahme ca. 150 mA).
4. Zunächst wurde das direkte Abgreifen der relevanten Fahrzeugsignale angedacht aber schnell verworfen.
5. Es gibt einige handelsübliche "CAN-Interfaces" - für den Einsatz mit "AVR-Chipbasic" ist der "CAN232" von LAWICE geeignet.
6. Erstes Problem: Die serielle Schnittstelle des "Chipbasic" ist nicht über die UART realisiert und kann NUR 1200 BAUD
7. Zweites Problem: Das "CAN232" von LAWICE kann minimal mit 2400 BAUD betrieben werden.
8. Als Lösung wurde ein 2. Atmel-Controller programmiert, der eine Umsetzung von I2C auf 57,6 kBAUD realisiert.
9. Anbindung an das MFD - für eine Farbdarstellung wird der Anschluß über RGBS oder bei FBAS ein zusätzlicher Chip benötigt.
10. Es muss noch ein "Signalumschalter" in die Hardware integriert werden.
11. Für die Bedienung weiterer "Features" könnte eine kleine Tastatur verwendet oder der "Touchscreen" eingebunden werden.
Praktische Ausführung
Wie so oft im Leben, gibt es verschiedene Ausführungsmöglichkeiten:
1. Aufbau auf Lochrasterplatine - verworfen.
2. Aufbau auf zwei Platinen von Joerg Wolfram ( Chipbasic und RS232-Umsetzer) - für den "Prototypen" geeignet.
3. Layout einer eigenen kompakten Platine: Chipbasic, CAN-Controller und MFD-Umschaltung erfolgt im Anschluß
Erste Ergebnisse
Zunächst wurde eine Platine komplett bestückt, um die Möglichkeiten zu prüfen - in dieser Zeit gab es mehrere "Updates" der "Firmware" - die aktuelle läuft auf einem "ATMEGA32" und kann 4 Programme mit je 51 Zeilen aufnehmen.
Der CAN
Der CAN ist ein Zweidraht - Bus (CAN_L und CAN_H) und wird am am "OBD2" - Stecker des Prius angeschlossen.
Er "arbeitet" beim Prius mit 500 kBAUD und "11-bit Identifiern" ( somit von $000 bis $7FF).
Im Gegensatz zu einfachen Protokollen, wie z. B. RS232, ist beim CAN keine einfache "Softwareschnittstelle" zu realisieren.
Daher wird wird beim Prototypen zur Anbindung ein "CAN232 - CAN-Dongle" von LAWICE - erhältlich beim "Elektronikladen" - verwendet.
Dieses wird über "ASCII" - Kommandos (z. B. auch beliebiges Terminalprogramm) gesteuert und sendet die empfangenen Daten ebenfalls im "ASCII-Format" zurück.
Das "CAN - Dongle" muß vom "Basic - Programm" parametriert und initialisiert werden.
Um eine akzeptable Datenmenge zu erreichen, müssen weiterhin die "Akzeptanzfilter" (Das sind dann die ID, welche "durchgelassen werden) richtig gesetzt werden.
Nach dem Senden einer Anforderung an den "CAN232" sendet dieses mit 57,6 kBAUD alle ID, die das Akzeptanzfilter durchlässt an den 2. Controller.
Die empfangenen Daten treffen im 2. Controller ein und werden bis zur zyklischen Abholung über den "I2C-Bus" gepuffert.
Später wird der 2. Controller (wahrscheinlich) direkt einen (preisgünstigen) "SJA1000 CAN-Controller" ansteuern, was den nötigen Bauraum weiter minimiert und die Kosten um ca. 80 Euro verringern wird.
Im "Basic-Programm" werden die Daten in ein "Array" geschrieben und der Inhalt mit den auszuwertenden ID verglichen.
Aus diesen Nachrichten werden die Bytes, die die gewünschten Informationen enthalten ausgefiltert, normiert und in Variablen geschrieben, die dann an die Balkengrafik "weitergereicht" werden.
Aufbau
Platine:
Wer nicht warten möchte, kann die Platine von Joerg Wolfram aufbauen und eigene "Experimente" durchführen.
Das Platinenlayout wird mit einem (geeigneten) Drucker auf eine (geeignete) Folie gedruckt und die (geeignete) Fotopostitiv - Platine damit belichtet.
Anschließend wird diese entwickelt, geätzt und gebohrt.
"Basic - Interpreter"
Die "Hex - Datei" mit dem "Basic - Interpreter" wird mittels eines geeigneten Programmiergerätes (z. B. STK500) in den Controller geladen ( = "geflasht").
Weiteres folgt
Einbau
folgt
Linksammlung
www.mikrocontroller.net BASIC-Computer mit Mega32 http://www.jcwolfram.de/projekte/avr/chipbasic32/main.php Hardware "AVR-Chipbasic" von Joerg Wolfram] http://www.jcwolfram.de/projekte/avr/chipbasic32/basic.php Basic - Befehle "AVR-Chipbasic" von Joerg Wolfram]
WIRD FORTGESETZT
--ksb 01:42, 25. Jun 2007 (CEST)