Desde 1994 en la Red. La pagina de los aficionados a la electronica, informatica y otras curiosidades de la vida. No dudes en visitarnos.
Ahora 0 visitas.| 3414932 Visitas (desde Dic. 2011), hoy: 251 Visitas 610 Pag. Vistas , ultimos 36 dias: 10501 Visitas. 39005 Pag. Vistas. Tu IP: 52.14.150.55
Que ando curioseando:
AutosuficienciaCosas de casaElectronicaEn InternetInformáticaMundo MisticoSin categoríaSociedadTe lo recomiendo

CAPACIMETRO CON PIC 16F84

Véase la evolución:

Un capacímetro con los mismos principios básicos, se presentó en Nueva Revista Electrónica de marzo de 1978, y no menos de 13 CYS de lógica discreta. Véase el CI

Hoy podemos construir la capacímetro con un solo IC, el microcontrolador PIC16F84, por ejemplo, y un pequeño programa embebido en su memoria.

Capacímetro

Por supuesto, no podemos compararlo con una HP por $ 5000, 00 o algo, pero le garantizo que cuando no se tiene que romper toda una gran rama en el banco o en el campo.

Mide desde 9999 hasta 5NF UF con un promedio de error <2% en comparación con un Minipa, suficiente para los trabajos de mantenimiento, ya que la mayoría de los condensadores de diversos dispositivos electrónicos están en el radio, especialmente con electrolítico tolerancia de hasta el 20%

 

PROGRAMACION EN ENSAMBLADOR (ASM):

;Esquema 2 ( display K comun )
;10/09/2003 CAPACIMETRO 5n a 9999 microF
; COLOCAR RESISTOR DE 1K2 NO PINO 3 ( RA4 ) PARA +5V
; Ligar resistor do ponto decimal ao +5

;Segmentos no portb
errorlevel -302
list p=16F84A
radix dec
include
__config _XT_OSC & _CP_OFF & _WDT_OFF & _PWRTE_ON
W2 equ 12
ST2 equ 13
milhar equ 14
centena equ 15
dezena equ 16
unidade equ 17
qual equ 18
tempo equ 19
dt1 equ 20
espera equ 21

org 0

goto inicio
org 4

SalvaWeST:
movwf W2
movf STATUS,W
movwf ST2

TestaFlags:
btfsc INTCON,T0IF
goto INT_TIMER
btfsc INTCON,RBIF
goto INT_EXTERNA

Fim_Int:
movf ST2,W
movwf STATUS
movf W2,W
retfie
INT_TIMER:
bcf STATUS,RP0
incf qual,f
movf qual,w
indexa:
addwf PCL,f
nop
goto dispM
goto dispC
goto dispD
goto dispU
movlw 1
movwf qual

dispM:
bsf PORTA,1
bsf PORTA,2
bsf PORTA,3
bsf PORTA,4
movf milhar,w
call segmento
movwf PORTB
bcf PORTA,2
bcf INTCON,T0IF
goto Fim_Int

dispC:

bsf PORTA,1
bsf PORTA,2
bsf PORTA,3
bsf PORTA,4
movf centena,w
call segmento
movwf PORTB
bcf PORTA,1
bcf INTCON,T0IF
goto Fim_Int

dispD:
bsf PORTA,1
bsf PORTA,2
bsf PORTA,3
bsf PORTA,4
movf dezena,w
call segmento
movwf PORTB
bcf PORTA,4
bcf INTCON,T0IF
goto Fim_Int

dispU:
bsf PORTA,1
bsf PORTA,2
bsf PORTA,3
bsf PORTA,4
movf unidade,w
call segmento
movwf PORTB
bcf PORTA,3
bcf INTCON,T0IF
goto Fim_Int

segmento:

addwf PCL,f
retlw B'01111111' ;0
retlw B'00001101' ;1
retlw B'10110111' ;2
retlw B'10011111' ;3
retlw B'11001101' ;4
retlw B'11011011' ;5
retlw B'11111011' ;6
retlw B'00001111' ;7
retlw B'11111111' ;8
retlw B'11011111' ;9
retlw B'11110010' ;
retlw B'10100000' ;
retlw B'10111000' ;
retlw B'10101000' ;
retlw B'00000000' ; apaga segmentos
call erro

INT_EXTERNA:
incf unidade,f
movlw 10
subwf unidade,w
btfss STATUS,Z
goto fim_ext

clrf unidade
incf dezena,f
movlw 10
subwf dezena,w
btfss STATUS,Z
goto fim_ext

clrf dezena
incf centena,f
movlw 10
subwf centena,w
btfss STATUS,Z
goto fim_ext

clrf centena
incf milhar,f
movlw 10
subwf milhar,w
btfss STATUS,Z
goto fim_ext
clrf milhar

fim_ext:
bcf INTCON,RBIF
goto Fim_Int

inicio:
clrf PORTA
clrf PORTB
bcf PORTA,1
bcf PORTA,2
bcf PORTA,3
bcf PORTA,4

clrf INTCON
clrf TMR0
bsf STATUS,RP0
movlw B'00000001'
movwf TRISB
movlw B'11100000'
movwf TRISA
movlw B'10010011'
movwf OPTION_REG
bcf STATUS,RP0

Reset:

clrf milhar
clrf centena
clrf dezena
clrf unidade
clrf qual
bcf INTCON,T0IF
bcf INTCON,RBIF
bsf INTCON,T0IE
bsf INTCON,RBIE
bsf INTCON,GIE
;---------
pulso
bsf PORTA,0 ; descarga do capacitor
call ms250 ; espera
call ms250
bcf PORTA,0 ; inicia carga do capacitor

loop: btfss PORTB,0 ;
bsf INTCON,RBIF ; conta durante tempo de carga do capacitor

;------------------OVERFLOW (9999)--------------------------
btfsc PORTB,0 ;*** testa fim da medição do capacitor
goto off ;***
movf milhar,w
addwf centena,w ; SOMA
addwf dezena,w ; "
addwf unidade,w ; "
xorlw 36 ; 9+9+9+9
btfss STATUS,2
goto loop

erro movlw 10
movwf milhar
movlw 11
movwf centena
movlw 11
movwf dezena
movlw 12
movwf unidade

off movlw 1 ;(+- 1 min.)
movwf espera

loop2 call ms250
incfsz espera,1
goto loop2

movlw 10
movwf milhar
movlw 11
movwf centena
movlw 12
movwf dezena
movlw 13
movwf unidade

movlw 240 ; (+- 4 seg.)
movwf espera
loop3 call ms250
incfsz espera,1
goto loop3
;------------------------------------------------
;Preparando-se para dormir
bsf STATUS,RP0
movlw B'11111111'
movwf TRISA
movwf TRISB
bcf STATUS,RP0
bcf INTCON,GIE
sleep
;--------------------------
ms250:
movlw 250
movwf tempo

ms250a:
movlw 248
movwf dt1

ms250b:
nop
decfsz dt1,1
goto ms250b

decfsz tempo,1
goto ms250a

return

END

Para la programación, crear un fichero de texto con extensión .hex y copiar el contenido hexadecimal dentro del fichero

CONTENIDO DEL FICHERO HEX:

:020000006D2869
:080008008C0003088D000B19A8
:100010000F280B1853280D0883000C0809008312C1
:10002000920A1208820700001A2824282E2838284D
:100030000130920085140515851505160E0842201D
:10004000860005110B110B2885140515851505165D
:100050000F084220860085100B110B28851405150A
:100060008515051610084220860005120B110B2875
:100070008514051585150516110842208600851181
:100080000B110B2882077F340D34B7349F34CD34E5
:10009000DB34FB340F34FF34DF34F234A034B834B3
:1000A000A83400349620910A0A301102031D6B28EF
:1000B0009101900A0A301002031D6B2890018F0AEB
:1000C0000A300F02031D6B288F018E0A0A300E02C0
:1000D000031D6B288E010B100B28850186018510EE
:1000E0000511851105128B018101831601308600EF
:1000F000E03085009330810083128E018F019001E2
:10010000910192010B110B108B168B158B17051497
:10011000B720B7200510061C0B1406189E280E08E1
:100120000F0710071107243A031D8B280A308E0091
:100130000B308F000B3090000C3091000130950097
:10014000B720950FA0280A308E000B308F000C309E
:1001500090000D309100F0309500B720950FAD283C
:100160008316FF308500860083128B136300FA30FC
:100170009300F83094000000940BBB28930BB9282F
:02018000080075
:02400E00F13F80
:00000001FF

Alimentación:
Bat de 9 V
Goma de borrar o de 9 V

Operación:
Colocar el condensador terminales, y pulse el botón de prueba.
Para electrolítico, observe la polaridad.

Calibración:

POTS multivoltas.
Tema 1: 5 nF a 9999 nF (470 nF condensador de referencia de 1%) (bote de 470 K).
Tema 2: 1 UF a 99,9 UF (47 UF condensador de referencia de 1%) (DE MACETA 1K).
Tema 3: 100 UF a 9999 UF (4700 UF condensador de referencia del 1%) (DE MACETA 200R).

1er Lugar en referencia a las terminales de condensador.
2 Gire la olla multivoltas correspondiente a la indicación correcta.

Nota:
Si el ensamblador tiene opciones para ajustar las resistencias, puede sustituir los potenciómetros en serie con la resistencia, por una sola resistencia, lo que hará más compacto el circuito.

Al probar los condensadores, no olvides descargarlos antes.

Fuente: http://br.geocities.com/eronpaganucci/cappic.htm

Si estás interesado en como se programa el pic, busca en esta web el “Curso de programación PICs” donde explicamos paso a paso, con circuitos prácticos, como programar el pic 16f84. del cual os dejo el primer link: http://www.pesadillo.com/pesadillo/?p=3211

Programas para la programación: http://www.pesadillo.com/pesadillo/?p=3090

Existen dos modos de programación extendidos. El ASM y el CCS, en este caso el programa esta construido en ASM, para su comprensión se necesita experiencia con este modo de programación.
Lo imprescindible es el contenido del fichero HEX (compilado) para la programación del pic, con cualquier programador conocido normalmente a través del puerto RS232 (serie) del ordenador.

Comentarios (7)

Reinaldo Pastore23 noviembre 2014 at 11:34

Buenos días!
Largo buscaba un Capacimetro, con la gama de 1uF 1500uF, felicitaciones
Por diseño. Monté el circuito, sin embargo no puedo escribir el microcontrolador con el archivo txt. Podría por favor enviarme el archivo en hexadecimal que se puede utilizar en microbrn

pesadillo19 enero 2015 at 16:26

Como indica en el artículo. Creas un fichero con extensión .txt y lo guardas como .HEX. No olvides que no ha de haber ningún espacio al final del texto. prueba.txt -> prueba.HEX

William18 marzo 2015 at 20:18

Buenas amigo

serias tan amable de publicar el pcb del proyecto porfavor

gracias

ROOSVELT29 julio 2015 at 4:26

POR FAVOR ME PODRIAS ENVIAR EL PROGRAMA ASM DEL CAPACIMETRO CON PIC 16F84A TE ESTARE MUY AGRADECIDO

pesadillo16 agosto 2015 at 16:01

Hola, disculpa las molestias. He reactivado el modulo correspondiente a codigo y ya se puede copiar y pegar el contenido de la programación.

pesadillo16 agosto 2015 at 20:36

Si alguien se ha animado… que me pase el PCB y lo publicamos.

ruso12120 diciembre 2017 at 2:57

hola , tengo un problema para compilar el archivo que cree que me pueda estar pasando , le agradesco toda su ayuda

Escribe un comentario

Tu comentario