Außerdem erhielt jede der Platinen an drei Stellen Präzisionskontakte zum Einstecken von isolierten Verbindungsdrähten, die ebenfalls auf dem Bild zu sehen sind. Außerdem ist darauf zu erkennen, dass die Sensoren sich mit geeigneten Bauteilen an der Grundplatte befestigen lassen.
Dies hier ist die für das Projekt verwendbare Schaltung einer Gabellichtschranke.
Ein winkliger Baustein am drehbaren „Arm" der Verladestation bzw. ein an diesem befestigtes schmales Kunststoffstück bewegt sich bei einer Drehung und verdunkelt beim Erreichen der Lichtschranke deren Fototransistor.
Dies ist die Schaltung für jede der drei Taster-Eelemente einschließlich ihrer roten Leuchtdioden, die während der Drehbewegung blinken.
Damit das Modell einer Verladestation durch den Mikrocontroller auf dem oben erwähnten Experimentierboard angesteuert werden kann, werden weitere elektronische Schaltungen benötigt.
Diese befinden sich auf den abgebildeten Steckboards.
Die Schaltung zur Steuerung des Gleichstrom-Getriebemotors wurde bereits in einem anderen ELO-Artikel, der die Steuerung eines Aufzugmodells durch einen Arduino zum Gegenstand hat, vorgestellt und ebenso diejenige eines der Taktgeneratoren und der Entprellung mit NAND-Schmitt-Triggern des Ics CD4093.
Da für dieses Projekt drei Taster und drei Sensoren benötigt wurden, wurde noch ein weiteres Exemplar dieser Ics benötigt, um einen weiteren Taktgeber zu verwirklichen sowie zwei weitere Schaltungen zur Entprellung.
Die Kondensatoren zwischen den betreffenden Eingängen der NAND-Schmitt-Trigger werden zwar bei den Gabellichtschranken eigentlich nicht benötigt, können aber angeschlossen bleiben für den Fall, dass an ihrer Stelle später einmal Mikroschalter als Sensoren verwendet werden.
Dem folgenden Auszug aus dem Listing für den C-Control Pro-Baustein ist zu entnehmen, wie die Zuordnung der Anschlüsse des Mikrocontrollers zu den zusätzlichen elektronischen Schaltungen auf den Steckboards festgelegt wurde.
...
//Eingänge
#define Taster_L 0
#define Sensor_L 1
#define Taster_M 4
#define Sensor_M 5
#define Taster_R 2
#define Sensor_R 3
//Ausgänge
#define Motor_L 16
#define Motor_R 17
#define LED_L 18
#define LED_M 19
#define LED_R 20
int Merker1;
void main(void)
{
Port_DataDirBit(Taster_L,0);
Port_DataDirBit(Sensor_L,0);
Port_DataDirBit(Taster_M,0);
Port_DataDirBit(Sensor_M,0);
Port_DataDirBit(Taster_R,0);
Port_DataDirBit(Sensor_R,0);
Port_DataDirBit(Motor_L,1);
Port_DataDirBit(Motor_R,1);
Port_DataDirBit(LED_L,1);
Port_DataDirBit(LED_M,1);
Port_DataDirBit(LED_R,1);
// Am Anfang alle Aktoren aus
Port_WriteBit(Motor_R,0);
Port_WriteBit(LED_R,0);
Port_WriteBit(Motor_L,0);
Port_WriteBit(LED_L,0);
Port_WriteBit(LED_M,0);
...
Auf dem Bild ist links oben das zusätzliche IC CD4093 mit seiner Zusatzschaltung für Entprellung und Takterzeugung zu sehen sowie rote Leuchtdioden für die Anzeige von Ausgangssignalen und grüne zum Anzeigen von Eingangssignalen für den Mikrocontroller. Einzelheiten dazu finden man auch in dem oben erwähnten ELO-Artikel zur Steuerung eines Aufzugmodells durch einen Arduino.
Auf dem Bild ist das gesamte Projekt zu sehen. Als Spannungsversorgung dienen zwei Batterien aus in Reihe geschalteten Monozellen.
Der Mittelanschluss ist die gemeinsame Masse des Motors, dessen Drehrichtung durch eine „elektronische Wechselschaltung" gesteuert wird. Auch dazu findet man Einzelheiten in dem oben erwähnten anderen ELO-Beitrag.
Dies hier ist ein Auszug aus dem Listing für die C-Control Pro:
Es gibt neben dem Befehl zum Fahren in eine Anfangsposition einige weitere Steuerungsmöglichkeiten.
...
while(1)
{
if(Port_ReadBit(Taster_L)==1&&Port_ReadBit(Taster_M)==1)
{
//An Anfangsposition fahren
Anfangsposition();
}
else
if(Port_ReadBit(Taster_L)==1)
{
Linkslauf_L_ein();
}
else
if(Port_ReadBit(Taster_R)==1)
{
Rechtslauf_R_ein();
}
else
if(Port_ReadBit(Sensor_L)==1&&Port_ReadBit(Taster_M)==1)
{
Rechtslauf_M_ein();
}
else
if(Port_ReadBit(Sensor_R)==1&&Port_ReadBit(Taster_M)==1)
{
Linkslauf_M_ein();
}
}
}
...
Wurde z. B. der Taster zum Fahren nach rechts bis zum rechten Sensor betätigt, machen beispielsweise folgende Programmzeilen dies möglich:
...
void Rechtslauf_R_ein(void)
{
while(Port_ReadBit(Sensor_R)==0)
{
Port_WriteBit(Motor_L,0);
Port_WriteBit(LED_L,0);
Port_WriteBit(LED_M,0);
Port_WriteBit(Motor_R,1);
Port_WriteBit(LED_R,1);
}
if (Port_ReadBit(Sensor_R)==1)
{
Port_WriteBit(Motor_R,0);
Port_WriteBit(LED_R,0);
}
}
...
Bei der Erprobung des Programms hatte ich zunächst den Gleichstrom-Getriebemotor nicht angeschlossen, da der „Arm" mit der „Last" sich nicht unkontrolliert drehen sollte. Der Motor wurde erst zugeschaltet, nachdem ich mit dem Hardware-Debugger sowie den oben erwähnten Leuchtdioden zum Anzeigen von Ausgangs- und Eingangssignalen Fehler im Programm beseitigt hatte.
Programmlisting hier herunterladen und z. B. für ein eigenes Projekt umgestalten.
Die passende Ergänzung zu diesem Artikel:
| |  | Lernpaket Mikrocontroller Technik mit C-Control PRO Lieferumfang: Laborsteckboard, 40 Bauteile, 120-seitiges Handbuch ISBN 978-3-645-65057-1 Versandkostenfrei* direkt beim Verlag bestellen!
69,95 € 
|