VesCom

Aus Vespa Lambretta Wiki
Version vom 14. Januar 2011, 17:28 Uhr von Dare (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Inhalt:

Dieser Artikel befasst sich mit dem von Henning "dare" Groß entwickelten open source Boardcomputer VesCom


Logo.jpg


Copyright

Alle in diesem Projekt enthaltenen Dateien sind unter der Apache license 2.0 lizensiert.


Entstehungsgeschichte bis Version 2

Mit den Jahren wurden meine Motoren immer leistungsfähiger und ich immer schärfer auf einen Drehzahlmesser. Zusatzinstrumente hatte ich bei meinem Rahmen nicht vorgesehen und das Originaltacho taugt ohnehin nicht viel. Nachdem ich immer mal wieder recherchiert habe, was es so am Markt gibt und was so geht, habe ich mich dann irgendwann für einen Mikrocontroller aus dem Hause Atmel entschieden. Irgendwann bin ich dann tatsächlich losgelaufen und habe mir bei Conrad Bauteile für exorbitante Preise geleistet und mir einen Programmieradapter bestellt. Es folgten erste Experimente mit dem Programmierdapter, der Entwicklungsumgebung (C unter AVR Studio) etc.. Leider war gleich mein erstes LCD-Display und mein zweiter Atmega defekt, so dass ich viel Zeit für die Fehlersuche vergeudete. Nachdem ich mich dann an die Mikrocontroller-Eigenheiten gewöhnt und die Ausgabe auf dem LCD im Griff hatte machte ich mich an das Experimentieren mit den Messschaltungen. So viele Schaltungen für Drehzahlerfassung im Internet kursieren, so viele waren ohne größere Modifikationen ungeeignet. Ob über das Lichtmaschinensignal, über das Zündkabel – wie ichs probiert habe - es verseuchte mir stets die ganze Schaltung. Die Folge waren Störungen des Messwertes, der Displayausgabe oder gleich resets des Mikrocontrollers. Ich hätte es mit Entkoppelung versuchen können etc. aber meine Laborumgebung (Esstisch, Multimeter, kein Oszi) machte weitergehende Tests erst einmal unmöglich. Wenn man sich das Signal nicht ansehen kann, dann kann man den Haken an der Sache auch schwer finden. Irgendwann stolperte ich über Hallsensoren. Diese messen Änderungen von Magnetfeldern und werden als fertige IC´s verkauft. Mit 2 Kondensatoren und einem Widerstand ergibt das eine kleine Platine welche auf der Zündgrundplatte befestigt und von den Magneten des Lüfterrads getriggert wird. Die Idee von einem Fremdkörper auf der Zündgrundplatte erscheint im ersten Moment etwas störend, stellt aber eine eher unproblematische und einfache Operation dar. Jemand hat einen Haltebügel aus Blech skizziert welcher auf der ZGP befestigt wird. Ich habe mir das Ding einfach zwischen zwei Spulen geklebt. Mittlerweile hatte ich auch eine Tacho-Schaltung mit einem Timer-IC gefunden und für gut befunden. Außerdem habe ich mithilfe eines MAX6675 ICs ein Thermoelement zur Messung der Abgastemperatur mit dem Mikrocontroller verbunden. Inzwischen schlug das dritte Herz in dem Computer. Von Atmega8 war ich über Atmega16 beim Atmega32 gelandet. Die Programmierweise in Mikrocontroller-Anwendungen unterscheidet sich von gewöhnlicher Programmierung. Auch hieran musste ich mich erst einmal gewöhnen und somit probierte ich verschiedenste Messverfahren (Zeit zwischen zwei Signalen messen und hochrechnen, x Signale messen und hochrechnen, eine Zeit lang messen und die gezählten Signale hochrechnen, ...) bis ich akzeptable refresh-Raten und lauffähige Software hatte. Damit der Tacho seinen Stand nicht vergisst (die Verbandelung von Geschwindigkeitsmesser und Distanzmesser nehmen wir allzu selbstverständlich hin aber vom einem zum anderem dauerte es auch noch ein wenig) lernte VesCom Daten im internen EEPROM zu speichern. Nur wann macht man das. So ein EEPROM kann 100.000 mal beschrieben werden. Wie wählt man also den Intervall damit der Controller lange lebt aber nichts verpasst? Wenn ich nur 1*pro Minute speichere dann verpasse ich uU etliche Meter. Einmal pro Sekunde verkürzt die Lebenszeit auf 27 Stunden. Irgendwie konnte ich so keinen Kompromiss finden. Ein Glücksfall war dann, dass der Mikrocontroller in der Lage ist ein Ereignis auszulösen wenn eine von zwei angeschlossenen Spannungen unter die andere fällt. Bis ich das lauffähig hatte floss allerdings auch einiges Wasser den Rhein herunter. Der Ansatz war, alle zum Speichern wichtigen Verbraucher mit einem großen Pufferkondensator von den übrigen Verbrauchern zu entkoppeln. Hierzu verwende ich einfach eine Diode. Das Problem war nun das ich je nach Konfiguration ein viel zu sensibles System hatte (Ereignis wurde ständig ausgelöst) oder eins das nicht zuverlässig funktionierte. Ich probierte etliches. Ich lies den Controller x mal überprüfen ob die Spannung noch immer unter der Vergleichsspannung lag und spendierte den Verbrauchern ebenfalls einen Pufferkondensator. Ich weiss gar nicht mehr wie lange und wie viel ich getestet habe, bis ich dann auf eine pragmatische (und vielleicht nicht besonders edle) Lösung kam: Ich reduzierte die Sollspannung über einen Spannungsteiler. Somit wurde das Ereignis erst deutlich später ausgelöst und kleine Schwankungen der Ist-Spannung machten nichts mehr aus. Der Bordcomputer konnte Daten speichern. Nun hat man also einen Tacho, einen DZM, Messung der Abgastemperatur – und das alles auf einem 2*16 Zeichen LCD-Display. Weitere Funktionen wurden implementiert. Eine Warnfunktion welche die Displaybeleuchtung blinken lässt wenn die Temperatur zu hoch ist, ein Menu zur Konfiguration des Reifenumfangs, Speichern der höchsten Temperatur und Rücksetzen im Menu etc. Irgendwann kam level auf die Idee eine SD-Karte anzuschliessen. Ich hatte bereits darüber nachgedacht und somit machten wir uns an die Aufgabe. Es dauerte etwa eine Woche bis wir dem Bordcomputer das Datenloggen beigebracht hatten. Mittlerweile war die vierte Software-Version im Einsatz. Die ersten ausgelieferten Controller waren aber immer noch mit der ersten beschrieben. Die Benutzer müssten für jedes Update Ihre Controller zu mir schicken was Arbeit und Portokosten bedeutet. Außerdem Wartezeit. Ich integrierte also noch einen Bootloader welcher die Firmware über SD-Karte updatet. Die Software-Version 1.14b mit der entsprechenden Hardware kann die Abgastemperatur messen, Höchsttemperatur speichern, ab einer konfigurierbaren Temperatur warnen, VesCom kann die Geschwindigkeit messen und hat einen Tageskilometerzähler. Der Computer erfasst die Drehzahl. Er loggt die Daten auf Wunsch auf und lädt Updates von SD-Karten (Fat16 und Fat12). Das sind deutlich mehr Funktionen als ursprünglich angekündigt und es ist noch kein Ende in Sicht. Vom Prototypen der unzuverlässig Drehzahl und halbwegs brauchbar die Geschwindigkeit messen konnte wurden etliche bestellt. Die 20 bestellten Platinen waren bald ausverkauft. Die Käufer bewiesen nicht nur den richtigen Riecher sondern auch große Leidensfähigkeit. Die meisten bestellten Bausätze und machten/machen erste Erfahrungen mit SMD-Technik etc. Auch wenn sich an der Hardware nicht viel änderte stellt der Zusammenbau des Bordcomputers schon eine Herausforderung dar. Einige engagierten sich über dieses Maß hinaus. Badbull entwickelte eine Tachoabdeckung (zT nach meinen Vorgaben) für den ET3-Lenker welcher das Display abdeckt und die Taster aufnimmt. Level stürzte sich in Mikrocontroller-Programmierung, arbeitete mit mir am SD-AddOn und lernte mal eben nebenbei wie man Platinen layoutet und ätzt. Andere haben mir viel Input gegeben und sich in die Auswertung der Logdaten gestürzt. Der Atmega32 hat noch 8k von seinen 32 frei. Wenn sich jemand an die Optimierung des Codes macht wird da sicher noch einiges frei. Platz für Verbesserungen. Aber auch nicht mehr allzu viel davon. Version 1 ist deprecated und wird nicht weiter entwickelt.


Versionsgeschichte Version 1 wurde knapp 20 mal zusammen gestellt. Die meisten Bausätze wurden wohl nie verbaut. Feedback gab es nur sehr wenig. Version 2 nahm Abschied vom modularen Aufbau. Nur noch 2 Platinen mit ambitionierten Ansätzen. Auf einmal wurde ein LiPo-Akku eingebaut und geladen, Handys zum SMS-Versand angeschlossen und GPS-Daten ausgewertet. Die Boards waren aber nicht wirtschaftlich zu produzieren und landeten nach etlicher Entwicklungsarbeit in der Schublade. Version 3 wurde Ende 2010 im Entwicklungsstadium an eine Testgruppe von 5 Personen ausgeliefert und befindet sich derzeit in der Entwicklung. Die Projektseite findet sich hier: https://evolvis.org/projects/vescom/


Info

https://evolvis.org/projects/vescom/

http://www.germanscooterforum.de/GSF_Projekte_f24/Vescom_t138758.html

version 1: http://kulturserver-nrw.de/home/dare/vescom/sch.html


Dank

  • Peter Fleury für die LCD-Lib (Version 1,2,3)
  • Holger Klabunde für die SD-Lib (Version 1,2,3) und Hex2Bin (Version 1,2)
  • Stefan Seegel für den Bootloader (Version 1,2)
  • Aachen für den schoenen Dom
  • Level
  • Bitburger und Telepizza
  • May (Meine Freundin). Dafür das Sie mich noch immer nicht verlassen hat obwohl ich Monate öfter den Lötkolben in der Hand hab als Dinge, die mich eigentlich mehr interessieren sollten