Das Scannermodul für den KC85 - M051

Das sogenannte Scanner-Modul wurde vor fast 20 Jahren, zwischen 1998 und 2001 vom KC-Club entwickelt. Es ist sowohl hardware- als auch software-seitig eine herausragende und beeindruckende Entwicklung. Federführend bei der Entwicklung waren Ralf Kästner und Enrico Grämer.
Zur damaligen Zeit hatte der Autor seinen KC85 schon längst vergessen, obwohl er immer einen Ehrenplatz hatte und deutlich sichtbar im Schrankfach stand. Erst 2009 erwachte das Interesse an der alten Technik erneut und auch das M051 sollte in die entstehende Sammlung integriert werden. Jedoch war es nicht mehr erhältlich.

Anfang des Jahres 2016 erwachte im Robotrontechnik-Forum erneut das Interesse am Scanner-Modul.
Anfängliche Zweifel, daß sich genügend Interessenten finden werden, zerstreuten sich schnell. Auch Bedenken, was die Verfügbarkeit von "abgekündigten" Bauteilen anbelangt, konnten ausgeräumt werden.
So wurden von Kai Oelscher die notwendigen Atmel-Controller programmiert zur Verfügung gestellt und der Autor kümmerte sich um die Beschaffung aller anderen "exotischen" Bauelemente, insbesondere der GAL und der 7-poligen Mini-DIN-Buchse für den I²C-Anschluß.
Enrico Grämer wollte verständlicherweise kein zweites Mal die ganze Organisation der Bestellungen und des Versands ganzer Bausätze übernehmen. Er hatte diese Prozedur schon viele Male hinter sich.
Der Autor selbst hatte eigentlich gar kein rechtes Interesse mehr an dem Modul, war aber sehr gern bereit, alles Organisatorische zu übernehmen, damit das Projekt nicht eventuell noch daran scheitern sollte.

Enrico Grämer begann mit dem Re-Layout der Platine. So wurden einigen Bauteile versetzt und optimiert angeordnet, für die Sicherung wurde eine SMD-Alternative geschaffen und eine optionale LED zur Anzeige der intakten Sicherung wurde implementiert. Wer diese LED aktiv verwenden möchte, muß etwas Phantasie entwickeln, damit sie durch die Modulblende von Maik Trompter hindurch sichtbar und dabei die Blende nicht zerstört wird. Der Einsatz von Diodennetzwerken in SIL-Form wurde aufgrund der Verfügbarkeit solcher nicht umgesetzt. Das Platinen-Layout berücksichtigt diese jedoch.
Kai Oelscher fing damit an, alle Informationen einzusammeln, die zur Programmierung des Controllers notwendig sind und Maik Trompter begann damit, die Daten für die Herstellung einer stabilen Modulblende aus Aluminium, welche extrem originalgetreu aussieht, aufzunehmen.

Es war von Anfang an klar, daß es vom Projektbeginn bis zur Auslieferung der fertigen Bausätze ein langer Weg werden wird, zumal der Start in das Frühjahr fiel und bei einigen Beteiligten damit die Gartensaison beginnt.

Im Oktober 2016 wurde das Testmodul aufgebaut und erfolgreich in Betrieb genommen.
Zunächst wurden die Scanner-Schnittstelle und danach der serielle Port getestet.
Der Test der Scanner-Schnittstelle erfolgte mit dem Programm UniPic (in der Version 2.1) von Ralf Kästner und die serielle Schnittstelle wurde mit den WTOOLS (in der Version 1.4) von Ralf Kästner und den MTOOLS (in der Version 1.4) von Frank Dachselt getestet.
Als letztes wurde die I²C-Schnittstelle geprüft. Mario Müller stellte dazu freundlicherweise ein kleines Modul zur Verfügung, inklusive eines Programms zur Ansteuerung dieses.
Während der Tests war es sehr beeindruckend, die Programme WTools und UniPic im Einsatz zu erleben. Insbesondere Ralf Kästner und Frank Dachselt haben hier eine sehr gute Entwicklungsarbeit geleistet.

