Szukaj kodu

Kod Arduino i wideo dla modułu czujnika światła z przekaźnikiem

Kod Arduino i wideo dla modułu czujnika światła z przekaźnikiem

W tym samouczku nauczymy się, jak używać modułu czujnika światła do sterowania światłem AC. Projekt umożliwi automatyczne włączanie światła, gdy jest ciemno, oraz wyłączanie go, gdy robi się jasno. Jest to szczególnie przydatne w zastosowaniach takich jak oświetlenie zewnętrzne lub światła w garażu. Po ukończeniu tego samouczka będziesz mieć działający system, który skutecznie zarządza światłem w zależności od warunków otoczenia. (na filmie o 02:15)

LDR light sensor module

Będziemy używać modułu czujnika światła, który zawiera fotorezystor (LDR) do wykrywania poziomu światła, oraz przekaźnika do sterowania światłem AC. System będzie również zawierać potencjometr do regulacji czułości wykrywania światła. Ta konfiguracja umożliwia zarówno cyfrowe, jak i analogowe sterowanie światłem w oparciu o światło otoczenia wykrywane przez czujnik. Aby uzyskać szczegółowe wyjaśnienie, zapoznaj się z filmem o 04:30.

Wyjaśnienie Sprzętu

Głównymi elementami tej konstrukcji są moduł czujnika światła, przekaźnik i Arduino. Moduł czujnika światła składa się z fotorezystora, który zmienia rezystancję w zależności od natężenia światła, zapewniając wyjście cyfrowe lub analogowe. Przekaźnik działa jak przełącznik, który może sterować światłem AC o wysokim napięciu, będąc bezpiecznie obsługiwanym przez Arduino o niskim napięciu. To rozdzielenie jest kluczowe dla bezpieczeństwa i funkcjonalności.

Przekaźnik ma trzy główne piny: wspólny (COM), normalnie otwarty (NO) i normalnie zamknięty (NC). Po aktywacji przekaźnik łączy pin wspólny z pinem normalnie otwartym, umożliwiając przepływ prądu przez podłączone światło. Ten mechanizm umożliwia przekaźnikowi sterowanie światłem na podstawie sygnałów otrzymywanych z Arduino.

Szczegóły z Karty Katalogowej

Producent Generyczny
Numer części Moduł czujnika światła
Napięcie logiki/IO 5 V
Napięcie zasilania 5 V
Prąd wyjściowy (na kanał) 10 mA
Prąd szczytowy (na kanał) 20 mA
Wytyczne dotyczące częstotliwości PWM Nie dotyczy
Progi logiki wejściowej 2,5 V (wysoki) / 0,8 V (niski)
Spadek napięcia / RDS(on) / nasycenie 0,2 V typowo
Limity termiczne 85 °C
Obudowa Moduł
Uwagi / warianty Zawiera potencjometr do regulacji czułości

 

  • Zapewnij odpowiednie odprowadzanie ciepła dla przekaźnika.
  • Użyj rezystora podciągającego dla wejścia czujnika światła.
  • Sprawdź wartości napięcia przed podłączeniem urządzeń AC.
  • Unikaj dotykania odsłoniętych przewodów, gdy system jest zasilany.
  • Wyreguluj potencjometr, aby uzyskać pożądaną czułość na światło.

Instrukcje Okablowania

Arduino wiring for LDR light sensor module

Aby podłączyć moduł czujnika światła i przekaźnik do Arduino, zacznij od podłączenia pinu VCC modułu czujnika światła do pinu 5V na Arduino. Następnie podłącz pin masy czujnika światła do pinu GND na Arduino. Cyfrowy pin wyjściowy czujnika światła powinien być podłączony do pinu 2 na Arduino, podczas gdy analogowy pin wyjściowy łączy się z A0 do odczytów analogowych.

Teraz, dla przekaźnika, podłącz jego pin VCC do pinu 5V na Arduino, a jego pin masy do GND. Pin wejściowy przekaźnika powinien być podłączony do pinu 9 na Arduino. Na koniec podłącz jeden przewód światła AC do pinu wspólnego (COM) przekaźnika, a drugi przewód do pinu normalnie otwartego (NO). Ta konfiguracja umożliwi przekaźnikowi sterowanie światłem AC na podstawie odczytów z czujnika światła.

