Adapterplatine IKG

Handbuch, Experimente

Gerhard Hepp

Versionsgeschichte

1. Einleitung
1.1. Zweck
1.2. Eigenschaften
2. GPIO RaspberryPi
3. IKG-Adapterplatine: Funktionsweise
3.1. IKG-Adapterplatine: Ausgaberichtung 'output'.
3.2. IKG-Adapterplatine: Ausgaberichtung 'output', grössere Leistung
3.3. IKG-Adapterplatine: Eingaberichtung 'input'.
3.4. IKG-Adapterplatine: Taster
3.5. IKG-Adapterplatine: Komplett
3.6. Schaltbrücken, Übersicht
4. Bauelemente in der 'raspberry pi experimentierbox'
5. Interne Komponenten LED, Taster
5.1. Leuchtdioden, LED
5.2. Taster, Buttons
6. Anschluss von externen Komponenten
6.1. Sensoren
6.1.1. Sensoren digital
6.1.1.1. Schalter
6.1.1.2. Gabellichtschranken
6.1.1.3. Drehencoder, Gabellichtschranke
6.1.2. Sensoren analog
6.1.2.1. AD-Wandler
6.1.2.2. Potentiometer
6.1.2.3. IR-Abstandsensor
6.1.2.4. Temperatursensor TMP36
6.1.2.4.1. Temperatur, Schaltregler
6.1.2.5. Lichtempfindlicher Widerstand LDR
6.2. Aktoren
6.2.1. Aktoren digital
6.2.1.1. LED, Leuchtdiode
6.2.1.1.1. Helligkeitssteuerung mit PWM
6.2.1.1.2. Ansteuerung für An- und Ausschalten
6.2.1.1.3. Ansteuerung für Helligkeitssteuerung
6.2.1.2. 7-Segment-Leuchtdioden
6.2.1.3. RGB-LED Mehrfarbige Leuchtdioden
6.2.1.4. Servo, Servomotor, Fernsteuerservo
6.2.1.5. Schrittmotor
6.2.1.5.1. Ansteuerung direkt von Scratch
6.2.1.5.2. Ansteuerung über scratchClient
6.2.1.5.3. Schrittmotor mit Mikroschalter
6.2.1.6. Piepser 'buzzer'
6.2.1.7. Elektromagnet
7. Referenzen
8. Farbkennzeichnung von Widerständen
Glossar

Kapitel 1. Einleitung

In diesem Dokument wird die in der Raspberrypi-Experimentierbox vorhandene Adapterplatine beschrieben.

Die Platine schützt den RaspberryPi bei Experimenten.

Die Platine erweitert den RaspberryPi um AD-Wandler, Leistungstreiber, Servoanschlüsse und ermöglicht mehr Experimente.

Es wird der Anschluss externer Sensoren und Aktoren beschrieben, jeweils mit Aufgaben und Anleitungen für Scratch.

1.1. Zweck

Anschluss von Peripherie an RaspberryPi und Schutz der RaspberryPi GPIO vor Kurzschlüssen.

Braucht man diese Platine auch für eigene Experimente? Diese Platine ist für eigene Experimente nicht erforderlich. Alle Aufgaben können auch ohne diese Platine mit z.B. einem Steckbrett erledigt werden. Die Beispiele mit analogen Sensoren werden lediglich etwas komplizierter.

Mit der Platine ist der Anschluss von Tastern, Relais oder anderen Elementen schneller zu erledigen.

Die Platine wurde in Anlehnung an das 'Gertboard' entworfen /gertboard/. Das 'Gertboard' bietet sehr viel Flexibilität, die für den Einsatz am IKG nicht benötigt wird.

Die IKG-Adapterplatine erlaubt weniger Konfiguration durch Steckbrücken und reduziert dadurch Fehlerquellen; die Anzahl der IO-Signale ist geringer und der Atmel 328-Prozessor und der Motorcontroller wurden weggelassen.

1.2. Eigenschaften

EA-Signale, es werden 8 GPIO gepuffert herausgeführt.

Die EA-Signale können über Steckbrücken 'Jumper' als Eingang 'E' oder Ausgang 'A' eingestellt werden.

E-Signale sind mit 10k Pullup-Widerstand versehen. So können einfach Taster gegen Masse angeschlossen werden.

LED auf der Platine für jedes E-Signal.

Vier der Eingänge können zum Anschluss von Gabellichtschranken verwendet werden. Vorwiderstände zum Betrieb der Sende-LED sind auf der Platine vorhanden.

Drei Taster auf der Platine, zwei liegen parallel zu EA, einer an einem sonst nicht verwendeten GPIO.

Zusätzlich kann jedes A-Signal als Schaltausgang herausgeführt werden mit bis zu 500 mA, 30V; benötigt dann allerdings eine externe Stromversorgung.

Zwei der Ausgänge können als Servo-Ausgänge benutzt werden; eine externe Stromversorgung muss dazu angeschlossen werden.

AD-Wandler mit 2 Eingängen für 0.. 3.3V. Der Wandler wird über SPI.0 angesteuert.

Anschluss von 2 IR-Abstandsensoren.

DA-Wandler Auf einem Teil der Platinen ist ein DA-Wandler vorgesehen.

Stromversorgung

Stromversorgung der Platine über eigenen Spannungswandler aus der 5V-Versorgung des PI. Diese Verbindung kann aufgetrennt werden, um Strom zu messen oder falls Peripherie mehr Strom braucht.

Für die Leistungsausgänge ist ein externes Netzteil erforderlich.

Kapitel 2. GPIO RaspberryPi

GPIO sind i.d.R aus dem frei verfügbaren und nicht doppelt belegten Bereich des Prozessors des RaspberryPi. Die SPI-Signale und die I2C-Signale werden freigehalten. SPI wird auf der Adapterplatine für die Anbindung der AD-Wandler und DA-Wandler eingesetzt.

GPIO15 wird verwendet, deshalb müssen die RX/TX-Leitungen freigeschaltet werden (Konsole entfernen)

SPI 0 bedient den AD-Wandler.

SPI 1 wird an Verbinder 'SPI1' herausgeführt und wird optional für den DAC verwendet.

I2C wird am Verbinder I2C herausgeführt.

Tabelle 2.1. IO-Signale, Sonderfunktionen
Raspberry GPIOIO-KanalSonderfunktion
GPIO25IO.0 Taster S0
GPIO24 IO.1 Taster S1
GPIO23 IO.2 Servo0
GPIO18IO.3Servo1
GPIO22IO.4Lichtschranke 4
GPIO27 IO.5Lichtschranke 5
GPIO17IO.6Lichtschranke 6
GPIO15 IO.7Lichtschranke 7
   
GPIO14-Taster S8
GPIO4-LED 9


