Neste projeto iremos fazer a interface do LDR com o microcontrolador ATMEGA8, e com isso podemos medir a INTENSIDADE DA LUZ na área. No ATMEGA8, vamos usar o recurso ADC (Conversão Analógico para Digital) de 10 bits para medir a intensidade da luz.
Am LDR é um transdutor que muda sua resistência quando a LUZ cai em sua superfície muda. O sensor LDR está disponível em diferentes tamanhos e formas.
LDRs são feitos de materiais semicondutores para permitir que tenham suas propriedades sensíveis à luz. Existem muitos tipos de materiais usados, mas um que é popular é o SULFETO DE CÁDIO (CdS). Esses LDRs ou FOTO REISTORES funcionam com base no princípio de “Foto Condutividade”. Agora, o que este princípio diz é que sempre que a luz incide na superfície do LDR (neste caso), a condutância do elemento aumenta ou, em outras palavras, a resistência do LDR diminui quando a luz incide na superfície do LDR. Esta propriedade de diminuição da resistência para o LDR é alcançada porque é uma propriedade do material semicondutor usado na superfície. LDR são usados na maioria das vezes para detectar a presença de luz ou para medir a intensidade da luz.
Existem diferentes tipos de LDR como mostrado na figura acima e cada um tem especificações diferentes. Normalmente, um LDR terá 1MΩ-2MΩ na escuridão total, 10-20KΩ em 10 LUX, 2-5KΩ em 100 LUX. O gráfico típico de resistência ao LUX de um LDR é mostrado na figura.
Conforme mostrado na figura acima, a resistência entre os dois contatos do sensor diminui com a intensidade da luz ou a condutância entre os dois contatos do sensor aumenta.
Agora, para converter essa mudança na resistência em mudança na tensão, vamos usar um circuito divisor de tensão. Nesta rede resistiva temos uma resistência constante e outra resistência variável. Conforme mostrado na figura, R1 aqui é uma resistência constante e R2 é o sensor FORCE que atua como uma resistência.
O ponto médio do ramo é medido. Quando a resistência R2 muda, o Vout muda com ela linearmente. Assim, temos uma tensão que muda com o peso.
Agora, uma coisa importante a se notar aqui é que a entrada obtida pelo controlador para a conversão ADC é tão baixa quanto 50 µAmp. Este efeito de carregamento do divisor de tensão baseado em resistência é importante porque a corrente retirada de Vout do divisor de tensão aumenta a porcentagem de erro aumenta, por enquanto não precisamos nos preocupar com o efeito de carregamento.
O que vamos fazer aqui é pegar dois resistores e formar um circuito divisor de modo que, para um Vin de 25 volts, tenhamos um Vout de 5 volts. Portanto, tudo o que temos que fazer é multiplicar o valor de Vout por “5” no programa para obter a tensão de entrada real.
Componentes
Hardware: ATMEGA8, fonte de alimentação (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), capacitor 100uF, capacitor 100nF (5 peças), resistor 10KΩ, LDR (Light Dependent Resistor).
Software: Atmel studio 6.1, progisp ou flash magic.
Diagrama de circuito e explicação de trabalho
No circuito, PORTD de ATMEGA8 está conectado à porta de dados LCD. No LCD 16 * 2, há 16 pinos ao todo, se houver uma luz de fundo, se não houver luz de fundo, haverá 14 pinos. Pode-se ligar ou deixar os pinos da luz de fundo. Agora, nos 14 pinos, há 8 pinos de dados (7-14 ou D0-D7), 2 pinos de fonte de alimentação (1 e 2 ou VSS e VDD ou gnd e + 5v), 3º pino para controle de contraste (VEE-controla a espessura dos caracteres mostrado) e 3 pinos de controle (RS & RW & E)
No circuito, você pode observar que tirei apenas dois pinos de controle. O bit de contraste e READ / WRITE não são usados com frequência, portanto, podem entrar em curto com o aterramento. Isso coloca o LCD em maior contraste e modo de leitura. Precisamos apenas controlar os pinos ENABLE e RS para enviar caracteres e dados de acordo.
As conexões para LCD são fornecidas abaixo:
PIN1 ou VSS ------------------ terra
PIN2 ou VDD ou VCC ------------ + 5v de potência
PIN3 ou VEE --------------- aterrado (oferece contraste máximo, melhor para um iniciante)
PIN4 ou RS (Seleção de Registro) --------------- PB0 de uC
PIN5 ou RW (leitura / gravação) ----------------- aterramento (coloca o LCD em modo de leitura facilita a comunicação para o usuário)
PIN6 ou E (Ativar) ------------------- PB1 de uC
PIN7 ou D0 ----------------------------- PD0 de uC
PIN8 ou D1 ----------------------------- PD1 de uC
PIN9 ou D2 ----------------------------- PD2 de uC
PIN10 ou D3 ----------------------------- PD3 de uC
PIN11 ou D4 ----------------------------- PD4 de uC
PIN12 ou D5 ----------------------------- PD5 de uC
PIN13 ou D6 ----------------------------- PD6 de uC
PIN14 ou D7 ----------------------------- PD7 de uC
No circuito você pode ver que usamos comunicação de 8 bits (D0-D7) porém não é obrigatória, podemos usar comunicação de 4 bits (D4-D7) mas com 4 bits o programa de comunicação torna-se um pouco complexo. Portanto, pela mera observação da tabela acima, estamos conectando 10 pinos do LCD ao controlador, em que 8 pinos são pinos de dados e 2 pinos para controle.
A tensão em R2 não é completamente linear; será barulhento. Para filtrar, os capacitores de ruído são colocados em cada resistor no circuito divisor, conforme mostrado na figura.
Em ATMEGA8, podemos dar entrada analógica para qualquer um dos QUATRO canais do PORTC, não importa qual canal escolhemos, pois todos são iguais. Vamos escolher o canal 0 ou PIN0 do PORTC. Em ATMEGA8, o ADC é de resolução de 10 bits, então o controlador pode detectar uma mudança mínima de Vref / 2 ^ 10, então se a tensão de referência for 5V obtemos um incremento de saída digital para cada 5/2 ^ 10 = 5mV. Portanto, para cada incremento de 5mV na entrada, teremos um incremento de um na saída digital.
Agora precisamos definir o registro do ADC com base nos seguintes termos:
1. Em primeiro lugar, precisamos habilitar o recurso ADC no ADC.
2. Aqui vamos obter uma tensão de entrada máxima para conversão ADC de + 5V. Portanto, podemos definir o valor máximo ou referência do ADC para 5V.
3. O controlador tem um recurso de conversão de gatilho que significa que a conversão ADC ocorre somente após um gatilho externo, uma vez que não queremos que seja necessário definir os registros para o ADC funcionar em modo de execução livre contínua.
4. Para qualquer ADC, a frequência de conversão (valor analógico para valor digital) e a precisão da saída digital são inversamente proporcionais. Portanto, para uma melhor precisão da saída digital, temos que escolher uma frequência menor. Para o relógio ADC normal, estamos configurando a pré-venda do ADC para o valor máximo (2). Como estamos usando o clock interno de 1MHZ, o clock do ADC será (1000000/2).
Essas são as únicas quatro coisas que precisamos saber para começar a usar o ADC.
Todos os quatro recursos acima são definidos por dois registradores,
VERMELHO (ADEN): Este bit deve ser definido para habilitar o recurso ADC de ATMEGA.
AZUL (REFS1, REFS0): Esses dois bits são usados para definir a tensão de referência (ou a tensão máxima de entrada que forneceremos). Uma vez que queremos uma tensão de referência de 5V, REFS0 deve ser definido, pela tabela.
AMARELO (ADFR): Este bit deve ser definido para que o ADC funcione continuamente (modo de execução livre).
PINK (MUX0-MUX3): Esses quatro bits são para informar o canal de entrada. Visto que vamos usar ADC0 ou PIN0, não precisamos definir nenhum bit como na tabela.
BROWN (ADPS0-ADPS2): esses três bits são para definir o pré-escalar para ADC. Como estamos usando um pré-escalar de 2, temos que definir um bit.
DARK GREEN (ADSC): este bit definido para o ADC para iniciar a conversão. Este bit pode ser desabilitado no programa quando precisamos parar a conversão.
Portanto, com a resistência de LDR na tela LCD de 16x2, podemos combiná-la com o gráfico LUX para obter a intensidade da luz.