Framework Arduino II: Aula 01 Sensor LDR (Fotoresistor) Analógico

 Imagem meramente ilustrativa

Introdução

    Se você acompanhou esse site desde o início dever ter passado pelo minicurso de algoritmos, de linguagem C, de C++ e também viu conosco o básico da Framework Arduino. Hoje entraremos em uma nova fase de aprendizado onde começaremos a explorar os principais sensores, módulos e componentes para o estudante de Sistemas Embarcados. 

    Por ser mais didático, continuaremos a utilizar a Framework Arduino. Assim usaremos o nosso tempo apenas para explicar o funcionamento e a forma de utilização de um determinado sensor ou componente escolhido para ser abordado na aula. 

    Por enquanto continuaremos com a plataforma o Wokwi que ainda nos atende, mas esporadicamente, visitaremos o Tinkercad para fazer uso de algum recurso que o Wokwi não disponha. Aconselho que você já criei uma conta pessoal no Tinkercad através desse link: https://www.tinkercad.com/join, para acessar mais facilmente nossos arquivos de exemplo.

    Possíveis defasagens do nosso curso de Arduino básico serão tiradas nessa "segunda parte" do aprendizado.

O que são sensores?

    Para nós de embarcados, sensores são dispositivos geralmente elétricos ou eletromecânicos capazes de detectar estímulos físicos ou químicos e convertê-los na forma de um sinal elétrico que pode ser medido ou monitorado. 

    Muitas vezes o que chamamos de sensor é na realidade um transdutor, pois ele também é capaz de converter uma grandeza física em um sinal elétrico. A diferença entre eles é que o transdutor também permite o caminho inverso, isto é, também converte um sinal elétrico em uma grandeza física.

    Dependendo do seu mecanismo de funcionamento, os sensores podem ser indutivos, capacitivos, ultrassônicos, fotoelétricos, etc. 

O que são módulos ou shields?

    Geralmente são sensores ou dispositivos que já vem instalados em uma placa com componentes eletrônicos. A finalidade disso é tornar o uso desse sensor ou dispositivo mais eficiente ou mais amigável. Módulos podem conter resistores internos que dispensem o uso de resistores externos em pull up ou pull down.

    Por exemplo, algumas telas de display LCD quando conectadas sozinhas a um Arduino exigem cerca de 12 cabos de jumpers para o seu funcionamento. No entanto podemos adquiri-las já conectadas á um módulo, isto é, a uma placa I2C que permite ligá-la a um Arduino com apenas 4 cabos.

Diferença entre o número de conexões entre um LCD Simples e outro com módulo
Diferença entre o número de conexões entre um LCD Simples e outro com módulo

Sensor LDR ou Fotoresistor

    A sigla LDR vem de Light Dependent Resistor ou resistor dependente da luminosidade. Isso quer dizer que um LDR é um resistor variável cuja resistência depende da intensidade luminosa. Com essa propriedade podemos utilizá-lo como um sensor de luminosidade.

    Podemos encontrar LDRs que trabalham em diferentes faixas de luminosidade e também em diferentes tamanhos, variando de 5 a 12 mm. Também podemos encontrá-los na forma de um componente simples com dois terminais (GND e VCC) ou montado em um módulo, geralmente, com quatro conexões.

Sensor LDR e um Módulo Sensor LDR (direita)
Sensor LDR e um Módulo Sensor LDR (direita)

    Quando isolado como um componente seu funcionamento é analógico, devendo ser instalado em uma entrada analógica do Arduino, associado a um resistor pull-down. Já em um módulo, geralmente temos um terminal digital e outro analógico, permitindo a escolha do tipo de pino onde será conectado. Além disso teremos um terminal GND e outro VCC.

Tabela com especificações de um LDR Genérico como exemplo
Tabela com especificações de um LDR LM393 Genérico como exemplo

Trabalhando no Tinkercad

    Para mostrar uma simulação de um LDR simples em uma entrada analógica precisaremos usar plataforma Tinkercad. Como ela tem muitas opções, vou pedir para você apenas abrir o link abaixo para entrar em um projeto que eu já deixei pronto. Lembrando que você precisará de uma conta no Tinkercad. 

    Link: clique aqui

    Ao acessar clique no botão COPIAR E USAR. Se tudo ocorreu bem, você dever ter entrado na tela do Tinkercad que mostra o nosso projeto. Ele é um pouco diferente do Wokwi, por isso faremos alguns ajustes:

  • Clique no botão CÓDIGO para deixar o Sketch visível;
  • Clique no Monitor Serial para ver as saídas do monitor;
  • Finalmente clique em Iniciar Simulação para executar o Sketch.

Ajustando da tela do Tinkercad para ficar parecida com o Wokwi
Ajustando da tela do Tinkercad para ficar parecida com o Wokwi


    Se você clicou em Iniciar Simulação, você deve estar vendo que o led vermelho acendeu e na janela do Monitor Serial aparece o valor da leitura que o sensor está fazendo. Se você clicar no fotoresistor verá que ele abre uma barra deslizante que permite alterar a leitura que ele está fazendo, simulando outras luminosidades.

