Projeto 29 - Sensor de luz LDR com sonorizador

Básico - Projeto 29

Sensor de luminosidade LDR com sonorizador

Objetivo

Criar um circuito para que um sensor LDR (Light Dependent Resistor) ao detectar luz forneça um feedback sonoro e luminoso da quantidade de luz detectada.

Observação: Esta configuração poderia, por exemplo, ser utilizada como um alarme que indica quando uma porta foi aberta, ou criar um dispositivo que altera a frequência sonora sem a necessidade de contato físico. Utilizamos neste projeto conceitos de divisor de tensão e de automação através do uso de entradas analógicas e utilização de sensores.

Aplicação

Para fins didáticos e projetos de automação.

Componentes necessários

Referência

Componente

Quantidade

Imagem

Observação

Protoboard Protoboard 830 pontos 1 Resultado de imagem para protoboard 830v No mínimo utilizar protoboard com 830 pontos
Jumpers Kit cabos ligação macho / macho 1  
Led Difuso 5mm LEDs 5mm alto brilho 1

1 LED alto brilho azul

 

Você poderá utilizar também LEDs de qualquer outra cor ou LEDs difuso de 3 ou 5mm nas cores que desejar.
Resistor

Resistor

2   1 Resistor de 100Ω (led)
  1 Resistor de 10KΩ (sensor LDR)
Se precisar usar outros valores, calcule o resistor apropriado para o led utilizado.
Sensor de luminosidade LDR

Sensor de Luminosidade LDR 5mm

1  
 Buzzer

Buzzer 5V 12mm

 1  
Arduino UNO R3 Arduino UNO 1 Você poderá utilizar uma placa Arduino UNO original ou similar

Montagem do Circuito

Conecte os componentes no Protoboard como mostra a figura abaixo. Verifique cuidadosamente os cabos de ligação antes de ligar seu Arduino. Lembre-se que o Arduino deve estar totalmente desconectado da força enquanto você monta o circuito.

Atenção

1. Lembre-se que o LED tem polaridade: O terminal maior tem polaridade positiva e o lado do chanfro tem polaridade negativa.

1.1. Portanto, faça a conexão do Arduino no terminal positivo (anodo) e o GND no terminal negativo (catodo) do led.

1.2. Para evitar danos ao led é necessário a inclusão de um resistor no circuito. Como o resistor é um limitador da corrente elétrica, ele poderá estar conectado no anodo (terminal maior) ou no catodo (terminal menor) do led, tanto faz.

2. Determinamos o valor do resistor através da tabela prática: Tabela prática de utilização de leds 3mm e 5mm. Entretanto, o mais correto é sempre verificar o datasheet do fabricante do LED para você ter os exatos valores de tensão e corrente do mesmo - leia Como calcular o resistor adequado para o led e Leds ligados em série e em paralelo.

Obs.: Resistores iguais ou superiores a 250 Ω poderão ser utilizados em LEDs de todas as cores para um circuito com tensão igual ou inferior a 5V.

2.1. Valor do resistor utilizado no nosso projeto para o LED Azul alto brilho = 100 Ω.

3. O buzzer tem polaridade. Portando, cuidado para não ligar o buzzer invertido. Se você retirar o adesivo superior do buzzzer poderá ver um sinal de positivo (+). Este sinal mostra onde está o pino positivo do componente que deverá estar conectado ao Arduino.

4. Conecte o sensor de luminosidade LDR como um divisor de tensão, conforme o esquema abaixo:

4.1. Desta forma, a tensão da entrada analógica do Arduino é baixa quando o LDR está sob iluminação e alta quando mantido na sombra. Para saber mais sobre divisão de potencial LDR, leia Divisores de Tensão.

4.2. Veja abaixo uma tabela com alguns valores experimentais de tensão em função da luminosidade de um ambiente, variando de mais escuro para mais claro:

4.3. Observe que a resistência do sensor LDR  (Light Dependent Resistor) se altera em função da quantidade de luz que recebe, mostrando que o sensor LDR nada mais é do que um resistor variável que depende da luz (fotoresistor).

Obs.: O sensor de luminosidade LDR, assim como um resistor comum, não tem polaridade.

