Unterrichts- und Lernmaterial für Mikrocontroller
Unterrichts- und Lernmaterial fürMikrocontroller

1 - Der Servomotor

Mit Hilfe von Mikrokontrollern lassen sich viele Dinge bewegen; ob es der Druckkopf in einem Drucker, der Fensterheber in einem Auto oder die Armbewegung eines Roboters ist. Angetrieben werden die Teile von kleinen Schrittmotoren, die von einem Mikrokontroller ihre Anweisungen bekommen.

 

 

Ein-/Aus-Signale und Motorbewegungen

 

Wie wir bereits bei den LEDs gesehen haben, werden auch von Mikrokontrollern angesteuerte Motoren über HIGH und LOW Signale in eine kontrollierte Bewegung versetzt. Der Unterschied zur LED ist aber die viel schnellere Ablauffolge solcher HIGH-LOW-Signale. Würde man zur Kontrolle bei der Ansteuerung eines Motors eine LED zur Hilfe nehmen, dann würde das menschliche Auge die schnellen Änderungen der HIGH und LOW Signale an den Motor nicht auflösen können. Als Ergebnis sehen wir nur eine mehr oder weniger hell leuchtende LED.

Der einfachste Motor, mit dem man das Ansteuern durch einen Mikrokontroller näher untersuchen, lernen und verstehen kann ist der Servo. Er benötigt keine zusätzlichen elektronischen Hilfsschaltungen oder mechanische Zusatzbauteile und er ist sehr leicht über die BASIC Stamp ansprechbar.

 

 

 

 

 

 

 

Abbildung 4.1

Drei verschiedene Servomotoren:

a) Parallax Freilaufservo

b) Parallax Standardservo

c) Futaba Standardservo

Standardservos finden sich in allen ferngesteuerten, sogenannten RC-Modellbauten, wie Flugzeugen, Hubschraubern, Quadrocoptern, Booten und Fahrzeugen. In Autos sind sie unter anderem für die Lenkung und die Drosselklappe beim Motor verantwortlich, in einem Boot für die Ruderanlage und in einem Flugzeug für die Quer- und Seitenruder.

 

Ein RC Flugzeug wird per Funk-Fernsteuerung mittels zweier sogenannter Reflexstifte oder Steuerknüppel gesteuert, die wie Joysticks aussehen. Die Steuerungsdaten werden per Funk von der Steuerungseinheit an das Flugzeug übermittelt und dort von den jeweiligen Servos entsprechend umgesetzt.

Genauer gesagt wird jede Position der beiden Steuerknüppel von der Fernsteuerung möglichst schnell in Steuerimpulse bestimmter Länge umgesetzt. Die Länge eines Impulses ist ein Maß für die Position des Joysticks. Im RC-Modell werden die Steuerimpulse in digitale Impulse (HIGH/ LOW) umgesetzt und dann an die Servos übergeben. In jedem von ihnen existiert eine elektronische Schaltung, die diese digitalen Impulse wiederum in eine Drehbewegung umsetzen kann.

 Die Länge eines Impulses ist dabei ein Maß für die Position, die das Steuerhorn eines Servos dann einnimmt oder den Winkel um den es sich dreht. Diese Impulse werden 40 bis 50 mal pro Sekunde wiederholt, haben eine Impulslänge von wenigen tausendstel Sekunden und halten den Servo in seiner Position.

 

Die Länge eines Impulses ist dabei ein Maß für die Position, die das Steuerhorn eines Servos dann einnimmt oder den Winkel um den es sich dreht. Diese Impulse werden 40 bis 50 mal pro Sekunde wiederholt, haben eine Impulslänge von wenigen tausendstel Sekunden und halten den Servo in seiner Position.

 

 

 

 

 

 

 

Abbildung 4.2

Parallax Standardservo mit

a) Buchse

b) Anschlusskabel

c) Gehäuse

d) Steuerhorn

 

 

In dieser Lektion werden wir die BASIC Stamp so programmieren, dass sie Impulssignale an den Servo sendet und das Steuerhorn in bestimmte Positionen dreht oder den Servo in einer bestimmten Position hält. Die folgenden Programme fragen Druckschalter ab und benutzen die Information, ob ein Schalter gedrückt wurde oder nicht, das Steuerhorn eines Servos in eine bestimmte Position zu drehen und zu halten (Servo Positionskontrolle mit Drucktaster). Die BASIC Stamp werden wir auch dazu benutzen Eingabewerte über das Terminal abzufragen und damit die Position eines Servos zu verändern (Servo Positionskontrolle über Terminal).

 

In Lektion 4 lernst du

 

  • was ein Servo ist und wie er beschaltet wird.
  • wie ein Servo auf Funktionsfähigkeit getestet wird.
  • wie ein Servo mit einem PBASIC Programm angesteuert wird.
  • etwas über den PBASIC Befehl pulsout.
  • wieviel Mikrosekunden eine Millisekunde hat.
  • etwas über Pulsfolgen und Drehbewegungen.
  • FOR...NEXT Schleifen kennen und anzuwenden.
  • die Schrittweite einer FOR...NEXT Schleife zu verändern.
  • wie man Zählschleifen aufwärts und abwärts zählen lässt.
  • ein Impulsdiagramm zu lesen und zu interpretieren.
  • die Umrechnung von Mikrosekunden zu Millisekunden und umgekehrt.
  • wie man Daten über das Debug Terminal einlesen kann.
  • neue Formatierungsbefehle für den debug-Befehl.
  • wie man mit einem oder mehreren Drucktastern einen Servo steuert.

2 - Aufbau und Test eines Servos

Material
  • 1x BASIC Stamp Board of Education
  • 1x Parallax Standard Servo
  • 1x 470 Ohm Widerstand (gelb - violett - braun)
  • 1x LED
  • 1x micro-USB Kabel
Aufgabe
  • Baue die Schaltung nach Abbildung 4.3 auf.

Der LED Schaltkreis dient in dieser Übung nur dazu, die Kontrollsignale, die von der BASIC Stamp an den Servo gesendet werden, "sichtbar" zu machen.

Hinweis: Am Board of Education lassen sich nicht alle am Markt erhältlichen Standardservos betreiben. Wer also eigene Servos zu Hause hat, sollte erst mit dem Parallax Standard Servo Erfahrungen gesammelt haben, bevor er sich an die Untersuchung eines fremden Produkts macht.

 

Anschluss eines Servos

 

  • Schalte das Board aus.
  • Überprüfe, ob der Kurzschlussbügel zwischen den Wannensteckern X4 und X5 in der Position Vdd steht (Abb. 4.3). Wenn nicht, ziehe den Kurzschlussbügel von den Pins ab und bringe ihn in die korrekte Position.

 

 

 

 

Abbildung 4.3

Board of Education

X4 - X5 Wannenstecker mit

Kurzschlussbügel

