Baulteilkunde Teil 2: Sensoren

Die folgende Seite bietet jeweils eine Einführung in neue Bauteile aus der Kategorie Sensoren, für die unterschiedliche Grundlagen aus dem Kapitel “Bausteine von Algorithmen” benötigt werden. Das Kapitel “Elektrische Grundlagen” ist zum tieferen Verständnis sicherlich hilfreich, aber für diese vorkonfigurierten Bauteile nicht unbedingt notwendig. Mit den hier vorgestellten Bauteilen lässt sich bereits eine Vielzahl an größeren Projekten umsetzen. Vielleicht hast du eine tolle Idee?

Sensoren

Im Folgenden werden Sensoren erklärt, also Bauteile, die aus einer physikalischen Größe in der Umwelt eine elektrische Größe machen, die sich vom Arduino weiterverarbeiten lässt.

Neigungsschalter

Neigungsschalter.
Neigungsschalter.

Mit sogenannten Neigungsschaltern (engl. tilt switch) lässt sich eine Neigung, aber auch eine Erschütterung oder der Beginn einer Beschleunigung messen. So lässt sich zum Beispiel feststellen, ob ein Gegenstand angehoben wird.

Funktionsweise des Neigungsschalters

Die Abbildungen unten zeigen den Aufbau eines Neigungsschalters im geschlossenen und geöffneten Fall. Beschreibe den Aufbau des Schalters und erkläre, wie es in Abhängigkeit der Neigung des Neigungsschalters zum Leuchten der LED im abgebildeten Schaltkreis kommt. Handelt es sich um einen digitalen oder analogen Sensor?

Neigungsschalter (geöffnet).
Neigungsschalter (geöffnet).

Neigungsschalter (geschlossen).
Neigungsschalter (geschlossen).
Einfacher Aufbau zum Test eines Neigungsschalters ohne Arduino.
Einfacher Aufbau zum Test eines Neigungsschalters ohne Arduino.

Schaltplan: Wenn der Neigungsschalter wie unten abgebildet am Arduino angeschlossen wird, kann sein Zustand in Digitalpin 3 ausgelesen werden (vgl. das Auslesen von Tastern).

Neigungsschalter am Arduino.
Neigungsschalter am Arduino.

Programmierung: Der Neigungsschalter ist in Nepo nicht vorkonfiguriert, aber dies ist auch gar nicht nötig. Er lässt sich als digitaler Sensor konfigurieren. Der Rückgabewert eines digitalen Sensors ist in Nepo vom Typ Zahl statt vom Typ Wahrheitswert. Dabei bedeutet die Zahl 0 so viel wie false und die Zahl 1 bedeutet true.

neigungsschalter-konfiguration
Konfiguration des Neigungsschalter als digitaler Sensor an Pin 3.
Digitalen Sensor auslesen.
Auslesen eines digitalen Sensors in Nepo.

Alarmanlage

Baue eine Alarmanlage, die auslöst, wenn das Steckbrett angehoben wird.

Zusatz: Erkläre, warum es sinnvoll ist, den Piezo-Summer nicht so wie die LED in der oben diskutierten Aufgabe direkt mit dem Neigungsschalter zu verbinden, sondern das Auslösen des Tons im Programm zu regeln.

Bewegungsmelder

Bewegungsmelder wurden bereits im Abschnitt Entscheidungen mit mehreren Kriterien treffen erklärt und genutzt, um Wahrheitswerte einzuführen. In diesem Abschnitt steht das Bauteil im Vordergrund. Dazu werden noch einmal alle Informationen zusammengefasst und eine alternative Programmierung vorgestellt.

Bewegungsmelder verfügen über drei Pins, deren Beschriftung man lesen kann, wenn man die Kunststofflinse vorsichtig abzieht (Vorsicht: Nach Abziehen der Linse nicht den Sensor berühren!). Vcc und GND dienen der Stromversorgung der elektronischen Komponenten und müssen mit 5V und GND am Arduino verbunden werden.

Der mittlere OUT-Pin ist der Signal-Pin: Wenn eine Bewegung registriert wurde, wird der Wert wahr zurückgegeben, ansonsten falsch. Zum Einlesen des Signals wird dieser Pin mit einem Digitalpin des Arduino verbunden.

Hinten befinden sich zwei Drehregler (“Potentiometer”), mit denen sich die Dauer des Bewegungssignals (links) und die Empfindlichkeit (rechts) einstellen lassen. Zusätzlich befindet sich auf der rechten Seite ein sogenannter Jumper, mit dem auf einfache Weise eine Steckverbindung zwischen benachbarten Pins hergestellt werden kann. Wenn sich der Jumper ganz außen befindet, dann bleibt das Bewegungssignal nach dem Erkennen einer Bewegung eine Weile aktiv und wird dann auf jeden Fall deaktiviert. Eine neue Bewegung kann erst nach einer gewissen Zeit wieder registriert werden. Wenn der Jumper hingegen leicht nach innen versetzt ist, bleibt das Bewegungssignal so lange erhalten, wie eine Bewegung erkannt wird (siehe Funduino).

Bewegungsmelder mit Linse.
Bewegungsmelder mit Linse.
Pinbelegung.
Pinbelegung.
Drehregler für Signaldauer (links) und Empfindlichkeit (rechts).
Drehregler für die Signaldauer (links) und Empfindlichkeit (rechts).

Programmierung: Der Bewegungsmelder ist in Nepo bereits vorkonfiguriert und lässt sich damit einfach auslesen. Aufgrund der Ausgabe von HIGH und LOW bzw. true und false lässt er sich aber auch als digitaler Sensor konfigurieren. Der Rückgabewert eines digitalen Sensors ist in Nepo vom Typ Zahl statt vom Typ Wahrheitswert. Dabei bedeutet die Zahl 0 so viel wie false und die Zahl 1 bedeutet true.

bewegungsmelder-vorkonfiguriert
Vorkonfigurierten Bewegungsmelder auslesen.
Vorkonfigurierten Bewegungsmelder auslesen.
bewegungsmelder-digital-konfiguriert
Bewegungsmelder als digitalen Sensor auslesen.
Bewegungsmelder als digitalen Sensor auslesen.

Automatische Tür

Baue und programmiere eine automatische Tür, die sich öffnet, wenn eine Bewegung registriert wird. Der Bewegungsmelder soll als digitaler Sensor konfiguriert werden. Experimentiere mit den Drehreglern, um die Empfindlichkeit und Dauer des Signals richtig einzustellen.

Recherche: Wie funktioniert eigentlich ein Bewegungsmelder?
Das zentrale Bauteil eines Bewegungsmelders ist ein sogenannter Passiver Infrarot Sensor (PIR), auch Pyroelektrischer Sensor. Recherchiere im Internet, wie solche Sensoren funktionieren und fasse zusammen, wie es zur Registrierung einer Bewegung kommt.

Drehregler / Potentiometer

Potentiometer
Potentiometer.

Ein Drehregler oder Potentiometer ist ein Widerstand, der in zwei Teile aufgeteilt wird. Durch Drehen am Griff kann man die Größe der Teile verändern, allerdings bleibt der Gesamtwiderstand immer gleich groß. Durch den einstellbaren Teilwiderstand lässt sich zum Beispiel eine Lampe dimmen oder die Lautstärke eines Lautsprechers regulieren.

