ADC es el convertidor de analógico a digital, que convierte datos analógicos en formato digital; generalmente se usa para convertir voltaje analógico en formato digital. La señal analógica tiene un número infinito de valores como una onda sinusoidal o nuestro habla, ADC los convierte en niveles o estados particulares, que se pueden medir en números como una cantidad física. En lugar de una conversión continua, ADC convierte los datos periódicamente, lo que generalmente se conoce como frecuencia de muestreo. Módem telefónicoes uno de los ejemplos de ADC, que se usa para Internet, convierte datos analógicos en datos digitales, para que la computadora pueda entender, porque la computadora solo puede comprender datos digitales. La principal ventaja de usar ADC es que el ruido se puede eliminar de manera eficiente de la señal original y la señal digital puede viajar de manera más eficiente que la analógica. Esa es la razón por la que el audio digital es muy claro al escuchar.
En la actualidad, hay muchos microcontroladores en el mercado que tienen ADC incorporado con uno o más canales. Y al usar su registro ADC podemos interactuar. Cuando seleccionamos la familia de microcontroladores 8051 para realizar cualquier proyecto, en el que necesitamos una conversión ADC, usamos ADC externo. Algunos chips ADC externos son 0803,0804,0808,0809 y hay muchos más. Hoy vamos a conectar el ADC de 8 canales con el microcontrolador AT89s52, a saber, ADC0808 / 0809.
Componentes:
- Microcontrolador 8051 (AT89S52)
- ADC0808 / 0809
- LCD de 16x2
- Resistencia (1k, 10k)
- BOTE (10k x4)
- Condensador (10 uf, 1000 uf)
- Led rojo
- Placa de pan o PCB
- 7805
- 11,0592 MHz Cristal
- Poder
- Cables de conexión
ADC0808 / 0809:
ADC0808 / 0809 es un dispositivo CMOS monolítico y lógica de control compatible con microprocesador y tiene 28 pines que dan un valor de 8 bits en la salida y pines de entrada ADC de 8 canales (IN0-IN7). Su resolución es 8, por lo que puede codificar los datos analógicos en uno de los 256 niveles (2 8). Este dispositivo tiene una línea de dirección de tres canales, a saber: ADDA, ADDB y ADDC para seleccionar el canal. A continuación se muestra el diagrama de pines para ADC0808:
ADC0808 / 0809 requiere un pulso de reloj para la conversión. Podemos proporcionarlo utilizando un oscilador o un microcontrolador. En este proyecto hemos aplicado frecuencia mediante microcontrolador.
Podemos seleccionar cualquier canal de entrada usando las líneas de dirección, como podemos seleccionar la línea de entrada IN0 manteniendo las tres líneas de dirección (ADDA, ADDB y ADDC) bajas. Si queremos seleccionar el canal de entrada IN2, entonces debemos mantener ADDA, ADDB bajo y ADDC alto. Para seleccionar todos los demás canales de entrada, eche un vistazo a la tabla dada:
Nombre del canal ADC |
PIN ADDC |
PIN ADDB |
PIN ADDA |
IN0 |
BAJO |
BAJO |
BAJO |
EN 1 |
BAJO |
BAJO |
ALTO |
EN 2 |
BAJO |
ALTO |
BAJO |
EN 3 |
BAJO |
ALTO |
ALTO |
IN4 |
ALTO |
BAJO |
BAJO |
IN5 |
ALTO |
BAJO |
ALTO |
IN6 |
ALTO |
ALTO |
BAJO |
IN7 |
ALTO |
ALTO |
ALTO |
Descripción del circuito:
El circuito de "Interfaz ADC0808 con 8051" es poco complejo y contiene más cables de conexión para conectar dispositivos entre sí. En este circuito hemos utilizado principalmente AT89s52 como microcontrolador 8051, ADC0808, potenciómetro y LCD.
Una pantalla LCD de 16x2 está conectada con el microcontrolador 89s52 en modo de 4 bits. Los pines de control RS, RW y En están conectados directamente a los pines P2.0, GND y P2.2. Y el pin de datos D4-D7 está conectado a los pines P2.4, P2.5, P2.6 y P2.7 de 89s52. Los pines de salida ADC0808 están conectados directamente al puerto P1 de AT89s52. Los pines de línea de dirección ADDA, ADDB, AADC están conectados en P3.0, P3.1 y P3.2.
ALE (activación de bloqueo de dirección), SC (conversión de inicio), EOC (fin de conversión), OE (activación de salida) y pines de reloj están conectados en P3.3, P3.4, P3.5, P3.6 y P3.7.
Y aquí hemos utilizado tres potenciómetros conectados en los pines 26, 27 y 28 del ADC0808.
Una batería de 9 voltios y un regulador de voltaje de 5 voltios, a saber, 7805, se utilizan para alimentar el circuito.
Trabajando:
En este proyecto hemos interconectado tres canales de ADC0808. Y para la demostración hemos utilizado tres resistencias variables. Cuando alimentamos el circuito, el microcontrolador inicializa la pantalla LCD usando el comando apropiado, le da reloj al chip ADC, selecciona el canal ADC usando la línea de dirección y envía la señal de conversión de inicio a ADC. Después de este ADC primero lee la entrada del canal ADC seleccionado y le da su salida convertida al microcontrolador. Luego, el microcontrolador muestra su valor en la posición Ch1 en la pantalla LCD. Y luego el microcontrolador cambia el canal ADC usando la línea de dirección. Y luego ADC lee el canal seleccionado y envía la salida al microcontrolador. Y se muestra en la pantalla LCD como nombre Ch2. Y lo mismo para otros canales.
El funcionamiento de ADC0808 es muy similar al funcionamiento de ADC0804. En esto, el primer microcontrolador proporciona una señal de reloj de 500 KHz a ADC0808, utilizando la interrupción del temporizador 0, ya que ADC requiere una señal de reloj para funcionar. Ahora el microcontrolador envía una señal de nivel BAJO a ALTO al pin ALE (su pin activo-alto) de ADC0808 para habilitar el pestillo en la dirección. Luego, al aplicar la señal de nivel ALTO a BAJO a SC (Iniciar conversión), el ADC inicia la conversión analógica a digital. Y luego espere a que el pin EOC (Fin de conversión) vaya a BAJO. Cuando EOC pasa a BAJO, significa que se ha completado la conversión de analógico a digital y los datos están listos para usar. Después de esto, el microcontrolador habilita la línea de salida aplicando una señal de ALTA a BAJA al pin OE de ADC0808.
ADC0808 proporciona una salida de conversión métrica de relación en sus pines de salida. Y la fórmula para la conversión radiométrica viene dada por:
V en / (V fs -V z) = D x / (D max -D min)
Dónde
V in es el voltaje de entrada para la conversión
V fs es el voltaje de escala completa
V z es el voltaje cero
D x es el punto de datos que se está midiendo
D max es el límite máximo de datos
D min es el límite mínimo de datos
Explicación del programa:
En el programa, en primer lugar, incluimos el archivo de encabezado y define la variable y los pines de entrada y salida para ADC y LCD.
# incluir
Se ha creado la función para crear el retardo (retardo anulado), junto con algunas funciones de la pantalla LCD, como para la inicialización de la pantalla LCD, la impresión de la cadena, los comandos de la pantalla LCD, etc. Puede encontrarlas fácilmente en Código. Consulte este artículo para conocer la interfaz de LCD con 8051 y sus funciones.
Después de esto, en el programa principal, inicializamos LCD y configuramos los pines EOC, ALE, EO, SC en consecuencia.
void main () {int i = 0; eoc = 1; ale = 0; oe = 0; sc = 0; TMOD = 0x02; TH0 = 0xFD; lcd_ini (); lcdprint ("ADC 0808/0809");
Y luego el programa lee el ADC y almacena la salida de ADC en una variable y luego la envía a la pantalla LCD después de la conversión de decimal a ASCII, usando las funciones void read_adc () y void adc (int i):
void read_adc () {número = 0; ale = 1; sc = 1; retraso (1); ale = 0; sc = 0; while (eoc == 1); while (eoc == 0); oe = 1; número = puerto_entrada; retraso (1); oe = 0; } void adc (int i) {switch (i) {caso 0: ADDC = 0; ADDB = 0; ADDA = 0; lcdcmd (0xc0); read_adc ();