Mit dem Kurzschlussbügel wird die Energiequelle für den Servo/die Servos eingestellt.

  • Wird mit einer 9V Batterie gearbeitet, dann muss der Bügel in die Position Vdd gesetzt werden.
  • Werden 4 AA Batterien benutzt, sind beide Einstellungen nutzbar.

Schaltskizze und Schaltungsaufbau

 

 

 

 

 

 

 

Abbildung 4.4

Schaltung für Servo und LED Anzeige auf dem

Board of Education

 

 

 

 

 

 

 

Abbildung 4.5

Schaltungsaufbau von Servo und

LED Schaltkreis auf dem

Board of Education 

Courtesy of Parallax Inc.

  • Bisher wurde der Ein-/Ausschalter der Spannungsversorgung nur in der Position 1 benutzt. Immer dann, wenn wir mit dem Servo arbeiten, muss eine zusätzliche Spannungsversorgung eingeschaltet werden. Der Power-Schalter steht in Position 2.

 

Abbildung 4.6

Power Schalter auf dem Board of Education

in Position 2 bei Betrieb mit einem Servo.

  • Achte auf die identische Farbreihenfolge der Drähte in der Abbildung.
  • Überprüfe die Verdrahtung noch einmal.
  • Bringe den Power-Schalter in Position 2. Der Servo kann dabei eine kurze Bewegung ausführen.

3 - Testprogramm zur Servoüberprüfung

Das Steuerhorn eines Parallax Standard Servos kann innerhalb eines Bereichs von 180° jede Winkelposition einnehmen. Wenn man einen kleinen Draht am Steuerhorn befestigt, ähnlich wie in Abbildung 4.7 gezeigt oder ein Stück Pappe in Form eines Zeigers auf das Horn klebt, dann lässt sich die Drehbewegung und der überstrichene Winkelbereich des Horns besser verfolgen.

Abbildung 4.7 Beispiele für unterschiedliche Winkelstellungen des Steuerhorn. Das Steuerhorn wurde noch nicht justiert. Courtesy of Parallax Inc.

Die Mittelstellung eines Servomotors findet man, indem man das Steuerhorn vorsichtig im und gegen den Uhrzeiger jeweils bis zum Anschlag dreht. Die Mittelstellung entspricht dann der 90° Position.

Sie liegt irgendwo in dem angezeigten Bereich und muss für jeden Servo neu ermittelt werden.

 

 

 

 

 

 

 

 

 

 

 

Abbildung 4.8

Der Winkelbereich, in dem die Mittelstellung eines Servos

liegen muss.  Courtesy of Parallax Inc.

Aufgabe

  • Drehe das Steuerhorn vorsichtig nach links und rechts bis du einen Widerstand verspürst. Das sind die maximalen Endpositionen.
  • Drehe das Horn jetzt in die ungefähre Mittelstellung bezüglich der beiden ermittelten Endpositionen.
  • Markiere diese Stellung mit einem aufgeklebten Zeiger oder einem Stück Draht, wie in Abbildung 4.8 gezeigt.
  • Die gefundene Mittelstellung kann deutlich von der in den Abbildungen gezeigten abweichen.

Drehbewegungen eines Servos programmieren

Abbildung 4.9 zeigt ein sogenanntes Zeitdiagramm eines Servomotors. Dargestellt wird eine Folge von HIGH-/ LOW-Signalen von einer BASIC Stamp, mit der ein Servo in der 90° Postion verweilt.

Abbildung 4.9

Das Zeitdiagramm eines Servos. 1,5ms Impulse halten das Steuerhorn in der 90° Position (Mittelstellung)

Courtesy of Parallax Inc.

Die Signalfolge wiederholt sich alle 21,5ms. 1,5ms liegt ein HIGH-Signal an, gefolgt von einem ca. 20ms LOW-Signal. Mit diesem Pulsfolgeschema wird der Servo in seiner stabilen Position gehalten. Das Dauer des anliegenden LOW-Signal kann nach oben und unten um wenige Millisekunden abweichen, während die Dauer des HIGH-Signals für die genaue Positionierung exakt sein muss.

Mit dem speziellen PBASIC-Befehl pulsout lässt sich die Dauer für ein HIGH-Signal exakt vorgeben. Wir sprechen zukünftig auch kurz von der Pulsdauer eines HIGH-Signals.

  • PULSOUT Pin, Dauer

legt die Pulsdauer für ein HIGH-Signal fest.

PIN ist eine natürliche Zahl; sie gibt den Ausgangsport an, über den der Impuls  geschickt wird.

Dauer legt die Impulslänge in Vielfachen von 2µs fest.

Mit Hilfe des Befehls PULSOUT können wir jetzt mit Hilfe eines PBASIC Programms einen Servo in die 90° Position drehen lassen.

Der millionste Teil

  • Der millionste Teil einer Sekunde wird als Mikrosekunde (µs) bezeichnet. Statt 2 Mikrosekunden schreiben wir kürzer 2µs.

Der tausendste Teil

  • Der tausendste Teil einer Sekunde ist die Millisekunde (ms).

Umrechnung:  1 ms entsprechen 1000 µs oder mit anderen Worten: erst wenn 1000 Mikrosekunden vergangen sind, ist 1 Millisekunde herum.

Aufgabe
  • Gib das Programm 4_2 ein.
  • Speicher das Programm unter dem Namen 4_2.bs2 auf einem Stick ab.
  • Stelle den Power-Schalter in Position 2.
  • Starte das Programm und notiere, wie das Steuerhorn reagiert.
  • Drücke die Reset-Taste und starte das Programm ein zweites Mal.

Das Programm 04_02.bs2

Programm 04_02.bs2

 

Meine Beobachtungen

a) Das Steuerhorn ...

_______________________________________________

 

_______________________________________________

 

_______________________________________________

 

b) Nach einem Reset habe ich beobachtet, dass das Steuerhorn ...

 

_______________________________________________

 

_______________________________________________

 

c) Ich erkläre mir das so, dass ...

                                 

_______________________________________________

 

_______________________________________________

 

_______________________________________________

 

Wie funktioniert das Programm 04_02.bs2?

Zeile 7

Der Befehl PULSOUT 14, 750 sendet einen Impuls von 750 x 2 µs Länge an den Servo; das entspricht einer Impulslänge von 1500 µs oder 1,5 ms.

Zeile 8

Anschließend wird für eine Dauer von 20 ms über Pin 14 ein LOW-Signal an den Servo gesendet.

Zeile 6 und Zeile 9

Die beiden Befehle in Zeile 7 und 8 sind in eine Endlosschleife eingebettet (DO ... LOOP). Damit werden die beiden Signale: HIGH für 1,5ms gefolgt von LOW für 20ms ständig wiederholt. Sie halten damit das Steuerhorn des Servo stabil in der Mittelstellung.

4 - Die Mittelstellung eines Servos überprüfen

