USO PRACTICO DEL PIC12F675 (VII) - PICKEY ELECTRÓNICA

Vaya al Contenido

Menu Principal:

USO PRACTICO DEL PIC12F675 (VII)

Uso Practico del PIC12F675 (VII)


PRACTICAS: MnEBasic (módulo comparador analógico a salida digital con tensión de referencia).

Modulo comparador analógico con salida digital y modulo generador de tensión de referencia


Modulo comparador analógico con salida digital:

Este micro tiene un modulo comparador analógico con salida digital, básicamente un modulo comparador tiene dos entradas y una salida. Se utiliza para comparar dos tensiones, es decir, indica mediante la variación de su salida que la señal aplicada a una de sus entradas es menor o mayor que la aplicada a la otra. Una de las principales características de los comparadores en general es que son muy rápidos. Básicamente al comparador se le aplican dos señales una suele ser variable en el tiempo y es la que se quiere monitorizar. Se puede aplicar a la entrada llamada negativa o inversora que se representa por el signo -, la otra suele ser fija, es decir, una tensión de referencia, esta tensión se puede aplicar a la entrada positiva o no inversora representada con el signo +. Si la señal a monitorizar se hace mayor o menor que la de referencia la salida tomara uno de los dos niveles lógicos posibles (0 o 1). El estado de la salida del comparador se obtiene mediante la lectura de un bit interno, también se puede habilitar uno de los pin del pic para que muestre el estado del bit externamente. La salida se puede hacer inversa mediante la programación del bit adecuado para este propósito.

Modulo generador de tensión de referencia:

Normalmente al comparador se le aplica a una de sus entradas una tensión fija de referencia para así establecer que variaciones de tensión en la otra entrada provocarán cambios en la salida. Para facilitar esta tarea el Pic tiene dispuesto otro modulo que es un generador de tensión de referencia, que viene especialmente dispuesto para trabajar con el modulo comparador. Este modulo mediante su configuración puede generar 32 tensiones diferentes repartidas en dos modos con 16 niveles de tensión cada uno. La tensión de referencia que genera el modulo en este pic en concreto no se puede llevar al exterior ya que no existe la opción de asignarle pin.

General:

El modulo comparador con salida digital permite varios modos de trabajo; algunos de ellos permiten unir la salida del modulo generador de tensión de referencia solo a su entrada positiva o no inversora (+). Cuando esto sucede la entrada no inversora del modulo no se puede asignar a pin exterior.

Relación entre entradas y salida digital sin inversión:



El modulo comparador puede generar interrupciones y también puede hacer que el pic salga del estado de Sleep.

Tabla con la configuraciones posibles del comparador e interconexión con el modulo de tensión de referencia junto con sus bits de selección.



Imagen extraída del datasheets de Microchip dispuesto para el Pic12F675


Como se puede observar en la imagen superior existen 8 modos, 6 de ellos de trabajo y dos para reset y apagado del modulo. Cuando no se usa el modulo y no se sabe con seguridad que el compilador lo deja deshabilitado, es conveniente insertar la desconexión del modulo en el código fuente, esta acción disminuye el consumo del pic.

En la imagen siguiente se observa que la impedancia de las entradas analógicas se recomienda que sea inferior a 10k, y además, están protegidas por diodos que impiden que la tensión aplicada a estas entradas supere en 0.6V a Vdd o sea inferior en 0.6V a Vss
.



Imagen extraída del datasheets del microcontrolador Pic12F675


Un error típico que se suele cometer con los microcontroladores que tienen entradas analógicas, es presuponer que el pic tiene modulo conversor analógico digital (ADC), en realidad esto no es cierto, existen otro tipo de módulos que utilizan este tipo de entradas como es el modulo comparador de salida digital. En este caso el pic usado tiene ambos módulos, pero hay que tener en cuenta que hay otros modelos de pic que no llevan ni uno ni otro modulo, o solo módulo comparador o el caso de solo modulo ADC.