Kapitel 3. IKG-Adapterplatine: Funktionsweise

Das Schaltbild der IO-Kanäle ist wegen der verschiedenen Funktionen auf den ersten Blick unübersichtlich.

Deshalb hier eine schrittweise Darstellung der Funktionen und der jeweils dazu nötigen Elemente.

3.1. IKG-Adapterplatine: Ausgaberichtung 'output'.

Der GPIO-Ausgang ist auf Ausgabe 'output' geschaltet und die Signale sollen über die Platine ausgegeben werden.

Die Steckbrücke 'out' muss hier geschlossen sein, damit der Ausgang des Line-Drivers am IO-Pin ankommt.

3.2. IKG-Adapterplatine: Ausgaberichtung 'output', grössere Leistung

Manchmal reicht der Strom oder die Spannung des Line Drivers nicht aus. Der Baustein 74HC244 kann hier maximal 3.3V bzw. 35mA liefern, was für Lampen, Relais, Motoren u.ä. In der Regel nicht reicht.

Auf der Platine ist eine stärkerer Baustein ULN2803 vorhanden, der bis zu 30V und 500mA schalten kann.

Das Schaltbild des Bausteines ULN2803 ist in der Schemazeichnung nur angedeutet.

Der Baustein wird über 'out2' aktiviert. Wird dieser Baustein verwendet, muss eine externe Stromversorgung an die Adapterplatine angeschlossen sein.

3.3. IKG-Adapterplatine: Eingaberichtung 'input'.

Der GPIO-Pin ist auf Eingabe 'input' geschaltet.

Der Widerstand 10kOhm am IO-Pin verhindert, dass bei fehlender Beschaltung des Eingangs bereits geringe statische Aufladungen zu einem unkontrollierten Schalten des Line-Drivers führt.

Der Widerstand 'zieht' den Eingang auf 3.3V, deshalb auch der englische Begriff 'pullup'.

Der Widerstand 1kOhm zwischen Ausgang des Line-Drivers und dem GPIO-Pin verhindert eine Beschädigung des GPIO-Pins des Prozessors, falls dieser versehentlich auf Ausgabe geschaltet ist.

In den Eingabezweig ist zusätzlich eine Leuchtdiode LED eingebaut, die den Schaltzustand des IO-Pins angibt: 0Volt, low: LED aus; 3.3V, high: LED ein. Diese Leuchtdiode ist für die Eingaberichtung immer aktiv.

Leuchtdioden benötigen (fast) immer einen Vorwiderstand, hier 1kOhm.

3.4. IKG-Adapterplatine: Taster

Auf der Platine befinden sich drei Taster. Zwei der Taster sind in den 8 Kanälen integriert. Der dritte Schalter ist unabhängig davon an einen nicht benutzte GPIO-Pin angeschlossen.

Werden die Taster verwendet, so muss der betreffende GPIO auf Eingang geschaltet sein. Für diese GPIO muss der interne Pullup aktiviert sein.

Der Vorwiderstand sorgt dafür, dass der GPIO-Pin nicht beschädigt wird falls dieser doch einmal auf Ausgabe geschaltet ist.

3.5. IKG-Adapterplatine: Komplett

Zusammengefasst ergibt sich das folgende Schaltbild.

Die jeweils benötigte Funktion wird über Schaltbrücken eingestellt.

3.6. Schaltbrücken, Übersicht

Die drei Schaltbrücken eines EA-Kanals dürfen nur in bestimmten Kombinationen verwendet werden.

Tabelle 3.1. IO-Signale, Steckbrücken
ZweckGPIOINOUTOUT2LEDAnmerkung
Ausgabe LogiksignaleAusgabe - ja - aktiv
Ausgabe Leistung Ausgabe - - ja -  
Ausgabe Leistung Ausgabe - ja ja aktiv An IO darf nichts angeschlossen sein.
Eingabe Eingabe ja - - aktiv Das Signal am IO-Eingang wird an den RaspberryPi weitergegeben.
Taster S0, S1 Eingabe, Pullup - - - -  
Taster S0, S1 Eingabe, Pullup - ja - aktiv Am Ausgang IO wird der Zustand des Tasters ausgegeben.


Steckbrücken dürfen nur auf der Leiste IN, OUT und OUT2 angebracht werden. Das folgende Bild zeigt die zusammengehörenden Positionen für IO.0.

Die blauen Rechtecke markieren die Positionen für Steckbrücken, wenn den ersten IO, also IO.0, behandelt wird. Der zweite IO, also IO.1, liegt jeweils rechts daneben, ganz rechts ist dann IO.7.

Steckbrücken JP1

Erlaubt die Verwendung von UV-Abstandsensoren.

Verwendung des AD-Wandlers über AD0, AD1: keine Brücke gesetzt.

Verwendung des AD-Wandlers über UV0, UV1: Brücke gesetzt.

Steckbrücken JP2 Schaltet die Stromversorgung für die gesamte Platine ein. Hier muss immer eine Brücke quer eingesetzt werden.

Steckbrücken JP3 Servo-Signale, nur benötigt wenn ein Servo angeschlossen ist. Schaltet pullup-Widerstände zu den Power-Ausgängen PWR.2 und PWR.3 dazu. Das erlaubt die Verwendung dieser Ausgänge als Servo-Kontrollsignale.

Kapitel 4. Bauelemente in der 'raspberry pi experimentierbox'

Hier die Namen einiger Bauelemente, die in den folgenden Beschreibungen immer wieder vorkommen.

Die Abdeckplatte schützt die Elektronik.

Die Halteplatte gibt es in mehreren Ausführungen

  • mit eckiger Aussparung für Servo, IR Abstandsensor, Kippschalter

  • abgerundeter Aussparung für Stecker.

  • für Schrittmotor.

:

Steckbrücken oder 'jumper' sind die kleinen, schwarzen Brücken für die Adapterplatine. Um diese auf den Darstellungen der Adapterplatine besser sehen zu können sind die weiss dargestellt.

Kapitel 5. Interne Komponenten LED, Taster

5.1. Leuchtdioden, LED

Aktoren, Bedienelemente, digital

Die internen LED 0..7 sind mit den IO-Signalen gekoppelt. Die LED8 hat eine Sonderrolle, da diese separat von einem ansonsten unbenutzten GPIO bedient wird. Die LED8 wird von der scratchClient-Software zur Anzeige des Verbindungsstatus mit scratch verwendet. Um alle LED zu benutzen, müssen die out-Brücken geschlossen werden.

Aufbauhinweise:

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

Kontrolle

  • Steckbrücken
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_led

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch Sendesignale: 'led0_ON', 'led0_OFF', 'led1_ON', 'led1_OFF', .. 'led7_ON', 'led7_OFF';
Scratch empfängt: 's8_pressed', 's8_released'