Mittlerweile hat Rolf Weidlich die Entwicklung des I²C-Anteils deutlich vorangetrieben und eine neue Firmware des Controllers bereitgestellt. Sein Antriebsgrund dafür war der Anschluß und die Verwendung eines Temperatursensors, zu der er auch eine Betriebssoftware für den KC85 entwickelt hat. Sowohl Firmware und Software, als auch die Dokumentation dazu sind im KC-Labor und auf der Homepage des KC-Clubs zu finden.

Maik Trompters Blenden trafen Mitte November 2016 ein und bis Ende Januar 2017 wurden alle Bausätze an ihre Empfänger verschickt.

Auch nach fast 20 Jahren, die seit der "Geburt" des Scanner-Moduls vergangen sind kann man sagen, daß das M051 seine Berechtigung in der Modullandschaft für den KC85 hat.
Es ist schon ein beeindruckendes Stück Hardware und obwohl der Einwand Einiger berechtigt ist, die der Meinung sind, daß es nicht dem Stand der Technik entspricht, Bilder am KC einzuscannen, ist es doch faszinierend dabei zuzusehen, wie in UniPic ein eingescanntes Bild wächst. Und wenn dieses dann noch auf dem grafikfähigen Drucker K6313 ausgedruckt wird, rundet es das Ganze ab.
Der Autor selbst wird kein eigenes Modul mehr aufbauen, da er sich dem zuvor beschriebenen Einwand anschloß.

Nach dem nun fast ein halbes Jahr vergangen, hat der Autor seine Meinung, was den Aufbau eines eigenen Moduls anbelangt, geändert. Jedoch nicht, um in Zukunft Bilder am KC einzuscannen, sondern weil die Anwendung der I²C-Geräte fasziniert.
Als erster Test wurde das von Rolf Weidlich initiierte Thermomodul aufgebaut und in Betrieb genommen.
Nun soll in einem weiteren Schritt ein komplexerer Anwendungsfall umgesetzt werden. Angeschlossen werden sollen eine RTC, ein kombinierter Temperatur- und Feuchtigkeitssensor und ein Barometer. Die größte Herausforderung dürfte dabei das Barometer sein.
Die Werteregister der I²C-Geräte sollen über ein interruptgesteuertes CAOS-Programm ausgelesen und deren Werte in der obersten Bildschirmzeile zur Anzeige gebracht werden.
Aber das alles ist noch Zukunftsmusik. Zunächst erfolgt eine Einarbeitung in die I²C-Thematik unter Zuhilfenahme eines Arduino Uno.
Nur 10 Tage später wurde eine erste Testversion eines I²C-Steuerprogramms in Betrieb genommen. Das Programm arbeitet interruptgesteuert und verwendet dafür den CTC des M001. Die zum Einsatz kommenden I²C-Geräte sind eine RTC (DS3231), ein kombinierter Feuchtigkeits- und Temperatursensor (Si7021) und ein Luftdrucksensor (BMP280). Die beiden Sensoren sind am Bus 0 des I²C-Anschlusses des M051 angeschlossen; die RTC am Bus 1.

