Arduino‎ > ‎ArduBus‎ > ‎

Sensor temperatura

Para este ejemplo usaremos el sensor de temperatura TC74 que es un chip fabricado por Microchip que posee la capacidad de comunicarse por el bus I2C con un dispositivo maestro y el tipo de empaquetado permite conectarlo a una proteoboard directamente.
La ventaja de este tipo de dispositivo es que la lectura de la temperatura y la transformación a dato, se realiza en el propio sensor, por lo que recibimos el dato ya listo para ser utilizado.

Para poder establecer la comunicación, configurarlo y recibir datos, tendremos que leernos la documentación sobre el TC74.

En la página 5 tenemos la tabla que describe las funciones de cada patilla y según el encapsulado SOT-23 que es el disponible en Proteus, tendremos la siguiente configuración:

Pin Simbolo Tipo
Descripción
 1  NC  Ninguno  Sin conexión interna
 2  GND  Alimentación  Tierra
 3  VDD  Alimentación  Entrada alimentación
 4  SCLK  Entrada
 I2C Serial Clock
 5  SDA  Bidireccional  I2C Serial Data
Función de los pines

Por lo que el pin 4 y 5 son los que tienen que ir conectados al bus I2C, según la siguiente imagen:

Esquema de conexión del esclavo I2C

Nota: en el bus I2C no hay resistencias de pull-up ya que dentro del propio encapsulado del ATmega ya van incorporadas y son activadas al acceder al bus I2C

En la página 6 punto 3.1.2, nos dan la dirección I2C del chip que en este caso, es fija a la dirección 0b1001101, o lo que es lo mismo 0x4D
Nota: el octavo bit es el que indica si la operación es de lectura o escritura y es añadido automáticamente por el Arduino, por lo que las direcciones I2C deben ser de 7 bits.


Dirección I2C del TC74

Para realizar una operación de lectura o escritura se debe seleccionar el registro del esclavo I2C sobre el que se quiere realizar la operación. En la tabla 4-1 de la página 8, podemos ver que el TC74 tiene 2 registros, uno en donde almacena la temperatura y en otro la configuración.

Registro Función
 0x00  Leer temperatura
 0x01  Leer/escribir configuración
Registros del TC74

En la tabla 4-2 de la misma página, nos indica que cuando una lectura de temperatura está lista se pondrá a 1 el bit 6 del registro de configuración y si el bit 7 del mismo registro está activado, significa que el TC74 está en modo standby en el que el chip entra en el modo de bajo consumo.

Bit Función
Tipo Operación
D[7]  Standby  Lectura/escritura
 1 = standby
 0 = normal
D[6]  Dato listo
 Lectura  1 = listo
 0 = no listo
D[5]-D[0]  Reservado  -  -
Registro configuración

Terminamos con la teoría y pasamos a la parte práctica, para ello realizamos los pasos del apartado anterior (comunicación con el ArduBus) y así comunicarnos con la placa.

Si queremos leer la temperatura que detecta el TC74, deberemos leer primero el registro de configuración para saber si hay una lectura de temperatura lista, para ello escribimos el siguiente comando:

I2C>{0x4d 1}
210 I2C START CONDITION
220 I2C WRITE: 0x4D
220 I2C WRITE: 0x01
240 I2C STOP CONDITION

Una vez ya activado el registro uno (el de configuración) pasamos a leerlo:

I2C>{0x4d r}
210 I2C START CONDITION
220 I2C WRITE: 0x4D
230 I2C READ: 0x40
240 I2C STOP CONDITION
I2C>

A lo que el chip nos devuelve el valor '0x40' en el que el bit 6 está a 1 y corresponde con la indicación de que el dato está listo para leerse, por lo que seleccionaremos el registro 0, donde está contenido el dato de la temperatura y ejecutaremos la orden de lectura.

I2C>{0x4d 0}{0x4d r}
210 I2C START CONDITION
220 I2C WRITE: 0x4D
220 I2C WRITE: 0x00
240 I2C STOP CONDITION
210 I2C START CONDITION
220 I2C WRITE: 0x4D
230 I2C READ: 0x19
240 I2C STOP CONDITION
I2C>

El '0x19' que nos devuelve, es el valor de la temperatura en hexadecimal, por lo que en decimal equivaldría a 25ºC, en el caso de temperaturas negativas, éstas se devuelven con complemento a 2.

Si queremos activar el modo de bajo consumo del TC74, deberemos poner a 1 el bit 7 del registro de configuración:


I2C>{0x4d 1 0b10000000}
210 I2C START CONDITION
220 I2C WRITE: 0x4D
220 I2C WRITE: 0x01
220 I2C WRITE: 0x80
240 I2C STOP CONDITION
I2C>

Y ahora comprobaremos con una lectura de dicho registro que la configuración ha sido correctamente escrita, seleccionando el registro de configuración y leyéndolo:

I2C>{0x4d 1}{0x4d r}
210 I2C START CONDITION
220 I2C WRITE: 0x4D
220 I2C WRITE: 0x01
240 I2C STOP CONDITION
210 I2C START CONDITION
220 I2C WRITE: 0x4D
230 I2C READ: 0x80
240 I2C STOP CONDITION
I2C>

Como se puede observar, está activado el bit 7 y si queremos volver a activar el chip, sólo tendremos que borrar el bit que habíamos activado:

I2C>{0x4d 1 0b00000000}
210 I2C START CONDITION
220 I2C WRITE: 0x4D
220 I2C WRITE: 0×01
220 I2C WRITE: 0×00
240 I2C STOP CONDITION
I2C>

Ya sabemos como controlar el sensor de temperatura TC74 por I2C y ¡sin haber programado nada!
Comments