Zum Anschluss an den Arduino wird der mittlere Pin mit einem analogen Eingang verbunden, über den die Spannung am Teilwiderstand zwischen GND und dem analogen Eingang abgefragt werden kann. Die anderen beiden Pins müssen mit 5V und GND verbunden werden, wobei es egal ist, welcher Pin mit GND und welcher mit 5V verbunden wird.

Die Grundlagen des Potentiometers werden auch im Kapitel Elektrische Grundlagen behandelt.

Für das Potentiometer existiert ein vorkonfigurierter Block, über den man die Spannung am Teilwiderstand zwischen GND und dem analogen Eingang auslesen kann. Diese kann zwischen 0V (Teilwiderstand gleich null) oder 5V (Teilwiderstand gleich Gesamtwiderstand) bewegen. Alternativ kann das Potentiometer als analoger Sensor konfiguriert werden und der Analogwert im Programm abgefragt werden.

Konfiguration des Potentiometers
Konfiguration und Auslesen des Potentiometers mit vorkonfigurierten Blöcken.
Konfiguration und Auslesen des Potentiometers mit vorkonfigurierten Blöcken.
Konfiguration des Potentiometers als analoger Sensor.
Konfiguration und Auslesen des Potentiometers als analoger Sensor. Dabei werden die Analogwerte genauso wie bei den vorkonfigurierten Blöcken in eine Spannung umgerechnet.
Konfiguration und Auslesen des Potentiometers als analoger Sensor. Dabei werden die Analogwerte genauso wie bei den vorkonfigurierten Blöcken in eine Spannung umgerechnet.

Dimmbare Lampe

PWM-Analog-Diagramm
Diagramm zur Ermittlung einer Funktion.

Baue und programmiere eine Lampe, deren Helligkeit sich durch ein Potentiometer einstellen lässt.

Hinweis: Du musst dafür sorgen, dass der eingelesene Analogwert zwischen 0 und 1023 in einen PWM-Wert zwischen 0 und 255 umgerechnet wird. Ermittle dazu eine passende Funktion.

Joystick

Joysticks werden bekanntermaßen für Spielecontroller oder auch zur Steuerung von Maschinen genutzt. Mit dem Arduino lassen sich einfache Versionen davon nachbauen.

Joystick.
Joystick.

Ein Joystick besteht im Wesentlichen aus zwei Potentiometern, die über einen gemeinsamen Hebel variiert werden können. Wie im Schaltbild zu sehen, teilen sich beide den 5V- und GND-Anschluss; der mittlere Anschluss muss natürlich jeweils einzeln ausgelesen werden. Zusätzlich wird durch Drücken des Joysticks ein angebrachter Taster gedrückt, dessen Status am SW-Pin ausgelesen werden kann (sw von engl. “switch”). Da das elektrische Potential am SW-Pin normalerweise schwankt, sollte ein Pullup-Widerstand mit \(R=1 \, k\Omega\) angebracht werden (vgl. Schaltbild).

Programmierung: Das Joystick-Modul ist in Nepo nicht vorkonfiguriert. Die Bestandteile, also die zwei Potentiometer und der Taster, lassen sich aber einzeln konfigurieren. Dies geht wahlweise mit den vorkonfigurierten Potentiometer- und Taster-Blöcken oder als analoger und digitaler Sensor.

joystick-vorkonfiguriert
Konfiguration des Joysticks mit vorkonfigurierten Blöcken.
joystick-konfiguration
Konfiguration des Joysticks mit einem digitalen Sensor (Taster) und zwei analogen Sensoren (Potentiometer).

Erste Experimente

  1. Bewege den Hebel des Joystick-Moduls und beobachte, wie sich dabei die Potentiometer an den Seiten mitbewegen. Bringe auch den Plastikdeckel an, drücke den Joystick herunter und beobachte dabei das Verhalten des Tasters.
  2. Schließe das Joystick-Modul wie oben beschrieben an den Arduino an. Lies die Werte der Potentiometer aus, während du sie bewegst. Notiere, welche Bewegungsrichtung die X-Richtung und welche die Y-Richtung darstellt. Notiere außerdem, welches der beiden Potentiometer (ggü. von Taster oder ggü. der Pins) für die X-Richtung bzw. Y-Richtung verantwortlich ist.
  3. Mit dem Pullup-Widerstand wird eine sogenannte Active-Low Schaltung aufgebaut. Teste die Funktionsweise des Tasters, indem du das elektrische Potential in D3 ausliest und beschreibe, was mit dem Begriff Active-Low gemeint ist.

Joystick-Motor-Steuerung

Steuere mit dem Joystick-Modul einen Schrittmotor!

Achtung bei Verwendung von Motoren: Spätestens, wenn mehr als ein Motor am Arduino betrieben werden soll, muss eine externe Spannungsquelle genutzt werden, zum Beispiel durch Anschluss einer 9 V-Batterie an das Power-Supply-Module. Schaue dir dazu noch einmal den Infokasten zum Power Supply Module an.

Infrarot-Sensor mit Fernbedienung

Jeder weiß, wie angenehm es ist, wenn man ein Gerät fernsteuern kann statt aufstehen zu müssen, um die angebrachten Knöpfe zu drücken. Eine einfache Möglichkeit dafür bietet eine Infrarot(IR)-Fernbedienung.

Wie am Namen zu erkennen, verwendet eine IR-Fernbedienung Infrarotstrahlen, die mit dem bloßen Auge nicht sichtbar sind. Hält man jedoch eine Digitalkamera, z. B. vom Smartphone, auf die Infrarot-LED der Fernbedienung und drückt eine Taste, dann kann man ein schnelles Aufblitzen erkennen. Am besten probierst du es selbst einmal aus oder schaust dir ein kurzes Video der IR-Strahlen (siehe unten) an. Das Aufblitzen zeigt, dass die Strahlen in einem bestimmten Rhythmus gesendet werden, aus dem sich entschlüsseln lässt, welche Taste gedrückt wurde.

Empfangen werden die Infrarotstrahlen von einem Infrarotsensor, der im Wesentlichen aus einer Photodiode besteht. Diese ist sehr ähnlich wie eine Leuchtdiode aufgebaut, allerdings funktioniert sie genau umgekehrt: Anhand eintreffender (infraroter) Lichtstrahlen wird ein Stromfluss ausgelöst, der dann registriert und weiter verarbeitet werden kann. Die Photodiode reagiert zwar am empfindlichsten auf infrarotes Licht bei einer Frequenz von \(38 \, kHz\), allerdings auch (weniger stark) auf sichtbares Licht. Um dieses sichtbare Licht, insbesondere die Umgebungshelligkeit, wegzufiltern, befindet sich die Photodiode in einer schwarzen Kunstharzschicht.

Infrarotsensor.
Infrarotsensor.
Infrarotsensor-Modul.
Infrarotsensor-Modul.

Häufig wird der Infrarotsensor zusammen mit einer LED und einem zugehörigen Vorwiderstand auf einer kleinen Platine ausgeliefert, damit das Empfangen eines Signals durch die LED angezeigt werden kann. Es sind aber auch Infrarotsensoren ohne weitere Anzeige im Umlauf.

