Lab07 Conversión Ad 2 Grupo C
October 15, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Lab07 Conversión Ad 2 Grupo C...
Description
Lab. N° 07 Conversión AD
PROGRAMACIÓN DE MICROCONTROLADORES IV CICLO INFORME Laboratorio N° 7 “
CONVERSIÓN AD ”
Integrantes: BASURTO BERNAL, Candy Massiel GUERREROS GUTIERREZ, Jose Jefferson HUAMAN CHIPANA, Elio YOPAN CUIPAL, Juber Antony
Profesor: Ciriaco Martínez, Cesar Augusto
Fecha de realización: 21 de Abril Fecha de Entrega: 28 de Abril
2017-1 1
Lab. N° 07 Conversión AD
Índice general 1. Introducción……………………………………………………………………………3 2. Objetivos generales…………………………………………………………………..4 3. Objetivos específicos.………………………………………………………………...4 4. Fundamento Teorico………………………………………………………………….4 4.1 Convertidores analógicos-digitales.…………………………………………….4 4.2 Registros……………....................................................................................4 4.3 ADRESH: ADRESL………………………………………………………….......5 4.4 Pasos para llevar a cabo una conversión conversión:: ……………………………….........5 5. Procediminto…………………………………………………………………………....6 5.1 Copiar el siguiente programa, analiza.................................................................6 ¿Qué sucede en el ADC?....................................... ADC?............................................................ ......................................... ..................................7 ..............7
¿En qué consiste el primer programa?........................................................7 ¿Cuál es la fórmula que nos indica la resolución del adc de 8bits?...............7 ¿Para un voltaje 2.8V, de de cuánto es la conversión binaria?........................................7 binaria?........................................7
¿Por qué utilizamos el puerto B?....................................................................7 Explicar brevemente la función de la librería adc.asm ………………………...7 5.2 Copiar el siguiente programa, analiza……………………………………………...7 En qué consiste el segundo programa?.........................................................8 ¿Hasta cuánto puede puede ser el valor cargado de W?.................... W?..........................................8 ......................8 ¿Por qué se usan dos puertos de salida para este programa?....................... programa?.......................8 8 ¿Cuáles es la ecuación para la resolución en el segundo programa? ………8 ¿En qué canal del PIC se está ingresando las variaciones de voltaje dc? ....8 5.3 Mostrar evidencia de ejecución de los programas……………………………….9 Capturar ventanas que muestran el resultado del ensamble del proyecto....9 Capturar ventanas que muestren la simulación paso a paso........................9 paso................... .....9 Comentar la función de las instrucciones......................................................9 Tomar fotos a los módulos de trabajo ………………………………………….9 6. Aplicasion……………………………………………………………………………....9 7. Comcluiones………………………………………………………………………….10 8. Observaciones………………………………………………………………………10 9. Biblografias.………………………………………………………………………....10
2
Lab. N° 07 Conversión AD
1. Introducción: El microcontrolador PIC16F877 de Microchip puede realizar una gran variedad de funciones, pero el que vamos a estudiar es conversor analógico-digital. Antes de ingresar de lleno en el funcionamiento funcionamiento vamos a comentar los elementos principales del convertidor análogo a digital. Las señales que se envían a través de un medio guiado como un cable o no guiado como es el aire son de tipo continuo y pueden tomar infinitos valores a lo largo del tiempo. El interés por digitalizar una señal puede surgir por varios motivos: el hecho de querer guardar en un soporte digital o transmitirla digitalmente para poder reconstruirla, poder tratar con programas. Acotando la señal en un intervalo de tiempo y unos valores mínimos y máximos de tensión tenemos que tener en cuenta dos factores fundamentales a la hora de almacenar dicha señal en un formato adecuado que pueda almacenarse digitalmente en unos y ceros se tiene que muestrear y cuantificar. El muestreo implica que tenemos que coger una muestra de la señal cada tiempo ya que no hay memoria suficiente capaz de almacenar los infinitos puntos de una señal en un intervalo cualquiera de tiempo.
3
Lab. N° 07 Conversión AD
2. Objetivo General: Convertidor analógico/digital del PIC16F877A utilizando registros tales como ADRESH, ADRESL,
ADCON0 y ADCON1.
3. Objetivos Específico: Utilizar las instrucciones para programar al microcontrolador PIC16F877 Utilizar software de desarrollo proporcionada por el fabricante. Implementación hardware.
4. Marco Teórico: 4.1.
Convertidores analógicos-digitales.
Los convertidores A/D son dispositivos electrónicos que establecen una relación biunívoca entre el valor de la señal en su entrada y la palabra digital obtenida en su salida. La relación se establece en la mayoría de los casos, con la ayuda de una tensión de referencia. La conversión A/D tiene su fundamento teórico en el teorema de muestreo y en los conceptos de cuantificación y codificación. Una primera clasificación de los convertidores A/D, es la siguiente:
Conversores de transformación directa.
Conversores con transformación (D/A) intermedia, auxiliar.
4.2.
Registros
El conversor analógico digital usa cuatro registros para realizar la conversión:
A/D result high high register (AD (ADRESH) RESH) A/D result low register register (ADRESL) A/D control register0 register0 (ADCON0 (ADCON0)) A/D control register1 register1 (ADCON1 (ADCON1))
ADCON0 (address: 1FH) Controla las operaciones del módulo A/D. Imagen 1. Registro ADCON0
4
Lab. N° 07 Conversión AD
4.3.
ADRESH: ADRESL
Estos registros contienen los 10 bits del resultado de la conversión A/D. Cada uno de estos registros es de 8 bits por lo que entre los dos suman un total de 16 bits. El conversor A/D tiene flexibilidad para ajustar a la derecha o a la izquierda los 10 bits que son el resultado de la conversión en los 16 bits de los registros de resultado. El bit de selección de formato (ADFM; bit 7 del registro ADCON1) controla esta justificación. Con el bit de selección de formato a 1 la justificación será a la derecha, y puesto a 0 la justificación será a la izquierda. Los bits sobrantes se guardan con ceros. Cuando la conversión A/D esta desactivada estos registros son usados como dos registros de 8 bits de uso general
Imagen 2. Registros Desactivados.
4.4.
Pasos para llevar a cabo una conversión:
Configuración del módulo A/D Configuración de los puertos analógicos y de la referencia de voltaje (ADCON1: bits 3- 0) Selección del canal de entrada (ADCON0 bits 5-3) Selección del reloj de conversión (ADCON0: bits 7-6) Encender el modulo A/D (ADCON0: bit 1) Configuración de las interrupciones A/D (si ( si se desea) Espera del tiempo de adquisición requerido Empezar la conversión. Interrupción del A/D Leer el resultado almacenado en ADRESH: ADRESL borrar el bit ADIF si se requiere. *ADIF: bit interruptor del conversor A/D; 1 = conversión A/D completa (debe ser borrado en software), 0 = conversión A/D no completa. **ADIE: bit de activación de la interrupción i nterrupción del convertidor A/D; 1 = activa lla a interrupción del convertidor, 0 = desactiva la interrupción del convertidor
5
Lab. N° 07 Conversión AD
Imagen 3. A/D Convertidor.
5. Procedimiento: 5.1.
Copiar el siguiente programa, analizar, comentar, simular e implementar: implementar:
;--------------------------------------------; Ejemplo de conversión ADC: 8bits ; Curso PIC16F877 ; -------------------------------------------- list p=16f877a include include Config 0x3f32 cblock 0x20 endc endc org 0000h ;--------------------------------- banco 1 clrf trisb ;comentar: banco 0 clrf movlw call repite
portb
;comentar:
.0 ;comentar: Inicio_ADC ;comentar:
6
Lab. N° 07 Conversión AD
call ADC8Bits ;comentar: movf RegADC1,0 ;comentar: movwf portb ;comentar: goto repite ;--------------------------------- include include ;comentar: end
Programación del Procedimiento 5.1. Solucion: ;--------------------------------------------;Ejemplo de conversión ADC:8bits ;Curso PIC16F877 ;--------------------------------------------list p=16f877a include include __config 0x3f32 cblock 0x20 endc org 0000h ;--------------------------------banco 1 clrf trisb ;comentar:Definimos al Trisb como salidas banco 0 clrf portb ;comentar:Ponemos al Portb en 0 movlw .0 ;comentar:Aqui escogemos en que canal entrará la señal análoga call Inicio_ADC ;comentar:Llamamos a la subrutina para iniciar la conversión repite call ADC8Bits ;comentar:Empieza ka conversión a 8 bitsde una señal análoga movf RegADC1,0 ;comentar:Los datos del registro RegADC1, se guardan en W movwf portb ;comentar:Enviar los datos de W a los pines del PORTB goto repite ;--------------------------------include include ;comentar:Lbrera para convertir una señal Análoga a Digital end
7
Lab. N° 07 Conversión AD
Creación nueva de programación en MPLab: Pasos a realizar: Imagen 4. New proyecto se ejecutara de la creación de la l a nueva programación que se desea realizar.
Imagen 5. Visualizar nuestro proyecto vamos a la barra de menú
8
Lab. N° 07 Conversión AD
Imagen 6. Habilitar el simulador del MPLAB, para esto damos click en Debugger.
Imagen 7. Un nuevo archivo (Hoja de texto en blanco).
9
Lab. N° 07 Conversión AD
Imagen 8. Ventana de Guardar como buscamos nuestra carpeta que hemos creado.
Imagen 9. Programación 5.1 en MPLab.
10
Lab. N° 07 Conversión AD
Imagen 10. Implementación en Proteus.
11
Lab. N° 07 Conversión AD
Cuestionario de la programación: ¿Qué sucede en el ADC?
En convertidor de ADC solo toma los valores variables de las señales de entrada para luego convertirlo en código binario.
¿En qué consiste el primer programa?
Este programa nos permite convertir una señal análoga de 0 a 5 voltios en una señal digital de 8 bits de 00000000 a 11111111 (0 a 255). ¿Cuál es la fórmula que nos indica la resolución del adc de 8bits?
La fórmula esta expresado entre la división de Vmax-entra entre dos elevado al número de bits.
Vref Vref 2
n 1
Donde: V
:
ref+ Vref-:
voltaje mínimo máximode dereferencia referencia voltaje n: número de bits
Calculando:
Para 8 bits la resolució de 19,6mV/bit
¿Para un voltaje 2.8V, de cuánto es la conversión binaria?
La conversión binaria seria ‘1111000 ‘111100010b’ 10b’
¿Por qué utilizamos el puerto B?
Se utilizó el puerto B porque este tiene 8 bits, también se pudo haber usado el puerto C y D. Explicar brevemente la función de la librería adc.asm
Esta librería sirve para activar el registro ADCON0 y luego realizar una conversión de una señal análoga a digital de 8 o 10 bits. ¿En qué canal del PIC está ingresando el voltaje?
Se utilizó el canal 0 o el bit 0 del Port A.
5.2.
Copiar el siguiente programa, analizar, comentar, simular e implementar: implementar:
;-----------------------------------------------------;Ejemplo de conversión ADC:10bits ;Curso PIC16F877
12
Lab. N° 07 Conversión AD
; ----------------------------------------------------- list p=16f877a include include config 0x3f32 cblock 0x20 endc org
0000h
; -------------------------------- banco 1 clrf trisb ;comentar: clrf trisc ;comentar: banco 0 clrf portb ;comentar: clrf portc ;comentar: movlw .5 ;comentar: call Inicio_ADC ;comentar: repite call ADC10Bits ;comentar: movf RegADC1,0 ;comentar: movwf portb ;comentar: movf RegADC2,0 ;comentar: movwf portc ;comentar: goto repite ; -------------------------------- include include ;comentar: end
Programación del Procedimiento 5.2. Solucion: ;-----------------------------------------------------;Ejemplo de conversión ADC:10bits ;Curso PIC16F877 ;-----------------------------------------------------list p=16f877a include include __config 0x3f32 cblock 0x20 endc org 0000h ;--------------------------------banco 1 clrf trisb clrf trisc banco 0 clrf portb clrf portc movlw .0 call Inicio_ADC
;comentar:Se pone el PORTB en 0 ;comentar:Se pone el PORTB en 0 ;comentar:Se selecciona el canal 0 del conversor ;comentar:Hace el llamado
repite call ADC10Bits movf RegADC1,0
;comentar:Se hace el llamado a la subrutina ADC10BITS ;comentar:Movemos los datos del RegADC1 a W
;comentar:Se declara el TRISB como salida ;comentar:Se declara el TRISC como salida
13
Lab. N° 07 Conversión AD
movwf portb ;comentar:Enviamos los datos del W al PORTB movf RegADC2,0 ;comentar:Movemos los datos del RegADC2 a W movwf portc ;comentar:En viamos los datos de W a PORTC goto repite ;--------------------------------include include ;comentar: end
La mima creación de 8 bits se utilizara par el de 10 bits: Imagen 11. En la ventana New Project tenemos que poner el nombre del proyecto.
Imagen 12. Para visualizar nuestro proyecto.
14
Lab. N° 07 Conversión AD
Imagen 13. Habilitar el simulador del MPLAB, para esto damos click en Debugger.
Imagen 14. Para visualizar nuestro proyecto.
Imagen 15. Programación de 10 bits.
15
Lab. N° 07 Conversión AD
Imagen 16. Implementación en el Proteus del 10 bits.
16
Lab. N° 07 Conversión AD
Cuestionario de la programación:
¿En qué consiste el segundo programa?
Este programa es similar al programa anterior, con excepción que este funciona con 10 bits. Podemos decir que este programa te da una mejor resolución
¿Hasta cuánto puede ser el valor cargado de W antes de llamar a Inicio_ADC?
Antes de hacer uso del INICIO ADC estaríamos utilizando todos los bits de ambos puertos B y C.
¿Por qué se usan dos puertos de salida para este programa?
Debido a que en este programa se utilizar 10 bits y en cada puerto solo hay 8 bits, es necesario compensar esto con 2 bits más del puerto C
¿Cuáles es la ecuación para la resolución en el segundo programa?
solución ión Re soluc
Vref ) (Vref
1024
Vref 1024
Vref+: voltaje máximo de referencia Vref-: voltaje mínimo de referencia
¿En qué canal del PIC se está ingresando las variaciones de voltaje dc ?
En este caso también se hizo uso del canal 0 para introducir la tensión variable.
6. Aplicación de lo aprendido a prendido Deberá ser conciso y redactado con lenguaje propio. Estará basado en las lecturas recomendadas o cualquier otra información relacionada relacionada con el tema. En cualquier caso no será mayor de tres (03) páginas
Programación: ;--------------------;-----------------------------------------------------------------;Ejemplo de conversión ADC:8bits ;Curso PIC16F877 ;--------------------;-----------------------------------------------------------------list p=16f877a include include __config 0x3f32 cblock 0x20 endc org 0000h ;--------------------;------------------------------------------banco 1 clrf trisb banco 0 clrf portb cursor off
17
Lab. N° 07 Conversión AD
call Inicio_lcd repite movlw .0 ; canal 0 call Inicio_ADC call ADC8Bits movf RegADC1,0 movwf NumMult1 NumMult1 ;coloco el numero convertidoa NumMult1 movlw .47 ; constante para ser multiuplicada movwf NumMult2 mensaje .10 desplazaderecha call Mult8x8Bits ;------- primer numero DECENA DE MILLAR convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumB2 putv NumB2 ;------- segundo numero UNIDAD DE MILLAR convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumB1 putv NumB1 ;------- tercer numero CENTENA convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumA3 putv NumA3 ponerc '.' ; SE COLOCA EL PUNTO PUNTO DECIMAL ;------- cuarto numero DECENA convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumA2 putv NumA2 ;------- quinto numero UNIDAD convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumA1 putv NumA1 ;--------Para que salga la unidad de grados centigrados ponerc'°' ponerc'C' ;------no es necesario colocar los cursores "CURSOR 2", ya que ahora me voy a ir a la segunda linea enter ;me voy a la segunda linea
18
Lab. N° 07 Conversión AD
;----------ahora ;----------ah ora VOLTAJE-----------------VOLTAJE-----------------------
movlw .1 ; canal 1 call Inicio_ADC call ADC8Bits movf RegADC1,0 movwf NumMult1 movlw .20 ;constante de multiplicacion movwf NumMult2 mensaje .11 desplazaderecha
call Mult8x8Bits ;------- numero UNIDAD DE MILLAR convertido y luego luego a ascci para enviarlo al LCD movlw .48 addwf NumB1 putv NumB1 ponerc '.' ; PUNTO DECIMAL ;------- numero CENTENA convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumA3 putv NumA3 ;-------numero DECENA convertido y luego a ascci para enviarlo al LCD ;-------numero movlw .48 addwf NumA2 putv NumA2 ;------- numero UNIDAD convertido y luego a ascci para enviarlo al LCD movlw .48 addwf NumA1 putv NumA1 ponerc' ' ponerc'V' milisegundo .100 ; para ver congelado las medidas medidas ese tiempo borralcd ; al borrar la pantalla lcd , automticamente se va a la primera columna ; y primera fila , asi que no es necesario colocar los "CURSOR 2" goto repite ; luego inicias nuevamnete las lecturas
19
Lab. N° 07 Conversión AD
;--------------------------------;-------------------------------include include include include include include Implementación en el programa Proteus:
6. Conclusiones:
Los códigos convertidos a binario, son almacenados en los registros RegADC1 cuando se usan 8 bits (RB0-RB7) y RegADC2, cuando se usan 10 bits de datos (RB0-RB7,RC0 (RB0 -RB7,RC0 y RC1).
Antes de realizar la conversión, conversión, primero se debe elegir el canal por donde ingresará la señal variable.
r esolución es de 19.6mV porque tiene más bits, por otro lado para Para el primer programa la resolución el segundo programa la resolución es de 4.89mV por ser solo 8 bits.
La instrucción call nos va permitir llamar a las librerías en la programación.
Utilizamos la librería (adc.asm) para utilizar los pines análogos análogos del PIC y botar los valores d de e la conversión Análogo-Digital en las salidas RB y RC.
7. Observaciones: A mayor cantidad de bits para el conversor ADC se tiene una mejor resolución en la conversión
digital, esto permite representar digitalmente de forma más exacta la señal analógica.
La programación en Assembler contiene la instrucción “include” que permiten ingresar a otra
hoja de programación de la misma carpeta donde se ha creado el proyecto.
El PIC 16f877a tiene 8 canales de conversión Análogo-Digital, los cuales van desde AN0 hasta AN7.
20
Lab. N° 07 Conversión AD
Se logró convertir una señal variable (analógica) de 0 a 5 voltios a códigos binarios usando el
PIC 16F877A con la principal ayuda de la librería adc.asm.
En Assembler se pueden crear macros, el cual permite crear instrucciones que facilitan el
desarrollo y elaboración de una programación.
8. Bibliografías: Recuperado
file:///C:/Users/User/Downloads/convertidor_anlog /convertidor_anlogo_digital_pic_ o_digital_pic_16f877a_448.pd 16f877a_448.pdf file:///C:/Users/User/Downloads Recuperado de: de: http://www.puntoflotante.net/CONVERTIDORAD.htm
Recuperado de: http://grupovirtus.org/moo irtus.org/moodle/pluginfi dle/pluginfile.php/449 le.php/4494/mod_resour 4/mod_resource/content ce/content/1/SEMANA_6/mat /1/SEMANA_6/material_2.pdf erial_2.pdf http://grupov Recuperado de: Microchip section 23: basic 10 bit A/D converter Recuperado de: de: www.todopic.com.ar
21
de:
Lab. N° 07 Conversión AD
pág. 8
View more...
Comments