Die 90° Position des Steuerhorns wird auch als Mittelstellung eines Standardservos bezeichnet. Mit einem 1,5ms Impuls wird das Steuerhorn stabil in dieser Position gehalten, dies entspricht ungefähr der Position, die wir auf mechanische Weise in Aufgabe 2 schon selbst herausgefunden hatten.

Bezüglich dieser Mittelstellung entspricht ein Drehwinkel von 45° der Hälfte zwischen Ausgangsposition und Mittelstellung und ein Winkel von 135° der Hälfte zwischen Endposition und Mittelstellung (siehe Abb. 4.7).

 

In der folgenden Aufgabe wird die Mittelstellung eines Servos bestimmt.

Aufgabe
  • Setze den Power Schalter in Position 0.
  • Drehe das Steuerhorn deines Servos vorsichtig in eine Endposition.
  • Setze den Power-Schalter in Position 2.
  • Starte das Programm 04_02.bs2.
  • Notiere dir, in welcher Position der Zeiger in der Mittelstellung ist.
  • Versuche jetzt mit der Hand das Steuerhorn vorsichtig aus der Mittelstellung zu drehen. Wie reagiert der Servo?

Meine Beobachtungen

Nach dem Einschalten der Spannungsversorgung dreht das Steuerhorn ..

 

_______________________________________________

 

_______________________________________________

 

Wenn ich mit der Hand versuche das Steuerhorn zu drehen, spüre ich

 

_______________________________________________

 

Jetzt kommst du!

Programme, mit denen das Steuerhorn um verschiedene Winkel gedreht werden kann

In Abb. 4.10 sind einige Winkelpositionen des Steuerhorns mit den entsprechenden Befehlsaufrufen dargestellt. Es sind Näherungszahlen, die in dem einen oder anderen Fall abweichen können und ggf. individuell angepasst werden müssen.

Alle Zwischenwinkelmaße lassen sich aus den vorgegebenen Angaben leicht ableiten.

Abbildung 4.10

Position des Steuerhorns eines Servos in verschiedenen Winkelpositionen mit Angabe der entsprechenden Parameter für den Befehl PULSOUT und der Impulsdauer in ms.  Courtesy of Parallax Inc.

Beispiel

Der Servo soll in die 30° Position drehen. Um den Wert der Größe Dauer im PULSOUT-Befehl herauszufinden, wenden wir den klassischen Dreisatz an:

Wir wissen, dass zwischen 0° und 90° 500 Pulse liegen (siehe Abb. 4.10). Damit gilt:

90° entspricht einer Impulslänge von  250 + 500

1°  entspricht einer Impulslänge
    von  250 + 500/90

30° entspricht einer Impulslänge von
    250 + (500/90)*30 = 250 + 166,66..
    -> ca. 417

PULSOUT(14, 417) dreht das Steuerhorn des Servos über Pin 14 in die Position 30°.

Aufgabe

Setze den Power Schalter in Position 0.

Veränder das Programm 04_02.bs2 so, dass sich das Steuerhorn des Standardservos in folgende Winkelpositionen dreht:

      -   15°

      -   49°

      -   125°

      -   165°

      Notiere für jeden Winkel den berechneten Wert für die Variable Dauer.

Setze den Power-Schalter in Position 2.

Starte das jeweils modifizierte Programm 04_02.bs2.

Überprüfe jeweils die Position des Zeigers.

Meine Berechnungen

Winkelmaß       Dauer      
15°  
49°  
125°  
165°  

Der in Abbildung 4.10 angegebene Bereich von 250 bis 1250 für die Größe Dauer ist ein theoretischer Wert und kann in Einzelfällen deutlich abweichen und dazu führen, dass ein Servo an die mechanisch vorgegebene Grenze stößt. Das kann seinen Lebensdauer deutlich verkürzen. Deshalb sollte man bei jedem Servo die maximalen Ausschläge nach rechts und links vorsichtig austesten und darauf achten, dass der Motor innerhalb der mechanisch eingebauten Grenzen arbeiten kann.

5 - Ohne Mathematik geht es nicht

Abbildung 4.10 zeigt, dass jeder PULSOUT Befehl eng verknüpft ist mit der Impulsdauer eines HIGH-Signals. Der Befehl PULSOUT 14, 417 sendet zum Beispiel ein HIGH-Signal von 0,834ms Länge und der Impuls über den Befehl PULSOUT 14, 500 hat eine Impulslänge von 1,0ms.

Für die Umrechnung einer Zeitangabe in ms in einen Wert der Parametergröße Dauer im Befehl PULSOUT, benutzen wir die Umrechnungsformel:

  • Dauer = Zahl in ms x 500 (1)

 

Beispiel

Wie berechne ich den Wert für die Parametergröße Dauer, wenn ich vorgebe, dass die Impulslänge 1,5ms betragen soll?

 

Dauer = 1,5 x 500 = 750

 

 

 

Die Zeiteinheit bei einer BASIC Stamp 2 beträgt 2µs. In 1ms passen somit 500 Zeiteinheiten hinein.

 

Bei einem Befehl PULSOUT 14, 500 beträgt die Impulslänge

 

500 x 2µs = 1000µs = 1.0ms.

 

 

Löst man Gleichung (1) nach Zahl in ms auf, dann erhält man die Gleichung:

 

  • Zahl in ms  = (Dauer / 500) ms  (2)

 

Beispiel

Im Befehl PULSOUT 14, 850 lässt sich die Impulslänge über Gleichung (2) sofort berechnen.

 

Zahl in ms = (850/500) ms = 1,7ms

 

 

 

Unter Vorlage eines Zeitdiagramms ein Programm schreiben

Wird ein 2.0ms HIGH-Signal wie in Abbildung 4.11 gezeigt von einer BASIC Stamp an einen Servo übertragen, dann wird das Steuerhorn in die stabile 135° Position drehen. Die Signale sollen sich ungefähr alle 22ms wiederholen, was mit einer Endlosschleife DO ... LOOP in einem PBASIC-Programm leicht umsetzbar ist. Es fehlt nur noch der Zahlenwert für die Parametergröße Dauer im PULSOUT Befehl. Nach Berechnungsformel (1) von Seite 11 ergibt sich:

 

Dauer = Zahl in ms x 500 = 2,0 x 500 = 1000

 

 

 

 

Abbildung 4.11

Zeitdiagramm für eine 135° Position. Alle 20ms ein 2ms HIGH-Signal.

Courtesy of Parallax Inc.

Damit könnte ein entsprechendes PBASIC Programm so aussehen:

Programm 04_02_135.bs2
Aufgabe
  • Setze den Power Schalter in Position 0.
  • Gib das Programm 04_02_135.bs2 ein.
  • Setze den Power Schalter in Position 2.
  • Starte das Programm und überprüfe, ob das Steuerhorn in die Position 135° dreht.
  • Wiederhole diese Übung mit dem folgenden Zeitdiagramm aus Abbildung 4.12.

 

 

 

 

