0% encontró este documento útil (0 votos)
12 vistas10 páginas

Prepa 10

El informe describe la práctica número 10 del laboratorio de sistemas microprocesados, enfocándose en la implementación de un conversor análogo/digital utilizando el microcontrolador ATMega164p. Se detalla la construcción de un sistema que funcione como voltímetro y termómetro, incluyendo circuitos, configuraciones y el uso de interrupciones. Además, se proporciona un código de ejemplo para la programación del microcontrolador y se enfatiza la importancia de la precisión en las operaciones mediante aritmética de 16 bits.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
12 vistas10 páginas

Prepa 10

El informe describe la práctica número 10 del laboratorio de sistemas microprocesados, enfocándose en la implementación de un conversor análogo/digital utilizando el microcontrolador ATMega164p. Se detalla la construcción de un sistema que funcione como voltímetro y termómetro, incluyendo circuitos, configuraciones y el uso de interrupciones. Además, se proporciona un código de ejemplo para la programación del microcontrolador y se enfatiza la importancia de la precisión en las operaciones mediante aritmética de 16 bits.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA

INFORME X TRABAJO PREPARATORIO

LABORATORIO DE SISTEMAS
MICROPROCESADOS

Práctica #: 10
Tema: Conversor análogo/digital

Realizado por:
Alumno (s): Jaramillo Fernanda Grupo: Gr9

(Espacio Reservado)

Fecha de entrega: ____ / ____ / ____ f.


______________________
año mes día Recibido por:

Sanción:
________________________________________________

Semestre: Sep - Feb _______


Mar - Ago ___X___ 2017-A
LABORATORIO DE SISTEMAS MICROPROCESADOS
PRÁCTICA Nº 10

TEMA: Conversor análogo/digital

Objetivo:

 Implementar un sistema micro controlado que funcione simultáneamente como


voltímetro digital o termómetro utilizando conversor A/D del micro controlador
ATMega164p.

Cuestionario:

1. Con un microcontrolador Atmega164P, diseñar un sistema que funcione como:


 Voltímetro
 Termómetro

Se dispone de un pulsador que permite cambiar el modo de funcionamiento del


sistema de voltímetro a termómetro o viceversa, por lo que este pulsador debe ser
manejado como interrupción.

Voltímetro
Diseñar un circuito que permita medir un voltaje entre 0V y 5V conectado en el canal
ADC0 utilizando el conversor A/D del microcontrolador AtMega 164p con una
resolución de 10 bits, 5V = 1023 (lectura del A/D) el valor de la medición deberá ser
mostrado en 4 displays de 7 segmentos en base 10; mientras que en 10 LED debe
mostrarse directamente la salida del convertidor A/D; utilizar la opción AVcc interno
como referencia. El pin de AREF debe estar desconectado de Vcc pero debe colocarse
un condensador a tierra para filtrar el ruido. También debe colocar un condensador
entre Vcc y GND del microcontrolador para controlar el ruido. Siempre se deben
mostrar cuatro dígitos significativos, un entero y tres decimales por lo que deberá en
este caso encender el punto que está luego del primer dígito. Obligatoriamente las
operaciones deben hacerse usando aritmética de 16 bits para obtener una buena
precisión. El instructor comprobará si sus operaciones son correctas de acuerdo a la
siguiente ecuación:

Se puede comprobar si usted está usando aritmética de 16 bits pues el cambio de


lectura de voltaje si cambia un LSB( bit menos significativo) es de aproximadamente
4.88 mV.

2
LABORATORIO DE SISTEMAS MICROPROCESADOS
Termómetro
Diseñar un circuito que permita medir la temperatura utilizando el LM35 conectado al
canal ADC1, utilizar obligatoriamente la referencia interna de 1.1 V (esto será
verificado por el instructor) y en esas condiciones 1.1V = 110 °C = 1023 (lectura del
A/D). El pin de AREF debe estar desconectado de Vcc pero debe colocarse un
condensador para filtrar el ruido. También debe colocar un condensador entre Vcc y
GND del microcontrolador para controlar el ruido. Obligatoriamente las operaciones
deben hacerse usando aritmética de 16 bits para obtener una buena precisión. El
rango del termómetro será de 00,00° C a 99,99° C, (y siempre mostrará cuatro dígitos
significativos con dos dígitos enteros y dos dígitos decimales). Se asume que el punto
decimal en este caso está luego del segundo dígito por lo que debe encenderlo.

También en este caso en 10 LED debe mostrarse directamente la salida del


convertidor A/D. El instructor comprobará si sus operaciones son correctas de acuerdo
a la siguiente ecuación:

Se puede comprobar si usted está usando aritmética de 16 bits pues el cambio de


lectura temperatura si cambia un LSB (bit menos significativo) es de aproximadamente
0.1075 °C. Cuando el sensor LM35 detecte un nivel mayor a 40ºC deberá encender una
alarma visual (Led indicador), que se apagará una vez que el nivel baje del 30ºC.