Aufgaben

Wenn die Taste S8 gedrückt wird, dann schalte die LED0 ein, wenn die Taste wieder losgelassen wird, dann schalte diese LED wieder aus.

Wenn die Taste S8 gedrückt wird, dann schalte die LED0 ein. Wenn die Taste nochmals gedrückt wird, dann wieder aus.
Das Programm muss unterschiedlich reagieren, je nachdem ob die LED bereits angeschaltet bzw. ausgeschaltet ist. Hier ist eine Zustandsvariable zu benutzen.

Für Experten:
Baue eine Treppenhausautomatlichtschalterzeitschaltuhr. Wenn die Taste S8 gedrückt wird, dann soll die LED für 10 sec angeschaltet werden, dann ausgehen. Wird die Taste gedrückt, während die LED noch an ist, dann soll die Zeit wieder bei 10 sec beginnen.

Beispiellösung An-Ausschalten
Das Beispielprogramm muss - wenn die Taste gedrückt wird - einmal die LED anschalten und das nächste mal die LED ausschalten. Damit das funktioniert, muss sich das Programm 'merken', also eine Variable verwenden, in welchen Zustand die LED gerade ist. Die Zustandsvariable 'state' ('state', englisch 'zustand') wird mit "an" und "aus" belegt.
Beim Start des Programmes wird die LED ausgeschaltet und der Zustand auf "aus" gesetzt.
Der Vollständigkeit halber ein UML Zustandsdiagramm des Programmes.

Zustandsdiagramm An-Ausschalten.

Treppenhausautomaten in einem Schaltkasten. Der linke Automat ist offensichtlich kaputt gegangen und es wurde einfach ein neuer Automat daneben eingesetzt.

Beispiellösung Treppenhausautomat

5.2. Taster, Buttons

Sensoren, Bedienelemente, digital

Die internen Taster S0, S1 liegen im IO-Bereich direkt an den GPIO-Pins des RaspberryPi und brauchen keine Schaltbrücken an den IN, OUT, OUT2-Positionen.

Der Taster S8 hat eine Sonderrolle, da dieser an einem sonst nicht verwendeten GPIO-Pin liegt.

Aufbauhinweise:

  • Strom abschalten
  • Abdeckplatte abnehmen
  • Die Steckbrücken entfernen.
  • Abdeckplatte anbringen.

Kontrolle

  • Steckbrücken
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_button_intern

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch erhält die Signale: 's0_pressed', 's1_pressed', 's8_pressed', wenn die Taste gedrückt wird. Beim Loslassen dann 's0_released', 's1_released', 's8_released'

[Anmerkung]
Die Anzeige 'Bühne' in scratch wird nicht sehr schnell aktualisiert. Werden die Taster schneller als ca zweimal in der Sekunde gedrückt, so wird das u.U. nicht mehr dargestellt.

Kapitel 6. Anschluss von externen Komponenten

Eine Einteilung von externen Komponenten kann in die Kategorien Sensor/Aktor und analog/digital erfolgen.

Sensoren sind 'Fühler', die etwas aus der Außenwelt an den Rechner liefern. Schalter liefern an/aus, Potentiometer liefern einen Drehwinkel, Temperatursensoren liefern ein Temperatursignal. Der Rechner braucht Eingänge für den Anschluss.

Aktoren sind 'Beweger' oder 'Anzeiger'. Motoren, Elektromagnete bewegen etwas, Leuchtdioden zeigen Signale an, Summer geben Alarm. Der Rechner braucht Ausgänge, um diese anzusteuern.

Digitale Sensoren kennen nur die Werte an/aus. Beispiele sind Schalter, oder Lichtschranken (unterbrochen, nicht unterbrochen).

Analoge Sensoren verarbeiten kontinuierliche Werte, wie z.B. eine Temperaturmessung oder einen Abstandsmesser.

Ganz eindeutig ist diese Einteilung nicht immer: es gibt auch Mischformen wie z.B. einen Schalter mit integrierter Signalleuchte. Oder einen Temperatursensor (analog), der wenn es zu warm wird einen Alarm schaltet (digital).

6.1. Sensoren

6.1.1. Sensoren digital

6.1.1.1. Schalter

Sensor, Eingang, digital, Bedienelement

Schalter gibt es in verschiedenen Ausführungen.

Beispiele sind Taster (Klingelknöpfe), die nur ein Signal liefern wenn sie gedrückt sind.
Schalter bleiben in der Stellung, in die sie gesetzt werden. Beispiele sind Lichtschalter oder Motor An / Aus.

Sonderformen für Schalter sind

  • Mikroschalter mit Rollen, die von mechanischen Elementen wie Hebeln oder Schaltscheiben betätigt werden.
  • Reedschalter, die von Magneten betätigt werden.
  • Neigungsschalter, die geschlossen/ geöffnet werden, wenn der Schalter geneigt ist.

Anschluss an die IO-Signale der Adapterplatine. Diese müssen als Eingang konfiguriert sein.

Für den Aufbau wird benötigt

  • 1 Stück Neigungsschalter
  • 1 Stück Taster
  • 1 Stück Kippschalter mit Anschlusskabel
  • 1 Stück Reedkontakt; dieser ist auf einer Platine montiert um das Glasgehäuse zu schützen.
  • 3 Stück Schaltdraht schwarz 6cm beidseitig abisoliert
  • 4 Steckkabel Buchse-Stecker 1 schwarz, 4 sonst.

Aufbauhinweise:

  • Strom abschalten
  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Teile auf dem Steckbrett anordnen und verbinden.
  • Den Kippschalter von unten in die Halteplatte einsetzen.
  • Der Reedkontakt hat ein Glasgehäuse, vorsichtig behandeln ! Beim Einsetzen der Platine in das Steckbrett nicht auf das Glasgehäuse drücken, sondern die Platine an den Seiten anfassen.

Kontrolle

  • Steckbrücken

Wenn alles fertig ist

  • Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_schalter

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch erhält die Sensorwerte: 's0', 's1', 's2', 's3'. Taster nicht gedrückt: '0'; gedrückt: '1'

Die scratchClient-Software steuert, wie die Signale zu Scratch übermittelt werden. Bei Schaltern wird in der Regel die Werte '0', '1' benutzt, für Buttons die Signale 'pressed' oder 'released'. In diesem Beispiel wird auch für den Taster dasselbe Verhalten wie ein Schalter benutzt.

Aufgabe

Schreibe ein Programm in Scratch, das die Schalterpositionen abfragt.

Idee: Alarmanlage für ein Zimmer (Simulation).

Zeichnet ein Zimmer mit Tür, Lampe, Alarmanlage.

