Você está na página 1de 8

Sensores de Temperatura

Sensor de Temperatura Serial TCN75


Autor: Carlos A. Narváez V.
Ingeniero Electricista
Universidad de Oriente
Email: cnarvaez@udo.edu.ve

Descripción General
El TCN75 de Microchip es un sensor de temperatura programable serialmente (I2C) que
además puede notificar al procesador controlador cuándo la temperatura ambiente excede el valor
de set point programado por el usuario. Esta notificación la realiza a través del pin de salida
INT/CMPTR el cual puede ser programado como un simple comparador para operación como
termostato o como una interrupción por evento de temperatura. La hysteresis también puede ser
programada. La comunicación con el TCN75 es realizada vía un bus de 2 hilos que es compatible
con el protocolo estándar de la industria. Este permite leer la temperatura actual, programar el set
point y la hysteresis y configurar el dispositivo. Este sensor trabaja en el rango de –55 oC a +125 oC
con precisión de 0.5 oC, viene normalmente en encapsulado SOIC de 8 pines y existen modelos
para trabajar con voltajes de 3.3 y 5 volt.

El esquema de direccionamiento permite que hasta ocho dispositivos compartan el mismo bus de
dos hilos en aplicaciones de monitoreo multizona. Al alimentar el dispositivo, éste por defecto
trabaja en modo comparador con un set point de 80 oC y una hysteresis de 5 oC. Un comando
Shutdown puede ser enviado a través del bus de dos hilos para activar el modo standby de bajo
consumo.

Todos los registros del dispositivo pueden ser leídos por el procesador controlador y la polaridad
del pin de salida INT/CMPTR programada por el usuario. Estos dispositivos son pequeños en
tamaño, de bajo costo de instalación y fáciles de usa tanto en sistemas polled como en sistemas
manejados por interrupción, por lo que representan una buena elección para implementar
sofisticados sistemas de manejo de temperatura.

Descripción de los pines


La tabla siguiente muestra la función de cada uno de los pines del sensor.

Tabla No. 1
Pin Símbolo Función
1 SDA Datos seriales Bi-direccional
2 SCL Entrada de reloj bus serial
3 INT/CMPTR Salida interrupción o comparador
4 GND Común
5 A2 Pin Selección Dirección (MSB)
6 A1 Pin Selección Dirección
7 A0 Pin Selección Dirección (LSB)
8 VDD Entrada fuente de poder

Carlos A. Narváez V. 2003


Sensores de Temperatura
Detalles de Operación
INT/CMPTR

Esta es una salida del tipo colector abierto y de polaridad programada. En el modo de comparador,
esta salida incondicionalmente pasa a activa en cualquier momento que la temperatura exceda el
valor programado en el registro TSET. INT/CMPTR pasa a inactiva cuando la temperatura
disminuye en el valor programado en THYST. En el modo interrupción, INT/CMPTR, también se
hace activa cuando la temperatura excede el valor programado en TSET. Esta salida es
incondicionalmente reset de su estado activo, leyendo cualquier registro vía el bus de dos hilos.
Cuando la temperatura disminuye en el valor programado en THYST, INT/CMPTR nuevamente
pasa a activa. Leyendo cualquier registro, la interrupción THYST es clear. La salida INT/CMPTR
es incondicionalmente reset si se entra en el modo Shutdown.

Dirección (A2, A1, A0)

Entradas. Pone valores a los tres bits menos significativos de la dirección de 7 bits de un
dispositivo TCN75.

Dirección de Esclavo

Los cuatro bits más significativos de la dirección del dispositivo (A6, A5, A4, A3) son fijados en el
valor 11001[B]. El valor de A2, A1, A0 en el flujo de bit serial debe corresponder con el estado de
A2, A1, A0 de las entradas del TCN75, para que este responda con un ACK, indicando que el
TCN75 se encuentra en el bus y esta listo para aceptar datos. La dirección esclavo es
representada en la tabla 2.

Tabla 2 Dirección Esclavo TCN75


1 0 0 0 A2 A1 A0
MSB LSB

Modo Shutdown

Cuando el bit correspondiente en el registro de configuración es puesto a 1, el TCN75 entra en el


modo de shutdown de bajo consumo de energía y la conversión de temperatura-a-digital se
paraliza. El bus de interfaz del TCN75 permanece activo y los registro TEMP, TSET y THYST,
pueden ser leídos y escritos. Si el TCN75 esta en modo interrupción, el estado de INT/CMPTR es
reset al entrar en el modo shutdown.

Fault Queue

Para evitar la probabilidad de la activación de la salida INT/CMPTR debido a espurios, el TCN75


