TERMOMETRO I2C

En primer lugar ,¿qué es el I2C?

El I2C fue creado por la empresa PHILIPS a principios de 1980 con el fin de controlar varios chips en televisores de manera sencilla, es decir en este protocolo hace falta un maestro y un esclavo como mínimo. entre ellos se comunican a través de una linea de datos llamada SDA , este bus necesita ser activado a través de un pulso que es mandado por el pin SCL , esta conexión  entre  ambos buses solo se puede dar cuando SCL esta en flaco descendente y SDA esta a 1.


Es importante saber algunas características del bus I2C:
  •  La unidad básica de transmisión en el byte.
  •  Las transferencias de datos son de 8 bits.
  •  Cada byte enviado requiere una respuesta de confirmación.
  •  ACK: el destinatario (maestro o esclavo) mantiene SDA a nivel bajo durante un tiempo de bit (si no lo hace NACK).

Esta práctica se basa en un termostato/ termómetro digital  llamado DS1621 , el cual tenemos que configurar  gracias a la librería de Wire.h .

 

El código fuente del programa es el siguiente: 

El setup como solo se hace una vez al iniciar el programa, le utilizaremos para configurar  dentro del  registro de control , en primer lugar, va  a ser una adquisición continua , y en segundo lugar  la temperatura por encima y por debajo en la que va a suceder la histéresis ( en nuestro caso 25º y 29º ). 


 Por ultimo en el loop pediremos  al esclavo con la función requestFrom la ultima conversión que ha hecho de temperatura y la mostraremos.

Para entender mejor el registro de control del DS1621
 

Si nos adentramos mas en el programa y abrimos el sniffer del I2C podemos comprobar como se mandan los bytes entre el master y el esclavo 


  • El primer dato es el tiempo transcurrido desde que se ha dado al play por primera vez hasta se ha "esnifado" el comando 
  • La S es el bit de START
  • 90 /91 comando con el que escribes/lees. Si lo descompones en binario se convierte en 1001 0000/1 , el ultimo bit es el que comunicas si vas a escribir  o a leer.
  • A es el bit de reconocimiento
  • AA es un comando para leer la ultima conversión realizada
  • P es el paro