Utilizando o Sensor de Luminosidade LDR no Arduino
Olá pessoal,
Neste post vamos aprender como utilizar o sensor de luminosidade LDR (Light Dependent Resistor, ou Resistor Dependente de Luz). O LDR é um componente eletrônico cuja resistência elétrica varia de acordo com a luminosidade que incide sobre ele, ou seja, quando ocorre a ausência de luminosidade a resistência do LDR é muito grande, no entanto, quando este é iluminado, a resistência diminui, resultando em um grande aumento da corrente elétrica em seus terminais.
O LDR é um dispositivo eletrônico amplamente difundido e utilizado em circuitos controladores de iluminação, em fotocélulas, medidores de luz, entre outros, devido ao seu baixo custo e facilidade de utilização. Em conjunto com a placa Arduino, o LDR pode ser aplicado em projetos nos quais se deseja controlar o acionamento de uma carga em função da presença ou ausência de luminosidade sobre a superfície do sensor.
O LDR é um sensor analógico, ou seja, seu sinal de saída assume valores que variam ao longo do tempo e é proporcional à grandeza medida. Por se tratar de um sensor analógico para realizar sua leitura vamos utilizar a porta de entrada analógica do Arduino. Desta forma, neste projeto aprenderemos também como ler uma porta analógica e como visualizar os sinais recebidos por meio do monitor serial do Arduino IDE.
MATERIAIS NECESSÁRIOS
1 x Placa UNO SMD R3 Atmega328 compatível com Arduino UNO;
1 x Cabo USB;
1 x Protoboard;
1 x Sensor de luminosidade LDR;
1 x Resistor de 10 kΩ;
Fios de jumper macho-macho.
ESQUEMÁTICO DE LIGAÇÃO DOS COMPONENTES
Antes de iniciar a montagem elétrica do circuito, certifique-se que sua placa esteja desligada. Monte o circuito utilizando a protoboard, o LDR, o resistor e os jumpers.
Ao montar o circuito na protoboard observe os seguintes pontos:
• Assim como os resistores comuns, o LDR não possui polaridade e sua resistência é medida em ohms (Ω);
• Um terminal do LDR deve ser conectado ao 5V e o outro ao pino analógico do Arduino, neste caso usamos o pino A0. Conectamos também uma resistência de 10 kΩ entre o pino A0 e o GND da placa.
ELABORANDO O CÓDIGO
Com o circuito montado, vamos a programação do nosso Sketch. O objetivo deste projeto é ler o sensor de luminosidade LDR. Vamos entender a lógica de programação deste projeto com os seguintes pontos:
1. Declarar as variáveis
Neste projeto, precisamos de duas variáveis, uma de definição do pino em que o LDR está conectado e outra para armazenar o valor lido pelo sensor LDR. Desta forma, definimos o pino A0, em que o LDR está conectado, a variável ldr e criamos a variável valorldr, do tipo inteiro, para armazenar o valor lido do LDR.
2. Configurar a porta de entrada
Como vamos receber informações (dados) do sensor LDR devemos configurar a porta em que ele está conectado como entrada (INPUT) e fazemos isso através da instrução: pinMode(ldr, INPUT);.
3. Iniciar a comunicação serial
Através da comunicação serial é possível obter os dados que a placa Arduino está gerando ou recebendo. Para ter acesso a esses dados e visualizá-los na tela do computador precisamos inicializar a comunicação serial por meio da função Serial.begin(velocidade);, em que velocidade é a taxa de transferência em bits por segundo.
A placa Arduino consegue emitir dados nas seguintes taxas: 300, 1200, 2400, 4800, 9600, 14400, 19200, 28800, 38400, 57600, ou 115200 bits por segundo. Alguns equipamentos apenas receberão dados caso a placa Arduino esteja configurada em uma taxa de transmissão específica, como é o caso do computador que é configurado para receber dados da USB numa velocidade de 9600.
4. Realizar leitura da porta analógica
Iniciamos o loop() realizando a leitura da porta analógica A0 (ldr), para isso utilizaremos a função analogRead(ldr), e armazenaremos este valor na variável valorldr.
5. Imprimir os dados
Para imprimir os dados de leitura do sensor LDR na porta serial utilizaremos a função Serial.println(valorldr);, que imprime os dados e salta para a próxima linha. Além disso, utilizaremos a instrução Serial.print(“Valor lido pelo LDR = ”); para escrever a mensagem “Valor lido pelo LDR = ”.
Ao fim, o Sketch deste projeto ficará da seguinte maneira:
int ldr = A0;//Atribui A0 a variável ldr int valorldr = 0;//Declara a variável valorldr como inteiro void setup() { pinMode(ldr, INPUT);//Define ldr (pino analógico A0) como saída Serial.begin(9600);//Inicialização da comunicação serial, com taxa de transferência em bits por segundo de 9600 } void loop() { valorldr=analogRead(ldr);//Lê o valor do sensor ldr e armazena na variável valorldr Serial.print("Valor lido pelo LDR = ");//Imprime na serial a mensagem Valor lido pelo LDR Serial.println(valorldr);//Imprime na serial os dados de valorldr }
O valor analógico lido pelo sensor LDR pode ser visualizado por meio do Monitor Serial. Para isto, basta clicar no ícone, que se encontra na Toolbar, no menu Ferramentas ou pelo atalho Ctrl+Shift+M.
Ao receber pouca luz, a leitura do LDR será semelhante a da Figura 1.
Por sua vez, quando exposto a muita luz o resultado do valor lido será semelhante ao da Figura 2.
Espero que tenham gostado deste tutorial. Em caso de dúvidas deixe seu comentário abaixo.
Att.,
Carol Correia Viana
Bacharel em Engenharia Elétrica com ênfase em Eletrônica, mestra em Engenharia Industrial e especialista em Docência com ênfase em Educação Inclusiva. Atua no setor de Desenvolvimento de Produtos na Casa da Robótica. Editora chefe e articulista no Blog da Robótica. Fanática por livros, Star Wars e projetos Maker.