puede ser programado para filtrar estos eventos transitorios. Esto es hecho programando el valor
deseado en los bits de fault queue del registro de configuración. La lógica dentro del TCN75
previene disparar la salida INT/CMPTR a menos que el número programado de conversiones
secuenciales de temperatura-a-digital, tengan el mismo valor cuantitativo. En otras palabra, el valor
reportado de temperatura debe permanecer por encima de TSET o por debajo de THYST por un
número consecutivo de ciclos programado en el fault queue. Hasta seis ciclos pueden ser
seleccionados.

Carlos A. Narváez V. 2003


Sensores de Temperatura

Registros

La tabla No. 3 muestra el resumen de los registros del sensor y las tablas No. 4, 5 y 6
especifican los bits de los registros TEMP, TSET y THYST que son utilizados. Los marcados con X,
no forman parte de los datos de estos registros. La transmisión se efectúa byte a byte, primero el
más significativo (D15 – D8) y luego el menos significativo (D7 – D0), de este ultimo byte sólo el bit
D7, forma parte de los datos de los registros.

En estos registros, cada valor unitario representa medio grado centígrado. El valor esta en el
formato binario complemento a 2, tal que una lectura de b000000000 representa cero grado
centígrado. Un dato importante es que si el bit D7 del byte menos significativo esta a 1, esto
significa medio grado es decir en formato decimal se puede representar como yyy.x, donde yyy es
el byte más significativo y x es 5.

Tabla No. 3 Registros del TCN75


Nombre Descripción Ancho Lectura Escritura Notas
TEMP Temperatura ambiente 16 X Formato Complemento a 2
TSET Temperatura Set point 16 X X Formato Complemento a 2
THYST Temperatura Hysteresis 16 X X Formato Complemento a 2
POINT Apuntador de Registros 8 X X
CONFIG Registro de Configuración 8 X X

Tabla No. 4 Registro Temperatura (TEMP), 16 bits, sólo lectura


D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
MSB D7 D6 D5 D4 D3 D2 D1 LSB X X X X X X X

Tabla No. 5 Registro Temperatura Set Point (TSET), 16 bits, Lectura/escritura


D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
MSB D7 D6 D5 D4 D3 D2 D1 LSB X X X X X X X

Tabla No. 6 Registro Hysteresis (THYST), 16 bits, Lectura/escritura


D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
MSB D7 D6 D5 D4 D3 D2 D1 LSB X X X X X X X

Carlos A. Narváez V. 2003


Sensores de Temperatura

Tabla No. 7 Conversión de Temperatura a Valores Digitales


Temperatura Valor en Binario Valor en Hex
+125 oC 0 11111010 0FA
+25 oC 0 00110010 032
+0.5 oC 0 00000001 001
0 oC 0 00000000 00
-0.5 oC 1 11111111 1FF
-25 oC 1 11001110 1CE
-40 oC 1 10110000 1B0
-55 oC 1 10010010 192

Modelo de Programación y configuración de Registros


El TCN75 utiliza el protocolo de bus I2C de Phillips. El modelo de programación se basa
en primeramente escribir en el registro POINT seleccionando un registro según se muestra en las
tablas 7 y 8. Esta selección se puede hacer una única vez y luego realizar lectura o escritura sobre
el registro seleccionado repetitivamente. Por ejemplo, para leer en el registro TEMP, provocamos
una condición de START, y escribimos el byte de dirección del dispositivo más la bandera de
escritura (0), luego escribimos el registro POINT con el registro TEMP seleccionado. Lo anterior
puede realizarse una única vez. Para leer de TEMP repetitivamente, introducimos el grupo de
instrucciones siguiente en un bucle. Provocamos una nueva condición de START y escribimos el
byte de dirección más la bandera de lectura (1). Luego leemos el MS byte y después el LS byte y
finalmente enviamos una condición de STOP.

Tabla No. 8 Registro POINT, 8 bits, sólo escritura


D7 D6 D5 D4 D3 D2 D1 D0
Deben ser puestos a cero Pointer

Tabla No. 9 Selección de registros vía registro apuntador


D1 D2 Registro Seleccionado
0 0 TEMP
0 1 CONFIG
1 0 THYST
1 1 TSET

Tabla No. 10 Registro CONFIG, 8 bits, Lectura/Escritura


D7 D6 D5 D4 D3 D2 D1 D0
Deben ser puestos a Fault Queue Polaridad COMP/INT Shutdown
cero INT/CMPTR

Carlos A. Narváez V. 2003


Sensores de Temperatura

D0: Shutdow:

0 = Operación normal
1 = Modo Shutdown

D1: CMPTR/INT:

0 = Modo Comparador
1 = Modo Interrupción

D2: Polaridad INT/CMPTR:

0 = Activa Baja
1 = Activa Alta

D3 – D4: Fault Queue: Número de conversiones de temperatura-a-digital con el mismo resultado antes
actualizar la salida INT/CMPTR.

D4 D3 Número de Conversiones
0 0 1 Por defecto al conectar la alimentación
0 1 2
1 0 3
1 1 4

Hardware

