Está en la página 1de 4

UNIVERSIDAD DE SANTIAGO DE CHILE

DIE

Laboratorio de Tpicos en Microprocesadores


Experiencia 4: dac-adc
Profesor: Ing. Felipe Garrido S.

1.

Introduccin

Un DAC es un dispositivo para convertir seales digitales con datos binarios en seales de corriente o de tensin
analgica.
Un convertidor ADC es un dispositivo hbrido que convierte un voltaje anlogo, en un rango generalmente de 0
a 5 V, a un nmero entero en escala digital. En esencia, el ADC puede verse como un voltmetro de alta velocidad
(microsegundos) que mide un voltaje anlogo y entrega un resultado proporcional discreto en binario.
La placa CADmega128-B incorpora un DAC MCP4921, que ofrece una salida de voltaje programable de 12 bits
de resolucin. Se puede configurar como salida de corriente en el rango de 0 a 20mA o como salida de voltaje con
un rango de 0 a 5V.
El ADC integrado en ATmega128 ofrece 10 bits de resolucin. Sus voltajes de referencia pueden ser configurados
en una variedad de opciones, si bien no pueden ser menores que GND (0V) o mayores que VCC (5V). Adems, al
usar la interfaz JTAG, se pierden 4 de los 8 canales ADC. Los primeros 3 de los 4 restantes (ADC0, ADC1 y ADC2)
son los que estn disponibles en la placa CADmega.

1.1.

Objetivos:

1. Generar y capturar seales a travs de un DAC y ADC respectivamente.

1.2.

Funciones necesarias:

Las Funciones a utilizar en esta experiencia estn declaradas en el formulario dac_mcp4921.c y adc_int.c. stas
son:
Inicializar DAC
DAC_hw_init();
//Inicializa el conversor analogo digital del micro.
Esta inicializacin slo se hace al principio del programa.
Enviar a la salida un valor de 8 bits.
void DAC_set_8bit(uchar val)
//El DAC en su salida establece el valor val de 8 bits.
Inicializar ADC
void init_adc_8bit_int_ref_5v()
//Inicializa el ADC utilizando 5V de referencia
Leer ADC en Binario
__inline uchar read_adc_8bit(uchar ch)
//ch es canal de entrada (0,1 o 2)

UNIVERSIDAD DE SANTIAGO DE CHILE


Leer ADC como voltaje
float read_adc_v_8bit(uchar ch, float vref)
//lee el canal ADC ch usando como voltaje de referencia vref
// resoluc. de 8 bits, resultado como voltaje
Leer ADC como corriente
float read_adc_i_8bit(uchar ch)
// lee el canal ADC ch
// resoluc. de 8 bits, resultado como corriente 0-20mA (entrada 0-5V, res.250 Ohms)

2.

Actividades:

2.1.

Cdigos de ejemplo bsicos :

Escribir estos cdigos en en el formulario, fijarse en la etiqueta: ciclo principal.


Ejemplo 1 Generador de onda cuadrada
lcd_init();
DAC_hw_init();
sei();//Set interrupt, habilita la interrupcin
ciclo_princ:
DAC_set_8bit(0);
lcd_pos(0,0);
lcd_dec(0);
_delay_ms(200);
DAC_set_8bit(255);
lcd_pos(0,0);
lcd_dec(5);
_delay_ms(200);
goto ciclo_princ; //regresa a ciclo principal
}

DIE

UNIVERSIDAD DE SANTIAGO DE CHILE


Ejemplo 2 Generador de rampa
lcd_init();
uart_init(UART_BAUD_SELECT(9600,F_CPU));
DAC_hw_init();
sei();//Set interrupt, habilita la interrupcin
uchar n=0;
ciclo_princ:
for (n=0;n<256;n++)
{
DAC_set_8bit(n);
lcd_pos(0,0);
lcd_dec(n);
_delay_ms(1);
}
goto ciclo_princ; //regresa a ciclo principal
}

Ejemplo 3 Generador de sinusoide


lcd_init();
DAC_hw_init();
sei();//Set interrupt, habilita la interrupcin
uchar datos[200];
uchar n=0;
for (n=0;n<200;n++)
{ datos[n]=round(125+125*sin(30*2*3.14159*n/200)); }
// incluir libreria: #include <math.h> antes de main
ciclo_princ:
for (n=0;n<200;n++)
{
DAC_set_8bit((datos[n]));
lcd_pos(0,0); lcd_dec(datos[n]);
//_delay_ms(0.1);
//delay opcional;
}
goto ciclo_princ; //regresa a ciclo principal
}

DIE

UNIVERSIDAD DE SANTIAGO DE CHILE

DIE

Ejemplo 4 Lectura de voltaje con potencimetro integrado


lcd_init();
init_adc_8bit_int_ref_5v();
float valor=0; lcd_prt(0,0,"Vin= ");
ciclo_princ:
valor=read_adc_v_8bit(2,5); //canal 2 y 5V de referencia
lcd_pos(5,0);
lcd_float(valor,3);
_delay_ms(100);
goto ciclo_princ; //regresa a ciclo principal
}

2.2.

A partir de los conocimientos expuestos el alumno debe :

1. Crear un cdigo tal que un usuario enve un nmero desde un PC a travs de una conexion con puerto serial,
luego el Micro debe convertir este nmero en un valor de voltaje a la salida a travs del DAC.
2. Utilizar el potencimetro RV2 de la placa como control de voltaje, de tal forma que la salida del DAC sea
proporcional a ste en el rango de 0 a 5V.

3.

Informe

Cdigo fuente los programas ideados, diagrama de


bloques y los comentarios que expliquen lnea por
lnea su funcionamiento.

El informe debe contener al menos:


Portada, Nombres de los alumnos, Nombre del Profesor, fecha etc.

1 se

fotografas (de ser posible) mostrando el funcionamiento de la placa con las funciones solicitadas.

Breve introduccin terica con los objetivos sealados.

Conclusiones personales de cada alumno.

Anlisis de cada uno de los ejemplos vistos en la


Experiencia 1 detalladamente lnea por lnea.

Bibliografa utilizada, recursos de Internet1 , libros,


apuntes de ctedra etc.

recomienda visitar http://www.arcelect.com/rs232.htm

También podría gustarte