ADC é o conversor Analógico para Digital, que converte dados analógicos em formato digital; geralmente é usado para converter a tensão analógica em formato digital. O sinal analógico tem um número infinito de valores, como uma onda senoidal ou nossa fala, o ADC os converte em níveis ou estados específicos, que podem ser medidos em números como uma quantidade física. Em vez de conversão contínua, o ADC converte dados periodicamente, o que normalmente é conhecido como taxa de amostragem. Modem de telefoneé um dos exemplos do ADC, que é usado para internet, ele converte dados analógicos em dados digitais, para que o computador possa entender, porque computador só pode entender dados digitais. A principal vantagem de usar ADC é que o ruído pode ser eliminado com eficiência do sinal original e o sinal digital pode viajar com mais eficiência do que o analógico. Essa é a razão pela qual o áudio digital é muito claro durante a audição.
Atualmente, existem muitos microcontroladores no mercado que possuem ADC embutido com um ou mais canais. E usando seu registro ADC, podemos fazer a interface. Quando selecionamos a família de microcontroladores 8051 para fazer qualquer projeto, no qual precisamos de uma conversão ADC, então usamos ADC externo. Alguns chips ADC externos são 0803,0804,0808,0809 e existem muitos mais. Hoje faremos a interface do ADC de 8 canais com o microcontrolador AT89s52, ou seja, ADC0808 / 0809.
Componentes:
- Microcontrolador 8051 (AT89S52)
- ADC0808 / 0809
- LCD 16x2
- Resistor (1k, 10k)
- POT (10k x4)
- Capacitor (10uf, 1000uf)
- Led vermelho
- Placa de pão ou PCB
- 7805
- Cristal de 11,0592 MHz
- Poder
- Fios de conexão
ADC0808 / 0809:
ADC0808 / 0809 é um dispositivo CMOS monolítico e lógica de controle compatível com microprocessador e tem 28 pinos que fornecem valor de 8 bits na saída e pinos de entrada ADC de 8 canais (IN0-IN7). Sua resolução é de 8 para que ele possa codificar os dados analógicos em um dos 256 níveis (2 8). Este dispositivo possui três linhas de endereço de canal, a saber: ADDA, ADDB e ADDC para selecionar o canal. Abaixo está o diagrama de pinos para ADC0808:
ADC0808 / 0809 requer um pulso de clock para conversão. Podemos fornecê-lo usando oscilador ou microcontrolador. Neste projeto, aplicamos frequência usando microcontrolador.
Podemos selecionar qualquer canal de entrada usando as linhas de endereço, como podemos selecionar a linha de entrada IN0 mantendo todas as três linhas de endereço (ADDA, ADDB e ADDC) baixas. Se quisermos selecionar o canal de entrada IN2, precisamos manter ADDA, ADDB baixo e ADDC alto. Para selecionar todos os outros canais de entrada, dê uma olhada na tabela fornecida:
Nome do canal ADC |
PIN ADDC |
PIN ADDB |
PIN ADDA |
IN0 |
BAIXO |
BAIXO |
BAIXO |
EM 1 |
BAIXO |
BAIXO |
ALTO |
EM 2 |
BAIXO |
ALTO |
BAIXO |
IN3 |
BAIXO |
ALTO |
ALTO |
IN4 |
ALTO |
BAIXO |
BAIXO |
IN5 |
ALTO |
BAIXO |
ALTO |
IN6 |
ALTO |
ALTO |
BAIXO |
IN7 |
ALTO |
ALTO |
ALTO |
Descrição do circuito:
O circuito de “interface ADC0808 com 8051” é um pouco complexo que contém mais fio de conexão para conectar dispositivos entre si. Neste circuito usamos principalmente AT89s52 como microcontrolador 8051, ADC0808, potenciômetro e LCD.
Um LCD 16x2 é conectado ao microcontrolador 89s52 no modo de 4 bits. Os pinos de controle RS, RW e En são conectados diretamente aos pinos P2.0, GND e P2.2. E o pino de dados D4-D7 é conectado aos pinos P2.4, P2.5, P2.6 e P2.7 de 89s52. O pino de saída ADC0808 está conectado diretamente à porta P1 do AT89s52. Os pinos de linha de endereço ADDA, ADDB, AADC são conectados em P3.0, P3.1 e P3.2.
ALE (ativar a trava de endereço), SC (iniciar a conversão), EOC (fim da conversão), OE (ativar a saída) e os pinos do relógio são conectados em P3.3, P3.4, P3.5, P3.6 e P3.7.
E aqui usamos três potenciômetros conectados nos pinos 26, 27 e 28 do ADC0808.
Uma bateria de 9 volts e um regulador de tensão de 5 volts, nomeadamente 7805, são usados para alimentar o circuito.
Trabalhando:
Neste projeto, conectamos três canais do ADC0808. E para demonstração, usamos três resistores variáveis. Quando alimentamos o circuito, o microcontrolador inicializa o LCD usando o comando apropriado, dá o relógio ao chip ADC, seleciona o canal ADC usando a linha de endereço e envia o sinal de conversão inicial para o ADC. Após este ADC primeiro lê a entrada do canal ADC selecionado e dá sua saída convertida ao microcontrolador. Então o microcontrolador mostra seu valor na posição Ch1 no LCD. E então o microcontrolador muda o canal ADC usando a linha de endereço. E então o ADC lê o canal selecionado e envia a saída para o microcontrolador. E mostre no LCD como o nome Ch2. E como sábio para outros canais.
O funcionamento do ADC0808 é muito semelhante ao funcionamento do ADC0804. Nesse caso, o primeiro microcontrolador fornece um sinal de clock de 500 KHz ao ADC0808, usando a interrupção do Timer 0, pois o ADC requer um sinal de clock para operar. Agora o microcontrolador envia um sinal de nível BAIXO a ALTO para o pino ALE (seu pino alto ativo) de ADC0808 para habilitar a trava no endereço. Então, aplicando o sinal de nível ALTO a BAIXO para SC (Iniciar conversão), o ADC inicia a conversão de analógico para digital. Em seguida, aguarde o pino EOC (Fim da conversão) ficar BAIXO. Quando o EOC fica BAIXO, significa que a conversão de analógico para digital foi concluída e os dados estão prontos para uso. Depois disso, o microcontrolador ativa a linha de saída aplicando um sinal HIGH to LOW ao pino OE do ADC0808.
ADC0808 dá saída de conversão de proporção métrica em seus pinos de saída. E a fórmula para conversão radiométrica é dada por:
V in / (V fs -V z) = D x / (D max -D min)
Onde
V in é a tensão de entrada para conversão
V fs é escala completa Tensão
V z é tensão zero
D x é o ponto de dados sendo medido
D max é Limite máximo de dados
D min é Limite mínimo de dados
Explicação do programa:
No programa, em primeiro lugar, incluímos o arquivo de cabeçalho e definimos os pinos de entrada e saída para ADC e LCD.
# incluir
A função para criar o atraso foi criada (atraso vazio), juntamente com algumas funções do LCD, como inicialização do LCD, impressão da string, comandos do LCD, etc. Você pode encontrá-los facilmente em Código. Verifique neste artigo a interface do LCD com o 8051 e suas funções.
Depois disso, no programa principal, inicializamos o LCD e configuramos os pinos EOC, ALE, EO, SC de acordo.
void main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
E então o programa lê o ADC e armazena a saída do ADC em uma variável e depois a envia para o LCD após a conversão de decimal para ASCII, usando as funções void read_adc () e void adc (int i):
void read_adc () {número = 0; ale = 1; sc = 1; atraso (1); ale = 0; sc = 0; enquanto (eoc == 1); enquanto (eoc == 0); oe = 1; number = input_port; atraso (1); oe = 0; } void adc (int i) {switch (i) {case 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();