零件:I2C數字溫度計(TC74)
Microchip的TC74是具有基本I2C接口的實惠的數字溫度傳感器。它的分辨率為1度攝氏度,各種-40至+125度。這是一種簡單的方法,可以在沒有模數轉換器的情況下向作業添加溫度測量。我們將向您展示如何利用下面的TC74。
Microchip TC74數字溫度傳感器(八達河搜索,從0.88美元開始)
TC74有五個引腳通孔和表面貼裝封裝,請參閱TC74數據表(PDF)。如果您知道,我們無法找到任何版本的Cadsoft Eagle足跡,如果您知道請在評論中鏈接到它。
不同版本的TC74校準某些電壓,但所有工作從2.7-5Volts。我們使用的TC74A5在5 volts運行時是很多準確的,但我們從3.3伏電源供電。 I2C連接需要2個上拉電阻以保持總線高(R1,R2),2K-10K必須工作。 C1是0.1UF去耦電容器。
我們利用I2C模式中的總線海盜通用串行接口進行測試驅動器TC74,但完全相同的原則適用於任何微控制器。我們從總線海盜的3.3伏電源供電,採用了載板上拉電阻來保持I2C總線。
命令
價值
選擇溫度寄存器
0x00.
選擇配置寄存器
0x01
TC74的撰寫地址為0x9a,並簽出的地址0x9b。它有兩個,一個字節寄存器。寄存器地址0保持溫度讀數,寄存器1保持配置設置。
配置寄存器
配置寄存器的位6在上電時為0,並且當第一次有效溫度讀數可用時對1的修改。位7是可寫的,並將TC74放在省電待機模式中。讀取寄存器包含兩個步驟:使用部分Compose命令選擇寄存器,然後使用已選中的命令來檢索該值。
I2C> {0x9A 1}
210 I2C開始情況
220 i2c寫:0x9a get ack:確實< - 寫道地址
220 I2C寫入:0x01 GOT ACK:確實<-Select配置寄存器
240 i2c停止條件
首先,我們使用Partial Compose命令選擇配置寄存器。這實際上並不構成一個值,它選擇寄存器簽出和寫入。 {生成I2C開始情況,符合TC74撰寫地址(0x9a)和選擇寄存器命令(0x01)。問題I2C停止條件並結束事務。
現在我們可以檢查註冊的內容。
i2c> {0x9b r}
210 I2C開始情況
220 I2C寫入:0x9B GOT ACK:確實<-read地址
230 I2C讀取:0x40 < - 寄存器值(01000000)
240 i2c停止條件
I2C>
簽出的地址(0x9b)返回一個字節寄存器值(r)。配置寄存器值0x40或01000000表示設備超出待機(位7 = 0),並且可用有效的溫度讀數(第6位6 = 1)。
TC74具有低功耗待機模式。通過構思配置寄存器的1到位7來啟用它。
I2C> {0x9a 1 0b10000000}
210 I2C開始情況
220 i2c寫:0x9a get ack:確實< - 寫道地址
220 I2C寫入:0x01 GOT ACK:確實<-Select配置寄存器
220 I2C寫入:0x80 GOT ACK:確實<-Value撰寫(01000000)
240 i2c停止條件
I2C>
寄存器用單個三字節命令寫入。首先,我們發送撰寫地址(0x9a),遵守寄存器來選擇(0x01),最後是要撰寫的值(0x80)。只有配置寄存器的位7可寫,忽略位6-0的值。
再次讀取寄存器以確認命令工作。
i2c> {0x9a 1} {0x9b r}
210 I2C開始條件<-First命令集寄存器
220 i2c寫:0x9a get ack:確實< - 寫道地址
220 I2C寫入:0x01 GOT ACK:確實<-Config寄存器(1)
240 i2c停止條件<-und first命令
210 I2C開始條件<-BEGIN第二命令
220 I2C寫入:0x9B GOT ACK:確實<-read地址
230 I2C讀取:0x80 < - 寄存器值(10000000)
240 i2c停止條件<-und第二命令
I2C>
寄存器值10000000現在顯示設備處於待機狀態(第7位7 = 1)。請注意,位6現在為0,沒有溫度數據。
清除位7退出待機,然後在位6上等待在讀取溫度寄存器之前返回1。
I2C> {0x9a 1 0b00000000}
210 I2C開始情況
220 i2c寫:0x9a get ack:確實< - 寫道地址
220 I2C寫入:0x01 GOT ACK:是<-Select配置寄存器
220 I2C寫入:0x00 GOT ACK:是<-Value撰寫(00000000)
240 i2c停止條件
I2C>
當配置寄存器值返回0x40(01000000)時,準備溫度數據。
溫度
溫度寄存器分兩步檢查。首先,部分Compose命令選擇溫度寄存器(0),然後簽出序列返回內容。
I2C> {0x9a 0} {0x9b r}
210 I2C開始情況
220 i2c寫:0x9a get ack:確實< - 寫道地址
220 I2C寫入:0x00 GOT ACK:確實<-Select溫度寄存器
240 I2C停止條件
210 I2C開始情況
220 I2C寫入:0x9B GOT ACK:確實<-read地址
230 I2C讀取:0x18 <-GRAB一個字節
240 i2c停止條件
I2C>
溫度是攝氏度的整數值,負數表示為TWOS補充。 從0到127攝氏度的正值恰好由該值表示。 負溫度有位7套,且源於-1至-65(255-128),請參見數據表第8頁的表4.4。 十六進制值0x18等於十進制的24,因此溫度讀數為24℃(75F)。
喜歡這篇文章? 檢查您可能錯過的零件文章。