Mit dem Kippschalter soll das Licht an- und ausgeschaltet werden.

Der Reedkontakt (soll versteckt in der Tür angebracht sein) soll den Alarm anschalten.

Die Alarmanlage soll ausgeschaltet werden können, wenn der Taster dreimal gedrückt wird (das ist der Geheimcode hier).

Wie wird die Alarmanlage wieder eingeschaltet ?

Was könnte mit dem Neigungsschalter angesteuert werden ?

Ü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.

[Anmerkung]
Hinweis: Nicht zu viel Zeit für das Zeichnen des Zimmers verwenden. Es gibt in den fertigen Hintergründen ein 'indoor'-Zimmer 'room3', was ganz gut verwendet werden kann.

6.1.1.2. Gabellichtschranken

Sensor. Eingang, digital, optisch

Die Anschlüsse GL4..GL7 sind für Gabellichtschranken vorgesehen.

Belegung der Anschlüsse

  • Pin 1, Masse
  • Pin 2, auf der Platine mit IO4..IO7 verbunden. Pullup-Widerstand 10kOhm
  • Pin 3, Sendediode Anode. Auf der Platine mit 390 Ohm gegen 3V3 angeschlossen.

Für den Aufbau wird benötigt

  • 1 Stück Gabellichtschranke TCST1103
  • 1 Stück Schaltdraht schwarz 6cm beidseitig abisoliert
  • 2 Stück Schaltdraht schwarz 3cm beidseitig abisoliert
  • 3 Steckkabel Buchse-Stecker 1 schwarz, 2 sonst.

Aufbauhinweise:

  • Strom abschalten

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

  • Teile auf dem Steckbrett anordnen und verbinden. Bei der Gabellichtschranke auf die Beschriftung achten,

Kontrolle

  • Steckbrücken
  • Lichtschranke 'richtig herum'

Wenn alles fertig ist

  • -Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_pir

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch erhält die Sensorwerte: 'gl4': offen: '1'; unterbrochen: '0'

[Anmerkung]

Flankenerkennung. Manchmal möchte man erkennen, wann sich ein Signal ändert.

Das folgende Programm erledigt so eine Aufgabe. Eine Variable merkt sich den 'alten' Stand wert_vorher. Wenn der Wert <> (ungleich) dem alten Wert ist, dann hat sich der Wert geändert.

setze wert_vorher = wert
wiederhole
    wenn wert <> wert_vorher
        sende 'wert hat sich geaendert'
        setze wert_vorher = wert
 					

Aufgabe

Schreibe ein Programm in Scratch für einen Verkaufsautomaten. Da in dieser Stunde kein Automat komplett aufgebaut werden kann, soll der Automat in Scratch simuliert werden.
Die Lichtschranke soll die eingeworfenen Münzen in dem Automaten an Scratch melden. Wenn eine bestimmte Anzahl Münzen eingeworfen wurden, dann soll ein Gegenstand ausgegeben werden,. Objekte:
  • A, Automat, selber malen. Hier nicht viel Zeit verwenden !! Sonst wird es am Schluss zu knapp.
  • B, was zu verkaufen, Bananen oder Bälle oder Bonbons oder Bauklötze
Dann schrittweise:
  1. Zeige das Sensorsignal auf der Bühne an und überprüfe, ob die Lichtschranke funktioniert
  2. Wenn sich das Sensorsignal ändert soll ein Zähler hochgezählt werden. Zeige den Zähler auf der Bühne.
  3. Und schliesslich soll, wenn der Zähler 'drei' erreicht, die Ausgabe erfolgen: Mache das B-Objekt im Ausgabeschacht sichtbar und bewege das nach kurzer Zeit weg dort.
  4. Probiert das Programm mehrmals hintereinander aus.
Ü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: Benutze die Buttons s0, s1 auf der Adapterplatine, um ein Zurücksetzen des Verkaufs zu starten. Die Buttons werden als Signale 's0_pressed' oder 's1_pressed' an Scratch gegeben.
Der Automat könnte noch ein wenig rumpeln (Geräusche) oder rappeln (Bewegungen) wenn die Ausgabe erfolgt.

6.1.1.3. Drehencoder, Gabellichtschranke

Sensor, Eingang, digital, optisch

Die Anschlüsse GL4..GL7 sind für Gabellichtschranken vorgesehen.

  • Pin 1, Masse
  • Pin 2, auf der Platine mit IO4..IO7 verbunden. Pullup-Widerstand 10kOhm
  • Pin 3, Sendediode Anode. Auf der Platine mit 390 Ohm gegen 3V3 angeschlossen.

Zwei Gabellichtschranken werden zu einem Drehencoder kombiniert.

Ein 'Zackenrad' unterbricht die beiden Lichtschranken. Der zeitliche Verlauf der Signale wird zur Ermittlung des Drehwinkels verwendet.

[Anmerkung]
Diese Anordnung liefert keine Absolutwerte. Das bedeutet, dass wenn man die Apparatur ausschaltet, den Drehwinkel verändert und wieder einschaltet, dann kann der Rechner den veränderten Winkel nicht feststellen. Es gibt Vorrichtungen mit mehr Lichtschranken und binärer Codierung, die absolut messen können.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_drehencoder

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch Werte sind 'position_A' für Anschlüsse an gl4, gl5 und 'position_B' an gl6, gl7. Es werden Zahlenwerte gemeldet, 30° Drehwinkel entsprechen einer Veränderung um 1 rechtsdrehend bzw. -1 linksdrehend.

Beispielprogramm: drehencoder_sprite_drehen.sb

6.1.2. Sensoren analog

Analoge Sensoren liefern eine kontinuierliche Spannung. Jeder Spannungswert wird einer bestimmten Bedeutung 'Zahl' zugeordnet. Analoge Sensoren können über einen AD-Wandler angeschlossen werden.

Es gibt aber auch eine Vielzahl von analogen Sensoren, die ihre Ergebnisse im Sensor bereits in digitale Werte umwandeln und dann digital an den Prozessor melden.

6.1.2.1. AD-Wandler

Analog-Digital-Umwandler werden benutzt, wenn ein Spannungssignal in ein für den Rechner verständliches Digitalsignal umgewandelt werden soll.

Viele analoge Sensoren liefern Spannungssignale.

Eingangssignale sind 0..3.3V. Der eingesetzte Schaltkreis kann zwei Eingänge verarbeiten. Auf der Rechnerseite ist der AD-Wandler über SPI.0 angeschlossen.

Der AD-Wandler liefert Zahlenwerte von 0..1023 für 0..3,3V Eingangssignal. Für die Temperaturmessung werden Zahlenwerte 0..4095 verwendet.

6.1.2.2. Potentiometer

