Capacímetro Digital Autorrango Autorrange Digital Capacitance Meter Autor: Mauricio J. Moretto Cátedra: Tecnología Electrónica Ing.: Ivano Bonamici Contenido Resumen 3 Summary 3 Introducción 3 Algunos métodos de medición convencionales 4 Método de medición por respuesta transitoria 5 Soluciones con temporizador 555 7 El circuito 8 Limitaciones del rango de medida en medición de pequeñas capacidades 9 Limitaciones del rango de medida en medición de grandes capacidades 10 La medida de frecuencia en el microcontrolador 11 La división en el microcontrolador 12 La medida de periodo en el microcontrolador 14 La escala automática 15 La visualización 16 Conclusiones 17 MATERIAL ANEXO 18 El puente de “Wien” El puente de “Schering” Aplicaciones de los instrumentos de medida basados en microcontrolador Información general sobre sensores inteligentes Criterios para la disminución del error en la medida y en la transmisión Generalidades sobre sistemas de comunicación para sensores e instrumentos digitales Telemedida por corriente Diagrama de flujo de partida para la programación del capacímetro Código de programa del capacímetro versión prototipo 18 19 20 20 20 21 21 22 23 Bibliografía, sitios web utilizados y envío de material 33 2 Capacímetro Digital Autorrango Autorrange Digital Capacitance Meter Resumen En este informe se exponen los lineamientos principales de instrumentación electrónica para construir un medidor de capacitancia digital de amplio alcance (100pF a 999nF autorrango – 1µF a 9990µF autorrango) basando su funcionamiento en la medición de respuesta transitoria de una red R-C. Se presentan los aspectos claves de diseño para aumentar la exactitud en la obtención de la lectura y evitar errores en caso de adquisición remota. 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 - 1µF a 9990µF 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. Introducción El estado de la tecnología electrónica actual provee a los diseñadores una gran diversidad de elementos que posibilitan la implementación de instrumentación electrónica que logra alta exactitud. Los microcontroladores fácilmente programables, sumados a los amplificadores operacionales y las temporizaciones exactas dadas por los cristales de cuarzo permiten la implementación de instrumentos de mano de bajo consumo y también dan origen a los llamados sensores inteligentes; en los cuales se necesita “hardware” mínimo por cuestiones de tamaño, consumo y costos. Con estas herramientas se plantea el diseño 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 lógica de control y capacidad de cálculo permite obtener características como la de rango automático, solucionando por programa (microcódigo) problemas que en una primera instancia hubiesen requerido tanto de “hardware” adicional (considérese una llave selectora) como de una intervención del usuario al sistema (debería ser el operador quien debiera seleccionar la escala adecuada de medida). El proyecto se encara desde un marco teórico levemente más general que el correspondiente al medidor de capacidad a construir de modo que estén sentadas las bases para la construcción de dispositivos similares como detectores y sensores inteligentes y se den los criterios correspondientes para diseñar una adquisición remota de las medidas y los datos que ellos producen sin incurrir en errores (consultar el material anexo). 3 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Algunos métodos de medición convencionales* En las medidas electrónicas nos encontramos con que hay varias formas de determinar la capacidad de un elemento. Algunos métodos 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 pérdidas en capacitores (D). Su implementación 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 sintonización), lo que lo hace un método poco práctico para adquirir una medida en forma automática. Otra técnica es la del detector sincrónico, 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 tensión sobre Rs estará en fase con la corriente que pasa por el capacitor, un detector sincrónico elimina la parte real de la tensión sobre Rs, lo que permite obtener una tensión de salida que, salvo por un factor, es proporcional a la capacidad. Los multímetros 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 tensión interna, la tensión del capacitor puede ser de solamente alrededor de algunos voltios. La principal desventaja de los métodos nombrados anteriormente es la de necesitar un conversor analógico-digital para leer un valor de tensión, lo que puede sumarnos “hardware” adicional si el mismo no se encuentra integrado al circuito integrado que tenemos en uso, encarecer el circuito, etc. *Se amplían al final en “anexos” 4 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Método de medición por respuesta transitoria Este método se denomina también de integración, ya que el modelo matemático de un capacitor nos dice que la tensión en sus bornes VC es función de la integral de la corriente de carga: VC(t) = 1/C ∫ iC(t) dt El transitorio ocurre cuando en un circuito R-C serie el capacitor se carga a una tensión constante E. Cuando la llave de la figura se abre, el capacitor C comenzará a cargarse a través de la resistencia R y el voltaje VC se incrementará en función del tiempo transcurrido desde la conmutación de la llave. Este proceso se denomina transitorio de carga. Manteniendo a E y R constantes, la tensión VC será función del tiempo en el cual el capacitor se mantuvo en carga, lo cual se expresa en la siguiente fórmula: VC = E [1 – e – t / ( R C )] En donde las unidades corresponden a t [Segundo], R[Ohm], C[Faradio] y “e” se denomina número 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 tensión 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 ecuación que le corresponde: t2 = RC ln [E / VC2] 5 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Por lo anteriormente expuesto, podríamos en principio obtener el valor de la capacitancia en base a la medición del tiempo de carga o de descarga de un capacitor en una red R-C serie, para lo cual necesitamos un voltaje de referencia dado por un comparador de voltaje que nos indique cuando VC alcanza la tensión de carga VC1 o se descarga hasta una VC2. Si bien de acuerdo a los fundamentos dados, la medición del tiempo de carga se podría realizar con un solo voltaje de referencia. Esto se dificulta en la práctica por las siguientes razones: En realidad el voltaje no cae a 0 voltios en la descarga ni alcanza la tensión máxima E en la carga: Tenemos que matemáticamente la curvas de tensión de VC son asíntotas que no adquieren los valores extremos, si bien se llega a valores tan cercanos que pueden ser considerados como tales, esto aumenta el intervalo de medición. Fenómenos como el de absorción dieléctrica (reaparición de tensión en terminales de un capacitor luego de haberse descargado) y la caída de tensión en la llave de descarga acentúan este efecto. Habrá un tiempo transcurrido entre el comienzo de la carga y el cronometraje: Esto causa un pequeño error de medición que generalmente puede ser ignorado. Corrientes de fuga en las entradas analógicas: Causan errores de medida en valores cercanos a cero voltios. 6 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Soluciones con temporizador 555 En vista de la necesidad de evitar los valores extremos, debemos tener dos comparadores de tensión que indicarán si se produjo la carga o la descarga. El valor que indica la carga debe ser menor a E (tensión de alimentación de la red R-C) y el valor que indica la descarga debe ser mayor a cero Voltios. Estos requisitos fueron tomados en el diseño del temporizador 555, el cual tiene un comparador de ventana que acepta como valor mínimo VC=1/3E para interpretar que se produjo la descarga y como valor máximo VC=2/3E para asumir que se produjo la carga. Frecuencia de oscilación de esta configuración: F = 1,44 / [ (RA + 2RB) CX ] Además, por razones que se harán evidentes conforme se avance en el diseño (Por ejemplo, la posibilidad de obtener la medida de la capacidad partiendo de una frecuencia) necesitamos que la carga y descarga no sea un acontecimiento único, sino que se repita periódicamente. El temporizador 555 permite esta posibilidad, llamándose esta configuración modo astable. En este modo se actúa sobre la red R-C, produciendo un transitorio de carga cuando VC<2/3E para luego cambiar el circuito (cuando VC = 2/3E) mediante la acción de un transistor que produce un transitorio de descarga hasta que VC = 1/3E, punto en el cual comienza el transitorio de carga nuevamente. Se debe tener una memoria que permita mantener la topología de la red (O sea que mantenga la configuración de las conexiones eléctricas que llevan a cabo el transitorio de carga o descarga según corresponda) hasta que se logre efectivamente la carga o descarga. Para este motivo el 555 incorpora una memoria de 1bit o biestable, el cual memoriza el nivel alto de tensión que se produce en el comparador conectado a “Set” cuando VC = 2/3E (Comienza transitorio de descarga). Esta memorización se mantiene hasta que VC = 1/3E, tensión en la cual se genera un nivel alto a la salida del comparador conectado a “Reset”, que hace memorizar un nivel bajo al biestable (Se produce nuevamente el transitorio de carga). Una entrada adicional de “Reset” permite poner a nivel bajo el biestable con una señal externa, lo cual nos permite inhabilitar el temporizador 555 para que no oscile, lo cual es útil si trabajamos con más de un circuito temporizador, ya que nos permite habilitar solamente el que realice mejor la medición. 7 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA El circuito Se logra una gran simplicidad de diseño al implementar la mayor cantidad de características posibles mediante el desarrollo de “software”, por ejemplo la característica de la escala automática, la cual se explicará posteriormente en este informe. Las patas RA0 y RA1 del puerto A cumplen una doble función, 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 medición, participan en la multiplexación de los “displays” de salida para la lectura; ya que en la visualización se enciende de a un número por vez (El puerto RB proporciona el número y el puerto RA habilita solamente el display que corresponde a ese número), a una velocidad tal que da la sensación al ojo de que todos los números están encendidos simultáneamente. De no realizar la multiplexación necesitaríamos 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 multiplexación, 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 errónea de la capacidad, ya que la habilitación en los mencionados circuitos de tiempo se producirá por causa del programa de multiplexación y no por el programa de autoescala, que es el único que les corresponde. Lo que en realidad se hizo fue implementar una solución de este problema en el mismo “software”, esto es, cuando visualizamos; RA0 y RA1 variarán y producirán señales en los osciladores que no corresponden a las lecturas y simplemente el “software” invalida esta información. Adoptar esta solución hace que el instrumento no ejecute el multiplexado mientras está realizando la medición y que no mida mientras se presenta la visualización del valor de la capacidad (ya que la visualización utiliza el multiplexado). 8 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Limitaciones del rango de medida en medición de pequeñas capacidades Los límites de frecuencia del “hardware” digital combinados con las restricciones propias al temporizador imponen las siguientes limitaciones en el rango de medida: Máxima frecuencia del temporizador: (NE555) 1,1MHZ; no obstante (TLC555) 2,4MHZ Operaremos con Fmax=1MHZ, suponiendo que la menor capacidad será de 1pF tenemos F = 1,44 / [ (RA + 2RB) CX ] por lo tanto (RA + 2RB) = 1,44 / ( F CX ) y (RA + 2RB) = 1,44 / ( 1MHZ 1pF ) = 1,44MΩ Máxima resistencia a colocar red R-C: (E=5V) RA+RB = 3,4M Ω Limitación impuesta por el consumo de corriente en la entrada de los comparadores que conforman el temporizador 555; Ima x= 2,5µA (corriente de umbral ). El punto anterior nos muestra que estamos en un valor permitido. Mínimo período a medir con resolución del 0.1%(1000 valores distintos): 10ms Esta limitación proviene de haber elegido un cristal de 4MHZ para el microcontrolador, con lo cual tenemos instrucciones en 1 / 1MHZ = 1µs (Las instrucciones en el microcontrolador se ejecutan a Fcristal / 4), ahora bien, si queremos una resolución del 0.1% debemos hacer que el incremento sea el mínimo período de la señal a medir dividido 1000, con lo cual los incrementos serán de 10ms / 1000 = 10µs y debido a que el “software” que se utiliza para contar período necesita un mínimo de 8 instrucciones por incremento de cuenta (8µs), la cuenta puede ser realizable a partir de un período de 10ms en adelante y no se permite un período menor. Máxima frecuencia a medir por el microcontrolador: El uso del TIMER0, un contador que posee el microcontrolador PIC16F84, independiente del cristal oscilador, permite medir frecuencias mayores a 1MHZ, que es el límite tomado para el temporizador 555, con lo cual este parámetro no es una limitación en el diseño. Mínima capacidad a colocar en la red R-C: 95pF Se toma como límite práctico, debajo de este valor los efectos de la capacitancia son tan pequeños que pueden verse enmascarados hasta volverse imperceptibles, limitando la exactitud y la repetibilidad (precisión) de las lecturas. No obstante; en una escala de 100pF – 999pF, con una resolución del 0,1%, tendremos que el incremento mínimo será de 1pF. Este es un punto importante también para los sensores ya que nos establece que no es aconsejable realizar las mediciones en base a una capacidad mínima de alrededor de 100pF. 9 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Limitaciones del rango de medida en medición de grandes capacidades Mínima resistencia a colocar red R-C: (E=5V) RA+RB = 1K Ω Limitación impuesta por el consumo de corriente que provoca la red resistiva. Para valores menores de resistencia, el transistor de descarga se protege al verse exigido y el conjunto no oscila. Si bien es posible el funcionamiento con resistencias menores a 1KΩ, tendremos un consumo excesivo de la red y un funcionamiento no garantizado. Máximo período a medir: Según la aplicación (En este trabajo se toma a modo ilustrativo 10s). En este punto no hay una limitación propia del instrumento, pero se considera como una medida no práctica aquella que supere el tiempo de medición requerido en una aplicación o proceso industrial (Considérese un control de calidad en la fabricación de capacitores), ya que se torna una lectura excesivamente lenta para el operario o para el proceso en el cual se utilice este instrumento. Con las restricciones impuestas y aceptando RA+2RB = 1,44K Ω para que el período medido coincida numéricamente con la lectura de capacidad, el mayor valor que puede medir el instrumento es de: F = 1 / T = 1/10s = 0,1hz en donde T es el período F = 1,44 / [ (RA + 2RB) CX ] por lo tanto CX = 1,44 / [ F (RA + 2RB) ] y CX = 1,44 / [ 0,1s (1,44KΩ) ] =10.000µF No obstante podría ser útil en alguna medición fortuita de capacitores de mayor valor al citado, ya que no se necesita “hardware” adicional, a ejemplo ilustrativo tenemos: Medición de un capacitor de valor 100.000µF T = [ (1,44K Ω) 100.000µF] /1,44 = 100 segundos = 1minuto con 20 segundos Medición de un capacitor de valor 1Faradio T = [ (1,44K Ω) 1Faradio] /1,44 = 1000 segundos = 16 minutos con 40 segundos Para que las medidas de grandes capacidades demanden tiempos menores a los obtenidos se debe rediseñar el “hardware” con una filosofía que, si bien trate de limitar el consumo, provea las lecturas en tiempos menores. 10 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA La medida de frecuencia en el microcontrolador La forma más simple de medir una frecuencia FX , es mediante un contador que registre el número de ciclos de la señal de entrada N durante un lapso de tiempo fijo T0, que se denomina puerta (también llamado ventana). Al contar durante un intervalo de tiempo T0, obtenido a partir de un reloj de referencia, se obtendrá N = FX T0 Dado que la señal de entrada y el reloj no son síncronas, puede suceder que la puerta de tiempo se acabe justo cuando llega otro impulso de entrada, o que se encuentra una transición que llega justo antes de acabar el tiempo T0. Por lo tanto, hay una indeterminación de 1 cuenta, que se representa diciendo que el resultado es N±1 cuenta. La resolución en la medida de frecuencia es 1/N. Para obtener una buena resolución, N debe ser alta. Pero esto implica un tiempo de medida tanto más largo cuando más pequeña sea Fx. Si por ejemplo, se desea medir una frecuencia de 10KHZ con un error inferior al 0.1%, hay que contar por lo menos 1000 impulsos, y como el tiempo entre impulsos de entrada es de 1/10KHZ = 100µs, la medida durará 100ms. 11 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA 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 señal de entrada. Sabiendo que la frecuencia será el número de pulsos contados en una ventana de tiempo determinada, F = N / T0, además se necesita que N (cuenta de pulsos) tome los valores desde 100 a 999, ya que una cuenta menor a 100 nos hace perder resolución, 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 Entonces, tomando las ventanas múltiplo de 1ms, obtenemos la frecuencia en KHZ. Los pulsos son generados por el temporizador 555 y son registrados por un contador interno al microcontrolador (“TIMER0”), hacemos coincidir el inicio y fin de cuenta con el comienzo y finalización de la ventana para que la cuenta sea directamente el valor de la frecuencia en KHZ. Debido a que el “TIMER0” es un contador de 8 bits solamente, la máxima cuenta posible que puede realizar es de 28 = 256 valores distintos, lo cual es insuficiente para nuestro propósito. Mediante la programación de una interrupción por desborde de “TIMER0”, incrementamos un registro de 8 bits cada vez que se produzca un desborde en el contador, con lo cual ahora disponemos de un contador de 16 bits (216 = 65536 valores) del cual sólo utilizaremos 10 bits para llegar hasta 999 (210 =1024). Regresando a la fórmula CX = 1,44 / [ F (RA + 2RB) ] notamos que, a diferencia del período, la capacidad CX es inversamente proporcional a la frecuencia y no basta tomar la resistencia como múltiplo de 1,44 para hacer que la medida arroje directamente el valor de la capacidad. En este caso hay que hacer un cálculo matemático (división) el cual es llevado a cabo por el microcontrolador. La división en el microcontrolador Si tuviésemos que calcular la capacidad en base a la frecuencia por nuestros medios tomaríamos la fórmula anterior y la resolveríamos manualmente o con un aparato calculador. En este proceso de resolución notaríamos que las cantidades involucradas necesitan de una notación científica, ya que F se mide en [KHZ] y las unidades de la resistencia son [KΩ] o [MΩ]. Además el valor de la capacidad es muy pequeño 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 multiplicación, división, trabajar con números que tienen coma flotante. No obstante hay una solución para trabajar simplemente con números enteros e implementar únicamente un algoritmo de división 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 ecuación. 12 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Suprimir los factores múltiplos de 1000. Serán suprimidos los KHZ, KΩ o MΩ, ya que afectan sólo en un factor de escala. La ecuación en este punto es CX = 1 / N, en donde el resultado sigue siendo un número decimal. Hacer del valor de CX un número entero (100 – 999). En este caso se afecta la ecuación de un factor, tal que: CX = 100.000 / N Activar las banderas correspondientes para que en la visualización el número se muestre como un número con coma flotante y notación de ingeniería. Si bien el microcontrolador sólo realizará la operación matemática: CX = 100.000 / N Únicamente se trabaja con enteros, utilizando como banderas en qué ventana fue medida la frecuencia y cuál fue la red resistiva que se utilizó, podemos poner en la visualización, lo que en realidad es un número entero será visualizado por el usuario del instrumento afectado por una coma y un factor de escala pF, nF, µF. En cuanto a la operación de división 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 división de dos números de 16 bits. Para poder utilizar como dividendo la constante de 17 bits se realizó una pequeña modificación al citado algoritmo. Los rangos que en lugar de medir frecuencia se basen en medir período no necesitarán realizar la división para obtener el valor de capacidad CX. A modo de ejemplo realicemos la medición hipotética 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á automáticamente la ventana de 1s dando una cuenta de: N = 200HZ x 1s = 200 pulsos contados. Aquí el microcontrolador aplica la fórmula: CX = 100.000 / N = 100.000 / 200 = 500 Tomando como información la red resistiva utilizada y la ventana de cuenta de pulsos se almacena en un registro la información de la ubicación del punto y qué factor de escala corresponde (información utilizada por el programa de visualización) lo cual hace que el valor 500 (que no brinda información 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: Obteniendo por este método una correcta y completa lectura final. 13 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA La medida de periodo en el microcontrolador Para bajas frecuencias y para márgenes de frecuencia de medida pequeña, es preferible medir el periodo de la señal. Para medir el periodo se cuentan los impulsos de una señal de reloj conocida interna al microcontrolador durante un intervalo de tiempo dinámico determinado a partir de la entrada (el mismo período de la señal a medir). El tiempo de medida es TX. La cuenta comienza con un flanco descendente de la señal proveniente del 555 y se detiene con el próximo, lo que delimita el período de la señal. Se toman las consideraciones necesarias detalladas en el punto anterior para que la medida del período nos de directamente la lectura CX sin tener que realizar operaciones matemáticas con el microcontrolador. 14 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA La escala automática Para que el operador del instrumento no deba intervenir seleccionando la escala que mejor se ajusta a la medida y además el resultado provea de una interpretación directa se dota al instrumento de una escala automática, en la cual un programa se encarga de comenzar por el menor de los rangos la medición, si se obtiene un N menor a 100 (lectura mayor a 999) se procede al rango siguiente hasta centrar la lectura en los límites dispuestos. Rango Metodo lectura 100 a 999 pF Frecuencia operación(HZ) 1K a 10K 1,00 a 9,99 nF 100 a 1K Período 10,0 a 99,9 nF 10 a 100 Período 100 a 999 nF 1 a 10 Frecuencia Período Duración ventana 100ms Error asociado (discriminación) + -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 Período TMAX=10ms + -10nF 10,0 a 99,9 µF 10 a 100 Período TMAX=100ms + -0,1µF 1,44KΩ 100 a 999 µF 1 a 10 Período TMAX=1s + -1µF 1,44KΩ 1000 a 9990 µF 0,1 a 1 Período TMAX=10s + -10µF 1,44KΩ Debido a que en este diseño la medición de capacitores a partir de 1µF 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 1µF y el otros para rangos mayores al mencionado, que hace tener una disposición 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 limitación de esta escala automática, ya que es quien opera el instrumento quien debe decidir en qué contactos debe realizar la medición. No obstante la exploración para detectar si se colocó un capacitor en alguna de las dos redes es automática, lo que hace que el capacímetro sólo presente un botón de encendido, eliminando en el proceso diseño toda botonera o llave selectora adicional. 15 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA La visualización 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 número decimal que pueda ser visualizado en bloques de display de 7 segmentos, esta forma de visualización se corresponde con la codificación “BCD” (decimal codificado en binario). El algoritmo utilizado puede convertir un máximo de 16 bits en binario a cuatro dígitos en decimal, del cual usamos solo 10 bits para representar tres dígitos. Con respecto a la visualización de la coma se eligió un método 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 notación científica se utiliza notación de ingeniería, 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. En el caso de valores mayores a 999µF no se puede visualizar el número y la escala simultáneamente, por lo tanto primero se visualiza la escala [µ] y luego la lectura numérica 1000 a 9990. 16 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Conclusiones La flexibilidad, simplicidad circuital, velocidad y facilidad de programación de los microcotroladores permiten realizar diseños que años atrás hubiesen requerido de gran cantidad de circuitos integrados digitales, con simplicidad y a menores costos. Debido a las características especiales que presenta este instrumento de elevada precisión, gran espectro de medición y rango automático, combinado con un costo bajo, hace que tenga un lugar propio en lo que se refiere a capacímetros digitales de mano (Portátiles). Se encontraron dificultades en la medición de períodos menores a 10ms con el microconrolador (capacidad mínima 1nF) y debido a la intención de medir capacidades más bajas se implementó una medición de frecuencia, la cual extendió el rango mínimo de medición a 100pF al precio de tener que implementar una división de números del orden de 16 a 17 bits en el microcontrolador. En cuanto a las operaciones matemáticas 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 reducción al máximo de las expresiones matemáticas, lo cual disminuyó en gran medida los recursos utilizados para realizar el programa. Se orientó la resolución de problemas pensando las soluciones como un conjunto “hardwaresoftware”, pero haciendo hincapié en un “hardware” mínimo. Los problemas que se presentaron en el diseño del capacímetro (Rango limitado a 100pF-9990µF) no escaparon a la teoría de las Medidas Electrónicas y a la implementación de componentes de uso común. No obstante, se encontró a medida que se realizó el diseño que la medición de capacidades más pequeñas que 100pF no se puede llevar a cabo simplemente con un temporizador 555 y se debe pensar en una configuración de amplificadores operacionales con elevado rechazo al ruido en la entrada (red R-C) y una alta impedancia de entrada. También se llegó a la conclusión de que si se deben medir grandes capacidades (10.000µF – 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 crítico el reemplazo del temporizador 555, por lo menos se debe dotar a este de circuitos auxiliares de potencia ligeramente mayor y además comienza a cobrar importancia el consumo del instrumento que, si bien sigue siendo portátil, cabe la posibilidad de carecer de autonomía suficiente (duración de la batería) para considerarse instrumento de mano. Desde el punto de vista profesional, el proceso de diseño y construcción de este aparato planteó desafíos a cada momento ya sea matemáticos, físicos y de automatización. Estos desafíos llevaron a la búsqueda de información y a la aplicación del diseño, lo que proporcionó experiencia y puesta a prueba de la habilidad. A medida que se llegó a su conclusión se notó cómo se fue forjando una forma de trabajar ordenada y sistemática a lo largo de todo el proyecto. 17 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA MATERIAL ANEXO El puente de “Wien” El puente de “Wien” se destina en principio a la medición de la capacidad de capacitores cuyas pérdidas son apreciables y pueden considerarse como resistencia paralelo; por ejemplo el ensayo y medición de cables de dos conductores (envainados para energía eléctrica o coaxiles para RF), y capacitores electrolíticos de gran capacidad. En la figura siguiente se muestra el esquema de un puente de “Wien” típico, los resistores R1, R2 y R3 son de precisión y no inductivos, el resistor Rx representa la pérdidas del capacitor bajo ensayo. Cx Rx R2 D 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) 2 R1 Cx = R2 C3 1 + (w R3 C3) 2 18 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Conseguir la condición 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 además la frecuencia del generador utilizado para exitarlo. Claro que si lo que se desea medir es el factor de pérdidas (D), la operación 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 pérdidas de capacitores y otros elementos que tienen capacidad asociada, tales como cables armados para alta tensión, aisladores, transformadores de potencia para uso industrial (Que utilizan aceite como refrigerante, y en los cuales se desea determinar las características del mismo como dieléctrico); 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 más fácil de equilibrar. La figura siguiente muestra el esquema básico de un puente de “Schering”. Los capacitores C4 y C3 son patrones regulables en décadas, 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 condición 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 pérdidas, que es: D = w C3 R3 La operación más fácil 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 fórmula de Cx e interviene directamente en la determinación de D. En cambio R2 entra solamente en el cálculo de Cx. 19 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Aplicaciones de los instrumentos de medida basados en microcontrolador Información general sobre sensores inteligentes Un sensor inteligente es aquel que combina la función de detección y alguna de las funciones de procesamiento de la señal y comunicación. Dado que estas funciones adicionales suele realizarlas un microprocesador, cualquier combinación de sensor y microprocesador se denomina sensor inteligente. Aunque no tiene que ser un elemento monolítico, se sobreentiende que un sensor inteligente está basado, total o parcialmente en elementos miniaturizados, y con un encapsulado común. Un sensor inteligente es inevitablemente más costoso que un sensor convencional. Pero si además del costo de compra se consideran el mantenimiento, fiabilidad, etc; el costo total de un sensor convencional puede ser mucho mayor. El nivel de complejidad de un sensor inteligente puede variar. Además de la detección o traducción puede incluir acondicionamiento de señal, correcciones de cero, ganancia y linealidad, compensación ambiental, escala de conversión de unidades, comunicación digital, autodiagnóstico, decisión e incluso activación sobre el sistema donde se conecta. De esta manera los sensores inteligentes incluyen, además del sensor primario, cuando menos algún algoritmo de control, memoria y capacidad de comunicación digital. La repercusión inmediata de los sensores inteligentes en un sistema de medida y control es que reducen la carga sobre los controladores lógicos programables (PLC). Criterios para la disminución del error en la medida y en la transmisión La medición, sobretodo en valores pequeños de capacidad, puede verse modificada por la presencia de capacidades parásitas, interferencias y ruido eléctrico, por lo cual se aconseja una cercanía entre el capacitor a medir y el circuito, en caso de utilizar cables, deben ser blindados y de longitud limitada, también debemos dotar de un blindaje eléctrico al circuito comprometido. Debemos utilizar la menor cantidad de conexiones de contacto óhmico. En el caso de necesitar medir capacidades muy pequeñas con gran exactitud y precisión debemos rechazar (ya que no se puede minimizar mas aún) el ruido que se induce en la red R-C ya que produce una alteración en la curva del transitorio carga-descarga del capacitor. Esto se realiza sustituyendo al temporizador 555 por un arreglo de amplificadores operacionales, en una configuración que tenga elevado rechazo al ruido de entrada. 20 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Generalidades sobre sistemas de comunicación para sensores e instrumentos digitales Las señales obtenidas con los sensores, una vez acondicionadas, hay que comunicarlas a un receptor o dispositivo de presentación, cercano o remoto. Cuando el receptor y el emisor no están muy lejos, se suele emplear transmisión por hilos (Cables conductores). También se emplea transmisión por hilos en instalaciones extensas que incluyan un diseño adecuado. Para distancias muy grandes se emplea telemedida (Transmisión remota de la medida) vía radio. Para distancias cortas se utilizan también radiación infrarroja o fibras ópticas sobre todo cuando estamos en presencia de interferencias electromagnéticas fuertes, ya que la luz no se ve afectada (Por lo menos apreciablemente) por las interferencias de carácter electromagnético. Cualquiera sea el medio de comunicación empleado, es necesario acondicionar las señales de los sensores para adaptarlas a las características de aquél.Este proceso puede necesitar más de una etapa. En primer lugar, la señal del sensor, una vez acondicionada mediante un circuito inmediato a él, se modula (si su salida es analógica) o codifica (si su salida es digital), para poder ser combinadas con otras que vayan a compartir el mismo medio, o simplemente para hacerla compatible con el modulador de transmisión. En algunos casos puede suceder que se disponga de una línea propia, transmitiéndose por ella directamente un nivel de tensión, corriente o una frecuencia procedente de este codificador o modulador. Si la información se transmite en forma de tensión continua proporcional a la magnitud medida, la distancia cubierta debe ser pequeña porque, en un entorno industrial, las tensiones parásitas inducidas en el bucle formado por los conductores puede falsear totalmente la medida (debemos utilizar cables apantallados). La telemedida por frecuencia tiene mayor inmunidad a las interferencias, pero no hay normas que permitan utilizar en un mismo sistema transmisores de distintos fabricantes. Además, las señales de frecuencia transmitidas pueden ser fuente de interferencia en circuitos próximos. La telemedida por corriente supera estos problemas. Telemedida por corriente En la telemedida por corriente la magnitud medida se convierte en una corriente continua proporcional, que se envía por la línea y es detectada en el extremo receptor midiendo la caída de tensión en una resistencia de valor ómhico conocido. Los valores de corriente normalizados son: (4-20, 0-5, 0-20, 1050, 1-5, 2-10) mA. Los termopares parásitos y las caídas de tensión en los hilos de conexión tampoco afectan, siempre y cuando el emisor sea capaz de imponer el valor de la corriente en el circuito. Esto permite utilizar un hilo más fino y por lo tanto menos costoso. Otra ventaja es que un mismo receptor pueda explorar varios canales (en donde hay colocados sensores) con distinta longitud de cable si que ésta afecte a la exactitud. El valor de corriente habitual es 4-20 mA. 21 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Diagrama de flujo de partida para la programación del capacímetro Inicio Medir con escala inicial Cambio de red ¿Última escala ¿Fuera de escala? Pasar a escala siguiente Almacenamiento lugar coma, unidad de medida y tipo de medición Frecuen cia? Realizar la división Convertir número binario en tres dígitos BCD Convertir dígitos BCD a 7 segmentos Mostrar número, coma y unidad de medida 22 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL VILLA MARIA Código de programa del capacímetro versión prototipo La versión prototipo desarrollada para placa experimental produce lecturas confiables desde 1nF a 9990µF. Esta versión de código de programa fue realizada en “assembler”, es de notar que la versión del código detallada a continuación está actualizada y se logró realizar todas las medidas en base a la medición de período, por lo cual no se utiliza el algoritmo de división. A continuación se detalla el código de programa utilizado: ;CUIDADO LOS ARCHIVOS .ASM DEBEN TENER UN NOMBRE CORTO PARA QUE MPASM GENERE EL .HEX ;este programa funciona ;los caracteres responden a display anodo comun con el punto apagado ;se tomaron las resistencias multiplo de 1.44 ;las temporizaciones de las ventanas que miden frecuencia son multiplo de 1ms LIST p=16F84 ; PIC16F844 is the target processor #include "P16F84.INC" ; Include header file cblock 0x10 ; Temporary storage registers (entre cblock y endc declaro variables) PDel0 ;sirve para temporizacion PDel1 ;sirve para temporizacion PDel2 timer16 ; junto a TMR0 hace que la cuenta sea un numero de 16 bits como maximo escala ;indica escala pico nano micro mili punto ;coloca punto si lo hubiese numh ; numh y numl contienen el resultado en formato binario de 16 bits numl unidadmil centena decena unidad aux ;auxiliar cont ;contador auxiliar endc 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 STATUS,RP0 ;Debido a que OPTION se encuentra en banco1 OPTION_REG,T0SE ;Configura incremento del timer0 cada flanco descendente INTCON,GIE ;Global interrupt enable INTCON,T0IE ;Timer0 interrupt enable cuando se desborde saltara a 0x04 OPTION_REG,T0CS ;Configura a timer0 para que cuente pulsos por RA4 TRISA TRISB TRISA,4 STATUS,RP0 ;debido a que tmr0 y port estan en banco0 movlw 0xFF movwf PORTA movwf PORTB bcf PORTA,0 goto vedin2 ;red R=1.44M ;*********************************Visualizacion************************************* ******* ; Codificaci¢n --> 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) lógico 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 ;vis muestra por 4 displays de 7 segmentos el contenindo de CENTENA, DECENA, UNIDAD ESCALA. vis movlw 0x0F movwf PORTA movlw .255 movwf aux ;inhabilita transistores poniendoles un 1 a cada salida ;valor de repeticion visualizacion LoopDisp ; ;Sacar al puerto el Dato 1 por un tiempo específico movf escala,W ;Dato para decodificar call Tabla ;Decodificación del dato ;Dato decodificado a puerto movwf PORTB ;Habilita Q unidad bcf PORTA,3 call ret2.5 ;Retardo de dígito bsf PORTA,3 ;Inhabilita Q unidad ;Sacar al puerto el Dato 2 por un tiempo específico ; movf unidad,W ;Dato para decodificar call Tabla ;Decodificación del dato movwf PORTB ;Dato decodificado a puerto ;Habilita Q decena bcf PORTA,2 ;Retardo de dígito call ret2.5 bsf PORTA,2 ;Inhabilita Q decena ;Sacar al puerto el Dato 3 por un tiempo específico ; movf decena,W ;Dato para decodificar call Tabla ;Decodificación 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 dígito 25 bsf PORTA,1 ;Inhabilita Q centena ;Sacar al puerto el Dato 4 por un tiempo específico ; movf centena,W ;Dato para decodificar call Tabla ;Decodificación del dato btfsc punto,0 andlw b'11111110' ;colocamos punto si lo hubiese movwf PORTB ;Dato decodificado a puerto bcf PORTA,0 ;Habilita Q centena call ret2.5 ;Retardo de dígito bsf PORTA,0 ;Inhabilita Q centena decfsz aux,F ;Decrementa aux, elude sig. sí cero goto LoopDisp ;Repite ciclo movlw b'1110' ;luego de mostrar el nro volvemos a empezar con 1.44M movwf PORTA goto vedin2 ;*******************1era ventana es dinamica periodo max 10ms (max=999hz min=100hz); ;para contar 999 los incrementos deberan ser de 10us ;1023=b'11 11111111' y 1000=b'11 11101110' ;si no hay cuenta salimos con el perro guardian vedin1 movlw b'1' movwf punto clrf numh ;contienen la cuenta de capacidad clrf numl clrf TMR0 sincro1btfss TMR0,0 goto sincro1 incr1 incf numl btfsc STATUS,Z ;si hay desborde en numl incrementamos numh incf numh nop nop btfsc numh,2 ;cuenta hasta 1024 y se sale goto vedin2 btfss TMR0,1 ;para tmr0=1cuando se cumple un periodo de tmr0 se sale goto incr1 movlw .253 ;resto 00000011 addwf numh,W btfss STATUS,C ;si C=0 el numero sera igual o menor a 1023 goto menor9 finved1 ras addwf btfss goto movlw .24 ;sumo el cmp2 de .232 porque subwf no me esta activando bande- numl,w STATUS,C convbcd ;si la resta da negativo el nro es menor a 1000 ;cuando la resta da negativo C=0 26 ;*******************2da ventana es dinamica periodo max 100ms (max=99.9hz 10.0hz minimo); ;para contar 999 los incrementos deberan ser de 100us vedin2 movlw 0x4F movwf PORTB movlw .50 movwf cont movlw .10 movwf escala movlw .11 btfss PORTA,1 movwf escala movlw b'10' movwf punto clrf timer16 clrf TMR0 sincro2clrf numh clrf numl incf TMR0 incr2 movlw .254 addwf TMR0,W btfsc STATUS,Z goto sincro2 incf numl btfsc STATUS,Z incf numh btfsc numh,2 goto vedin3 movlw .255 addwf timer16,w btfsc STATUS,C goto vedin1 ret2 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 ;lo usamos para escapar si se coloca una frec alta ;1era pasada tmr0=1 2da 11 ;en el enganche tmr0=10 ;si hay desborde en numl incrementamos numh ;cuenta hasta 1024 y se sale ;sale de la ventana cuando repentinamente aumenta frec ;produce una demora para que los pasos sean de 100us ;para tmr0=100cuando se cumple un periodo de tmr0 se sale ;resto 00000011 (.768) 1023-768=255 nro de 8bits ; ;si numh menor a 768 C=0, entonces vemos si es menor a 100 ;si no el numero sera igual o menor a 1023 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 ;1era pasada tmr0=1 2da 11 ;en el enganche tmr0=10 ;si hay desborde en numl incrementamos numh ;cuenta hasta 1024 y se sale ;sale de la ventana cuando repentinamente aumenta frec ;para tmr0=100cuando se cumple un periodo de tmr0 se sale ;resto 00000011 ;el numero sera igual o menor a 1023 ;.24 ;si la resta da negativo el nro es menor a 1000 ;sumo el cmp2 de .232 porque subwf no me esta activando banderas ;cuando la resta da negativo C=0 28 finved3 de c goto btfss PORTA,1 vedin4 setesc movlw b'1101' btfss PORTA,0 movwf PORTA goto vedin2 ;si estabamos en la red 1.44K y no encontramos el valor ;vamos a la ventana dinamica 4 ;si estamos en la red 1.44M, ;hay que cambiar a la de 1.44K ;************************4ta ventana es dinamica periodo max 10s (max=0.999hz min=0.10)******** ;para contar 999 los incrementos deberan ser de 10ms ;1023=b'11 11111111' y 1000=b'11 11101110' vedin4 movlw 0xC7 movwf PORTB movlw .255 movwf cont clrf escala clrf timer16 clrf TMR0 sincro4clrf numh clrf numl incf TMR0 incr4 movlw .254 addwf TMR0,W btfsc STATUS,Z goto sincro4 incf numl btfsc STATUS,Z incf numh btfsc numh,2 goto finved4 movlw .255 addwf timer16,w btfsc STATUS,C goto vedin2 call ;mostramos u ;retardo de visualizacion ;1era pasada tmr0=1 2da 11 ;en el enganche tmr0=10 ;si hay desborde en numl incrementamos numh ;cuenta hasta 1024 y se sale ;sale de la ventana cuando repentinamente aumenta frec retven4 btfss TMR0,2 goto incr4 movlw .253 addwf numh,W btfss STATUS,C goto convbcd movlw .24 ;para tmr0=100cuando se cumple un periodo de tmr0 se sale ;resto 00000011 ;el numero sera igual o menor a 1023 ;.24 29 addwf numl,w btfss STATUS,C goto convbcd finved4 movlw b'1110' movwf PORTA goto vedin2 ;si la resta da negativo el nro es menor a 1000 ;sumo el cmp2 de .232 porque subwf no me esta activando banderas ;cuando la resta da negativo C=0 ;debido a que solo entramos en ventana 3 con 1.44K ;empezamos de nuevo con 1.44M ;****************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 Bibliografía, sitios web consultados y envío de material Apuntes de Cátedra Medidas Electrónicas 1 Universidad Tecnológica Nacional Facultad Regional Villa María Apuntes de Cátedra Medidas Electrónicas 1 Universidad Tecnológica Nacional Facultad Regional Mendoza Diseño e Implantación De Un Capacitómetro Utilizando el CPLD EPM7128SLC84-15. J. Valeriano, C. Ojeda, G. Calva Centro de Instrumentos UNAM. Laboratorio de Electrónica. M. Angulo Microcontroladores PIC, Editorial Paraninfo A 555 Timer IC Tutorial © by Tony van Roon Sensores Inteligentes e Instrumentación Digital Hoja de datos del microcontrolador PIC16F84A: http://www.microchip.com Instrumentos digitales: http://elm-chan.org/ Operaciones matemáticas para microcontroladores: http://www.restena.lu/convict/Jeunes/Math/Fast_operations.htm Tanto para obtener este informe en formato digital como para solicitar el envío del código fuente (assembler) para el PIC16F84A, o simplemente ponerse en contacto, enviar un mensaje de correo electrónico con la correspondiente solicitud a la siguiente dirección: mauriciomoretto@hotmail.com 33