IMPORTANTE
Traer el circuito armado para cumplir la tarea solicitada, los estudiantes deben traer
los elementos necesarios para el funcionamiento del sistema.
CODIGO:

.include "m164pdef.inc"

.def tempo=r16
.def aux=r17
.def monitorsl=r18
.def monitorsh=r19

.dseg
.org 0x100
bcd: .byte 5
segmentos: .byte 5
resultado: .byte 3
palarma: .byte 1
pasofuncion: .byte 1
pasounidad: .byte 1
lectura_adcl: .byte 1
lectura_adch: .byte 1

.cseg
.org 0x0
rjmp inicio
.org 0x2
rjmp cambiar_canal

inicio:
ldi tempo,0
sts pasofuncion,tempo
ldi tempo,0

3
LABORATORIO DE SISTEMAS MICROPROCESADOS
sts pasounidad,tempo
;puerto A entrada análoga los 2 bits LSB, demás salida digital
ldi tempo,0b11111100
out ddra,tempo
clr tempo
out porta,tempo
;puertoB salida a segmentos
ser tempo
out ddrb,tempo
clr tempo
out portb,tempo
;´puertoC bit MSB entrada demas salidas
ldi tempo,0b01111111
out ddrc,tempo
com tempo
out portc,tempo
;puertoD 4 MSB salida a transistores, demás entradas
ldi tempo,0b11110000
out ddrd,tempo
ser tempo
out portd,tempo

;configuración del PUD


in tempo,mcucr
andi tempo,0b11101111
out mcucr,tempo
;inicialización del stack point
ldi tempo,high(ramend)
out sph,tempo
ldi tempo,low(ramend)
out spl,tempo
;interrupción INT0 e INT1, falco de bajada
ldi tempo,0b00001010
sts eicra,tempo
ldi tempo,0b00000011
out eimsk,tempo
;activación global de interrupciones
sei

ldi r16,0b00000011
sts didr0,r16
ldi r16,0b01000000
sts admux,r16

monitor: ldi tempo,0b11000110


sts adcsra,tempo
espera1:
lds tempo,adcsra
sbrc tempo,6
rjmp espera1
ldi xl,low(resultado)
ldi xh,high(resultado)
lds tempo,adcl
lds aux,adch
sts lectura_adcl,tempo
sts lectura_adch,aux
lds r20,pasofuncion
sbrs r20,0
rjmp modotermometro
ldi monitorsl,low(4888)
ldi monitorsh,high(4888)
rjmp contmonitor
modotermometro:

4
LABORATORIO DE SISTEMAS MICROPROCESADOS
ldi monitorsl,low(1075)
ldi monitorsh,high(1075)
rjmp contmonitor
contmonitor:
mul tempo,monitorsl
mov r2,r0
mov r3,r1
mul aux,monitorsl
add r3,r0
clr r0
adc r1,r0
mov r4,r1
mul monitorsh,tempo
mov r5,r0
mov r6,r1
add r3,r5
adc r4,r6
clr r5
clr r6
mul aux,monitorsh
add r4,r0
adc r5,r1

lds r20,pasofuncion
sbrc r20,0
rjmp continuar0
lds r20,pasounidad
sbrs r20,0
rjmp continuar0
ldi tempo,0
ldi aux,0xe2
ldi r20,0x4
add r2,tempo
adc r3,aux
adc r4,r20
continuar0: st x+,r2
st x+,r3
st x+,r4

lds tempo,pasofuncion
sbrc tempo,0
rjmp ledsapagados

continuar_leds:
lds tempo,adcl
lds aux,adch
cpi tempo,83
brsh encenderled
cpi r16,62
brlo apagarled
rjmp contruti
encenderled:
in tempo,pinc
ori tempo,0b11000000
out portc,tempo
rjmp contruti
apagarled:
in tempo,pinc
andi tempo,0b10111111
ori tempo,0b10000000
out portc,tempo
rjmp contruti

5
LABORATORIO DE SISTEMAS MICROPROCESADOS
ledsapagados:
in tempo,portc
andi tempo,0b10001111
out portc,tempo
contruti:
call bin_bcd
call segmentosdisp
call barridodisp
;mostrar conversor en leds:
lds tempo,lectura_adcl
lds aux,lectura_adch
ldi r20,4
mul tempo,r20
mov tempo,r0
andi tempo,0b11111100 ;desactivar pull up en adc0 y adc1
out porta,tempo
in tempo,pinc
andi tempo,0b11110000
out portc,tempo
mov tempo,r1
ldi r20,4
andi aux,0b00000011
mul r20,aux
mov aux,r0

or tempo,aux

in aux,pinc
or aux,tempo
out portc,aux
rjmp monitor

;interrupción INT0, cambiar_canal


cambiar_canal:
push r16
in r16,sreg
push r16

