DasErstellt: 15.02.2017
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 ich meinen 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 ich
kümmerte mich 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.
Ich 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.
Selbst werde ich kein eigenes Modul mehr aufbauen, da ich mich dem zuvor beschriebenen Einwand anschloß.
NachErstellt: 25.07.2017
dem nun fast ein halbes Jahr vergangen ist, habe ich meine 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 ich 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. Ich
verwende 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.
I²C-Programm - Entwicklungsabschluß
DieErstellt: 23.03.2019
Entwicklung des Programms wurde Anfang 2019 abgeschlossen. Am Meßverfahren wurde nichts geändert. Die
Ausgabe der Werte auf dem Bildschirm findet nicht mehr statt. Das Programm existiert nun in drei Varianten.
-
Eine sogenannte "stand-alone"-Variante, welche praktisch der Hauptvariante entspricht und die gemessenen
Werte ausschließlich auf dem LCD ausgibt.
-
Als kleine Spielerei ist es möglich, während der Bilderschau die I²C-Geräte Werte messen zu lassen. Dazu
waren einige Anpassungen notwendig, die auf die Gegebenheiten des Programms zur Bilderschau eingehen.
-
Diese Variante integriert den XY-Schreiber Endim 622.01. Damit wurde eine sinnvolle Kombination von
Hard- und Software geschaffen. Die von den I²C-Geräten gemessenen Werte werden vom Programm verarbeitet und
aufbereitet. Zur Ausgabe der Meßwerte auf dem LCD kommt nun noch die Ausgabe auf den XY-Schreiber. War schon
die Berechnung der Anzeigewerte eine Herausforderung, so ist diese für den XY-Schreiber ungleich schwerer
gewesen.
Da alle Programme mit dem Basic-Compiler des JKCEMU entwickelt werden und dieser keine Fließkommaarithmetik
beherrscht, mußte ein Algorithmus entworfen werden, welcher die Formeln zur Berechnung der Werte für den
Koordinatenschreiber in Ganzzahlarithmetik abarbeitet. Letztendlich handelt es sich um Werte, welches das Modul
M029 veranlassen, Spannungen an den beiden Ausgängen zu generieren. Der Endim 622.01 führt Schreibwagenbewegungen
nur durch angelegte Spannungen aus, jeweils getrennt für die x- und y-Koordinate.
Allen drei Varianten ist die Aufteilung in einen Initialisierungs-, einen Funktions- und einen Startteil eigen.
Variante 2 und 3 befinden sich auf einem M041, welches nicht im Schacht 8 des Grundgerätes steckt.
Variante 1 integriert den Startteil in der Bilderschau, welche sich auf dem M041 befindet, daß als Autostartmodul
gesteckt ist.
Das Archiv im Download-Bereich enthält jetzt auch den Quellcode der Variante 3.
|