4.4. Veja abaixo a montagem no protoboard (utilize um resistor de 10KΩ):

5. A montagem abaixo foi realizada em um protoboard com linhas de alimentação não contínuas, onde acrescentamos jampers para a ligação. Verifique se o seu protoboard possui linhas de alimentação contínuas ou separadas - saiba mais em protoboard

Conhecendo os valores do sensor de luminosidade LDR

Antes de iniciarmos nosso projeto, vamos conhecer a luminosidade do ambiente onde o sensor está instalado. Copie o código abaixo e cole no IDE do Arduino.

1. Faça o upload para o microcontrolador e abra o Monitor Serial para fazer a leitura do sensor LDR no ambiente.

2. Observe que os valores para o sensor variam de 0 até 1023, sendo 0 para ambiente mais claro e 1023 para ambiente mais escuro, em função da montagem do nosso sensor no protoboard.

Quanto mais luz o LDR receber, menor será o valor lido.

Quanto menos luz o LDR receber, maior será o valor lido

Obs.: O valor de leitura de uma porta analógica do Arduino UNO, Mega e Leonardo, varia de 0 a 1023 em função do ADC (Analog to Digital converter, ou conversor analógico para digital), para estas placas.

3. Os valores do ambiente no nosso exemplo variam 270 a 330.

3.1. Se você está lendo um valor fixo, sem variação, certifique-se que os componentes estão bem colocados e na posição correta. Este é um erro muito comum neste tipo de experimento.

4. Os valores variam de acordo com a iluminação do ambiente e o fabricante do sensor.

5. Coloque agora a palma da sua mão, ou qualquer outro material que tampe a luz ambiente, sobre o sensor tampando a luz e fazendo o sensor ficar na sombra. Faça novamente a leitura:

6. Pronto, agora já sabemos a grandeza de valores para o ambiente iluminado e com sombra. Estes valores ajudarão você entender como varia a resistência do LDR quando conectado como um divisor de tensão, conforme nosso circuito.  A seguir, acesse o sketch do projeto.

Código do projeto (Sketch)

Faça o dowload e abra o arquivo projeto29.ino no IDE do Arduino:  DOWNLOAD - projeto29.ino

Ou se preferir, copie e cole o código abaixo no IDE do Arduino:

/*******************************************************************************
*
*    Projeto 29 – Sensor de luz LDR com sonorizador
*                   http://squids.com.br/arduino
*
*******************************************************************************/
 
const int buzzerPin = 7; // Piezo no pino 8
const int ldrPin = 0; // LDR no pino analógico 0
const int ledPin = 3; // LED no pino digital 3 

int ldrValue = 0; // Valor lido do LDR
const int freq = 5; // altera frequencia do sonorizador

void setup() {
    pinMode(ledPin, OUTPUT);
    pinMode(buzzerPin, OUTPUT);
}

void loop() {
ldrValue = analogRead(ldrPin); // lê o valor do LDR
tone(buzzerPin,1000); // toca um tom de 1000 Hz do piezo
digitalWrite(ledPin, HIGH);
delay(25); // espera um pouco
noTone(buzzerPin); // interrompe o tom
digitalWrite(ledPin, LOW);
delay(ldrValue/freq); // espera a quantidade de milissegundos em ldrValue
}

ATENÇÃO: Utilizamos um valor para a constante "freq" = 5. Para aumentar ou diminuir a frequência do nosso sonorizador, o valor desta constante. Quanto maior for este valor, menor será o intervalo entre os bips.  Depois do código ajustado, faça a verificação e o upload para o microcontrolador. Dica: Comece testando com 1 e depois coloque outros valores, até encontrar o valor ideal para o seu projeto.

Vídeo

Como o projeto deve funcionar

1. Quando você iniciar o programa, o led e o buzzer emitirão bips em uma frequência conforme a luminosidade do ambiente que incide sobre o sensor LDR.

2. Reduza a luz ambiente sobre o sensor, assim o led e o buzzer irão produzir bips com frequência cada vez menor.

3. Quanto menor for a quantidade de luz sobre o sensor, menor será a frequência dos bips.

Explicando o Código do Projeto

1. Primeiro declaramos as constantes e as variáveis do projeto.

