6.2. Aktoren

6.2.1. Aktoren digital

6.2.1.1. LED, Leuchtdiode

Aktor, Ausgang, digital, Signalgeber

Leuchtdioden leuchten in den Farben rot, gelb, grün, blau. Ausserdem gibt es 'unsichtbare' Infrarot-Lichtdioden IR-LED, weisse Leuchtdioden und mehrfarbige Leuchtdioden.

Für mehrfarbige Leuchtdioden siehe Abschnitt 6.2.1.3, „RGB-LED Mehrfarbige Leuchtdioden“ .

Leuchtdioden kann man an- oder ausschalten. Oder Blinken lassen.

6.2.1.1.1. Helligkeitssteuerung mit PWM

Wenn man die Helligkeit verändern möchte, dann muss man entweder den Strom verändern, was relativ aufwendig ist.

Oder man benutzt Pulsweitenmodulation PWM. Das ist eine schnelles Blinken, so schnell dass das Auge nicht mitkommt, und mit veränderlichem An-Ausverhältnis. Das können Computer meist relativ gut.

Das Bild zeigt das Prinzip: regelmässig wird die LED an- und ausgeschaltet. Wird nur kurz eingeschaltet, so leuchtet die LED dunkel. Wird lange eingeschaltet, so leuchtet die LED hell.

PWM-Steuerung

[Warnung]

IO-Signale der IKG-Adapterplatine dürfen mit max. 35mA belastet werden. In Summe kann der Line-Driver nur mit 70mA belastet werden.

In der Regel benötigen LED 20mA Strom, damit muss der Vorwiderstand größer 120Ohm sein; 220Ohm oder mehr passt üblicherweise. Die neuen, sehr hellen LED kommen bei 3,3V mit 1kOhm aus.

Das folgende Beispiel zeigt den Anschluss einer LED an Anschluss IO.4.

Für den Aufbau wird benötigt

  • 1 Stück Widerstand 330 Ohm
  • 1 Stück LED
  • 1 Stück Schaltdraht schwarz 3cm beidseitig abisoliert

Die LED hat 2 Anschlüsse, einer davon ist länger als die anderen. Dieser ist in der Zeichnung besonders markiert und muss an der Stelle sitzen, wo der blaue Draht wegführt zur Platine.

Aufbauhinweise:

  • Strom abschalten
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.

Kontrolle

  • Polarität LED
  • Steckbrücken
  • Strom einschalten

Schaltskizze

6.2.1.1.2. Ansteuerung für An- und Ausschalten

Der Aufbau wurde oben bereits beschrieben. Das An- und Ausschalten erfolgt mit Sende-Events von Scratch aus.

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_led
						

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Die Leuchtdiode wird mit den Sende-Events 'led4_ON' bzw 'led4_OFF' angesteuert. Diese Events müssen in scratch angelegt werden.

6.2.1.1.3. Ansteuerung für Helligkeitssteuerung

Der Aufbau wurde oben bereits beschrieben. Die Helligkeitssteuerung erfolgt mit Variablenwerten von Scratch aus.

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_led_pwm
						

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Die Leuchtdiode wird mit einer Variablen 'led4' angesteuert, Wert = 0 (== dunkel) bis 100 (==hell). Die Variable muss als globale Variable in scratch angelegt werden.

Die Aufgaben können mit beiden Ansteuerungen für die LED ausgeführt werden (Konfiguration ikg_led oder ikg_led_pwm). Zu beachten ist, dass die Art der Ansteuerung dann unterschiedlich ist.

Aufgaben

Reaktionszeitmesser

Schreibe ein Programm in Scratch für einen Reaktionszeit-Messer.

Zuerst ist die LED ausgeschaltet.

Benutze eine zufällige Wartezeit von 1 bis 5 Sekunden, um die LED aufleuchten zu lassen.

Starte die Stoppuhr.

Dann muss der Button s0 auf der Platine gedrückt werden.

Lies die Zeit aus der Stoppuhr in eine Variable ein und zeige diese an. Benutze für den Scratch-Client die An-Ausschalten-Konfiguration für dieses Beispielprogramm.

Überlegt euch, wie ihr den anderen Schülern das Programm erklärt. Was sind die ganz wichtigen Punkte ? Was weniger wichtig ist soll an den Schluss.
Zusatzaufgabe: einen highscore einbauen. Name abfragen und mit der Zeit anzeigen.

