Acionando um LED automaticamente com sensor de luminosidade e Arduino

Reprodução: Elaboração própria do autor via Tinkercad.

A Robótica é um campo fascinante, não só para os profissionais e futuros profissionais da área, mas para qualquer pessoa que deseje aprender a robótica para desenvolver importantes habilidades denominadas Soft Skills e Hard Skills, habilidades técnicas e comportamentais relacionadas à tecnologias digitais, inovação, comunicação, trabalho colaborativo e muitas outras. E engana-se que a Robótica é um campo complicado e destinada apenas a pessoas específicas. Atualmente há muitas ferramentas disponíveis que possibilitam a iniciação na Robótica sem conhecimentos avançados em Eletrônica e Programação. Hoje, por exemplo, iremos aprender como desenvolver uma aplicação com um sensor de luz: Quando o ambiente estiver escuro, automaticamente uma luz se ascende. Legal, né? Vamos fazer?

Escolhendo os componentes

Para este projeto, iremos utilizar a seguinte lista de componentes:

QuantidadeComponente
1 unidadeArduino Uno R3
1 unidade Fotorresistor ou LDR
1 unidade Resistor 10 kΩ
1 unidade Resistor 330 Ω
1 unidade LED de qualquer cor
Reprodução: Do próprio autor

O ponto chave para este projeto está no sensor de luminosidade: O Light Dependent Resistor ou Resistor Dependente de Luz, que é um resistor que possui resistência variável em função da luminosidade. Há diversos materiais utilizados em eletrônica que possuem características físicas, químicas, elétricas, térmicas ou qualquer outra propriedade intrínseca variáveis. No caso do LDR, a sua propriedade de Resistência Elétrica varia em função da luminosidade ambiente. Geralmente aproveitamos dessas propriedades dos materiais para criar sensores diversos de aplicação em indústrias ou residências, por exemplo.

Compreendendo o princípio de funcionamento do LDR

Para conseguirmos compreender plenamente o princípio de funcionamento de um componente eletrônico, devemos observar o seu Datasheet, ou Folha de Dados. É nele que encontramos as principais informações técnicas. Claro que é necessário possuir conhecimento técnico para compreender plenamente as informações, mas se você chega até aqui como hobbista ou aprendiz, ou até mesmo como professor de Robótica, porém com um conhecimento não tão aprofundado assim, pode deixar conosco que iremos simplificar aqui para você, se for o caso!

Abaixo temos o Datasheet do LDR. Perceba que ao observar a seção Electrical characteristics, percebemos como funciona a variação da resistência elétrica do LDR em função da luminosidade, que é medida em Lux.

Como podemos perceber, quanto maior a luminosidade incidente no sensor, menor é a resistência elétrica do mesmo. A grande ideia aqui é nos aproveitamos desse fato e conseguir ler essa variação de parâmetro elétrico do componente com o Arduino, e identificando um certo nível de luminosidade (ou ausência dela) poderemos acionar um LED (que poderia ser uma lâmpada de verdade, por exemplo). Mas, como iremos ler a resistência elétrica do LDR? Na verdade, nós iremos trabalhar com a Tensão elétrica, conforme iremos explicar adiante.

Entendendo o Circuito Eletrônico e sua lógica de funcionamento

Inicialmente, devemos entender que há dois circuitos eletrônicos básicos envolvidos em nosso projeto: O circuito do sensor de luminosidade e o circuito de acionamento do LED. Caso o acionamento desejado fosse uma lâmpada de verdade, ou outro tipo de carga de maior potência, o circuito sensor seria o mesmo, o que mudaria seria o circuito de acionamento, já que uma interface de potência seria necessária entre Arduino e elemento a ser acionado. Tema para um próximo artigo.

Pois bem, a montagem dos dois circuitos pode ser vista neste quadro negro virtual elaborado pelo Professor Ciro Chaves em uma de suas aulas. O circuito sensor é formado por um circuito eletrônico básico muito utilizado em diversas aplicações, que é o circuito divisor de tensão. Basicamente, dois elementos resistivos são dispostos em série com a fonte de tensão, aqui sendo representado como os 5 V fornecidos pelo próprio Arduino. Os dois elementos resistivos são um resistor de 10 kΩ e o próprio LDR, que é um resistor variável, com resistência variando em função da luminosidade incidente. Conforme a luminosidade varia, a propriedade de resistência elétrica do sensor também varie, fazendo com que a tensão nele retida também varie. Cabe ressaltar que, no circuito divisor de tensão, a tensão elétrica fornecida pelo Arduino é dividida entre os elementos, de forma que, quanto mais luminosidade, menor a resistência elétrica no sensor, e consequentemente menor a tensão elétrica no sensor. Fizemos uma simulação no software de simulação de circuito Proteus, em uma versão de avaliação, para demonstrar o princípio. Inicialmente, a fórmula matemática que iremos utilizar para determinar a tensão sobre o LDR é a seguinte:

Nessa fórmula, temos a representação dos valores fixos de 5 V representando a tensão do Arduino e 10k representa a resistência série utilizada no circuito, de 10 kΩ em nosso projeto. Por exemplo, quando está totalmente escuro, de acordo com o Datasheet disponibilizado acima, a resistência do LDR vale 1 MΩ, ao passo que a tensão lida sobre ele será de 4,95 V (grave esse número):

Na outra ponta, em uma situação de iluminância de 1000 Lux (diga-se de passagem, com uma boa fonte de luz bem perto do sensor), temos pelo Datasheet disponibilizado que a tensão no sensor será de:

É justamente estes valores de tensão que variam em função da luminosidade e, consequentemente, da resistência variável do sensor, que iremos ler com o nosso Arduino. A simulação feita é apresentada abaixo, nas situações de fonte de luminosidade desligada e fonte ligada e bem próxima do sensor, simulando a situação de maior incidência de luminosidade sobre o LDR.

Agora que explicamos o princípio básico de funcionamento do circuito com sensor, iremos comentar rapidamente sobre o circuito de acionamento do LED: Neste caso, faremos um circuito simples de um resistor série com um LED, onde iremos conectar este circuito em uma saída digital do Arduino, que iremos acionar em nível ALTO (ou 5 V ou Bit 1) para quando o sensor identificar um certo nível de tensão elétrica lida pelo sensor.

Reprodução: Banco de imagens PxHere.

Montando o circuito no Tinkercad

Com a lista de materiais fornecida acima, iremos efetuar a montagem dos componentes, fazendo os dois circuitos, do sensor e do LED, em separado. Utilizaremos uma entrada e uma saída no nosso Arduino, ou seja, a saída será uma porta digital que irá se conectar ao circuito do LED, sendo ela acionada quando definirmos em código, e uma entrada analógica, que será o sinal mensurado sobre o sensor LDR. Lembrem-se de que o sinal de saída é digital porque basta modificar o nível lógico de BAIXO para ALTO, ou de 0 para 1, para que um LED seja acionado. Enquanto que a leitura do sensor será feita por uma porta analógica, que pode assumir qualquer valor real e contínuo entre 0 e 5 V, resultando em 1024 níveis, de acordo com a resolução do conversor AD do Arduino. As portas utilizadas serão a porta digital 7, como saída, e a porta analógica A0, como entrada.

Portanto, para converter os valores de tensão de 0 a 5 V em níveis de 0 a 1023 dadas pela resolução do conversor AD do Arduino, teremos a seguinte fórmula:

Então, por exemplo, quando temos a situação anteriormente mostrada, com iluminância de 1000 Lux, resultando em uma resistência de 400 Ω e tensão de 0,19 V, teremos, de acordo com a fórmula acima:

Este valor será lido pelo Arduino e será o que tomaremos como base para determinar se estará escuro o suficiente para ligar o LED ou não. Neste caso, não precisaremos ser tão assertivos, pois à partir das noções aqui apresentadas, você poderá testar o seu código e utilizar valores de 0 a 1023 na condicional do seu código, como será demonstrado, para determinar a ação do LED. O circuito montado no Tinkercad pode ser visto no esquemático abaixo. Basta reproduzir igual fizemos.

Reprodução: Elaboração própria do autor via Tinkercad.

Hora de programar: Criando o código

O código é muito simples e curto, o que é uma grande vantagem em utilizar a linguagem de programação em blocos baseada no Scratch, pois o código fica muito didático e ideal para ser aplicado com crianças, jovens e até pessoas sem nenhuma familiaridade com programação.

Basicamente, iremos iniciar o código definindo o pino 7 (saída para o LED) como em nível BAIXO. Isso irá garantir que, ao iniciar o código, o LED inicie apagado. Em seguida, criaremos uma variável denominada sensor. A variável nada mais é do que um nome para um endereço, ou seja, iremos chamar de sensor o local na memória física do Arduino em que armazenaremos a leitura da tensão no sensor, que será um número de 0 a 1023, conforme já explanado anteriormente. Depois, precisaremos definir a variável sensor como a leitura do pino analógico A0. Após isso, basta adicionar a nossa condicional: Se a leitura no sensor for maior que 100, por exemplo, significa que está claro demais, e por isso iremos acender o LED. Caso essa leitura seja menor que 100, iremos julgar que já está claro o suficiente no ambiente, não sendo necessário acionar o LED. Simples, não?

Reprodução: Do próprio autor via Tinkercad.

Conclusão

Que projeto maneiro! Conseguimos, com uma explicação simples e didática, utilizando equações matemáticas básicas, explicar com um nível de profundidade suficiente o princípio de funcionamento deste circuito com sensores. A grande importância em se trabalhar com elementos sensores é, justamente, poder utilizar circuitos eletrônicos, Internet das Coisas e demais tecnologias para poder interagir com o meio, por meio de sensores e atuadores. E isso é só o começo! Com essa técnica simples, estaremos aptos a nos comunicar com diversos sensores de temperatura, umidade, pressão, vazão, e muito mais, podendo exercer ações específicas e tomadas de decisão, a depender das leituras dessas variáveis.

Caso você queira partir para a prática para já, disponibilizamos o nosso projeto no Tinkercad para você simular agora mesmo, ou copiar para a sua conta e poder fazer as modificações que quiser! Inclusive, recomendamos fortemente este exercício para que possas treinar bastante!

Disponibilizamos, também, um video explicando todo o passo a passo desenvolvido nesta simulação, com maior foco na prática de montagem e desenvolvimento do código.

Reprodução: InovaEduTech Channel (YouTube).

Bom, é isso. Não deixem de acompanhar o próximo artigo desse projeto, onde iremos fazer a montagem prática, em um Arduino real. Até lá!

Prof. Ciro Chaves

O Prof. Ciro Chaves é Bacharel em Engenharia Eletrônica, Mestre em Modelagem Computacional e Especialista em Educação Digital. É um professor ávido por Tecnologia e Robótica.
×

Powered by Inovaedu.tech

× Como posso te ajudar?