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

1 - Drehbewegungen

  • Weitere Vorschläge zum Thema mit den Boards: Arduino UNO - Prop-BoE - Prop-AB - Raspberry Pi

In vielen Haushalten gibt es sogenannte Dimmer, mit denen das Raumlicht eingestellt wird. Dreht man sie nach rechts oder links nimmt die Lichtintensität ab oder zu. Bei Modelleisenbahnen werden Regler verwendet, mit denen man die Züge schneller oder langsamer fahren lassen kann.

Audioanlagen haben Regler, mit denen der Sound und die Lautstärke eingestellt wird. Abb. 5.1 zeigt ein einfaches Beispiel eines Reglerknopfes, mit dem die Lautstärke eingestellt wird. In Joysticks finden sich ebenfalls Regler, die nach demselben Prinzip wie ein Lautstärkeregler funktionieren.

 

 

 

 

 

 

 

 

Abbildung 5.1

Lautstärkeregler an einem Lautsprecher

Courtesy of Parallax Inc.

Das Bauteil, das häufig in Audioanlagen, Joysticks aber auch Servos zu finden ist, heißt Potentiometer und wird häufig auch nur kurz als Poti angesprochen. Abbildung 5.2 zeigt einige gebräuchliche Potentiometer. Sie alle haben mindestens drei Anschlussbeine.

 

 

 

Abbildung 5.2

Eine Auswahl verschiedener Potentiometer

Abbildung 5.3 zeigt das Schaltsymbol und eine Bauteilzeichnung eines Potentiometers, das wir in dieser Lektion benutzen werden. Anschluss A und B sind direkt mit einem 10kOhm Widerstandselement verbunden. Der Anschluss W wird als Schleiferabgriff bezeichnet und ist mit einem Draht verbunden, der variabel über das Widerstandselement bewegt werden kann.

 

 

 

 

 

 

Abbildung 5.3

Potentiometer Schaltsymbol

und Bauteilzeichnung

Courtesy of Parallax Inc.

Die folgende Abbildung 5.4 zeigt, wie ein Potenziometer arbeitet. Mit dem Verstellknopf wird der Schleiferabgriff auf dem Widerstand verändert; im Uhrzeigersinn bewegt er sich in Richtung A, entgegen dem Uhrzeigersinn zum Punkt B.

 

 

 

 

 

 

Abbildung 5.4

Mit dem Schleifer wird das Potenziometer variabel eingestellt.

Courtesy of Parallax Inc.

2 - Aufbau und Test einer Potenziometerschaltung

Widerstände mit unterschiedlichen Werten lassen sich in Reihe mit einer LED schalten. Je größer dabei der Widerstandswert ist, desto geringer wird die Stromstärke im Kreis sein und desto schwächer leuchtet die LED. 

Verbindet man die Anschlüsse W und A eines Potenziometers mit einer LED, so wie es die nachfolgende Schaltskizze zeigt, dann lässt sich darüber der Widerstandswert im Schaltkreis stetig verändern und die Leuchtkraft der LED beeinflussen.

In dieser Übung lernst du das Potenziometer als variablen Widerstand kennen, mit dem sich die Leuchtkraft einer LED einstellen lässt.

Material

1x Board of Education

1x mini-USB Kabel

1x 9V Blockbatterie

1x Potenziometer 10kOhm

1x Widerstand 220 Ohm (rot-rot-braun)

1x LED rot

1x Steckdraht

Aufgabe

Baue die Schaltung nach Abb. 5.5 auf.

Schaltungsaufbau und Schaltskizze

 

 

 

 

 

 

 

 

 

 

 

 

 

Abbildung 5.5

Potentiometer-LED Testschaltung

Courtesy of Parallax Inc.

 

 

 

 

 

 

Abbildung 5.5b

Schaltskizze

Test der Potenziometerschaltung

 

Drehe das Potenziometer bis zum Anschlag im Uhrzeigersinn.

Bewege den Drehknopf anschließend im entgegengesetzten Uhrzeigersinn in die in Abbildung 5.6 gezeigten Positionen (b) bis (f). Beobachte dabei die Leuchtstärke der LED.

Vorsicht! Lässt sich das Potenziometer nicht so weit drehen, wie in der Abbildung dargestellt, dann erzwinge es nicht, sonst wird das Bauteil zerstört. Drehe den Einstellknopf gerade so weit, bis ein Weiterdrehen nicht mehr möglich ist.

 

 

 

 

 

Abbildung 5.6