6.2.1.2. 7-Segment-Leuchtdioden

Für die Anzeige von Zahlen werden häufig 7-Segmentanzeigen verwendet.

Das sind 7 Leuchtdioden, die in einem Gehäuse gemeinsam angeordnet sind. Meist ist auch noch eine achte Diode eingebaut für den Dezimalpunkt.

Als Beispiel für eine solche Diode hier ein Datenblatt SA08-11GWA .

Die hier benutzte Leuchtdiode soll sehr hell leuchten und braucht deswegen höhere Spannungen als die 3.3V der Adapterplatine. Deshalb die externe Versorgung mit 12V und Vorwiderständen. Der Strom durch jedes Segment ist dann ca 20mA.

Für den Aufbau wird benötigt

  • 1 Stück 7-Segmentanzeige SA08-11GWA
  • 1 Widerstandnetzwerk DIL 8*330 Ohm oder 7* 330 Ohm

  • 7 Stück Schaltdraht blau 10cm beidseitig abisoliert
  • 1 Stück Schaltdraht rot 3cm beidseitig abisoliert
  • 1 Stück Adapterkabel für Steckernetzteil
  • 1 Stück Steckernetzteil 5 Volt
  • 8 Steckkabel Buchse-Stecker 1 rot, 7 sonst.

Das Anzeigemodul hat viele Anschlüsse, hier muss genau gezählt werden.

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Halteplatte wieder anbringen
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Adapterkabel in der Adapterplatine einstecken. Auf Polarität achten: schwarzes Kabel muss nach aussen !

Kontrolle

  • Polarität Adapterkabel, schwarz aussen
  • Anschlüsse 7-Segment, vor allem die plus-Verbindung.
  • Steckbrücken
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_7segment
					

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Die Anzeige wird mit globalen Variablen in Scratch angesteuert: seg_A, seg_B, … seg_G. .

Werte sind '0' für aus, und '1' für ein.

Aufgaben

Die globalen Variablen seg_A, seg_B, etc anlegen. Die Variablen der Reihe nach mit '0' oder '1' belegen und überprüfen, ob die richtigen Segmente leuchten.

Zeichnet eine Tabelle, in der für die Zahlen 0 bis 9 die Werte '1' bzw '0 für die Segmente eingetragen sind.
Tabelle 6.1. Siebensegment, Ansteuerung
 abcdefg
011??   
1       
2       
...       

Schreibe ein Programm in Scratch, das die Zahlen 0-9 in einer Schleife ausgibt. Baue Wartezeiten ein.
Überlegt euch, wie ihr den anderen Schülern das Programm erklärt. Was sind die ganz wichtigen Punkte ? Was weniger wichtig ist soll an den Schluss.
Zusatzaufgabe: Simuliert die Siebensegmentanzeige in Scratch. Baut 7 Segmente auf mit den Namen 'a' bis 'g'. Die Anordnung ist oben im Kapitel enthalten. Steuert je nach anzuzeigender Zahl die Segmente auf 'sichtbar' oder 'versteckt'. Eine solche Logik ist auch in der scratchClient-Software enthalten. Hier werden die ankommenden Zeichen gelesen, dann alle Segmente auf 'aus' geschaltet und z.B. bei '1' das Segment 'b' und 'c' eingeschaltet.
Zusatzaufgabe 2: wie könnte – in scratch – eine mehrstellige Anzeige aufgebaut werden ? Für die Zahlen 0 bis 999 zum Beispiel.

6.2.1.3. RGB-LED Mehrfarbige Leuchtdioden

Mehrfarbige Leuchtdioden bestehen aus drei einzelnen Dioden für die Farben rot, grün, blau, die sehr eng zusammen in einem Gehäuse zusammen eingebaut sind. Deswegen haben diese Dioden nicht zwei, sondern 4 oder 6 Anschlüsse.

Als Beispiel für eine solche Diode mit gemeinsamer Anode hier ein Datenblatt YSL-R596AR3G4B5C-C10 .

Die hier benutzte RGB-Leuchtdiode soll sehr hell leuchten und braucht deswegen höhere Spannungen als die 3.3V der Adapterplatine.