Sensor, Drehwinkel, analog, Bedienelement

Potentiometer können direkt an den AD-Wandler angeschlossen werden. Der dreipolige Anschluss der AD-Wandler stellt Masse, Versorgungsspannung und einen Eingang zur Verfügung.

Anschlüsse

Pin 1Masse
Pin 2Eingang
Pin 33,3V

Für den Aufbau wird benötigt:

  • 1 Stück Potentiometer 2,2 kOhm oder 10kOhm
  • 1 Stück Drehknopf

[Anmerkung]
Für den Versuchsaufbau wird ein Potentiometer mit angelötetem Kabel verwendet. Der Stecker kann direkt an die Adapterplatine angeschlossen werden.

Aufbauhinweise:

  • Strom abschalten
  • Halteplatte abnehmen
  • Potentiometer, Mutter abnehmen
  • Potentiometer von unten in Halteplatte einstecken (ovales Loch)
  • Potentiometer mit Mutter festschrauben
  • Halteplatte wieder anbringen

  • Abdeckplatte abnehmen
  • Die Steckbrücken einsetzen wie in der Zeichnung gezeigt.
  • Abdeckplatte anbringen.
  • Kabel des Potentiometers an Adapterplatine einstecken. Die Polarität ist hier nicht wichtig.
  • Drehknopf auf Achse des Potentiometers anbringen. Mit Schraube fixieren.

Kontrolle

  • Anschluss an richtigem Steckanschluss.
  • Steckbrücken

  • Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_adc

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch erhält die Sensorwerte: 'adcA', Werte von 0..1023.

Aufgabe

Spielidee: Die Katze wird durch Potentiometer bewegt und muss fliegenden Quadraten ausweichen.

Verkleinere die Katze ein wenig, und lass diese am linken Rand der Bühne sich auf- und abbewegen. Die y-Position wird über das Potentiometer gesteuert. Zur Berechnung des y-Wertes wird die Skalierung verwendet.

Dann lass von rechts kleine Quadrate zufällig durch das Bild fliegen. Die Höhe soll zufällig sein, und die Wartezeit auch zufällig. Zwei Gegenstände sind ausreichend. Die Katze muss diesen Gegenständen ausweichen.

Wenn die Katze eines der Rechtecke berührt, ist das Spiel beendet. Wenn die Quadrate alle dieselbe Farbe haben, dann wird diese Prüfung einfach.

Ü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: Als Spieler ist man umso besser, je länger die Katze nicht getroffen wird. Ein Zeitzähler kann die abgelaufene Zeit anzeigen.

6.1.2.3. IR-Abstandsensor

Sensor, analog, optisch, infrarot

An dem AD-Wandler kann ein IR-Abstandsensor angeschlossen werden. Wegen der verwendeten höheren Betriebsspannungen und dem dadurch nötigen Schutz des empfindlichen AD-Wandlers sind eigene Anschlüsse IR0, IR1 vorbereitet.

Der Sensor ist auch ein Beispiel für einen Sensor, wo zwischen zu messender Grösse (Abstand) und der Spannung kein linearer Zusammenhang besteht.

Anschlüsse
Pin 1: Masse
Pin 2: Eingang, 0..3.3V mit Schutzschaltung
Pin 3: 5V

[Warnung]

Vorsicht

Pin 3 von IR0 bzw. IR1 nie mit anderen Anschlüssen der Platine verbinden.

Die auf der Platine vorhandene Schutzschaltung begrenzt Eingangsspannungen größer 3.3V auf intern max. 3.3V+0.4V, so dass der AD-Wandler innerhalb der Spezifikation betrieben wird.

Falls die Eingangsspannung grösser als 3.3V wird, so leitet die Diode und begrenzt die Spannung. Schottky-Dioden sind spezielle Dioden mit kleiner Durchlassspannung.

Der Widerstand begrenzt den Strom und damit die Belastung des angeschlossenen Gerätes.

Der Sensor Sharp GP2Y0A21YK ist ein 'wide-angle distance measuring sensor', die 'Detection Area Diameter @ 80 cm: 12 cm' wird also bei der maximalen Messweite relativ gross.

Die Spannung, die der Sensor liefert, ist von der Entfernung abhängig, aber nicht linear.

Kennlinie aus Sharp GP2Y0A21YK

Im Bereich kleiner 6cm nimmt die Spannung ab. Dieser Bereich sollte nicht verwendet werden um eindeutige Werte zu erhalten.

In der scratchClient-Software werden die Werte des AD-Wandlers in Entfernungen [mm] umgerechnet.

Das Infrarotlicht des Sensors ist nicht sichtbar. Mit einer elektronischen Kamera, z.B. in einem Smartphone, kann man das Licht sehen.

Für den Aufbau wird benötigt

Aufbauhinweise:

  • Strom abschalten

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

  • Sensor auf der Platte montieren.

Kontrolle

  • Steckbrücken
  • Sensor richtig herum (schwarzes Kabel nach aussen)

Wenn alles fertig ist

  • Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_irdistance

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Scratch erhält die Sensorwerte: 'distanceA', Werte von 800 bis 60 [mm]. Diese Werte sind aus den Messwerten des Sensors berechnet.

Aufgabe

Spielidee: „Schepperbox“, ein Musikinstrument.

„Spiele Note“ in einer Schleife. Die Tonhöhe wird von den Werten aus dem Sensor bestimmt. Die Werte von ca 100 bis 800 sollen umgerechnet werden, so dass immer ein hörbarer Ton ausgegeben wird. Die Berechnung kann mit der Skalierung erfolgen. Wenn der Maximalwert erhalten wird, also der Sensor 'offen' ist, dann soll der Ton gestoppt werden. Auf der Bühne soll eine Skala gezeichnet werden; der aktuelle Ton soll mit einem Pfeil anzeigt werden.

Ü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.
Benutzt eine Digitalkamera, um den Lichtstrahl zu beobachten.
Zusatzaufgabe: Spielt 'alle meine Entchen' mit dem Instrument.
Zusatzaufgabe, kompliziert: Zeichnet die gespielten Töne in Notenschrift.

6.1.2.4. Temperatursensor TMP36

Der Temperatursensor TMP36 gibt eine Spannung proportional zur Temperatur aus.

Hier ein Auszug aus dem Datenblatt /analog devices, tmp36/

Spannung des Sensors in Abhängigkeit der Temperatur.

In dem Diagramm sind drei ähnliche Sensoren aufgeführt.

Um die Temperatur zu ermitteln werden mehrere Berechnungen benötigt. In den Aufgaben ist eine Schritt-für-Schritt Anleitung enthalten.