Abbildung 4.12  Zeitdiagramm für eine 45° Position. Alle 2ms folgt ein 1,0ms HIGH-Impuls.

Courtesy of Parallax Inc.

6 - Die Haltezeit eines Servos beeinflussen

In der Animatronik (animation - Bewegung, Elektronik) werden elektronische Komponenten eingesetzt um Spezialeffekte zu erzielen und elektronisch gesteuerte Figuren zu bewegen, die man zum Beispiel auf Jahrmärkten und in Vergnügungs- und Freizeitparks sehen kann.

Abbildung 4.13 zeigt ein Animatronikprojekt einer Roboterhand, deren Finger mit Hilfe von Servos bewegt werden. Das PBASIC Programm, mit dem die Handbewegungen gesteuert werden, muss die Servos für jede Bewegung für eine bestimmte Zeit in einer bestimmten Position halten können.

Bisher haben wir für die Ansteuerung der Servos Endlosschleifen benutzt; in dieser Übung geht es darum, wie man Programmcode schreibt, der einen Servo über eine bestimmte Zeitspanne hinweg in einer festen Position hält.

 

 

 

 

 

 

 

 

 

 

Abbildung 4.13

Animatronix Hand

Im unteren rechten Teil der Hand befinden sich fünf Servos, die über Baudenzüge, die an den Fingern und dem Daumen befestigt sind, und sie damit beweglich machen. Damit kann die BASIC Stamp kontrolliert jeden Finger in Bewegung setzen.

Courtesy of Parallax Inc.

Mit einer FOR...NEXT Schleife die Haltezeit eines Servos bestimmen

 

Eine LED, die so programmiert ist, dass sie einmal pro Sekunde aufleuchtet, wird, wenn man die Programmzeilen im Befehlsblock einer FOR...NEXT Schleife unterbringt, die dreimal durchlaufen wird, genau drei Sekunden lang aufleuchten. Sie ist 500ms HIGH, 500ms LOW.

Blinkt eine LED fünfmal pro Sekunde, dann benötigt man eine FOR...NEXT Schleife, die 15-mal durchlaufen wird, um die LED genau 3 Sekunden aufleuchten zu lassen.

Die Befehle PULSOUT und PAUSE, mit denen ein Servo angesteuert wird, übertragen HIGH/LOW Signale, die auch eine LED zum Blinken bringen. Im vorherigen Kapitel leuchtete die LED nur schwach auf, da die Signalfolge sehr schnell und die HIGH-Signalanteile von relativ kurzer Dauer waren.

Wir werden jetzt die Geschwindigkeit der Signalfolge auf ein Zehntel reduzieren und damit die Blinkfolge bei einer LED deutlich sichtbar machen.

Beispielprogramm 04_03_1.bs2

Dolor
  • Setze den Power Schalter in Position 0.
  • Gib das Programm 04_03_1.bs2 ein.
  • Setze den Power Schalter in Position 2.
  • Starte das Programm.
  • überprüfe, ob die LED für ca. 3s blinkt.
  • Setze den Endwert in der FOR...NEXT Schleife von 15 auf 30 hoch und starte das Programm erneut. Die LED sollte jetzt ca. 6s blinken.

Das Programm 04_03_1.bs2

Programm 04_03.bs2

Beispielprogramm 04_03_2.bs2

Wird der Befehl PULSOUT 14, 7500 abgewandelt zu PULSOUT 14, 750 und PAUSE 200 auf PAUSE 20, wird ein kurzes Signal die Positionierung des Steuerhorns in Mittelstellung veranlassen. Das Signaldauer ist um den Faktor 10 kürzer und die vollständige FOR...NEXT Schleife benötigt nur noch 1/10 der Zeit im Vergleich zum vorherigen Beispiel.

Wenn es das Ziel ist, eine bestimmte Position des Servos für drei Sekunden zu halten, dann sollten 10-mal so viele Impulse bereitgestellt werden; dies erreicht man, indem der Endwert in der FOR...NEXT Schleife von 15 auf 150 erhöht.

Programm 04_03_2.bs2

Das Programm 04_03_2.bs2

In dem folgenden Programm werden die drei Positionen des Steuerhorns für jeweils 3 Sekunden gehalten.

 

 

 

 

 

 

 

 

Abbildung 4.14

Mit dem Programm 04_05.bs2 wird das Steuerhorn des Servos in drei verschiedene Positionen gedreht. Jede Position wird 3 Sekunden gehalten. Courtesy of Parallax Inc.

Beispielprogramm 04_03_3.bs2

Aufgabe
  • Setze den Pwr Schalter in Position 0.
  • Gib das Programm 04_03_3.bs2 ein.
  • Setze den Pwr Schalter in Position 2.
  • Starte das Programm.
  • überprüfe, ob das Steuerhorn in jeder Position ca. 3s verweilt.

In der 135°-Position verharrt der Servo für 3 Sekunden bevor das Programm stoppt. Das Steuerhorn bleibt in der angenommenen Position stehen, obwohl die BASIC Stamp keine Steuerimpulse mehr sendet. Der Unterschied besteht darin, dass solange Steuerimpulse gesendet werden, der Servo gegen äußere Kräfte anarbeitet, die versuchen die Position des Horns zu verändern. Sobald keine Steuerimpulse mehr gesendet werden, lässt sich das Steuerhorn mit der Hand leicht drehen.

Über das Kontrolllicht der LED an P14 lässt sich jederzeit feststellen, ob an den Servo Steuerimpulse gesendet werden. Solange die LED leuchtet, empfängt er Steuersignale und fixiert seine Posi-tion.

Das Programm 04_03_3.bs2

Programm 04_03_2.bs2
Aufgabe
  • Setzt die Schaltung aus Aufgabe 4.3.2 mit RESET zurück.
  • Sobald der Servo in der 135° Position ist, versuche durch vorsichtiges Drehen, Kräfte auf den Servo auszuüben.
  • Beobachte dabei die LED-Leuchte.

Der Widerstand, mit dem ein Servo versucht, auf Krafteinwirkungen von außen zu reagieren, kann man deutlich spüren. Er ist nicht mehr vorhanden, wenn keine Steuerimpulse mehr übertragen werden.

Aufgabe
  • Resette die Schaltung aus Aufgabe 4.3.3
  • Starte das Programm erneut und lasse es bis zum Ende durchlaufen.
  • Versuche, nachdem die Übertragung von Steuerimpulsen in der 135°-Position aufgehört haben (die LED erlischt), das Steuerhorn vorsichtig zu drehen. Es sollte sehr leicht gehen.

 

Jetzt kommst du!

In Programm 04_03_3 haben wir gesehen, dass die Ausführung von ungefähr 50 Servoimpulsen in einer FOR ... NEXT Schleife eine Sekunde dauert. Diese Kenntnis kann man auch zur Bestimmung der Haltezeit nutzen, indem man den Endwert entsprechend anpasst.

 

