Sunteți pe pagina 1din 9

TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I

CARRERA: ELECTRÓNICA 33-400

PRÁCTICA Nº 5
CONVERSOR ANÁLOGO DIGITAL (ADC)

1. DEFINICION

Como su propio nombre lo dice, el conversor ADC, lo que hace es convertir una señal analógica
en digital.
Pasa por los siguientes procesos:

 Muestreo de la señal analógica


 Cuantificación
 Codificación

Estos vendrían a ser los procesos más básicos que se tiene que realizar para convertir una señal
analógica a una digital, ya que puede haber otros procesos más.

Existen diferentes tipos de conversores y asi mismo bajo diferentes principios, uno de los más
empleados es el de “aproximaciones sucesivas”
El convertidor de aproximaciones sucesivas se utiliza en aplicaciones donde se necesitan altas
velocidades de conversión. Se basa en realizar sucesivas comparaciones de forma ascendente o
descendente hasta encontrar un valor digital que iguale la tensión entregada por el conversor
D/A y la tensión de entrada.

2. CARACTERISTICAS

En los conversores es muy importante considerar los siguientes parámetros:

 Rango de Entrada (Vin): Voltaje a leer por el módulo ADC.

 Número de bits (n): Rango de conversión usado por el ADC. Puede ser 8 o 10 bits,
definido por el programador

 Resolución: Mínimo valor de lectura. viene definido por la siguiente relación.

 Tensión de referencia (Vref): Es el voltaje base por la cual toma como punto de
referencia el módulo ADC para poder hacer sus conversiones, puede ser valor absoluto
de “0 – Vref ” o en un margen de “ -Vref a +Vref.”
Ing. Javier Tarqui Valeriano
TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

 Tiempo de conversión (Tad): Tiempo que demora el ADC en realizar la conversión.

 Error de conversión: Bits erróneos generados por una mala conversión, la cual se
origina por una alta velocidad o una mala configuración del módulo.

También hay otra manera de expresarla resolución, en el cual intervienen el Vref


( )

Si Vref+ = 5V y Vref- = 0V , tenemos

Por ejemplo, si tenemos que la lectura es de 256 LSB, entonces la tensión analógica será:

3. SENTENCIAS EMPLEADAS EN LA PROGRAMACIÓN

Para la configuración y programación de un conversor ADC en el microcontrolador es necesario


emplear las siguientes sentencias:

 #device adc=n → (esta librería inicializa al conversor donde “n” es el número de bits)
 setup_adc_ports(valor) → (en “valor” se selecciona el puerto de entrada, por donde
ingresa la señal analógica a convertir), para esto basarse en la tabla
 setup_adc(modo) → (en modo se coloca el reloj seleccionado de acuerdo a la tabla)
 set_adc_channel(canal) → (selecciona el canal de conversión)
 valor=read_adc() → Lectura del resultado y almacenado en valor, que viene a ser
un numero entero dependiendo de la directiva #DEVICE ADC= empleada.

Para la aplicación de las anteriores sentencias se presentan en la siguiente una tabla de los cuales
de acuerdo al programa se debe elegir un valor

4. TABLAS DE USO PARA LAS SENTENCIAS

Se tienen las siguientes tablas de acuerdo a la sentencia empleada:

 TABLA DE CONFIGURACION DE LOS CANALES

La siguiente tabla está muy relacionada con la tabla siguiente, ya que de acuerdo a lo
seleccionado en “valor” de la instrucción del AD, se puede observar la función que
desempeña cada terminal, asi por ejemplo en nuestro programa seleccionaremos AN0, en la
dirección 1110, los voltajes de referencia son VDD=5 y VSS=0
Ing. Javier Tarqui Valeriano
TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

MODULO ADC EN C

En el compilador para manejar el conversor AD, las instrucciones empleadas son las siguientes:

 setup_adc_ports(valor)