Przykłady Kodów i Omówienie

W podstawowym kodzie cyfrowym dla czujnika światła definiujemy piny dla czujnika i przekaźnika. Funkcja setup inicjalizuje komunikację szeregową i ustawia tryby pinów:

#define LIGHT 2 // zdefiniuj pin 2 dla czujnika
#define RELAY 9 // zdefiniuj pin 9 dla przekaźnika

void setup() {
  Serial.begin(9600); // skonfiguruj Monitor Szeregowy
  pinMode(LIGHT, INPUT_PULLUP); // zdefiniuj pin jako wejście czujnika
  pinMode(RELAY, OUTPUT); // zdefiniuj pin jako WYJŚCIE dla przekaźnika
}

Ten kod ustawia pin 2 jako wejście do odczytu czujnika światła i pin 9 jako wyjście do sterowania przekaźnikiem. Monitor szeregowy jest również inicjalizowany, aby zapewnić informacje zwrotne o stanie światła.

Wewnątrz funkcji loop, w sposób ciągły odczytujemy stan czujnika:

int L = digitalRead(LIGHT); // odczytaj czujnik
if (L == 1) {
  Serial.println(" światło jest WŁĄCZONE");
  digitalWrite(RELAY, LOW); // włącz przekaźnik
} else {
  Serial.println("  === światło jest WYŁĄCZONE");
  digitalWrite(RELAY, HIGH); // wyłącz przekaźnik
}

Ta logika sprawdza stan czujnika światła i odpowiednio włącza lub wyłącza przekaźnik, zapewniając informacje zwrotne przez monitor szeregowy.

W zaawansowanym kodzie analogowym uwzględniamy metodę odczytu wartości z wyjścia analogowego:

if (digital == true) {
  int L = digitalRead(LIGHT); // odczytaj czujnik
  if (L == 1) {
    Serial.println(" światło jest WŁĄCZONE");
    digitalWrite(RELAY, LOW); // włącz przekaźnik
  } else {
    Serial.println("  === światło jest WYŁĄCZONE");
    digitalWrite(RELAY, HIGH); // wyłącz przekaźnik
  }
} else {
  int a0Value = analogRead(A0); // odczytaj wartość A0
  if (a0Value >= LightValue) {
    Serial.print(analogRead(A0));
    Serial.println(" Światło jest WŁĄCZONE");
    digitalWrite(RELAY, LOW); // włącz przekaźnik
  } else {
    Serial.print(analogRead(A0));
    Serial.println("  === światło WYŁĄCZONE");
    digitalWrite(RELAY, HIGH); // wyłącz przekaźnik
  }
}

Ta sekcja umożliwia dostosowanie czułości na podstawie odczytu analogowego z czujnika światła, zapewniając większą kontrolę nad progami aktywacji światła.

Demonstracja / Czego się spodziewać

Po zakończeniu konfiguracji i włączeniu zasilania światło powinno włączać się w warunkach słabego oświetlenia i wyłączać w jasnych warunkach. Możesz przetestować system, zakrywając czujnik światła, aby symulować ciemność, i obserwując aktywację przekaźnika. Jeśli konfiguracja jest poprawna, monitor szeregowy wyświetli „light is ON" lub „light is OFF" na podstawie odczytów czujnika. Należy zachować ostrożność przy odwracaniu polaryzacji podczas podłączania światła AC, ponieważ może to spowodować awarie lub zagrożenia bezpieczeństwa (na wideo w 10:00).

Znaczniki czasu wideo

  • 00:00 Wprowadzenie do projektu
  • 02:15 Przegląd komponentów i okablowania
  • 04:30 Wyjaśnienie kodu
  • 10:00 Demonstracja działania

Obrazy

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)
Język: 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)
Język: 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      
   }
}

Rzeczy, których możesz potrzebować

Zasoby i odniesienia

Brak zasobów.

Pliki📁

Plik Fritzing