Teile: I2C Digital Thermometer (TC74)

Microchip’s TC74 ist ein erschwinglicher digitaler Temperatursensor mit einer grundlegenden I2C-Schnittstelle. Es hat eine Auflösung von 1 Grad Celsius und eine Vielzahl von -40 bis +125 Grad. Dies ist eine einfache Methode, um einen Job ohne Analog-bis-Digital-Konverter an einen Job hinzuzufügen. Wir zeigen Ihnen, wie Sie den TC74 unten verwenden.

Microchip TC74 Digitaler Temperatursensor (OctoPart-Suche, ab 0,88 $)

Der TC74 ist in fünf Pin-Durchgangsloch- und Surface-Mount-Paketen erhältlich, siehe TC74-Datenblatt (PDF). Wir konnten keinen CADSOFT EAGLE-FOOTPRINT für jede Version dieses Teils finden, wenn Sie von einem Kenntnis, wenn Sie wissen, eine Verbindung dazu in den Kommentaren.

Verschiedene Versionen des TC74 sind für bestimmte Spannungen kalibriert, aber alle Arbeiten von 2,7-5 Vielen. Der TC74A5, den wir verwendet haben, ist viel genau, wenn Sie bei 5VOLTS tätig sind, aber wir haben es von einer 3.3Volt-Versorgung angetrieben. Die I2C-Verbindung benötigt 2 Pull-Up-Widerstände, um den Bus hoch (R1, R2), 2k-10k, müssen funktionieren. C1 ist ein 0,1ütig Entkopplungskondensator.

Wir haben die Bus-Pirat-Universal-Serienschnittstelle im I2C-Modus verwendet, um den TC74 zu testen, aber genau das gleiche Principals gelten für jeden Mikrocontroller. Wir haben den TC74 von der 3,3Volz-Versorgung von Bus Pirat angetrieben und die Anziehungswiderstände an Bord verwendet, um den I2C-Bus hoch zu halten.

Befehl
Wert

Temperaturregister auswählen
0x00.

Konfigurationsregister auswählen
0x01.

Die Kompositionsadresse des TC74 beträgt 0x9a und die überprüfte Adresse 0x9b. Es hat zwei, ein-Byte-Register. Registeradresse 0 Hält die Temperaturanzeige, Register 1 Hält die Konfigurationseinstellungen.

Konfigurationsregister

Bit 6 des Konfigurationsregisters ist 0 beim Einschalten und Modifikationen an 1, wenn der erste gültige Temperaturwert verfügbar ist. Bit 7 ist beschreibbar und legt den TC74 in einen Energiespar-Standby-Modus. Das Lesen des Registers enthält zwei Schritte: Verwenden Sie einen Partial Compose-Befehl, um das Register auszuwählen, und nutzen Sie den Befehl CHECKED OUT, um den Wert abzurufen.

I2c> {0x9a 1}
210 I2C beginnen den Zustand
220 i2c Write: 0x9a hat ACK: In der Tat <-Write Adresse 220 I2C schreiben: 0x01 wurde ACK: Tat <-select config Registrieren 240 I2C-Stopp-Bedingung Erstens wählen wir das Konfigurationsregister mit einem Teilkompositionsbefehl aus. Dies komponiert eigentlich keinen Wert, es wählt das Register aus, das Sie ausgecheckt aktivieren, und schreiben. {erzeugt den I2C-Beginn, der von der TC74-Adresse (0x9a) und dem Befehl "Konfigurationsregister" (0x01) entspricht. } Probleme der I2C-Stopp-Bedingung und beendet die Transaktion. Jetzt können wir den Inhalt des Registers überprüft. I2c> {0x9b R}
210 I2C beginnen den Zustand
220 i2c schreibe: 0x9b hat ACK: Tatsächlich <-Read Adresse 230 i2c Lesen: 0x40 <- Register-Wert (01000000) 240 I2C-Stopp-Bedingung I2c >.

Die geprüfte Adresse (0x9b) gibt den ein Byte-Registerwert (R) zurück. Der Konfigurationsregisterwert, 0x40 oder 01000000 zeigt, dass das Gerät außerhalb des Standby-Modus (Bit 7 = 0) ist, und ein gültiger Temperaturanzeige ist verfügbar (Bit 6 = 1).