Der Anschluss an den Arduino ist einfach: GND und 5V dienen wie üblich der Stromversorgung. Der Signal-Pin S muss mit einem beliebigen PWM-Pin (mit \(\sim\)) verbunden werden. Die Pin-Belegung ist aber leider unterschiedlich; je nach dem, ob man ein Modul mit LED-Anzeige oder nur den Infrarotsensor anschließt.

Nachdem der IR-Sensor mit dem Arduino verbunden und in Nepo konfiguriert wurde, können die empfangenen Werte in Nepo abgefragt werden. Die Abbildung unten zeigt ein einfaches Beispiel, wie mit den Tasten 0 und 1 auf einer Infrarot-Fernbedienung die Board-LED des Arduino an- und ausgestellt werden kann. Wenn die Taste mehrere Aktionen auslösen soll (wie die Ausgabe des Codes auf dem seriellen Monitor und das Anschalten der LED), dann muss der Wert in einer Variable gespeichert werden.

Einfaches Beispielprogramm zur Verwendung einer IR-Fernbedienung.
Einfaches Beispielprogramm zur Verwendung einer IR-Fernbedienung.

Codes kennen lernen

  1. Übertrage das oben abgebildete Programm auf den Arduino und probiere es aus.
  2. Erstelle eine Tabelle, in der du den Zahlencode für jede Taste festhälst. Probiere auch aus, was passiert, wenn du die Tasten länger gedrückt hälst.

Fernsteuerung eines LED-Streifens

In vielen Bereichen werden LED-Streifen genutzt, um einen Raum mit passendem, indirektem Licht auszustatten. Die meisten LED-Streifen lassen sich über eine kleine Infrarot-Fernbedienung steuern, wodurch sich die Farbe, aber auch der Modus einstellen lässt - zum Beispiel eine einzelne Farbe, Fading, Strobe, …

An dieser Stelle ist ein Video von Youtube eingebettet. Mit deiner Erlaubnis willigst du ein, dass deine Daten an YouTube in den USA übermittelt werden. Weitere Informationen zur Datenverarbeitung von YouTube findest du in der Datenschutzerklärung von YouTube.

Das Prinzip lässt sich auf ein Lauflicht übertragen. Baue ein Lauflicht und programmiere verschiedene Lauflicht-Modi, die sich mit der Fernbedienung einstellen lassen.

Temperatur- und Luftfeuchtigkeitssensor DHT-11

DHT-11
DHT-11.

Bei vielen Umweltmessungen interessiert nicht nur die Temperatur, sondern auch die Luftfeuchtigkeit. Der Sensor DHT-11 ist ein einfaches, kleines Bauteil, mit dem sich beides messen lässt.

Der DHT-11 verfügt über drei Pins - 5V und GND dienen der Stromversorgung, während das Signal zu den Messdaten über den Signalpin ausgegeben wird. Für die Temperaturmessung ist auf dem DHT-11 ein NTC verbaut.

Schaltplan zum DHT-11 am Arduino.
Schaltplan zum DHT-11 am Arduino.

Das Auslesen des Signalpins ist einfach, weil der DHT-11 in der Konfiguration bereits implementiert wurde, sodass man nur noch den Signalpin angeben muss. Das Signal wird dann automatisch analysiert und decodiert, um anhand der entsprechenden Befehle auf die übermittelte Temperatur bzw. Luftfeuchtigkeit zuzugreifen. Die Größe kann über das Drop-Down-Menü ausgewählt werden.

Temperatur auslesen
Luftfeuchtigkeit auslesen

Wetterstation

Baue eine kleine Wetterstation, die alle zehn Minuten Temperatur und Luftfeuchtigkeit misst und auf dem seriellen Monitor ausgibt.

Recherche: Wie wird die Luftfeuchtigkeit gemessen?
Mit dem DHT-11 lässt sich die relative Luftfeuchtigkeit bestimmen. Recherchiere, was darunter zu verstehen ist, und wie diese durch ein elektrisches Bauteil gemessen wird.

Temperatursensor TMP36

Bei deinen Temperaturmessungen mit einem NTC oder dem DHT-11 (in dem auch ein NTC verbaut ist), hast du vielleicht festgestellt, dass die Bauteile nicht besonders genau arbeiten. Für professionellere Anwendungen benötigt man eine wesentlich höhere Genauigkeit. Hier kann der TMP36 helfen: Er hat eine Genauigkeit von \(\pm 1 \, °C\) und kann Temperaturen in einem Bereich von \(-40 \, °C\) bis \(125 \, °C\) zuverlässig messen. Die Messung der Temperatur erfolgt über die Messung einer temperaturabhängigen Spannung. Bei \(0 \, °C\) beträgt die Spannung \(500 \, mV\) (ein sogenannter Offset).

Temperatursensor TMP36.
Temperatursensor TMP36.
Pinbelegung des TMP35 (Blick auf die flache Seite).
Pinbelegung des TMP36 (Blick auf die flache Seite).

Achtung: Es besteht Verwechslungsgefahr mit dem Transistor! Achte daher genau auf die Aufschrift!

Ein weiterer Vorteil des TMP36 ist, dass die Abhängigkeit von ausgegebener Spannung und Temperatur linear verläuft: Eine Temperaturänderung von \(1 \, °C\) entspricht immer einer Spannungsänderung von \(10 \, mV\).

Vergleich von Kennlinien

Ein linearer Zusammenhang zwischen der gemessenen Größe (oft eine Spannung) und der gesuchten Größe (hier die Temperatur) gilt als vorteilhaft, ein exponentieller Zusammenhang dagegen als nachteilig. Begründe anhand der unten abgebildeten Skizzen von Kennlinien, warum ein linearer Zusammenhang besser ist.

Beachte: Jede Messung ist mit einem Fehler versehen!

Lineare Kennlinie
Lineare Kennlinie.
Exponentielle Kennlinie
Exponentielle Kennlinie.

Präzises Thermometer

  1. Baue ein präzises Thermometer mit den vorkonfigurierten Nepo-Blöcken für den TMP36.
  2. Baue ein präzises Thermometer und konfiguriere den TMP36 als analogen Sensor.

    Tipp: Zur Berechnung der Temperatur musst du zuerst den eingelesenen Analogwert in eine Spannung umrechnen. Um aus der Spannung die Temperatur zu berechnen, musst du die oben angegebenen Informationen noch einmal genau lesen. Zur Kontrolle: Die maximal mögliche Spannung am Signalpin beträgt \(2 \, V\), was einer Temperatur von \(150 \, °C\) entspricht.

Tropfensensor und Feuchtigkeitssensor

Mit einem Tropfensensor lässt sich die Feuchtigkeit auf dem Sensorblatt messen. Solche Sensoren werden zum Beispiel in Windschutzscheiben von Autos eingesetzt, um die Scheibenwischer und ihre Geschwindigkeit zu steuern. Feuchtigkeitssensoren funktionieren im Wesentlichen genauso, allerdings sind die Kontakte dabei so weit auseinander, dass durch Tropfen noch kein Stromfluss entsteht, sondern erst durch zum Beispiel die feuchte Erde eines Blumentopfes, der automatisch bewässert werden soll.