Potenziometer Drehknopf

(a) - (f) zeigen unterschiedliche Positionen des beweglichen Schleifers.  Courtesy of Parallax Inc.

Arbeitsweise der Potenziometer-Testschaltung

Der Gesamtwiderstand in der Testschaltung beträgt 220 Ohm plus dem Widerstandswert zwischen den Punkten A und W des Potenziometers. Sein Wert liegt irgendwo zwischen 0 und 10 kOhm. 

Wird an der Einstellschraube gedreht, verändert sich die Streckenlänge zwischen Punkt A und W und damit der Widerstand. Damit ändert sich die Stärke des Stromflusses durch die LED und damit auch ihre Helligkeit.   

3 - Widerstandsbestimmung mit einer Zeitmessung

In dieser Übung lernen wir ein neues Bauteil kennen: den Kondensator.

Ein Kondensator verhält sich wie eine wiederaufladbare Batterie, die ihre Ladung allerdings nur für einen kurzen Zeitraum speichern kann. Du erfährst auch etwas über die sogenannte Entladezeit eines Kondensators: der Zeit, die vergeht, bis sich ein Kondensator C über einen Widerstand R entladen hat. Einen solchen Schaltkreis mit einem Widerstand R und einer Kapazität C nennen wir kurz RC-Schaltung.

 

Um uns mit der Entladezeit und der Kapazität vertraut zu machen, werden wir mit verschieden großen Widerständen und Kondensatoren die Entladezeit messen.

 

In dieser Übung wird die BASIC Stamp so programmiert, dass sie zunächst einen Kondensator auflädt und anschließend die Zeit t misst, in der sich der Kondensator C über einen Widerstand R entlädt.

Der Kondensator

Abbildung 5.7 zeigt die Schaltung und Bauteilzeichnung eines Elektrolyt-kondensators, so wie wir ihn in dieser Übung benutzen. Die Kapazität eines Kondensator wird in der Einheit Microfarad (mF) angegeben und ihr Wert ist i.a. auf das Bauteil aufgedruckt.

 

Der Elektrolytkondensator hat einen positiven (+) und negativen (-) Pol. Der negative Pol ist auf dem Zylinder mit einem Minuszeichen markiert, ein kurzer Anschlussdraht führt aus dem Zylinder heraus.

Achte bitte immer darauf, dass die Anschlussdrähte genau so, wie in der Schaltung angegeben, im Steckbrett positioniert werden. Bei Vertauschung der Anschlusspunkte wird das Bauteil zerstört. Bei Schaltungen mit höheren Betriebsspannungen kann der falsche Einbau eines Elektrolytkondensators zur Explosion des Bauteils führen.

 

 

 

 

Abbildung 5.7

3300 µF Kondensator   Schalt-symbol und Bauteilzeichnung

Achte auf die unterschiedlich lan- gen Anschlussdrähte des Konden- sators und die Zuweisung der Pole.

Courtesy of Parallax Inc.

Material

1x Elektrolytkondensator – 3300 µF

1x Elektrolytkondensator – 1000 µF

1x Widerstand – 220 Ohm (rot-rot-braun)

1x Widerstand – 470 Ohm (gelb-violett-braun)

1x Widerstand – 1 kOhm (braun-schwarz-rot)

1x Widerstand – 2 kOhm (rot-schwarz-rot)

1x Widerstand – 10 kOhm (braun-schwarz-orange)

Aufgabe
  • Baue die in Abb. 5.8 gezeigte Schaltung auf und verwende zunächst den Widerstandswert 470 Ohm
  • Gib das Programm Zeitmessung1.bs2 ein und führe es aus.
  • Beobachte, wie die BASIC Stamp den Kondensator lädt und anschließend die Entladezeit misst. 
  • Trage die Messzeit in der 470 Ohm Zeile der Tabelle 1 ein (die Entladezeit des Kondensators).
  • Schalte die Spannungsversorgung aus.
  • Ersetze den 470 Ohm Widerstand Ri durch den nächsten Wert.
  • Schalte die Spannungsquelle wieder an.
  • Trage die gemessene Zeit für den 1 kOhm Widerstand ein.
  • Wiederhole die Schritte für jeden weiteren Widerstand.

 

4 - Aufbau und Test einer RC-Schaltung

 

Abbildung 5.8b zeigt den Schaltplan und Abbildung 5.8a den Schaltungsauf- bau für diese Übung.  Es werden Zeitmessungen mit vier verschiedenen Widerstandswerten Ri durchgeführt. 

 

 

 

 

 

 

 

 