Die Ansteuerung erfolgt für jede R-, G- oder B-LED mit PWM-Signalen.

Für den Aufbau wird benötigt

  • 2 Stück Widerstände 470 Ohm,
  • 1 Stück Widerstande 560 Ohm,
  • 1 Stück RGB-LED mit gemeinsamer Anode YSL-R596AR3G4B5C-C10
  • 1 Stück Adapterkabel für Steckernetzteil
  • 1 Stück Steckernetzteil 12 Volt
  • 4 Steckkabel Buchse-Stecker 1 rot, 3 sonst.

Die LED hat 4 Anschlüsse, einer davon ist länger als die anderen. Dieser ist in der Zeichnung besonders markiert.

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Halteplatte wieder anbringen
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Adapterkabel in der Adapterplatine einstecken. Auf Polarität achten: schwarzes Kabel muss nach aussen !

Kontrolle

  • Polarität Adapterkabel, schwarz aussen
  • Position RGB-LED
  • Steckbrücken
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_rgb_pwm
					

Scratch, 'Unterstützung für Netzwerksensoren einschalten' Die RGB-Diode wird mit globalen Variablen in Scratch angesteuert: 'rgb_A_R' (rot), 'rgb_A_G' (grün), 'rgb_A_B' (blau), Werte sind 0..100.
Beispiele:

 rgb_A_Rrgb_A_Grgb_A_B
rot hell10000
grün hell01000
blau hell00100
blau mittel0050
gelb1001000
weiss100100100

Aufgaben

Die (globalen) Variablen 'rgb_A_R', 'rgb_A_G', 'rgb_A_B' anlegen. Sensorverbindung aktivieren. Aktiviere die Regler an der Anzeige der Variablen. So sieht das aus:

Mit den Reglern die verschiedenen Farbwerte ausprobieren. 'rgb_A_R' sollte die rote Farbe steuern, 'rgb_A_G', 'rgb_A_B' sind für die grüne und blaue Farbe.

Schreibe ein Programm in Scratch, das die RGB-Leuchtdiode ansteuert.

„Farben wie Mondrian.“

Piet Mondrian war ein holländischer Maler, der abstrakte Bilder mit farbigen Rechtecken gemalt hat, hier ein Beispiel.

Auf der Bühne sollen mehrere, bunte Rechtecke angeordnet werden. Wenn die Maus ein Rechteck berührt, soll die Farbe auf die LED ausgegeben werden. Benutzt mindestens die drei Farben rot, grün, blau und einige Mischfarben.

Jedes der Rechtecke ist ein eigenes Sprite, das auf Mausklicks reagiert und die entsprechenden RGB-Werte setzt. Erst mal ein oder zwei Sprites anlegen, wenn diese dann funktionieren die anderen kopieren und anpassen.

Zusatzaufgabe: Einfach mit der Maus auf Felder zu klicken ist auf Dauer etwas langweilig. Baut ein, dass sich Felder drehen, wenn sie berührt werden. Oder einen Klang ausgeben.

Beispielprogramm

6.2.1.4. Servo, Servomotor, Fernsteuerservo

Aktor, Ausgang, Pulsweitenmodulation, Bewegung, Motor

Servomotoren werden häufig im Modellbau eingesetzt. Sie enthalten einen Motor, Getriebe und eine Elektronik, welche die Ansteuersignale in eine Position übersetzt.

Die Ansteuerung erfolgt mit elektrischen Impulsen, die je nach gewünschter Position mehr oder weniger lang sind (Pulsweitenmodulation).

Da die Servomotoren relativ hohe Ströme brauchen, je nach Bauart 100mA bis mehrere Ampere, muss für diese Schaltung ein externes Netzteil benutzt werden. Die Stromversorgung aus dem RaspberryPi kann das nicht bereitstellen und Störsignale des Motors würden u.U. auch den Prozessor stören.

Für den Aufbau wird benötigt:

  • 1 Stück Mini-Servo
  • 2 Stück Schraube/Mutter M2,5
  • 1 Stück Adapterkabel für Steckernetzteil
  • 1 Stück Steckernetzteil 5 Volt
  • Papier ode dünne Pappe für Zeiger und Skala, M3-Schrauben um die Skala zu befestigen; Klebeband um den Zeiger zu befestigen.

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Halteplatte wieder anbringen
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Adapterkabel in der Adapterplatine einstecken. Auf Polarität achten: schwarzes Kabel muss nach aussen !
  • Servokabel anstecken. Schwarzes(braunes) Kabel muss nach aussen !
  • Steckernetzteil mit dem Adapterkabel verbinden.