Tropfensensor.
Tropfensensor.
Feuchtigkeitssensor.
Feuchtigkeitssensor.

Der Anschluss an den Arduino ist in beiden Fällen einfach: + an 5V, - an GND und der Signalpin S an einen analogen Eingang A[0-5]. Am Signalpin wird eine Spannung (als Analogwert im analogen Eingang) gemessen, die im trockenen Zustand bei \(0 \, V\) (0) liegt und bis zu \(5 \, V\) (1023) steigen kann.

Theorie: Wie kann man Feuchtigkeit messen?

Das grundlegende Prinzip eines Tropfensensors/Feuchtigkeitssensors ist einfach: Je nasser/feuchter es ist, desto besser der Strom durch die feuchte Stelle fließen. Der Arduino kann aber nur eine Spannung messen (als Analogwert) - wie bekommt man diese Umwandlung hin?

Erkläre anhand des unten abgebildeten Schaltplans eines Tropfensensors, wie die Feuchtigkeit auf den Kontakten des Sensorblatts am Signalpin S (analoger Eingang zur Spannungsmessung) gemessen werden kann.

Tipp: Zentral ist der Transistor J3Y, der mit seinen drei Kontakten auf dem Sensor gut erkennbar ist. Die Status-LED mit Vorwiderstand kann dagegen vernachlässigt werden.

Pinbelegung des Transistors J3Y auf dem Tropfen- und dem Feuchtigkeitssensor.
Pinbelegung des Transistors J3Y.

Automatischer Scheibenwischer

Baue einen Scheibenwischer, der automatisch startet, wenn Feuchtigkeit registriert wird. Je nach Feuchtigkeitslevel soll eine von drei Geschwindigkeiten ausgewählt werden.

Hinweis: Du kannst die vorkonfigurierten Blöcke von Nepo für den Tropfensensor verwenden oder einen analogen Sensor konfigurieren, dessen Analogwert du selbst in einen Prozentwert umrechnest (0 entspricht 0 %, 1023 entspricht 100 %).

Pulssensor

Pulssensor.
Rückseite eines Pulssensors.

Aktivitätstracker mit Pulsmessung liegen voll im Trend - aber wie funktioniert so ein Pulssensor eigentlich? Das lässt sich am einfachsten verstehen, wenn man selber einen nachbaut. Weitere Anwendungsmöglichkeiten wären übrigens Lügen-/Angstdetektoren, Schlafanalyse oder ein Alarmsystem für Risikopatienten.

Der Anschluss an den Arduino ist einfach: + an 5V, - an GND, der Signalpin S an einen analogen Eingang A[0-5]. Am Signalpin liegt eine Spannung an, die sich im Rhythmus des Herzschlags verändert und am analogen Eingang des Arduino gemessen werden kann. Dies lässt sich mit dem seriellen Plotter der Arduino IDE veranschaulichen (siehe Abbildung unten). Man erkennt, dass die gemessenen Analogwerte zwischen ca. 500 und ca. 535, also in einem relativ kleinen Bereich, schwanken (35 bzw. \(0,171 \, V\)).

Visualisierung von gemessenen Analogwerten zur Bestimmung des Pulses.
Visualisierung von gemessenen Analogwerten zur Bestimmung des Pulses.

Als Kriterium für einen Herzschlag könnte man festlegen, dass der Analogwert über 520 liegt. Diese Werte sind jedoch wenig stabil und schwanken je nach Person und Umgebung! Man sollte unbedingt darauf achten, dass die Haut nicht verschwitzt ist und keine Bauteile auf dem Sensor berührt werden (insbesondere auf der Rückseite), damit die Ergebnisse einigermaßen zuverlässig sind. Wenn sich auf dem Arm keine brauchbaren Werte einstellen, lohnt sich ein Versuch auf dem Ringfinger oder dem Ohrläppchen.

Der Pulssensor kann mit den vorkonfigurierten Blöcken von Nepo oder direkt als analoger Sensor eingelesen werden. Im Hintergrund passiert das Gleiche.

Theorie: Wie wird der Puls gemessen?

Für die Messung des Pulses ist die grüne LED und ein Lichtsensor zentral. Erkläre anhand der schematischen Abbildungen unten das Prinzip der optischen Pulsmessung.

Pulssensor-Funktionsprinzip 1

Pulssensor-Funktionsprinzip 2

Pulssensor-Funktionsprinzip 3

Pulsmesser

Baue einen Pulsmesser, der anhand der Messwerte von 10 Sekunden den Puls (Herzschläge pro Minute) berechnet.

Hinweis: Es kann nötig sein, sich die Werte von einem seriellen Plotter visualisieren zu lassen, um einen Eindruck vom Wertebereich und von der Grenze für die Herzschlagerkennung zu bekommen. Klappe dafür die Anleitung unter diesem Projekt aus.

Visualisierung mit dem Seriellen Plotter der Arduino IDE

0. Vorbereitung: Damit überhaupt Werte über den seriellen Port (USB) übermittelt werden, erstelle ein Programm in Open Roberta, das fortlaufend den aktuellen Wert des Pulssensors auf den seriellen Monitor schreibt und übertrage es auf den Arduino.

1. Der Serielle Plotter ist in die Arduino IDE eingebaut, die genutzt wird, um den Arduino textbasiert zu programmieren. Lade die Arduino IDE herunter und installiere sie.

2. Öffne die Arduino IDE. Zuerst muss der Arduino verbunden werden. Wähle dazu in der oberen Leiste Werkzeuge > Board: Arduino Uno und wähle unter Werkzeuge > Port den Port aus, an dem der Arduino angegeben wird (siehe unten).

Verbinden eines Arduino mit der Arduino IDE

3. Öffne den Seriellen Plotter unter Werkzeuge > Serieller Plotter. Das Koordinatensystem wird automatisch an die vom Arduino übermittelten Werte angepasst. Falls keine Werte angezeigt werden, dann kontrolliere, ob die Baud-Rate (unten links) auf 9600 eingestellt ist.

Serieller Plotter der Arduino IDE.

Ultraschallsensor

Ultraschallsensor am Auto.
Ultraschallsensor am Auto.

Ultraschallsensoren ermöglichen die berührungslose Messung eines Abstands zwischen dem Sensor und dem nächstgelegenen Gegenstand. Dies macht sie zu einer interessanten Ausrüstung für Staubsaugerroboter, die nicht gegen die Wand fahren sollen, oder Einparkhilfen im Auto, die dem Fahrer anzeigen sollen, wie viel Platz er noch hat.

Die wichtigsten Bestandteile des Ultraschallsensors sind der “Transducer” (T) und der “Receiver” (R). Der Transducer ist praktisch ein Lautsprecher, der für uns nicht hörbare Schallwellen aussendet. Der Receiver entspricht einem Mikrofon für Schallwellen. Die Schallwellen werden also vom Transducer ausgesendet, an einem Hindernis reflektiert und vom Receiver empfangen.

Funktionsprinzip eines Ultraschallsensors.
Funktionsprinzip eines Ultraschallsensors.