Abbildung 5.8

Schaltbild einer RC-Schaltung.

Für R sind in der Schaltung vier verschiedene Widerstandswerte vorgesehen. Starte mit R1 = 470 Ohm.

 

 

 

 

 

 

 

 

 

 

Abbildung 5.9

Schaltungsaufbau der RC-Schaltung. Achte darauf, dass der negative Pol des Kondensators so in das Board gesteckt wird, wie in dieser Abbildung. Der negative Pol ist mit Vss verbunden.

Courtesy of Parallax Inc.

Programm Zeitmessung1.bs2

Meine Messergebnisse

Tabelle 1: RC-Glied mit C = 3300 µF
Widerstand Entladezeit in sek
470 Ohm  
1 kOhm  
2 kOhm  
10 kOhm  

Arbeitsweise von Zeitmessung1.bs2

 

Er werden in diesem Programm zwei Variablen deklariert. In der Variablen zeitmesser wird die Zeit abgespeichert, die der Kondensator benötigt, um sich über Ri zu entladen. zaehler wird als Zähler eingesetzt, solange sich der Kondensator auflädt.

 

zeitmesser     VAR     Word
zaehler        VAR     Nib

Der Befehl DEBUG CLS löscht das Debug Terminal. HIGH 7 setzt P7 auf HIGH und startet den Aufladevorgang des Kondensators; die Mitteilung Kondensator wird geladen … wird im Terminalfenster angezeigt.

 

In der FOR…NEXT Schleife wird ein Rückwärtszähler eingesetzt; während er auf Null zählt, wird der Kondensator geladen und die Spannung zwischen seinen Polen wächst, je nach eingesetztem Ladewiderstand Ri, auf Werte zwischen 2,5 bis 4,9 V an.

DEBUG CLS
HIGH 7
DEBUG "Kondensator wird geladen ...", CR
FOR counter = 5 TO 0
  PAUSE 1000
  DEBUG DEC2 counter, CR, CRSRUP
NEXT

In einer Nachricht wird angezeigt, dass die Entladezeit jetzt gemessen wird.

 

DEBUG CR, CR, "Entladezeit messen!", CR, CR

 

Während der Kondensator sich über den Widerstand Ri entlädt, wird der I/O Pin von HIGH auf INPUT umgestellt. Sobald der I/O Pin die Schaltung freigegeben hat, entlädt sich der Kondensator über den Widerstand und die an C anliegende Spannung nimmt rasch ab.

 

INPUT 7

 

Im Kapitel über die Drucktaster haben wir mit der BASIC Stamp über die Variablen IN3 und IN4 HIGH und LOW Signale erkannt. Als HIGH Signal wurde bisher das Potential Vdd definiert, als LOW das Potential Vss.

Zukünftig werden wir Signale mit einem Potential von über 1,4 V als HIGH ansprechen. Es kann damit natürlich auch 5 V betragen. Ein LOW Signal weist dementsprechend ein Potential zwischen 1,4 V und 0 V auf.

 

DO…LOOP fragt P7 alle 100 ms ab, bis IN7 von 1 auf 0 springt. In diesem Moment hat die Entladespannung des Kondensators einen Wert unterhalb 1,4 V erreicht.

 

DO
  PAUSE 100
  zeitmesser = zeitmesser + 1
  DEBUG ? IN7
  DEBUG DEC5 zeitmesser, CR, CRSRUP, CRSRUP
LOOP UNTIL IN7 = 0

 

Das Ergebnis wird angezeigt und das Programm beendet.

DEBUG CR, CR, CR, "Entladezeit ",
       DEC timeCounter,
      " Zehntel einer Sekunde.", CR, CR
END

5 - Kürzere Entladezeiten des Kondensators

 

Wird ein Kondensator mit nur einem Drittel der ursprünglichen Kapazität in die Schaltung eingebaut, verkürzt sich die Entladezeit für jeden eingesetzten Widerstand auf ein Drittel. In der folgenden Übung 3 wird ein Kondensator mit 10.000-mal kleinerer Kapazität benutzt; die BASIC Stamp übernimmt wieder die Zeitmessung. Wir bedienen uns dazu des neuen Befehls RCTIME.