En la tabla se muestran todos los pines de izquierda a derecha, donde A significa analógico y
D digital, a la derecha se observa que de acuerdo a la dirección, en “valor” se puede
seleccionar ya sea AN0, AN1 u otro, según lo deseado. Esta selección se hace con relación a
la tabla superior de acuerdo al programa

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

 Instrucción: “setup_adc(modo)”

Esta sentencia está en relación con la fuente de selección del reloj (por lo general nosotros
seleccionamos 20 MHz). La tabla que se muestra está en relación con la subsiguiente, donde
ADC_CLOCK_DIV_2 es para 2T que equivale a 100 ns, entonces dependiendo de nuestros
requerimientos, se dispone la sentencia deseada. En nuestro programa seleccionamos reloj
interno porque los otros son muy pequeños para el muestreo

 Instrucción “set_adc_channel(canal)”

Esta instrucción habilita el canal que se usa (en nuestro programa se usará el 0)

SELECCION DE FUENTES DE RELOJ


i
En la siguiente tabla se muestra los tiempos de conversión en relación con la frecuencia

(1): El reloj RC tiene un valor tipico de Tad = 4us


(2): Estos valores violan el mínimo tiempo requerido (1.6us) de Tad
(3): Para conversiones mas rápidas se recomienda otro tipo de reloj
(4): Cuando se usa osciladores mayores de 1MHz, el modo RC es recomendable cuando se está
en el modo SLEEP

 Instrucción: valor=read_adc()
Esta sentencia lee el resultado y almacena su valor leido, que puede ser un numero entero
dependiendo de la directiva #DEVICE ADC empleada.

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

En nuestro programa se hace la conversión a binario, almacenando en “p” realizando la


siguiente operación (en q se almacena el valor leído en el programa):

5. APLICACIONES DE LOS CONVERSORES CON SENSORES:

Comúnmente los conversores se emplean para relacionar el mundo físico con el de los
procesadores inteligentes, para el efecto es necesario emplear sensores.
Estos son algunos sensores cuya salida es en voltios, la cual podemos hacer uso del
módulo AD del PIC para poder digitalizar y controlar esta señal.

SENSOR DE TEMPERATURA LM35

El LM35 es un sensor de temperatura con una precisión calibrada de 1 °C. Su rango de


medición abarca desde -55 °C hasta 150 °C. La salida es lineal y cada grado Celcius equivale a
10 mV, por lo tanto:

150 °C = 4230 mV
-55 °C = -2180 mV1

Opera de 4v a 30v. En la disposición de sus terminales, el terminal 2 es la salida analógica:

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

6. MATERIALES
- Microcontrolador PIC 6f877a
- Resistencias, capacitores y oscilador de cristal que son parte del circuito del
microcontrolador
- Resistencias de protección de 330 Ω
- LCD de 2x16
- Sensor de temperatura LM35

7. DESARROLLO DE LA PRÁCTICA

Realizar los siguientes programas:

PROGRAMA 1.

Conversión ADC de 10 bits que se despliega en el LCD


Descripción: este programa realiza la conversión de una entrada analógica a una salida digital,
para lo cual emplearemos una fuente de tensión que simulará a las señales analógicas y a su
salida para visualizar la conversión a digital emplearemos un LCD

 En el PROTEUS se configura al PIC la entrada de la señal analógica por el puerto A0,


conectado a este una fuente de alimentación continua de 5 V con un potenciómetro que
ira variando la entrada de voltaje de la fuente
 Conectar el LCD como en la anterior práctica, empleando los mismos puertos, y en este
se deberá desplegar la conversión

PROGRAMA

#include <16f877a.h>
#device adc=10 //sentencia para definir al conversor de 10 bits
#fuses hs,nowdt
#use delay(clock=20M)
#define lcd_data_port getenv("sfr:portb")
#define lcd_rs_pin pin_b0 //se configura que el pin bo del micro para el pin rs del LCD
#define lcd_rw_pin pin_b1 //se configura que el pin b1 para el pin rw del LCD
#define lcd_enable_pin pin_b2 //se configura pin b2 para enable del LCD
#include <lcd.c>