Der Ultraschallsensor verfügt über vier Pins. GND und VCC (5 V) sind wie üblich zu belegen und dienen der Energieversorgung. Der Trigger-Pin dient dazu, einen Ultraschallpuls auszusenden - wird er für 10 Mikrosekunden auf ein HIGH-Potential gebracht, wird der Ultraschallpuls getriggert. Wenn dies geschieht, wird der Echo-Pin von der Elektronik des Sensors auf ein HIGH-Potential gebracht, das so lange anhält, bis der Receiver die reflektierte Schallwelle empfängt. Trigger-Pin und Echo-Pin können beide mit einem beliebigen Digitalpin am Arduino verbunden werden.

Die Zeit, die der Echo-Pin auf HIGH liegt, gibt also an, wie lange der Schall braucht, um vom Sensor zum Hindernis und zurück zu gelangen. Mit Hilfe der Schallgeschwindigkeit wird dann berechnet, welche Strecke der Schall zurückgelegt hat. Diese Berechnungen werden praktischerweise von den vorkonfigurierten Nepo-Blöcken übernommen, sodass man direkt die Strecke erhält.

ultraschallsensor-konfiguration
Konfigurationsblock des Ultraschallsensors mit den Standardeinstellungen.
gib-Abstand-Befehl
Programmblock zur Abfrage der Entfernung in Zentimetern.

Einparkhilfe für ein Auto

Baue eine Einparkhilfe für ein Auto, die umso schneller piepst, je näher man dem Hindernis kommt. Ab einer Entfernung von 30 cm soll der Ton durchgängig ertönen.

Recherche: Wie wird Ultraschall erzeugt und gemessen?
Die Erzeugung des Ultraschalls beruht wie beim Piezo-Summer auf dem inversen piezo-elektrischen Effekt (vgl. Piezo-Summer); die Messung des Ultraschalls beruht auf dem piezo-elektrischen Effekt. Recherchiere im Internet die Hintergründe dieser Effekte und fasse sie zusammen.

RFID

RFID-Sender und -Empfänger
RFID-Empfänger (rechts) mit blauem RFID-Sender (links).

Mit RFID-Chips (radio frequency identification) lässt sich ein digitaler Schlüssel bauen, um zum Beispiel Türen abzusichern. Der RFID-Empfänger sendet über die rechteckige Spule Radiowellen, welche Energie transportieren. Diese empfängt der RFID-Sender (blauer Chip oder auch weiße Karte), woraufhin er seine eizigartige ID zurücksendet. Diese wird wiederum von der Rechteckspule empfangen und elektronisch so aufbereitet, dass man am Arduino die ID lesen kann.

Die Verbindung mit dem Arduino erfolgt über ein Serial Peripheral Interface (SPI) (weitere Informationen unten), weshalb die meisten Pins am Arduino festgelegt sind (siehe unten). Der RST-Pin und der SDA-Pin lassen sich ggf. noch ändern. Wichtig: Der Mikrocontroller auf dem RFID-Chip arbeitet mit einem Logiklevel von \(3,3 \, V\) und würde durchbrennen, wenn man ihn an 5 V anschließt. Der Arduino verfügt direkt neben dem 5 V-Anschluss auch über einen 3,3 V-Anschluss. Der IRQ-Pin des RFID-Empfängers wird nicht benötigt und kann ignoriert werden.

RFID-Konfigurationsblock.
RFID-Konfigurationsblock.

RFID-Block zur Prüfung der Anwesenheit.
RFID-Block zur Prüfung der Anwesenheit.

RFID-Block zum Erhalten der ID.
RFID-Block zum Erhalten der ID.

Zur Programmierung kann man die bloße Anwesenheit eines RFID-Senders abfragen oder die ID eines RFID-Senders. Die Anwesenheitsabfrage unterscheidet nicht, welcher RFID-Sender anwesend ist, sie liefert also bei jedem RFID-Sender true zurück. Sinnvoller ist also in den meisten Fällen die Abfrage der einzigartigen ID des RFID-Senders, um diese abspeichern und im nächsten Programm darauf reagieren zu können. Ein Beispielprogramm zeigt die folgende Abbildung.

Beispielprogramm zum Auslesen eines RFID-Senders in Form einer weißen Karte.
Beispielprogramm zum Auslesen eines RFID-Senders in Form einer weißen Karte.

Fehlerquellen: Bei der Programmierung gibt es zwei Fehlerquellen zu beachten, die man möglichst vermeiden sollte:

  • Werden die Befehle gib ID und gib Anwesenheit kurz hintereinander verwendet, wird der zweite Befehl nicht funktionieren, weil dazu (durch die Implementierung im Hintergrund) immer eine neue Karte erkannt werden muss.
  • Für den Vergleich von vorgegebener ID und eingelesener ID muss für beide eine Variable vom Typ Zeichenkette angelegt werden, damit Nepo keinen Fehler anzeigt. Das unten abgebildete Beispiel erzeugt also einen Fehler. (Hintergrund: Wenn die vorgegebene ID nicht als Zeichenkette (String) definiert wird, wird sie als sogenanntes Character-Array behandelt. Da die eingelesene ID aber vom Typ String ist, sollen sozusagen Äpfel mit Birnen verglichen werden.)

    Der Vergleich von vorgegebener ID und eingelesener ID erzeugt hier einen Fehler.
    Der Vergleich von vorgegebener ID und eingelesener ID erzeugt hier einen Fehler.

Katzentür

Baue und programmiere einen Prototypen für eine Katzentür, die sich automatisch öffnet, wenn die Katze (mit RFID-Chip am Halsband) sich der Tür nähert.

Erweiterung: Schließe einen weiteren RFID-Empfänger am Arduino an (siehe Informationen unten). Einer der RFID-Empfänger soll sich draußen, der andere drinnen befinden. Programmiere nun drei Modi, zwischen denen sich hin- und herschalten lässt:

  • Standard: Tür geht immer auf,
  • Tag: Tür geht nur von innen nach außen auf (alle Katzen sollen raus),
  • Nacht: Tür geht nur von außen nach innen auf (alle Katzen sollen rein).

Serial Peripheral Interface (SPI)

Das Serial Peripheral Interface (engl. für serielle periphäre Schnittstelle) ist ein Bus-System, um Daten zwischen Mikrocontrollern und integrierten Schaltkreisen nach dem Master-Slave-Prinzip auszutauschen. Der Master ist hier immer der Arduino, die Slaves sind die angeschlossenen Bauteile. Für die Kommunikation werden neben zwei Leitungen zur Spannungsversorgung (5 V bzw. 3,3 V und GND) vier weitere Leitungen benötigt:

  • Serial Clock. Auf dieser Leitung gibt der Master den Takt an, in dem die Bits gesendet werden.
  • Master Out, Slave In. Auf dieser Leitung sendet der Master Informationen, die die Slaves empfangen.
  • Master In, Slave Out. Auf dieser Leitung empfängt der Master Informationen, die die Slaves senden.
  • Slave Select. Diese Leitung wird vom Master auf ein GND-Potential (logisch 0) gebracht, um dem damit verbundenen Slave mitzuteilen, dass die folgenden Informationen an ihn gehen sollen. Im Gegensatz zu den ersten drei Leitungen erhält jeder Slave einen eigenen SS-Pin am Master, damit dieser sie einzeln ansprechen kann (siehe Abb. unten).
