Konzeption eines einfachen Bordcomputers

  1. Einleitung
  2. Planung
  3. Umsetzung
  4. Informationen

1. Einleitung

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.

nach oben


2. Planung

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).

nach oben


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-
Signal erfassen will, ergeben sich einfach viel zu lange Messzeiten. Ein Verkürzen der Messzeiten reduziert die Auflösung dann noch zusätzlich.

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...

 

nach oben


4. Informationen

Hier folgen noch einige Links und Bilder zu dem Projekt

nach oben

Quellen:
www.pc-upgra.de/bc.htm

f="#oben">nach oben

Quellen:
www.pc-upgra.de/bc.htm