Aufgabe
  • Trenne das Board of Education von der Energie-versorgung. 
  • Ersetze den 3300 µF Kondensator durch einen 1000 µF Kondensator. 
  • Überzeuge dich davon, dass die Polung des Kondensators korrekt ist. Der negative Anschluss wird mit Vss verbun- den.
  • Schalte die Spannungsversorgung wieder ein.
  • Wiederhole die Schritte im Beispielprogramm Zeitmes-sung.bs2 und notiere die Zeitwerte in Tabelle 2
  • Vergleiche die Zeitmessungen mit denen aus Tabelle 1. Lässt sich die Aussage bestätigen, dass bei 1/3 Kapazitätswert auch die Entladezeit auf 1/3 sinkt?

Meine Messergebnisse

Tabelle 2: RC-Glied mit C = 1000 µF
Widerstand Entladezeit in sek
470 Ohm  
1 kOhm  
2 kOhm  
10 kOhm  

6 - Potenziometerwerte mit der BASIC Stamp auslesen

 

In Übung 1 wurde ein Potenziometer als veränderbarer Widerstand eingesetzt. Sein Widerstandswert hing von der Position des Drehreglers ab.

In Übung 2 wurde eine RC-Schaltung benutzt, um verschiedene Widerstände zu bestimmen.

 

In dieser Übung wird eine RC-Schaltung aufgebaut, mit der ein Potenziome-terwert bestimmt werden kann. Für die Zeitmessung wird die BASIC Stamp eingesetzt. Die Kapazität ist sehr klein, die zugehörige Zeitmessung deshalb sehr kurz (einige Millisekunden). Die BASIC Stamp wird trotzdem hervor-ragende Werte zur Bestimmung des Widerstandes zwischen den Anschluss-punkten A und W des Potentiometers liefern.

Material

1x Potenziometer – 10 kOhm

1x Widerstand – 220 Ohm (rot-rot-braun)

2x Verbindungsdrähte

1x Kondensator – 0.1 µF  (104)

1x Kapazität – 0.01 µF  (103)

2x Verbindungsdrähte

Aufgabe
  • Baue die Schaltung nach Abbildung 5.11 auf.
  • Gib das Programm Zeitmessung2.bs2 ein und starte es.
  • Verändere durch Drehen des Einstellreglers den Widerstand des Potentiometers und beobachte dabei den Wert der Variablen zeit im Debug Terminal.
  • Tausche den 0,1µF Kondensator aus gegen einen mit der Kapazität 0,01µF und vergleiche anschließend die Entladezeiten im Debug Terminal. Sind die neuen Zeiten ungefähr 1/10 geringer als vorher, bei gleichbleibender Potenziometerstellung?
  • Notiere für den 0,1µF Kondensator den höchsten und niedrigsten Wert, der im Terminal angezeigt wird. Drehe dazu den Regler jeweils in die maximale Stellung ganz nach links bzw. rechts.

Keramische Kondensatoren haben keine ausgewiesenen Plus- und Minus-Pole. Bei diesen Kondensatoren muss nicht auf die korrekte Polarität beim Einbau geachtet werden.

Abbildung 5.10 Keramische Kondensatoren - 0,1µF (links) - 0,01µF (rechts) Courtesy of Parallax Inc.

 

Schaltskizze und Schaltungsaufbau

 

 

 

 

 

 

 

 

 

Abbildung 5.11

Schaltungsaufbau einer RC-Schaltung. Mit dieser Schaltung wird der Widerstandswert des Potenziometers ausgelesen.

Courtesy of Parallax Inc.

 

 

Abbildung 5.11a

Schaltskizze zum Schaltungsaufbau Abb. 5.11

Programmierung einer RC-Zeitmessung

Das BASIC Programm aus Übung 2 überprüfte alle 100 ms, ob IN7 = 0 ist und bestimmte aus der Anzahl der Abfragen die Entladezeit.

 

Fällt IN7 von 1 auf 0, ist die am Kondensator anliegende Spannung unter 1,4 Volt abgesunken und der Wert von zeitmesser gibt in der Einheit Zehntelsekun- den die Entladezeit an, in der die Kondensatorspannung unter 1,4 Volt abge- sunken ist.

 

Im folgenden Beispielprogramm wird mit dem PBASIC Befehl RCTIME die Entladezeit in Einheiten von 2 µs aufgenommen. Statt mit einer Genauigkeit von Zehntelsekunden wird über RCTIME 7, 1, zeit  die Zeit in der Variablen zeit in Einheiten von jeweils Zweimillionstel Sekunden abgelegt.

 

