Der ALS-PT19 Lichtsensor ist ein einfacher und zuverlässiger Sensor, der sich ideal für Arduino-Projekte eignet. Mit seiner Fähigkeit, Lichtstärken präzise zu messen, ist er besonders für Einsteiger eine hervorragende Wahl, um in die Welt der Elektronik und Programmierung einzutauchen. In diesem Beitrag zeige ich, wie der Sensor funktioniert, wie er angeschlossen wird und welche spannenden Anwendungen damit möglich sind.
Der ALS-PT19 Lichtsensor ist nicht nur einfach in der Anwendung, sondern auch extrem kostengünstig. Ich habe diesen Sensor für nur wenige Cent auf AliExpress.com bestellt. Im Vergleich dazu verlangen Händler in Deutschland oft bis zu 8 €, was den Preis deutlich in die Höhe treibt. Hier lohnt es sich, ein wenig Geduld aufzubringen, um durch den Direktkauf beim internationalen Anbieter ordentlich zu sparen.
Inhaltsverzeichnis
- Aufbau des analogen Lichtsensors ALS-PT19
- Aufbau der Schaltung – ALS-PT19 am Arduino
- Programmieren des kleinen Sensors in der Arduino IDE
- Lichtsensor & Laserdiode als Lichtschranke
- Downloads
- Vergleich – ALS-PT19 und Fotowiderstand
Aufbau des analogen Lichtsensors ALS-PT19
Der analoge Lichtsensor ALS-PT19 ist eine ideale Wahl, um Projekte mit Lichtmessung oder Lichtschranken zu erweitern. Besonders praktisch ist, dass der Sensor RoHS-konform ist und eine spektrale Reaktion besitzt, die der Wahrnehmung des menschlichen Auges sehr nahekommt. Dies wird durch ein hohes Ablehnungsverhältnis gegenüber Infrarotstrahlung ermöglicht.
Der Aufbau ist dabei äußerst simpel:
- Der – Pin wird mit Masse (GND) verbunden.
- Der + Pin erhält eine Stromversorgung von 2,5V bis 5,5V.
- Am OUT-Pin wird die analoge Spannung ausgegeben, die proportional zur einfallenden Lichtmenge steigt.
Dank dieser einfachen Handhabung lässt sich der ALS-PT19 schnell und problemlos in unterschiedlichste Projekte integrieren.
Im Beitrag “Arduino Lektion 4: LED mit Fotowiderstand“ habe ich dir bereits eine kleine Schaltung mit einem ähnlichen Bauteil vorgestellt: dem Fotowiderstand. Dieser ist zwar deutlich größer als der ALS-PT19, liefert aber ebenso zuverlässig die Werte der Helligkeit. Beide Bauteile bieten einfache Möglichkeiten, Lichtstärken zu messen, wobei der ALS-PT19 durch seine kompakte Bauweise besticht.
Aufbau der Schaltung – ALS-PT19 am Arduino
Durch seinen einfachen Aufbau lässt sich der ALS-PT19 Lichtsensor schnell und einfach mit einem Arduino verbinden. Für die Schaltung benötigst du lediglich folgende Bauteile:
- 1x ALS-PT19 Lichtsensor*
- 1x Arduino* (z. B. Uno, Nano oder Mega)
- 3x Jumper-Kabel* (für die Verbindungen)
- Optional: Steckbrett* (Breadboard) für eine flexible Verdrahtung
Mit diesen wenigen Komponenten kannst du die Lichtmessung in kürzester Zeit starten.
Hinweis von mir: Die mit einem Sternchen (*) markierten Links sind Affiliate-Links. Wenn du über diese Links einkaufst, erhalte ich eine kleine Provision, die dazu beiträgt, diesen Blog zu unterstützen. Der Preis für dich bleibt dabei unverändert. Vielen Dank für deine Unterstützung!
In der nachfolgenden Schaltung integriere ich zusätzlich eine 5 mm LED* welche über einen 220 Ohm Vorwiderstand* an einen digitalen Pin angeschlossen wird.
Programmieren des kleinen Sensors in der Arduino IDE
Der kleine Sensor verfügt über einen analogen Ausgang, welcher mit einem der sechs analogen Eingänge (A0 bis A5) des Mikrocontrollers verbunden wurde und somit mit wenigen Zeilen Code ausgelesen werden kann.
Zusätzlich habe ich noch wie erwähnt eine 5 mm LED an einen digitalen PWM Pin angeschlossen. Diese LED leuchtet um so stärker, je weniger der Sensor beleuchtet wird.
//analoger Lichtsensor ALS-PT19 am //analogen Pin A0 angeschlossen #define sensor A0 //LED am digitalen PWM Pin D3 angeschlossen #define led 3 void setup() { //beginn der seriellen Kommunikation mit 115200 Baud Serial.begin(9600); //der Pin des Sensors wird als Eingang definiert pinMode(sensor, INPUT); //der Pin der LED wird als Ausgang definiert pinMode(led, OUTPUT); } void loop() { //auslesen des Sensorwertes unsigned int value = analogRead(sensor); //mappen des Wertes welcher zwischen 0 und 1023 sein kann //auf den gültigkeitbereich eines PWM Signals (0 bis 255) byte brightness = map(value, 0, 1023, 0,255); //schreiben der Helligkeit an die LED mit einem PWM Signal analogWrite(led, brightness); //ausgeben des Sensorwertes auf der seriellen Schnittstelle Serial.println(value); //einlegen einer kleinen Pause von 50 Millisekunden delay(50); }
Lichtsensor & Laserdiode als Lichtschranke
Eine der einfachsten Anwendungen des analogen Lichtsensors ALS-PT19 ist die Verwendung in Kombination mit einer Laserdiode als Lichtschranke. Hierbei wird der Laserstrahl auf den Sensor gerichtet, und solange der Strahl nicht unterbrochen wird, misst der Sensor eine konstante Lichtintensität. Sobald der Strahl unterbrochen wird, erkennt der Sensor den Abfall der Lichtintensität, was zur Auslösung eines Signals genutzt werden kann. Diese einfache, aber effektive Technik eignet sich hervorragend für Projekte wie Sicherheitsvorrichtungen, Zählmechanismen oder automatische Türen.
Für den Aufbau benötigst du:
- einen analogen Lichtsensor ALS-PT19*,
- eine Laserdiode*,
- einige Jumper-Kabel*,
- einen Arduino*
Je nach Abstand kann auch eine ultrahelle LED ausreichend sein!
Da ich die Laserdiode sowie den Sensor auf einem Breadboard stecken möchte, habe ich mir zwei 3fach Buchsenleisten mit langen Beinchen genommen und diese mit einer Flachzange um 90° abgewinkelt.
Vorsicht bei der Nutzung der Laserdiode (650 nm)
Laser können gefährlich sein, wenn sie falsch verwendet werden. Hier ein paar wichtige Hinweise, um dich und andere zu schützen:
- Schau niemals in den Laserstrahl – ernsthafte Augenschäden drohen!
- Nutze eine Schutzbrille und halte den Laser von Kindern fern.
- Handle verantwortungsvoll, die Nutzung erfolgt auf eigenes Risiko.
Schaltung – Lichtschranke mit ALS-PT19 und Laserdiode am Arduino
Mit einer starken Laserdiode* kann man eine Lichtschranke aufbauen und damit eine Tür oder ähnliches Überwachen.
Arduino UNO R3 | |
---|---|
ALS-PT19 | |
– | GND |
OUT | AO |
+ | 3.3V |
Piezo Buzzer | |
Pin 1 | D3 |
Pin 2 | GND |
Laserdiode | |
– | GND |
+ | 5V |
S | D8 |
Programmieren in der Arduino IDE
Die Laserdiode benötigt einen digitalen Pin über welchen wir diese aktivieren und deaktivieren können. In der Funktion setup wird dieser Pin einfach auf HIGH gesetzt.
//analoger Lichtsensor ALS-PT19 am //analogen Pin A0 angeschlossen #define sensor A0 //der Pin der Laserdiode ist am digitalen Pin D8 angeschlossen #define laserDiode 8 //der Pin des Piezo Buzzers ist am digitalen Pin D3 angeschlossen #define buzzer 3 //Wert für den Alarm, bei unterschreiten soll ein Alarmton //über den Piezo Buzzer erzeugt werden const unsigned int ALARM_THRESHOLD = 600; void setup() { //beginn der seriellen Kommunikation mit 115200 Baud Serial.begin(9600); //der Pin des Sensors wird als Eingang definiert pinMode(sensor, INPUT); //der Pin der Laserdiode wird als Ausgang definiert pinMode(laserDiode, OUTPUT); //der Pin des Piezo Buzzers wird als Ausgang definiert pinMode(buzzer, OUTPUT); //aktivieren der Laserdiode digitalWrite(laserDiode, HIGH); } void loop() { //auslesen des Sensorwertes unsigned int value = analogRead(sensor); //Wenn der aktuelle Wert des analogen Lichtsensors //den Schwellwert unterschreitet, dann... if(value < ALARM_THRESHOLD){ //einen Ton mit einer Frequenz von 1000 Hz und einer //Dauer von 150 ms. erzeugen. tone(buzzer, 1000, 150); } }
Schaltung – Zähler mit Lichtschranke & Segmentanzeige, ALS-PT19 und Laserdiode am Arduino
Über die Segmentanzeige* können wir einen Zähler anzeigen lassen und damit entweder Besucher zählen oder Stückgut auf einem Förderband zählen.
Die Schaltung erweitern wir um die Segmentanzeige welche zwei digitale Pins belegt und die Stromversorgung von der Laserdiode abzweigt.
Arduino UNO R3 | |
---|---|
Segmentanzeige | |
CLK | D5 |
DIO | D4 |
VCC | 5V |
GND | GND |
Programmieren in der Arduino IDE
Im Programm integrieren wir die Bibliothek TM1637Display welche vom GitHub Repository chamie / TM1637 als ZIP-Datei heruntergeladen werden kann.
#include <Arduino.h> //Einbinden der Bibliothekt zum ansteuern des Displays #include <TM1637Display.h> //Pin CLK von der Segmentanzeige am digitalen Pin D5 angeschlossen #define CLK 5 //Pin DIO von der Segmentanzeige am digitalen Pin D4 angeschlossen #define DIO 4 //analoger Lichtsensor ALS-PT19 am //analogen Pin A0 angeschlossen #define sensor A0 //der Pin der Laserdiode ist am digitalen Pin D8 angeschlossen #define laserDiode 8 //der Pin des Piezo Buzzers ist am digitalen Pin D3 angeschlossen #define buzzer 3 //Wert für den Alarm, bei unterschreiten soll ein Alarmton //über den Piezo Buzzer erzeugt werden const unsigned int ALARM_THRESHOLD = 600; //erzeugen des Display Objektes mit den Parametern für die PINs TM1637Display display(CLK, DIO); unsigned int index = 0; void setup() { //der Pin des Sensors wird als Eingang definiert pinMode(sensor, INPUT); //der Pin des Sensors wird als Eingang definiert pinMode(sensor, INPUT); //der Pin der Laserdiode wird als Ausgang definiert pinMode(laserDiode, OUTPUT); //der Pin des Piezo Buzzers wird als Ausgang definiert pinMode(buzzer, OUTPUT); //aktivieren der Laserdiode digitalWrite(laserDiode, HIGH); //setzen der maximalen Helligkeit an der Segmentanzeige display.setBrightness(10); uint8_t data[] = { 0xff, 0xff, 0xff, 0xff }; //Setzt die Anzahl der möglichen Segmente. display.setSegments(data); //Anzeigen des Counters mit führenden Nullen display.showNumberDec(index, true, 4, 4); } void loop() { //auslesen des Sensorwertes unsigned int value = analogRead(sensor); //Wenn der aktuelle Wert des analogen Lichtsensors //den Schwellwert unterschreitet, dann... if (value < ALARM_THRESHOLD) { //einen Ton mit einer Frequenz von 1000 Hz und einer //Dauer von 150 ms. erzeugen. tone(buzzer, 1000, 150); //erhöhen des Indexes für den Counter sowie ausgeben auf //der Segmentanzeige display.showNumberDec(++index, true, 4, 4); //eine Pause von 500 Millisekunden einlegen delay(500); } }
Downloads
Vergleich – ALS-PT19 und Fotowiderstand
Vergleichen wir noch kurz den Lichtsensor mit einem Fotowiderstand, mit welchem wir ebenso das einfallende Licht “messen” können.
Der sehr einfache Fotowiderstand liefert einen Wert für einfallendes Licht, jedoch sehr ungenau und bei mir in einer Range von 7 bis maximal 731, wobei der Gültigkeitsbereich von analogen Werten am Arduino zwischen 0 und 1023 sind. Hier ist der ALS-PT19 deutlich genauer, bzw. liefert eine größere Range.