Kontrolle

  • Polarität Adapterkabel
  • Polarität Servo
  • Steckbrücken
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_servo2
					

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Der Servo erhält Werte von Scratch: globale Variable 'servo_A', werte sind 0..100.

Bei Tastendrücken s0,s1,s8 auf der Adapterplatine werden die Signale 's0_pressed', 's0_released', 's1_pressed', 's1_released', 's8_pressed', 's8_released' an scratch geschickt.

Aufgabe, Schritt für Schritt eine Zahlenskala aufbauen.

Erste Funktionskontrolle: Globale Variable 'servo_A' anlegen. Den Regler an der Variablenanzeige aktivieren und verschiedenen Werte einstellen. Das Servo soll sich bewegen.
Befestige ein Stück Papier am Servo als Zeiger und eine zeichne eine Skala mit Zahlenwerten 0,1,2,3,4,5. Das muss nicht regelmässig sein. Aber überprüfe (mit dem Regler), dass der Servo alle Zahlen erreichen kann.
Zeichne eine Tabelle auf ein Blatt Papier und notiere für jeden Zahlenwert der Skala den Wert des Reglers 'servo_A'
Tabelle 6.2. Wertetabelle
Schritt012345
servo_A      

In scratch soll ein Schritt-Variable mit diesen Werten 0,1,2,3,4,5 angelegt werden. Benutze die Taste s8 auf der Adapterplatine, um den Zahlenwert zu erhöhen. Wenn er auf '6' geht, soll er wieder auf '0' zurückgesetzt werden.
Je nach Zahlenwert soll der Zeiger des Servo auf die Zahl auf der Skala zeigen.
Wie könnte man so ein Servo in einem Spiel verwenden ?

6.2.1.5. Schrittmotor

Aktor, Ausgang, Bewegung, Motor, Schrittmotor

Schrittmotoren werden verwendet, wenn man präzise Antriebe benötigt. Die Motore müssen sich nicht kontinuierlich drehen, sondern können eine Position halten und beliebig vorwärts, rückwärts drehen.

Schrittmotore sind nicht sehr schnell. Allerdings können mit geeigneter Ansteuerung um die 10 Umdrehungen je Sekunde erzielt werden. Der Vorteil ist die präzise Bewegung, auch sehr langsam bis zum Stillstand.

Die Verwendung ist in Druckern, Werkzeugmaschinen, Scannern. Immer dann, wenn man genau steuerbare Bewegungen benötigt.

Die meisten Motoren haben 200 Schritte je Umdrehung.

Schrittmotor mit NEMA-Gehäuse (Industriestandard) und der im Kurs verwendete 'kleine' Schrittmotor.

Im Kurs verwenden wir einen Motor mit 64 Schritten und einem Getriebe mit 64-facher Untersetzung, also 64x64=4096 Schritte je Umdrehung.
Ganz genau genommen ist die Untersetzung 63,684:1. Das ist dann wichtig, wenn man den Motor kontinuierlich im Kreis drehen lässt.

Für die Ansteuerung muss ein Impulsmuster eingehalten werden.

Hier das Impulsmuster für den verwendetenen Motor. Es gibt zwei Muster, eines mit 8 Schritten und eines mit 4 Schritten. Das Muster mit 8 Schritten läuft ruckelfreier, ruhiger als das mit 4 Schritten. Dafür ist das 4-Schritt Muster schneller.

Tabelle 6.3. Schrittmuster, 8 Schritte
Schrittbr0.0br0.1br1.0br1.1pattern
Schritt 00001b0001
Schritt 10011b0011
Schritt 20010b0010
Schritt 30110b0110
Schritt 40100b0100
Schritt 51100b1100
Schritt 61000b1000
Schritt 71001b1001


Tabelle 6.4. Schrittmuster, 4 Schritte
Schrittbr0.0br0.1br1.0br1.1pattern
Schritt 00011b0011
Schritt 10110b0110
Schritt 21100b1100
Schritt 31001b1001