Auf Grund dieser hohen Auflösung kann die Kapazität des Kondensators von 3300 µF auf 0,1 oder sogar 0,01 µF verkleinert werden. Bei jeder Verän-derung der Potentiometereinstellung ist die über RCTIME bestimmte Zeit ein Maß für die Position des Schleifkontaktes und damit des Widerstandswertes.

Programmbeispiel: Zeitmessung2.bs2

Programm Zeitmessung2.bs2

Meine Messergebnisse

Mit einem 0,1µF Kondensator haben sich für die beiden Extremstellungen des Schleifers im Potenziometer folgende Messwerte ergeben:

 

Höchster Wert:  __________________________

 

Niedrigster Wert: _________________________

Wie das Programm Zeitmessung2.bs2 arbeitet

 

In Abb. 5.12 und 5.13 wird gezeigt, wie die Befehle HIGH, PAUSE und RCTIME mit dem Bausteinen im Schaltkreis aus Abbildung 5.11 wechsel-wirken.

Abbildung 5.12 Spannungsverlauf am Kondensator - Courtesy of Parallax Inc.

Mit HIGH 7 wird Pin P7 auf 5V gesetzt. Der elektrische Strom kann jetzt von P7 über den Potenziometer-Widerstand als auch zeitgleich über den Kondensator gegen Masse abfließen. Der Kondensator lädt sich dabei auf.

Je stärker er aufgeladen wird, desto geringer wird der Ladungsfluss im Kondensator. Für den Ladevorgang stehen mit dem PAUSE 100 Befehl 100ms zur Verfügung, das ist weit mehr, als der Kondensator tatsächlich benötigt.

Der Befehl RCTIME 7, 1, zeitmesser kehrt die I/O Pinrichtung von Ausgang auf Eingang um und misst die Zeit in 2µs Paketen, die vergeht, bis der Spannungswert unter 1,4V fällt.

Sobald P7 auf Eingang geschaltet ist, entlädt sich der Kondensator über das Potenziometer. Die Ladungsüberschüsse auf der einen Kondensatorplatte bewegen sich über den Widerstand zur anderen Plattenseite; ein langsamer Ladungsaustausch findet statt, solange, bis Ladungsausgleich eingetreten ist, bzw. solange, bis der Eingang P7 erkennt, dass die Spannung unter 1,4V gefallen ist.

Da in 2µs Zeitpaketen gezählt wird, entspricht einem Zählwert von 80 ein Zeitwert von 160µs.

Schwellenwerte der I/O Pin Logik

1,4V ist bei einer BASIC Stamp der Schwellenwert der I/O Pin Logik. Wird ein I/O Pin als Eingang deklariert, speichert er eine 1 in seinem Input-Register, sobald der anliegende Spannungswert über 1,4V liegt oder eine 0, wenn am Eingang weniger als oder gleich 1,4V liegen. Im ersten Drucktaster-Beispiel in Übung 2 wurden 5V bzw. 0V an den Eingang P3 gelegt. 5V ist mehr als 1,5V, deshalb wurde in IN3 eine 1 abgelegt. Ähnlich verhält es sich mit 0V; der Wert ist kleiner als 1,4V, deshalb wurde in IN3 eine 0 abgelegt.

 

RCTIME Status Argument

Im Programm Zeitmessung2.bs2 sinkt die Spannung über dem Kondensator von ca. 5V ab, sobald der Ausgang P7 auf Eingang umgeschaltet wird (Abbildung 5.12). Bei einem Wert von 1,4V ändert sich der Wert im IN7 Register von 1 auf 0.

In diesem Moment speichert der RCTIME Befehl seinen Messwert im Speicher zeitmesser.

Das zweite Argument im Befehl RCTIME bezieht sich auf den Status der Messung. Eine 1 besagt, dass im IN7 Register zum Programmstart eine 1 abgelegt wird. Der RCTIME Befehl misst nun, wie lange es braucht, bis das IN7 Register in den Zustand 0 kippt. Das ist ja genau dann der Fall, wenn die Spannung an seinem Eingangspin P7 auf 1,4V oder darunter fällt.

Weitere Informationen zum Befehl RCTIME gibt es im BASIC Stamp Manual oder bei BASIC Stamp Editor´s Help im Inernet.

Abbildung 5.13 zeigt, wie sich die Entladungszeit mit dem Widerstands- wert des Potenziometers in Abbildung 5.11 ändert. Jeder Position des Drehknopfs entspricht ein bestimmter Widerstandswert.