Beispiel

Soll ein Servo eine bestimmte Position für 2 Sekunden halten, dann muss der Endwert der Schleife nur von 150 auf 100 abgeändert werden; andererseits, wenn die Haltezeit von 3 auf 5 Sekunden erhöht werden soll, muss entsprechend der Endwert von 150 auf 250 erhöht werden.

 

Die Ausführungszeit einer FOR...NEXT Wiederholschleife

Eine grobe Näherung ist die Aussage, dass ein Schleifendurchlauf 0,02s benötigt oder 20ms. Es sind eigentlich 22,72ms. Jedes Element in einer FOR...NEXT Schleife kostet Zeit, sobald die Ausführung beginnt. Der Befehl PULSOUT 14, 750, der einen Servo in die Mittelstellung dreht, soll als Benchmark für die mittlere Pulsdauer angesehen werden. Die dafür notwendige Pulslänge beträgt 1,5 ms. Der Befehl PAUSE 20 hält die Programmausführung für 20ms an.

Eine FOR...NEXT Schleife mit einem PULSOUT und PAUSE Befehl benötigt ca. 1,3ms für die Ausführung aller Befehle, so dass die Zeit zwischen zwei LOW-Signalen bei 21,3ms und nicht bei 20ms liegt. Einfluss auf den Servo hat diese Erkenntnis nicht.

Die Genauigkeit eines LOW-Signals kann durchaus um ein paar ms abweichen, nur die Länge eines HIGH-Signals muss sehr präzise sein und dafür sorgt der Befehl PULSOUT.

 

Alles in allem benötigt eine FOR...NEXT Schleife für einen Durchlauf also:

1,5ms für das HIGH-Signal, 20ms für das LOW-Signal und 1,3ms für die Ausführung der Befehle. In der Summe macht das 22,8ms für eine Durchlauf. In einer Sekunde finden damit 1/0,0228 = 43,8.. Durchläufe statt, oder gerundet 44 Wiederholungen.

Die Anzahl Wiederholungen pro Sekunde wird auch Hertz genannt. 44 Wiederholungen pro Sekunde drücken wir damit kürzer durch 44 Hertz aus oder kürzer: 44 Hz. Eine andere Sprechweise ist: Die Steuersignale haben eine Frequenz von 44 Hz.

Periode und Hertz (Hz)

Wiederholt sich ein Signal in einer Zeiteinheit n-mal, dann wird jeder Wiederholungsabschnitt Periode genannt. Die Anzahl der Wiederholungen pro Sekunde wird in Hertz angegeben und mit Hz abgekürzt.

Je nachdem, ob der Wert der Parametervariablen DAUER im PULSOUT Befehl größer oder kleiner ist, beeinflusst er die Ausführungszeit einer FOR...NEXT Schleife. Ein Wert des PULSOUT Parame-ters Dauer von 750 bringt einen Servo in die Mittelstellung und entspricht ungefähr 44 Signalsimpulsen pro Sekunde oder 44 Hz.

Wenn präzisere Einstellungen notwendig sind, muss noch einmal die Mathematik von Seite 11/12 bemüht werden.

 

Beispiel

Wenn in der Schleife der Parameterwert Dauer des Befehls PULSOUT einen Wert von 1000 statt von 750 hat, erhöht sich die Impulslänge von 1,5ms auf 2ms. Der Wert von PAUSE bleibt bei 20ms und für die Ausführungszeit der Befehle stehen noch einmal 1,3ms an. Insgesamt kommen wir damit auf eine Periodenzeit von 23,3ms oder 43 Perioden pro Sekunde. Das entspricht 43 Hz.

 

Zusammenfassung

In Abbildung 4.15 wird noch einmal dargestellt, welcher Teil in einer FOR...NEXT Schleife welche Aufgabe bei einer Servoansteuerung übernimmt. Der Endwert in der Schleife ergibt, wenn man ihn durch 44 teilt, die Anzahl an Sekunden, die ein Servo in einer bestimmten Position gehalten wird. Der Parameter Dauer im PULSOUT Befehl beschreibt die Position des Steuerhorns. Ein Wert von 750 erzeugt einen 1,5ms Impuls, der den Servo in die Mittelstellung auf die 90° Position dreht.

Der Parameter PIN im PULSOUT Befehl beschreibt den I/O Portpin, über den die Signale an den Servo übertragen werden. Ein Wert von 14 besagt also, dass das HIGH-Signal an den Servo über den I/O Pin P14 gesendet wird. Im Anschluss daran wird über den I/O Pin ein LOW-Signal übertragen. Der PAUSE 20 Befehl stellt sicher, dass dieses Signal 20ms anliegt, bevor das nächste HIGH-Signal folgt.

Abbildung 4.15  FOR...NEXT Schleife zur Servoansteuerung

 

Im Mittel wird eine FOR ... NEXT Schleife, die einen einzigen PULSOUT Befehl an einen Servo sendet, gefolgt von einer PAUSE von 20ms ungefähr 44 mal pro Sekunde ausgeführt. Wenn eine solche Schleife 132 durchlaufen wird, hält sie einen Servo für ca. 3 Sekunden in der 135° Position. Das ergibt sich durch eine kleine Rechnung:

 

132 geteilt durch 44 = 3

 

Soll eine Anwendung oder in einem Projekt eine BASIC Stamp einen Servo für eine bestimmte Anzahl an Sekunden in einer Position fixieren, dann muss die Zahl der Sekunden nur mit 44 multipliziert werden, um den Endwert der FOR...NEXT Schleife zu bestimmen.

Bei 5 Sekunden Haltezeit muss die FOR...NEXT Schleife 5x44 = 220 mal durchlaufen werden.

7 - Positionsüberwachung mit dem Computer

Industrielle Automation erfordert häufig den Dialog der eingesetzten Mikrokontroller mit größeren Datenrechnern. Die Mikrokontroller lesen die Sensoren aus und übertragen die Daten an den Hauptrechner. Dieser wertet die Daten aus und schickt entsprechende Informationen zurück an die Mikrokontroller, die dann wiederum Förderbänder beeinflussen können oder auf Sortiermaschinen Einfluss nehmen.

Mit Hilfe des Terminals lassen sich Informationen über den Computer an die BASIC Stamp übertragen (Abb. 4.16). Sie muss dazu so programmiert werden, dass die Werte über das Terminal eingegeben und anschließend in einer oder mehreren Variablen ablegt werden.

Abbildung 4.16

Daten über die Terminaleingabe an die BASIC Stamp übertragen.

In der folgenden Übung wird die BASIC Stamp so programmiert, dass sie zwei Werte über das Terminal einliest und mit diesen den Servo eine kontrollierte Bewegung ausführen lässt. Die beiden Werte sind:

  1. die Zahl der Impulse, die an den Servo übertragen werden.
  2. den Wert DAUER, der vom Befehl PULSOUT benötigt wird.