Die Spannung U wird mit dem ADC-Wandler auf der Adapterplatine gemessen. Dafür wird dieser in der Betriebsart '12 Bit' betrieben, also vier mal genauer als z.B. für die Potentiometer.
In dieser Auflösung liefert der AD-Wandler Messwerte im Bereich [0..4095].

Berechnung 1: aus dem Wert des AD-Konverters wird die Spannung berechnet.

Eingabe: Messwert_ADC
Ergebnis: U, Spannung am TMP36

U = Messwert_ADC * 3.3 / 4096

Berechnung 2: Mit der Spannung des Sensors kann man dann die Temperatur bestimmen.

Eingabe: U, Spannung am TMP36 aus Berechnung 1.
Ergebnis: T, Temperatur

T = ( U - 0,5 ) * 100

Die Anschlüsse des TMP36. Das Gehäuse ist an einer Seite abgeflacht.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_adc_tmp36

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Die Messwerte werden mit dem Sensorwert 'adcA' übermittelt.

Aufgaben, der Reihe nach ausführen.

Den Messwert 'adcA' auf der Bühne anzeigen.

Den Sensor etwas erwärmen (von Hand oder mit einem Fön). Der Wert 'adcA' sollte sich vergrössern und wenn der Sensor abkühlt dann wieder auf den vorherigen Wert zurückgehen.

Dieser Schritt ist eine erste Funktionskontrolle, ob die Anschlüsse funktionieren.

Die Spannung am Sensor aus dem adcA-Wert berechnen. Das Ergebnis soll in einer Variable 'U' gespeichert werden. Diese ist lokal. Die Variable auf der Bühne einblenden.

Es wird die Berechnungsformel 1 verwendet.

Bei Raumtemperatur sollte 0,7 ermittelt werden. Genauer gesagt sind das 0,7 Volt. 'Volt' ist die Masseinheit für elektrische Spannung.

Wieder den Sensor erwärmen. Der Spannungswert sollte sich verändern.

Der Wert wird nur einmal berechnet ? Dann eine Schleife verwenden !

Berechnung 2: aus dem berechneten Spannungswert 'U' aus dem vorherigen Schritt die Temperatur berechnen.

Das Ergebnis wieder in eine Variable, lokal 'T' abspeichern und auf der Bühne anzeigen.

Bei Raumtemperatur sollte etwa 20 ermittelt werden. Genauer gesagt sind das 20 °C, Grad Celsius.

Wieder den Sensor erwärmen. Die Temperatur sollte sich verändern.

Anzeige der Temperatur auf der Bühne. Hier ein Beispiel, wie es aussehen soll . Das Video zeigt einen kleinen Punkt, der sich von links nach rechts bewegt und eine Linie zeichnet. Die y-Werte zeigen die Temperatur an.

Zeichne ein kleines blaues Rechteck. Bewege es zuerst langsam von links nach rechts über die Bühne. Der y-Wert wird mit der Temperatur belegt. Zur Berechnung des y-Wertes wird die Skalierung verwendet.
Benutze die 'Stempelfunktion' oder den 'Stift', um das Rechteck auf die Bühne zu zeichnen.

Ein sinnvoller Bereich für die Anzeige der Temperatur von 0 bis 50°C, auf der Bühne z.B. -100 bis +100.

Zeichne Skalen-Linien bei 10, 20, 30, 40 Grad auf die Bühne.

Eine Schritt-für-Schritt-Anleitung ist hier im angehängten Dokument zu finden.

6.1.2.4.1. Temperatur, Schaltregler

Der Versuch ist eine Erweiterung der Temperaturmessung aus dem vorangehenden Kapitel.

Temperaturregler sorgen an vielen Stellen dafür, dass Temperaturen einen bestimmten Wert einhalten.

  • Kühlschrank
  • Kochplatte
  • Raumthermostat
  • Lötkolben

Blockschaltbild Regelkreis

Regler funktionieren so, dass die Ist-Grösse (oder Regelgrösse, hier die Temperatur) laufend mit der Sollgrösse (oder Führgrösse, die Ziel-Temperatur) verglichen werden. Der Regler ermittelt aus der Differenz dieser beiden Werte (Regelabweichung) eine Stellgrösse, welche die Regelstrecke beeinflusst. Die Stellgrösse ist für den Zweipunkregler ist 'Heizung an' bzw. 'Heizung aus'.
Durch die fortlaufende Messung der Temperatur und Rückkopplung kann eine Sollgrösse weitestgehend unabhängig von den Umgebungsbedingungen eingehalten werden. In anderen Worten: der Regelkreis sorgt dafür, dass die Regelabweichung minimal wird.
Regler können natürlich nicht nur Temperaturen regeln. Füllstände, Positionen, Geschwindigkeiten, chemische Eigenschaften in Reaktoren sind weitere Beispiele.

Ein Schaltregler funktioniert so, dass die Temperatur laufend gemessen wird und wenn diese kleiner als der (Sollwert-1 Grad) ist, dann wird die Heizung eingeschaltet. Wird der Sollwert erreicht, dann wird die Temperatur ausgeschaltet. Solche Schaltregler sind einfach zu konstruieren; die in Heizlüftern oder Kühlschränken verbauten Bimetallschalter sind Zweipunktregler. Der Temperaturunterschied zwischen Ein- und Ausschalten ist deswegen vorhanden, da man die Anzahl der Schaltvorgänge verringern möchte. So sollte ein Kompressoraggregat wie in einem Kühlschrank nicht zu häufig an-/ausgeschaltet werden. Auch belasten die Schaltvorgänge bei mechanischen Schaltern (Bimetallschalter, Relais) die Kontakte, so dass weniger Schaltvorgänge die Lebensdauer vergrössern.

Es gibt wesentlich genauere und schnellere Regler als wie den Zweipunktregler, wie z.B. Proportional-, Integral- oder Differentialregler oder Kombinationen davon.

Denkfrage: Ein Kühlschrank kann 8° Innentemperatur bei Raumtemperaturen von 8° bis 40° einhalten. Aber bei einer Raumtemperatur kleiner 8° oder höher als 40° funktioniert das nicht mehr. Warum ?

Bei dem Versuch hier wird als Regelstrecke ein hoch belastbarer Widerstand verwendet. Die Heizleistung ist ca 2,5 Watt [W]. Obwohl das relativ wenig ist (Kochplatte 2000W, Lötkolben 30W), wird dieser heiss mit bis zu 80°.

[Warnung]
Der Widerstand wird SEHR HEISS und darf im Betrieb nicht angefasst werden. Nach dem Ausschalten etwas warten, bis er abgekühlt ist. Den Versuch nicht unbeaufsichtigt lassen. In Pausen das 12V-Netzteil abziehen oder ausschalten.

Aufbau

VORSICHT: 12 V-Netzteil erst dann einstecken, wenn Scratch läuft und scratchClient läuft.