Wird der Widerstand größer, dann dauert die Entladung des Kondensators länger und der Befehl RCTIME speichert einen größeren Zahlenwert im Speicher zeitmesser ab als wenn der Widerstand kleiner ist.

 

Auf diese Weise korreliert die Entladezeit des Kondensators direkt mit dem eingestellten Widerstandswert am Potenziometer und damit ist die im Debug Terminal angezeigte Zahl ein Maß für die Stellung des Schleifers im Potenziometer.

 

 

 

 

Abbildung 5.13

Einfluss des Widerstandswertes eines Potentiometerabgriffs auf die Entladezeit in einem RC-Schaltkreis.

Courtesy of Parallax Inc.

Genauere Betrachtungen zur RC-Schaltung

Dem Schaltbild 5.12 ist zu entnehmen, dass ohne den 220 Ohm Widerstand der I/O Pin den Kondensator auf 5V aufladen kann, sobald er auf HIGH gesetzt wird. Der 220 Ohm Widerstand hat hier eine Schutzfunktion. Er verhindert, dass der I/O Pin durch einen zu hohen Stromfluss zerstört wird, sobald der Ladevorgang beginnt. Eine zweite Schutzfunktion hat er, wenn der Mittelabgriff des Potenziometer so verstellt ist, das der Widerstandswert bei 0 Ohm liegt. Ohne den 220 Ohm Widerstand würde ein hoher Strom direkt über P7, das Potenziometer (0 Ohm) zur Erde abfließen und mit Sicherheit den I/O Port zerstören.

Die 5V am Ausgang von P7 teilen sich über dem 220 Ohm Widerstand und dem Potenziometer auf. Beide Widerstände sind in Reihe oder hintereinander geschaltet. So etwas nennt man einen Spannungsteiler (Abbildung 5.14). Es verhalten sich in einer Spannungsteilerschaltungen die anliegenden Spannungen wie die entsprechenden Widerstände. Es gilt:

Abbildung 5.14 Berechnungen am Spannungsteiler

Der Wert von Upot setzt die Obergrenze für die am Kondensator anliegende Spannung.

7 - Einen Servo mit einem Potenziometer steuern

Daumen Joysticks werden häufig in Videospielen benutzt. Sie verfügen über zwei Potenziometer, die der eingebauten Elektronik in einem Gamecontroller ermöglicht, die Joystick-Position  an die Videoconsole zu übertragen. Ein Potenziometer ist für die links/rechts Bewegung zuständig, das andere für die vorwärts/rückwärts Bewegung.

Abbildung 5.14 Daumen Joystick von Parallax - Courtesy of Parallax Inc.

Auch in RC Fernsteuerungen für Flugzeugmodelle werden Daumen Joysticks eingesetzt. Im Modellflugzeugbau verfügen die Fernsteuerungen über zwei Joysticks mit je zwei Potenziometern, dabei ist jedes von ihnen für einen bestimmten Servo im Flugzeugmodell zuständig.

In der folgenden Übung werden wir ein Potenziometer benutzen und die Position des Steuerhorns bei einem Servo beeinflussen. Wird der Knopf des Potenziometers gedreht, wird diese Bewegung auf das Steuerhorn übertragen.

 

Wir benutzen dazu zwei Schaltungen: die Potenziometerschaltung aus Übung 3 in dieser Lektion und die Servoschaltung aus Übung 1 der Lektion Standardservos.

 

Das in dieser Übung benutzte PBASIC Programm misst wiederholt die Position des Mittelabgriffs eines Potenziometers mit Hilfe des Befehls RCTIME und überträgt die Auswertung der Daten (dazu ist etwas Mathematik leider nötig;-)) mit Hilfe des Befehls PULSOUT an den Servo.

Material

1x Potenziometer - 10kOhm

1x Widerstand - 220 Ohm (rot-rot-braun)

1x Widerstand - 470 Ohm (gelb-violett-braun)

1x Kondensator - 0,1µF

1x Parallax Standard Servo

1x LED

2x Steckdraht

Aufgabe
  • Baue die Schaltung aus Übung 3 aus dieser Lektion auf. Benutze unbedingt den 0,1µF Kondensator.
  • Füge die Servoschaltung aus der Lektion Standardservo, Übung 1 hinzu.
  • Gib das Programm ServosteuerungMitPoti.bs2 ein und speicher es auf einem Stick ab.
  • Setze den Power-Schalter in Position 2 auf dem Board of Education und drehe am Potenziometer. Beobachte, ob sich das Steuerhorn entsprechend der Drehbewe- gung dreht.

