Projeto: Controle automático de intensidade de iluminação pública usando Arduino

Tempo de leitura: 5 minutes

Controle automático de intensidade de iluminação pública usando Arduino

Neste projeto, vou mostrar como controlar a intensidade das luzes LED de acordo com o tempo e a intensidade da luz da atmosfera externa.

Este é um projeto incrível e muito útil porque evita o desperdício de energia elétrica.

Este projeto liga automaticamente a luz da rua à noite e desliga pela manhã. Ele também controla a intensidade da luz. A intensidade da luz é ajustada automaticamente de acordo com o tempo e o tráfego. O número de veículos é muito baixo depois das 12h. Por exemplo, a intensidade da luz é baixa à noite e começa a aumentar até as 20h. Depois das 20h, a luz brilha com intensidade total e essa intensidade não muda. Ele brilha com intensidade total até as 12h e começa a diminuir após as 12h, e as luzes são totalmente desligadas após as 6h. Esta abordagem economiza cerca de 30% de energia.

No circuito também são usados ​​dois LEDs, um é Verde e outro é Vermelho. O LED vermelho indica a noite e o LED verde indica o horário da meia-noite 12h00. O Arduino não está programado para o tempo real, pois não podemos observar as mudanças ao vivo. Portanto, o atraso de tempo é muito baixo (1 hora é igual a 3 segundos). Você pode alterar o tempo de atraso de acordo com seu uso. Você pode fazer várias modificações no projeto de acordo com o seu uso, você também pode usar RTC (Real Time Clock) neste projeto.

Controle automático de intensidade de luz de rua baseado em Arduino

 

Trabalhando

No circuito é utilizado um LDR (Light Dependent Resistor), que detecta a intensidade das luzes, quando a intensidade da luz atinge valores fixos a luz led é ligada. Mas no início a intensidade da luz é baixa porque o horário é 17h. Agora, a intensidade está aumentando com o tempo e a luz brilha com intensidade total às 20h.

A intensidade da luz é controlada usando PWM (modulação por largura de pulso). O Arduino e outros dispositivos digitais não podem fornecer saída analógica; eles só podem fornecer a saída digital (alta ou baixa). Significa que eles só podem desligar e ligar o dispositivo, mas às vezes precisamos da tensão entre Vcc e GND. O PWM pode atender a esse requisito. O PWM simplesmente liga e desliga o dispositivo de saída na alta frequência. Desta forma, a tensão de saída fica abaixo de Vcc. O valor da tensão de saída depende do tempo de “Ligar (Ton)” e do tempo de “Desligar (Toff)”, que pode ser calculado pela função fornecida abaixo

Ciclo de trabalho = Ton / (Ton + Toff)

Vout = Ciclo de Trabalho * Vcc

O Arduino Nano tem seis pinos PWM, todos de 8 bits. Em outras palavras, podemos alterar o valor de saída de 0 a 255, onde 0 é baixo e 255 é alto.

Dois LEDs também são usados no circuito, eles indicam a hora, o LED VERMELHO acende quando o LDR ultrapassa o valor limite, no meu caso eu suponho que são 17h, neste momento nossa luz de rua (LED de energia) também acende, mas a intensidade é baixo. A intensidade está aumentando gradualmente e funcionará com intensidade total às 20h. Agora, a intensidade não é alterada até às 12h.

Após 12h, o LED verde é ligado e a intensidade do LED de energia torna-se baixa, esta intensidade não é alterada até as 4h. Após as 4 da manhã, a intensidade da luz começa a diminuir gradualmente. Além disso, ele se desliga totalmente às 6h.

 

Componentes

ComponentesEspecificaçõesQuantidade
ArduinoNano1
Power SourceAdaptador DC 12 volts1
LDR (Resistor dependente de luz)1
LEDVerde, Vermelho2
LED de força12 Volt1
TransistorBC 5471
Resistor330 Ohm2
Resistor10K1
Resistor1K1
Diodo1N4007/ 1N40041

 

O circuito

O circuito é muito simples, você pode fazer este circuito na placa de ensaio ou ZERO PCB usando o circuito abaixo.
Se você for bom no PCB Etching, use as imagens abaixo.

Controle automático de intensidade de iluminação pública usando o design de PCB Arduino

 

Design PCB

 

No circuito que o Arduino Nano é usado, o pino PWM D9 é conectado ao pino base do transistor (2N2222), o pino emissor é conectado ao GND. O pino catódico do LED de energia é conectado ao pino do coletor do transistor e o pino do ânodo é conectado a 12 volts. Um diodo é conectado em paralelo ao LED de energia na polarização reversa.

O LDR é conectado ao Vcc e o GND através de uma resistência de 10k ohm, o ponto de junção do LDR e a Resistência é conectado ao pino A5 do Arduino.

Dois LEDs são conectados aos pinos A4 e A3 do Arduino por meio de resistência de 330 ohms. O circuito é alimentado por um adaptador de 12 volts e a linha de 12 volts também é conectada ao pino Vin do Arduino por meio de um switch.

Código

int sensor = A5;

int LED1 = A4;
int LED2 = A3;

int OUT = 9;

int del = 3000;

void setup() {
  pinMode(sensor, INPUT);

  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(OUT,  OUTPUT);
  
}

void loop() {
  if (analogRead(sensor)<50){
    analogWrite(OUT, 100);      // 5:00 PM
    digitalWrite(LED1, HIGH);
    delay(del);

    analogWrite(OUT, 150);      // 6:00PM
    delay(del);

    analogWrite(OUT, 200);      // 7:00 PM  
    delay(del);

    analogWrite(OUT, 255);      // 8:00 PM
    delay(del);

    analogWrite(OUT, 255);      // 9:00 PM    
    delay(del);

    analogWrite(OUT, 255);      // 10:00 PM
    delay(del);

    analogWrite(OUT, 255);      // 11:00 PM
    delay(del);
    
    analogWrite(OUT, 200);      // 12:00 AM
    digitalWrite(LED2, HIGH);
    delay(del);

    analogWrite(OUT, 200);      // 1:00 AM
    delay(del);

    analogWrite(OUT, 150);      // 2:00 AM
    delay(del);

    analogWrite(OUT, 150);      // 3:00 AM
    delay(del);

    analogWrite(OUT, 100);      // 4:00 AM
    delay(del);

    analogWrite(OUT, 100);      // 5:00 AM
    delay(del);

    analogWrite(OUT, 0); 
    
    digitalWrite(LED1, LOW);
    digitalWrite(LED2, LOW);
  } 
}

 

No código, alguns inteiros são declarados, “sensor” inteiro é usado para o pino LDR, LED1 e LED2 são usados para o LED “VERMELHO” e “VERDE” e o inteiro “OUT” é declarado para o LED de energia. O número inteiro “del” é usado para dar o atraso de 1 hora (3 segundos).

Em “void setup()” o sensor é declarado como INPUT e LED1, LED2 e OUT são declarados como OUTPUT, usando a função “pinMode”.