Der TC74 hat einen Standby-Modus mit niedrigem Leistung. Aktivieren Sie es, indem Sie 1 bis Bit 7 des Konfigurationsregisters zusammenstellen.

I2c> {0x9a 1 0B10000000}
210 I2C beginnen den Zustand
220 i2c Write: 0x9a hat ACK: In der Tat <-Write Adresse 220 I2C schreiben: 0x01 wurde ACK: Tat <-select config Registrieren 220 I2C Write: 0x80 Erhalten ACK: Tatsächlich <-Value Compose (01000000) 240 I2C-Stopp-Bedingung I2c >.

Das Register wird mit einem einzelnen Dreibyte-Befehl geschrieben. Zuerst senden wir die Kompositionsadresse (0x9a), die vom Register eingehalten werden, um (0x01) zu wählen, und schließlich den Wert, der (0x80) komponiert. Nur Bit 7 des Konfigurationsregisters ist beschreibbar, die Werte von Bits 6-0 werden ignoriert.

Lesen Sie das Register erneut, um zu bestätigen, dass der Befehl funktioniert.

I2c> {0x9a 1} {0x9b R}
210 I2C Beginnen Sie den Zustand <-First-Befehls-Sets Registrieren 220 i2c Write: 0x9a hat ACK: In der Tat <-Write Adresse 220 i2c Write: 0x01 Erhalten ACK: Tatsächlich <-config Registrieren (1) 240 I2C-Stopp-Bedingung <-END Erster Befehl 210 I2C Beginnen Sie den Zustand des Zustands <-Begin 220 i2c schreibe: 0x9b hat ACK: Tatsächlich <-Read Adresse 230 I2C Lesen: 0x80 <- Register-Wert (10000000) 240 I2C-Stopp-Bedingung <-END-Command I2c >.

Der Registerwert, 10000000, zeigt nun, dass sich das Gerät im Standby-Modus befindet (Bit 7 = 1). Beachten Sie, dass Bit 6 jetzt 0 ist, keine Temperaturdaten verfügbar sind.

Klares Bit 7, um den Standby-Modus zu verlassen, und warten Sie auf Bit 6, um zu 1 zurückzukehren, bevor Sie das Temperaturregister lesen.

I2c> {0x9a 1 0B00000000}
210 I2C beginnen den Zustand
220 i2c Write: 0x9a hat ACK: In der Tat <-Write Adresse 220 i2c schreiben: 0x01 Erhaltene ACK: Ja <-select config Registrieren 220 i2c schreiben: 0x00 wurde ACK: Ja <-Value komponieren (00000000) 240 I2C-Stopp-Bedingung I2c >.

Temperaturdaten werden vorbereitet, wenn der Konfigurationsregisterwert auf 0x40 (01000000) zurückgibt.

Temperatur

Das Temperaturregister wird in zwei Schritten überprüft. Zunächst wählt ein Partial Compose-Befehl das Temperaturregister (0) aus, dann gibt eine geprüfte Out-Sequenz den Inhalt zurück.

I2c> {0x9a 0} {0x9b R}
210 I2C beginnen den Zustand
220 i2c Write: 0x9a hat ACK: In der Tat <-Write Adresse 220 i2c schreibe: 0x00 wurde acktTemperaturregister 240 I2C-Stopp-Bedingung 210 I2C beginnen den Zustand 220 i2c schreibe: 0x9b hat ACK: Tatsächlich <-Read Adresse 230 i2c Lesen Sie: 0x18 <-Grab Ein Byte 240 I2C-Stopp-Bedingung I2c >.

Die Temperatur ist ein ganzzahliger Wert von Grad Celsius, negative Zahlen sind als zweit ergänzend dargestellt. Positive Werte von 0 bis 127 Grad Celsius werden nur durch diesen Wert dargestellt. Negative Temperaturen haben Bit 7 eingestellt, und Sorte von -1 bis -65 (255-128), siehe Tabelle 4.4 auf Seite 8 des Datenblatts. Der hexadezimale Wert 0x18 ist gleich 24 in der Dezimalzahl, so dass der Temperaturwert 24c (75f) ist.

Wie dieser Beitrag? Inspizieren Sie die Teile, die Sie möglicherweise verpasst haben.

Back to top