VORSICHT: Den Widerstand so einstecken, dass er in der Mitte noch Abstand zum Steckbrett hat.

Schaltskizze

Das Bild zeigt den Widerstand, der dicht am TMP36 Temperatursensor aus dem vorherigen Kapitel montiert ist. Man erkennt auch den Abstand zwischen Widerstand und Steckbrett. Der ist notwendig, damit das Steckbrett durch die Wärme keinen Schaden nimmt. Der Widerstand sollte den TMP36 berühren.

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_adc_tmp36

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Die Messwerte werden mit dem Sensorwert 'adcA' übermittelt.

Die 'Heizung', also der Widerstand wird mit dem Signal 'power1_ON' eingeschaltet bzw. mit 'power1_OFF' ausgeschaltet.

Aufgaben

Ergänzt das Programm aus dem vorherigen Kapitel:

Wenn die Temperatur höher als 45° ist, soll die Heizung ausgeschaltet werden (power1_OFF).

Wenn die Temperatur kleiner als 44,0° ist, soll die Heizung eingeschaltet werden (power1_ON).

Man erkennt, dass die Temperatur nicht ganz genau eingehalten wird, sondern um den Sollwert pendelt.

Fächelt Luft zum Abkühlen zum Widerstand und beobachtet, wie sich die Ein-Ausschaltzeiten verändern.

Temperaturregler, Temperaturverlauf
Beispielprogramm

6.1.2.5. Lichtempfindlicher Widerstand LDR

Lichtempfindliche Widerstände oder Fotowiderstände sind aus einem Material, das bei sehr hellem Licht einen niedrigen Widerstand hat und bei Dunkelheut einen hohen Widerstand. Hergestellt werden diese aus Halbleitermaterial. Die Reaktionszeit ist relativ langsam im Bereich Millisekunden bis Sekunden.

Beleuchtungsstärke wird in Lux [lx] gemessen. Das ist das Licht einer (norm-) Kerze in 1 m Abstand.
Der eingesetzte Widerstand hat bei einer Helligkeit von 100 lx: 20k Ohm, 0 lx (Dunkelheit) : 3M Ohm.
100 lx an einem dunklen, bewölkten Tag.
320-500 lx Bürobeleuchtung, Arbeitsplatz

Der Fotowiderstand wird in einer Spannungsteilerschaltung mit einem 20kOhm Vorwiderstand betrieben.
Der Widerstand des Fotowiderstandes berechnet sich mit
Rx = N * Rv / ( 1024 - N)
Rv ist der Wert des Vorwiderstandes, hier 20k Ohm.

[Anmerkung]

Da es keine genaue Umrechnung des Widerstandes zu Helligkeitswerten gibt, sollte direkt mit den ermittelten ADC-Werten gearbeitet werden. Kleine Werte: hell, grosse Werte: dunkel.

Eine Zuordnung des Widerstandes zur Helligkeit ist nicht einfach. Die Bauteile haben stark streuende Kennlinien. Für die eingesetzten Fotowiderstände war es leider nicht möglich, ein ausführliches Datenblatt zu bekommen. Eine Kurzfassung hier A906014-Fotowiderstand Zusammenfassung.

Aufbau

  • Widerstand 20kOhm,

  • Photowiderstand A906014.

  • Kabel.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_adc

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
Die Messwerte werden mit dem Sensorwert 'adcA' übermittelt, Werte im Bereich [0..1023]. 0 entspricht 0V Spannung, 1023 entspricht 3,3V.

Aufgabe

Schreibe ein Programm, das anzeigt ob im Raum das Licht angeschaltet ist oder nicht.

Lichtschranke.

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 für Scratch 3.0:

scratchClient -c ikg_led

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 für Scratch 3.0:

scratchClient -c ikg_led_pwm_pigpiod

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 für Scratch 3.0:

scratchClient -c ikg_7segment

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 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 (nur für die erste Generation der Adapterplatine)
  • 1 Stück Steckernetzteil 5V (wenn Aufbau funktioniert auch 12V)
  • 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

Für die erste Generation der Adapterplatine. Diese haben noch keine Buchse für den Hohlstecker:

  • 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. Anode (langer Anschluß) direkt zum Plus-Anschluß der Adapterplatine.
  • Steckbrücken
  • Strom einschalten.

Schaltskizze

Start scratchClient-Software für Scratch 3.0:

scratchClient -c ikg_rgb_pwm_pigpiod

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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

[Anmerkung]

Scratch3 kann sehr viele Werte zu scratchClient schicken. In einer Schleife mit einer Aktualisierung von 3 Werten wurden 4350 Updates je Sekunde von scratch3 zu scratchClient gemessen (mit einem Raspberry Pi 4).

Diese hohe Datenrate führt zu einer Überlastung von scratchClient und damit einer großen Verzögerung bei der Aktualisierung der Werte.

Abhilfe erfolgt durch das Einfügen einer kleinen Verzögerung in die Aktualisierungsschleife.

Die Verzögerung von 0.05 sec bedeutet 20 Aktualisierungen je Sekunde bzw. 60 Datenpakete je Sekunde, was für eine zügige Darstellung ausreicht und noch nicht zu einer Überlastung führt.

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 für Scratch 3.0:

scratchClient -c ikg_servo_pigpiod

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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; scratch1.4, nuscratch5, eine verbesserte Scratch-Version; 4 Schritt-Sequenz).

Start scratchClient-Software für Scratch 3.0:

scratchClient -c stepper_28BYJ-48_step

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 für Scratch 3.0:

scratchClient -c stepper_28BYJ-48_module

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 für Scratch 3.0:

scratchClient -c stepper_28BYJ-48_module

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 für Scratch 3.0:

scratchClient -c ikg_power

Scratch3 im Browser neu laden!

Scratch Sende/ Empfangssignale
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 für Scratch 3.0:

scratchClient -c ikg_power

Scratch3 im Browser neu laden!

Verfügbare Signale/ Daten Der Magnet wird mit Sendesignalen 'power7_ON' bzw. 'power7_OFF' an- und ausgeschaltet.

Kapitel 7. Referenzen

/gertboard/ gertboard

/sharp/ scratch.mit.edu

/scratch_1.4/ Datenblatt Firma sharp, GP2Y0A21YK/

Kapitel 8. Farbkennzeichnung von Widerständen

Der Text und Bilder sind entnommen aus wikipedia.de

Die Widerstandsfarbkodierung oder Farbkodierung für Widerstände ist eine Farbkennzeichnung für die elektrischen Werte von Widerständen. Als elektronische Bauteile sind diese oft sehr klein und darüber hinaus zylindrisch, so dass es schwierig ist, lesbare Zahlen darauf zu drucken. Als Ersatz hat man deshalb ein System erdacht, den Widerstandswert zusammen mit einer Toleranz durch umlaufende farbige Ringe anzugeben.