Im Vorwärtsbetrieb wird Schritt 0, 1, 2, 3 ... durchlaufen. Soll der Motor rückwärts laufen, wird die Sequenz rückwärts durchlaufen.

Die Geschwindigkeit für den Motor ist minimal 10ms je Schritt. Wenn der Motor nur wenig belastet wird, dann gehen auch 1ms je Schritt.

Für den Aufbau wird benötigt:

  • 1 Stück Halteplatte Motor
  • 1 Stück Schrittmotor 28YBJ48-5VDC (5 Volt)
  • 2 Stück Schraube/Mutter M3x10
  • 1 Stück Steckeradapter
  • 1 Stück Adapterkabel für Steckernetzteil
  • 1 Stück Steckernetzteil 5 Volt
  • 5 Kabel Stecker/Buchse.
  • 1 Adapterplatine Schrittmotor, 5 pol

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Motor von unten in die Aussparung einsetzen und von oben festschrauben mit M3-Schraube/Mutter
  • Halteplatte wieder anbringen
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Den Anschluss des Motors mit der Adapterplatine in das Steckbrett einsetzen.
  • Kabel verbinden.
  • Steckernetzteil mit dem Adapterkabel verbinden.

Kontrolle

  • Polarität Motor, rotes Kabel ist +5V
  • Steckbrücken
  • Strom einschalten.

Schaltskizze

6.2.1.5.1. Ansteuerung direkt von Scratch

Die Ansteuerung der Einzelsignale von scratch aus ist möglich, allerdings sehr langsam. Für eine Umdrehung konnten etwa 44 sec Dauer ermittelt werden (2014-08-02; nuscratch5, eine verbesserte Scratch-Version; 4 Schritt-Sequenz).

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c stepper_28BYJ-48_step
                        

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Die Signale können als Einzelwerte an den scratchClient geschickt werden oder als Binärmuster.
Einzelwerte: globale Variable 'br0.0', 'br0.1', 'br1.0', 'br1.1', Werte sind 0, 1.

Statt der Einzelwerte können auch Binärmuster geschickt werden. Dazu benutzt man die in der Tabelle angegebenen 'pattern'.
Globale Variable 'pattern', Werte z.B. 'b0011'. Das 'b' am Anfang ist deswegen notwendig, da scratch den Wert '0011' als '11' senden würde.
Einzelsignale und Pattern sollten nicht gemischt verwendet werden.

Aufgaben

Steuere den Motor so an, dass er langsam in eine Richtung läuft. Verwende das 8-Schritt-Muster. Zwischen den Schritten soll 1ms Wartezeit sein. Die Zeit für eine Umdrehung soll bestimmt werden.
Ändere das Programm so, dass die 4-Schritt-Sequenz verwendet wird. Die Zeit für eine Umdrehung soll bestimmt werden.
Ändere das Programm so, dass das Bitmuster verwendet wird. Die Zeit für eine Umdrehung soll bestimmt werden.
Vergleiche die Zeiten, die mit den verschiedenen Programmen für eine Umdrehung verwendet werden. Was ist die Ursache, warum die Zeiten unterschiedlich sind ?
Beispielprogramm
6.2.1.5.2. Ansteuerung über scratchClient

Die scratchClient-Software hat eine Funktion eingebaut, die das Ansteuern des Motors einfacher und schneller erlaubt. Schneller ist das deswegen, da die vielen Verarbeitungsschritte nicht in scratch erledigt werden, sondern im scratchClient.

Mit 1ms Wartezeit konnte eine Umdrehung in 10sec erreicht werden.

Dies ist ein Beispiel, wie scratch nicht mehr jeden einzelnen Schritt selber ansteuert, sondern eine komplexe Softwarefunktion in einem anderen Softwaremodul angesteuert wird.

Schnittstellenbeschreibung:

Event 'reset_4' setzt die interne Logik zurück und stellt die 4-Schritt-Sequenz ein.

Event 'reset_8' setzt die interne Logik zurück und stellt die 8-Schritt-Sequenz ein (default).

Es werden zwei Variablen 'speed' und 'target' benutzt.

'speed' ist die Zeit je Schritt, minimal 0.001[sec], default ist 1[sec]. Je kleiner, umso schneller.

'target' ist die anzusteuernde Position in Schritten.

