Translate, Traductor

sábado, 7 de julio de 2012

Monitor de posición con PIC16F886

Monitor de posición o indicador de nivel!

Con este circuito podemos saber la posición de un potenciometro que esta conectado al modulo conversor análogo a digital de un microcontrolador PIC16F886.

El potenciometro puede ser reemplazado con cualquier tipo de sensor para así poder monitorear el estado o nivel de cualquier variable.

otros ejemplos de uso del conversor análogo a digital:

conversor-analogo-a-digital-con-pic-12f675
conversor-analogo-a-digital-con-pic-16f886
secuenciador-variable-usando-el-tmr0-y-converor-analogo-a-digital


Circuito



Video:



Codigo fuente:


LIST P=16F886
INCLUDE P16F886.INC
ERRORLEVEL -302

__CONFIG _CONFIG1, _INTOSCIO & _WDT_OFF & _PWRTE_OFF & _MCLRE_OFF & _CP_OFF & _CPD_OFF & _BOREN_ON & _IESO_OFF & _FCMEN_OFF & _LVP_OFF & _DEBUG_OFF
  __CONFIG _CONFIG2, _BOR40V & _WRT_OFF


CBLOCK 0X20
VAL1, PDel0, DISP
ENDC

ORG 00H
GOTO CONFIGURA


TABLA ADDWF PCL,F
RETLW B'00111111'
RETLW B'00000110'
RETLW B'01011011'
RETLW B'01001111'
RETLW B'01100110'
RETLW B'01101101'
RETLW B'01111101'
RETLW B'00000111'
RETLW B'01111111'
RETLW B'01101111' ;9


MOSTRAR MOVF DISP,W
CALL TABLA
MOVWF PORTB
RETURN

PDelayAD   movlw     .123       ; 1 set number of repetitions
        movwf     PDel0     ; 1 |
PLoop0AD   clrwdt               ; 1 clear watchdog
        decfsz     PDel0, 1   ; 1 + (1) is the time over?
        goto       PLoop0AD     ; 2 no, loop
PDelL1AD   goto PDelL2AD ; 2 cycles delay
PDelL2AD   clrwdt               ; 1 cycle delay
        return               ; 2+2 Done


CONFIGURA CLRF     PORTB
BANKSEL   OSCCON
      MOVLW B'01101100'
      MOVWF OSCCON
      BANKSEL ADCON1
  MOVLW B'00000000'
  MOVWF ADCON1
BANKSEL ANSEL
MOVLW B'00000001'
      MOVWF ANSEL
CLRF     ANSELH
BANKSEL TRISB
MOVLW .1
MOVWF TRISA
CLRF     TRISB
CLRF     TRISC
BANKSEL ADCON0
      MOVLW B'11000001'
      MOVWF ADCON0
      BANKSEL PORTB
CLRF PORTA
CLRF PORTB
CLRF PORTC


CICLO NOP
AD_LOOP BSF ADCON0,GO
CALL PDelayAD
END_AD BTFSC ADCON0,GO
GOTO END_AD
MOVF ADRESH,W
MOVWF VAL1

CERO CLRW
XORWF VAL1,W
BTFSS STATUS,Z
GOTO UNO
MOVLW .1
MOVWF PORTB
GOTO CICLO

UNO MOVLW .32
SUBWF VAL1,W
BTFSC STATUS,C
GOTO DOS
MOVLW .2
MOVWF PORTB
GOTO CICLO

DOS MOVLW .64
SUBWF VAL1,W
BTFSC STATUS,C
GOTO TRES
MOVLW .4
MOVWF PORTB
GOTO CICLO

TRES MOVLW .96
SUBWF VAL1,W
BTFSC STATUS,C
GOTO CUATRO
MOVLW .8
MOVWF PORTB
GOTO CICLO

CUATRO MOVLW .128
SUBWF VAL1,W
BTFSC STATUS,C
GOTO CINCO
MOVLW .16
MOVWF PORTB
GOTO CICLO

CINCO MOVLW .160
SUBWF VAL1,W
BTFSC STATUS,C
GOTO SEIS
MOVLW .32
MOVWF PORTB
GOTO CICLO

SEIS MOVLW .192
SUBWF VAL1,W
BTFSC STATUS,C
GOTO SIETE
MOVLW .64
MOVWF PORTB
GOTO CICLO

SIETE MOVLW .224
SUBWF VAL1,W
BTFSC STATUS,C
GOTO CICLO
MOVLW .128
MOVWF PORTB
GOTO CICLO

END


Copyright 2012  edwtron
       
Este DOCUMENTO es un DOCUMENTO LIBRE, usted puede redistribuirlo y/o modificarlo bajo los terminos de la GNU FDL tal y como es publicada por la fundacion de software libre; bajo la version 1.3 de la licencia, o  una version superior.
     Leer la licencia GNU gpl para mas detalles. 

    Permission is granted to copy, distribute and/or modify this document
    under the terms of the GNU Free Documentation License, Version 1.3
    or any later version published by the Free Software Foundation;
    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
    A copy of the license is included in the section entitled "GNU
    Free Documentation License".    

No hay comentarios:

Publicar un comentario