La fig. 1 muestra el hardware utilizado para verificar el trabajo del TCN75.

PIC16F877 U2 +V
CTS +V +V U1
TCN75
J1 U3 MCLR/VPP RB7/PGD
1uF RA0/AN0 RB6/PGC
+

SDA VDD
RA1/AN1 RB5 SCL A0
C1+ VCC RA2/AN2 RB4
+

C+ GND RA3/AN3 RB3/PGM I/C A1


1uF C1- T1OUT RA4/TOCK1 RB2 GND A2
C2+ R1IN RA5/AN4 RB1
RTS C2- R1OUT RTS RE0/RD#/AN5 RB0/INT
+

C- T1IN CTS RE1/WR#/AN5 VDD


1 T2OUT T2IN RE2/CS#/AN7 VSS
+

R2IN R2OUT VDD RD7/PSP7


VSS RD6/PSP6
RD 1uF OSC1/CLKIN RD5/PSP5
MAX232 OSC2/CLKOUT RD4/PSP4 +V
RC0/T1OSO RC7/RX/DT
TX RC1/T1OSI RC6/TX/CK
RC2/CCP1 RC5/SDO
RC3/SCK/SCL RC4/SDI
RD0/PSP0 SDA
RD3/PSP3
RD1/PSP1 RD2/PSP2
R2 R1
4.7K 4.7K

Fig. 1 Conexión del TCN75 al bus I2C del PIC16F877.

Carlos A. Narváez V. 2003


Sensores de Temperatura

Ejemplos de Programación
En los ejemplos de programación que mostraremos, hemos usado el compilador C, PIC C
Compiler PCM de CCS. Este compilador incluye funciones que implementan el bus I2C.
Suponemos que el dispositivo tiene sus pines de dirección A2, A1, A0 conectados a cero.

Configurando el Registro POINT para apuntar el registro TEMP

Esto es necesario hacerlo una única vez y luego leer repetitivamente el registro TEMP.

I2c_start; // Set condición START del bus I2C


I2c_write(b10010000); // Dirección y bandera de escritura
I2c_write(b00000000); // byte apuntador Registro TEMP Seleccionado

Lectura Registro TEMP

Luego que el registro POINT apunta al registro TEMP, este puede ser leído repetitivamente
normalmente en un bucle.

I2c _start;
I2c_write(b10010001); // Dirección y bandera de lectura
TemperaturaMSB = i2c_read(1); // Lectura del registro TEMP MSB ACK
TemperaturaLSB = i2c_read(0); // Lectura del registro TEMP LSB No ACK
I2c_stop();
If((TemperaturaLSB & 0x80) == 0x80) // Si bit 7 es 1 entonces ½ grado centígrado
TemperaturaLSB = 5;
Else
TemperaturaLSB = 0;

Imprimiendo los resultados

Printf(lcd_out,“%D.%U”, TemperturaMSB, TemperturaLSB);

Leyendo el Registro de Configuración

I2c_start; // Set condición START del bus I2C


I2c_write(b10010000); // Dirección y bandera de escritura
I2c_write(b00000001); // byte apuntador, Registro CONFIG Seleccionado
I2c _start;
I2c_write(b10010001); // Dirección y bandera de lectura
configbyte = i2c_read(0); // Lectura del registro TEMP MSB No ACK
i2c_stop();

Escribiendo en el Registro de Configuración

En este ejemplo escribiremos en el registro de configuración para activar el modo Shutdow.


I2c_start; // Set condición START del bus I2C
I2c_write(b10010000); // Dirección y bandera de escritura
I2c_write(b00000001); // byte apuntador, Registro CONFIG Seleccionado
I2c_write(b00000001); // Byte de configuración Shtdow Activo
i2c_stop();

Carlos A. Narváez V. 2003


Sensores de Temperatura

Configurando el Set Point para uso como Termostato

En este ejemplo programaremos el registro TSET para que en modo comparador el pin
INT/CMPTR se active en cualquier momento que la temperatura exceda este valor. Este pin se
volverá inactivo cuando la temperatura subsecuentemente disminuya en el valor dado en THYST.
Recuerde que el TCN75 al ser alimentado trabaja en modo comparador con valores por defecto de
80 oC para el Set Point y 5 oC de hysteresis. Para este caso utilizaremos un valor de 25 oC cuyo
valor en Hexadecimal es 032 y en binario 0 00110010. En este caso el LS byte es cero y el MS
byte es 00011001 cuyo equivalente en hexadecimal es: 19.

I2c_start; // Set condición START del bus I2C


I2c_write(b10010000); // Dirección y bandera de escritura
I2c_write(b00000011); // byte apuntador Registro TSET Seleccionado
I2c_write(0x19); // Escribe el MS Byte del registro TSET
I2c_write(0x00); // Escribe el LS Byte del registro TSET
I2_stop();

Carlos A. Narváez V. 2003

Você também pode gostar