Escolar Documentos
Profissional Documentos
Cultura Documentos
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.
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
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.
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.
Modo Shutdown
Fault Queue
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.
D0: Shutdow:
0 = Operación normal
1 = Modo Shutdown
D1: CMPTR/INT:
0 = Modo Comparador
1 = Modo Interrupción
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
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
+
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.
Esto es necesario hacerlo una única vez y luego leer repetitivamente el 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;
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.