Sensoren (1)

Veröffentlicht von

Inhalte

  • Einfache Sensoren: LDR, Thermistor, …
  • Benz-Formel
  • Die map -Funktion

    Einführung

Viele Anwendungen erfordern die Messung physikalischer Größen wie Licht, Temperatur, Druck, Distanz, … Viele elektronische Bauteile verhalten sich variabel unter Einwirkung von einer oder mehrerer dieser Größen (z.B. verändert sich der Widerstand unter Einfluss der Temperatur). Diese Bauteile können daher als Sensoren für diese Größen verwendet werden.
Im Folgenden wird eine Übersicht über die Anwendung dieser Sensoren gegeben.

Analoge Sensoren mit variablen Widerstand

  • Photowiderstände (Light Dependend Resistor – LDR) sind Bauteile mit einem variablen ohmschen Widerstand. Je nach einfallender Lichtmenge ändert sich der Widerstandswert.
  • Thermistoren haben einen variablen Widerstand abhängig von der Temperatur, der sie ausgesetzt sind.
  • Drucksensoren (Force Sensing Resistor – FSR) ändern ihren Widerstand in Abhängigkeit mit dem auf sie ausgeübten Druck.
  • u.v.m

Schaltung für Sensoren mit variablen Widerstand

Die Bauteile mit variablen Widerstand werden oft mit einem zweiten Widerstand in Serie geschalten (Spannungsteiler). Die Spannung zwischen diesen beiden Widerständen ist proportional zum Verhalten des variablen Widerstands.

analog_sensor_schaltung_Schaltplan

Der Widerstand des Sensors ist zwar variabel, bewegt sich aber zwischen einem Minimum und einem Maximum. Diese Werte können entweder aus dem Datenblatt abgelesen werden oder mit einem Multimeter gemessen werden.

Abhängig von diesen Werten muss der zweite, feste Widerstand (Referenzwiderstand) dimensioniert werden. Ziel ist es den Messbereich des analogen Inputs des Arduinos möglichst gut auszunutzen. (Erläuterung: Die analog-Digital-Wandler des Arduinos arbeiten mit einer Auflösung von 1024 Werten (10 Bit) zwischen Minimum (0V) und Maximum (5V)). Wenn die gemessenen Werte beispielsweise zwischen 200 und 300 liegen, dann wird der Gesamtbereich des ADCs nicht gut ausgenutzt. Über einen passenden Referenzwiderstand am Spannungsteiler kann dieser Bereich vergrößert werden, wobei auch mit der Wahl eines idealen Widerstands nie der gesamte Bereich zw. 0 und 1023 ausgenutzt werden wird.)

Gerne wird zur Findung des Referenzwiderstandswerts die Benz-Formel (nach Axel Benz) verwendet:

benz_formel

Beispiel 1: Lichtmessung mit einem LDRs

Folgender Aufbau demonstriert die Funktionsweise eines LDRs. Er variiert seinen Widerstand mit dem einfallenden Licht. Um die Größe des Referenzwiderstands zu ermitteln messen wir zunächst den Widerstand des LDRs bei Dunkelheit (max) und bei Lichteinfall (min). Für den hier verwendeten LDR werden folgende Werte gemessen:

  • Minimum = 570 Ω
  • Maximum = 4,7 kΩ

Mit der Benz-Formel wird der Referenzwiderstand berechnet

benz_formel_werte

Ein solcher Widerstand existiert in keinem zur Verfügung stehenden Sortiment, daher wird der nächstliegende gewählt – in diesem Beispiel ist das 1.5 kΩ.

analog_sensor_schaltung_Steckplatine

Folgender Code basiert auf dem Beispiel File -> Examples -> 03.Analog -> AnalogInOutSerial (das Beispiel wurde leicht modifiziert). Nach dem Upload auf das Board kann man im Serial Monitor die gemessenen Werte beobachten.

Hält man nun den LDR mit der Hand zu, dann steigen die gemessenen Werte aufgrund der Widerstandsänderung an. Wir haben unseren ersten Sensor implementiert.

Code-Analyse:

In diesem Beispiel wird in Zeile XX die Spannungsmessung mit analogRead  vorgenommen. Anschließend wird der gemessene Wert noch mit der map-Funktion (unten beschrieben) skaliert und in die Variable outputValue  gespeichert. Anschließend erfolgt eine Ausgabe der beiden Variablen am Serial Monitor.

Die map-Funktion

Die Widerstände der Bauteile sind zwar variabel, bewegen sich aber immer innerhalb eines bestimmten Bereichs. Dementsprechend sind auch die gemessenen Spannungen immer in einem bestimmten Bereich, der aber nicht die ganze Größe des Bereichs (0-1023) ausnützt. Eine Möglichkeit die gemessenen Werte auf einen anderen Bereich zu skalieren (d.h. vergrößern oder verkleinern) ist die map -Funktion.

Für die map -Funktion werden drei Dinge definiert:

  • Ein zu konvertierender Wert
  • Der Eingangs-Wertebereich (definiert über ein Minimum und ein Maximum)
  • Der Ausgangs-Wertebereich (definiert über ein Minimum und ein Maximum)Der zu konvertiertende Wert ist Verhältnis zum Eingangswertebereich zu sehen. Der Wert wird nun so verändert, dass er im selben Verhältnis im Ausgangswertebereich zu sehen ist.

map(Wert, InputMin, InputMax, OutputMin, OutputMax)

Beispiel 1

InputMin: 200, InputMax: 600
OutputMin: 0, OutputMax1023

Wert: 200 -> gemappter Wert: 0
Wert: 600 -> gemappter Wert 1023
Wert: 400 -> gemappter Wert: 511
Wert: 500 -> gemappter Wert: 767

Beispiel 2

InputMin: 200, InputMax: 600
OutputMin: 255, OutputMax 0

Wert: 200 -> gemappter Wert: 255
Wert: 600 -> gemappter Wert 0
Wert: 400 -> gemappter Wert: 128
Wert: 500 -> gemappter Wert: 64

Hier der zugehörige Test-Code:

 

Aufgabe

[VIDEO]

  • Passen Sie Beispiel 1 so an, dass die gemessenen Eingangswerte den Ausgangsbereich 0 bis 255 möglichst gut abdecken.
  • Ersetzen Sie den LDR durch einen Thermistor, passen Sie den Widerstandswert entsprechend an und modifizieren die Werte der Map-Funktion wie in der vorigen Aufgabe.

Kommentar hinterlassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.