Da das RFID-Modul aus diesem Abschnitt auch über den I2C-Bus angesteuert werden kann, haben zwei Pins eine mehrfache Funktion. Insbesondere entspricht der SDA-Pin (im I2C-Bus die serielle Datenleitung) bei der Ansteuerung über den SPI-Bus dem SS-Pin (siehe components101.com).
SPI-Verbindung mit einem Master und drei Slaves.
SPI-Verbindung mit einem Master und drei Slaves. Quelle: Wikipedia, Lizenz: CC-BY-SA 3.0, Colin Burnett.

Beschleunigungssensor oder Lagesensor

Beschleunigungssensoren oder Lagesensoren tauchen in zig verschiedenen Geräten auf:

  • In Autos messen sie die Beschleunigung und regeln das Auslösen der AirBags,
  • in Digitalkameras dienen sie zur Bildstabilisierung,
  • in Tablets und Smartphones lösen sie das Drehen des Bildschirms aus, wenn das Gerät gedreht wurde,
  • oder sie dienen zum Steuern eines Spiels auf dem Smartphone.

Auch mit dem Arduino lassen sich interessante Dinge mit Beschleunigungssensoren bauen. Verwendet wird hier das Modul GY-61, auf dem der Beschleunigungssensor ADXL335 verbaut ist. Da der ADXL335 mit einem Pegel von 3V arbeitet, befindet sich auf der kleinen Platine zusätzlich ein Spannungsregler, der die 5V vom Arduino auf 3V für den ADXL335 herunterregelt. Zusätzlich ist ein kleines Koordinatensystem auf der Platine gezeichnet, das angibt, in welchen Richtungen die Beschleunigung gemessen wird. Die z-Achse verläuft dabei senkrecht zur Platine nach unten, wenn man auf das Koordinatensystem schaut. Dies ist erkennbar an dem Kreis mit einem Kreuz darin - als Eselsbrücke kann man sich einen Dartpfeil vorstellen, dessen gekreuzte Federn man von hinten sieht, wenn er von einem weg zeigt.

Modul GY61 mit dem Beschleunigungssensor ADXL335 von oben.
Modul GY61 mit dem Beschleunigungssensor ADXL335 von oben.

Modul GY61 mit dem Beschleunigungssensor ADXL335 von unten.
Modul GY61 mit dem Beschleunigungssensor ADXL335 von unten.

Der ADXL335 gibt für die Beschleunigungen \(a_x\) in x-Richtung, \(a_y\) in y-Richtung und \(a_z\) in z-Richtung jeweils eine Spannung aus, die laut Datenblatt des ADXL335 (S. 10) proportional zur Beschleunigung ist. Am Arduino kann diese Spannung über die analogen Eingänge A0 bis A5 gemessen werden. Wenn die Schaltung wie im folgenden Schaltplan erfolgt, dann müssen im Open Roberta Lab drei analoge Sensoren für A0, A1 und A2 angelegt werden, deren Werte als Analogwerte ausgelesen werden.

Schaltplan zum Beschleunigungsmodul GY-61 am Arduino.
Schaltplan zum Beschleunigungsmodul am Arduino.
konfiguration-beschleunigungssensor
Konfiguration des Beschleunigungssensor entsprechend des links abgebildeten Schaltplans.

Erste Experimente mit dem Beschleunigungssensor

  1. Schließe den Beschleunigungssensor wie oben beschrieben am Arduino an, konfiguriere drei analoge Sensoren im Open Roberta Lab für die drei Beschleunigungen und lasse deren analogen Werte auf dem seriellen Monitor ausgeben. Beobachte die Werte, während du die Platine auf unterschiedliche Arten beschleunigst (Anheben, Schütteln, Drehen, ...).
  2. Die Abbildung unten zeigt die Analogwerte, während sich der Beschleunigungssensor in Ruhe befindet. Begründe, warum der Analogwert für die Beschleunigung in z-Richtung größer als die anderen beiden ist.
Analogwerte für die Beschleunigung in x-, y- und z-Richtung bei ruhendem Beschleunigungssensor.
Analogwerte für die Beschleunigung in x-, y- und z-Richtung bei ruhendem Beschleunigungssensor.
  1. Die drei Spannungen und damit die Analogwerte, die in A0, A1 und A2 gemessen werden, sind proportional zur Beschleunigung. Ermittle mit Hilfe der Beobachtung aus Schritt 2 einen funktionalen Zusammenhang \(a_z(w)\) für die Berechnung der Beschleunigung \(a_z\) in Abhängigkeit vom Analogwert \(w\). Ermittle auch eine Formel für \(a_x\) und \(a_y\).

Mathematischer Exkurs: Berechnung der Gesamtbeschleunigung

Nach Abzug der Analogwerte, die für die Beschleunigung 0 stehen, erhält man drei Analogwerte für die Beschleunigung in x-Richtung, y- Richtung und z-Richtung. Diese lassen sich mathematisch als dreidimensionaler Vektor auffassen, dessen Betrag bzw. Länge berechnet werden kann, um (einen Analogwert für) die Gesamtbeschleunigung zu erhalten.

  1. Leite die Formel zur Berechnung der Länge eines dreidimensionalen Vektors anhand der folgenden Skizze her oder recherchiere sie. Ermittle damit eine Formel für einen Analogwert für die Gesamtbeschleunigung.
    Skizze für die Herleitung der Formel für die Länge des Beschleunigungsvektors.
    Skizze für die Herleitung der Formel für die Länge des Beschleunigungsvektors. In blau sind die Komponenten ax, ay und az des Beschleunigungsvektors eingetragen. Die gesuchte Länge ist die rot markierte Diagonale. Die Bestimmung der Länge der orange markierten Diagonale wird hilfreich sein.
  2. Ermittle mit den Formeln für die Beschleunigungen \(a_x\), \(a_y\) und \(a_z\) (aus Schritt 3 der vorherigen Aufgabe) eine Formel für die Gesamtbeschleunigung.

Musikbox für Kinder

Entwickle eine Musikbox für Kinder mit einem einfachen Bedienkonzept: Um das nächste Lied abspielen zu lassen, muss man sie schütteln.

Vorlage: Du kannst das folgende Programm herunterladen und im Open Roberta Lab importieren, um es als Vorlage zu nutzen: beschleunigungssensor-vorlage.xml. Du findest darin eine Funktion "gibBeschleunigung", die die Gesamtbeschleunigung (vgl. mathematischen Exkurs oben) für dich berechnet.

Mögliche große Erweiterung: Nutze eine RFID-Karte als CD. Je nachdem, welche RFID-Karte erkannt wird, werden andere Lieder abgespielt. Diese Idee wird auch beim Tonuino-Projekt genutzt!

Schrittzähler

Entwickle einen Schrittzähler!

