Beruflich Dokumente
Kultur Dokumente
Contenido
Resumen
Summary
Introduccin
El circuito
10
11
La divisin en el microcontrolador
12
14
La escala automtica
15
La visualizacin
16
Conclusiones
17
MATERIAL ANEXO
18
El puente de Wien
El puente de Schering
Aplicaciones de los instrumentos de medida basados en microcontrolador
Informacin general sobre sensores inteligentes
Criterios para la disminucin del error en la medida y en la transmisin
Generalidades sobre sistemas de comunicacin para sensores e instrumentos digitales
Telemedida por corriente
Diagrama de flujo de partida para la programacin del capacmetro
Cdigo de programa del capacmetro versin prototipo
18
19
20
20
20
21
21
22
23
33
Summary
In this report the main features of electronic instrumentation are exposed to build a digital capacitance
meter of wide range (100pF to 999nF autorrange - 1F a 9990F autorrange) basing their operation on
the measure of trasient response of a R-C network. They show up the key aspects of design to increase
the accuracy in the obtaining of the reading and to avoid errors in the event of remote acquisition.
Introduccin
El estado de la tecnologa electrnica actual provee a los diseadores una gran diversidad de elementos
que posibilitan la implementacin de instrumentacin electrnica que logra alta exactitud. Los microcontroladores fcilmente programables, sumados a los amplificadores operacionales y las temporizaciones exactas dadas por los cristales de cuarzo permiten la implementacin de instrumentos de mano
de bajo consumo y tambin dan origen a los llamados sensores inteligentes; en los cuales se necesita
hardware mnimo por cuestiones de tamao, consumo y costos.
Con estas herramientas se plantea el diseo y la puesta en marcha de un medidor de capacitancia digital, el cual es un instrumento de mano basado mayormente en un microcontrolador y unos pocos componentes accesorios que, gracias a la lgica de control y capacidad de clculo permite obtener caractersticas como la de rango automtico, solucionando por programa (microcdigo) problemas que en una
primera instancia hubiesen requerido tanto de hardware adicional (considrese una llave selectora)
como de una intervencin del usuario al sistema (debera ser el operador quien debiera seleccionar la
escala adecuada de medida).
El proyecto se encara desde un marco terico levemente ms general que el correspondiente al medidor de capacidad a construir de modo que estn sentadas las bases para la construccin de dispositivos
similares como detectores y sensores inteligentes y se den los criterios correspondientes para disear
una adquisicin remota de las medidas y los datos que ellos producen sin incurrir en errores (consultar
el material anexo).
En las medidas electrnicas nos encontramos con que hay varias formas de determinar la capacidad de
un elemento. Algunos mtodos se basan en un puente de impedancias (los llamados puente de Wien
y de Schering, explicados en el material anexo), los cuales son utilizados preferentemente para determinar el factor de prdidas en capacitores (D). Su implementacin y puesta a punto es algo complicada y el acercamiento a la medida debe realizarse en forma manual por el operador (el proceso se
asemeja a una sintonizacin), lo que lo hace un mtodo poco prctico para adquirir una medida en
forma automtica.
Otra tcnica es la del detector sincrnico, el cual utiliza un oscilador de una frecuencia senoidal conocida y muy exacta que se aplica a una resistencia Rs que esta en serie con el capacitor a medir Cx. La
tensin sobre Rs estar en fase con la corriente que pasa por el capacitor, un detector sincrnico elimina la parte real de la tensin sobre Rs, lo que permite obtener una tensin de salida que, salvo por un
factor, es proporcional a la capacidad.
Los multmetros digitales convencionales miden la capacitancia administrando corriente constante al
capacitor durante un intervalo fijo de tiempo, midiendo el voltaje resultante y luego calculando la capacitancia. La lectura es lenta, demorando alrededor de un segundo. Como la carga se hace usando la
tensin interna, la tensin del capacitor puede ser de solamente alrededor de algunos voltios.
La principal desventaja de los mtodos nombrados anteriormente es la de necesitar un conversor analgico-digital para leer un valor de tensin, lo que puede sumarnos hardware adicional si el mismo
no se encuentra integrado al circuito integrado que tenemos en uso, encarecer el circuito, etc.
Manteniendo a E y R constantes, la tensin VC ser funcin del tiempo en el cual el capacitor se mantuvo en carga, lo cual se expresa en la siguiente frmula:
VC = E [1 e t / ( R C )]
En donde las unidades corresponden a t [Segundo], R[Ohm], C[Faradio] y e se denomina nmero
de neper (2,72 aproximadamente), el cual es adimensional.
Manteniendo las condiciones anteriores, si nos interesa el valor del tiempo transcurrido para que el
capacitor alcance una tensin VC1:
t1 = - RC ln [1 VC1 / E ]
Esto significa que t1 es proporcional a C. Por lo tanto t1, si bien est afectado por un factor constante,
nos indica el valor de la capacitancia.
En el caso de tener un capacitor previamente cargado en una red R-C serie, podemos producir un transitorio de descarga, el cual tiene un circuito y una ecuacin que le corresponde:
t2 = RC ln [E / VC2]
5
El circuito
Se logra una gran simplicidad de diseo al implementar la mayor cantidad de caractersticas posibles
mediante el desarrollo de software, por ejemplo la caracterstica de la escala automtica, la cual se
explicar posteriormente en este informe.
Las patas RA0 y RA1 del puerto A cumplen una doble funcin, por un lado exploran y habilitan los circuitos temporizadores alternadamente en busca de un capacitor a ser medido (Un procedimiento de la
autoescala) y por otro lado, una vez realizada la medicin, participan en la multiplexacin de los displays de salida para la lectura; ya que en la visualizacin se enciende de a un nmero por vez (El
puerto RB proporciona el nmero y el puerto RA habilita solamente el display que corresponde a ese
nmero), a una velocidad tal que da la sensacin al ojo de que todos los nmeros estn encendidos
simultneamente. De no realizar la multiplexacin necesitaramos cuatro puertos similares al RB, uno
por cada display.
En esta instancia surge la pregunta de qu ocurre con los circuitos de tiempo cuando RA0 y RA1 participan en la multiplexacin, ya que siguen conectadas al microcontrolador las habilitaciones de los circuitos de tiempo. En un primer momento se puede pensar que se producir una lectura errnea de la
capacidad, ya que la habilitacin en los mencionados circuitos de tiempo se producir por causa del
programa de multiplexacin y no por el programa de autoescala, que es el nico que les corresponde.
Lo que en realidad se hizo fue implementar una solucin de este problema en el mismo software,
esto es, cuando visualizamos; RA0 y RA1 variarn y producirn seales en los osciladores que no corresponden a las lecturas y simplemente el software invalida esta informacin. Adoptar esta solucin
hace que el instrumento no ejecute el multiplexado mientras est realizando la medicin y que no mida
mientras se presenta la visualizacin del valor de la capacidad (ya que la visualizacin utiliza el multiplexado).
10
11
Para medir frecuencias con un microcontrolador, hacen falta dos contadores programables, uno que
genere la ventana de tiempo y el otro que registre los impulsos de la seal de entrada.
Sabiendo que la frecuencia ser el nmero de pulsos contados en una ventana de tiempo determinada,
F = N / T0, adems se necesita que N (cuenta de pulsos) tome los valores desde 100 a 999, ya que una
cuenta menor a 100 nos hace perder resolucin, lo cual indica que se debe cambiar la escala. Eligiendo
a T0 convenientemente tenemos:
Para
T0 = 1ms
FMIN = 100KHZ
FMAX = 999KHZ
Para
T0 = 10ms
FMIN = 10,0KHZ
FMAX = 99,9KHZ
Para
T0 = 100ms
FMIN = 1,00KHZ
FMAX = 9,99KHZ
La divisin en el microcontrolador
Si tuvisemos que calcular la capacidad en base a la frecuencia por nuestros medios tomaramos la
frmula anterior y la resolveramos manualmente o con un aparato calculador. En este proceso de resolucin notaramos que las cantidades involucradas necesitan de una notacin cientfica, ya que F se
mide en [KHZ] y las unidades de la resistencia son [K] o [M]. Adems el valor de la capacidad es
muy pequeo pF[10-12] nF[10-9] F[10-6] .
Este procedimiento no se puede llevar a cabo directamente en el microcontrolador y son necesarios
complejos algoritmos para realizar la multiplicacin, divisin, trabajar con nmeros que tienen coma
flotante.
No obstante hay una solucin para trabajar simplemente con nmeros enteros e implementar nicamente un algoritmo de divisin y es la siguiente:
Tomar las resistencias del temporizador RA + 2RB =1,44K o 1,44M. Esto hace que el factor
1,44 sea anulado de la ecuacin.
12
Suprimir los factores mltiplos de 1000. Sern suprimidos los KHZ, K o M, ya que afectan slo
en un factor de escala. La ecuacin en este punto es CX = 1 / N, en donde el resultado sigue siendo
un nmero decimal.
Hacer del valor de CX un nmero entero (100 999). En este caso se afecta la ecuacin de un factor, tal que:
CX = 100.000 / N
Activar las banderas correspondientes para que en la visualizacin el nmero se muestre como un
nmero con coma flotante y notacin de ingeniera. Si bien el microcontrolador slo realizar la operacin matemtica:
CX = 100.000 / N
nicamente se trabaja con enteros, utilizando como banderas en qu ventana fue medida la frecuencia
y cul fue la red resistiva que se utiliz, podemos poner en la visualizacin, lo que en realidad es un
nmero entero ser visualizado por el usuario del instrumento afectado por una coma y un factor de
escala pF, nF, F.
En cuanto a la operacin de divisin en formato binario, 100.000 est contenido en 17 bits, mientras
que N lo est en 10 bits. El algoritmo que utilizado aqu pertenece a la familia CORDIC, el cual
realiza la divisin de dos nmeros de 16 bits. Para poder utilizar como dividendo la constante de 17
bits se realiz una pequea modificacin al citado algoritmo.
Los rangos que en lugar de medir frecuencia se basen en medir perodo no necesitarn realizar la divisin para obtener el valor de capacidad CX.
A modo de ejemplo realicemos la medicin hipottica de un capacitor de 5nF:
La frecuencia generada por el capacitor colocado en el circuito de tiempo con RA + 2RB =1,44M es:
F = 1,44 / [ (RA + 2RB) CX ] = 1,44 / [ (1,44M) 500nF ] = 200HZ
B
Para la cual la autoescala elegir automticamente la ventana de 1s dando una cuenta de:
N = 200HZ x 1s = 200 pulsos contados. Aqu el microcontrolador aplica la frmula:
CX = 100.000 / N = 100.000 / 200 = 500
Tomando como informacin la red resistiva utilizada y la ventana de cuenta de pulsos se almacena en
un registro la informacin de la ubicacin del punto y qu factor de escala corresponde (informacin
utilizada por el programa de visualizacin) lo cual hace que el valor 500 (que no brinda informacin al
usuario) se visualice con un punto que hace ver la valor 500 como 5 unidades y dos decimales (que
son cero en este caso) seguidos de un factor de escala que indica la medida en nanofaradios:
Para bajas frecuencias y para mrgenes de frecuencia de medida pequea, es preferible medir el periodo de la seal. Para medir el periodo se cuentan los impulsos de una seal de reloj conocida interna al
microcontrolador durante un intervalo de tiempo dinmico determinado a partir de la entrada (el mismo perodo de la seal a medir).
El tiempo de medida es TX. La cuenta comienza con un flanco descendente de la seal proveniente del
555 y se detiene con el prximo, lo que delimita el perodo de la seal. Se toman las consideraciones
necesarias detalladas en el punto anterior para que la medida del perodo nos de directamente la lectura
CX sin tener que realizar operaciones matemticas con el microcontrolador.
14
La escala automtica
Para que el operador del instrumento no deba intervenir seleccionando la escala que mejor se ajusta a
la medida y adems el resultado provea de una interpretacin directa se dota al instrumento de una
escala automtica, en la cual un programa se encarga de comenzar por el menor de los rangos la medicin, si se obtiene un N menor a 100 (lectura mayor a 999) se procede al rango siguiente hasta centrar
la lectura en los lmites dispuestos.
Rango
Metodo lectura
100 a 999 pF
Frecuencia
operacin(HZ)
1K a 10K
1,00 a 9,99 nF
100 a 1K
Perodo
10,0 a 99,9 nF
10 a 100
Perodo
100 a 999 nF
1 a 10
Frecuencia
Perodo
Duracin ventana
100ms
Error asociado
(discriminacin)
+
-1pF
1,44M
TMAX=10ms
+
-10pF
1,44M
TMAX=100ms
+
-0,1nF
1,44M
+
-1nF
1,44M
1,44K
TMAX=1s
RA+2RB
1,00 a 9,99 F
100 a 1K
Perodo
TMAX=10ms
+
-10nF
10,0 a 99,9 F
10 a 100
Perodo
TMAX=100ms
+
-0,1F
1,44K
100 a 999 F
1 a 10
Perodo
TMAX=1s
+
-1F
1,44K
1000 a 9990
F
0,1 a 1
Perodo
TMAX=10s
+
-10F
1,44K
Debido a que en este diseo la medicin de capacitores a partir de 1F requiere un cambio en la red
RA+2RB de 1.44M a 1,44K, en realidad se utilizan dos integrados temporizadores 555, uno para
rangos menores a 1F y el otros para rangos mayores al mencionado, que hace tener una disposicin
circuital en la cual los capacitores de hasta 999nF son medidos en un par de terminales y los que superan este valor en otro par distinto, esta es una limitacin de esta escala automtica, ya que es quien
opera el instrumento quien debe decidir en qu contactos debe realizar la medicin. No obstante la
exploracin para detectar si se coloc un capacitor en alguna de las dos redes es automtica, lo que
hace que el capacmetro slo presente un botn de encendido, eliminando en el proceso diseo toda
botonera o llave selectora adicional.
15
La visualizacin
Debido a que todo el proceso que se realiz hasta el momento se encuentra en formato binario natural,
debemos implementar un algoritmo que transforme el resultado a un nmero decimal que pueda ser
visualizado en bloques de display de 7 segmentos, esta forma de visualizacin se corresponde con la
codificacin BCD (decimal codificado en binario). El algoritmo utilizado puede convertir un mximo de 16 bits en binario a cuatro dgitos en decimal, del cual usamos solo 10 bits para representar tres
dgitos.
Con respecto a la visualizacin de la coma se eligi un mtodo simple, tomamos un registro en el cual
se almacena la escala utilizada y eso nos dice directamente en que lugar colocar la coma en el momento de mostrar la lectura, ya que dentro de una misma escala la coma (si la hubiese) no cambia de lugar.
En lugar de utilizar notacin cientfica se utiliza notacin de ingeniera, en la cual se adopta un cuarto
bloque de 7 segmentos que permite visualizar p(pico) [ 10-12 ], n(nano) [ 10-9 ], o (micro) [ 10-6 ].
Al encender el instrumento se muestra una C que indica el funcionamiento.
16
Conclusiones
La flexibilidad, simplicidad circuital, velocidad y facilidad de programacin de los microcotroladores
permiten realizar diseos que aos atrs hubiesen requerido de gran cantidad de circuitos integrados
digitales, con simplicidad y a menores costos.
Debido a las caractersticas especiales que presenta este instrumento de elevada precisin, gran espectro de medicin y rango automtico, combinado con un costo bajo, hace que tenga un lugar propio en
lo que se refiere a capacmetros digitales de mano (Porttiles).
Se encontraron dificultades en la medicin de perodos menores a 10ms con el microconrolador (capacidad mnima 1nF) y debido a la intencin de medir capacidades ms bajas se implement una medicin de frecuencia, la cual extendi el rango mnimo de medicin a 100pF al precio de tener que implementar una divisin de nmeros del orden de 16 a 17 bits en el microcontrolador.
En cuanto a las operaciones matemticas que se debieron implementar se busc realizar la mayor cantidad de simplificaciones posibles, como por ejemplo evitar trabajar con decimales en los registros
internos al microcontrolador y realizar la reduccin al mximo de las expresiones matemticas, lo cual
disminuy en gran medida los recursos utilizados para realizar el programa.
Se orient la resolucin de problemas pensando las soluciones como un conjunto hardwaresoftware, pero haciendo hincapi en un hardware mnimo. Los problemas que se presentaron en el
diseo del capacmetro (Rango limitado a 100pF-9990F) no escaparon a la teora de las Medidas
Electrnicas y a la implementacin de componentes de uso comn. No obstante, se encontr a medida
que se realiz el diseo que la medicin de capacidades ms pequeas que 100pF no se puede llevar a
cabo simplemente con un temporizador 555 y se debe pensar en una configuracin de amplificadores
operacionales con elevado rechazo al ruido en la entrada (red R-C) y una alta impedancia de entrada.
Tambin se lleg a la conclusin de que si se deben medir grandes capacidades (10.000F 10F) en
periodos de tiempo breves ( del orden de 1 a 10 segundos) para aplicaciones que as lo requieran (en
caso contrario se puede utilizar el mismo hardware tal cual como est, pero se debe ampliar el
software), si bien no es crtico el reemplazo del temporizador 555, por lo menos se debe dotar a este
de circuitos auxiliares de potencia ligeramente mayor y adems comienza a cobrar importancia el consumo del instrumento que, si bien sigue siendo porttil, cabe la posibilidad de carecer de autonoma
suficiente (duracin de la batera) para considerarse instrumento de mano.
Desde el punto de vista profesional, el proceso de diseo y construccin de este aparato plante desafos a cada momento ya sea matemticos, fsicos y de automatizacin. Estos desafos llevaron a la
bsqueda de informacin y a la aplicacin del diseo, lo que proporcion experiencia y puesta a prueba de la habilidad. A medida que se lleg a su conclusin se not cmo se fue forjando una forma de
trabajar ordenada y sistemtica a lo largo de todo el proyecto.
17
MATERIAL ANEXO
El puente de Wien
El puente de Wien se destina en principio a la medicin de la capacidad de capacitores cuyas prdidas son apreciables y pueden considerarse como resistencia paralelo; por ejemplo el ensayo y medicin de cables de dos conductores (envainados para energa elctrica o coaxiles para RF), y capacitores electrolticos de gran capacidad.
En la figura siguiente se muestra el esquema de un puente de Wien tpico, los resistores R1, R2 y
R3 son de precisin y no inductivos, el resistor Rx representa la prdidas del capacitor bajo ensayo.
Cx
Rx
R2
C3
R3
R1
E
Las impedancias de cada una de las ramas del puente son respectivamente:
Zx =
Rx
1 + j w Rx Cx
Z2 = R2
1
Z1 = R1
j w C3
Recordando que en el equilibrio los productos de las ramas opuestas son iguales resulta:
Z3 = R3 +
R2 R3
Rx = R1
1 + (w R3 C3)
2
(w R3 C3)
R1
Cx = R2
C3
1 + (w R3 C3)
18
Conseguir la condicin de equilibrio del puente y obtener los valores de Cx y Rx es bastante engorroso, como puede verse en las ecuaciones anteriores, y puede lograrse variando R3, R1 y adems la frecuencia del generador utilizado para exitarlo. Claro que si lo que se desea medir es el factor de prdidas (D), la operacin se simplifica, ya que el valor de D es:
D = w R3 C3
El puente de Schering
Cuando se desea medir capacidad y factor de prdidas de capacitores y otros elementos que tienen
capacidad asociada, tales como cables armados para alta tensin, aisladores, transformadores de potencia para uso industrial (Que utilizan aceite como refrigerante, y en los cuales se desea determinar
las caractersticas del mismo como dielctrico); todos los elementos que puedan considerarse como
capacitores en serie con una resistencia de bajo valor; se prefiere utilizar el puente de Schering, que
en estas circunstancias y a diferencia del anterior, es un poco ms fcil de equilibrar.
La figura siguiente muestra el esquema bsico de un puente de Schering. Los capacitores C4 y C3
son patrones regulables en dcadas, entanto que R3 y R2 son los elementos de ajuste que permiten
equilibrar el puente.
Rx
R2
Cx
D
C3
C4
R3
E
En la condicin de equilibrio se obtiene:
R3 C2
Cx = R3 C4
Rx = C4
R2
Sin embargo, como el puente de Schering se usa sobre todo para materiales aislantes, no interesa
tanto la resistencia Rx, sino el factor de prdidas, que es:
D = w C3 R3
La operacin ms fcil para obtener el equilibrio se consigue manteniendo constantes los valores de
R3 y C4, y regulando R2 y C3. En este caso se consigue la lectura independiente, pues C3 no entra en
la frmula de Cx e interviene directamente en la determinacin de D. En cambio R2 entra solamente
en el clculo de Cx.
19
20
21
Inicio
Cambio de red
ltima
escala
Fuera de
escala?
Almacenamiento lugar
coma,
unidad de medida y
tipo de medicin
Frecuen
cia?
Realizar la divisin
22
23
org
0x00 ;indica al ENSAMBLADOR la direccion de memoria de programa donde se
guardara la instruccion que vaya a continuacion
goto prin ;cuidado, el programa no se debe traslapar el programa de interrupcion que comienza en 0x04
;********************************************************************
;
Test Program
;*********************************************************************
org
0x07
prin
bsf
bsf
bsf
bsf
bsf
clrf
clrf
bsf
bcf
movlw 0xFF
movwf PORTA
movwf PORTB
bcf
PORTA,0
goto vedin2
;red R=1.44M
;*********************************Visualizacion*************************************
*******
; Codificacin --> Segmento : g f e d c b a ;
RB 7 6 5 4 3 2 1 0
;
;
a
;
-f |__| b
;
;
e| |c
-;
;
d
;;Tabla de numeros decimales adaptados a 7 Segmentos para encender los segmentos con un
;;0 (cero) lgico ya que el puerto puede drenar mas corriente que la que puede suministrar
;;Los display deben estar conectados a la Puerta B, y deben ser anodo comun
;;dejo sin usar el RB0/Int ya que lo uso como entrada del sensor
Tabla
addwf PCL
retlw
; -fedcbap
b'10000001'
;0
24
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
retlw
b'11110011'
b'01001001'
b'01100001'
b'00110011'
b'00100101'
b'00000101'
b'11110001'
b'00000001'
b'00100001'
b'01010111'
b'11000111'
;1
;2
;3
;4
;5
;6
;7
;8
;9
;n 10
;u 11
LoopDisp
;
;Sacar al puerto el Dato 1 por un tiempo especfico
movf escala,W
;Dato para decodificar
call Tabla
;Decodificacin del dato
;Dato decodificado a puerto
movwf PORTB
;Habilita Q unidad
bcf PORTA,3
call ret2.5
;Retardo de dgito
bsf PORTA,3
;Inhabilita Q unidad
;Sacar al puerto el Dato 2 por un tiempo especfico
;
movf unidad,W
;Dato para decodificar
call Tabla
;Decodificacin del dato
movwf PORTB
;Dato decodificado a puerto
;Habilita Q decena
bcf PORTA,2
;Retardo de dgito
call ret2.5
bsf PORTA,2
;Inhabilita Q decena
;Sacar al puerto el Dato 3 por un tiempo especfico
;
movf decena,W
;Dato para decodificar
call Tabla
;Decodificacin del dato
btfsc punto,1
andlw b'11111110' ;colocamos punto si lo hubiese
movwf PORTB
;Dato decodificado a puerto
bcf PORTA,1
;Habilita Q centena
call ret2.5
;Retardo de dgito
25
bsf PORTA,1
;Inhabilita Q centena
movlw .24
numl,w
STATUS,C
convbcd
26
movlw .235
addlw .1
btfss STATUS,Z
goto
ret2
btfss TMR0,2
goto incr2
movlw .253
addwf numh,W
btfss STATUS,C
goto escvent
;retardo de visualizacion
;mide en nano
;mide en u si R=1.44K
27
finved2
movlw .24
;1023=b'11 11111111' y 1000=b'11 11101110' 1000=768+232 ,
en donde 232 esta contenido en 8bits
addwf numl,w
;tenemos que 768 esta presente entonces podemos saber si el nro
es menor a 1000 restando 232
;sumo el cmp2 de .232 porque subwf no me esta activando banderas
btfss STATUS,C ;cuando la resta da negativo C=0
goto convbcd
;********************3era es ventana dinamica periodo max 1s (max=9.99hz min=1.00)*******
;para contar 999 los incrementos deberan ser de 1ms
;1023=b'11 11111111' y 1000=b'11 11101110'
vedin3 movlw .128
movwf cont
clrf
punto
clrf
timer16
clrf
TMR0
sincro3clrf
numh
clrf
numl
incf TMR0
incr3 movlw .254
addwf TMR0,W
btfsc STATUS,Z
goto sincro3
incf numl
btfsc STATUS,Z
incf numh
btfsc numh,2
goto finved3
movlw .255
addwf timer16,w
btfsc STATUS,C
goto vedin2
movlw .10
ret3 addlw .1
btfss STATUS,Z
goto
ret3
btfss TMR0,2
goto incr3
movlw .253
addwf numh,W
btfss STATUS,C
goto convbcd
movlw .24
addwf numl,w
btfss
goto
STATUS,C
convbcd
;retardo de visualizacion
28
finved3
de c
goto
btfss
PORTA,1
vedin4
;mostramos u
;retardo de visualizacion
retven4
btfss TMR0,2
goto incr4
movlw .253
addwf numh,W
btfss STATUS,C
goto convbcd
movlw .24
29
addwf numl,w
btfss STATUS,C
goto convbcd
finved4
movlw b'1110'
movwf PORTA
goto vedin2
;****************Conversion a BCD*************************************
convbcd swapf numh,w
andlw 0x0F
addlw 0xF0
movwf unidadmil
addwf unidadmil,f
addlw 0xE2
movwf centena
addlw 0x32
movwf unidad
movf numh,w
andlw 0x0F
addwf centena,f
addwf centena,f
addwf unidad,f
addlw 0xE9
movwf decena
addwf decena,f
addwf decena,f
swapf
andlw
addwf
addwf
numl,w
0x0F
decena,f
unidad,f
rlf decena,f
rlf unidad,f
comf unidad,f
rlf unidad,f
movf numl,w
andlw 0x0F
addwf unidad,f
rlf unidadmil
movlw 0x07
movwf aux
movlw 0x0A
30
Lb1:
addwf unidad
decf decena
btfss 3,0
goto Lb1
Lb2:
addwf decena
decf centena
btfss 3,0
goto Lb2
Lb3:
addwf centena,
decf unidadmil
btfss 3,0
goto Lb3
Lb4:
addwf unidadmil
decf aux,f
btfss 3,0
goto Lb4
goto vis
;*****************************escoge ventana***************************
escvent
movf numh
btfss STATUS,Z ;si numh distinto de 0 el nro sera mayor a 100
goto convbcd
movf numl,W
addlw .156 ;sumo el complemento a 2 de 100 (resto 100)
;si carry=0 el nro era menor a 100, salto a otra ventana
btfsc STATUS,C
goto convbcd
goto vedin1
;****************cambio de red si no hay capacitor**************
menor9
movf numh
btfss STATUS,Z
goto convbcd
;si Z=0 entonces numh distinto de cero
movlw .247 ;complemento de 9 (resto 9)
addwf numl,W
btfss STATUS,C
goto setesc
goto finved1
;**************retardo de 1s**********************
ret1s movlw .14
movwf PDel0
PLoop7 movlw .72
movwf PDel1
PLoop8 movlw .247
movwf PDel2
PLoop9 clrwdt
decfsz PDel2,1
goto
PLoop9
31
decfsz PDel1,1
goto
PLoop8
decfsz PDel0,1
goto
PLoop7
return
;**************************retardo 2.5ms****************************
ret2.5 movlw .7
movwf PDel0
PLoop3 movlw .88
movwf PDel1
PLoop4 clrwdt
decfsz PDel1, 1
goto
PLoop4
decfsz PDel0, 1
goto
PLoop3
PDelL4 goto PDelL5
PDelL5 clrwdt
return
;*********************retardo de la ventana 4*****************
retven4
movlw .12
; 9.989ms
movwf PDel0
PLoop1 movlw .207
movwf PDel1
PLoop2 clrwdt
decfsz PDel1, 1
goto
PLoop2
decfsz PDel0, 1
goto
PLoop1
return
;********************ejecucion de la interrupcion***********************
;indica al ENSAMBLADOR que el pc salta aqui cuando hay una inteorg
0x04
rrupcion
;T0IF indica desbordamiento,lo ponemos a cero nuevamente
bcf
INTCON,T0IF
;Incrementa timer16 en uno y almacena el resulado en timer16
incf timer16,F
retfie
END
32
33