lds r16,pasofuncion
sbrc r16,0
rjmp funtermometro
funvoltimetro:
ldi r16,1
sts pasofuncion,r16 ;no pull up
en adc1
ldi r16,0b0100_0000
sts admux,r16
rjmp salircambs

funtermometro:
clr r16
sts pasofuncion,r16 ;no pull up
en adc0
ldi r16,0b1000_0001
sts admux,r16
salircambs:
pop r16
out sreg,r16
pop r16
reti
;rutina de binario a BCD
bin_bcd: push r16
push r17

6
LABORATORIO DE SISTEMAS MICROPROCESADOS
push r18
push r19
push r20
push r21
push r22
push r23
push xl
push xh
push yl
push yh
push zl
push zh

clr r20
ldi r21,5
ldi zl,low(constantes<<1)
ldi zh,high(constantes<<1)
ldi xl,low(resultado)
ldi xh,high(resultado)
ldi yl,low(bcd)
ldi yh,high(bcd)
ld r16,x+ ;resultado LSB
ld r17,x+ ;resultado MSB
ld r22,x
siguiente: lpm r18,z+ ;constante LSB de tabla
constantes
lpm r19,z+ ;constante MSB de
tabla constantes
lpm r23,z+
restar: sub r16,r18
sbc r17,r19
sbc r22,r23
brcs continuar
inc r20
rjmp restar
continuar: add r16,r18
adc r17,r19
adc r22,r23
st y+,r20 ;guardar en bcd0 los BCD
desde MSB a LSB
clr r20
dec r21
brne siguiente

pop zh
pop zl
pop yh
pop yl
pop xh
pop xl
pop r23
pop r22
pop r21
pop r20
pop r19
pop r18
pop r17
pop r16
ret

;rutina de monitorsión de BCD a siete segmento0


segmentosdisp: push r16
push r17

7
LABORATORIO DE SISTEMAS MICROPROCESADOS
push xl
push xh
push yl
push yh
push zl
push zh

ldi xl,low(bcd)
ldi xh,high(bcd)
ldi yl,low(segmentos)
ldi yh,high(segmentos)
ldi r17,5
pasar: ldi zl,low(tabla<<1)
ldi zh,high(tabla<<1)
ld r16,x+
add zl,r16
clr r16
adc zh,r16
lpm r16,z
st y+,r16
dec r17
brne pasar
sub r4,r2
breq salirbcd
lds r16,pasofuncion
cpi r16,1
breq voltimetropunto

lds r16,segmentos+2
ori r16,0b10000000 ;cargar letra C
sts segmentos+2,r16
rjmp salirbcd

voltimetropunto:
lds r16,segmentos
ori r16,0b10000000
sts segmentos,r16
rjmp salirbcd

salirbcd: pop zh
pop zl
pop yh
pop yl
pop xh
pop xl
pop r17
pop r16
ret

;rutina de barridodisp de displays


barridodisp: push r16
push r17
push r18
push r19
push r20
push xl
push xh

ldi r18,4
ldi xl,low(segmentos)
ldi xh,high(segmentos)

8
LABORATORIO DE SISTEMAS MICROPROCESADOS
ldi r17,0b01111111

otrobcd: ser r16


out portd,r16
ld r16,x+
out portb,r16
out portd,r17
call retardo
ser r16
out portd,r16
sec
ror r17
dec r18
brne otrobcd

ori r16,0b00001100
out portd,r16

pop xh
pop xl
pop r20
pop r19
pop r18
pop r17
pop r16
ret
retardo: ldi r19,0x43 ;rutina de retardo para
retar0: ldi r20,0xc6
retar1: dec r20
brne retar1
dec r19
brne retar0
nop
ret

tabla: .db 0b00111111, 0b00000110 ;0 y 1


.db 0b01011011, 0b01001111 ;2 y 3
.db 0b01100110, 0b01101101 ;4 y 5
.db 0b01111101, 0b00000111 ;6 y 7
.db 0b01111111, 0b01101111 ;8 y 9

constantes:.db 0x40,0x42,0xf,0xa0,0x86,1
.db 0x10,0x27,0,0xe8,0x3,0
.db 100,0,0,10,0,0

CAPTURAS:

Fig.1. Implementación del circuito en proteus

Bibliografía:

[1] «AVR programación en C – 04 Puertos de Entrada y Salida | Vida Embebida». [En línea].
Disponible en: https://vidaembebida.wordpress.com/2014/07/09/avr-programacion-en-c-
04-puertos-de-entrada-y-salida/. [Accedido: 19-jun-2017].
[2] ATMEL, ATMEL 8-bit AVR Instruction Set. 2010.
[3] ATMEL, ATMEL 8-bit AVR Microcontoller with 16K/32K/64K Bytes in System Programmable
Flash. 2010.
9
LABORATORIO DE SISTEMAS MICROPROCESADOS
[4] PROTEUS 8.5, Herramienta de simulación.
[5] Materia de Sistemas Microprocesados de: Ing. Patricio Chico.

10

También podría gustarte