LABORATORIO 2 ATMEGA Puerto Analógico

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 7

LABORATORIO DE MICROPROCESADORES II

LABORATORIO N°2
PUERTOS ANALÓGICOS DEL MICROCONTROLADOR ATMEGA 32

1. Objetivos: El estudiante al finalizar este laboratorio:

a. Conoce los registros del microcontrolador ATMEGA 32


encargados de controlar los puertos analógicos.
b. Desarrolla programas que permiten leer datos analógicos de
sensores de diferente naturaleza.

2. Fundamento teórico:
El microcontrolador ATMEGA posee 8 pines habilitados para la
conversión analógica digital; el principio de conversión es por
aproximaciones sucesivas y su resolución es de 10 bits.

Algunas de las características del conversor analógico digital son las


siguientes:

 0,5 LSB no lineal


 13 a 260 µs tiempo de conversión
 8 canales de entrada multiplexados en una sola terminación
 7 canales de entrada diferenciales
 Voltaje de referencia seleccionable a 2,56 V
 Interrupción de conversión completa del ADC

También se incorpora un módulo de muestreo y retención el cual


asegura que el voltaje de entrada al ADC se mantenga constante
durante la conversión. En el proceso de conversión se utiliza un terminal
de alimentación separado (AVcc) el cual debe tener un voltaje igual al
Vcc general del microcontrolador, salvo una pequeña diferencia de no
más de ±0.3 V.

El microcontrolador soporta 16 combinaciones de voltajes de entrada


diferenciales. Los pines de entrada ADC1 y ADC0 además de ADC2 y
ADC3 están equipadas con una etapa de ganancia programable, con
etapas de amplificación de 0 dB (1x), 20 dB (10x) y 46 dB (200x).

Con una ganancia de 1x o 10 x la resolución es de 8 bits en tano que


con una ganancia de 200 x la resolución es de 7 bits.
Figura 1: Diagrama de bloques del módulo ADC del ATMEGA32

2.1 Registros del módulo conversor ADC

El conversor ADC incorporado en el microcontrolador ATMEGA32


convierte un voltaje de entrada analógico en un número digital de 10 bits
por el método de aproximaciones sucesivas.

El valor mínimo es el correspondiente a tierra y el máximo al voltaje que


se tiene en el pin AREF menos 1 LSB.

El ADC se habilita colocando el bit de habilitación (ADEN) del registro


ADCSRA en 1 lógico. El resultado de la conversión se almacena en los
registros ADCH y ADCL, el resultado se presenta con ajuste a la
derecha, pero puede ser modificado para ajuste a la izquierda
modificando el estado del bit ADLAR del registro ADMUX. Si el ajuste se
hace a la derecha se debe leer el registro ADCH en tanto que si se hace
ajuste a la izquierda se debe leer el registro ADCL.

Una vez que el registro con el resultado de la conversión es leído, el


acceso al ADC es bloqueado para que el resultado de la conversión no
se pierda. Cuando se lee el registro ADCH se lee se rehabilita la lectura
del módulo ADC.

2.2 Etapas para la conversión Analógica Digital

Para realizar la conversión analógica digital con el ATMEGA 32 se


deben realizar los siguientes pasos:

1. En el registro ADMUX (Registro multiplexor selector de canal de


ADC):
a. Configurar los bits REFS1 y REFS0 del registro ADMUX
para seleccionar el voltaje de referencia.

b. Determinar el ajuste del resultado de la conversión a la


izquierda o a la derecha con el bit ADLAR (5) del registro
ADMUX.
c. Elegir el canal de entrada analógica colocando la
combinación de bits adecuada en los bits 0 al 4 del registro
ADMUX.

El registro más importante en esta etapa será el ADMUX (ADC


Multiplexer Selection Register).
2. En el registro ADCSRA (Registro de estado del ADC):
a. Colocar el bit ADEN a 1 para habilitar la conversión.
b. El módulo conversor necesita una frecuencia de reloj para
realizar las tareas de conversión, toma la base de
frecuencia del oscilador del microcontrolador. Sin embargo
se debe utilizar un factor de división de frecuencia para el
módulo ADC. Este factor está determinado por los bits
ADPS2, ADPS1, ADPS0 del registro ADCSRA.

El registro en utilizado en esta etapa es el ADCSRA:

3. El registro SFIOR ():

Determina el evento que provocará el inicio de la conversión


