Mini-Computer mit Grafikdisplay

Die vielversprechenden Versuche mit den selbstgeätzten Platinen ermutigten mich dazu, ein größeres Projekt (...leider auch mit höheren Kosten) zu starten.
Erneut ist der Weg das Ziel. Geplant war, alle bereits erworbenen Kenntnisse in einer großen Platine zu vereinen und das ganze mit einem grafischen Display auszustatten.
Das Mainboard verfügt über einen 40-poligen DIP Sockel für die Controller der 18F Serie von Microchip, ein blau/weißes Grafikdisplay mit einer Auflösung von 128x64 Pixeln, 4 Sockel für serielle EEPROMS (zur Zeit mit 4x 8kB bestückt, erweiterbar auf 4x 64kB), 6 Tasten, einem Uhrenbaustein DS1302 inklusive Pufferbatterie und natürlich einer RS232-Schnittstelle mit Pegelwandler.
Auf eine In-Circuit-Serial-Programming (ICSP) Schnittstelle wurde bewußt verzichtet, da hier nur noch Controller mit Bootloader verwendet werden. Die Programme lassen sich so innerhalb von wenigen Sekunden über die serielle Schnittstelle auf den Chip transferieren.

Zunächst ein paar Fotos:

Die fertig aufgebaute Schaltung.
Im "Ruhezustand" wird Urzeit und Datum angezeigt. Der Balken am unteren Displayrand ist der Sekundenzähler.
Das Wecker-Symbol deutet an, dass der Wecker aktiviert ist. (über den Anschluss unten im Bild ist die Schaltung mit einem Piezo-Schallwandler verbunden, der in frühen Morgenstunden äußerst nervtötend sein kann...)
(Bild anklicken zum Vergrößern)
Um die Bitmaps in den EEPROMs ablegen zu können, werden die Daten sequentiell über die serielle Schnittstelle gesendet. Dazu wird PC-seitig eine selbstgeschriebene Software verwendet. Die EEPROMs können hier einzeln angewählt und eine Zieladresse festgelegt werden. Die Bitmaps, gezeichnet z.B. in Paint werden am PC zunächst in ein platzsparendes Monochrom-Format umgewandelt.
Der Fortschritt der Übertragung wird durch einen Balken angezeigt.
(Bild anklicken zum Vergrößern)
Um eine benutzerfreundliche Bedienung zu gewährleisten, manövriert man sich mit dem Steuerkreuz durch ein Icon-Menü.
(Bild anklicken zum Vergrößern)
Hier sieht man ein paar Untermenüs.
Die Einstellungen werden in den EEPROMs abgelegt und bleiben so auch ohne Spannungszufuhr erhalten.
(Bild anklicken zum Vergrößern)
(Bild anklicken zum Vergrößern)
Sinus und Cosinus sind für den Controller kein Problem. Deshalb lässt sich so auch eine Analoguhr darstellen.
(Bild anklicken zum Vergrößern)
Wie bei den meisten meiner Elektronikprojekte geht es hier auch wieder darum, den Minicomputer im Auto benutzen zu können. Klappt gut :)
Die Platine passt recht genau in die Halterung eines PDAs und lässt sich dadurch gut an der Scheibe befestigen.
Das Display hat zwar eine hohe Reaktionszeit, aber selbst bei Temperaturen unter -5°C ist es noch gut ablesbar.
(Bild anklicken zum Vergrößern)
Digitaltacho ist natürlich auch wieder dabei! :)
Hier sieht man den "Fahrtenschreibermodus". Die Geschwindigkeit wird hier automatisch über der Zeit als Kurve aufgetragen.
Ein weiterer Anzeigemodus zeigt zusätlich einen Kilometerzähler, die Uhrzeit und einen grob berechneten Beschleunigungswert an. Der Eingang für das Tachosignal erfolgt ebenfalls am Anschluss unten an der Platine.
(Bild anklicken zum Vergrößern)
...und dann kam der Moment, an dem ich übermütig wurde...
Der Programmspeicher des Controllers war einfach nicht vollzukriegen. Deswegen habe ich noch dieses einfache Spiel programmiert.
Wie aus Atari-Zeiten bekannt bekriegen sich hier zwei Panzer. Der Winkel sowie die Schusskraft können über das Steuerkreuz eingestellt werden. Ein Zufallsgenerator stellt die Windkraft und -richtung ein. Leider hat das Display eine relativ hohe Reaktionszeit (dafür war es aber billig :)
Die fliegende Kanonenkugel ist deshalb nicht immer ganz einfach zu erkennen.
Ein schicker Arcade-Sidescroller - wie zuerst geplant - ist deshalb leider auch eher schlecht zu verwirklichen.
(Bild anklicken zum Vergrößern)
(Bild anklicken zum Vergrößern)

Für die dauerhafte Anwendung im Auto ist das Gerät natürlich etwas zu groß geraten. Wie man im obersten Bild sieht, wurde viel Platinenplatz verschenkt. Zum experimentieren ist das aber optimal. Mit SMD-Bauteilen lässt sich die Schaltung sicherlich um mindestens die Hälfte verkleinern.

Leider ist die Übertragungsgeschwindigkeit zwischen dem PIC und den seriellen EEPROMs relativ gering. Und das nicht nur beim Schreiben. Werden die Hintergrundbilder (jeweils 1kB) geladen, dauert dies ca. 2 Sekunden. Auch der große Font liegt nicht im RAM sondern jedes Bitmap wird erst aus den EEPROMs geladen. Für die Zukunft sollte man wohl über parallele EEPROMs nachdenken, oder die Bitmaps vorher in einen RAM laden.
Der Grafikspeicher für das Display verschlingt 1kB wertvollen RAMs des Controllers. Hier sollte in Zukunft entweder ein Display mit integriertem RAM (und höherer Reaktionszeit) verwendet werden, oder ein externer Grafikspeicher auf der Platine untergebracht werden.


UPDATE (20.02.2005):

Um die 40 Mhz Rechenpower des PICs an die Grenzen zu treiben habe ich mich an einer kleinen 3D-Engine versucht.
Funktioniert erstaunlich gut :)


Home
Letztes Update: 28.10.2007