Code zoeken

Arduino-code en video voor een lichtsensormodule met relais

Arduino-code en video voor een lichtsensormodule met relais

In deze tutorial leren we hoe we een lichtsensormodule kunnen gebruiken om een AC-lamp te bedienen. Het project zorgt ervoor dat de lamp automatisch aangaat wanneer het donker is en uitgaat wanneer het licht wordt. Dit is vooral handig voor toepassingen zoals buitenverlichting of garagelampen. Aan het einde van deze tutorial heb je een werkend systeem dat effectief licht kan beheren op basis van de omgevingsomstandigheden. (in video op 02:15)

LDR light sensor module

We gebruiken een lichtsensormodule, die een lichtafhankelijke weerstand (LDR) bevat voor het detecteren van lichtniveaus, en een relais om de AC-lamp te bedienen. Het systeem bevat ook een potentiometer om de gevoeligheid van de lichtdetectie aan te passen. Deze opstelling maakt zowel digitale als analoge bediening van het licht mogelijk op basis van het omgevingslicht dat door de sensor wordt gedetecteerd. Voor gedetailleerde uitleg, raadpleeg de video op 04:30.

Hardware Uitgelegd

De belangrijkste componenten van deze build zijn de lichtsensormodule, het relais en de Arduino. De lichtsensormodule bestaat uit een LDR die van weerstand verandert op basis van lichtintensiteit en een digitale of analoge uitgang biedt. Het relais fungeert als een schakelaar die een hoogspannings-AC-lamp kan bedienen terwijl het veilig wordt aangestuurd door de laagspannings-Arduino. Deze scheiding is cruciaal voor veiligheid en functionaliteit.

Het relais heeft drie primaire pinnen: gemeenschappelijk (COM), normaal open (NO) en normaal gesloten (NC). Wanneer geactiveerd, verbindt het relais de gemeenschappelijke pin met de normaal open pin, waardoor stroom door de aangesloten lamp kan stromen. Dit mechanisme stelt het relais in staat om de lamp te bedienen op basis van de signalen die van de Arduino worden ontvangen.

Datasheet Details

Fabrikant Generiek
Onderdeelnummer Lichtsensormodule
Logica/IO-spanning 5 V
Voedingsspanning 5 V
Uitgangsstroom (per kanaal) 10 mA
Piekstroom (per kanaal) 20 mA
PWM-frequentierichtlijn N/A
Ingangslogische drempels 2,5 V (hoog) / 0,8 V (laag)
Spanningsval / RDS(on) / verzadiging 0,2 V typisch
Thermische limieten 85 °C
Behuizing Module
Opmerkingen / varianten Bevat potentiometer voor gevoeligheidsaanpassing

 

  • Zorg voor goede warmteafvoer voor het relais.
  • Gebruik een pull-up weerstand voor de lichtsensor-ingang.
  • Controleer spanningswaarden voordat u AC-apparaten aansluit.
  • Vermijd het aanraken van blootliggende draden wanneer het systeem is ingeschakeld.
  • Pas de potentiometer aan voor de gewenste lichtgevoeligheid.

Bedradingsinstructies

Arduino wiring for LDR light sensor module

Om de lichtsensormodule en het relais op de Arduino aan te sluiten, begin met het verbinden van de VCC-pin van de lichtsensormodule met de 5V-pin op de Arduino. Verbind vervolgens de aardingspin van de lichtsensor met een GND-pin op de Arduino. De digitale uitgangspin van de lichtsensor moet worden verbonden met pin 2 op de Arduino, terwijl de analoge uitgangspin wordt verbonden met A0 voor analoge metingen.

Nu, voor het relais, verbind de VCC-pin met de 5V-pin op de Arduino en de aardingspin met GND. De ingangspin van het relais moet worden verbonden met pin 9 op de Arduino. Verbind ten slotte één draad van uw AC-lamp met de gemeenschappelijke pin (COM) van het relais en de andere draad met de normaal open pin (NO). Deze opstelling stelt het relais in staat om de AC-lamp te bedienen op basis van de metingen van de lichtsensor.

Codevoorbeelden & Uitleg

In de basis digitale code voor de lichtsensor definiëren we de pinnen voor de sensor en het relais. De setup-functie initialiseert de seriële communicatie en stelt de pinmodi in:

#define LIGHT 2 // definieer pin 2 voor sensor
#define RELAY 9 // definieer pin 9 voor relais

void setup() {
  Serial.begin(9600); // setup Seriële Monitor
  pinMode(LIGHT, INPUT_PULLUP); // definieer pin als ingangssensor
  pinMode(RELAY, OUTPUT); // definieer pin als UITGANG voor relais
}

Deze code stelt pin 2 in als ingang voor het lezen van de lichtsensor en pin 9 als uitgang om het relais te bedienen. De seriële monitor wordt ook geïnitialiseerd om feedback te geven over de lichtstatus.

Binnen de loop-functie lezen we continu de sensortoestand:

int L = digitalRead(LIGHT); // lees de sensor
if (L == 1) {
  Serial.println(" licht is AAN");
  digitalWrite(RELAY, LOW); // zet het relais AAN
} else {
  Serial.println("  === licht is UIT");
  digitalWrite(RELAY, HIGH); // zet het relais UIT
}

Deze logica controleert de toestand van de lichtsensor en zet het relais dienovereenkomstig aan of uit, met feedback via de seriële monitor.

In de geavanceerde analoge code integreren we een methode om waarden van de analoge uitgang te lezen:

if (digital == true) {
  int L = digitalRead(LIGHT); // lees de sensor
  if (L == 1) {
    Serial.println(" licht is AAN");
    digitalWrite(RELAY, LOW); // zet het relais AAN
  } else {
    Serial.println("  === licht is UIT");
    digitalWrite(RELAY, HIGH); // zet het relais UIT
  }
} else {
  int a0Value = analogRead(A0); // lees A0-waarde
  if (a0Value >= LightValue) {
    Serial.print(analogRead(A0));
    Serial.println(" Licht is AAN");
    digitalWrite(RELAY, LOW); // zet het relais AAN
  } else {
    Serial.print(analogRead(A0));
    Serial.println("  === licht UIT");
    digitalWrite(RELAY, HIGH); // zet het relais UIT
  }
}

Deze sectie maakt het mogelijk om de gevoeligheid aan te passen op basis van de analoge uitlezing van de lichtsensor, wat meer controle biedt over de drempelwaarden voor het activeren van het licht.

Demonstratie / Wat te Verwachten

Wanneer de opstelling compleet is en ingeschakeld, zou het licht moeten aangaan bij weinig licht en uitgaan bij heldere omstandigheden. Je kunt het systeem testen door de lichtsensor af te dekken om duisternis te simuleren en de relaisactivering te observeren. Indien correct geconfigureerd, zal de seriële monitor "light is ON" of "light is OFF" weergeven op basis van de sensoruitlezingen. Wees voorzichtig met het omkeren van de polariteit bij het aansluiten van het AC-licht, aangezien dit storingen of veiligheidsrisico's kan veroorzaken (in video op 10:00).

Videotijdstempels

  • 00:00 Introductie tot het project
  • 02:15 Overzicht van componenten en bedrading
  • 04:30 Uitleg van de code
  • 10:00 Demonstratie van de functionaliteit

Afbeeldingen

LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
Light_LDR_sensor-4
Light_LDR_sensor-4
LDR light sensor module
LDR light sensor module
LDR light sensor module
LDR light sensor module
Light LDR sensor module schematic
Light LDR sensor module schematic
Arduino wiring for LDR light sensor module
Arduino wiring for LDR light sensor module
LDR light sensor module
LDR light sensor module
75-Light sensor module for Arduino (basic digital)
Taal: C++
++
/*
 * This is the Arduino code for the Light module for Arduino (basic).
This video shows you how to turn an AC light ON during the night using a light sensor 
and turn it OFF during the day. This code is a basic version where 
the digital output of the module is used.
 // Written for Robojax.com video 

 * Watch the HC-SR505 Motion Sensor video for details https://youtu.be/qhThpxiXubI
 * Code is available at http://robojax.com/learn/arduino

 * 
 // Written by Ahmad S. for Robojax.com on 
// February 10, 2018 at 13:43 in Ajax, Ontario, Canada
*/
#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay

/*
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

void setup() {
  // Light LDR Sensor Code by Robojax.com 20180210
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(LIGHT, INPUT_PULLUP);// define pin as Input  sensor
  pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}

void loop() {
  // Light LDR Sensor Code by Robojax.com 20180210
  int L =digitalRead(LIGHT);// read the sensor 
  
      if(L == 1){
    Serial.println(" light is ON");
    digitalWrite(RELAY,LOW);// turn the relay ON
  }else{

     Serial.println("  === light is OFF");
     digitalWrite(RELAY,HIGH);// turn the relay OFF
  }
  delay(500);
 // Light LDR Sensor Code by Robojax.com 20180210
}
76-Light sensor module for Arduino (Advanced: analog)
Taal: C++
/*
Light Sensor module for Arduino (Advanced: analog)
This video shows you how to turn an AC light ON during the night using 
a light sensor and turn it OFF during the day. 
This code is to control a light either digitally and control 
the sensitivity with the potentiometer on the module. 
You can control the light using an analog value from pin A0
and set your own sensitivity. Make sure you turn the 
potentiometer to the maximum value and set digital=false.
 // Written for Robojax.com video 

 * Watch Light Sensor video https://youtu.be/CyDAWcY8_5w
 * Code is available at http://robojax.com/learn/arduino
 * 
*/
#define LIGHT 2 // define pin 2 for sensor
#define RELAY 9 // define pin 9 as for relay

/*
 * 
// Written by Ahmad S. for Robojax.com on 
// February 10, 2018 at 13:43 in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */



// LDR, Light Dependant Resistor


boolean digital = false;// set true to use digital and control the sensitivity with potentiometer on the module
                  // set to false to control with A0 value on Arduino
unsigned int LightValue = 350;// LightValue to determine
                      // at what value the relay should be ON                      

void setup() {
  // Light LDR Sensor Code by Robojax.com 20180210
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(LIGHT, INPUT_PULLUP);// define pin as Input  sensor
  pinMode(RELAY, OUTPUT);// define pin as OUTPUT for relay
}

void loop() {

  delay(500);
  relay();// call the relay() method
 // Light LDR Sensor Code by Robojax.com 20180210
}

void relay()
{
   if(digital == true)
   {
  // Light LDR Sensor Code by Robojax.com 20180210
  int L =digitalRead(LIGHT);// read the sensor 
  
      if(L == 1){
        Serial.println(" light is ON");
        digitalWrite(RELAY,LOW);// turn the relay ON
      }else{
         Serial.println("  === light is OFF");
         digitalWrite(RELAY,HIGH);// turn the relay OFF
      } // if   
   }// if digital end
   else
   {
    int a0Value = analogRead(A0);// read A0 value
    
      if( a0Value >= LightValue){
        Serial.print(analogRead(A0));
        Serial.println(" Light is ON");
        digitalWrite(RELAY,LOW);// turn the relay ON
      }else{
         Serial.print(analogRead(A0));
         Serial.println("  === light OFF");
         digitalWrite(RELAY,HIGH);// turn the relay OFF
      } // if      
   }
}

Dingen die je misschien nodig hebt

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Fritzing-bestand