Nachdem einige Wochen des Studiums vergangen sind, konnte der Autor eine überarbeitete Version des I²C-Steuerprogramms entwickeln, nicht zuletzt dank der freundlichen Hilfe von Rolf Weidlich.
Das Äußere des Programmstarts wurde kompakter gestaltet. Die Abfrage des Si7021-Sensors (Feuchtigkeit, Temperatur) ist komplett implementiert. Das "Schwierigste" bei der Programmierung ist die Berechnung des eigentlichen Anzeigewertes. Der Autor verwendet den Basic-Compiler des JKCEMU. Dieser beherrscht vorzeichenbehaftete 16-bit-Integerzahlen. Die vom Si7021-Sensor gelieferten Daten (Zahlen) sind jedoch größer. Daher wird zu einer speziellen Arithmetik gegriffen. Für die Feuchtigkeit ergibt sich damit die Einschränkung, daß unterhalb von 8% ein Wert von 0% angezeigt wird. Für die Temperatur ergibt sich für den Innenbereich keine Einschränkung. Der Genauigkeitsverlust bei der Feuchtigkeit beträgt absolut rund 0,1%, was bei einer Toleranz des Sensors von 2% akzeptabel ist. Die berechnete Temperatur weicht absolut um rund 0,2 °C ab. Auch dies ist akzeptabel. Die Temperatur wird mit einer Nachkommastelle angezeigt.
Für die Luftdruckmessung war zunächst der Einsatz des BMP280 vorgesehen. Dem Datenblatt können die notwendigen Formeln zur Ermittlung der Werte entnommen werden. Eine Berechnung der Werte mit dem Z80-Prozessor ist mit einem unverhältnismäßig hohen Aufwand verbunden, was letztendlich den Nutzen des Programms auf ein Minimum reduzieren würde.
Eine Recherche führte zum MPL3115A2 von Freescale. Dieser Sensor ist ähnlich akkurat wie der Bosch-Sensor, bietet aber noch erweiterte Funktionalität an. Das Beste aber: Er berechnet den Wert des Druckes intern und stellt diesen als vorzeichenlose 18-bit-Zahl zur Verfügung (zwei weitere Bit sind die Nachkommastellen). Diese Zahl stellt den Wert in Pascal dar. Da ein zu erwartender Luftdruck im Bereich von 900-1100 hPa liegt kann auf die beiden letzten Bit verzichtet werden. Der letztendlich mit einer Nachkommastelle berechnete Wert weicht um maximal 0,09 hPa ab.
Da der MPL noch nicht vorhanden ist, wird er zurzeit im Programm nicht berücksichtigt.

Aufgrund der Komplexität und Größe des Programms wurde es zweigeteilt. Der eine Teil initialisiert das ganze System (Module und Geräte) und der andere Teil ist die Interrupt-Serviceroutine (ISR). Die ISR wiederum läuft ab dem Bereich C000 und ist auf dem M041 plaziert.
Als Ausgabeeinheit ist mittlerweile ein LCD hinzugekommen, welches ebenfalls über I²C gesteuert wird. Dies wird durch einen Port-Expander-IC PCF8574AT ermöglicht. Da es sich um ein alphanumerisches Display handelt (Typ 2004A), ist die Ansteuerung sehr schnell. Der Port-Expander hat noch ein freies Port-Bit P3. Dieses wird zur Steuerung der Hintergrundbeleuchtung des LCD verwendet. Werden neue Werte ausgegeben, blinkt die Beleuchtung kurz auf.
Der MPL ist de-facto eingebunden, nur die Werteausgabe ist noch nicht umgesetzt.
Auf zwei Abbildungen sind die Sensoren-Box und das LCD zu sehen.

Mittlerweile steht das kleine Projekt kurz vor dem Abschluß. Die Sensorenbox wurde mit einem flexibleren Kabel versehen und geschlossen. Für das LCD wurde ein Gehäuse aus Acrylglas gefertigt. Um beide Einheiten räumlich getrennt aufstellen zu können, wurde ein Y-Kabel für den I²C-Anschluß des M051 gefertigt. Das Anfertigen eines Kabels ist immer eine kleine Herausforderung.

Im Download-Bereich befindet sich ein Archiv, daß alle Informationen beinhaltet, die während der Projektphase gesammelt wurden.

KC854 original
85/4 - original
KC855 erweitert
85/5 - erweitert
D004
D004 - GIDE-IF
Disk-Laufwerke
Disk-Laufwerke
PS2-Tastatur
PS/2-Tastatur
Module
M052 / M035x4
KC855 modifiziert
85/5 - verändert
PS2-Interface
PS/2-Interface
CF-Kartenleser
CF-Kartenleser
M030-Eprommer
M030 - Eprommer
Drucker K6304
Drucker K 6304
M041-2x16 KB EEPROM
M041 - EEPROM
M066-SOUND
M066 - SOUND
M051-Scanner
M051 - Scanner