Konzeption eines einfachen Bordcomputers
Am Anfang stand die Idee eines einfachen Bordcomputers für mein Auto, der ein paar grundlegende Informationen ermittelt und sinnvoll anzeigt. Die Ansteuerung eines LCD - Displays mit dem HD44780 Chipsatz ist relativ einfach und man kann bequem auf bestehende Programm-Routinen zurückgreifen. Damit war die Grundlage für den Bordcomputer geschaffen. Nun ging es um die Erfassung interessanter Messwerte bspw. Drehzahl, Geschwindigkeit, Temperatur, Tankanzeige oder Batteriespannung. Am Ende stellten Timing-Schwierigkeiten das größte Problem dar, an dem ich bis heute noch etwas feile. |
||
Da eine Kleinserie für die Trabi-Szene aufgelegt werden sollte, führte kein Weg an einer professionell geätzten Platine vorbei. Als Entwicklungs- und Routing-Tool für elektronische Schaltungen ist "Eagle" wahrscheinlich eines der berühmtesten Programme. Es gibt aber auch ein überraschend gutes deutsches Programm: "Target 3001". Mir stand die Test-Version einer PC-Zeitschrift zur Verfügung, die großzügige Schaltungen zulässt. Da ich auch analoge Signale erfassen wollte, kommt man an A/D-Wandlern nicht vorbei. Nun gibt es mehrere Möglichkeiten. Einerseits kann ein PIC-Prozessor verwendet werden, der über A/D-Eingänge verfügt. Nachteil hierbei ist, dass diese Eingänge dann nicht mehr für andere Funktionen zur Verfügung stehen. Da das LCD-Display allein 7 Pins des Prozessors erfordert, schränkt das die Möglichkeiten stark ein. Also fiel meine Wahl auf externe A/D-Wandler. Um auch hier Eingänge zu sparen, sollten die Messwerte seriell übertragen werden. Letztendlich entschied ich mich dann für den TLC549, eine Entscheidung, mit der ich heute aber nicht mehr so glücklich bin. Nachdem die Platinen geätzt waren und ohnehin keine Großserie geplant ist, kann man sich durchaus mit dieser "kleinen" Variante abfinden. Unangenehm fällt beim Nachbau nur der Preis für diese doch recht simplen 8-bit A/D-Wandler auf. Die restlichen Eingänge sollten nun direkt zum Erfassen der digitalen Eingangssignale verwendet werden (Drehzahl, Geschwindigkeit, Momentanverbrauch). |
||
3. Umsetzung Nachdem das Layout stand, ging es an die Erstellung des Programms. Als ersten Baustein bediente ich mich einer fertigen Routine zur LCD-Ansteuerung. Das hielt ich für sinnvoll, da so zum Debuggen eine "ordentliche" Benutzerschnittstelle zur Verfügung stand. Auf die Beschaltung der A/D-Wandler möchte ich nicht weiter eingehen, da diese recht unspektakulär arbeiten und hauptsächlich die externe Beschaltung der Messwerte bestimmt. Für das Messen der Batteriespannung habe ich einen Spannungsteiler so dimensioniert, dass eine Umrechnung der Messwerte nicht nötig ist und der Messwert exakt der Spannung entspricht. Somit kann von 0,1V bis 25,5 V in 0,1V Schritten gemessen werden. Weitaus problematischer war das
Erfassen der digitalen Signale. Um bspw. eine Drehzahl zu erfassen, kann
man natürlich die Impulse über eine definierte Zeit
messen. Als Zeitbasis bspw. 1s und zählt dann die
Drehzahlimpulse während dieser Zeit. Nebenbei bemerkt, erzeugt
ein 4-Takt-Motor alle 180° einen Zündimpuls. Das
bedeutet, dass der Messwert mit 30 multipliziert schon die Umdrehungen
pro Minute ergibt. Der entscheidene Nachteil bei dieser Messmethode ist
die Auflösung von 30 Hz, das bedeutet, die Drehzahl-Anzeige
erfolgt in 30 U/min-Schritten. Außerdem kann der µP
während der Messphase keine weiteren Aufgaben abarbeiten. Wenn
man noch die Geschwindigkeit und das Kraftstoff-Momentanverbrauchs-
Daher habe ich mich für die Messung der Perioden-Länge eines Taktes entschieden und kann daher die Drehzahl recht schnell und sehr hochauflösend berechnen. Leider hat das Prinzip auch Nachteile. Einer liegt in der sehr komplizierten Berechnung der Drehzahl, da mit unheimlich großen Zahlen hantiert werden muss, die dann auch noch von einander dividiert werden müssen, ohne dass der PIC über einen Divisions-Befehl verfügt. Die vorläufige Lösung ist, die Division durch eine wiederholte Subtraktion zu realisieren. Dadurch hat man aber automatisch Timing-Probleme. Bei hohen Drehzahlen (kurze Taktzeiten T) ist die Messung schnell fertig, das Berechnen des Messwertes dauert dann natürlich länger. Genau entgegengesetzt verhält es sich bei niedrigen Drehzahlen. Das Timing-Problem macht dann Probleme, wenn man die Wegstrecke möglichst exakt bestimmen möchte, denn dieser lässt sich ja aus s=v*t berechnen. Daran feile ich bis heute noch etwas...
|
||
4. Informationen Hier folgen noch einige Links und Bilder zu dem Projekt Quellen: |