Dimmer com o módulo sensor de luz LDR
Nesse post vamos ver como acender luzes automaticamente e regular a luminosidade de um led utilizando o módulo sensor de luz, criando um dimmer com LDR.
O módulo funciona com alimentação de 3.3 à 5v e tem um CI comparador de tensão LM393, além de um potenciômetro para ajuste de sensibilidade.
Possui duas saídas : uma analógica (A0), que nesse post vamos utilizar para ajustar o brilho de um led, e uma digital (D0), que gera o valor 0 ou 1 na saída, e que vamos utilizar para acionar um segundo led.
No lado direito um led vermelho indica quando o módulo está energizado, e no lado esquerdo um led verde indica a alteração do estado da saída digital D0. Essa alteração da porta D0 pode ser regulada por meio do potenciômetro existente na placa : você determina em qual nível de luminosidade a saída D0 será acionada.
Você pode usar esse tipo de informação para controlar o acionamento de um relé que acende uma lâmpada caso escureça, ou então algum tipo de alarme que, digamos, você queira que funcione apenas durante a noite (ou durante o dia, por que não ?).
Vamos montar um circuito que vai utilizar as duas portas do módulo, sendo que a analógica vai controlar o brilho do led vermelho (será um dimmer), e a outra vai acender ou apagar um led verde conforme a regulagem feita no potenciômetro:
O led vermelho está ligado à porta digital 6, que possui a função PWM (Pulse Width Modulation – Modulação por largura de pulso), e com isso podemos controlar a luminosidade do led de acordo com o valor que vamos enviar para essa porta (0 à 255).
Já o led verde vai simplesmente acender ou apagar conforme o estado da porta D0 do módulo.
Programa dimmer com módulo sensor de luz LDR
O programa lê o valor da entrada analógica A3, converte o valor lido (de 0 a 1023),para um valor de 0 a 255 e envia esse valor para a porta digital 6 (led vermelho).
Ao ler o valor da porta digital 2, ele acende ou apaga o led verde:
// Projeto : Modulo sensor de luz LDR // Autor : Arduino e Cia //Led vermelho ligado a porta 6 - PWM int pinoled = 6; //Led vermelho ligado a porta 7 int pinoled2 = 7; //Pino ligado a porta A0 do modulo LDR int pino_analogico_A0 = A3; //Pino ligado a porta D0 do modulo LDR int pino_digital_D0 = 2; //Armazena o valor lido da porta D0 int valord0 = 0; //Armazena valor lido da porta A0, entre 0 e 1023 int valora0 = 0; float luminosidade = 0; //Valor de luminosidade do led void setup() { //Define os pinos dos leds como saida pinMode(pinoled, OUTPUT); pinMode(pinoled2, OUTPUT); //Define os pinos do modulo como entrada pinMode(pino_analogico_A0, INPUT); pinMode(pino_digital_D0, INPUT); Serial.begin(9600); } void loop() { //Le o valor da porta digital do modulo valord0 = digitalRead(2); switch(valord0) { case 0: digitalWrite(pinoled2, LOW); break; case 1: digitalWrite(pinoled2, HIGH); break; } //Le o valor da porta analogica do modulo valora0 = analogRead(pino_analogico_A0); //Converte e atribui para a variavel "luminosidade" o //valor lido da porta analogica luminosidade = map(valora0, 0, 1023, 0, 255); //Mostra o valor lido do potenciometro e a luminosidade //no Serial Monitor Serial.print("Valor da porta analogica : "); Serial.print(valora0); Serial.print(" = Luminosidade : "); Serial.println(luminosidade); //Envia sinal analogico para a saída do led, com luminosidade variavel analogWrite(pinoled, luminosidade); delay(100); }
Carregue o programa no Arduino e teste o módulo cobrindo o LDR ou direcionando uma lanterna para o sensor, e observe a variação no acionamento dos leds.
Gostou? Confira outros posts com Arduino aqui mesmo no Arduino e Cia!
a função map( ) retorna valores inteiros, logo luminosidade n precisa ser declarado como float, o mais óbvio é declarar como int.
Amigo, estou ligando o modulo rele (arduino nano)ao inves de ligar os leds. Gostaria que você me desse uma dica pois ao acionar o LDR o rele é acionado e já configurei para delay(1) acionou rá pido mas, gostaria de mais velocidade .. Teria algum projeto especifico.. Obrigado
Boa tarde,
Eu precisaria dar uma olhada no circuito que você está usando. tem como me enviar por email ? se puder, utilize o formulário de contato ao lado da página.
Abraço !
Saudações.
Tenho aqui um sensor destes, mas com apenas três pinos: VCC, GND e OUT. Até o presente momento funcionou apenas como saída digital. Ou seja, com o meu sensor consigo ligar ou desligar alguma coisa, mas não consigo controlar o brilho de um LED ou ângulo de um servo motor. Estou correto? É apenas digital mesmo?
Oi Antônio,
Você tem o link de onde comprou esse sensor ?
Abraço!
Oi, gostaria de saber se o nesse circuito apresentado o led apenas ascende e apaga, ou existe a variação da luminosidade emitida pelo LED. ?
Oi Wesley,
Lendo o valor à partir da porta analógica, é possível variar a luminosidade do led.
Abraço!
Adilson
Olá, sabe qual deveria ser o intervalo da tensão de saída desse sensor?
Ex:3,3V até 5V