Helligkeitssensor

Erstellt von Patrick Dietrich
Benötigtes Material
  • Helligkeitssensor
  • Arduino Uno
  • USB-Kabel für den Arduino
  • 3x MW Kabel
Als PDF
PDF-Download
Arbeitsblatt
PDF-Download Lehrer
Lehrerblatt

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

HelligkeitssensorArduino
GNDGND
Vcc5V
AOAnalog In (A0-A5)
Schaltplan

Schaltplan

Code-Beispiel

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
}

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.

Das Material und dessen Inhalte sind - sofern nicht anders angegeben - lizenziert unter der Creative Commons Lizenz CC BY-NC-SA 4.0 (für den vollständigen Lizenztext siehe https://creativecommons.org/licenses/by-sa/4.0/legalcode )