Light dependent resistor

3.4 LDR: Light dependent resistor

Schema

LDR staat voor “Light Dependant Resistor” of photoresistor, een licht gevoelige weerstand dus. Dit is een weerstand waarvan de weerstandswaarde zal veranderen met de hoeveelheid licht die invalt aan de bovenzijde van de component. In de meeste gevallen zal de weerstand in donkertoestand hoog zijn ~200 kOhm en laag in belichtte toestand ~10 kOhm. Het gevoelige materiaal in deze sensor is in veel gevallen “cadmium sulfide” voor goedkope photoresistors. Een LDR is een “2-terminal device”, dus een component met 2 pootjes. Deze heeft geen specifieke polariteit. Om de sensor uit te lezen zullen we gebruik moeten maken van een spanningsdeler. Bouw je schakeling op, zoals hieronder aangegeven.

Schema

Moest het berekenen van de weerstand niet lukken, een opfrissing van de spanningsdeler en spanning-stroom-vermogen kan je hier terugvinden in video-vorm.

De code die nodig is om de photoweerstand uit te lezen, lijkt erg op de code van de potentiometer die we in Labo 1 gezien hebben. In de code hieronder is er bijgevolg weinig aan te passen: enkel de print-statements (… vervangen door iets zinvol!).

#include <TFT_eSPI.h>

TFT_eSPI tft = TFT_eSPI(); // Constructor for the TFT library

#define ADCPIN 2
#define VOLTSPERBIT 3.3 //0x0FFF

#define DISPLAYTEXT "Labo2 - LDR"
void setup(){
  Serial.begin(115200);
  printTitel();
}

void loop(){
 int AnalogValue = analogRead(ADCPIN);
 Serial.print("ADCValue=");
 Serial.print(...);
 Serial.print(", Voltage =");
 Serial.println(...);

 delay(1000);
}

// Print titel
void printTitel(){
 tft.init();
 tft.setRotation(3);       //setRotation: 1: Screen in landscape(USB to the right)
 tft.fillScreen(TFT_BLACK);     //Fill screen with random colour
 tft.setCursor(0, 0, 4);      //(cursor at 0,0; font 4, println autosets the cursor on the next line)
 tft.setTextColor(TFT_BLACK, TFT_YELLOW); // Textcolor, BackgroundColor; independent of the fillscreen
 tft.println(DISPLAYTEXT);     //Print on cursorpos 0,0
}

Basic lichtsluis

Afbeelding die het principe van de lichtsluis prachtig illustreert.

  1. Sluit nu een LED aan op je ESP, deze mag constant aan zijn (3.3V), let er op dat je ook steeds een weerstand (220 Ohm) aansluit om de stroom te beperken.
  2. Richt de uitgang van de LED op de LDR, maar let op dat je er nog steeds iets tussen kan schuiven om het licht te blokkeren.
  3. Vervang R1 uit het bovenstaande schema door je potentiometer, zodat je de stroom door de LDR kan regelen! Denk na over welke pootjes van de potentiometer je moet gebruiken!
  4. Lees de toestand van de LDR in via “digitalRead()”.
  5. Regel de Potmeter af zodat je de licht- en donkertoestand digitaal kan inlezen!

Betere lichtsluis

Vul de code hieronder aan, zodat je de status van je lichtsluis een interrupt triggert wanneer een object passeert.

#define Triggerpin 2

volatile bool triggered = false;

void setup(){
  Serial.begin(115200);
  attachInterrupt(Triggerpin, pinLowISR, FALLING);
}

void loop(){
 int digitalVal = digitalRead(Triggerpin);
 Serial.print("digitalValue=");
 Serial.println(...);

 if (triggered) {
...//Doe iets 
 }

 delay(1000);
}

void pinLowISR(){
  triggered = true;
}

Nog betere lichtsluis

Pas de code opnieuw aan, zodat je lichtsluis ook triggert wanneer het object weer verdwenen is!

Nog nog betere betere lichtsluis

  1. Sla de tijd op wanneer je lichtsluis geblokkeerd wordt.
  2. Sla de tijd nog eens op wanneer de lichtsluis terug vrijgegeven wordt.
  3. Print de tijd hoe lang de lichtsluis geblokkeerd was! Denk er aan dat er naast de “millis()” functie ook een “micros()” functie bestaat!

Roep de docent, demonstreer de functionaliteit van de schakeling.

Tip: Je kan deze functionaliteit ook online aankopen, in plaats van zelf aan de slag gaan met potentiometers als trimmer. Een bijkomend voordeel van de onderstaande modules is dat ze vaak beschikken over een opamp schakeling om het analoge signaal van de sensor om te zetten in een digitaal signaal wat je eenvoudig uit kan lezen! De onderstaande modules zijn (van L naar R): Lichtsluis (LED + Detector in U-Vorm, met digitale uitgang), LDR met digitalisatie (Zelf nog zorgen voor lichtbron), IR reflectiesensor (LED+Detector in reflectiemodus)

ANS

ANS vraag 4a, 4b, 4c, 4d