segunda-feira, 29 de agosto de 2011

TUTORIAL: Sensor de Luminosidade com Arduino

Resumo: Ler um sensor de Luminosidade (LDR), utilizando o Arduino. Converter o sinal analógico lido em digital, e monitorar a partir de então a variação de luminosidade no ambiente que o sensor se encontra.


  • Componentes

    • Arduino

    Arduino é uma plataforma de hardware e software abertos que simplifica a criação e prototipagem de projetos de eletrônica.
    Uma típica placa Arduino é composta por um controlador, algumas linhas de E/S digital e analógica, além de uma interface serial ou USB, para interligar-se ao computador, que é usado para programá-la e interagi-la em tempo real.

    Figura 1: Arduino

    Neste exemplo, vamos utilizar uma porta analógica do Arduino, haja vista que iremos ler um sensor analógico.
    O Arduino é dotado de seis portas analógicas, que vão de A0 a A5, figura 01. Com resolução de 10 bits, e faixa de leitura de 0 à 5V. E 14 portas digitais, que vão de 0 a 13, figura 1.


      Sensor de Luminosidade - LDR

    Figura 2: Sensor de Luminosidade - LDR.

    LDR (do inglês Light Dependent Resistor ou em português Resistor Dependente de Luz) é um tipo de resistor cuja resistência varia conforme a intensidade de radiação eletromagnética do espectro visível que incide sobre ele.
    Um LDR é um transdutor de entrada (sensor) que converte a luz em valores de resistência. É feito de sulfeto de cádmio (CdS) ou seleneto de cádmio (CdSe). Sua resistência diminui quando a luz é muito alta, e quando a luz é baixa, a resistência no LDR aumenta. Um multímetro pode ser usado para encontrar a resistência na escuridão ou na presença de luz intensa. Estes são os resultados típicos para um LDR padrão:

    * Escuridão : resistência máxima, geralmente acima de 1M ohms.

    * Luz muito brilhante : resistência mínima, aproximadamente 100 ohms.



    Obs.: Como o LDR não tem uma resposta rápida, variações muito rápidas de luminosidade não são detectadas por ele, por exemplo: raios.

    Circuito

    O circuito proposto fará a leitura do sensor analógico, irá converter o sinal em digital no Arduino, de 0-1023, e a partir daí o usuário poderá utilizar esse valor convertido para monitorar a variação de luz no ambiente. E interagir com outros dispositivos, se for o caso.


    Figura 3: Circuito de montagem Arduino + LDR.

    No circuito acima o LDR é excitado pelo próprio Arduino, e o sinal analógico é enviado para porta A0 do Arduino.


    Firmware

    Figura 4: Firmware.

    Descrição do firmware:
    São declaradas duas variáveis chamadas “SENSOR” e “D”, a primeira tem o valor de 0, porque fará correspondência a porta analógica 0. Já a segunda é iniciada em 0, porem estará recebendo o valor lido pelo Arduino a cada ciclo.
    Na função “SETUP()” é configurado a velocidade para porta serial do Arduino. E na função “LOOP()” é feita a leitura da porta analógica 0 e armazenado em “D”, em seguida, esse valor lido é enviado via porta serial do Arduino para um computador, onde neste exemplo o usuário poderá visualizar a variação desses valores na tela.

    Pronto, então após gravar este firmware no Arduino e montar o circuito do LDR, como mostrado na figura 3, obteremos o seguinte:

    Resultados

    Figura 5: Resultados.

    Nesta janela podemos observar os valores lidos pelo Arduino, do sensor de luminosidade, e enviados ao computador. Neste exemplo o Arduino somente envia ao PC o valor lido, mas em outras aplicações o Arduino pode executar ações, como acionar dispositivos, tudo isso a partir o que construímos ate agora.


    Figura 6: Janela de dados recebidos via porta serial.


    Veja que o valor oscila bastante, isso porque este valor varia de acordo com a mudança da intensidade de luz que incide sobre o sensor.



    Você pode assistir a esse tutorial em vídeo passo-a-passo no, You Tube, link:

    Ou no site


    EngCOMPER: www.engcomper.com

    6 comentários:

    1. Olá boa tarde, estou a tentar converter os valore lidos LUX, mas esta conversão não é linear, pois para valores baixos existe um desfasamento grande em relação ao meu Luximetro assim acontece também para valores muito altos, qual a formula que devo usar?

      ResponderExcluir
    2. Muito bom, com sua ajuda criei um projeto simples para quem esta começando com arduino.
      Não esqueci de te referenciar.
      Segue o link.
      http://f1dicas.blogspot.com/b/post-preview?token=lNF-5TgBAAA.ioDt0ZkcdqDV4pdzeNwc1w.iMeTqOJE8KcqpBfsAd3NSQ&postId=422281150062864325&type=POST

      ResponderExcluir
    3. Boas =)

      Comprei o meu Arduino á uns dias, desde então tenho investigado para ver se aprendo coisas novas, ainda sou novo nesta área.
      A minha maior duvida é acerca das resistencias (isto pode parecer um erro mt estupido e básico :x)
      Tal como voce, tentei ler os valores do LDR mas obtenho quase sempre o mesmo resultado (1023) e mesmo ao tapar o LDR com a mao o valor desce muito pouco (fica á volta dos 1000).

      Penso que isto acontece por nao ter a resistencia no circuito...
      A minha pergunta é a seguinte: Como saber qual resistência usar e quando usar?
      Frequentemente tenho esta duvida ao pesquisar progetos e esquemas na internet...
      Peço desculpa pela minha pergunta acerca de eletronica básica da mais básica xD


      Continuação de bons projectos! =D

      ResponderExcluir
    4. Sker, como posso entra em contato com vc, para tira uma dúvida ?

      ResponderExcluir
    5. Da para usar em uma porta digital com esse mesmo ldr?

      ResponderExcluir