Mencionei que seria interessante adicionar um LDR em nosso projeto de datalogger, pois podemos assim cruzar informações, a exemplo: Com 50% de luminosidade a amplitude térmica é 30% menor que a 80% de luminosidade. Nem sei se isso vai ser possível, mas vamos lá.
Um LDR é um resistor que varia seu valor de acordo com a luz, e essa leitura é feita de forma analógica, que no Arduino se apresenta com valores entre 0 e 1023. Então quando fizermos a leitura em um LDR ideal, sem receber luz alguma o arduino lerá 1023. Quando a leitura for no LDR exposto ao máximo de luz a leitura será 0.
Então temos duas condições que trabalharemos com mínimos e máximos diferentes:
1) Quando vamos medir um ambiente variável qualquer:
Nesse ambiente não existe um controle de qual será a luminosidade mínima e máxima, inclusive ela não não pode ser controlada. Nesse caso se define que o valor mínimo será 1023 e o máximo 0. Um exemplo de situação é quando se deseja capturar dados de luminosidade a campo.
Quando se deseja comparar o crescimento vegetativo de uma muda de café, uma exposta a sol pleno em sistema convencional. A outra parcialmente sombreada em um consórcio com mogno. Assim você terá a informação da luminosidade e do crescimento, e pode cruzar esses dados. Mesma coisa sobre peso de 1000 grãos, qualidade do grão, etc...
2) Quando podemos controlar a luminosidade dentro de uma faixa de valores. Um exemplo seria uma câmara fechada, nela eu possuo uma lâmpada, e preciso controlar e armazenar o percentual de luminosidade que a planta está recebendo de acordo com a intensidade da lâmpada.
Assim eu coloco a lâmpada no mínimo e gravo o valor lido pelo LDR, depois no máximo e novamente gravo o valor, e utilizo eles como limites do LDR, assim meu percentual será entre esses limites.
Você deve ter percebido que o LDR pode ser utilizado com alguma validade em experimentos cuja luminosidade máxima e mínima são controladas. Agora em experimentos que os valores serão 0 e 1023 isso pode ser um problema, se for utilizado para comparação entre dois valores o uso pode ser válido:
Descobrir que a planta Y recebe 25% mais luz que a planta Z.
Agora para valores absolutos o LDR não se demonstra tão interessante, porque descobrir o máximo de luz (valor 0) não traz precisão. No meu LDR colado ao led de celular mais forte que encontrei o valor foi de 23.
Um LDR é muito barato e fácil de usar, é até difícil comprar unidades na internet, normalmente a venda se dá em kits. Mas existem outros tipos de sensores que podem ser mais confiáveis para medições absolutas, de luz ou de semelhantes:
- LDR 5mm: R$0,29
- LDR 7mm: R$0,95
- Sensor de Lux BH1750: R$11,50
- Sensor de UV GYML8511: R$19,40
- Sensor de Luz TEMT6000: R$17
Ok, agora que discutimos um pouco sobre o LDR, seu funcionamento, aplicações e alternativas vamos aos códigos:
O primeiro código é para descobrir o valor máximo e mínimo de leitura do LDR naquele ambiente.
O primeiro código é para descobrir o valor máximo e mínimo de leitura do LDR naquele ambiente.
Execute o código acima com o Arduino ligado na serial, submeta o LDR a menor luminosidade por algum tempo e depois a maior luminosidade por um tempo, assim depois basta armazenar o valores. Seu LDR precisa apresentar o valor de 1023 quando coberto com duas camadas de fita isolante.
O próximo código é a conversão da escala dos valores de 0 a 1023 para 0 a 100. Esse código será o utilizado em seu programa para ambos os casos, após o código eu explico como trabalhar com ele.
Para a conversão de escala vamos utilizar a função map do Arduino, nesse caso vamos ler a porta e gravar no ValorLDR, depois converter essa leitura na escala nova e gravar na variável LDR. Logo após vamos exibir o valor na serial seguido do símbolo de porcentagem.
Como usar a função map com o LDR
map(valorLDR, LDR_mínima_luz, LDR_máxima_luz, 0, 100);
Na função map basta substituir os dois valores com os valores conseguidos no teste anterior, o 600 seria o valor conseguido com a mínima luz e 23 com a máxima luz.
Se o LDR for utilizado no ambiente, sem controle máximo e mínimo se utiliza os valores padrões de 1023 e 0, ficando assim:
LDR = map(valorLDR, 1023, 0, 0, 100);
Acredito que tudo foi bem discutido e estamos aptos a adicionar um LDR em nossos projetos agronômicos. Sempre escolhendo se ele é a opção correta para efetuar a leitura. Agora quando for para um controle (como acender uma luz) o LDR é incrível.
Até mais quando vamos adicionar o LDR no datalogger de terra.
Nenhum comentário:
Postar um comentário