Está en la página 1de 7

Uso de COMPARADOR en el PIC 12F675

Se desean probar cuatro casos: a) Como comparador con Vref externa; b) Idem con Vref
interna; c) Idem a) con histéresis; d) Idem b) con histéresis.

a) Para usarlo como comparador con Vref externa, deben usarse los pines 6 (CIN-),
7 (CIN+) y 5 (COUT). Las dos primeras son entradas analógicas; COUT es una salida
digital que depende de las entradas: si la tensión aplicada a CIN+ es mayor que la
tensión aplicada a CIN-, luego COUT = 1. Si CIN+ < CIN-, COUT = 0.

Debido a que hay ocho formas distintas de usar el comparador, es necesario


configurarlo según la forma que se desee usar. Para ello, es necesario estudiar el SFR
dedicado al comparador, que se llama CMCON y que se encuentra en la dirección 19h
de los SFR. Si bien la función de comparación es parecida en todos los PICs que la
poseen, es necesario consultar la hoja de datos específica del 12F675 para no cometer
algún error que luego se traduce en un mal funcionamiento del comparador. El registro
CMCON para el 12F675 tiene los siguientes bits de configuración:
De este sencillo cuadro extraído de la hoja de datos de desprende que la mayor atención
se debe prestar a los bits de modos de comparación, es decir los bits 2, 1 y 0, indicados
como CM2:CM0 en la figura anterior.

Con estos tres


bits se pueden
configurar 8 mo-
dos de compara-
ción, algunos pa-
ra referencia ex-
terna de tensión
y otros para refe-
rencia interna.
Por ejemplo, u-
sando una refe-
rencia externa de
tensión, se colo-
can estos tres bits
en 001, lo que da
el Comparador
con salida, uno
de los casos más
simples para pro-
bar el compara-
dor.

Para poder com-


probar este caso,
se arma el circuito de la figura:

En este esquema se ve que la Vref se logra


con el divisor de tensión formado por R1 y
R2, de 10 K cada una, por lo que la Vref será
de 2,5 V. Luego, si la tensión aplicada con
RV1 es mayor a 2,5 V, el led enciende, dado
que COUT=1; si por el contrario es menor, el
led se mantiene apagado.

El programa usado (lenguaje PBP) para la simulación en Proteus es el de la siguiente


figura:
b) Como comparador con Vref interna

Una de las pocas desventajas que tiene el 12F675, es que sólo dispone de 6 pines I/O
para las múltiples funciones que puede realizar, luego si no se desea perder un pin para
ingresar un Vref externa, lo ideal es utilizar la excelente posibilidad de dar esta
referencia por software. Para ello, se debe comprender bien el uso del registro VRCON,
que se encuentra en la dirección 99h de los SFR (ver hoja de datos del 12F675) y que se
puede apreciar en la siguiente figura:
Para facilitar los cálculos, es interesante tener presente esta tabla, que es válida
obviamente si se alimenta todo con 5 V regulados:

De todo lo anterior
entonces, si se desea
usar una referencia
interna de tensión
para un circuito
similar al planteado
en el punto a), se
deberán configurar
los Registros de la
siguiente manera:
CMCON=00000011
lo que significa:
bits 7 y 5: no con-
figurables (quedan
en cero).
bit 6 (es sólo lectura)
bit 4: si se deja en
cero, como la única posibilidad de ingreso de Vref interna es por Vin+ (en el caso a) la
podíamos ingresar también en Vin-), entonces ahora será COUT = 1 si Vin- < Vref
int=Vin+ y COUT = 0 si Vin- > Vref int=Vin+.
bit 3: Se adopta el caso más sencillo, no multiplexar luego =0.
bits 2,1 y 0= 011 se adopta el modo del cuadro N° 5 de la figura de modos del
comparador, o sea “Comparador con salida y referencia interna”. El otro registro debe
ser :

VRCON = 10101100, lo que significa:


bit 7 = 1: => se usa referencia interna (VREN=1).
bits 6 y 4: no configurables (quedan en cero)
bit 5 =1: => se usa rango bajo (VRR=1)
bits 3,2,1 y 0: => 1100, que corresp. según la tabla a 2,5V para rango bajo y Vdd=5V

El circuito de prueba usado en proteus mas el programa en PBP son los de las figuras
siguientes.
c) Como comparador con Vref externa e histéresis

Cuando los valores de las tensiones aplicadas al


comparador están muy próximos entre sí, ruido
externo ó ruido propio del microcontrolador,
suelen causar que la salida del comparador oscile o
parpadee. Para evitar este parpadeo, se debe
realimentar una parte de la tensión de salida del
comparador en la entrada no-inversora del com-
parador, formado de esta manera una “histéresis”.
Esta realimentación se hace mediante la resistencia R3 (ver figura). R1 y R2 conforman
el divisor de tensión para fijar la referencia externa (threshold) del comparador.

Esta histéresis aumenta la tensión de referencia (V TH threshold high) cuando la entrada


input es menor que la referencia original, y la disminuye (V TL threshold low) cuando la
entrada input es mayor que la referencia original. El resultado de esto es que la
variación de la tensión de entrada debe ser mayor que VTH – V TL para producir un
cambio en la salida. Si V TH – V TL a su vez es mayor que el ruido que provocaba el
parpadeo, quedará resuelto el problema.

Para calcular las resistencias, se pueden fijar los valores de R1,2,3 y calcular V T , V TH y
V TL , o viceversa, fijar V T , VTH y VTL y calcular las resistencias.

Para hacer un ejemplo sencillo, supongamos VDD = 5V, R1=R2=10 k con lo cual VT
será de 2,5 V. Deseamos obtener una VTH= 3V y una VTL = 2 V.

Aplicando las fórmulas de Microchip´s Tips´n Tricks (DS41215C-2007), se obtiene una


R3= 20 k.

El circuito armado en Proteus para probar esta alternativa es el siguiente:


En este circuito se debe
considerar lo siguiente:

1) La tensión de referencia
ingresa a CIN+ a través de R1 y
R2, y es V T = 2,5 V en función
de los valores de las resistencias.

2) R4 en este esquema es la
resistencia de realimentación,
que va desde COUT al punto de
unión entre R1 y R2.

3) El led testigo se ha colocado en


GP4, pero podría haberse
colocado igualmente en GP2,
funciona bien igual.

4) R5 y R6 se han agregado sólo


para dar mayor resolución al
potenciómetro RV1 y verificar los
valores de cálculo.

El programa cargado en Proteus,


en PBP, es el de la figura de la
derecha.

d) Como comparador con Vref interna e histéresis

Cuando el microcontrolador utiliza la referencia interna para trabajar como comparador,


no puede aplicarse la realimentación, dado que no hay acceso al punto de
realimentación.

Sin embargo, en el tutorial (en inglés, pero muy bueno) que se encuentra en esta página:

http://www.gooligum.com.au/tutorials.html

se indica una forma de lograr una histéresis cuando se aplica Vref interna. No he
comprendido a fondo los detalles de la explicación, es más, creo que hay un error en el
tutorial. No obstante, hice pruebas con el circuito y programa que se adjuntan abajo y
pareciera que funciona. Cualquier mayor detalle sobre este punto, o los anteriores, será
bienvenido.

También podría gustarte