Wird 'target' gesetzt, so führt die scratchClient-Funktion die notwendige Anzahl von Schritten aus, um dieses Ziel zu erreichen. Wird das Ziel erreicht, so stoppt die Bewegung; die Ausgänge werden dann deaktiviert um ein Aufheizen des Motors zu vermeiden..

Scratch muss so lange warten, bis das Ziel erreicht ist. Die Wartezeit ist abs(neue_position-alte_position)*speed*1.2; der Faktor 1.2 ist wegen der Ungenauigkeiten in den Verarbeitungszeiten notwendig.

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c stepper_28BYJ-48_module
						

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Der Motor erhält Werte von Scratch: globale Variable 'speed', 'target'.

Aufgaben

Setze speed=0.001 und target auf 1000. Wenn der Motor die Endposition erreicht hat, dann setze target auf -1000.
Setze speed=0.001 und lasse den Motor eine Umdrehung machen. Welcher Wert für 'target' ist dafür notwendig ? Miss die Zeit für diese Umdrehung. Beobachte die Leuchtdioden auf der Adapterplatine.
Steuere den Motor so an, dass er als 'Sekundenzeiger' funktioniert.
Beispielprogramm
6.2.1.5.3. Schrittmotor mit Mikroschalter

Schrittmotoren haben keinen definierten Nullpunkt. Das bedeutet, dass die einfach nach dem Einschalten dort weitermachen, wo sie gerade stehen. Für viele Anwendungen ist das nicht akzeptabel. Dann verwendet man z.B. Schalter in Kombination mit einer Nockenscheibe, um nach dem Einschalten einen bestimmten Anfangspunkt zu bestimmen.

Motor-Platte, Microschalter und Nockenscheibe.

Für den Aufbau wird benötigt:

  • 1 Stück Halteplatte Motor
  • 1 Stück Schrittmotor 20BJY-48 (5 Volt)
  • 2 Stück Schraube/Mutter M3x10
  • 1 Stück Nockenscheibe
  • 1 Stück Mikroschalter mit Rolle, Kabel
  • 2 Stück Schraube/Mutter M2,5x12
  • 1 Stück Steckeradapter
  • 1 Stück Adapterkabel für Steckernetzteil
  • 1 Stück Steckernetzteil 5 Volt
  • 5 Kabel Stecker/Buchse.
  • 1 Adapterplatine Schrittmotor, 5 pol

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Motor von unten montieren, mit M3 festschrauben.
  • Mikroschalter von oben montieren, mit M2,5 festschrauben.
  • Halteplatte wieder anbringen
  • Nockenscheibe auf Achse Motor befestigen, hier ist ein Imbus-Schraubendreher erforderlich.
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Den Anschluss des Motors mit der Federleiste in das Steckbrett einsetzen.
  • Kabel Motor, Mikroschalter verbinden.
  • Steckernetzteil mit dem Adapterkabel verbinden.

Kontrolle

  • Polarität Motor, rotes Kabel ist +5V
  • Steckbrücken
  • Mikroschalter ist an ungewöhnlicher Position, überprüfen.
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c stepper_28BYJ-48_module
                        

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Der Motor erhält Werte von Scratch: globale Variable 'speed', 'target'.

Scratch erhält Sensorwerte vom Microschalter 'microschalter' '0' (aus) oder '1' (ein, gedrückt).

Aufgabe

Erweitere das Sekundenzeiger-Beispiel aus dem vorherigen Kapitel.
Nach dem Start des Programms soll zuerst der Nullpunkt gesucht werden. Lasse den Motor dafür solange laufen, bis der Schalter ein Signal gibt.
Berücksichtige auch den Fall, dass beim Start des Programms die Nocke bereits den Schalter betätigt!

Beispielprogramm

