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).
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
Anschluss an die IO-Signale der Adapterplatine. Diese müssen als Eingang konfiguriert sein.
Für den Aufbau wird benötigt
Aufbauhinweise:
Kontrolle
Wenn alles fertig ist
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. |
![]() | |
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. |
Sensor. Eingang, digital, optisch
Die Anschlüsse GL4..GL7 sind für Gabellichtschranken vorgesehen.
Belegung der Anschlüsse
Für den Aufbau wird benötigt
Aufbauhinweise:
Kontrolle
Wenn alles fertig ist
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'
![]() | |
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.
![]()
|
![]() | Ü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. |
Sensor, Eingang, digital, optisch
Die Anschlüsse GL4..GL7 sind für Gabellichtschranken vorgesehen.
Zwei Gabellichtschranken werden zu einem Drehencoder kombiniert.
Ein 'Zackenrad' unterbricht die beiden Lichtschranken. Der zeitliche Verlauf der Signale wird zur Ermittlung des Drehwinkels verwendet.
![]() | |
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
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.
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.
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 1 | Masse |
Pin 2 | Eingang |
Pin 3 | 3,3V |
Für den Aufbau wird benötigt:
![]() | |
Für den Versuchsaufbau wird ein Potentiometer mit angelötetem Kabel verwendet. Der Stecker kann direkt an die Adapterplatine angeschlossen werden. |
Aufbauhinweise:
Kontrolle
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 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. |
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
![]() | |
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:
Kontrolle
Wenn alles fertig ist
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 |
![]() | Ü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. |
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 TMP36U = 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, TemperaturT = ( 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 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.
Der Versuch ist eine Erweiterung der Temperaturmessung aus dem vorangehenden Kapitel.
Temperaturregler sorgen an vielen Stellen dafür, dass Temperaturen einen bestimmten Wert einhalten.
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°.
![]() | |
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. |
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.
![]() | |
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
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. |