Lesrichtungsart 1

Lesrichtungsart 2

Es gibt Farbcodes mit drei, vier, fünf oder sechs Ringen. Bei drei oder vier Ringen geben die ersten beiden Ringe einen zweistelligen Wert von 10 Ω bis 99 Ω an (siehe Tabelle unten), und der dritte Ring gibt einen Multiplikator an ( Zehnerpotenz von 10-2 bis 109), mit dem der Wert zu multiplizieren ist. Damit lassen sich 1080 verschiedene Widerstandswerte ausdrücken. Der vierte Ring, falls vorhanden, gibt die Toleranzklasse an. Fehlt er, ist die Toleranz ±20%. Bei fünf oder sechs Ringen geben die ersten drei Ringe den Wert an (100 bis 999 Ω), der vierte Ring ist der Multiplikator und der fünfte Ring die Toleranzklasse. Ist ein sechster Ring vorhanden, gibt er den Temperaturkoeffizienten (Stabilität) an.

Die Ableserichtung wird auf zwei verschiedene Weisen gekennzeichnet: entweder der erste Ring hat vom Rand des Widerstandskörpers einen kleineren Abstand als der letzte Ring, oder der letzte Ring ist räumlich abgesetzt. Prüfung: Die andere Leserichtung ergibt keinen Wert der zugehörigen E-Reihe oder lässt sich gar nicht entschlüsseln (z. B. letzter Ring ist silber oder gold, was für den ersten Ring nicht zulässig ist).

Die Farbkodierung ist in der DIN IEC 62, beziehungsweise für Widerstände mit Angabe des Temperaturkoeffizienten nach DIN 41429 wie folgt festgelegt:

Farbkodierung von Widerständen mit 4 Ringen

1. Ring

2. Ring

3. Ring

4. Ring

Farbe

Farbe

Zehner

Einer

Multiplikator

Toleranz

„keine“

×

±20 %

silber

10 −2 = 0,01

±10 %

gold

10 −1 = 0,1

±5 %

schwarz

0

10 0 = 1

braun

1

1

10 1 = 10

±1 %

rot

2

2

10 2 = 100

±2 %

orange

3

3

10 3 = 1.000

gelb

4

4

10 4 = 10.000

grün

5

5

10 5 = 100.000

±0,5 %

blau

6

6

10 6 = 1.000.000

±0,25 %

violett

7

7

10 7 = 10.000.000

±0,1 %

grau

8

8

10 8 = 100.000.000

±0,05 %

weiß

9

9

10 9 = 1.000.000.000

Widerstände hoher Genauigkeit (Metallschichtwiderstände) haben meistens fünf oder sechs Ringe. Bei fünf Ringen geben die ersten drei die Werte an, Ring vier den Multiplikator und Ring fünf die Toleranz. Ein sechster Ring gibt den Temperaturkoeffizienten an.

Farbkodierung von Widerständen mit 5 oder 6 Ringen

1. Ring

2. Ring

3. Ring

4. Ring

5. Ring

6. Ring

Farbe

Farbe

Hunderter

Zehner

Einer

Multiplikator

Toleranz

Temp.-Koeffizient

silber

 

 

 

10 −2

 

 

gold

 

 

 

10 −1

 

 

schwarz

 

0

0

10 0

 

200 10 −6  K −1

braun

1

1

1

10 1

±1 %

100 10 −6  K −1

rot

2

2

2

10 2

±2 %

50 10 −6  K −1

orange

3

3

3

10 3

 

15 10 −6  K −1

gelb

4

4

4

10 4

 

25 10 −6  K −1

grün

5

5

5

10 5

±0,5 %

 

blau

6

6

6

10 6

±0,25 %

10 10 −6  K −1

violett

7

7

7

 

±0,1 %

5 10 −6  K −1

grau

8

8

8

 

±0,05 %

 

weiß

9

9

9

 

 

 

Beispiele

  1. Die Farbringe gelb–violett–rot–braun bedeuten 47·10 2  Ω = 4,7 kΩ und eine Toleranz von ±1%. Daraus ergibt sich für den Widerstand ein möglicher Toleranzbereich von 4,653 kΩ bis 4,747 kΩ.

  2. Ein Widerstand mit den fünf Ringen grün–braun–braun–orange–blau hat einen Nennwert von 511·10 3  Ω = 511 kΩ und weist eine Toleranz von ±0,25% auf.

Glossar

AD-Wandler

Analog-Digital-Umwandler

Analog

Kontinuierliche Werte für Signale. Viele Sensoren liefern analoge Werte wie z.B. Temperatursensoren, Drucksensoren, Helligkeitssensoren. Um diese in Computern zu verarbeiten, müssen diese digitalisiert werden, also mit AD-Wandlern in digitale Signale umgewandelt werden.

A-Signal

Ausgangs-Signal, siehe auch EA

DA-Wandler

Digital-Analog-Umwandler

Digital

Logische Werte wie '0' oder '1'; 'false' oder 'true'; 'low' oder 'high' werden mit Spannungswerten 0 Volt bzw 3.3 Volt dargestellt . Logische Werten kann man in Computern gut verarbeiten, da Computer selbst digital arbeiten. Die Spannungswerte sind nicht genau 0V bzw. 3.3V, sondern 0..0,8V werden als '0' angesehen und 2.0..3.3V als '1'. Und es gibt auch andere Logikschaltkreise mit 0 bzw 5Volt, 0..15Volt oder 0 und -5.2V.

EA

Eingang Ausgang

E-Signal

Eingangs-Signal, siehe auch EA

GPIO

General Purpose Input Output, 'Allgemeiner Zweck Eingang Ausgang' Bezeichnung eines Ein- Ausgabepins an Prozessoren oder anderen elektronischen Bausteinen.

I2C

gesprochen 'I-Quadrat-C'; Inter-Integrated-Circuit ist eine Art der Verdrahtung, die komplizierte Signale mit wenig Leitungen übermitteln kann. Serieller Datenbus.

IKG

Immanuel Kant Gymnasium

IO

Input Output, Eingang Ausgang

IR

Infrarotlicht. Kann man nicht sehen, aber mit vielen elektronischen Kameras sichtbar machen.

LED

Light Emitting Diode, Leuchtdiode

Line-Driver

Leitungstreiber. Ein elektronischer Baustein, der viele andere Bausteine ansteuern kann.

Pin

'Stecknadel', Anschluss eines elektronischen Bausteines.

SPI

Serial Peripheral Interface; ist eine Art der Verdrahtung, die komplizierte Signale mit wenig Leitungen übermitteln kann.