1.1. Observe que utilizamos as constantes e variáveis tipo "int". Veja na tabela abaixo as diferenças nos tipos de constantes e variáveis:

Tipo Valores Válidos para Variáveis e Constantes
char letras e símbolos: 'a', 'b', 'H', '^', '*','1','0'
int de -32767 até 32767 (apenas números inteiros)
float de -3.4 x 1038 até +3.4 x 10+38com até 6 dígitos de precisão (2 casas depois da vírgula)
double de -1.7 x 10308 até +1.7 x 10+308com até 10 dígitos de precisão

1.1. A constante buzzerPin se refere ao buzzer que deverá estar conectado à porta digital 7 do microcontrolador Arduino.

1.2. A constante LDRPin se refere ao Sensor de luminosidade LDR que deverá estar conectado à porta analógica A0.

1.2. A variável ledPin se refere ao Led que deverá estar conectado à porta 3 do microcontrolador Arduino.

1.3. Declaramos a variável ldrvalue como 0 (zero).

1.4. Declaramos a constante freq como 5 (este valor deve ser diferente de zero e pode ser alterado para aumentar ou diminuir a frequência de bips no seu projeto).

2. Através da estrutura void setup(), definimos:

2.1. Define-se a constante ledPin como saída do controlador Arduino (OUTPUT) conectado à porta digital 3.

2.2. Define-se a constante buzzerPin como saída do controlador Arduino (OUTPUT) conectado à porta digital 7.

2.3. Observe que portas analógicas não precisam ser definidas, pois por padrão, já são definidas como INPUT. Entretanto, você pode utilizar a linha de código: pinMode(ldrPin, INPUT);

3. Através da estrutura void loop(), obtemos:

3.1. A variável ldrValue será igual aos valores lidos diretamente pelo pino analógico onde está conectado o sensor LDR, através da função analogRead() que faz a conversão de analógico para digital. Esta leitura é feita pelo ADC (Analog to Digital Converter - conversor analógico para digital) sem tratamento nenhum. A variável foi definida localmente como tipo inteiro (int), e portanto, vai de 0 a 1023, ou seja, possui 210 = 1024 valores inteiros (referente à resolução de 10 bits do ADC para controladores Arduino UNO, Mega e Leonardo). Assim, quando o sensor LDR não estiver recebendo pouca ou nenhuma luz do ambiente, o valor lido será próximo de 1023, e quando o sensor receber muita luz, o valor será próximo de 0, fazendo assim a leitura da luminosidade de um ambiente.

Observação: Nosso exemplo, o sensor LDR varia de 0V a 5V(leitura analógica), ou seja, de 0 a 1023 quando convertido em leitura digital através do ADC do controlador Arduino.

Quanto mais luz o LDR receber, menor será o valor lido.

Quanto menos luz o LDR receber, maior será o valor lido

3.2. A função tone() define um tom para o buzzer. Vamos utilizar tone(buzzerPin,1000) que gera um tom com frequência de 1.000Hz. (Você pode alterar este valor definindo tons diferentes para o buzzer).

3.3. Através da função digitalWrite(ledPin, HIGH) acendemos o Led.

3.4. Através da função delay(25) esperamos 25ms. Este valor define o tempo que o led e o buzzer fiquem ativos, gerando um tipo de bip.

3.5. Interrompemos o som do buzzer através da função noTone().

3.6. Através da função digitalWrite(ledPin, LOW) apagamos o Led.

3.7. A função delay(ledrValue/freq) define o intervalo entre os bips. Quanto maior a incidência de luz sobre o sensor, menor será o valor de ledrValue e portanto menor o intervalo entre os bips, fazendo com que os mesmos sejam emitidos de forma mais rápida. Quanto menor for a incidência de luz sobre o sensor, maior será o valor lido e portanto maior o intervalo entre os bips, portanto, emitidos de forma mais lenta.

3.8. Já a constante freq faz com que o intervalo entre os bips sejam maiores ou menores, dependo do seu valor. Quanto maior for o seu valor, menor será o tempo de espera. Portanto os bips serão emitidos de forma mais rápida.

O anúncio abaixo ajuda a manter o Squids Arduino funcionando

Comentários

×

Infomações do site / SEO








×

Adicionar Marcadores