viernes, 30 de mayo de 2014

CONVERSOR ANÁLOGO DIGITAL

INFORME DE LABORATORIO 4
CONVERSOR ANÁLOGO DIGITAL


INTEGRANTES :   - ANDRES FELIPE LEON SALDAÑA        19266
                               - EDWIN RICARDO QUINTERO LEON      19251  


FOTOS AVALADAS POR EL DOCENTE 









DESCRIPCIÓN DEL CASO  

Se requiere introducir una señal análoga en nuestro microcontrolador y verla en un prendido consecutivo de 8 leds, para esto vamos a hacer uso del periférico de conversión análogo/digital de nuestro microcontrolador. La idea general y/o principal de nuestro circuito consistirá en tomar un punto de referencia, en nuestro caso de voltaje, que sera variado con un potenciometro o resistencia variable. A partir de cierto valor de voltaje, el microcontrolador el microcontrolador lo definirá como 0 y a medida que aumente el voltaje cambiara los valores ascendetemente con el fin de encender los leds. Es recomendable usar una resistencia variable lineal, ya que una logarítmica es difícil de manipular y en un movimiento leve puede prender dos o mas ledas al tiempo.

ANÁLISIS DE DISEÑO CON DEFINICIÓN DE MATERIALES Y RECURSOS PARA DARLE SOLUCIÓN AL CASO

Como primera medida en necesario saber y aplicar los pasos a seguir para poder construir y quemar el programa en nuestro micro controlador, estos se resumen en 4 importantes pasos:

1) Idea o caso problema: 

Se desea variar una resistencia variable lineal desde su punto de menor valor, según el diseño, y a medida que  vaya variando al punto de mayor valor, deberá encender los 8 leds uno por uno y consecutivamente. De igual forma tendrá que suceder si se gira de manera contraria.

2) Algoritmo: 

* Variar una resistencia variable
* Encender 8 leds en fila consecutivamente

3) Diagrama de flujo: 



4) Programa o código Assembler

Hay que tener en cuenta que a la hora de construir el código es necesario tener en cuenta que su estructura se basa a partir de 4 importantes partes:

* LIBRERÍAS O HERRAMIENTAS
   (Se escoge el micro controlador que se utilizara)
* CONFIGURACIÓN DEL MICRO CONTROLADOR
* CONFIGURACIÓN DEL LOS PERIFÉRICOS 
    (Se declaran variables)
* PROGRAMA FINAL

Con estos importantes pasos y conociendo el datasheet o comandos del micro controlador es suficiente para construir el código.

#include     <p16f877a.inc>       ; definiciones de variables especificas del procesador

__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _LVP_OFF & _CPD_OFF


CONT1 EQU 0X20
CONT2 EQU 0X21
CONT3 EQU 0X22
DATO1 EQU 0X23
DATO2       EQU 0X24
DATO3       EQU 0X25

PRINCIPAL

;;;Configuracion PWM

         MOVLW 0XE0;       Cargo 224,lo que implica un periodo de 225us (4444 Hz)
 MOVWF PR2  ; Asigno el valor a PR2
 MOVLW B'00001101'
 MOVWF CCP1CON ; Modo PWM <3,2,1,0>, bit <5,4> en ceros
 MOVLW B'00000100' ; <1x> Un prescaler de 16 da un periodo apox de 4ms y una frec de 244Hz
   ; <01> Un prescaler de 4 da un periodo apox de 1ms y una frec de 1KHz
   ; <00> Un prescaler de 1 da un periodo apox de 250us y una frec de 4KHz
 MOVWF T2CON ; Prescaler 16 <1,0> y activa el TMR2 <2>
         MOVLW   B'00001111'  ; duty ciclo
         MOVWF     CCPR1L      ;Asignacion de modulo como pwm1
; CLRF CCPR1L ; Duty en cero (0)


INICIO
BSF STATUS,5 ; BANCO 1.
BCF ADCON1,0 ; SE TOMAN 7 CANALES DEL A/D.
BCF ADCON1,1 ; VDD COMO ENTRADA VOLTAJE DE REFERENCIA POSITIVO.
BCF ADCON1,2 ; VSS COMO ENTRADA VOLTAJE DE REFERENCIA NEGATIVO.
BCF ADCON1,3 ;
BCF ADCON1,6 ; TOMAMOS RC INTERNO COMO RELOJ PARA EL CONVERSOR.
BCF ADCON1,7 ; LOS 8 BIT DE MAYOR PESO ESTAN EN ADRESH,
                            ; LOS 2 BIT DE MENOR PESO ESTAN EN ADRESL, LOS CUALES LOS DESPRECIAMOS.
    
BCF TRISE,0
;BCF TRISC,0
BCF TRISC,2
;CLRF TRISB
CLRF TRISD 
BCF STATUS,5 ; BANCO 0.
CALL LED
CALL TIEMPO_1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
CONVER_0
BSF ADCON0,0 ; PRENDEMOS EL CONVERSOR.

BCF ADCON0,3 ; HABILITAMOS CANAL 0.
BCF ADCON0,4
BCF ADCON0,5
BCF ADCON0,6 ; TOMAMOS RC INTERNO COMO RELOJ PARA EL CONVERSOR.
BCF ADCON0,7

BSF ADCON0,2 ; INICIAMOS LA CONVERSION DEL CANAL 0.
LISTO_0
BTFSC ADCON0,2 ; PROBAMOS QUE LA CONVERSIÓN DEL CANAL 0 YA ESTA.
GOTO LISTO_0 ; NO ESTA LISTA.
CALL TIEMPO_1
MOVF ADRESH,W ; RECUPERO LOS 8 BITS DE MAYOR PESO DE LA CONVERSIÓN.
     MOVWF PORTD ;los visualiza por el PORTB
        MOVWF       DATO1 ;Guarda el valor de netrada del conversor



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

MOVF DATO1
MOVWF CCPR1L ; Mostrar en CCP1
        CALL LED
GOTO INICIO
        


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
LED
BSF PORTE,0
CALL TIEMPO
BCF PORTE,0
CALL TIEMPO
RETURN
;
TIEMPO_1
MOVLW 0X14
MOVWF CONT3
NADA_1
NOP
DECFSZ CONT3,1
GOTO NADA_1
RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
TIEMPO
MOVLW 0XC9 ; C9 Valor con que se carga el contador 1.
MOVWF CONT1
NIVEL1
MOVLW 0XEA ; EA Valor con que se carga el contador 2.
MOVWF CONT2
NIVEL2
DECFSZ CONT2,1 ; Se resta en 1 el contador 2 y se pregunta si es cero.
GOTO NIVEL2 ; Aun el contador 2 no es cero.

DECFSZ CONT1,1 ; Se resta en 1 el contador 1 y se pregunta si es cero.
GOTO NIVEL1 ; Aun el contador 1 no es cero.
RETURN ; Retorna de la subrutina.

END ; Final del programa.


Finalmente se genera el archivo .asm com MPLAB y nos disponemos a quemarlo en el micro controlador con un PICK IT 3 

ESO ES TODO AMIGOS MUCHAS GRACIAS !!!

No hay comentarios.:

Publicar un comentario