Material
  • 1x BASIC Stamp Board of Education
  • 1x Parallax Standard Servo
  • 1x 470 Ohm Widerstand (gelb - violett - braun)
  • 1x LED
  • 1x micro-USB Kabel
Aufgabe
  • Baue die Schaltung nach Abbildung 4.3 auf.

Die BASIC Stamp empfängt Steuerinformationen über den Befehl DEBUG

 

Mit Hilfe des DEBUG Befehls sendet die BASIC Stamp Daten/Mitteilungen an das Debug Terminal. Möchte man umgekehrt Daten vom Debug Terminal  empfangen, steht dafür der Befehl

  • DEBUGIN

zur Verfügung. Vorher müssen eine oder mehrere Variable deklariert werden, in die die erhaltenen Werte/Informationen abgelegt werden können. Das folgende Beispiel zeigt die Deklaration einer Variablen pulsfolgen vom Typ Word:

 

  • pulsfolgen VAR Word
    

Später kann dieser Variablen über das Programm ein Wert zugewiesen werden, der über den Befehl DEBUGIN eingelesen wird:

  • DEBUGIN DEC pulsfolgen
    

Empfängt die BASIC Stamp einen nummerischen Wert vom Debug Terminal, wird er in der Variablen pulsfolgen abgelegt. Die Formatierungsanweisung DEC teilt dem Befehl DEBUGIN mit, daß die zu sendenden Zeichen ganze Zahlen sind. Sobald die Eingabetaste gedrückt wird, legt die BASIC Stamp die bis dahin empfangenen Zahlen in der Variablen pulsfolgen als Dezimalzahl ab und geht im Programm weiter.

 

Die folgende Zeile ist nicht im Programmbeispiel enthalten, kann aber eingefügt werden, um anzuzeigen, dass die BASIC Stamp den Befehl ausgeführt hat.

 

DEBUG CR, "Dein eingegebener Wert: ", DEC pulsfolgen

Programmbeispiel

 

Abbildung 4.17 zeigt eine Ausschnittsvergrößerung des Debug Terminals mit den beiden Fenstern Senden und Empfangen. Mit dem Fenster Empfangen haben wir bisher gearbeitet. In ihm werden alle Mitteilungen ausgegeben, die das Debug Terminal von der BASIC Stamp erhält.

Über das Fenster Senden lassen sich Zeichen und Zahlen eingeben und an die BASIC Stamp übertragen.

In Abbildung 4.17 wurde die Zahl 264 in das Debug Terminal Fenster Senden eingegeben. Darunter, im Fenster Empfangen ist eine Kopie der eingegebenen Zahl zu sehen, direkt hinter dem Text: Gib die Anzahl der Pulsfolgen an:. Diese Form der Kopie wird auch als Echo bezeichnet und erscheint nur, wenn die Checkbox Echo Off  rechts unten im Debug Terminal nicht markiert ist.

 

 

 

 

Abbildung 4.17

 

 

 

<- Senden

 

 

 

<- Empfangen

Aufgabe
  • Gib das Programm 04_04_1.bs2 in den BASIC Stamp Editor ein.
  • Setze den Power-Schalter in Position 2.
  • Starte das Programm.
  • Gib im Terminalfenster für die Anzahl der Pulsfolgen die Zahl 264 ein.
  • Bestätige die Eingabe mit der Eingabetaste.
  • Gib als Parameterwert für die Variable Dauer den Wert 800 ein. Der Wert sollte zwischen 350 und 1150 liegen.
  • Bestätige die Eingabe mit der Eingabetaste.
  • Gib verschiedene Werte für die Anzahl der Pulsfolgen und die Variable Dauer ein. Beobachte das unterschiedliche Drehverhalten des Servos.

Das Programm 04_04_1.bs

Programm 04_04_1.bs2

 

 

Wie arbeitet das Programm 04_04_1.bs2?

 

Im Programmkopf werden drei Variablen vom Typ Word deklariert:

  • i               VAR Word
  • Pulsfolgen      VAR Word
  • Dauer          VAR Wort

Die Zählervariable i wird in der FOR...NEXT Schleife aufgerufen. In den Variablen Pulsfolgen und Dauer werden die über das Debug Terminal eingegeben Daten abgespeichert, ebenso wird die Variable Pulsfolgen in der FOR...NEXT Schleife für die Anzahl der Pulsfolgen, die an den Servo gesendet werden, eingesetzt. Und mit der Variablen Dauer wird die Länge jedes Impulses im Befehl PULSOUT festgelegt.

 

Über den DEBUG Befehl wird der Anwender noch einmal darüber informiert, dass ca. 44 Pulsfolgen  pro Sekunde in der FOR ... NEXT Schleife benötigt werden und das das Argument Dauer im Befehl PULSOUT, mit dem die Drehposition eines Servos festgelegt wird, Werte zwischen 350 und 1150 annehmen kann.

 

Der Rest des Programm ist in eine Endlosschleife eingebettet. Es wird zunächst ein Text ausgegeben und die Anzahl der Pulsfolgen als Vielfache von 44 abgefragt; der DEBUGIN Befehl wartet auf die Eingabe einer ganzen Zahl, die mit der Eingabetaste bestätigt wird.

Der Prozess wiederholt sich mit dem zweiten DEBUG und DEBUGIN Befehl, bei dem der Variablen Dauer ein Wert zugewiesen wird.

 

Neu ist in diesem Programm, dass der Endwert in der FOR...NEXT Schleife durch eine Variable Pulsfolgen bestimmt und deren Wert durch Eingabe über das Debug Terminal festgelegt wird.

Genau so wie der Wert für die Zeitspanne, die das Steuerhorn des Servos in einer bestimmten Position fixiert ist. Im Befehl PULSOUT wird der Parameter Dauer ebenfalls erst über die Eingabe im Terminal bestimmt; er legt fest, um welches Winkelmaß sich der Servo dreht.

8 - Grenzen setzen

Nehmen wir mal an, dass ein Computer Servo Kontrollsystem für eine Fernwartung entwickelt wurde. Vielleicht benutzt es ein Wachmann, um eine Schiffsluke zu öffnen, die er über eine Kamera fest im Blick hat. Ebenso wäre es möglich, dass ein Student damit die Kontrolltüren in einem Labyrinth für Mäuse überwacht, die nach Futter suchen. In jedem Fall aber sollte die Software so sicher sein, dass Falscheingaben ausgeschlossen werden, um Schäden zu vermeiden.

Unser letztes Programm 04_04_1.bs2 ist gegen Fehleingaben nicht geschützt. Es wäre zum Beispiel möglich, dass man bei der Abfrage nach der Steuerhornposition statt 1000 nur 100 eingegeben hat. Der Wert 100 würde den Servo in eine Position drehen, die außerhalb der mechanischen Grenzen liegt. Obwohl es nicht gleich den Servo zerstört, kann es die Lebensdauer des Bauteils deutlich verkürzen. Aus diesem Grund ist in das Programm eine Zeile eingefügt worden, die solche Fehleingaben vermeiden hilft:

 

  • Dauer = Dauer MIN 350 MAX 1150

 