La lectura del bit con el resultado de la salida ocupa 4 ciclos de reloj o lo que es lo mismo 1 ciclo de ejecución de instrucción, esto es igual para la lectura del registro de salida del modulo conversor analógico digital (ADC) trabajando a una resolución de 8bit (8 ciclos de reloj cuando trabaja a 10bit el ADC porque el resultado de la lectura se divide en dos registros de 8bit.). Sin embargo el manejo de un solo bit genera un código más simple y eficiente, esto implica un código más rápido y de menor tamaño. En ambos casos se tendrá que hacer una espera mínima de 10uSeg. si se realiza un cambio de configuración en tiempo de ejecución para estar seguro que la lectura no estará falseada. El tiempo de espera es el necesario para que el modulo complete su nueva configuración. De todas maneras hay que tener siempre en cuenta que por su simplicidad el modulo comparador siempre será más rápido que el modulo ADC.

Una forma de hacerse a la idea de la utilidad de un modulo es saber de algunas aplicaciones en las que se utiliza. Los comparadores se usan ampliamente en todos los campos de la electrónica:
-Detectar el estado de una batería, bajo o alto.
-Circuito de squel de los radio receptores, que mediante una tensión de referencia se fija el nivel de ruido atmosférico y, cuando el equipo recibe la portadora que tiene sintonizada provoca una subida de nivel de la señal monitorizada acarreando la supresión del mute del amplificador de audio del radio receptor.
-Se encuentra en todos los circuitos integrados para controlar las fuentes de alimentación conmutadas. A una de las entradas del comparador se le suministra una porción de la tensión de salida y la compara con otra de referencia interna habilitando la corrección del voltaje de la salida .
-Por último el ejemplo que suele ser más popular, y es la de transformar una señal senoidal en otra de onda cuadrada de igual frecuencia.

En la siguiente figura se muestra la representación grafica de la configuración básica de un comparador para convertir una señal analógica en otra de onda cuadrada de igual frecuencia (Uso Práctico del Pic12F675 y III: MnEBasic con circuito comparador).




A continuación se puede ver el equivalente eléctrico del generador de tensión de referencia resistivo junto con sus bits de configuración.




Imagen extraída del datasheets del microcontrolador Pic12F675


.Configurando los módulos:
Configuración y ejemplos:

Registro CMCON:




CMCON es el registro de control del comparador que para el ejemplo 1 queda configurado de la siguiente forma:
Modo de trabajo bit implicados CM2 a CM0 o también CM2:CM0.
Configuración en modo bit:
CMCON.CM2=1
CMCON.CM1=0
CMCON.CM0=0

Selección de pin de entrada (indiferente en este modo):
CMCON.CIS=0

La salida será invertida:
CMCON.CINV = 1

Configuración en modo registro o forma abreviada:
CMCON = %00010100
% en este lenguaje significa que el numero siguiente esta expresado en binario.

VRCON registro de control del voltaje de referencia:




Bit de selección de valor de tensión de referencia (CVref) del VR3 a VR0 o también VR3:VR0.
VRCON.VR3=0
VRCON.VR2=0
VRCON.VR1=0
VRCON.VR0=0
Se selecciona valor cero para CVref porque se cambiara de tensión en tiempo de ejecución durante el programa.

Se habilita el rango de trabajo de CVref en modo Low range.
VRCON.VRR=1
Mediante VRR se selecciona el rango de trabajo del módulo de tensión de referencia.
Para VRR=1 (Low range) la tensión de salida del módulo responde a la siguiente fórmula:
CVref=(VR3:VR0 / 24) * VDD
Para VRR=0 (High range) la tensión de salida del módulo responde a la siguiente fórmula:
CVref=VDD/4 + (VR3:VR0 / 32) * VDD
VDD = tensión de alimentación del microcontrolador, en el caso de la placa entrenadora MnEBasic 5V.

Se activa la tensión de referencia CVref.
VRCON.VREN = 1

Configuración en modo registro o forma abreviada:
VRCON=%10100000
% en este lenguaje significa que el numero siguiente está expresado en binario.

Resumiendo la configuración:

Entrada negativa (Pin 6).
Entrada positiva conectada a tensión de referencia (interna).
Salida invertida (interna).