Aufbau einer Potenziometerschaltung und eines Servo Schaltkreises

In dieser Übung werden wir mit zwei elektrischen Schaltungen arbeiten: der Potenziometerschaltung aus der letzten Übung 3 dieser Lektion und der einfachen Servo-Ansteuerungsschaltung aus der Lektion Standardservos.

 

Programmierung einer Potentiometerschaltung für einen Servo

In Übung 3 dieser Lektion wurden der höchste und niedrigste Zeitwert bei einer RC-Schaltung mit einem 0,1µF Kondensator ermittelt. Diese Werte werden jetzt benötigt.

  • Sollten die Zeitwerte noch nicht ermittelt worden sein, dann hole es jetzt nach. Gehe zurück zur Übung 3 und bestimme die Zeitwerte.

Für das weitere Vorgehen benutze ich hier die selbst ermittelten Zeitwerte, die von Zeitwerten anderer Untersuchungen abweichen können.

  • Mittelabgriff Anschlag rechts: 1
    
  • Mittelabgriff Anschlag links: 585
    

Unser Ziel ist, die ermittelten Entladezeiten, die gleichzeitig auch ein Maß für die Stellung des Mittelabgriffs bei einem Potenziometer sind, als Bezug zu nehmen für die Ansteuerung des Servos. Die Entladezeiten werden abgebildet auf die Impulslängen, mit denen sich das Steuerhorn bewegen lässt.

Wie lassen sich jetzt diese Eingangswerte so anpassen, dass sie den Servo Arbeitsbereich von 500 - 1000 über den Befehl PULSOUT abbilden? Die Antwort klingt einfach: wir helfen uns mit ein wenig Mathematik.

Skalierung

Die Zeitwerte überstreichen einen Bereich von ca. 600, genauer von 1 bis 585; der Servo entsprechend einen Bereich von 500, genau von 500 bis 1000. In einem ersten Schritt wird durch skalieren der Zeitwertebereich auf 500 umgerechnet. Und das geht so:

  • Zeit (Maximum) = 585 x 500/585 = 585 x 0,8547 = 500
  • Zeit (Minimum) = 1 x 500/585 = 0,8547

 

Offset

Nach der Skalierung auf einen Bereich von 500 wird noch ein sogenanntes Offset hinzugefügt, um den Servobereich von 500 bis 1000 abzubilden:

  • Zeit (Maximum) = 500 + 500 = 1000
  • Zeit (Minimum) = 0,8547 + 500 = 500

Umrechnungen in PBASIC

Erinnern wir uns: mit dem PBASIC Operator */  lassen sich auch Kommazahlen berechnen.

  1. Die Variable, die mit einer Kommazahl multipliziert werden soll, muss vor den Operator */ geschrieben werden.
    zeit = zeit */
  2. Bevor die Kommazahl jetzt eingetragen wird, muss sie mit dem Wert 256 multipliziert werden.
    neue Kommazahl = 0,8547  x 256 = 218,880
  3. Die Nachkommastellen werden abgeschnitten:
    neue Kommazahl = 218
  4. Dieser Wert wird hinter den Operator */ geschrieben.
    zeit = zeit */ 218

Damit ist die Skalierung abgeschlossen, es fehlt nur noch das Offset von 500. Durch Addition ergibt sich damit:

  • zeit = zeit */ 218
  • zeit = zeit + 500

Die Größe zeit kann jetzt als Argument in den PULSOUT Befehl eingesetzt werden.

 

zeit = zeit */ 218   ' Skalierung mit 0,8547

zeit = zeit + 500    ' Offset von 500

PULSOUT 14, zeit     ' sendet Impuls an Servo

Beispielprogramm  ServosteuerungMitPoti.bs2

Programm ServosteuerungMitServo.bs2

 

Jetzt kommst du!

Wenn du bis jetzt die in dieser Übung abgedruckten Werte benutzt hast, dann bietet es sich jetzt an, für die eigenen Bauteile die Skalierung durchzuführen. Gehe dazu genau so vor, wie im Abschnitt Programmierung einer Potentiometerschaltung für einen Servo in dieser Übung beschrieben.

Konstanten deklarieren

Größere Programme werden schnell unübersichtlich, wenn in ihnen viele Zahlen an unterschiedlichen Stellen benutzt werden. Das wird noch dramatischer, wenn ein solcher Zahlenwert einmal neu angepasst werden muss und man nicht mehr genau weiß, an welchen Stellen innerhalb des Programms dieser Zahlenwert aufgerufen wird.

