Los Nueve Principios del Desempeño de la Sostenibilidad
Funcionamiento del CAD
1. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 1
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
PROGRAMAS PARA CONFIGURAR EL
CONVERSOR DE ANALÓGICO A DIGITAL
Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de
los registros del conversor de analógico a digital que posee el microcontrolador
ATmega164P, sin utilizar las interrupciones del conversor.
.DEF AUX1 = R16
;
.CSEG
PROGP:
; PROGRAMACIÓN DEL ADC
; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56
; ADLAR=0 RESULTADO ALINEADO A LA DERECHA
; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL
LDI AUX1,0B11000111
STS ADMUX,AUX1
; ADEN=1 HABILITACIÓN DEL CONVERSOR
; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN
; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN
; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN
; ADIE=0 HABILITACIÓN DE LA INTERRUPCIÓN
; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2
LDI AUX1,0B11010000
STS ADCSRA,AUX1
; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN
LDI AUX1,0B00000000
STS ADCSRB,AUX1
; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7
LDI AUX1,0B10000000
STS DIDR0,AUX1
; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA
LAZO: LDS AUX1,ADCSRA
SBRS AUX1,ADIF
RJMP LAZO
; BORRAR LA BANDERA MANTENIENDO LA VELOCIDAD DE CONVERSIÓN
; INICIA UNA NUEVA CONVERSIÓN
LDI AUX1,0B11010000
STS ADCSRA,AUX1
RJMP LAZO
;
.EXIT ; FIN DEL MODULO FUENTE
NOTA: cuando se está simulando, debe esperar hasta que se encienda la bandera ADIF
para que salga del lazo.
PROGRAMAS PARA GENERAR
INTERRUPCIONES CON EL CAD
Programa para visualizar mediante el simulador del AVR Studio, el funcionamiento de
los registros del conversor de analógico a digital que posee el microcontrolador
ATmega164P, utilizando las interrupciones del conversor para iniciar nuevas
conversiones.
2. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 2
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
.DEF AUX1 = R16
;
.CSEG
JMP PROGP
;
.ORG $30 ; INTERRUPCIÓN DE FIN DE CONVERSIÓN
JMP INTADC
;
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
; PROGRAMACIÓN DEL ADC
; REFS1:0=11 VOLTAJE DE REFERENCIA INTERNA 2.56
; ADLAR=0 RESULTADO ALINEADO A LA DERECHA
; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL
LDI AUX1,0B11000111
STS ADMUX,AUX1
; ADEN=1 HABILITACIÓN DEL CONVERSOR
; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN
; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN
; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN
; ADIE=1 HABILITACIÓN DE LA INTERRUPCIÓN
; ADPS2:0=011 FRECUENCIA DEL RELOJ DIVIDA PARA 8
LDI AUX1,0B11011011
STS ADCSRA,AUX1
; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN
LDI AUX1,0B00000000
STS ADCSRB,AUX1
; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7
LDI AUX1,0B10000000
STS DIDR0,AUX1
;
SEI
; LAZO DE ESPERA HASTA QUE ENCIENDA LA BANDERA
LAZO: RJMP LAZO
; INICIO DE CONVERSIÓN MANTENIENDO LA VELOCIDAD DE CONVERSIÓN
INTADC:
LDI AUX1,0B11011011
STS ADCSRA,AUX1
RETI
;
.EXIT ; FIN DEL MODULO FUENTE
PROGRAMAS PARA IMPLEMENTAR UN
VOLTÍMETRO DIGITAL
Programa para visualizar mediante el simulador del PROTEUS, el funcionamiento del
conversor de analógico a digital para implementar un voltímetro de 0 a 5 voltios,
utilizando la entrada ADC7 para la señal analógica y el Timer 1 para generar la
temporización de un segundo que se sirve para mostrar el resultado en los display.
.DEF VALORD = R15 ; DÍGITO EN LA CONVERSIÓN HEX A DEC
.DEF AUX1 = R16
.DEF AUX2 = R17
.DEF AUX3 = R18
.DEF VALORH = R19 ; BYTE ALTO LEÍDO DESDE EL CONVERSOR
.DEF VALORL = R20 ; BYTE BAJO LEÍDO DESDE EL CONVERSOR
.DEF VALCOL = R21 ; BYTE ALTO CORREGIDO PARA MOSTRAR
3. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 3
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
.DEF VALCOH = R22 ; BYTE BAJO CORREGIDO PARA MOSTRAR
.DEF AUXI1 = R23
;
.CSEG
JMP PROGP
.ORG $30 ; INTERRUPCIÓN DE FIN DE CONVERSIÓN
JMP INTADC
;
PROGP: LDI AUX1,LOW(RAMEND)
OUT SPL,AUX1
LDI AUX1,HIGH(RAMEND)
OUT SPH,AUX1
; PROGRAMACIÓN DEL ADC
; REFS1:0=01 VOLTAJE DE REFERENCIA AVCC
; ADLAR=0 RESULTADO ALINEADO A LA DERECHA
; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL
LDI AUX1,0B01000111 ; VOLTAJE DE REFERENCIA 5 VOLTIOS
STS ADMUX,AUX1
; ADEN=1 HABILITACIÓN DEL CONVERSOR
; ADSC=1 ENCENDIDO EL INICIO DE CONVERSIÓN
; ADATE=0 APAGADO DISPARO AUTOMÁTICO DE LA CONVERSIÓN
; ADIF=1 APAGADA BANDERA DE FIN DE CONVERSIÓN
; ADIE=1 HABILITACIÓN DE LA INTERRUPCIÓN
; ADPS2:0=000 FRECUENCIA DEL RELOJ DIVIDA PARA 2
LDI AUX1,0B11001000
STS ADCSRA,AUX1
; ADTS2:0=000 MODO DE LIBRE CONVERSIÓN
LDI AUX1,0B00000000
STS ADCSRB,AUX1
; ADC7D= 1 DESHABILITA LA ENTRADA DIGITAL PA7
LDI AUX1,0B10000000
STS DIDR0,AUX1
;
SEI
; VALOR INICIAL QUE SE MUESTRA
LDI VALORH,0x04
LDI VALORL,0x00
; MOSTRAR EN EL DISPLAY
SHOW: MOV VALCOL,VALORL
MOV VALCOH,VALORH
RCALL CORREC
RCALL CONVER
RCALL ASEG
RCALL SCAN
RJMP SHOW
; CORRECCIÓN DEL VALOR BINARIO A LA ESCALA
; Vref= 5 DIVIDIR PARA 200 = DIVIDIR 2 Y RECORRER EL PUNTO
CORREC: LSR VALCOH
ROR VALCOL
RET
; SUBRUTINA DE CONVERSIÓN DE HEXADECIMAL A DECIMAL
CONVER: LDI XL,LOW(DIGIT)
LDI XH,HIGH(DIGIT)
LDI ZL,LOW(TBLPOT<<1)
LDI ZH,HIGH(TBLPOT<<1)
LDI AUX3,3
CONVER1:LPM AUX1,Z+
LPM AUX2,Z+
CLR VALORD
CONVER2:SUB VALCOL,AUX1
SBC VALCOH,AUX2
4. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 4
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
BRCS CONVER3
INC VALORD
RJMP CONVER2
CONVER3:ADD VALCOL,AUX1
ADC VALCOH,AUX2
ST X+,VALORD
DEC AUX3
BRNE CONVER1
ST X,VALCOL
RET
; TABLA DE POTENCIAS DE 10
TBLPOT: .DW 1000,100,10
; LECTURA DEL VALOR DEL CONVERSOR
; INICIO DE CONVERSIÓN MANTENIENDO LA VELOCIDAD DE CONVERSIÓN
INTADC: LDS VALORL,ADCL
LDS VALORH,ADCH
LDI AUXI1,0B11011000
STS ADCSRA,AUXI1
RETI
; SUBRUTINAS PARA EL DISPLAY
.INCLUDE "SUBCC.ASM"
;
.EXIT ; FIN DEL MODULO FUENTE
RESULTADOS DE LA SIMULACIÓN
VALOR MEDIDO IGUAL A 0,00 voltios Y MOSTRADO IGUAL A 0,00 voltios
5. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 5
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
VALOR MEDIDO IGUAL A 1,00 voltios Y MOSTRADO IGUAL A 1,02 voltios
VALOR MEDIDO IGUAL A 2,50 voltios Y MOSTRADO IGUAL A 2,56 voltios
6. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 6
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
VALOR MEDIDO IGUAL A 4,99 voltios Y MOSTRADO IGUAL A 5,11 voltios
ANÁLISIS DE LA DIFERENCIA ENTRE EL VALOR
MEDIDO Y EL MOSTRADO
Se puede observar que existe diferencia entre el valor medido y el mostrado por el
programa; esto se debe a que en el procesamiento del valor obtenido por el conversor se
ha realizado una aproximación para poder mostrar en el display.
Según la fórmula del valor obtenido en el conversor, para un canal individual es:
Con Vref = 5 voltios y con Vin = 5 voltios se obtiene en el conversor el número 1024 en
binario, pero se debe mostrar 5 en decimal; por lo que se debe dividir para 204,8 el
número leído desde los registros ADCH/L antes de mostrar en los displays. Para
simplificar esta corrección en el programa únicamente se ha divido para 200, de la
siguiente forma:
• El número leído se desplaza una posición a la derecha de todos los bits, lo que
significa dividir para 2.
• Se transforma de Binario a BCD este nuevo número, obteniendo cuatro dígitos,
y.
• Al momento de transformar a siete segmentos el número, se enciende el punto
decimal en el antepenúltimo dígito, lo que significa dividir para 100.
7. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 7
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
Se mejora la precisión del voltímetro cambiando el voltaje de referencia a 2,56 voltios;
por lo que, con Vin = 2,56 voltios el número leído nuevamente será 1024 que divido
para 400 obtenemos exactamente 2,56 para ser mostrado en los displays. La corrección
en este caso se modifica, aumentado un desplazamiento más de los bits para realizar la
división para 4.
MODIFICACIONES EN EL CÓDIGO DEL PROGRAMA
Cambiar el Voltaje de Referencia en el registro ADMUX.
; PROGRAMACIÓN DEL ADC
; REFS1:0=11 VOLTAJE DE REFERENCIA 2,56
; ADLAR=0 RESULTADO ALINEADO A LA DERECHA
; MUX4:0=00111 SELECCIÓN DEL CANAL 7 - UN SOLO TERMINAL
LDI AUX1,0B11000111 ; VOLTAJE DE REFERENCIA 2,56 VOLT.
STS ADMUX,AUX1
Aumentar un desplazamiento de los bits del número leído.
; CORRECCIÓN DEL VALOR BINARIO A LA ESCALA
; Vref= 2,56 DIVIDIR PARA 400 = DIVIDIR 4 Y RECORRER EL PUNTO
CORREC: LSR VALCOH
ROR VALCOL
LSR VALCOH
ROR VALCOL
RET
NOTA: Estas modificaciones mejoran la precisión del voltímetro, pero el rango del
voltaje de entrada queda reducido a valores entre 0 y 2,56 voltios, tal como se puede ver
en las pantallas obtenidas del simulador.
1,50 voltios VALOR MEDIDO Y VALOR MOSTRADO
8. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 8
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
VALOR MEDIDO Y MOSTRADO IGUAL A 2,00 voltios
VALOR MEDIDO IGUAL A 2,50 voltios VALOR MOSTRADO IGUAL A 2,50
voltios
9. SISTEMAS MICROPROCESADOS: Programas para comprobar el funcionamiento del
ADC
Página 9
Ing. Jaime E. Velarde – Departamento de Electrónica, Telecomunicaciones y Redes
de Información
VALOR MEDIDO IGUAL A 3,00 voltios VALOR MOSTRADO IGUAL A 2,55
voltios. EL CONVERSOR DE ANALÓGICO A DIGITAL ESTA SATURADO