Eine Fehleingabe von 100 würde durch das Programm so behoben, dass es statt dessen den Wert 350 setzt. Bei einem Eingabewert von 10000 würde der Wert 1150 eingesetzt. Die Reaktion des Programms lässt sich mit einem Entscheidungsbefehl erklären:

 

  • IF Dauer < 350 THEN Dauer  = 350
  • IF Dauer > 1150 THEN Dauer  = 1150

 

Eine automatische Fehlerkorrektur bei der Eingabe, wie wir sie eben aufgezeigt haben, muss nicht immer zum besten Ergebnis führen. Eine weitere Möglichkeit wäre, bei einer Falscheingabe eine Rückmeldung zu bekommen, die darauf hinweist, dass man die Eingabe noch einmal wiederholt und dem Anwender gleichzeitig aufzeigt, was falsch gemacht wurde.

 

Aufgabe
  • Speicher das Programm 04_04_1.bs2 unter dem neuen Namen 04_04_2.bs2 ab.
  • Ersetze die Befehlszeilen 15-17 durch einen neuen Befehlsblock und speichere das Programm erneut ab.
  • Starte das Programm und bestätige, dass es nicht weitermacht, bis ein korrekter Wert im Bereich zwischen 350 und 1150 eingegeben worden ist.

Das modifizierte Programm (Ausschnitt) 04_04_2.bs2

Modifiziertes Programm 04_04_2.bs2

9 - Positionen unterschiedlich schnell anfahren

In dieser Übung werden wir erfahren, wie man mit einem Servo verschiedene Positionen mit unterschiedlicher Geschwindigkeit anfährt. Das Steuerhorn wird sich dabei je nach Einstellung unter-schiedlich schnell drehen. Mit dieser Technik kontrollieren wir beim Servo die Bewegung statt der Position.

 

Mit dem folgenden Programm durchfährt ein Servo nahezu seinen kompletten Stellbereich.

 

i VAR Word

 

FOR i = 500 to 1000

    PULSOUT 14, i

    PAUSE 20

NEXT

 

Das Steuerhorn startet bei ungefähr 45° und rotiert langsam gegen den Uhrzeigersinn in die Position  135°. Der Laufindex in der FOR...NEXT Schleife ist die Variable i. Sie wird bei jedem Schleifendurchlauf um 1 erhöht und diese Größe steht auch im Befehl PULSOUT als Argument für die Dauer des HIGH-Impulses. Das heißt, mit jedem Schleifendurchlauf wird die Impulslänge größer und damit verändert sich auch die Position des Steuerhorns.

Eine FOR...NEXT Schleife lässt sich mit einem STEP <n> Befehl erweitern. Die Schrittweite der Schleife wird damit vergrößert, mit dem Effekt, dass ein Servo schneller rotiert. Das Argument <n> ist eine natürliche Zahl.

FOR i = 500 to 1000 STEP 8

Für das Abwärtszählen müssen nur Anfangs- und Endwert umgestellt werden:

FOR i =1000 to 500 STEP 8

 

Der Trick, mit dem ein Servo dazu gebracht wird, sich unterschiedlich schnell zu drehen, besteht darin eine FOR...NEXT Schleife mit entsprechender Anpassung der Schrittweite aufzurufen. Je nachdem, ob aufwärts oder abwärts gezählt wird, dreht sich der Servo entgegen oder im Uhrzeigersinn.

Drehgeschwindigkeit und Drehrichtung beim Servo verändern

Drehgeschwindigkeit: einstellen über die Schrittweite in einer FOR...NEXT...STEP <n> Schleife. Je größer die Schrittweite, desto höher die Drehgeschwindigkeit.

Drehrichtung im Uhrzeigersinn: in einer FOR...NEXT Schleife abwärts zählen

Drehrichtung entgegen dem Uhrzeigersinn: in einer FOR...NEXT Schleife aufwärts zählen.

Beispielprogramm

Aufgabe
  • Gib das Programm 04_05_1 in den BASIC Stamp Editor ein und speicher es unter 04_05_1.bs2 auf einem Stick ab.
  • Steller den Power-Schalter auf 2 und starte das Programm.
  • Beobachte während des Programmlaufs, wie sich der Wert des Arguments Dauer im Debug Terminal ändert.
  • Beobachte, wie sich der Servo je nach FOR...NEXT Schleife unterschiedlich verhält. Achte auf die Position des Steuer- horns und auf die Drehgeschwindigkeit.

Das Programm 04_05_1.bs2

Programm 04_05_1.bs2

Wie arbeitet das Programm 04_05_1.bs2?

Die erste FOR...NEXT Schleife zählt aufwärts von 500 bis 1000, das führt zu einer Drehung des Steuerhorns in entgegengesetztem Uhrzeigersinn. Da die Zählvariable i auch im Befehl PULSOUT als Argument der Variablen Dauer benutzt wird, dreht sich das Steuerhorn mit erhöhter Geschwindigkeit.

Warum wurde der Befehl PAUSE auf den Wert 7 gesetzt?

Der Befehl DEBUG DEC5 i, cr, crsrup benötigt zur Ausführung ca. 8ms. Ein PAUSE 12 Befehl würde die Pause zwischen zwei HIGH-Signalen wieder auf 20ms bringen. Über eine Reihe von Experimenten wurde herausgefunden, dass mit einer Pause von 7ms der Servo die glatteste Bewegung ausführte. Da die 20ms für das LOW-Signal zwischen zwei HIGH-Signalen einer gewissen Toleranz unterliegen, ist es durchaus vertretbar durch Probieren selbst einen vertretbaren  Wert zu ermitteln.

Als neue Formatierungszeichen, tauchen im DEBUG Befehl CRSRUP (cursor up) und DEC5 auf. DEC5 weist DEBUG an, jede Zahl auf dem Terminal fünfstellig auszugeben, CRSRUP wiederum setzt den Cursor eine Zeile im Terminal zurück. Die Wirkung ist klar; nachdem eine Zahl fünfstellig ausgegeben wurde und ein Zeilenvorschub (CR) erfolgte, wird der Cursor eine Zeile zurück nach oben bewegt. Beim nächsten Schleifendurchlauf wird die alte Zahl durch die neue überschrieben und so weiter und so fort.

In der zweiten FOR...NEXT Schleife wird von 1000 bis 500 in Schritten von jeweils 20 abwärts gezählt; damit dreht sich der Servo im Uhrzeigersinn. Da die Zählvariable i auch hier im Befehl PULSOUT als Argument der Variablen DAUER benutzt wird, dreht sich das Steuerhorn sehr schnell.

Jetzt kommst du!

