La conversió analògica a digital és una tasca molt important en l’electrònica incrustada, ja que la majoria dels sensors proporcionen sortida com a valors analògics i per alimentar-los en microcontroladors que només entenen els valors binaris, els hem de convertir en valors digitals. Així, per poder processar les dades analògiques, els microcontroladors necessiten un convertidor analògic a digital.
Alguns microcontroladors incorporen ADC com Arduino, MSP430, PIC16F877A, però alguns no ho tenen, com ara 8051, Raspberry Pi, etc. A continuació podeu trobar diversos exemples d’ADC amb diferents microcontroladors:
- Com utilitzar ADC a Arduino Uno?
- Tutorial ADC de Raspberry Pi
- Interfície ADC0808 amb microcontrolador 8051
- Voltímetre digital de 0-25 V mitjançant microcontrolador AVR
- Com utilitzar ADC a STM32F103C8
- Com utilitzar ADC a MSP430G2
- Com utilitzar ADC a ARM7 LPC2148
- Ús del mòdul ADC del microcontrolador PIC amb MPLAB i XC8
En aquest tutorial, comprovarem com s’interfata el mòdul PCF8591 ADC / DAC amb Arduino.
Components necessaris
- Arduino UNO
- Mòdul ADC PCF8591
- Pot 100K
- Cables de pont
Mòdul PCF8591 ADC / DAC
PCF8591 és un mòdul convertidor analògic a digital de 8 bits o digital a analògic de 8 bits, el que significa que cada pin pot llegir valors analògics de fins a 256. També disposa de circuit LDR i termistor a la placa. Aquest mòdul té quatre entrades analògiques i una sortida analògica. Funciona en comunicació I 2 C, de manera que hi ha pins SCL i SDA per al rellotge serial i l'adreça de dades en sèrie. Requereix una tensió d’alimentació de 2,5-6 V i un baix corrent d’espera. També podem manipular la tensió d’entrada ajustant el pom del potenciòmetre al mòdul. També hi ha tres saltadors al tauler. J4 està connectat per seleccionar el circuit d’accés al termistor, J5 està connectat per seleccionar el circuit d’accés de resistència fotogràfica LDR / foto i J6 està connectat per seleccionar el circuit d’accés de tensió ajustable. Per accedir a aquests circuits heu d’utilitzar les adreces d’aquests ponts: 0x50 per a J6, 0x60 per a J5 i 0x70 per a J4. Hi ha dos LEDs a la placa D1 i D2-D1 mostra la intensitat de la tensió de sortida i D2 mostra la intensitat de la tensió d’alimentació. Com més alta sigui la tensió de sortida o de subministrament, major serà la intensitat del LED D1 o D2. També podeu provar aquests LED utilitzant un potenciòmetre a VCC o al pin AOUT.

Interfície del mòdul ADC / DAC PCF8591 amb Arduino
El programa complet i el vídeo de treball es donen al final d’aquest tutorial.
En primer lloc, hem de definir la biblioteca per a la comunicació I 2 C i la pantalla LCD.
#incloure
A continuació, definiu algunes macros. La primera macro és per definir l'adreça del bus de dades per a IC i la segona macro és per definir l'adreça del primer pin d'entrada del mòdul, on es dóna l'entrada del pot.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
A continuació, definiu les connexions de pin de la pantalla LCD amb Arduino i inicialitzeu el valor que obtenim al pin analògic.
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;
Ara anem a la funció de configuració . Aquí, en primera línia, hem inicialitzat la comunicació I 2 C. I a la segona línia, hem inicialitzat la pantalla LCD en què imprimim els valors analògics. Obteniu més informació sobre la interfície de LCD 16x2 amb Arduino aquí.
void setup () { Wire.begin (); lcd.begin (16,2); }
En funció de bucle , la primera línia és iniciar la transmissió, és a dir, inicia el PCF8591. La segona línia indica a l'IC que faci la mesura analògica al primer pin d'entrada analògica. La tercera línia finalitza la transmissió i la quarta línia obté les dades mesurades des del pin analògic.
bucle buit () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
A la part següent, poseu el valor llegit del pin analògic a la variable Value definida anteriorment. I a les següents línies, imprimiu aquest valor a la pantalla LCD.
Valor = Wire.read (); lcd.print ("Valor ADC ="); lcd.print (valor); retard (500); lcd.clear ();}
Finalment, pengeu el codi a Arduino i executeu-lo. Els valors analògics començaran a aparèixer a la pantalla LCD. Ajusteu el comandament del pot i veureu el canvi gradual dels valors.