void main()
{
int16 q; //variable del adc
float p; //variable del voltaje
setup_adc_ports(an0); /selecciona el puerto a realizar la conversion
setup_adc(adc_clock_internal); //selecciona el reloj de conversion
lcd_init();
while(true)
{

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

set_adc_channel(0); /selecciona el canal de la entrada analógica A0


delay_us(20);
lcd_gotoxy(1,1);
q=read_adc(); //realiza conversion y almacena en q en binario de 0-1024
p=5.0*q/1024.0; //la tension convertida de binario a voltaje
printf(lcd_putc,"ADC=%4Ld",q); //tiene 4 cifras "ld" entero largo con signo
printf(lcd_putc,"\n voltaje=%1.2f",p); //1 entero con decimales
}
}

PROGRAMA 2. PRACTICA PARA EL ESTUDIANTE

Medidor de temperatura
Descripción: el estudiante debe implementar el programa y circuito donde se realiza:
- Se configura el LCD para que se lea la temperatura que el sensor LM35 sensa y se
despliegue por su pantalla
- El LM35 se coloca a la entrada analógica A1 del PIC
- Su conversor será de 8 bits
- Para variar la temperatura puede usar un cautin u otro que caliente al sensor
- La conversión de análogo a digital para que la operación se realice a digital y se lea en
grados centígrados viene dado por la operación:

Nota.- si se utilizare 8 bits se cambia 1023 por 255

El programa siguiente es para que se tome como una base para su programa a desarrollar

#include <16f877a.h>
#device adc=10 //sentencia para definir al conversor de 10 bits
#fuses hs,nowdt
#use delay(clock=40M)
#include <lcd.c> //libreria para utilizer LCD por el Puerto D

void main()
{
float temper,medicion;
lcd_init(); //inicializa LCD
lcd_putc(“Termometro\n”); //muestra texto
lcd_putc(“con LM35”);
delay_ms(2000);
lcd_putc(“\f”); //limpia pantalla
lcd_putc(“Temperatura\n”); //muestra texto
lcd_putc(“actual”); //muestra texto
delay_ms(1000);

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

lcd_gotoxy(14,2);
lcd putc(ºC);

while(true)
{
lcd_gotoxy(8,2);
lcd_putc(“”); //limpia ese sector de pantalla
lcd_gotoxy(8,2); //acomoda cursor
setup_adc(adc_clock_internal); //selecciona el reloj de conversion
setup_adc_ports(all_analog);
set_adc_channel(0); //selecciona el canal de la entrada analógica A0
delay_us(20);
medicion=read_adc(); //realiza conversion AD
setup_adc(adc_off); //apaga ADC
temper=medición*(0.48875); //pasa binario a ºC

printf(lcd_putc,"%02.1f",temper); //xxx.x ºC
delay_ms(1000);
}
}

8. INFORME

Una vez concluida la práctica el o los estudiantes deben presentar en la siguiente clase el
informe de la práctica, que contenga los siguientes puntos:

 Plano o layout del circuito con empleando un software especializado como el software
“fritzing” u otro
 Listado del programa del PIC – C Compiler
 Observaciones y conclusiones
 Hoja de calculo

Ing. Javier Tarqui Valeriano


TECNOLÓGICO PUERTO DE MEJILLONES MICROCONTROLADORES I
CARRERA: ELECTRÓNICA 33-400

HOJA DE LABORATORIO

Programa 1. CONVERSOR ADC

SIMULADOR (7 %) CIRCUITO IMPLEMENTADO (13 %)

Programa 2. MEDIDOR DE TEMPERATURA

SIMULADOR (8 %) CIRCUITO IMPLEMENTADO (17 %)

Integrantes del Grupo

Nombres y apellidos Practica s/45 Informe (s/15)

Ing. Javier Tarqui Valeriano

S-ar putea să vă placă și