Funcionamiento del ejemplo 1:
Se ha configurado el módulo ADC a 8bit para leer el valor de tensión del cursor de la resistencia variable RAJ2 situado en el pin AN3 de la placa MnEBasic, estos valores están comprendidos entre 0 y 255. Se les aplica una fórmula de máximos y mínimos para truncarlos, por lo que los valores resultantes pueden variar entre 0 y 15 que pertenecen a los 16 niveles de tensión diferentes que se utilizan para programar el módulo de tensión de referencia. En CN2 se coloca un modulo adaptador que contiene una resistencia ajustable (RAJ1) cuyo cursor tiene una resistencia serie limitadora (R1) que está conectada al pin CNI- o entrada inversora del módulo comparador. Al variar esta resistencia cambia de estado la salida según la tensión en CNI- esté por encima o por debajo de la tensión de referencia, la salida es interna y tiene habilitada la inversión. Todos los valores de las lecturas son enviados al puerto serie RS232 siendo mostrados en la pantalla del ordenador mediante el Hyperterminal.

Interrupciones con el módulo comparador (Ejemplo 2):

Se mantiene la configuración anterior y se añade la configuración de la mascara para la activación de las interrupciones del módulo.
El ejemplo 2 además de realizar la misma función que el ejemplo 1, modifica el estado del Led2 de la placa MnEBasic según la salida del comparador. Si la salida esta a 1 el led se ilumina y a 0 se apaga.

PIE1.CMIE = 1
, habilita la interrupción del modulo comparador
INTCON.PEIE = 1
, habilita las interrupciones de periféricos
INTCON.GIE = 1
, habilita las interrupciones generales

Los tres bits anteriores habilitan las interrupciones del módulo comparador. Los bits GIE
y PEIE son bits genéricos que afectan a todos los módulos del pic que permiten interrupciones, son bits generales. El bit CMIE es el especifico para el módulo tratado.

Con esta configuración cuando se produce una variación de la salida del módulo se activa el bit o flag CMIF=1
, se termina de ejecutar la instrucción en proceso y se salta a una dirección determinada donde estará ubicada la rutina de interrupciones. La dirección donde está situada la rutina de interrupciones en los lenguajes de bajo nivel normalmente es elegida por el programador, sin embargo en los lenguajes de alto nivel se suele dejar esta elección al compilador.

En este lenguaje el código queda como sigue:

On Interrupt
 'Rutina de interrupciones, deshabilita las interrupciones generales, no modifica bit especifico de interrupciones.
  GP2 = CMCON.COUT
 'Led, se iguala con el bit de salida del comparador, cuando GP2=1 entonces led encendido.
  PIR1.CMIF = 0
 'Borra el flag de interrupción del comparador.
Resume
 'Habilita las interrupciones generales y retorna al programa, no modifica el estado del bit especifico de interrupciones.

Es obligatorio el borrado del bit o flag de interrupción del comparador, de lo contrario cuando se activen de nuevo las interrupciones al salir de la rutina de interrupciones se forzará un nuevo salto a ella, provocando un mal funcionamiento del programa. El borrado se realiza de la siguiente manera:

a) Una lectura o escritura en el registro CMCON
. Esto terminará con el desajuste en la condición permitiendo el posterior borrado de CMIF (el datasheets no da una explicación de este punto). Lo normal es que se haga una lectura del estado de la salida del módulo en el bit CMCON.COUT, por lo que este punto queda resuelto.

b) Borrado del flag especifico de interrupciones del módulo, en este caso el bit CMIF
, esto es PIR1.CMIF=0.

El datasheets hace una breve mención a que cuando se esta produciendo un cambio en el bit de salida COUT
y al mismo tiempo se esta realizando una lectura (start of the Q2 cycle) puede que el flag de interrupción no se ponga a 1. Esto normalmente no es un problema porque cuando se realiza este tipo de operación es debido a que no se usan las interrupciones, pero en el caso contrario en el que si se usan, se tendrá que realizar la lectura de la salida COUT del modulo en la rutina de interrupciones donde se garantiza que el bit CMIF=1.

.Particularidades del Pic12F675:
Este chip tiene dos particularidades especiales, y son dos ajustes que el fabricante realiza para cada PIC12F675, estos parámetros son diferentes en cada chip, por lo que es conveniente hacer una primera lectura del microcontrolador mediante el programador y guardar estos valores. Estos Bits son los de Bandgap y los Bits de configuración del registro Osccal. Si no se carga el registro Osccal con el valor adecuado puede que no funcione la comunicación serie RS232 de la mini-entrenadora MnEBasic.


 
Copyright 2016. All rights reserved.
Regreso al contenido | Regreso al menu principal