analógica digital en el modo auto disparo. Algunos de los eventos
que disparan la conversión son:

 Comparador analógico
 Interrupciones externas
 Eventos de los temporizadores (desbordamiento,
interrupciones)
3. Trabajo de laboratorio:

1. Armar el siguiente circuito con el microcontrolador ATMEGA 32 para


digitalizar una señal analógica introducida por el pin PA.0 (Puerto A pin
0). Comprobar el funcionamiento del código que también se proporciona.

.include <m32def.inc>

.org $0000
jmp main ;ve al main
;PROGRAMA PRINCIPAL
main:
ldi r16,$04 ; Configuración de...
out sph,r16
ldi r16,$5F
out spl,r16 ;...la pila: Stack: $045F=RAMEND
ser r16 ;r16 <- $ff
out ddrd,r16 ;portD salidas
out ddrb,r16 ;portB salidas
ldi r16,$40 ;r16 <- $40
out admux,r16 ;configuro ADC a canal0, ajuste a derecha y referencia en Vref con
capacitor
ldi r16,$85 ;r16 <- $85
out adcsra,r16 ;habilito ADC, interrupcion y free running desactivados, divisor 32
call delay200u ;retardo para inicializar el conversor A/D
;se necesita 25 ciclos del clock ADC, el clock ADC esta puesto a
4MHz/32=125kHz
;25 ciclos de 125Khz, es 200us que se debe esperar para la
;configuración de todo el circuito interno del conversor A/D del micro
loop:
sbi adcsra,adsc ;se inicia conversion A/D, seteando el bit adsc

convertir:
sbis adcsra,adsc ;pregunto por el bit de conversión terminada
rjmp leer ;si termino la conversión, voy a leer la conversión

rjmp convertir ;si no se sigue esperando hasta que termine


leer: ;rutina de lectura de los datos convertidos
in r16,adcl ;carga el valor de ADCL en r16
out portd,r16 ;muestra por el puertoD
in r16,adch ;carga el valor de ADCH en r16
out portb,r16 ;muestra por el puertoB
call delay25m ;retardo para visualizar, puede no ser necesario
rjmp loop ;bucle infinito

; =============================
; delay loop generator
; 100000 cycles:
; -----------------------------
; delaying 99990 cycles:
delay25m:
ldi R17, $A5
WGLOOP0: ldi R18, $C9
WGLOOP1: dec R18
brne WGLOOP1
dec R17
brne WGLOOP0
; -----------------------------
; delaying 9 cycles:
ldi R17, $03
WGLOOP2: dec R17
brne WGLOOP2
; -----------------------------
; delaying 1 cycle:
nop
ret
; =============================

; =============================
; delay loop generator
; 800 cycles:
; -----------------------------
; delaying 798 cycles:
delay200u:
ldi R17, $02
WGLOOP3: ldi R18, $84
WGLOOP4: dec R18
brne WGLOOP4
dec R17
brne WGLOOP3
; -----------------------------
; delaying 2 cycles:
nop
nop
ret
; =============================

Este programa debe ser verificado por el grupo de estudiantes, para


conocer cómo funciona el conversor analógico digital del ATMEGA32.

2. Realizar un programa en lenguaje ensamblador para ATMEGA 32 que


permita leer el valor de dos señales de tensión analógicas introducidas a
través de los pines PA.0 y PA.1. El valor leído será visualizado a través
de LEDs conectados al puerto D (8 bits) y al puerto B (2 bits). La
selección del canal será realizada por medio de un pulsador conectado
al pin PB7. Este programa será evaluado para obtener la primera
firma.

3. Realizar un programa en lenguaje ensamblador para ATMEGA 32 que


permita leer el valor de cuatro señales de tensión analógicas
introducidas por los canales según el orden proporcionado en la "tabla:
canales digitales" dado por el ultimo digito del carnet de identidad del
universitario con el apellido más largo. El valor leído será visualizado a
través de LEDs conectados al puerto D (8 bits) y al puerto B (2 bits). La
selección de los canales será realizada por medio de dos switches
conectados a los pines  PB6 y PB7. Este programa será evaluado para
obtener la segunda firma.
CANALES DIGITALES
Ultimo digito de Canales analógicos
carnet
0 0, 4, 2, 6
1 7, 3, 5, 1
2 1, 5, 0, 4
3 6, 2, 7, 3
4 0, 5, 7, 2
5 6, 3, 1, 4
6 5, 3, 6, 0
7 2, 4, 1, 7
8 3, 0, 7, 6
9 4, 1, 5, 2

También podría gustarte