Grafische Anzeige CAN
Aus Prius Wiki
Ksb (Diskussion | Beiträge) (→Der CAN - Anschluss) |
Kds ch (Diskussion | Beiträge) K (Korrekturen) |
||
(Der Versionsvergleich bezieht 190 dazwischenliegende Versionen mit ein.) | |||
Zeile 1: | Zeile 1: | ||
== Einleitung == | == Einleitung == | ||
- | |||
- | + | === Idee === | |
- | + | Anzeige von Betriebsdaten auf dem [[MFD]]. Alternativ kann die Anzeige auch auf einem seperaten [[RGBS]]-Monitor oder [[CAN-Display]] erfolgen - beispielsweise sind "RS-232" oder "I2C-Displays" direkt anschliess- und ansprechbar. Der Anschluss an den [[CAN]] - Bus des Prius ist in HW2.0 integriert (siehe: [[CAN-Display]]). | |
- | |||
- | |||
- | + | [[Bild:Grafische_Anzeige_Idee_.JPG]] | |
- | |||
- | |||
- | + | Aktuell angezeigte Daten (aktuelles Foto): | |
+ | |||
+ | * Uhrzeit im 24-Stunden-Format (Digitalanzeige) | ||
+ | * Innentemperatur (Digitalanzeige) | ||
+ | * Kühlwassertemperatur (Balkengrafik und Digitalanzeige) | ||
+ | * EM-Strom (Balkengrafik und Digitalanzeige) | ||
+ | * Geschwindigkeit in km/h (Balkengrafik und Digitalanzeige) | ||
+ | * Verbrauch (Balkengrafik und Digitalanzeige) | ||
+ | * Bordnetzspannung (Balkengrafik und Digitalanzeige) | ||
+ | * Tankinhalt | ||
+ | * Die angezeigten Balken wechseln die Farbe, wenn ein hinterlegter Schwellwert erreicht wird. Zunächst auf "gelb" und anschliessend auf "rot". | ||
+ | |||
+ | |||
+ | [[Bild:Grafische_Anzeige_CAN_Main_klein.JPG]] | ||
+ | |||
+ | |||
+ | Ausgabe auf dem MFD (oben) und / oder auf einem OLED - Display (unten). Das Display ist leider schwer zu fotografieren (Es sieht "live" sehr viel besser aus). | ||
+ | |||
+ | Diese Variante kann autark betrieben werden. Es wird nur der OBD2-Anschluss benötigt (siehe: [[CAN-Display]]) . | ||
+ | |||
+ | <gallery> | ||
+ | Bild:OLED-4-9L.JPG|Anzeige des Verbrauchs | ||
+ | Bild:OLED ABCDE H.JPG|Anzeige grosse Zeichen | ||
+ | Bild:OLED V1-9.JPG|Anzeige kleine Zeichen | ||
+ | Bild:OLED CANID H.JPG|Anzeige der CAN-ID | ||
+ | Bild:OLED_BAR3-4.JPG|Anzeige als Grafik | ||
+ | Bild:OLED_LITER D.JPG|Anzeige des Verbrauchs | ||
+ | Bild:OLED_ABCDE D.JPG|Anzeige grosse Zeichen | ||
+ | Bild:OLED CANID H.JPG|Anzeige der CAN-ID | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | <div style="vertical-align:top; margin:0; margin-top:10; border:3px solid #00FF00; padding:0.5em; background-color:#efefef; text-align:left;">'''An alle, die jetzt milde lächeln:''' | ||
+ | |||
+ | Fünf Hauptaspekte sprechen für den Einsatz dieses Basic - Computers: | ||
+ | |||
+ | 1) das hier in einem Chip sowohl die komplette Videosignalerzeugung (in [[NTSC]]) UND der eigentliche Basic - Rechner integriert ist. | ||
+ | |||
+ | 2) das Änderungen jederzeit im Fahrzeug ohne Entwicklungssystem möglich und sofort wirksam sind. | ||
+ | |||
+ | 3) das für die Änderung der Grafikgestaltung keine weitere Umgebung benötigt wird. | ||
+ | |||
+ | 4) das die Platine mit ihren I/O-Möglichkeiten praktisch wie für diesen Zweck gemacht ist. | ||
+ | |||
+ | 5) und "last but not least": vor allem die Kosten | ||
+ | </div> | ||
+ | |||
+ | === Warnhinweise === | ||
+ | |||
+ | <div style="vertical-align:top; margin:0; margin-top:10; border:3px solid #ff0000; padding:0.5em; background-color:#efefef; text-align:left;"> | ||
+ | |||
+ | '''Alle Angaben in diesem Artikel erfolgen ohne Gewähr. Auch wird über die Zulässigkeit der Verwendung mit dieser Veröffentlichung keinerlei Aussage getroffen.''' | ||
+ | |||
+ | |||
+ | Vor Anschluss an das Fahrzeug sollten folgende Punkte unbedingt geprüft werden: | ||
+ | |||
+ | * betriebssicherer Aufbau der gesamten Schaltung (Vibrationen usw.) | ||
+ | * Schaltung getrennt vom Fahrzeug in Betrieb genommen und funktionstüchtig | ||
+ | * zuverlässiges Betriebsverhalten ohne Ausfälle (keine "Wackelkontakte" oder "Aufhängen") | ||
+ | * minimale Leitungslänge zwischen OBD2 und CAN-Umsetzer sichergestellt | ||
+ | * es dürfen keinerlei Informationen auf den CAN gesendet werden | ||
+ | |||
+ | |||
+ | Beim Anschluss unbedingt beachten: | ||
+ | |||
+ | * Basic-Computer nur bei eingeschaltetem Fahrzeug mit Spannung versorgen | ||
+ | * Absicherung der Versorgungsleitung | ||
+ | |||
+ | |||
+ | Nach dem Anschluss sollte das Verhalten der Schaltung ausführlich im Stand geprüft werden: | ||
+ | |||
+ | * Alle Funktionen überprüfen in allen Betriebsarten | ||
+ | * Verhalten nach dem Aus- und Wiedereinschalten prüfen. | ||
+ | |||
+ | |||
+ | Vor dem Bewegen des Fahrzeuges ist unbedingt auf folgendes zu achten: | ||
+ | |||
+ | * sicherer Einbau aller Komponenten | ||
+ | * sichere Verlegung aller Kabel | ||
+ | </div> | ||
=== Basic-Computer === | === Basic-Computer === | ||
Zeile 24: | Zeile 102: | ||
Die aktuelle Version kann unter [http://www.mikrocontroller.net/topic/65156#new www.mikrocontroller.net BASIC-Computer mit Mega32] heruntergeladen werden. | Die aktuelle Version kann unter [http://www.mikrocontroller.net/topic/65156#new 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-[[Controller]]" ist weiterhin ein Programmiergerät erforderlich. | ||
+ | |||
Die Vorteile: | Die Vorteile: | ||
- | * | + | * Nach dem Einschalten sofort betriebsbereit ("booten" entfällt) |
- | * | + | * Keine mechanischen Laufwerke (Festplatte) erforderlich |
- | * | + | * Geringe Stromaufnahme (ca. 150 mA) |
- | * | + | * Geringe Größe |
+ | * NTSC oder PAL über Jumper wählbar (MFD benötigt [[NTSC]]) | ||
+ | * Autostart über Jumper aktivierbar | ||
- | + | * Programme werden im "[[Flash]]" des [[Controller]] gespeichert | |
- | + | * Interpreter - Programme können sofort gestartet und müssen nicht "compiliert" werden | |
+ | |||
+ | * Basic - Befehle können abgekürzt werden (z. B. "XC" anstelle "XCALL" oder das klassische "?" für "PRINT) | ||
+ | |||
+ | * Daten können im [[EEPROM]] des Controller gespeichert werden | ||
+ | |||
+ | * 8 Eingänge wahlweise als Analog- oder Digitaleingang nutzbar | ||
+ | |||
+ | * I2C - Schnittstelle zum Anschluss von LM75 Temperatursensoren | ||
+ | |||
+ | * Datenspeicher erweiterbar | ||
+ | |||
+ | * Programmaustausch zum PC über RS232 - Schnittstelle (1200 BAUD) | ||
+ | |||
+ | |||
+ | Die Nachteile: | ||
+ | |||
+ | * Weder "PC", "MAC" noch "C64" kompatibel | ||
+ | |||
+ | * Programme können z. Zt. nicht am PC sondern müssen auf dem Basic - Computer erstellt werden | ||
+ | |||
+ | * Programmspeicher begrenzt (z. Zt. 4x51 Zeilen) und nicht erweiterbar | ||
+ | |||
+ | * Keine Stringverarbeitung | ||
+ | |||
+ | * Serielle Schnittstelle (RS232) NUR 1200 BAUD | ||
+ | |||
+ | * Keine USB - Tastaturen anschliessbar | ||
- | |||
=== Beschreibung === | === Beschreibung === | ||
- | Dieses Projekt dient zur (frei konfigurierbaren) Anzeige von Daten auf dem MFD. | + | 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 selbst programmierten Atmel - [[Controller]], der die Anbindung des CAN (z. Zt. über einen "CAN232" - später durch direkten Anschluß eines CAN-Transceiver - Chips )übernimmt. | + | Die Ziffern- und Balkenanzeigen können fast beliebig nach eigenem Geschmack angeordnet werden, die Balken können z. B. sowohl vertikal (auf und ab) als auch horizontal (von links nach rechts) programmiert werden. |
+ | |||
+ | Die "Hardware" besteht aus einem von Joerg Wolfram entwickelten Einchip - Basic - Computer und einem zweiten selbst programmierten Atmel - [[Controller]], der die Anbindung des CAN (z. Zt. über einen "CAN232" - später durch direkten Anschluß eines CAN-Transceiver - Chips ) übernimmt - im Folgenden "I2C zu RS232 - Umsetzer" genannt. | ||
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). | 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. | 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. | ||
+ | |||
+ | Dafür sind umfangreiche I/O - Befehle vorhanden und das Basic ist "rasend schnell". | ||
Für die "Grundfunktion" ist keine weitere Bedienung erforderlich, jedoch wird zur Einstellung der Uhrzeit einmalig eine beliebige "MF-2" Tastatur benötigt. | Für die "Grundfunktion" ist keine weitere Bedienung erforderlich, jedoch wird zur Einstellung der Uhrzeit einmalig eine beliebige "MF-2" Tastatur benötigt. | ||
Zeile 57: | Zeile 174: | ||
- | + | === Weitere Anzeigemöglichkeiten === | |
- | + | * Geschwindigkeit in km/h oder miles/h | |
+ | |||
+ | * Anzeige l/100 km während der Fahrt oder l/h im Stand | ||
+ | |||
+ | * Restreichweite | ||
+ | |||
+ | * Türkontrollanzeige im Klartext oder Grafik | ||
+ | |||
+ | * [[DTC]]- Anzeige im Klartext | ||
+ | |||
+ | * Stoppuhr | ||
+ | |||
+ | * Aufzeichnung wichtiger Fahrtparameter | ||
+ | |||
+ | (Die o. g. Anzeigen sind noch nicht implementiert!) | ||
- | + | === Weitere Einsatzmöglichkeiten === | |
- | + | * Über- oder Unterspannungswarnung oder Abschaltung (zusätzliche Bauteile erforderlich) | |
+ | * Warnsignal bei Geschwindigkeitsüberschreitung | ||
- | |||
Zeile 86: | Zeile 217: | ||
7. Zweites Problem: Das "CAN232" von LAWICE kann minimal mit 2400 BAUD betrieben werden. | 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. | + | 8. Als Lösung wurde ein 2. Atmel-[[Controller]] programmiert, der eine Umsetzung von I2C auf RS232 mit 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. | 9. Anbindung an das MFD - für eine Farbdarstellung wird der Anschluß über [[RGBS]] oder bei [[FBAS]] ein zusätzlicher Chip benötigt. | ||
Zeile 93: | Zeile 224: | ||
11. Für die Bedienung weiterer "Features" könnte eine kleine Tastatur verwendet oder der "Touchscreen" eingebunden werden. | 11. Für die Bedienung weiterer "Features" könnte eine kleine Tastatur verwendet oder der "Touchscreen" eingebunden werden. | ||
+ | |||
== Praktische Ausführung == | == Praktische Ausführung == | ||
Zeile 100: | Zeile 232: | ||
1. Aufbau auf Lochrasterplatine - verworfen. | 1. Aufbau auf Lochrasterplatine - verworfen. | ||
- | 2. Aufbau auf zwei Platinen von Joerg Wolfram ( Chipbasic und RS232-Umsetzer) - für den "Prototypen" geeignet. | + | 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ß | 3. Layout einer eigenen kompakten Platine: Chipbasic, CAN-Controller und MFD-Umschaltung erfolgt im Anschluß | ||
+ | |||
=== Erste Ergebnisse === | === 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. | + | 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. Bereits mit den Möglichkeiten der ersten Version (20 Zeilen) konnte eine recht ansprechende Grafik erzeugt werden. |
Zeile 118: | Zeile 251: | ||
Bild:Grafische Anzeige STK.JPG|Atmel-Chip Programmierumgebung | Bild:Grafische Anzeige STK.JPG|Atmel-Chip Programmierumgebung | ||
Bild:AVR-Studio.JPG|AVR-Studio (Assembler) | Bild:AVR-Studio.JPG|AVR-Studio (Assembler) | ||
- | |||
Bild:Grafische_Anzeige_Basic-Beispiel_Grafik.JPG|Programmbeispiel: Balkengrafik | Bild:Grafische_Anzeige_Basic-Beispiel_Grafik.JPG|Programmbeispiel: Balkengrafik | ||
Bild:Grafische Anzeige Blockschaltbild.JPG|Blockschaltbild | Bild:Grafische Anzeige Blockschaltbild.JPG|Blockschaltbild | ||
+ | Bild:Grafische Anzeige Farbe Start.jpg|Auswahlmenü | ||
+ | Bild:Grafische Anzeige Farbe Test.jpg|Farbanschluss "Versuchsaufbau" | ||
</gallery> | </gallery> | ||
Zeile 129: | Zeile 263: | ||
Der [[CAN]] ist ein Zweidraht - Bus (CAN_L und CAN_H) und wird am am "OBD2" - Stecker des Prius angeschlossen. | 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). | + | Er "arbeitet" beim Prius mit 500 kBAUD und "11-bit Identifiern" (somit von $000 bis $7FF). |
+ | |||
+ | '''Achtung:''' | ||
+ | |||
+ | CAN - Nachrichten sind am OBD2 - Stecker erst ab "Stufe 2" (= Kontrolllampen an) bis ca. 10s nach dem Abschalten vorhanden. | ||
+ | |||
+ | |||
Im Gegensatz zu einfachen Protokollen, wie z. B. RS232, ist beim CAN keine einfache "Softwareschnittstelle" zu realisieren. | Im Gegensatz zu einfachen Protokollen, wie z. B. RS232, ist beim CAN keine einfache "Softwareschnittstelle" zu realisieren. | ||
Zeile 137: | Zeile 277: | ||
Dieses wird über "ASCII" - Kommandos (z. B. auch beliebiges Terminalprogramm) gesteuert und sendet die empfangenen Daten ebenfalls im "ASCII-Format" zurück. | Dieses wird über "ASCII" - Kommandos (z. B. auch beliebiges Terminalprogramm) gesteuert und sendet die empfangenen Daten ebenfalls im "ASCII-Format" zurück. | ||
- | + | Einige Einstellungen werden im "[[EEPROM]]" des "CAN - Dongle" gespeichert und können mittels Terminalprogramm vorgenommen werden ("Autopoll" und "Timestamp"). | |
+ | |||
+ | Andere müssen vom "Basic - Programm" nach jedem Einschalten initialisiert werden. Dies sind die "CAN-Baudrate" ("S6+CR = 500 kBaud) und das Öffnen des "CAN-Kanals" ("O+CR"). Um eine akzeptable Datenmenge zu erreichen, ist es erforderlich, den "Akzeptanzfilter" (Das sind dann die ID, welche "durchgelassen" werden) zu parametrieren ("M"- und "m"- Kommando). | ||
+ | |||
+ | Somit besteht die komplette Initialisierung nach jedem Einschalten aus: | ||
* CAN - BAUD - Rate setzen | * CAN - BAUD - Rate setzen | ||
* Akzeptanzfilter (Code und Maske) setzen | * Akzeptanzfilter (Code und Maske) setzen | ||
- | * CAN - Kanal öffnen | + | * zuletzt CAN - Kanal öffnen |
- | 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. | + | |
+ | |||
+ | Nach dem Senden einer Anforderung (A+CR) 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" im internen RAM (1kB - für "Insider" abzüglich "Stack") gepuffert. | Die empfangenen Daten treffen im 2. Controller ein und werden bis zur zyklischen Abholung über den "I2C-Bus" im internen RAM (1kB - für "Insider" abzüglich "Stack") gepuffert. | ||
Zeile 149: | Zeile 295: | ||
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. | 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 | + | Im "Basic-Programm" werden die Empfangsdaten in ein "Array" geschrieben und die ersten 4 Byte des Inhaltes mit einem 2. Array verglichen, dass die auszuwertenden ID enthält. |
+ | |||
+ | Sind beide gleich, wird die Position des auszuwertenden Zeichens und die Anzahl aus dem 2. Array geholt und diese Nibble von ASCII nach dezimal gewandelt und anschliessend in einem 3. Array gespeichert, dass dann die Nutzdaten enthält. | ||
- | + | Diese Nutzdaten werden in Variablen geschrieben, normiert und dann an die Balkengrafik "weitergereicht". | |
<gallery> | <gallery> | ||
Bild:Grafische Anzeige CAN Notebook.JPG|Versuchsaufbau CAN232 an Notebook | Bild:Grafische Anzeige CAN Notebook.JPG|Versuchsaufbau CAN232 an Notebook | ||
- | Bild:Grafische Anzeige CAN-Log 52x.JPG|Log der ID $520 und | + | Bild:Grafische Anzeige CAN-Log 52x.JPG|Log der ID $520 und $52C |
- | Bild:Grafische Anzeige CAN-ID- | + | Bild:Grafische Anzeige CAN-ID-Liste.JPG|Liste der auszuwertenden ID |
+ | Bild:Grafische_Anzeige_LIST_ID_DATA.jpg|Listing auf MFD (älterer Stand) | ||
+ | Bild:Grafische Anzeige Akzeptanzfilter.jpg|Akzeptanzfilter für diese ID | ||
+ | Bild:Grafische_Anzeige_CAN_leer.jpg|Stufe 1: keine CAN-Daten am OBD2 | ||
+ | Bild:Grafische_Anzeige_Basic_ID-Auswerten.JPG|Programmbeispiel: Auswertung einer CAN-ID | ||
+ | Bild:CAN-ID-klein.JPG|Auswertung von 5 CAN-ID | ||
</gallery> | </gallery> | ||
- | === Das BASIC - Programm === | + | === Das BASIC - Programm (im BASIC - Computer) === |
Das BASIC - Programm wertet die Daten vom CAN aus, berechnet die benötigten Daten und schreibt die Zeichen und Grafiken auf den Bildschirm. | Das BASIC - Programm wertet die Daten vom CAN aus, berechnet die benötigten Daten und schreibt die Zeichen und Grafiken auf den Bildschirm. | ||
- | Zur Zeit gibt es einen "Grundbildschirm" (siehe oben), | + | Zur Zeit gibt es einen "Grundbildschirm" (siehe oben), 5 weitere Grafikanzeigen (Batteriespannung, Innentemperatur, Verbrauch, Kühlmitteltemperatur und Geschwindigkeit jeweils der letzten Stunde. Diese Werte werden in das eeprom geschrieben und stehen daher auch nach dem Aus- und Wiedereinschalten zur Verfügung). Weiterhin ist eine Aufzeichnung der Fahrtparameter ("Fahrtenbuch") integriert. |
- | Zusätzlich noch ein "Konfigurationsmenü" für die Grundeinstellung. | + | |
+ | Zusätzlich noch ein "Konfigurationsmenü" für die Grundeinstellung: | ||
+ | |||
+ | * Uhrzeit | ||
+ | * Datum | ||
+ | * CAN 0=Aus, 1=normal (im Hintergrund), 3=Debug-Ausgabe | ||
+ | * Debug-Modus für weitere Variablen | ||
+ | |||
+ | Zur Überprüfung der CAN-Kommunikation gibt es weiterhin eine Anzeigemöglichkeit. | ||
<gallery> | <gallery> | ||
Bild:Grafische Anzeige Scr-Bar-Kom.JPG|Beispiel mit Kommentar | Bild:Grafische Anzeige Scr-Bar-Kom.JPG|Beispiel mit Kommentar | ||
+ | Bild:Grafische Anzeige Basic IO.JPG|I/O - Befehle (Ein- Ausgabe) | ||
+ | Bild:Grafische Anzeige Basic MAIN-KOM.JPG|Kommentiertes Listing Hauptbildschirm | ||
+ | Bild:Grafische Anzeige Farbe List.jpg|Listing auf MFD | ||
+ | Bild:Grafische_Anzeige_Farbe_MAIN.jpg|Ergebnis Hauptbildschirm | ||
+ | Bild:Grafische_Anzeige_Basic_BAR-KOM.JPG|Kommentiertes Listing weitere Bargrafik | ||
+ | Bild:Grafische Anzeige Farbe TEMP.jpg|Bargrafik Innentemperatur der letzten 60 Minuten | ||
+ | Bild:Grafische Anzeige Farbe BAT.jpg|Bargrafik Batteriespannung der letzten 60 Minuten | ||
+ | Bild:Grafische Anzeige Farbe FUEL.jpg|Bargrafik Verbrauch der letzten 60 Minuten | ||
</gallery> | </gallery> | ||
+ | |||
+ | === Das ASSEMBLER - Programm (im "I2C zu RS232-Umsetzer")=== | ||
+ | |||
+ | Keine Angst - man muß nicht wissen, wie es funktioniert - nur für jene, die es interessiert | ||
+ | |||
+ | |||
+ | Das Assembler - Programm wandelt die über den I2C-Bus (bzw. TWI = two wire interface) gesendeten Zeichen unverzögert und ungepuffert in RS232-Signale (57 kBAUD) um. | ||
+ | |||
+ | |||
+ | Die vom [[CAN232]] empfangenen Zeichen (57 kBAUD) werden im internen SRAM des 2. Controllers gepuffert, bis sie über den I2C-Bus abgeholt werden. | ||
+ | |||
+ | |||
+ | Im Detail passiert folgendes: | ||
+ | |||
+ | 1. Das Programm parametriert die TWI - Hardware des [[Controller]] als Slave mit der Adresse "$40" und | ||
+ | |||
+ | 2. die UART auf 8 bit, 2 Stopbit, keine Parität, 57 kBAUD. | ||
+ | |||
+ | 3. Nach dieser Initialisierung läuft das Programm in einer Endlosschleife, die die Ladungspumpe ansteuert. | ||
+ | |||
+ | 4. Ist ein Zeichen an der UART (RS232) eingetroffen, wird ein Interrupt ausgelöst und das Zeichen im SRAM gespeichert. | ||
+ | |||
+ | 5. Wird ein Zugriff auf das TWI detektiert, wird ebenfalls ein Interrupt ausgelöst und ein Zeichen aus dem SRAM gesendet. | ||
+ | |||
+ | 6. Dies passiert solange, bis (im Normalfall) alle Zeichen abgeholt oder | ||
+ | |||
+ | 7. der Pointer (auf die Zeichen im SRAM) durch einen Schreibzugriff zurückgesetzt wird. | ||
+ | |||
+ | |||
+ | Auf diese Weise wird erreicht, dass kein Zeichen verloren geht - ähnlich einem "Multitasking". | ||
+ | |||
+ | Dadurch, dass während eines Interrupts bestimmte Register "gerettet" und anschliessend "restauriert" werden müssen, ist das Programm etwas umfangreicher. | ||
+ | |||
+ | |||
+ | Hier mal in kleine (leicht verdauliche) Häppchen verpackt: | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische Anzeige Assembler DEF 1.JPG|Definitionen 1 | ||
+ | Bild:Grafische Anzeige Assembler DEF 2.JPG|Definitionen 2 | ||
+ | Bild:Grafische Anzeige Assembler VECTOR.JPG|Vektortabelle | ||
+ | Bild:Grafische Anzeige Assembler RESET.JPG|Reset | ||
+ | Bild:Grafische Anzeige Assembler LOOP.JPG|Endlosschleife | ||
+ | Bild:Grafische Anzeige Assembler SERINI.JPG|Initialisierung UART | ||
+ | Bild:Grafische Anzeige Assembler SERCOM.JPG|RS232 Kommunikation | ||
+ | Bild:Grafische Anzeige Assembler POINTER.JPG|Pointer | ||
+ | Bild:Grafische Anzeige Assembler TWI.JPG|I2C bzw. TWI | ||
+ | </gallery> | ||
+ | |||
+ | === Ideen zur Bedienung === | ||
+ | |||
+ | Grundsätzlich muss ein Umschalter zwischen der jeweils "normalen" und der neuen Anzeige nachgerüstet werden z.B.: | ||
+ | |||
+ | * Nachrüstung eines Original - Toyota - Tasters z.B. neben "EV-Modus" (s.u.) | ||
+ | * Eigenbau - Bedienteil mit weiteren (s.u.) Tastern z. B. unter der vorderen Getränkedosenklappe | ||
+ | * Infrarotfernbedienung | ||
+ | * Zeit- oder funktionsgesteuert (Digitalausgang des "Basic-Computers" schaltet ein, dann z.B. alle 10s Wechsel) | ||
+ | |||
+ | |||
+ | Für die Umschaltung zwischen den Modi der grafischen Anzeige: | ||
+ | |||
+ | * Ein- und Fortschaltung über einen Taster (jede Betätigung wechselt zur nächsten Anzeige) | ||
+ | * kleine PC-Tastatur (z. B. "Keypad") | ||
+ | * Taster auf Eigenbau - Bedienteil (s.o.) | ||
+ | * Infrarotfernbedienung | ||
+ | * Auswertung des MFD - Touchscreen | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische Anzeige Poti.jpg|Poti und Taster | ||
+ | Bild:Grafische Anzeige Tastenfeld.jpg|Widerstandscodiertes Tastenfeld | ||
+ | </gallery> | ||
+ | |||
+ | Ein Tastenfeld könnte z. B. "widerstandskodiert" aufgebaut und dann über nur 2 Leitungen an einen Analogeingang des Basic - Computers angeschlossen werden. Die Auswertung erfolgt dann über die unterschiedlichen Spannungswerte. | ||
== Aufbau == | == Aufbau == | ||
Zeile 178: | Zeile 419: | ||
- | + | ===Platinen=== | |
- | 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. | + | 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. Weiterhin sollten vor der Bestückung an geeigneter Stelle Befestigungsbohrungen angebracht werden, falls keine vorhandene Bohrung verwendet werden kann. |
+ | Es empfiehlt sich, die Platinenmaße etwas grösser zu wählen, damit ausreichender Platz für diese Bohrungen vorhanden ist. | ||
+ | Zur Zeit wird die Platine doppelt benötigt: | ||
- | + | * "Basic - Computer" (bis auf nicht benötigte Stecker voll bestückt) | |
- | + | * "I2C zu RS232 Umsetzer" (nur ATMEGA, Quarz, Kondensatoren und Schaltungsteil für RS232 geändert und zusätzlich mit 1 Transistor und 2 Widerständen bestückt) | |
+ | ===Bestückung=== | ||
- | "Basic - | + | '''Basic-Computer:''' |
+ | |||
+ | Gemäß Bestückungsplan von Joerg Wolfram vor Bestückung der Stecker muss überlegt werden, ob diese wirklich im Fahrzeug benötigt werden. Weiterhin sollten vor der Bestückung an geeigneter Stelle Befestigungsbohrungen angebracht werden, falls keine vorhandene Bohrung verwendet werden kann. Am Eingang sollte eine Verpolschutzdiode (1N4005) nachgerüstet und die 5V-Verbindung zur Klemme unterbrochen werden (versehentlicher Anschluss der Bordnetzspannung an diese würde die gesamte Schaltung sofort zerstören). | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische_Anzeige_Stückliste_2_Chipbasic.JPG|Hinweise bei Einsatz im PKW | ||
+ | Bild:Grafische_Anzeige_7805_Umbau.JPG|Umbau Spannungsregler (Verpolschutz) | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | '''I2C-RS232-Umsetzer:''' | ||
+ | |||
+ | Nur Controller, Quarz, Abblockkondensatoren (100nF) und alle Teile der RS232-Schnittstelle - zusätzlich muß "RxD" und "TxD" an die UART verdrahtet und ein weiterer Transistor, der RxD invertiert, eingelötet werden. Die Stromversorgung (5V) erfolgt über den I2C-Bus vom Basic-Computer. Weiterhin sollten vor der Bestückung an geeigneter Stelle Befestigungsbohrungen angebracht werden, falls keine vorhandene Bohrung verwendet werden kann. Die I2C-Adresse ist $40. | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische_Anzeige_RS232_UMB.JPG|Schaltungsänderung | ||
+ | Bild:Grafische_Anzeige_RS232_UMB_Text.JPG|Beschreibung | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | '''Temperatursensor:''' | ||
+ | |||
+ | Der Temperatursensor LM75 ist leider nur noch als SMD-Bauteil erhältlich. Da dieses Bauteil nur 8 "Beine" hat, kann es jedoch relativ leicht auf eine kleine SMD-Lochrasterplatine aufgelötet werden. Beim Prototypen wurde der Sensor auf einer separaten Lochrasterplatine aufgebaut und mit Heisskleber an der nur zur Befestigung eingelöteten 3-poligen Klemme der "TWI-RS232-Umsetzers" angeklebt. Die I2C-Adresse ist $90. | ||
+ | |||
+ | [http://www.datasheetarchive.com/search.php?t=0&q=LM75&manystr= Datenblatt LM75] | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische_Anzeige_LM75_Schaltung.JPG|Beschaltung und Anschluss | ||
+ | Bild:Grafische_Anzeige_Peripherie.JPG|Aufbauvariante | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | '''RTC:''' | ||
+ | |||
+ | Die RTC ist als "DIL"- oder "[[SMD]]"-Bauteil erhältlich und kann mit den paar zusätzlich benötigten Bauteilen (32,768 kHz Quarz, 22pF- und 100nF-Kondensator, 2 Dioden 1N4148, 2k7 Vorwiderstand und eine grüne [[LED]]) auf der o. g. Lochrasterplatine verbaut werden. Beim Prototypen wurde die RTC auf einer separaten Lochrasterplatine aufgebaut und mit Heisskleber an der 3-poligen Klemme des "Basic-Computers" angeklebt Die I2C-Adresse ist $A0. | ||
+ | |||
+ | [http://www.datasheetarchive.com/search.php?t=0&q=PCF8583&manystr=&sub.x=37&sub.y=14 Datenblatt PCF8583] | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische Anzeige RTC Schaltung.JPG|Beschaltung und Anschluss | ||
+ | Bild:Grafische_Anzeige_Peripherie.JPG|Aufbauvariante | ||
+ | Bild:Grafische Anzeige RTC Belegung.JPG|Speicherbelegung | ||
+ | Bild:Grafische_Anzeige_RTC.JPG|Ansicht RTC | ||
+ | </gallery> | ||
+ | |||
+ | ===Basic - Interpreter=== | ||
Die "Hex - Datei" mit dem "Basic - Interpreter" wird mittels eines geeigneten Programmiergerätes (z. B. STK500) in den Controller geladen ( = "geflasht"). | Die "Hex - Datei" mit dem "Basic - Interpreter" wird mittels eines geeigneten Programmiergerätes (z. B. STK500) in den Controller geladen ( = "geflasht"). | ||
+ | Das controllerinterne EEPROM muß für die Funktion nicht programmiert werden, | ||
+ | es sei denn, es soll eine identische Kopie einschliesslich aller Einstellungen | ||
+ | und "Log- Daten" erzeugt werden. | ||
+ | Extrem wichtig für die Funktion ist das Setzen der richtigen "Fuses". Dies sind Konfigurationsparameter, die z. B. die Taktquelle auswählen. | ||
- | + | <gallery> | |
+ | Bild:Grafische Anzeige MEGA32_Prog.JPG|Erfolgreiche Programmierung | ||
+ | Bild:Grafische Anzeige MEGA32_Liefer.JPG|Fuses Lieferzustand | ||
+ | Bild:Grafische Anzeige MEGA32 Fuses.JPG|Fuses für "Chip-Basic | ||
+ | </gallery> | ||
- | + | ===TWI - RS232 - Firmware=== | |
+ | Die "Hex - Datei" mit der "TWI - RS232 - Firmware" wird mittels eines geeigneten Programmiergerätes (z. B. STK500) in den Controller geladen ( = "geflasht"). | ||
+ | Das controllerinterne EEPROM muß nicht programmiert werden. | ||
- | + | ===Inbetriebnahme des Gesamtsystems=== | |
+ | '''Zusammenschalten der Komponenten''' | ||
+ | |||
+ | Zur Inbetriebnahme des Gesamtsystems müssen folgende Verbindungen hergestellt werden: | ||
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische Anzeige Verbindung.JPG|Verbindungen | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | '''1. Basic-Computer''' | ||
+ | |||
+ | Die erste Inbetriebnahme sollte ohne gesteckten [[Controller]] erfolgen, damit die 5V-Versorgung kontrolliert werden kann. Zur Stromversorgung ist ein 12V - Netzteil oder ein Motorrad - Akku zu verwenden. | ||
+ | |||
+ | Ist die 5V-Versorgung in Ordnung, Spannung wieder ausschalten und den Controller mit "Chipbasic" richtig herum (Kerbe) und mit allen "Beinen" vorsichtig in den Sockel stecken - ggf die Pins vorsichtig an einer Tischkante in Position biegen. | ||
+ | |||
+ | <div style="vertical-align:top; margin:0; margin-top:10; border:3px solid #ff0000; padding:0.5em; background-color:#efefef; text-align:left;"> | ||
+ | |||
+ | '''ACHTUNG: DIESER CONTROLLER MUSS MIT DER CHIPBASIC-FIRMWARE PROGRAMMIERT SEIN, ANDERNFALLS IST KEINERLEI FUNKTION GEGEBEN !''' | ||
+ | |||
+ | </div> | ||
+ | |||
+ | |||
+ | Anschliessend kann der Anschluss an einem Fernseher mit [[Videoeingang]] erfolgen - am besten ein | ||
+ | Gerät mít "gelben Chincheingang". Die Darstellung erfolgt dann in schwarz-weiß mit Graustufen. | ||
+ | |||
+ | Es wird zunächst kein Jumper gesteckt. | ||
+ | |||
+ | Alternativ kann ein (provisorischer) Adapter von D-Sub auf [[SCART]] (gemäß "Chipbasic-Adapters") angefertigt werden. Zum Teil wird eine (im Plan nicht angegebene) zusätzliche Schaltspannung von 8-12V an "Pin 8" der SCART-Buchse benötigt, dies hängt vom Baujahr des Fernsehers ab. Die Bildschirmdarstellung erfolgt dann in Farbe. | ||
+ | |||
+ | Wichtig: Die im Schaltplan angegebene Anschlussbelegung gilt für das Anlöten an einen Stecker ! | ||
+ | |||
+ | Evtl. sollte bei unstabilen Bild und Multinorm-Gerät der "[[NTSC]]"-Jumper" gesteckt werden (wird auch von [[MFD]] benötigt). | ||
+ | |||
+ | Anschliessend wieder einschalten und prüfen, ob der Startbildschirm angezeigt wird. | ||
+ | |||
+ | Ist dies der Fall, so kann eine beliebige "MF2"-Tastatur angeschlossen, programmiert und geprüft | ||
+ | werden. | ||
+ | |||
+ | Solange keine weitere Hardware angesprochen wird, ist der "Basic-Computer" alleine voll nutzbar | ||
+ | und kann auch als Lern, Spiel- oder Steuercomputer verwendet werden. | ||
+ | |||
+ | |||
+ | '''2. Temperatursensor''' | ||
+ | |||
+ | Leider wird der LM75 nur noch als [[SMD]]-Bauteil angeboten. Daher wird dieser auf ein kleines Stück einer SMD-Lochrasterplatine gelötet (Adresse "A0-A2" an Masse legen) und an einer Stelle des Gehäuses positioniert, wo der Meßwert nicht durch Abwärme anderer Bauteile verfälscht wird. Die Anschlussleitungen (+5V, SDA, SCL und GND) sollten möglichst kurz gehalten werden (Skizze siehe oben). | ||
+ | |||
+ | Das Auslesen des (ersten) Temperatursensors erfolgt über den Befehl "Temp(0)". Es können maximal | ||
+ | acht Sensoren angeschlossen werden (Adresseinstellung an den Sensoren dann "000 - 111"). | ||
+ | |||
+ | |||
+ | '''3. RTC (Real Time Clock)''' | ||
+ | |||
+ | Die "RTC" ist sowohl in "DIL" als auch als "SMD-Bauteil" erhältlich und kann mit auf die | ||
+ | Lochrasterplatine montiert werden - zusätzlich wird nur der 32,768 kHz Quarz, ein 22pF und ein | ||
+ | 100nF Kondensator, 2 Dioden und eine 1,5V-Batterie zur Pufferung benötigt (Skizze siehe oben). | ||
+ | |||
+ | Das Ansprechen erfolgt über den "ICOMM" Befehl (z. B. "IC A0,1210,1" schreibt ein Byte). | ||
+ | |||
+ | Zur Beachtung: Die Daten der RTC sind BCD-kodiert und müssen daher in Dezimalzahlen gewandelt | ||
+ | werden ! | ||
+ | |||
+ | |||
+ | '''4. "RS232 zu I2C" - Umsetzer''' | ||
+ | |||
+ | Die erste Inbetriebnahme sollte ohne gesteckten [[Controller]] erfolgen, damit die 5V-Versorgung kontrolliert werden kann. | ||
+ | |||
+ | Ist diese in Ordnung, Spannung wieder ausschalten und den Controller mit "TWI-RS232" richtig herum (Kerbe) und mit allen "Beinen" vorsichtig in den Sockel stecken. | ||
+ | |||
+ | <div style="vertical-align:top; margin:0; margin-top:10; border:3px solid #ff0000; padding:0.5em; background-color:#efefef; text-align:left;"> | ||
+ | |||
+ | '''ACHTUNG: DIESER CONTROLLER MUSS MIT DER "TWI-RS232"-FIRMWARE PROGRAMMIERT SEIN, ANDERNFALLS IST KEINERLEI FUNKTION GEGEBEN !''' | ||
+ | |||
+ | </div> | ||
+ | |||
+ | |||
+ | |||
+ | '''1. Stufe "Terminalprogramm"''' | ||
+ | |||
+ | Anstelle des "CAN232" wird ein PC mit Terminalprogramm angeschlossen. Nach dem Start des | ||
+ | "Basic-Computers" werden zunächst die an den "CAN232" gesendeten Konfigurationsdaten (Baudrate, Akzeptanzfilter) angezeigt. Anschliessend wird zyklisch ein Zeichen und "CR" gesendet. | ||
+ | |||
+ | Eingegebene Zeichen werden in der "CAN-Anzeige" des "Basic-Computers" angezeigt. | ||
+ | |||
+ | Werden Dateien übertragen, so wird deren Inhalt angezeigt, falls diese druckbare Zeichen enthalten. | ||
+ | |||
+ | Enthält diese Datei "CAN-ID" mit der richtigen Syntax, so werden diese angezeigt | ||
+ | (z. B.: "t52C"). Sind weiterhin ID enthalten, die im "Basic-Programm" hinterlegt sind, werden diese ausgewertet und die ausgerwerteten Daten angezeigt. | ||
+ | |||
+ | |||
+ | '''2. Stufe "manuell erzeugte Test-Daten"''' | ||
+ | |||
+ | Mit dem "Editor" oder "Notepad" wird eine Test-Datei editiert. Diese besteht aus der | ||
+ | auszuwertenden ID und den Nutzdaten. | ||
+ | |||
+ | Der ID muß ein "t" als Präfix vorangestellt werden - Beispiel: | ||
+ | |||
+ | t52C22350 ist die ID für Kühlmitteltemperatur | ||
+ | das 2. Byte ($50) sind die Nutzdaten | ||
+ | |||
+ | Die so erzeugten Testdaten werden z. B. mit dem "Hyperterminal" über "sende" und "Text" | ||
+ | an den "RS232 zu I2C"-Umsetzer gesendet. | ||
+ | |||
+ | '''3. Anschluss "CAN232"''' | ||
+ | |||
+ | Am Rechner wird ein Terminalprogramm - z. B. "Hyperterminal" | ||
+ | gestartet. Die Einstellungen sind: | ||
+ | |||
+ | Verbindung: 57,6 kBAUD - keine Parität - 2 Stoppbit | ||
+ | Terminal: Echo | ||
+ | |||
+ | Der "CAN232" sollte auf folgende Befehle antworten: | ||
+ | (Achtung: Gross- und Kleinschreibung beachten! "CR"=Return) | ||
+ | |||
+ | "V" und "CR": Versionsanzeige z. B. "V2223" | ||
+ | "N" und "CR": Seriennummer z. B. "N0815" | ||
+ | |||
+ | Der "CAN232" antwortet mit "CR" = OK und "Bell" = Fehler | ||
+ | |||
+ | Anschliessend kann folgende Konfiguration erfolgen: | ||
+ | |||
+ | "X1" Autopoll ein | ||
+ | "T0" Timestamp aus | ||
+ | "U1-6" RS232-BAUD-Rate (default 57 kBAUD) | ||
+ | |||
+ | Diese drei Einstellungen werden im EEPROM des "CAN232" | ||
+ | gespeichert. Alle anderen sind nach dem Ausschalten | ||
+ | nicht mehr vorhanden ! | ||
+ | |||
+ | Kommunikation mit dem Prius erfolgt mit 500 kBAUD | ||
+ | |||
+ | "S6" Einstellen der CAN-Geschwindigkeit | ||
+ | |||
+ | Zur Begrenzung der Anzahl der übertragenen Nachrichten dient: | ||
+ | |||
+ | "Mxxxxxxxx" Akzeptanzfilter - Code | ||
+ | "mxxxxxxxx" Akteptanzfilter - Maske | ||
+ | |||
+ | In der Grundeinstellung nach dem Einschalten (=Default) | ||
+ | werden ALLE Nachrichten durchgelassen ! | ||
+ | |||
+ | Für die Berechnung des Akzeptanzfilters gibt es auf der | ||
+ | Seite von [http://www.vassfamily.net/ToyotaPrius/ Attilla Vass] ein C-Programm, das vor Benutzung | ||
+ | compiliert werden muss. | ||
+ | |||
+ | |||
+ | '''4. Stufe "Anschluss an CAN"''' | ||
+ | |||
+ | Zum Anschluss an das Fahrzeug wird ein "OBD2"-Stecker benötigt. | ||
+ | Angeschlossen werden 4 Leitungen: "CANH", "CANL", "+12V" und "GND". | ||
+ | |||
+ | Die CAN-Leitung ist verdrillt auszuführen. | ||
+ | |||
+ | Am Besten möglichst kurze Leitung bis zum "CAN232"-Umsetzer und | ||
+ | von dort über geschirmte Leitung bis zum "TWI-RS232-Umsetzer". | ||
+ | |||
+ | Auf der Seite des "CAN232" ist ein 120 Ohm Terminierungswiderstand | ||
+ | erforderlich. | ||
+ | |||
+ | |||
+ | '''5. Stufe "Log-Datei"''' | ||
+ | |||
+ | "CAN232" an RS232-Schnittstelle eines Notebook anschliessen, | ||
+ | Akzeptanzfilter manuell setzen, CAN-Kanal öffnen und eine Fahrt | ||
+ | "mitloggen". Mit den so gewonnenen Daten kann diese Fahrt beliebig | ||
+ | oft "wiederholt" werden und somit die einwandfreie Funktion der | ||
+ | "Grafischen Anzeige" vollständig geprüft werden. | ||
+ | |||
+ | Hiermit wird gleichzeitig das Anschlusskabel und der "CAN232" | ||
+ | auf einwandfreie Funktion geprüft. | ||
+ | |||
+ | |||
+ | '''6. Stufe "Anschluss der grafischen Anzeige an Fahrzeug"''' | ||
+ | |||
+ | - ganz ausschalten | ||
+ | - Verbindung "Basic-Computer" zu "MFD" herstellen | ||
+ | - Versorgungsspannung anschliessen | ||
+ | - Fahrzeug einschalten | ||
+ | - Grundfunktion "Basic-Computer" und "TWI-RS232" prüfen | ||
+ | - CAN anschliessen und alle Funktionen IM STAND prüfen. | ||
+ | |||
+ | |||
+ | |||
+ | Weiteres folgt | ||
== Einbau == | == Einbau == | ||
- | + | ===Anschluss an Navigationssystem=== | |
+ | Bei Einschleifen in das Signal des [[Navigationssystem]]s ist der Einbau in ein Trittschutzgehäuse und die Montage desselben auf dem Navigationssystem oder [[JBL-Verstärker]] sinnvoller. | ||
+ | |||
+ | Ganz einfach ist es, wenn man bereits die [[Rückfahrkamera an MFD]] eingebaut hat, denn die HW2.0 ist darauf ausgelegt: | ||
+ | |||
+ | * Das Kabel vom Konverter zu MFD und NAVI wird abgezogen und auf einen Stecker der Platine gesteckt | ||
+ | |||
+ | * Die Verbindung zwischen der Platine und dem Konverter wird mit einem kurzen Kabel (abgeschirmt, 9-polig-D-SUB-Stecker auf 9-polig-D-SUB-Stecker) hergestellt. | ||
+ | |||
+ | * Die Video-Umschaltung ist auf der Platine integriert. | ||
+ | |||
+ | ===Anschluss an Bordcomputer=== | ||
+ | |||
+ | Bei Einschleifen in das Signal des "[[Bordcomputer]]" ist der Einbau unter dem "Center - Speaker" denkbar - hier muß dann nur noch der CAN (2 Drähte) und das Bedienteil angeschlossen werden. | ||
+ | |||
+ | |||
+ | |||
+ | Weiteres folgt | ||
== Anschluss == | == Anschluss == | ||
- | Modelljahr bis Ende 2005 | + | ===Modelljahr bis Ende 2005=== |
Zum Anschluß an das [[MFD]] mit Farbwiedergabe kann das Signal entweder in das [[RGBS]] Signal des "Bordcomputers" oder des Navigationssystems eingespeist werden - es wird weiterhin ein Umschalter benötigt, der z. B. über ein Relais (4 x UM) realisiert werden kann. | Zum Anschluß an das [[MFD]] mit Farbwiedergabe kann das Signal entweder in das [[RGBS]] Signal des "Bordcomputers" oder des Navigationssystems eingespeist werden - es wird weiterhin ein Umschalter benötigt, der z. B. über ein Relais (4 x UM) realisiert werden kann. | ||
Zeile 215: | Zeile 714: | ||
- | |||
- | + | Prinzip der Signal - Umschaltung: | |
- | Für Farbwiedergabe über den Kameraanschluss wird eine weitere Schaltung (CPLD) benötigt: [http://www.jcwolfram.de/projekte/vhdl/fbas_enc/main.php FBAS -Encoder]. Die Umschaltung kann ebenfalls über einen Schalter ( 1 x UM) erfolgen. | + | |
+ | [[Bild:RGB-Umschalter.JPG]][[Bild:Grafische Anzeige Umschalter.JPG]] | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | [[Bild:Grafische Anzeige Videoumschalter.JPG]] | ||
+ | |||
+ | |||
+ | Ansicht des auf Lochrasterplatine aufgebauten Videoumschalter im Prototypen. Der rechte obere D-SUB-Verbinder führt zum MFD-Adapter (RGBS), der rechte untere zum Kamera-Konverter. Der linke obere D-SUB-Verbinder wird an den Basic-Computer angeschlossen. Es werden die Pin 3,6,7 und 9 des mit dem MFD verbundenen SUB-D-Stecker auf den Basic-Computer geschaltet. Der Ruhekontakt der Relais liegt jeweils in der Verbindung zum Konverter. Dadurch ist der Einschaltzustand der gewohnte: Navigationsbildschirm. Bei Einlegen des Rückwärtsganges wird auf die Kamera umgeschaltet - siehe: [[Rückfahrkamera an MFD]]. Bei Betätigung eines Schalters ziehen die Relais an und schalten Pin 3,6,7 und 9 auf den Basic-Computer (Pin 1,2,3,5 und 9 des Video-D-SUB). | ||
+ | |||
+ | |||
+ | Anmerkung: Es gibt Spezial-IC, die auch zwischen mehreren RGBS-Signalen umschalten können - | ||
+ | leider sind diese schwer erhältlich, recht teuer und dazu SMD. | ||
+ | |||
+ | ===Modelljahr ab 2006=== | ||
+ | |||
+ | Zum Anschluß an das MFD in "schwarz/weiss" kann ein Kameraeingang (wenn vorhanden) direkt verwendet werden. Die Umschaltung kann über einen Schalter (1 x UM) erfolgen. | ||
+ | |||
+ | Für Farbwiedergabe über den Kameraanschluss wird eine weitere Schaltung (CPLD) benötigt: [http://www.jcwolfram.de/projekte/vhdl/fbas_enc/main.php FBAS - Encoder]. Die Umschaltung kann ebenfalls über einen Schalter (1 x UM) erfolgen. | ||
Alternativ dazu Einspeisung in den RGBS - Signalweg des "Bordcomputers". Es wird dann ebenfalls ein Umschalter benötigt, der z. B. über ein Relais (4 x UM) realisiert werden kann. | Alternativ dazu Einspeisung in den RGBS - Signalweg des "Bordcomputers". Es wird dann ebenfalls ein Umschalter benötigt, der z. B. über ein Relais (4 x UM) realisiert werden kann. | ||
Zeile 227: | Zeile 744: | ||
Weiteres folgt | Weiteres folgt | ||
- | == | + | == Material == |
+ | |||
+ | <gallery> | ||
+ | Bild:Grafische_Anzeige_Stückliste_1_Chipbasic.JPG|Vorläufige Stückliste "Basic-Computer" | ||
+ | Bild:Grafische_Anzeige_Stückliste_2_Chipbasic.JPG|Hinweise bei Einsatz im PKW | ||
+ | </gallery> | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | Weiteres folgt | ||
+ | |||
+ | |||
+ | == Änderungen == | ||
+ | |||
+ | === heutiger Stand (14.04.2008) === | ||
+ | |||
+ | <gallery> | ||
+ | Bild:CANDISP-HW20-GRAF.JPG|Anzeige Grafik + Daten | ||
+ | Bild:CANDISP-HW20-ID.JPG|Anzeige CAN-ID | ||
+ | Bild:CANDISP-HW20-CANSET.JPG|Anzeige CAN-Setup | ||
+ | Bild:CANDISP-HW20-HV.JPG|Anzeige der Werte Hybridbatterie | ||
+ | </gallery> | ||
+ | |||
+ | HW2.0 fertiggestellt: | ||
+ | |||
+ | * kompakte Leiterplatte 100 x 80mm (doppelseitig, SMD) | ||
+ | * Stromversorgung für Controller und OLED | ||
+ | * CAN-Interface (High-Speed) integriert | ||
+ | * OLED steckbar - aktuell monochromes Grafikdisplay | ||
+ | * Echtzeituhr (RTC) integriert (Uhrzeit und Datum) | ||
+ | * Temperatursensor integriert | ||
+ | * TWI-Erweiterungsschnittstelle | ||
+ | * RS232-Schnittstelle | ||
+ | * Videoumschalter integriert | ||
+ | * Anschlüsse: CAN, MFD, Konverter, RS232, TWI, Analog | ||
+ | |||
+ | |||
+ | SW2.0 fertiggestellt: | ||
+ | |||
+ | * Komplette CAN-Kommunikation inkl. Auswertung der ID | ||
+ | * Setup für CAN-Baudrate (auch für andere Fahrzeuge) | ||
+ | * Setup der auszuwertenden ID | ||
+ | * OLED-Ansteuerung - Grafik ähnlich der auf MFD | ||
+ | * viele neue Anzeigen z.B.: HV-Spannung und SOC | ||
+ | |||
+ | |||
+ | Merkmale der CAN-Display-Variante (autark): | ||
+ | |||
+ | * Nur OSD2-Anschluss benötigt | ||
+ | * Bedienung über 10 Tasten | ||
+ | * automatische Umschaltung der Anzeigen (abschaltbar) | ||
+ | * kompakte Bauform | ||
+ | * Stromaufnahme mit OLED-Anzeige 50 mA | ||
+ | |||
+ | |||
+ | === Realisierungsstand (18.02.2008) === | ||
+ | |||
+ | SJA1000 Software fertiggestellt: | ||
+ | |||
+ | * Routinen für Initialisierung | ||
+ | * Lesen und Schreiben des SJA RAM | ||
+ | * Receive - Interrupt | ||
+ | * Auswertung der ID | ||
+ | |||
+ | |||
+ | === Realisierungsstand (03.02.2008) === | ||
+ | |||
+ | Bisher arbeitete das Gerät mit einem käuflichen CAN-Interface. | ||
+ | |||
+ | Heute wurde ein "SJA1000" (preiswerter CAN-Controller) angeschlossen und mit der Programmierung der Routinen (Initialisierung und Abfrage) begonnen. | ||
+ | |||
+ | * Anschluss für SJA1000 durchgeführt | ||
+ | * Routinen für SJA1000 begonnen | ||
+ | * Anschluss für OLED - Display überarbeitet | ||
+ | * Routinen für OLED - Display ergänzt | ||
+ | |||
+ | === Realisierungsstand (08.12.2007) === | ||
+ | |||
+ | Für die angestrebte Einplatinenlösung musste die Software um einige Punkte erweitert werden: | ||
+ | |||
+ | * Die vollständige Auswertung der CAN-Botschaften im TWI-Umsetzer ist realisiert. | ||
+ | |||
+ | * Die (Nutz-) Anzeigedaten werden bereits fertig aufbereitet an den Basic-Computer übertragen. | ||
+ | |||
+ | * So werden hier nur noch die 15 benötigten Byte anstelle hunderter nicht benötigter ausgewertet. | ||
+ | |||
+ | * Die übertragenen ID und die darin enthaltenen Nutzdaten sind in der vorliegenden Version noch fest in Tabellen im Assembler-Programm hinterlegt. | ||
+ | |||
+ | * Zur Zeit wird dieses noch um ein Konfigurationsmenü erweitert, um eine flexible Eingabe und das Abspeichern der anzuzeigenden ID und übertragenen Nutzdaten im EEPROM zu ermöglichen. | ||
+ | |||
+ | * Dadurch wird ebenfalls eine Anwendung als "Stand-alone-Einzelgerät" mit eigenem Display (ohne Basic-Programm) möglich, dass Daten bestimmter ID oder auch eine Berechnung aus mehreren ID auf einem geeigneten Display (7-Segment, LCD oder OLED) ausgibt. | ||
+ | |||
+ | * Offen ist noch die Initialisierung und Abfrage des CAN-Controller-Chip und die Ansteuerung der Displays für "Stand-Alone-Betrieb". | ||
+ | |||
+ | === Realisierungsstand zum 2. Priustreffen in Münster (11.11.2007) === | ||
+ | |||
+ | '''Basic-Programm''' | ||
+ | |||
+ | * Leider "verlor" der Basic-Controller auf dem Weg nach Münster einige Programmteile und war nicht voll funktionstüchtig | ||
+ | |||
+ | |||
+ | '''Hardware''' | ||
+ | |||
+ | * Zweiter Prototyp in einem kompakten Gehäuse (3 Platinen und Kamerakonverter) | ||
+ | * Abgesetzter Temperaturfühler für Innentemperatur | ||
+ | |||
+ | |||
+ | === Realisierungsstand (22.08.2007) === | ||
+ | |||
+ | '''Basic-Programm''' | ||
+ | |||
+ | * Auswertung beliebiger CAN-ID aus einer Liste (Eintrag ID und Byte-Nr.) | ||
+ | * Bearbeitung der Auswertung im Hintergrund | ||
+ | * RTC-Auswertung integriert | ||
+ | |||
+ | |||
+ | '''Assembler-Programm''' | ||
+ | |||
+ | * 750 Byte Puffer, 256 Byte Stack | ||
+ | * Echo beseitigt ([[Bug]]) | ||
+ | * Pointer begrenzt | ||
+ | * Meldungen an TWI integriert (Versionsanzeige) | ||
+ | |||
+ | |||
+ | '''Hardware''' | ||
+ | |||
+ | * Anschluss über [[RGBS]] (Farbdarstellung) | ||
+ | * RTC (Real Time Clock) für aktuelle Uhrzeit und Datum nachgerüstet | ||
+ | |||
+ | |||
+ | === Offene Punkte (22.08.2007) === | ||
+ | |||
+ | * Routen einer kompakten Leiterplatte (ca. 100 x 80mm) mit allen benötigten Bauteilen (Einplatinenlösung) | ||
+ | |||
+ | |||
+ | === Realisierungsstand zum 1. Priustreffen in Münster (24.06.2007) === | ||
+ | |||
+ | * Anzeige der Uhrzeit im (24h-Format), Innentemperatur und Bordnetzspannung (Grundanzeige) | ||
+ | * Auswertung einer ID ($52C = Kühlwassertemperatur). | ||
+ | * Bei Verzicht auf Unteranzeigen oder des Fahrtenbuches konnten auch mehrere CAN-ID ausgewertet werden. | ||
+ | * Bei Optimierung der Basic - Routinen "passen" alle o. g. Funktionen in die 4x51 Zeilen. | ||
+ | * Vier weitere Unteranzeigen (Spannung, Innen-, Kühlwassertemperatur, Verbrauch) der letzten Stunde | ||
+ | * Fahrtenbuch (zur Zeit 25 Einträge mit Datum und Uhrzeit Fahrtbeginn und Ende) | ||
+ | * Konfigurationsmenü (Uhrzeit, Datum, CAN, Demo-Betrieb) | ||
+ | * Anzeige der eintreffenden CAN-ID (LOG) | ||
+ | * Menü zum Löschen des EEPROM | ||
+ | * CAN - Initialisierung zu Debug - Zwecken | ||
+ | |||
+ | === Mängel zum Priustreffen (24.06.2007) === | ||
+ | |||
+ | 1. Uhrzeit war nur in Software realisiert und wich daher zu stark ab - Abhilfe "I2C - RTC" (= Hardware - Uhr) | ||
+ | |||
+ | 2. Die Basic - Programme mussten optimiert werden, damit mehrere CAN - ID ausgewertet werden können. | ||
+ | |||
+ | 3. Das Assembler - Programm des "RS232-Umsetzers" musste geringfügig geändert werden (Debug-Informationen entfernen). | ||
+ | |||
+ | 4. Der Hardwareanschluß war nur mit SW-Darstellung realisiert und die Spannungsversorgung "CAN232" ungünstig gewählt. | ||
+ | |||
+ | == Ausblicke == | ||
Der Befehlssatz und speziell Grafikauflösung und die Anzahl der Farben wurde von Joerg Wolfram im Laufe der Entwicklung verbessert - er postete vor kurzer Zeit, dass mit einem leistungsfähigeren Controller noch einiges möglich sei. | Der Befehlssatz und speziell Grafikauflösung und die Anzahl der Farben wurde von Joerg Wolfram im Laufe der Entwicklung verbessert - er postete vor kurzer Zeit, dass mit einem leistungsfähigeren Controller noch einiges möglich sei. | ||
+ | |||
+ | * Die neueste Version "ChipBasic2" wurde am 19.05.2009 veröffentlicht | ||
+ | * 8 Programme a 95 Zeilen | ||
+ | * Mehrere Videomodi | ||
+ | * Link zum Komplettbausatz des "BASIC-Computers" eingefügt | ||
+ | |||
+ | |||
+ | Sobald ein endgültiger Stand aller sinnvoll anwendbarer CAN-ID vorhanden ist, könnte die komplette Auswertung in den 2. Controller ausgegliedert werden. Dadurch würde ein Grossteil (ca. 40%) des Basic - Speichers für zusätzliche Funktionen frei. | ||
== Linksammlung == | == Linksammlung == | ||
+ | |||
+ | [http://www.mikrocontroller.net/topic/88481#new www.mikrocontroller.net Erweiterter BASIC-Computer mit Mega644] | ||
+ | |||
+ | [https://www.it-wns.de/themes/kategorie/detail.php?artikelid=134&source=2 Komplettbausatz Basic-Computer 2 mit ATMEGA644] | ||
[http://www.mikrocontroller.net/topic/65156#new www.mikrocontroller.net BASIC-Computer mit Mega32] | [http://www.mikrocontroller.net/topic/65156#new www.mikrocontroller.net BASIC-Computer mit Mega32] | ||
Zeile 243: | Zeile 932: | ||
[http://elmicro.com/de/can232.html "CAN232" - CAN - Dongle] | [http://elmicro.com/de/can232.html "CAN232" - CAN - Dongle] | ||
+ | [http://www.vassfamily.net/ToyotaPrius/ Vielen Dank an Attilla Vass für seine Grundlagenforschung !] | ||
- | |||
+ | '''WIRD FORTGESETZT''' | ||
- | --[[Benutzer:Ksb|ksb]] | + | --[[Benutzer:Ksb|ksb]] 01:43, 14. Apr. 2008 (CEST) |
[[Kategorie:Technik]] | [[Kategorie:Technik]] | ||
[[Kategorie:Modding]] | [[Kategorie:Modding]] |
Aktuelle Version vom 18. Dezember 2012, 10:57 Uhr
Einleitung
Idee
Anzeige von Betriebsdaten auf dem MFD. Alternativ kann die Anzeige auch auf einem seperaten RGBS-Monitor oder CAN-Display erfolgen - beispielsweise sind "RS-232" oder "I2C-Displays" direkt anschliess- und ansprechbar. Der Anschluss an den CAN - Bus des Prius ist in HW2.0 integriert (siehe: CAN-Display).
Aktuell angezeigte Daten (aktuelles Foto):
- Uhrzeit im 24-Stunden-Format (Digitalanzeige)
- Innentemperatur (Digitalanzeige)
- Kühlwassertemperatur (Balkengrafik und Digitalanzeige)
- EM-Strom (Balkengrafik und Digitalanzeige)
- Geschwindigkeit in km/h (Balkengrafik und Digitalanzeige)
- Verbrauch (Balkengrafik und Digitalanzeige)
- Bordnetzspannung (Balkengrafik und Digitalanzeige)
- Tankinhalt
- Die angezeigten Balken wechseln die Farbe, wenn ein hinterlegter Schwellwert erreicht wird. Zunächst auf "gelb" und anschliessend auf "rot".
Ausgabe auf dem MFD (oben) und / oder auf einem OLED - Display (unten). Das Display ist leider schwer zu fotografieren (Es sieht "live" sehr viel besser aus).
Diese Variante kann autark betrieben werden. Es wird nur der OBD2-Anschluss benötigt (siehe: CAN-Display) .
Fünf Hauptaspekte sprechen für den Einsatz dieses Basic - Computers:
1) das hier in einem Chip sowohl die komplette Videosignalerzeugung (in NTSC) UND der eigentliche Basic - Rechner integriert ist.
2) das Änderungen jederzeit im Fahrzeug ohne Entwicklungssystem möglich und sofort wirksam sind.
3) das für die Änderung der Grafikgestaltung keine weitere Umgebung benötigt wird.
4) das die Platine mit ihren I/O-Möglichkeiten praktisch wie für diesen Zweck gemacht ist.
5) und "last but not least": vor allem die Kosten
Warnhinweise
Alle Angaben in diesem Artikel erfolgen ohne Gewähr. Auch wird über die Zulässigkeit der Verwendung mit dieser Veröffentlichung keinerlei Aussage getroffen.
Vor Anschluss an das Fahrzeug sollten folgende Punkte unbedingt geprüft werden:
- betriebssicherer Aufbau der gesamten Schaltung (Vibrationen usw.)
- Schaltung getrennt vom Fahrzeug in Betrieb genommen und funktionstüchtig
- zuverlässiges Betriebsverhalten ohne Ausfälle (keine "Wackelkontakte" oder "Aufhängen")
- minimale Leitungslänge zwischen OBD2 und CAN-Umsetzer sichergestellt
- es dürfen keinerlei Informationen auf den CAN gesendet werden
Beim Anschluss unbedingt beachten:
- Basic-Computer nur bei eingeschaltetem Fahrzeug mit Spannung versorgen
- Absicherung der Versorgungsleitung
Nach dem Anschluss sollte das Verhalten der Schaltung ausführlich im Stand geprüft werden:
- Alle Funktionen überprüfen in allen Betriebsarten
- Verhalten nach dem Aus- und Wiedereinschalten prüfen.
Vor dem Bewegen des Fahrzeuges ist unbedingt auf folgendes zu achten:
- sicherer Einbau aller Komponenten
- sichere Verlegung aller Kabel
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-Controller" ist weiterhin ein Programmiergerät erforderlich.
Die Vorteile:
- Nach dem Einschalten sofort betriebsbereit ("booten" entfällt)
- Keine mechanischen Laufwerke (Festplatte) erforderlich
- Geringe Stromaufnahme (ca. 150 mA)
- Geringe Größe
- NTSC oder PAL über Jumper wählbar (MFD benötigt NTSC)
- Autostart über Jumper aktivierbar
- Programme werden im "Flash" des Controller gespeichert
- Interpreter - Programme können sofort gestartet und müssen nicht "compiliert" werden
- Basic - Befehle können abgekürzt werden (z. B. "XC" anstelle "XCALL" oder das klassische "?" für "PRINT)
- Daten können im EEPROM des Controller gespeichert werden
- 8 Eingänge wahlweise als Analog- oder Digitaleingang nutzbar
- I2C - Schnittstelle zum Anschluss von LM75 Temperatursensoren
- Datenspeicher erweiterbar
- Programmaustausch zum PC über RS232 - Schnittstelle (1200 BAUD)
Die Nachteile:
- Weder "PC", "MAC" noch "C64" kompatibel
- Programme können z. Zt. nicht am PC sondern müssen auf dem Basic - Computer erstellt werden
- Programmspeicher begrenzt (z. Zt. 4x51 Zeilen) und nicht erweiterbar
- Keine Stringverarbeitung
- Serielle Schnittstelle (RS232) NUR 1200 BAUD
- Keine USB - Tastaturen anschliessbar
Beschreibung
Dieses Projekt dient zur (frei konfigurierbaren) Anzeige von Daten auf dem MFD.
Die Ziffern- und Balkenanzeigen können fast beliebig nach eigenem Geschmack angeordnet werden, die Balken können z. B. sowohl vertikal (auf und ab) als auch horizontal (von links nach rechts) programmiert werden.
Die "Hardware" besteht aus einem von Joerg Wolfram entwickelten Einchip - Basic - Computer und einem zweiten selbst programmierten Atmel - Controller, der die Anbindung des CAN (z. Zt. über einen "CAN232" - später durch direkten Anschluß eines CAN-Transceiver - Chips ) übernimmt - im Folgenden "I2C zu RS232 - Umsetzer" genannt.
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.
Dafür sind umfangreiche I/O - Befehle vorhanden und das Basic ist "rasend schnell".
Für die "Grundfunktion" ist keine weitere Bedienung erforderlich, jedoch wird zur Einstellung der Uhrzeit einmalig eine beliebige "MF-2" Tastatur benötigt.
Weitere Anzeigemöglichkeiten
- Geschwindigkeit in km/h oder miles/h
- Anzeige l/100 km während der Fahrt oder l/h im Stand
- Restreichweite
- Türkontrollanzeige im Klartext oder Grafik
- DTC- Anzeige im Klartext
- Stoppuhr
- Aufzeichnung wichtiger Fahrtparameter
(Die o. g. Anzeigen sind noch nicht implementiert!)
Weitere Einsatzmöglichkeiten
- Über- oder Unterspannungswarnung oder Abschaltung (zusätzliche Bauteile erforderlich)
- Warnsignal bei Geschwindigkeitsüberschreitung
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 RS232 mit 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. Bereits mit den Möglichkeiten der ersten Version (20 Zeilen) konnte eine recht ansprechende Grafik erzeugt werden.
Der CAN - Anschluss
Als nächstes war der Anschluss an den CAN des Prius zu realisieren.
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).
Achtung:
CAN - Nachrichten sind am OBD2 - Stecker erst ab "Stufe 2" (= Kontrolllampen an) bis ca. 10s nach dem Abschalten vorhanden.
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.
Einige Einstellungen werden im "EEPROM" des "CAN - Dongle" gespeichert und können mittels Terminalprogramm vorgenommen werden ("Autopoll" und "Timestamp").
Andere müssen vom "Basic - Programm" nach jedem Einschalten initialisiert werden. Dies sind die "CAN-Baudrate" ("S6+CR = 500 kBaud) und das Öffnen des "CAN-Kanals" ("O+CR"). Um eine akzeptable Datenmenge zu erreichen, ist es erforderlich, den "Akzeptanzfilter" (Das sind dann die ID, welche "durchgelassen" werden) zu parametrieren ("M"- und "m"- Kommando).
Somit besteht die komplette Initialisierung nach jedem Einschalten aus:
- CAN - BAUD - Rate setzen
- Akzeptanzfilter (Code und Maske) setzen
- zuletzt CAN - Kanal öffnen
Nach dem Senden einer Anforderung (A+CR) 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" im internen RAM (1kB - für "Insider" abzüglich "Stack") 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 Empfangsdaten in ein "Array" geschrieben und die ersten 4 Byte des Inhaltes mit einem 2. Array verglichen, dass die auszuwertenden ID enthält.
Sind beide gleich, wird die Position des auszuwertenden Zeichens und die Anzahl aus dem 2. Array geholt und diese Nibble von ASCII nach dezimal gewandelt und anschliessend in einem 3. Array gespeichert, dass dann die Nutzdaten enthält.
Diese Nutzdaten werden in Variablen geschrieben, normiert und dann an die Balkengrafik "weitergereicht".
Das BASIC - Programm (im BASIC - Computer)
Das BASIC - Programm wertet die Daten vom CAN aus, berechnet die benötigten Daten und schreibt die Zeichen und Grafiken auf den Bildschirm.
Zur Zeit gibt es einen "Grundbildschirm" (siehe oben), 5 weitere Grafikanzeigen (Batteriespannung, Innentemperatur, Verbrauch, Kühlmitteltemperatur und Geschwindigkeit jeweils der letzten Stunde. Diese Werte werden in das eeprom geschrieben und stehen daher auch nach dem Aus- und Wiedereinschalten zur Verfügung). Weiterhin ist eine Aufzeichnung der Fahrtparameter ("Fahrtenbuch") integriert.
Zusätzlich noch ein "Konfigurationsmenü" für die Grundeinstellung:
- Uhrzeit
- Datum
- CAN 0=Aus, 1=normal (im Hintergrund), 3=Debug-Ausgabe
- Debug-Modus für weitere Variablen
Zur Überprüfung der CAN-Kommunikation gibt es weiterhin eine Anzeigemöglichkeit.
Das ASSEMBLER - Programm (im "I2C zu RS232-Umsetzer")
Keine Angst - man muß nicht wissen, wie es funktioniert - nur für jene, die es interessiert
Das Assembler - Programm wandelt die über den I2C-Bus (bzw. TWI = two wire interface) gesendeten Zeichen unverzögert und ungepuffert in RS232-Signale (57 kBAUD) um.
Die vom CAN232 empfangenen Zeichen (57 kBAUD) werden im internen SRAM des 2. Controllers gepuffert, bis sie über den I2C-Bus abgeholt werden.
Im Detail passiert folgendes:
1. Das Programm parametriert die TWI - Hardware des Controller als Slave mit der Adresse "$40" und
2. die UART auf 8 bit, 2 Stopbit, keine Parität, 57 kBAUD.
3. Nach dieser Initialisierung läuft das Programm in einer Endlosschleife, die die Ladungspumpe ansteuert.
4. Ist ein Zeichen an der UART (RS232) eingetroffen, wird ein Interrupt ausgelöst und das Zeichen im SRAM gespeichert.
5. Wird ein Zugriff auf das TWI detektiert, wird ebenfalls ein Interrupt ausgelöst und ein Zeichen aus dem SRAM gesendet.
6. Dies passiert solange, bis (im Normalfall) alle Zeichen abgeholt oder
7. der Pointer (auf die Zeichen im SRAM) durch einen Schreibzugriff zurückgesetzt wird.
Auf diese Weise wird erreicht, dass kein Zeichen verloren geht - ähnlich einem "Multitasking".
Dadurch, dass während eines Interrupts bestimmte Register "gerettet" und anschliessend "restauriert" werden müssen, ist das Programm etwas umfangreicher.
Hier mal in kleine (leicht verdauliche) Häppchen verpackt:
Ideen zur Bedienung
Grundsätzlich muss ein Umschalter zwischen der jeweils "normalen" und der neuen Anzeige nachgerüstet werden z.B.:
- Nachrüstung eines Original - Toyota - Tasters z.B. neben "EV-Modus" (s.u.)
- Eigenbau - Bedienteil mit weiteren (s.u.) Tastern z. B. unter der vorderen Getränkedosenklappe
- Infrarotfernbedienung
- Zeit- oder funktionsgesteuert (Digitalausgang des "Basic-Computers" schaltet ein, dann z.B. alle 10s Wechsel)
Für die Umschaltung zwischen den Modi der grafischen Anzeige:
- Ein- und Fortschaltung über einen Taster (jede Betätigung wechselt zur nächsten Anzeige)
- kleine PC-Tastatur (z. B. "Keypad")
- Taster auf Eigenbau - Bedienteil (s.o.)
- Infrarotfernbedienung
- Auswertung des MFD - Touchscreen
Ein Tastenfeld könnte z. B. "widerstandskodiert" aufgebaut und dann über nur 2 Leitungen an einen Analogeingang des Basic - Computers angeschlossen werden. Die Auswertung erfolgt dann über die unterschiedlichen Spannungswerte.
Aufbau
Wer nicht warten möchte, kann gerne die Platine von Joerg Wolfram aufbauen, eigene "Experimente" durchführen und ggf. mit dem gewonnenen "know-how" zum Projekt beitragen.
Platinen
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. Weiterhin sollten vor der Bestückung an geeigneter Stelle Befestigungsbohrungen angebracht werden, falls keine vorhandene Bohrung verwendet werden kann. Es empfiehlt sich, die Platinenmaße etwas grösser zu wählen, damit ausreichender Platz für diese Bohrungen vorhanden ist.
Zur Zeit wird die Platine doppelt benötigt:
- "Basic - Computer" (bis auf nicht benötigte Stecker voll bestückt)
- "I2C zu RS232 Umsetzer" (nur ATMEGA, Quarz, Kondensatoren und Schaltungsteil für RS232 geändert und zusätzlich mit 1 Transistor und 2 Widerständen bestückt)
Bestückung
Basic-Computer:
Gemäß Bestückungsplan von Joerg Wolfram vor Bestückung der Stecker muss überlegt werden, ob diese wirklich im Fahrzeug benötigt werden. Weiterhin sollten vor der Bestückung an geeigneter Stelle Befestigungsbohrungen angebracht werden, falls keine vorhandene Bohrung verwendet werden kann. Am Eingang sollte eine Verpolschutzdiode (1N4005) nachgerüstet und die 5V-Verbindung zur Klemme unterbrochen werden (versehentlicher Anschluss der Bordnetzspannung an diese würde die gesamte Schaltung sofort zerstören).
I2C-RS232-Umsetzer:
Nur Controller, Quarz, Abblockkondensatoren (100nF) und alle Teile der RS232-Schnittstelle - zusätzlich muß "RxD" und "TxD" an die UART verdrahtet und ein weiterer Transistor, der RxD invertiert, eingelötet werden. Die Stromversorgung (5V) erfolgt über den I2C-Bus vom Basic-Computer. Weiterhin sollten vor der Bestückung an geeigneter Stelle Befestigungsbohrungen angebracht werden, falls keine vorhandene Bohrung verwendet werden kann. Die I2C-Adresse ist $40.
Temperatursensor:
Der Temperatursensor LM75 ist leider nur noch als SMD-Bauteil erhältlich. Da dieses Bauteil nur 8 "Beine" hat, kann es jedoch relativ leicht auf eine kleine SMD-Lochrasterplatine aufgelötet werden. Beim Prototypen wurde der Sensor auf einer separaten Lochrasterplatine aufgebaut und mit Heisskleber an der nur zur Befestigung eingelöteten 3-poligen Klemme der "TWI-RS232-Umsetzers" angeklebt. Die I2C-Adresse ist $90.
RTC:
Die RTC ist als "DIL"- oder "SMD"-Bauteil erhältlich und kann mit den paar zusätzlich benötigten Bauteilen (32,768 kHz Quarz, 22pF- und 100nF-Kondensator, 2 Dioden 1N4148, 2k7 Vorwiderstand und eine grüne LED) auf der o. g. Lochrasterplatine verbaut werden. Beim Prototypen wurde die RTC auf einer separaten Lochrasterplatine aufgebaut und mit Heisskleber an der 3-poligen Klemme des "Basic-Computers" angeklebt Die I2C-Adresse ist $A0.
Basic - Interpreter
Die "Hex - Datei" mit dem "Basic - Interpreter" wird mittels eines geeigneten Programmiergerätes (z. B. STK500) in den Controller geladen ( = "geflasht"). Das controllerinterne EEPROM muß für die Funktion nicht programmiert werden, es sei denn, es soll eine identische Kopie einschliesslich aller Einstellungen und "Log- Daten" erzeugt werden.
Extrem wichtig für die Funktion ist das Setzen der richtigen "Fuses". Dies sind Konfigurationsparameter, die z. B. die Taktquelle auswählen.
TWI - RS232 - Firmware
Die "Hex - Datei" mit der "TWI - RS232 - Firmware" wird mittels eines geeigneten Programmiergerätes (z. B. STK500) in den Controller geladen ( = "geflasht"). Das controllerinterne EEPROM muß nicht programmiert werden.
Inbetriebnahme des Gesamtsystems
Zusammenschalten der Komponenten
Zur Inbetriebnahme des Gesamtsystems müssen folgende Verbindungen hergestellt werden:
1. Basic-Computer
Die erste Inbetriebnahme sollte ohne gesteckten Controller erfolgen, damit die 5V-Versorgung kontrolliert werden kann. Zur Stromversorgung ist ein 12V - Netzteil oder ein Motorrad - Akku zu verwenden.
Ist die 5V-Versorgung in Ordnung, Spannung wieder ausschalten und den Controller mit "Chipbasic" richtig herum (Kerbe) und mit allen "Beinen" vorsichtig in den Sockel stecken - ggf die Pins vorsichtig an einer Tischkante in Position biegen.
ACHTUNG: DIESER CONTROLLER MUSS MIT DER CHIPBASIC-FIRMWARE PROGRAMMIERT SEIN, ANDERNFALLS IST KEINERLEI FUNKTION GEGEBEN !
Anschliessend kann der Anschluss an einem Fernseher mit Videoeingang erfolgen - am besten ein
Gerät mít "gelben Chincheingang". Die Darstellung erfolgt dann in schwarz-weiß mit Graustufen.
Es wird zunächst kein Jumper gesteckt.
Alternativ kann ein (provisorischer) Adapter von D-Sub auf SCART (gemäß "Chipbasic-Adapters") angefertigt werden. Zum Teil wird eine (im Plan nicht angegebene) zusätzliche Schaltspannung von 8-12V an "Pin 8" der SCART-Buchse benötigt, dies hängt vom Baujahr des Fernsehers ab. Die Bildschirmdarstellung erfolgt dann in Farbe.
Wichtig: Die im Schaltplan angegebene Anschlussbelegung gilt für das Anlöten an einen Stecker !
Evtl. sollte bei unstabilen Bild und Multinorm-Gerät der "NTSC"-Jumper" gesteckt werden (wird auch von MFD benötigt).
Anschliessend wieder einschalten und prüfen, ob der Startbildschirm angezeigt wird.
Ist dies der Fall, so kann eine beliebige "MF2"-Tastatur angeschlossen, programmiert und geprüft werden.
Solange keine weitere Hardware angesprochen wird, ist der "Basic-Computer" alleine voll nutzbar und kann auch als Lern, Spiel- oder Steuercomputer verwendet werden.
2. Temperatursensor
Leider wird der LM75 nur noch als SMD-Bauteil angeboten. Daher wird dieser auf ein kleines Stück einer SMD-Lochrasterplatine gelötet (Adresse "A0-A2" an Masse legen) und an einer Stelle des Gehäuses positioniert, wo der Meßwert nicht durch Abwärme anderer Bauteile verfälscht wird. Die Anschlussleitungen (+5V, SDA, SCL und GND) sollten möglichst kurz gehalten werden (Skizze siehe oben).
Das Auslesen des (ersten) Temperatursensors erfolgt über den Befehl "Temp(0)". Es können maximal acht Sensoren angeschlossen werden (Adresseinstellung an den Sensoren dann "000 - 111").
3. RTC (Real Time Clock)
Die "RTC" ist sowohl in "DIL" als auch als "SMD-Bauteil" erhältlich und kann mit auf die Lochrasterplatine montiert werden - zusätzlich wird nur der 32,768 kHz Quarz, ein 22pF und ein 100nF Kondensator, 2 Dioden und eine 1,5V-Batterie zur Pufferung benötigt (Skizze siehe oben).
Das Ansprechen erfolgt über den "ICOMM" Befehl (z. B. "IC A0,1210,1" schreibt ein Byte).
Zur Beachtung: Die Daten der RTC sind BCD-kodiert und müssen daher in Dezimalzahlen gewandelt werden !
4. "RS232 zu I2C" - Umsetzer
Die erste Inbetriebnahme sollte ohne gesteckten Controller erfolgen, damit die 5V-Versorgung kontrolliert werden kann.
Ist diese in Ordnung, Spannung wieder ausschalten und den Controller mit "TWI-RS232" richtig herum (Kerbe) und mit allen "Beinen" vorsichtig in den Sockel stecken.
ACHTUNG: DIESER CONTROLLER MUSS MIT DER "TWI-RS232"-FIRMWARE PROGRAMMIERT SEIN, ANDERNFALLS IST KEINERLEI FUNKTION GEGEBEN !
1. Stufe "Terminalprogramm"
Anstelle des "CAN232" wird ein PC mit Terminalprogramm angeschlossen. Nach dem Start des "Basic-Computers" werden zunächst die an den "CAN232" gesendeten Konfigurationsdaten (Baudrate, Akzeptanzfilter) angezeigt. Anschliessend wird zyklisch ein Zeichen und "CR" gesendet.
Eingegebene Zeichen werden in der "CAN-Anzeige" des "Basic-Computers" angezeigt.
Werden Dateien übertragen, so wird deren Inhalt angezeigt, falls diese druckbare Zeichen enthalten.
Enthält diese Datei "CAN-ID" mit der richtigen Syntax, so werden diese angezeigt (z. B.: "t52C"). Sind weiterhin ID enthalten, die im "Basic-Programm" hinterlegt sind, werden diese ausgewertet und die ausgerwerteten Daten angezeigt.
2. Stufe "manuell erzeugte Test-Daten"
Mit dem "Editor" oder "Notepad" wird eine Test-Datei editiert. Diese besteht aus der auszuwertenden ID und den Nutzdaten.
Der ID muß ein "t" als Präfix vorangestellt werden - Beispiel:
t52C22350 ist die ID für Kühlmitteltemperatur das 2. Byte ($50) sind die Nutzdaten
Die so erzeugten Testdaten werden z. B. mit dem "Hyperterminal" über "sende" und "Text" an den "RS232 zu I2C"-Umsetzer gesendet.
3. Anschluss "CAN232"
Am Rechner wird ein Terminalprogramm - z. B. "Hyperterminal" gestartet. Die Einstellungen sind:
Verbindung: 57,6 kBAUD - keine Parität - 2 Stoppbit Terminal: Echo
Der "CAN232" sollte auf folgende Befehle antworten: (Achtung: Gross- und Kleinschreibung beachten! "CR"=Return)
"V" und "CR": Versionsanzeige z. B. "V2223" "N" und "CR": Seriennummer z. B. "N0815"
Der "CAN232" antwortet mit "CR" = OK und "Bell" = Fehler
Anschliessend kann folgende Konfiguration erfolgen:
"X1" Autopoll ein "T0" Timestamp aus "U1-6" RS232-BAUD-Rate (default 57 kBAUD)
Diese drei Einstellungen werden im EEPROM des "CAN232" gespeichert. Alle anderen sind nach dem Ausschalten nicht mehr vorhanden !
Kommunikation mit dem Prius erfolgt mit 500 kBAUD
"S6" Einstellen der CAN-Geschwindigkeit
Zur Begrenzung der Anzahl der übertragenen Nachrichten dient:
"Mxxxxxxxx" Akzeptanzfilter - Code "mxxxxxxxx" Akteptanzfilter - Maske
In der Grundeinstellung nach dem Einschalten (=Default) werden ALLE Nachrichten durchgelassen !
Für die Berechnung des Akzeptanzfilters gibt es auf der Seite von Attilla Vass ein C-Programm, das vor Benutzung compiliert werden muss.
4. Stufe "Anschluss an CAN"
Zum Anschluss an das Fahrzeug wird ein "OBD2"-Stecker benötigt. Angeschlossen werden 4 Leitungen: "CANH", "CANL", "+12V" und "GND".
Die CAN-Leitung ist verdrillt auszuführen.
Am Besten möglichst kurze Leitung bis zum "CAN232"-Umsetzer und von dort über geschirmte Leitung bis zum "TWI-RS232-Umsetzer".
Auf der Seite des "CAN232" ist ein 120 Ohm Terminierungswiderstand erforderlich.
5. Stufe "Log-Datei"
"CAN232" an RS232-Schnittstelle eines Notebook anschliessen, Akzeptanzfilter manuell setzen, CAN-Kanal öffnen und eine Fahrt "mitloggen". Mit den so gewonnenen Daten kann diese Fahrt beliebig oft "wiederholt" werden und somit die einwandfreie Funktion der "Grafischen Anzeige" vollständig geprüft werden.
Hiermit wird gleichzeitig das Anschlusskabel und der "CAN232" auf einwandfreie Funktion geprüft.
6. Stufe "Anschluss der grafischen Anzeige an Fahrzeug"
- ganz ausschalten - Verbindung "Basic-Computer" zu "MFD" herstellen - Versorgungsspannung anschliessen - Fahrzeug einschalten - Grundfunktion "Basic-Computer" und "TWI-RS232" prüfen - CAN anschliessen und alle Funktionen IM STAND prüfen.
Weiteres folgt
Einbau
Bei Einschleifen in das Signal des Navigationssystems ist der Einbau in ein Trittschutzgehäuse und die Montage desselben auf dem Navigationssystem oder JBL-Verstärker sinnvoller.
Ganz einfach ist es, wenn man bereits die Rückfahrkamera an MFD eingebaut hat, denn die HW2.0 ist darauf ausgelegt:
- Das Kabel vom Konverter zu MFD und NAVI wird abgezogen und auf einen Stecker der Platine gesteckt
- Die Verbindung zwischen der Platine und dem Konverter wird mit einem kurzen Kabel (abgeschirmt, 9-polig-D-SUB-Stecker auf 9-polig-D-SUB-Stecker) hergestellt.
- Die Video-Umschaltung ist auf der Platine integriert.
Anschluss an Bordcomputer
Bei Einschleifen in das Signal des "Bordcomputer" ist der Einbau unter dem "Center - Speaker" denkbar - hier muß dann nur noch der CAN (2 Drähte) und das Bedienteil angeschlossen werden.
Weiteres folgt
Anschluss
Modelljahr bis Ende 2005
Zum Anschluß an das MFD mit Farbwiedergabe kann das Signal entweder in das RGBS Signal des "Bordcomputers" oder des Navigationssystems eingespeist werden - es wird weiterhin ein Umschalter benötigt, der z. B. über ein Relais (4 x UM) realisiert werden kann.
Prinzip der Signal - Umschaltung:
Ansicht des auf Lochrasterplatine aufgebauten Videoumschalter im Prototypen. Der rechte obere D-SUB-Verbinder führt zum MFD-Adapter (RGBS), der rechte untere zum Kamera-Konverter. Der linke obere D-SUB-Verbinder wird an den Basic-Computer angeschlossen. Es werden die Pin 3,6,7 und 9 des mit dem MFD verbundenen SUB-D-Stecker auf den Basic-Computer geschaltet. Der Ruhekontakt der Relais liegt jeweils in der Verbindung zum Konverter. Dadurch ist der Einschaltzustand der gewohnte: Navigationsbildschirm. Bei Einlegen des Rückwärtsganges wird auf die Kamera umgeschaltet - siehe: Rückfahrkamera an MFD. Bei Betätigung eines Schalters ziehen die Relais an und schalten Pin 3,6,7 und 9 auf den Basic-Computer (Pin 1,2,3,5 und 9 des Video-D-SUB).
Anmerkung: Es gibt Spezial-IC, die auch zwischen mehreren RGBS-Signalen umschalten können -
leider sind diese schwer erhältlich, recht teuer und dazu SMD.
Modelljahr ab 2006
Zum Anschluß an das MFD in "schwarz/weiss" kann ein Kameraeingang (wenn vorhanden) direkt verwendet werden. Die Umschaltung kann über einen Schalter (1 x UM) erfolgen.
Für Farbwiedergabe über den Kameraanschluss wird eine weitere Schaltung (CPLD) benötigt: FBAS - Encoder. Die Umschaltung kann ebenfalls über einen Schalter (1 x UM) erfolgen.
Alternativ dazu Einspeisung in den RGBS - Signalweg des "Bordcomputers". Es wird dann ebenfalls ein Umschalter benötigt, der z. B. über ein Relais (4 x UM) realisiert werden kann.
Weiteres folgt
Material
Weiteres folgt
Änderungen
heutiger Stand (14.04.2008)
HW2.0 fertiggestellt:
- kompakte Leiterplatte 100 x 80mm (doppelseitig, SMD)
- Stromversorgung für Controller und OLED
- CAN-Interface (High-Speed) integriert
- OLED steckbar - aktuell monochromes Grafikdisplay
- Echtzeituhr (RTC) integriert (Uhrzeit und Datum)
- Temperatursensor integriert
- TWI-Erweiterungsschnittstelle
- RS232-Schnittstelle
- Videoumschalter integriert
- Anschlüsse: CAN, MFD, Konverter, RS232, TWI, Analog
SW2.0 fertiggestellt:
- Komplette CAN-Kommunikation inkl. Auswertung der ID
- Setup für CAN-Baudrate (auch für andere Fahrzeuge)
- Setup der auszuwertenden ID
- OLED-Ansteuerung - Grafik ähnlich der auf MFD
- viele neue Anzeigen z.B.: HV-Spannung und SOC
Merkmale der CAN-Display-Variante (autark):
- Nur OSD2-Anschluss benötigt
- Bedienung über 10 Tasten
- automatische Umschaltung der Anzeigen (abschaltbar)
- kompakte Bauform
- Stromaufnahme mit OLED-Anzeige 50 mA
Realisierungsstand (18.02.2008)
SJA1000 Software fertiggestellt:
- Routinen für Initialisierung
- Lesen und Schreiben des SJA RAM
- Receive - Interrupt
- Auswertung der ID
Realisierungsstand (03.02.2008)
Bisher arbeitete das Gerät mit einem käuflichen CAN-Interface.
Heute wurde ein "SJA1000" (preiswerter CAN-Controller) angeschlossen und mit der Programmierung der Routinen (Initialisierung und Abfrage) begonnen.
- Anschluss für SJA1000 durchgeführt
- Routinen für SJA1000 begonnen
- Anschluss für OLED - Display überarbeitet
- Routinen für OLED - Display ergänzt
Realisierungsstand (08.12.2007)
Für die angestrebte Einplatinenlösung musste die Software um einige Punkte erweitert werden:
- Die vollständige Auswertung der CAN-Botschaften im TWI-Umsetzer ist realisiert.
- Die (Nutz-) Anzeigedaten werden bereits fertig aufbereitet an den Basic-Computer übertragen.
- So werden hier nur noch die 15 benötigten Byte anstelle hunderter nicht benötigter ausgewertet.
- Die übertragenen ID und die darin enthaltenen Nutzdaten sind in der vorliegenden Version noch fest in Tabellen im Assembler-Programm hinterlegt.
- Zur Zeit wird dieses noch um ein Konfigurationsmenü erweitert, um eine flexible Eingabe und das Abspeichern der anzuzeigenden ID und übertragenen Nutzdaten im EEPROM zu ermöglichen.
- Dadurch wird ebenfalls eine Anwendung als "Stand-alone-Einzelgerät" mit eigenem Display (ohne Basic-Programm) möglich, dass Daten bestimmter ID oder auch eine Berechnung aus mehreren ID auf einem geeigneten Display (7-Segment, LCD oder OLED) ausgibt.
- Offen ist noch die Initialisierung und Abfrage des CAN-Controller-Chip und die Ansteuerung der Displays für "Stand-Alone-Betrieb".
Realisierungsstand zum 2. Priustreffen in Münster (11.11.2007)
Basic-Programm
- Leider "verlor" der Basic-Controller auf dem Weg nach Münster einige Programmteile und war nicht voll funktionstüchtig
Hardware
- Zweiter Prototyp in einem kompakten Gehäuse (3 Platinen und Kamerakonverter)
- Abgesetzter Temperaturfühler für Innentemperatur
Realisierungsstand (22.08.2007)
Basic-Programm
- Auswertung beliebiger CAN-ID aus einer Liste (Eintrag ID und Byte-Nr.)
- Bearbeitung der Auswertung im Hintergrund
- RTC-Auswertung integriert
Assembler-Programm
- 750 Byte Puffer, 256 Byte Stack
- Echo beseitigt (Bug)
- Pointer begrenzt
- Meldungen an TWI integriert (Versionsanzeige)
Hardware
- Anschluss über RGBS (Farbdarstellung)
- RTC (Real Time Clock) für aktuelle Uhrzeit und Datum nachgerüstet
Offene Punkte (22.08.2007)
- Routen einer kompakten Leiterplatte (ca. 100 x 80mm) mit allen benötigten Bauteilen (Einplatinenlösung)
Realisierungsstand zum 1. Priustreffen in Münster (24.06.2007)
- Anzeige der Uhrzeit im (24h-Format), Innentemperatur und Bordnetzspannung (Grundanzeige)
- Auswertung einer ID ($52C = Kühlwassertemperatur).
- Bei Verzicht auf Unteranzeigen oder des Fahrtenbuches konnten auch mehrere CAN-ID ausgewertet werden.
- Bei Optimierung der Basic - Routinen "passen" alle o. g. Funktionen in die 4x51 Zeilen.
- Vier weitere Unteranzeigen (Spannung, Innen-, Kühlwassertemperatur, Verbrauch) der letzten Stunde
- Fahrtenbuch (zur Zeit 25 Einträge mit Datum und Uhrzeit Fahrtbeginn und Ende)
- Konfigurationsmenü (Uhrzeit, Datum, CAN, Demo-Betrieb)
- Anzeige der eintreffenden CAN-ID (LOG)
- Menü zum Löschen des EEPROM
- CAN - Initialisierung zu Debug - Zwecken
Mängel zum Priustreffen (24.06.2007)
1. Uhrzeit war nur in Software realisiert und wich daher zu stark ab - Abhilfe "I2C - RTC" (= Hardware - Uhr)
2. Die Basic - Programme mussten optimiert werden, damit mehrere CAN - ID ausgewertet werden können.
3. Das Assembler - Programm des "RS232-Umsetzers" musste geringfügig geändert werden (Debug-Informationen entfernen).
4. Der Hardwareanschluß war nur mit SW-Darstellung realisiert und die Spannungsversorgung "CAN232" ungünstig gewählt.
Ausblicke
Der Befehlssatz und speziell Grafikauflösung und die Anzahl der Farben wurde von Joerg Wolfram im Laufe der Entwicklung verbessert - er postete vor kurzer Zeit, dass mit einem leistungsfähigeren Controller noch einiges möglich sei.
- Die neueste Version "ChipBasic2" wurde am 19.05.2009 veröffentlicht
- 8 Programme a 95 Zeilen
- Mehrere Videomodi
- Link zum Komplettbausatz des "BASIC-Computers" eingefügt
Sobald ein endgültiger Stand aller sinnvoll anwendbarer CAN-ID vorhanden ist, könnte die komplette Auswertung in den 2. Controller ausgegliedert werden. Dadurch würde ein Grossteil (ca. 40%) des Basic - Speichers für zusätzliche Funktionen frei.
Linksammlung
www.mikrocontroller.net Erweiterter BASIC-Computer mit Mega644
Komplettbausatz Basic-Computer 2 mit ATMEGA644
www.mikrocontroller.net BASIC-Computer mit Mega32
Hardware "AVR-Chipbasic" von Joerg Wolfram
Basic - Befehle "AVR-Chipbasic" von Joerg Wolfram
Informationen zum verwendeten "ATMEGA32"
Vielen Dank an Attilla Vass für seine Grundlagenforschung !
WIRD FORTGESETZT
--ksb 01:43, 14. Apr. 2008 (CEST)