Anmerkungen zum Beispielprogramm.

  • Das Suchen der Anfangsposition wird zuerst in grossen Schritten durchgeführt. Das ist schnell, aber auch ungenau. Wenn der Mikroschalter betätigt wird, dann wird noch einmal zurück gedreht und dann in kleinen Schritten die Position nochmals angefahren.

  • Die verschiedenen Zustände des Programmes werden schnell durchlaufen. Um nachvollziehen zu können, was das Programm macht, werden die Zustände in eine Liste geschrieben. Diese wird am Beginn gelöscht. Die Liste kann man wie alle anderen Variablen auch auf die Bühne einblenden und so die Funktion des Programmes verfolgen.

  • Die Ansteuerung der Positionen wird als Unterprogramm mit 'sende NNN an alle und warte' durchgeführt. Bei der Uhranzeige wird allerdings nicht gewartet, da nur so einigermassen genaue Wartezeiten erzielt werden können. Die Ausführungszeit eines 'Sekundenschrittes' ist mit ca 0,2sec auch immer dieselbe. Würde man warten, so wird die Wartezeit auf die Bewegungszeit des Schrittmotors addiert und damit sehr ungenau.

  • Mit den Pfeiltasten hoch, runter kann der Motor vorwärts, rückwärts bewegt werden. Das ist für den Test vorgesehen. Maschinensteuerungen haben oft eine solche manuelle Verstellfunktion.

6.2.1.6. Piepser 'buzzer'

Aktor, Ausgang, Benutzerinterface

Piepser sind kleine elektronische Einheiten, die einen Ton, z.B. für eine Warnung, ausgeben und sind meist recht laut.

Die Ansteuerung erfolgt durch An- und Ausschalten.

Die Stromrichtung ist wichtig, da die Piepser eine eigene Elektronikschaltung enthalten.

Für den Aufbau wird benötigt:

  • 1 Stück Piepser
  • 1 Stück Adapterkabel
  • 1 Stück Steckernetzteil 12 Volt

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Halteplatte wieder anbringen
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Adapterkabel in der Adapterplatine einstecken. Auf Polarität achten: schwarzes Kabel muss nach aussen !
  • Kabel des Piepsers anstecken. Rotes Kabel muss nach aussen !
  • Steckernetzteil mit dem Adapterkabel verbinden.

Kontrolle

  • Polarität Adapterkabel
  • Steckbrücken
  • Polarität Piepser, rot aussen
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_power
					

Scratch, 'Unterstützung für Netzwerksensoren einschalten' Der Piepser wird mit Sendesignalen 'power7_ON' bzw. 'power7_OFF' an- und ausgeschaltet.

6.2.1.7. Elektromagnet

Aktor, Ausgang, Bewegung

Elektromagnete sind ein einfaches Betätigungselement. Sie bestehen aus einer Spule und einem Anker. Der Anker wird durch die Spule angezogen, sobald Strom fliesst. Die Kraft ist nicht linear über den Weg. Die Ansteuerung erfolgt durch An- und Ausschalten, kann jedoch auch mit Pulsweitenmodulation erfolgen.

Die Stromrichtung bei Magneten ist in der Regel nicht wichtig.

Da Magnete relativ hohe Ströme brauchen, je nach Bauart 100mA bis mehrere Ampere, muss für diese Schaltung ein externes Netzteil benutzt werden. Die Stromversorgung aus dem RaspberryPi kann das nicht bereitstellen. Wichtig ist, dass Magnete immer eine Freilaufdiode benötigen, da die hohen Spannungen beim Abschalten sonst die Elektronik zerstören können. Der Leistungstreiber ULN2803 der Adapterplatine hat bereits eine solche Diode eingebaut.

Für den Aufbau wird benötigt:

  • 1 Stück Mini-Magnet
  • 1 Stück Halterung
  • 1 Stück Steckernetzteil 12 Volt

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Adapterkabel: Mutter am Steckverbinder abnehmen
  • Steckverbinder in die Halteplatte, rundes Loch
  • Mutter wieder anbringen
  • Halteplatte wieder anbringen

  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Adapterkabel in der Adapterplatine einstecken. Auf Polarität achten: schwarzes Kabel muss nach aussen !
  • Elektromagnet anschliessen.
  • Steckernetzteil mit dem Adapterkabel verbinden.

Kontrolle

  • Polarität Adapterkabel, schwarz aussen
  • Steckbrücken

  • Strom einschalten.

Schaltskizze

Start scratchClient-Software

cd ~/scratchClient
sudo python3 src/scratchClient.py -c ikg_power
					

Scratch, 'Unterstützung für Netzwerksensoren einschalten'

Der Magnet wird mit Sendesignalen 'power7_ON' bzw. 'power7_OFF' an- und ausgeschaltet.