Aufgabe
  • Benutze unterschiedliche Schrittweiten im Programm 04_05_1.bs2 und verändere so die Drehgeschwindigkeit des Servo.
  • Starte das Programm nach jeder Programmänderung neu.
  • Verändere die Pausenzeiten im Befehl PAUSE. Benutze Werte zwischen 3 und 12 und beobachte jedesmal die Reaktion des Servo. Finde selbst heraus, bei welchem Wert der Servo die "beste" oder gleichmäßigste Drehbewegung ausführt. 

10 - Tastersteuerung für Servos

Bisher haben wir Programme kennengelernt, mit denen ein Servo vorbestimmte Bewegungen ausführen musste und wir haben einen Servo über Eingaben des Debug Terminals gesteuert. Jetzt werden wir daran gehen zu zeigen, wie sich mit Hilfe einer BASIC Stamp ein Servo auch über Drucktaster ansprechen lässt. Wir werden in dieser Übung

  • eine Schaltung zur Steuerung eines Servos mit einem Drucktaster aufbauen.
  • die BASIC Stamp so programmieren, dass über die Drucktaster der Servo gesteuert wird.

Wenn wir damit fertig sind, können wir über die BASIC Stamp einen Servo mit Hilfe des einen Drucktasters in eine Richtung und mit dem anderen Taster in die entgegengesetzte Richtung bewegen. Wird kein Taster gedrückt, dann verharrt der Servo in der aktuellen Position.

Material
  • 1x BASIC Stamp Board of Education
  • 1x Parallax Standard Servo
  • 1x 470 Ohm Widerstand (gelb - violett - braun)
  • 1x LED
  • 2x Miniatur-Drucktaster
  • 2x 10 kOhm Widerstand (braun - schwarz - orange)
  • 2x 220 Ohm Widerstand (rot - rot - braun)
  • 3x Verbindungsdraht
  • 1x micro-USB Kabel
Aufgabe
  • Baue die Schaltung nach Abbildung 4.18 auf.
  • Teste den Miniatur-Drucktaster an P3 mit dem Programm 03_03.bs2 aus Lektion 3.
  • Erweiter das Programm so, daß auch der Taster an P4 abgefragt wird.
  • Teste, ob das geänderte Programm auch den Taster P4 abfragt.

Schaltskizze und Schaltungsaufbau

 

 

 

 

 

 

 

 

 

 

Abbildung 4.18

Board of Education

Servo Schaltung mit zwei Druck-tastern und einer LED Anzeige.

Courtesy of Parallax Inc.

 

 

 

 

 

 

Abbildung 4.19

Schaltskize für die beiden Drucktaster-Schaltungen.

Die Schaltskizze für den Anschluss des Servos und den Aufbau des LED- Schaltkreises -> Abb. 4.4

Aufgabe
  • Gib das Programm 04_06_1.bs2 in den BASIC Stamp Editor ein und starte das Programm.
  • Überprüfe, ob das Steuerhorn des Servos sich entgegen dem Uhrzeigersinn dreht, sobald der Taster an P4 gedrückt wird.
  • Überprüfe, ob der Servo stoppt, sobald der Wert von DAUER größer als 1000 wird.
  • Überprüfe, ob das Steuerhorn des Servos sich im Uhrzeigersinn dreht, sobald der Taster an P3 gedrückt wird.
  • Überprüfe, ob der Servo stoppt, sobald der Wert der Variablen DAUER kleiner als 500 wird.

Vorüberlegungen zur Abfrage der Zustände von zwei Tastern

Mit einem IF...THEN Block lassen sich die Zustände der beiden Drucktaster abfragen. Wird einer der beiden Taster gedrückt, erhöht sich der Wert der Variablen DAUER, wird der andere Taster gedrückt, erniedrigt er sich entsprechend. Eine eingebettete IF...THEN Abfrage überprüft, ob die Variable DAUER den Wert von 1000 überschritten oder den Wert von 500 unterschritten hat. Im nachfolgenden Pseudocode kann der Programmaufbau noch etwas deutlicher vermittelt werden.

Pseudocode für die Abfrage von zwei Tastern

Starte in einer Endlosschleife

     Wenn Taster T1an P3 gedrückt wurde, dann ...

         Wenn Dauer > 500 dann ...

          erniedrige den Wert der Variablen DAUER

     Wenn Taster T2 an P4 gedrückt wurde, dann ...

          Wenn Dauer < 1000, dann ...

          erhöhe den Wert der Variablen DAUER

Ende der Endlosschleife

Beispielprogramm 04.06.1

In diesem Beispielprogramm wird das Steuerhorn des Servos entgegen dem Uhrzeigersinn gedreht, wenn der Taster T2 an P4 gedrückt wird. Das Horn wird solange gedreht wie der Taster gedrückt und der Wert der Variablen DAUER kleiner als 1000 ist. Wird hingegen der Taster T1 an P3 gedrückt, rotiert das Steuerhorn im Uhrzeigersinn, solange der Wert der Variablen DAUER 500 nicht unterschreitet. Im Debug Terminal wird der Wert der Variablen DAUER während des Programmlaufs angezeigt.

Das Programm 04_06_1.bs2

Programm 04_06_1.bs2

Jetzt kommst du! – Mechanische Grenzen oder Begrenzung durch Software

Standardservos verfügen über eingebaute mechanische Stopper, die sie daran hindern zu überdrehen. Wird an einen Servo beispielsweise der Befehl PULSOUT 14, 2000 geschickt, dreht er nicht in die im Argument DAUER angegebene Position. Ein eingebauter mechanischer Stopper begrenzt vielmehr die Drehbewegung und schützt so den Servo.

Dreht man vorsichtig das Steuerhorn eines Servos, fühlt man, wann die mechanische Begrenzung einsetzt. Ändere das Beispielprogramm in dieser Übung so ab, dass die BASIC Stamp die Drehbewegung des Servos auf einen engeren Bereich begrenzt, als von den mechanischen Stoppern vorgegeben.

Aufgabe
  • Experimentiere mit verschiedenen Grenzen, indem du im Programm die Bereiche 350 bis 1150, 650 bis 850 und 350 bis 750 austestet.
  • Teste jede Einstellungsänderung sorgfältig und überprüfe, ob sie das erwartete Verhalten zeigt.
  • Ändere die Drehgeschwindigkeit ebenfalls ab, indem in Zeile 17 der Additionswert zur Variablen Dauer erhöht oder erniedrigt wird.

Diese Unterrichtsvorlagen sind entstanden in Anlehnung an die deutsche Übersetzung des Buches "What´s a Microcontroller?" Vers. 3.0 by Andy Lindsay, Parallax Inc., übersetzt und nachbearbeitet von Reinhard Rahner.

BASIC Stamp, Board of Education, Homework Board sind eingetragene und geschützte Warenzeichen der Firma Parallax Inc.

Druckversion | Sitemap
© Reinhard Rahner - Gettorf