Grafische Anzeige CAN
Aus Prius Wiki
Inhaltsverzeichnis |
Einleitung
Warnhinweis:
Das Projekt ist noch nicht fertig und weitere Arbeit daran notwendig, jedoch hat zeigt der heutige Stand (24.06.2007), dass es funktionieren wird!
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 Controller, der die Anbindung des CAN ü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).
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 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.
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ätlicher Chip benötigt.
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 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 am "OBD2" - Stecker des Prius arbeitet mit 500 kBAUD und "11-bit Identifiern" ( somit von $000 bis $7FF).
Zur Anbindung wird beim Prototypen 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.
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.
WIRD FORTGESETZT
--ksb 00:49, 25. Jun 2007 (CEST)