Statt zum Beispiel einen Skalenfaktor direkt als Zahlenwert einzugeben, kann er auch über sogenannte Konstante zu Beginn eines Programms zugewiesen werden. Konstante lassen sich während eines Programmlaufs nicht mehr verändern.

Konstante werden innerhalb eines Programms über das Schlüsselwort  CON deklariert:

  • Skalenfaktor CON 218
  • Offset       CON 500

Mit der Zuweisung des Namens Skalenfaktor für den Wert 218 und Offset für den Wert 500 im Programm ServosteuerungMitPoti.bs2 , ändern sich die Programmzeilen wie folgt:

  • zeit = zeit */ Skalenfaktor
  • zeit = zeit + Offset

Sollte sich ein Zahlenwert einer Konstanten jemals ändern, dann genügt es bei einer Konstanten-Deklaration, nur an dieser Stelle - meist am Anfang eines Programms - den Zahlenwert zu ändern.

PIN Direktiven

Über PIN Direktiven lassen sich auch an I/O Pins Namen vergeben. Dem I/O Pin P7 kann per Direktive zum Beispiel der Name RCPin zugewiesen werden:

  • RCPin PIN 7

Im Programm ServosteuerungMitPoti.bs2 wurde an zwei Stellen, in Zeile 10 und Zeile 12,  die Zahl 7 aufgerufen. Zeile 10 lässt sich mit Hilfe einer PIN Direktive neu schreiben als:

  • HIGH RCPin

Zeile 12 entsprechend neu:

  • RCTIME RCPin, 1, zeit

Werden die I/O Pins später einmal verändert, muss zukünftig nur noch die Direktive einmal verändert werden.

Weitere Bemerkungen zur PIN Direktive

Der PBASIC Compiler erkennt, ob ein Pinname als Ein- oder Ausgang genutzt wird und ergänzt entweder die I/O Pinzahl des Ausgangs oder die korrespondierende Bitvariable im Input Register.

Beispiel: Es werden zwei PIN Direktiven deklariert:

  • LedPin PIN 14
  • TasterPin PIN 3

Innerhalb eines Programms kann dann zum Beispiel ein Entscheidungsbefehl aufgerufen werden in der Art

  • IF TasterPin = 1 THEN HIGH LedPin

Der PBASIC Compiler übersetzt diese Programmzeilen in:

  • IF IN3 = 1 THEN HIGH 14.

Der Aufruf IF TasterPin = 1 ... ist ein Vergleich; der PBASIC Compiler erkennt daran, dass TasterPin als Eingang genutzt wird. Er verwendet daher automatisch die Bitvariable IN3 des Input Registers statt der Zahl 3.

Ähnlich verhält es sich mit HIGH LedPin. LedPin benutzt den LedPinnamen für die konstante Zahl 14 als output  Anweisung, deshalb setzt es HIGH auf 14.

Beispielprogramm: ServosteuerungMitPotiMitDirektiven.bs2

Dieses Programm arbeitet genau so wie das Vorgängerprogramm ServosteuerungMitPoti.bs2, mit dem einzigen Unterschied, dass wir hier Konstanten und I/O Pins mit einem Namen eingeführt haben.

Aufgabe

Gib das Programm ServosteuerungMitPotiMitDirektiven.bs2 ein.

Beobachte, ob und wie der Servo auf das Verstellen des Drehknopfes reagiert

Bestätige, dass das Programm genau so reagiert wie ServosteuerungMitDirektiven.bs2

Wie wir früher schon angemerkt hatten, gestalten sich Veränderungen in einem Programm wesentlich einfacher, wenn man PIN Direktiven einsetzt. Wird ein RC-Schaltkreis zum Beispiel mit einem anderen I/O Pin verbunden, muss nur der Wert von RcPin in der PIN Direktive geändert werden.

Aufgabe
  • Speicher das Programm ServosteuerungMit-PotiDirektive.bs2 unter einem neuen Namen.
  • Gib als neuen Skalierungsfaktor und Offset-Wert deine selbst ermittelten Werte ein.
  • Starte das so geänderte Programm und überprüfe, ob es korrekt läuft.
  • Verbinde den RC-Schaltkreis neu mit dem I/O Pin 8.
  • Ändere die rcPin Zuweisung entsprechend ab in   rcPin  PIN 8
  • Starte das Programm erneut und überprüfe, ob die Befehle HIGH und RCTIME korrekt ausgeführt werden.

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