Hinweise und Tipps:

  • Wenn du an einem Laptop arbeitest, kannst du den Arduino und das Steckbrett auf dem Laptop platzieren, während du durch die Gegend läufst und auf dem seriellen Monitor Werte sammelst.
  • Überlege, welche der drei Beschleunigungen \(a_x\), \(a_y\) und \(a_z\) am aussagekräftigsten ist. Konzentriere dich auf diese Beschleunigung.
  • Ein Kriterium für einen Schritt lässt sich am besten anhand eines grafischen Verlaufs der Werte finden. Um diesen zu erhalten, gehe folgendermaßen vor:
    • Sende die Beschleunigungswerte an den seriellen Monitor.
    • Um die Messung zu beenden, ziehe das USB-Kabel vom Arduino heraus.
    • Kopiere die Werte aus dem seriellen Monitor in eine neue Textdatei, z. B. "schritte.csv".
    • Ggf. müssen aus den Punkten noch Kommata gemacht werden. Nutze dafür die Funktion "Suchen und Ersetzen". Unter Windows und Linux lässt sich dies mit der Tastenkombination Strg + F starten.
    • Öffne eine Tabellenkalkulation und darin den Reiter "Daten". Importiere die Textdatei.
    • Erzeuge aus den Daten ein Diagramm, z. B. ein Liniendiagramm.

Analoger Hall-Sensor (Magnetfeldsensor)

Mit einem analogen Hall-Sensor lässt sich die Stärke eines Magnetfeldes (verkürzt: eines Magneten) messen. Solche Messungen werden zum Beispiel bei der Pipeline-Inspektion genutzt, um Risse in einer Pipeline zu finden und ihre Größe abzuschätzen. Dabei wird die Pipeline durch sehr starke Magnete magnetisiert. Wenn Risse vorhanden sind, kommt es jedoch zu Änderungen bei der Magnetisierung. Diese können durch die Hall-Sensoren erfasst und gemessen werden.

An dieser Stelle ist ein Video von Youtube eingebettet. Mit deiner Erlaubnis willigst du ein, dass deine Daten an YouTube in den USA übermittelt werden. Weitere Informationen zur Datenverarbeitung von YouTube findest du in der Datenschutzerklärung von YouTube.

Es gibt viele verschiedene Hall-Sensoren - in diesem Kurs wird das Hall-Sensor-Modul "KY-035" genutzt. Das ist eine kleine Platine, auf der der Hall-Sensor AH49E verlötet ist.

Achtung: Hall-Sensoren können leicht mit Transistoren verwechselt werden! Achte genau auf die Aufschrift auf dem schwarzen Kästchen und hole ggf. eine Lupe, um zu erkennen, ob es sich um einen Transistor, einen analogen Hall-Sensor oder einen digitalen Hall-Sensor handelt.

Hall-Sensor.
Hall-Sensor.
Hall-Sensor auf Platine.
Hall-Sensor auf Platine.

Sensor und Modul verfügen über drei Pins, die beim Arduino an 5V, GND und einen analogen Eingang (A0 bis A5) angeschlossen werden, wie der Schaltplan unten zeigt.

Schaltplan zum Anschluss des Hall-Sensor-Moduls an den Arduino.
Schaltplan zum Anschluss des Hall-Sensor-Moduls KY-035 an den Arduino. Falls der Hall-Sensor AH49E ohne das Modul angeschlossen werden soll, istzu beachten, dass die Reihenfolge von VCC und GND auf der Platine vertauscht wird. Beim AH49E ohne Platine ist der GND-Pin dementsprechend in der Mitte.

Die Verbindung mit 5V (Pluspol) und GND (Minuspol) sorgt für den Stromfluss durch den Hall-Sensor. Wenn sich der Hall-Sensor in einem Magnetfeld befindet, dann entsteht in ihm eine sogenannte Hall-Spannung, die im Hall-Sensor noch weiter verstärkt und stabilisiert wird. Am Signalpin S kann man diese Spannung (gegenüber GND) messen, indem man ihn an einen analogen Eingang am Arduino anschließt.

Vereinfachtes Blockdiagramm für den Aufbau des Hall-Sensors.
Vereinfachtes Blockdiagramm für den Aufbau des Hall-Sensors. Der Stromfluss durch das Hallplättchen geht von unten nach oben. Die Hall-Spannung, die links und rechts am Hall-Sensor anliegt, wird mit GND zusammengeführt, sodass die Spannung stets gegenüber GND als Nullniveau gemessen wird.

Theorie: Spannung an analogen Eingängen messen

Am Arduino wird die Spannung, die der Hall-Sensor ausgibt und die mit der Stärke des Magnetfeldes zusammenhängt, über einen eingebauten Analog-Digital-Wandler (engl. analog-to-digital converter, ADC) durch eine ganze Zahl zwischen 0 und 1023 ausgedrückt. Zuerst muss aus diesem Analogwert die Spannung berechnet werden, um anhand der Spannung dann die Stärke des Magnetfeldes zu berechnen.

  1. Berechne mit Hilfe der Tabelle die Spannung, die einem Analogwert von 1 bzw. von 100 entspricht. Du kannst dabei von einem proportionalen Zusammenhang ausgehen.
  2. Gib an, wie man allgemein für den Analogwert \(A\) die zugehörige Spannung \(U\) in Millivolt berechnet.
Analogwert Spannung
0 0 mV
1
100
A
1023 5000m V

Hall-Sensor auslesen

  1. Schließe den Hall-Sensor wie oben angegeben am Arduino an.
  2. Öffne die Konfiguration im Open Roberta Lab und erstelle einen analogen Sensor an dem entsprechenden analogen Eingang, den du gewählt hast.
  3. Erstelle eine Variable für die Spannung U und ermittle mit Hilfe der unten angegebenen Blöcke die Spannung am Signalpin des Hall-Sensors. Gib diese Spannung auf dem seriellen Monitor aus. Die Spannung sollte ohne Magnetfeld bei etwa 2,5 V liegen.
Blöcke für die Berechnung und Ausgabe der Spannung am analogen Eingang.
Blöcke für die Berechnung und Ausgabe der Spannung am analogen Eingang.

Ein Teslameter ist ein Messgerät für die magnetische Flussdichte \(B\), deren Einheit nach dem Physiker Nikola Tesla benannt ist. \(1 \, T\) (Tesla) ist jedoch bereits eine sehr große Magnetfeldstärke. Handelsübliche Magnete liegen eher im Bereich von wenigen Millitesla.

Teslameter bauen

Um die ausgegebene Spannung und ihren Zusammenhang zur magnetischen Flussdichte zu verstehen, ist ein Blick in das Datenblatt des Hall-Sensors notwendig. Die unten / rechts stehende Tabelle enthält einen Auszug aus dem Datenblatt mit den wesentlichen Informationen zur Ruhespannung, die ausgegeben wird, wenn kein Magnetfeld vorliegt, und zur Sensitvität der Spannung, die angibt, wie stark sich die Ruhespannung ändert, wenn sich die magnetische Flussdichte ändert. Je nach Richtung des Magnetfeldes kann sich die Ruhespannung vergrößern oder verkleinern.

Auszug aus dem Datenblatt des Hall-Sensors AH49E:

min. typ. max. unit
quiescent output voltage 2.25 2.5 2.75 V
output voltage sensitivity 1.1 1.6 2.1 mV/GS
  1. Vergleiche den Wert der Ruhespannung, den du in der letzten Aufgabe gemessen hast, mit den Werten aus dem Datenblatt.
  2. Bei der Sensitivität wird die sonst eher unübliche Einheit GS / GAUSS genutzt, die auf den deutschen Mathematiker Carl Friedrich Gauß zurückgeht. Es gilt: \(1 GS = 0,1 mT\). Gib die Sensitvität in der Einheit \(\frac{mV}{mT}\) und erkläre, was sie bedeutet.
  3. Erkläre, wie man anhand der gemessenen Spannung \(U\) in \(mV\) die magnetische Flussdichte \(B\) in \(mT\) berechnet.
  4. Implementiere die Berechnung der magnetischen Flussdichte in dein Programm und gib diese auf dem seriellen Monitor aus. Experimentiere mit verschiedenen Magneten.

