3. Beschreibung von Standardanwendungen und Programmierungsmöglichkeiten des C-Control-Systems
Bevor im 4. Abschnitt eine Beschreibung von Projekten selbst entwickelter Schaltungen erfolgt, soll zunächst an typischen Beispielen der Einsatz der in 2. beschriebenen Standardkomponenten sowie die Art der Programmierung des C-Control-Systems erläutert werden. Dabei geht es nicht darum, eine nach unterrichtsdidaktischen Gesichtspunkten ausgewählte Folge von Schaltungs- und Programmbeispielen zu geben. Mit Hilfe der umfangreich verfügbaren Literatur (vgl. z.B. [4] bis [6]) lassen sich leicht dementsprechende Versuchsreihen zusammenstellen, die sich an den individuellen Voraussetzungen der Schüler und Klassen, dem Umfang der verfügbaren Unterrichtszeit sowie der Anzahl verfügbarer Geräte orientieren.
Bei der Programmierung beschränken wir uns auf die Anwendung von BASIC.
3.1. Grundprinzip
der Programmierung des C-Control-Systems
Prinzipiell erfolgt die Programmerstellung und Syntaxprüfung an einem normalen PC-Terminal. Dafür stehen Entwicklungsumgebungen sowohl für DOS als auch für Windows 95/98 zur Verfügung. Letztere bietet natürlich nicht nur den höheren Komfort, sie hat auch den Vorteil, daß sie einen Simulator enthält, der es erlaubt, die Programme auch ohne angeschlossene C-Control-Unit zu testen.
Bei Übersetzung des in BASIC formulierten Quelltextes wird zunächst ein Zwischencode erzeugt, der die BASIC-Schlüsselwörter durch ein Byte große sogenannte BASIC-Tokens ersetzt. Dieser kann dann anschließend mit Hilfe eines seriellen Nullmodemkabels über die RS232-Schnittstelle an die C-Control-Unit übertragen werden. Dort wird das Programm in dem externen 8kB großen EEPROM abgelegt.
Der Befehlssatz des C-Control-BASICS (CC-BASIC) ist sehr einfach gehalten (z.B. keine Fließkommaarithmetik), entspricht dafür aber genau den Erfordernissen der Arbeit mit dem Microcontroller. Eine genaue Befehlsübersicht findet sich in der mit der C-Control-Unit ausgelieferten Beschreibung und kann von den Schülern wirklich in wenigen Stunden erlernt werden. Das ist einer der wesentlichsten Vorteile des Einsatzes dieser Sprache, denn damit bleibt das Hauptaugenmerk z.B. auf das Verstehen des Systems und die Prozeßabläufe gerichtet.
Der auf der anderen Seite im Vergleich zu anderen Systemen bestehende Nachteil der geringen Ausführungsgeschwindigkeit (diese kann im ms-Bereich liegen), spielt bei den meisten Anwendungen keine Rolle. Sollte dies doch einmal der Fall sein, dann reicht es in der Regel aus, die zeitkritischen Routinen in Assembler zu schreiben und in das BASIC-Programm einzubinden. Auch dieses Verfahren ist relativ einfach zu handhaben.
3.2. Grundprinzip
der Ein-/Ausgabe ü
Die 16 digitalen Ports des Controllers können sowohl als Eingang wie auch als Ausgang genutzt werden. Eine genaue technische Beschreibung der Digitalports findet sich z.B. in [4:29-31]. Danach wird ein Port automatisch als Aus- bzw. Eingang geschaltet, wenn er von einer entsprechenden schreibenden oder lesenden BASIC-Anweisung als solcher angesprochen wird (max. Ausgangsstrom 10mA).
Hierzu ein Beispielprogramm:
'Demonstration der Ein- und Ausgabe über die Digitalports
| define LED port[1] | |
| define JMP port[8] | |
| #loop | 'JMP setzen -> LED an |
| if JMP = OFF then LED=ON else LED = OFF | 'JMP entfernen -> LED aus |
| goto loop | 'OFF = 1 ON = 0 |
| end |
Port 1 wird hier als Ausgabe- Port 8 als Eingabeport genutzt. Die nachfolgenden Bilder veranschaulichen die Wirkung des Programmes auf dem Starterboard.
|
Ist der Port 8 durch den gesetzten Jumper "auf Masse gezogen" (low), dann leuchtet die LED an Port 1 (d.h. dieser ist durch die then-Bedingung des Programmes entsprechend high gesetzt: |
|
Entsprechend führt Port 8 bei abgezogenem Jumper high-Pegel und die LED ist aus (Port 1 low). |
|
|
Ein ähnlich einfaches Beispiel verdeutlicht die Anwendung der analogen Eingangsports.
Dazu wird ein von conrad-electronic angebotener fertig kalibrierter Temperatursensor an den AD-Port 1 des Starterboards angeschlossen. Die Verwendung des Starterboards hat den Vorteil, daß dieser Sensor über den dreipoligen Anschluß mit der notwendigen Versorgungsspannung von 6,5V versorgt werden kann.
Ein entsprechendes Auswerteprogramm könnte z.B. so aussehen:
| define ADPort AD[1] |
|
| define Eingang byte | 'Wertebereich: 0...255 |
| define Temp word | 'Wertebereich: -32768...+32767 |
| #loop | |
| Eingang = ADPort | 'Einlesen des AD-Ports Nr. 1 |
| print Eingang | 'Senden des gelesenen Wertes an den PC |
| looktab Tabelle,Eingang,Tem | 'Zuordnung Ad-Wert-Temperatur |
| print Temperatur," Grad Celsius" | 'Senden des Temperaturwertes an den PC |
| pause 200 | 'Pause con 200x20msec=4sec |
| goto loop | |
| end | |
| table Tabelle "PT100.TAB" | 'für Sensor mit Meßbereich -50°C-+600°C |

Der Sensor liefert eine Meßspannung im Bereich 0V bis 2,5V, so daß der Steuercomputer im Ergebnis der AD-Wandlung Werte zwischen 0 und 255 erzeugt (eine Einstellung der Referenzspannung von 2,5V vorausgesetzt).
Der Meßbereich des hier verwendeten Sensors reicht von –50°C bis +600°C. Somit muß durch das Programm eine Zuordnung der digitalen Ergebniswerte zur zugehörigen Temperatur vorgenommen werden. Da die Kennlinie eines Sensors in der Regel nicht linear verläuft, wird diese Zuordnung zweckmäßigerweise nicht durch Berechnung aus einer einfachen Verhältnisgleichung, sondern durch Auslesen des Meßwertes aus einer für den Sensor typischen Kalibriertabelle mit 255 Einträgen vorgenommen. Der digitale Wandlungswert ist dabei der Index für den zu lesenden Tabelleneintrag. Diese Tabelle liegt als eigenständige Datei (im Beispiel PT100.TAB) und wird beim Laden des Programmes mit in den externen EEPROM des Microcontrollers übertragen.