Beschreibung
Der Helligkeitssensor ist ein Sensor, der Lichtintensität misst. Dazu
wird ein Fotowiderstand genutzt, der die Lichtintensität für den Arduino
in Zahlen zwischen 0 (hell) und 1023 (dunkel) übersetzt. Der
Fotowiderstand übernimmt hierbei die Hauptaufgabe, denn er besitzt einen
variablen Widerstand, der abhängig von der Helligkeit ist, die ihn
umgibt. Diese Variable kann ausgelesen, in Daten umgewandelt und
schlussendlich wiedergegeben werden.
Der Fotowiderstand ist bei der MH-Sensor-Series auf einer Art
“Basis-Platine” befestigt, welche auch bei anderen Sensoren benutzt
wird. Im Gegensatz zum Hindernissensor benötigt der Helligkeitssensor
kein Potentiometer. Es empfiehlt sich, dieses so weit nach links zu
drehen, bis die entsprechende LED aus geht, um Licht zu vermeiden,
welches das Messergebnis verfälschen könnte.
Darüber hinaus besitzt der Helligkeitssensor 4 Pin-Anschlüsse. Vcc und
Gnd für die Stromversorgung und dann noch DO und AO. DO steht für
“digital output” und dieser liefert nur einen von zwei Werten: eine “0”
für “hell” oder eine “1” für “dunkel”. Viel interessanter ist der
“analog output” AO. Dieser liefert nämlich insgesamt 1024 Zahlenwerte
von “0” bis “1023” und erlaubt uns also, auch verschiedene
Helligkeitsstufen zu erkennen. Als Anzeige verwenden wir den seriellen
Monitor.
Verkabelung
GND | GND |
Vcc | 5V |
AO | Analog In (A0-A5) |
Code
Mithilfe des Programms lässt sich der aktuelle Helligkeitswert als Zahl
im seriellen Monitor wiedergeben.
int sensor = A0; // Bestimme den Analogen Pin A5 als Anschluss für den Sensor
void setup() {
Serial.begin(9600); // Beginne die Kommunikation mit dem seriellen Monitor
pinMode(sensor, INPUT); // Definiere den Sensor als Input
}
void loop() {
Serial.println(analogRead(sensor)); // Lies den Wert des Sensors aus
// und drucke diesen im seriellen Monitor
}
Aufgaben
Beschreibe, was der Code tut!
Der Arduino wartet auf Daten vom Helligkeitssensor und zeigt diese dann
auf dem seriellen Monitor an.
Teste den Sensor selbst, indem Du die Messwerte mit Licht und denen bei
Dunkelheit vergleichst, was ist das Ergebnis?
Aufgaben
Beschreibe, was der Code tut!
Der Arduino wartet auf Daten vom Helligkeitssensor und zeigt diese dann
auf dem seriellen Monitor an.
Teste den Sensor selbst, indem Du die Messwerte mit Licht und denen bei
Dunkelheit vergleichst, was ist das Ergebnis?
Häufige Fragen und Probleme
Mein Sensor zeigt nur eine 0 oder 1 bzw. Zahlen zwischen 280 und 300.
Achte darauf, dass du den analogen Output des Sensors mit einem Analogen
Pin des Arduinos verbunden hast und dass du im Code analogRead
benutzt
und nicht digitalRead
.
Mein Sensor reagiert nicht auf Licht.
Achte hierbei auf die richtige Verkabelung und darauf, dass du im Code
analogRead
benutzt und nicht digitalRead
. Sollte es dann immer noch
nicht klappen gucke dir den Fotowiderstand genauer an und vor allem die
Lötstellen.
- Sind diese vielleicht schlecht gelötet, so dass kein Strom fließen
kann?
- Erkennst du vielleicht Beschädigungen am Fotowiderstand?
Ich erreiche nie den Maximalwert für Dunkelheit von 1023.
Damit du das Spektrum von 0 bis 1023 voll ausnutzen kannst, musst du den
Fotowiderstand möglichst von allen unerwünschten Lichtquellen
fernhalten. Hierbei gilt es auch zu beachten, dass der Fotowiderstand
nicht nur von oben auf Licht reagiert, sondern auch von unten und von
der Seite. Um die Seiteneffekte einzudämmen, kannst du ein schwarzes
oder dunkles Tape nehmen und einen kleinen Streifen davon vorsichtig um
den Fotowiderstand kleben. Achte hierbei darauf, dass du den Widerstand
nicht versehentlich von oben abklebst. Anschließend kannst du auch noch
die kleine grüne LED abkleben, die sich direkt über den Anschlüssen auf
dem Sensor befindet.
Ich möchte den seriellen Monitor durch einen anderen Aktor ersetzen.
Wenn du einen Aktor einbauen willst, der abhängig vom Sensor agiert,
dann brauchst du dir lediglich das passende Arbeitsblatt für den
gewünschten Aktor zu holen und ersetzt dort, wo ein Zahlenwert gefragt
ist, den Code durch das dir nun bekannte analogRead()
vom
Helligkeitssensor.
Aufgepasst!: Der Helligkeitssensor gibt Zahlen zwischen 0 und 1023
aus. Nicht jeder Aktor arbeitet auch mit dieser Spanne. Ein Servomotor
arbeitet zum Beispiel nur mit Zahlen zischen 0 und 180. Achte darauf,
dass du dann vorher eine Skalierung in den Code einbaust, damit du Werte
zwischen 0 und 180 hast. Hierfür kannst du eine weitere Variable nehmen,
die du zu Beginn des Codes auf 0 setzt und dann später Beispielsweise
wert = analogRead(sensor)/ 5;
schreibst. So legst du fest, dass die
maximale Zahl nicht mehr 1023 ist, sondern 1023/5, also gerundet 204.