Sunteți pe pagina 1din 4

Curso PIC / Proteus 2009

Como manejar con un PIC rango de temperaturas negativo


Tomemos el ejemplo del sensor de temperatura LM35 el que tiene una curva de transferencia lineal entre -50 C y +150C, generando una tensin de salida para dichos valores de -0,50 V +1,50 V respectivamente. Obviamente que para que entregue los -0,50 V para -50C, el sensor se debe alimentar con tensin negativa segn el siguiente grfico que es un circuito de aplicacin del fabricante.

El valor de R1 se calcula como el cociente entre: (Tensin de fuente negativa) / 50 uA = R1 Pero como sabemos, las entradas A/D del PIC no pueden tener tensiones por debajo de su potencial de referencia de fuente (Vss = 0V). Entonces: Como hago para leer el rango negativo? Es posible? Claro que si, y solo tenemos que pensar matemticamente como solucionar esto. Jos A.Biafore

Curso PIC / Proteus 2009 Sabemos que el PIC puede medir entre 0V y +Vref, o sea lo minimo es 0V y maximo 5V. Si le sumo 500 mV a la salida del sensor LM35, cuando el mismo est entregando -0,50V (correspondientes a -50C), tendramos: -0,50V (Sal.LM35) + 0,50V (Fuente Offset) = 0V Y cuando est sensando +150C (VOut +1,50V): +1,50V (Sal.LM35) + 0,50V (Fuente Offset) = +2,0V

Como se aprecia en las ecuaciones anteriores, solo hemos desplazado la curva del sensor 500 mV, con lo que todo su rango ahora es positivo y puede ser medido tranquilamente por el A/D del PIC. Pero tengo que llenar mi circuito de fuentes auxiliares? una negativa para el LM35, otra positiva para el PIC, otra para el offset. No, no es asi, existen la posibilidad de utilizar divisores resistivos, dado la baja corriente que consume cada dispositivo. Una configuracin tipica se puede ver en la figura anterior. Para no perder rango de medicin y darle mas exactitud a la misma, es conveniente fijar la +Vref del conversor en 2,5V. Ahora, ya tenemos adaptados los rangos para que puedan ser interpretados por el microcontrolador y no destruir el mismo por tensin inversa en la entrada del A/D, pero: Eso es todo? Cmo manejo la medicin con el offset que le agregu? Voy a tener un rango repetido entre -50C y +50C? Jos A.Biafore

Curso PIC / Proteus 2009 Tengo un microcontrolador, no una licuadora. Con la programacin correcta puedo realizar todo tipo de operaciones matemticas. Primero, mi rango es de 0 255 cuentas para 0V +2,50V (Cuentas min.= -VRef, Cuentas Max.= +VRef). Yo usar el rango de VIn A/D entre 0,00V y 2,00V lo que corresponde a 0 Cuentas y 204 Cuentas. O sea: 0 Cu = -50C y 204 Cu = +150C Que pasa a los 0C? Tengo 0,50 mV a la entrada del A/D y por lo tanto: Si para 2,5V 255 Cu Para 0,5V 0,5V * 255Cu / 2,5V = 51 Cu Tengo aprox. 50 cuentas (que no es ni mas ni menos que mi offset) Por lo tanto si a la cantidad de cuentas que contiene el registro ADRESH (en resolucin 8 bits) le resto 50, paso a obtener todo el rango positivo del LM35 (0C +150C). Y el rango de 0 Cu 49 Cu corresponder al rango negativo del LM35 (-50C -0,1C). Lo mas sencillo para controlar esta deteccin y junto con ella controlar el signo a presentar en el LCD es comparar el contenido del registro que contiene el resultado de la conversin con el literal 50 y decidir segn sea mayor o menor a este valor. En el caso del rango negativo, observemos que por cada cuenta que se incrementa el ADRESH el mdulo de la temperatura realmente est bajando un grado o sea que hay una relacin proporcional lineal inversa, que tambin debemos corregir matemticamente. En este caso, como el valor del mdulo nunca ser mayor de 50, la correccin consiste en restarle al literal 50, la cantidad de cuentas del registro ADRESH. O se que cunado tengo 50 Cu (50 50 Cu = 0C), 49 Cu (50 49 Cu = 1C), - - - - , 0 Cu (50 0 Cu = 50C).

Jos A.Biafore

Curso PIC / Proteus 2009

En la salida adc_l >= 50, encontramos un bloque matemtico en donde al resultado de la conversin (adc_1) le restamos 50 y lo guardamos en el registro escal_l y a continuacin en la posicin que corresponda del LCD enviamos el carcter + para luego ingresar al mdulo de conversin BCD a decimal que nos entregar los digitos correspondientes a las unidades, decenas y centenas de grados. Si salimos por la salida adc_1 < 50, lo que significa que estamos en el rango negativo de temperatura medida, le restamos a 50 el valor de la conversin A/D y lo guardamos en escal_l y a continuacin en la posicin que corresponda del LCD enviamos el carcter - y al igual que antes, entramos al conversor BCD a decimal. Con esto queda explicado como manejar cualquier rango negativo analgico que se debe convertir a digital. Se debe prestar atencin a como corregir las escalas para cada caso en particular, recordemos que en Niple se dispone de un mdulo software llamado ESCALAR que puede sernos til para estas tareas.

Jos A.Biafore

S-ar putea să vă placă și