Neste projeto vamos fazer um amperímetro de baixo alcance usando o microcontrolador ATMEGA8. No ATMEGA8, vamos usar o recurso ADC (Conversão Analógico para Digital) de 10 bits para fazer isso. Embora tenhamos poucas outras maneiras de obter o parâmetro de corrente de um circuito, vamos usar o método de queda resistiva, porque é a maneira mais fácil e simples de obter o parâmetro de corrente.
Nesse método, vamos passar a corrente que precisava ser medida para uma pequena resistência, com isso obtemos uma queda nessa resistência que está relacionada à corrente que flui por ela. Esta tensão através da resistência é alimentada para ATMEGA8 para conversão ADC. Com isso teremos a corrente em valor digital que será exibida em um LCD 16x2.
Para isso vamos usar um circuito divisor de tensão. Vamos alimentar a corrente por meio do ramo de resistência completo. O ponto médio do ramo é medido. Quando a corrente muda, haverá uma mudança de queda na resistência que é linear a ela. Assim, temos uma tensão que muda com a linearidade.
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.
Componentes necessários
Hardware: ATMEGA8, fonte de alimentação (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), capacitor 100uF, capacitor 100nF (4 peças), resistor 100Ω (7 peças) ou 2,5Ω (2 peças), resistor 100KΩ.
Software: Atmel studio 6.1, progisp ou flash magic.
Diagrama de circuito e explicação de trabalho
A tensão em R2 e R4 não é completamente linear; será barulhento. Para filtrar o ruído, capacitores 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.