Aumentando a luminosidade após clicar no sensor
Aumentando a luminosidade após clicar no sensor


    Se você aumentou a luminosidade arrastando a barra para baixo, deve ter visto que valor da leitura aumentou no monitor serial e o led vermelho apagou. Vamos comentar o Sketch para entender o que está acontecendo.

Sketch para o sensor simples

    Se você olhar o sketch verá que ele é bem simples e muito parecido com os das aulas de potenciômetros do curso passado. Temos duas variáveis inteiras, uma para armazenar o pino do led e outra para a leitura do sensor (linhas 1 e 2).

    Como vamos mostrar as leituras no monitor serial iniciamos o monitor na linha 5, em seguida configuramos o pino do led para saída. No loop estamos apenas armazenando a leitura do sensor na variável correspondente, imprimindo a leitura no monitor serial e fazendo um teste com if.

    Nesse teste, se a leitura for menor ou igual a 100 o led deverá acender com o digitalWrite como HIGH, caso contrário vale o que diz o else, isto é, o led se apaga. Eu usei esse valor 100 com base nos testes que fiz com um LDR físico. Nesse meu LDR, quando a leitura estava próxima desse nível, o ambiente já estava escuro precisando de uma luz artificial.

  1. int leitura = 0;
  2. int led=9;
  3. void setup()
  4. {
  5.   Serial.begin(9600);
  6.   pinMode(led, OUTPUT);
  7. }

  8. void loop()
  9. {
  10.   leitura = analogRead(A0);
  11. Serial.print("Leitura: ");
  12.   Serial.println(leitura);
  13.   if (leitura<=100){
  14.              digitalWrite(led,HIGH);
  15.   }
  16.         else{
  17.              digitalWrite(led,LOW);    
  18.        }
  19. delay(10);
  20. }

Sobre a montagem

     Com relação a essa montagem, utilizei um led com resistor 330 Ω e um LDR com resistor de 4,7 KΩ, por isso a oscilação da leitura ficou nos valores que citei. Caso utilizássemos um resistor de 10 KΩ, por exemplo, o valor mínimo da leitura seria de 54 e o máximo de 974.

    Isso quer dizer que o valor da resistência do resistor associado ao LDR altera a amplitude de leitura do fotoresistor, aumentando ou diminuindo sua sensibilidade. Você pode testar isso parando a simulação, clicando no resistor de LDR e alterando o valor da sua resistência na janelinha azul que se abre:

Alterando o valor da resistência do resistor no Tinkercad
Alterando o valor da resistência do resistor no Tinkercad

    Uma alternativa mais prática para verificar isso é acessando esse outro projeto onde colocamos seis sensores LDRs associados a seis resistores diferentes de 1, 5, 10, 50, 100 e 500 KΩ. Nele é possível ver que o valor mínimo de leitura aumenta muito quanto maior a resistencia. (clique aqui para ver)

    Como dito anteriormente, o LDR funciona como um resistor variável cuja resistência muda de acordo com a intensidade luminosa. Você pode comprovar isso através dos multímetros que coloquei na simulação testando a resistência do conjunto resistor+LDR.

    Basta iniciar a simulação, clicar no LDR para aparecer a barra de seleção de luminosidade e alterá-la para ver que a resistência cai de 184 para 5,21 KΩ. Portanto, quanto mais escuro o ambiente, maior será a resistência. Da mesma forma, quanto mais iluminado, menor a resistência.

Verificando a variação da resistência conforme a luminosidade
Verificando a variação da resistência conforme a luminosidade

    Um segundo multímetro mostra a própria resistência do LDR sem o resistor, indicando que ela varia de 180 KΩ no escuro a 500 Ω no claro.

    Hoje você viu que a variação dos valores de leituras do LDR como um componente isolado dependem do resistor associado a ele, porém a leitura era um valor bruto que não foi transformado em uma grandeza específica para medir a luminosidade.

    Na próxima aula, voltaremos ao Wokwi para ver o funcionamento de um módulo com o sensor LDR e falaremos mais sobre o processo de conversão da leitura em uma grandeza. Hoje como era o nosso primeiro projeto no Tinkercad, eu preferi entregá-lo pronto, mas as próximas aulas vou dar oportunidade para você montá-lo do zero. 

Próxima Aula                                                                                                                        Aula Anterior

Referências

BLOG DA ROBÓTICA. Utilizando o Sensor de Luminosidade LDR no Arduino. Disponível em <https://www.blogdarobotica.com/2020/09/29/utilizando-o-sensor-de-luminosidade-ldr-no-arduino/> Acesso em 24 out 2024.

BLOG ELETROGRATE. Controle de luminosidade com Arduino e sensor LDR. Disponível em <https://blog.eletrogate.com/controle-de-luminosidade-com-arduino-e-sensor-ldr/> Acesso em 24 out 2024.

PORTAL VIDA DE SILÍCIO. Sensor de Luz – Aprendendo a usar o LDR com Arduino. Disponível em <https://portal.vidadesilicio.com.br/sensor-de-luz-com-ldr/> Acesso em 24 out 2024.

TRANSDUTOR. In: WIKIPÉDIA, a enciclopédia livre. Flórida: Wikimedia Foundation, 2020. Disponível em: <https://pt.wikipedia.org/w/index.php?title=Transdutor&oldid=57369248>. Acesso em: 24 out. 2024.