Teslameter analysieren

Experimentelle Verbesserung

Laut Datenblatt des Hall-Sensors AH49E kann die Output Voltage Sensitivity schwanken und dementsprechend ungenau können die berechneten Werte für die magnetische Flussdichte sein. Mit einem professionellen Teslameter hingegen lässt sich das selbst gebaute Teslameter eichen.

Miss die Stärke eines Permanentmagneten mit einem professionellen Teslameter und miss die Spannung des Hall-Sensors am Arduino an der gleichen Stelle. Wandle deine Berechnung so ab, dass dein Teslameter den gleichen Wert wie das professionelle Teslameter anzeigt.

Reflexion

  • Wie genau ist das gebaute Teslameter? Ermittle dazu den Unterschied der magnetischen Flussdichte bei einer Änderung des gemessenen Analogwertes um 1.
  • Werden die gemessenen Werte durch das Erdmagnetfeld beeinflusst? Recherchiere die Stärke des Erdmagnetfeldes.

Hintergrund: Der Hall-Effekt

Die Messung der Stärke des Magnetfeldes beruht auf der Messung der Hall-Spannung, die im Hall-Sensor erzeugt wird. Im Hall-Sensor befindet sich ein winziges Hall-Plättchen, durch das Strom fließt. Wenn sich ein Magnetfeld diesem Plättchen nähert, werden die bewegten Elektronen zu einer Seite abgelenkt. Somit besteht auf einer Seite des Plättchens ein Elektronenüberschuss und auf der anderen Seite ein Elektronenmangel. Das bedeutet, dass an diesen beiden Seiten eine Spannung anliegt. Dieser Effekt wird nach dem Physiker Edwin Hall Hall-Effekt genannt.
Es lässt sich zeigen, dass diese Hall-Spannung proportional zur Stärke des Magnetfeldes ist. Daher sind Hall-Sensoren sehr gut für die Messung von Magnetfeldstärken geeignet.

Animation von Fraunhofer IIS, CC BY-SA 4.0, via Wikimedia Commons

Digitaler Hall-Sensor (Magnetfeldsensor)

Bei einem digitalen Hall-Sensor wird das analoge Signal eines Hall-Sensors durch weitere Elektronik so weiterverarbeitet, dass bei der Ausgabe nur noch zwischen Magnetfeld bzw. Magnet anwesend und Magnetfeld bzw. Magnet nicht anwesend unterschieden wird. Dies ist in vielen Anwendungsfällen das Einzige, was wirklich interessiert: So lässt sich damit feststellen, ob der Gurt eines Autos angelegt wurde oder es lässt sich messen, wie oft sich ein Motor oder ein Reifen gedreht hat. Letzteres lässt sich bei Autos oder Fahrrädern nutzen, um aus der Drehzahlmessung die Geschwindigkeit errechnen.

Es gibt verschiedene Hall-Sensoren - in diesem Kurs verwenden wir das Hall-Sensor-Modul KY-003, auf dem der Hall-Sensor A3144 zusammen mit einer LED und einem zugehörigen Widerstand verbaut ist.

Achtung: Hall-Sensoren können leicht mit Transistoren verwechselt werden! Achte genau auf die Aufschrift auf dem schwarzen Kästchen und hole ggf. eine Lupe, um zu erkennen, ob es sich um einen Transistor, einen analogen Hall-Sensor oder einen digitalen Hall-Sensor handelt.

Unten ist der Schaltplan zum Anschließen an den Arduino abgebildet.

Schaltplan zum Anschluss des Hall-Sensor-Moduls KY-003 an den Arduino.
Anschluss des Hall-Sensor-Moduls KY-003 am Arduino. Falls der darauf verwendete Hall-Sensor A3144 ohne das Modul angeschlossen werden soll, ist darauf zu achten, dass VCC und GND auf der Platine vertauscht werden. Beim A3144 ist GND in der Mitte.

Der Hall-Sensor ist nicht im Open Roberta Lab vorkonfiguriert. Er lässt sich aber einfach als digitaler Sensor in der Roboterkonfiguration angeben. Mit dem Befehl gib <digitalen> Wert Sensor <S> erhält man dann den Rückgabewert 0 (Spannung von 0V bzw. Potential LOW) oder den Rückgabewert 1 (Spannung von 5V bzw. Potential HIGH).

Funktionstest des Hall-Sensor-Moduls

  1. Schließe das Hall-Sensor-Modul wie beschrieben an den Arduino an, konfiguriere es als digitalen Sensor und lasse die Werte auf dem seriellen Monitor ausgeben.
  2. Experimentiere mit verschiedenen Magneten, ab wann das Signal umschaltet. Welche Ausgabe erfolgt ohne und welche mit Anwesenheit eines Magnetfeldes?

Hysterese

Laut Datenblatt des Hall-Sensors A3144 verfügt dieser über eine sogenannte Hysterese. Das bedeutet, dass der Wechsel von HIGH zu LOW bei einer anderen Magnetfeldstärke passiert als der Wechsel von LOW zu HIGH. Unten wird dies graphisch dargestellt.

Graph zur Hysterese des Hall-Sensors.

Schematische Darstellung der Hysterese des A3144 am Arduino. Der rote Graph stellt den Wechsel von HIGH zu LOW dar, wenn die magnetische Flussdichte zunimmt. Der blaue Graph stellt den Wechsel von LOW zu HIGH dar, wenn die magnetische Flussdichte wieder kleiner wird. Die Werte für \(B_{OP}, B_{RP}, B_{hys}\) und \(U_{HIGH}, U_{LOW}\) im Diagramm wurden vom Autor beim Anschluss an einen Arduino mit \(VCC = 5V\) mit einfachen Mitteln gemessen und schwanken. Sie stellen daher nur einen ungefähren Anhaltspunkt dar.

Die Begriffe werden im Datenblatt auf S. 2 folgendermaßen erklärt:

Größe Erklärung
\(B_{OP}\) operate point (ouput turns ON)
\(B_{RP}\) release point (ouput turns OFF)
\(B_{hys}\) hysteresis (\(B_{OP}-B_{RP}\))
  1. Erkläre anhand des Diagramms oben in eigenen Worten die Bedeutung der drei Größen und gib ihren jeweiligen Wert an.

  2. Begründe anhand eines Signals für die magnetische Flussdichte \(B\), das um den Wert \(B \approx 9mT\) schwankt, warum es sinnvoll ist, dass der Hall-Sensor über eine Hysterese verfügt.

Fahrradtacho

Mit dem digitalen Hall-Sensor kann man registrieren, wann der Reifen eines Fahrrads eine Umdrehung ausgeführt hat (siehe Bild am Anfang dieses Abschnitts). Nutze dies und baue damit einen einfachen Fahrradtacho, der die Geschwindigkeit berechnet und anzeigt!