A conversão analógica para digital é uma tarefa muito importante na eletrônica embarcada, já que a maioria dos sensores fornecem saída como valores analógicos e para alimentá-los em microcontroladores que entendem apenas valores binários, temos que convertê-los em valores digitais. Portanto, para poder processar os dados analógicos, os microcontroladores precisam de um conversor analógico para digital.
Alguns microcontroladores têm ADC embutido como Arduino, MSP430, PIC16F877A, mas alguns microcontroladores não têm como 8051, Raspberry Pi etc. e temos que usar alguns ICs conversores analógicos para digitais externos como ADC0804, ADC0808. Abaixo você pode encontrar vários exemplos de ADC com diferentes microcontroladores:
- Como usar ADC no Arduino Uno?
- Tutorial do Raspberry Pi ADC
- Interface do ADC0808 com o microcontrolador 8051
- Voltímetro digital 0-25V usando microcontrolador AVR
- Como usar ADC em STM32F103C8
- Como usar ADC em MSP430G2
- Como usar ADC em ARM7 LPC2148
- Usando Módulo ADC de Microcontrolador PIC com MPLAB e XC8
Neste tutorial, vamos verificar como fazer a interface do módulo PCF8591 ADC / DAC com o Arduino.
Componentes Requeridos
- Arduino UNO
- Módulo PCF8591 ADC
- 100K Pot
- Cabos Jumper
Módulo PCF8591 ADC / DAC
O PCF8591 é um módulo conversor de 8 bits analógico para digital ou 8 bits digital para analógico, o que significa que cada pino pode ler valores analógicos de até 256. Ele também tem LDR e circuito termistor fornecido na placa. Este módulo possui quatro entradas analógicas e uma saída analógica. Ele funciona em comunicação I 2 C, portanto, há pinos SCL e SDA para relógio serial e endereço de dados seriais. Requer tensão de alimentação de 2,5-6 V e tem baixa corrente de reserva. Também podemos manipular a tensão de entrada ajustando o botão do potenciômetro no módulo. Existem também três jumpers na placa. J4 é conectado para selecionar o circuito de acesso do termistor, J5 é conectado para selecionar o LDR / circuito de acesso do foto-resistor e J6 é conectado para selecionar o circuito de acesso de tensão ajustável. Para acessar esses circuitos, você deve usar os endereços desses jumpers: 0x50 para J6, 0x60 para J5 e 0x70 para J4. Existem dois LEDs na placa D1 e D2-D1 mostra a intensidade da tensão de saída e D2 mostra a intensidade da tensão de alimentação. Quanto maior a tensão de saída ou alimentação, maior a intensidade do LED D1 ou D2. Você também pode testar esses LEDs usando um potenciômetro no VCC ou no pino AOUT.
Interface do Módulo PCF8591 ADC / DAC com Arduino
O programa completo e o vídeo de trabalho são fornecidos no final deste tutorial.
Primeiramente, precisamos definir a biblioteca para comunicação I 2 C e display LCD.
#incluir
Em seguida, defina algumas macros. A primeira macro é para definir o endereço do barramento de dados para IC e a segunda macro é para definir o endereço do primeiro pino de entrada do módulo, onde a entrada do potenciômetro é fornecida.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
Em seguida, defina as conexões de pino do LCD com Arduino e inicialize o valor que estamos obtendo no pino analógico.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); Valor int = 0;
Agora, vamos à função de configuração . Aqui, na primeira linha, inicializamos a comunicação I 2 C. E na segunda linha, inicializamos o display LCD no qual estamos imprimindo os valores analógicos. Saiba mais sobre a interface do LCD 16x2 com o Arduino aqui.
void setup () { Wire.begin (); lcd.begin (16,2); }
Na função de loop , a primeira linha é para iniciar a transmissão, ou seja, inicia o PCF8591. A segunda linha diz ao IC para fazer a medição analógica no primeiro pino de entrada analógica. A terceira linha termina a transmissão e a quarta linha obtém os dados medidos do pino analógico.
loop vazio () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
Na próxima parte, coloque o valor lido do pino analógico na variável Value definida anteriormente. E nas próximas linhas, imprima esse valor no LCD.
Value = Wire.read (); lcd.print ("Valor ADC ="); lcd.print (valor); atraso (500); lcd.clear ();}
Finalmente, carregue o código no Arduino e execute-o. Os valores analógicos começarão a aparecer no display LCD. Ajuste o botão do potenciômetro e você verá a mudança gradual nos valores.