La conversión de analógico a digital es una tarea muy importante en la electrónica embebida, ya que la mayoría de los sensores proporcionan salida como valores analógicos y para alimentarlos en un microcontrolador que solo entiende valores binarios, tenemos que convertirlos en valores digitales. Entonces, para poder procesar los datos analógicos, los microcontroladores necesitan un convertidor analógico a digital.
Algunos microcontroladores tienen ADC incorporado como Arduino, MSP430, PIC16F877A, pero algunos microcontroladores no lo tienen como 8051, Raspberry Pi, etc. y tenemos que usar algunos circuitos integrados convertidores analógicos a digitales externos como ADC0804, ADC0808. A continuación puede encontrar varios ejemplos de ADC con diferentes microcontroladores:
- ¿Cómo usar ADC en Arduino Uno?
- Tutorial de Raspberry Pi ADC
- Interfaz ADC0808 con microcontrolador 8051
- Voltímetro digital de 0-25 V con microcontrolador AVR
- Cómo utilizar ADC en STM32F103C8
- Cómo utilizar ADC en MSP430G2
- Cómo utilizar ADC en ARM7 LPC2148
- Uso del módulo ADC del microcontrolador PIC con MPLAB y XC8
En este tutorial, vamos a comprobar cómo interconectar el módulo ADC / DAC PCF8591 con Arduino.
Componentes requeridos
- Arduino UNO
- Módulo ADC PCF8591
- Olla 100K
- Cables de salto
Módulo PCF8591 ADC / DAC
El PCF8591 es un módulo convertidor de analógico a digital de 8 bits o de digital a analógico de 8 bits, lo que significa que cada pin puede leer valores analógicos de hasta 256. También tiene un circuito LDR y termistor en la placa. Este módulo tiene cuatro entradas analógicas y una salida analógica. Funciona con comunicación I 2 C, por lo que hay pines SCL y SDA para el reloj en serie y la dirección de datos en serie. Requiere voltaje de suministro de 2.5-6V y tiene baja corriente de espera. También podemos manipular el voltaje de entrada ajustando la perilla del potenciómetro en el módulo. También hay tres saltadores en el tablero. J4 está conectado para seleccionar el circuito de acceso del termistor, J5 está conectado para seleccionar el circuito de acceso LDR / fotorresistencia y J6 está conectado para seleccionar el circuito de acceso de voltaje ajustable. Para acceder a estos circuitos hay que utilizar las direcciones de estos jumpers: 0x50 para J6, 0x60 para J5 y 0x70 para J4. Hay dos LED en la placa D1 y D2-D1 muestra la intensidad del voltaje de salida y D2 muestra la intensidad del voltaje de suministro. Cuanto mayor sea la tensión de salida o alimentación, mayor será la intensidad del LED D1 o D2. También puede probar estos LED utilizando un potenciómetro en VCC o en el pin AOUT.
Interfaz del módulo ADC / DAC PCF8591 con Arduino
El programa completo y el video de trabajo se encuentran al final de este tutorial.
En primer lugar, necesitamos definir la biblioteca para la comunicación I 2 C y la pantalla LCD.
#incluir
Luego defina algunas macros. La primera macro es para definir la dirección del bus de datos para IC y la segunda macro es para definir la dirección del primer pin de entrada del módulo, donde se da la entrada del potenciómetro.
#define PCF8591 (0x90 >> 1) #define AIn0 0x00
A continuación, defina las conexiones de pines de LCD con Arduino e inicialice el valor que estamos obteniendo en el pin analógico.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Valor = 0;
Ahora, pasemos a la función de configuración . Aquí, en primera línea, hemos inicializado la comunicación I 2 C. Y en la segunda línea, inicializamos la pantalla LCD en la que estamos imprimiendo los valores analógicos. Obtenga más información sobre cómo interconectar LCD 16x2 con Arduino aquí.
configuración vacía () { Wire.begin (); lcd.begin (16,2); }
En la función de bucle , la primera línea es para comenzar la transmisión, es decir, inicia el PCF8591. La segunda línea le dice al IC que realice la medición analógica en el primer pin de entrada analógica. La tercera línea finaliza la transmisión y la cuarta línea obtiene los datos medidos del pin analógico.
bucle vacío () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
En la siguiente parte, coloque el valor leído del pin analógico en la variable Valor definida anteriormente. Y en las siguientes líneas, imprima ese valor en la pantalla LCD.
Valor = Wire.read (); lcd.print ("Valor ADC ="); lcd.print (Valor); retraso (500); lcd.clear ();}
Finalmente cargue el código en Arduino y ejecútelo. Los valores analógicos comenzarán a aparecer en la pantalla LCD. Ajuste la perilla del potenciómetro y verá el cambio gradual en los valores.