RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何利用樹(shù)莓派讀取溫度傳感器MCP9808的數(shù)據(jù)呢?

得捷電子DigiKey ? 來(lái)源:得捷電子DigiKey ? 2023-12-28 09:24 ? 次閱讀

問(wèn):使用Raspberry Pi 從 MCP9808讀取溫度數(shù)據(jù)

MCP9808是一款溫度傳感器,采用I2C通信標(biāo)準(zhǔn)來(lái)傳輸連續(xù)輪詢(xún)溫度。它支持報(bào)警功能和待機(jī)模式,以便在需要時(shí)節(jié)省電力。在本說(shuō)明文檔中,我們將執(zhí)行幾個(gè)python命令來(lái)獲取傳感器的溫度。

MCP9808上的I2C

Microchip將0x18用作此板上的主地址,借助芯片上的3個(gè)引腳來(lái)更改I2C地址沖突時(shí)的地址。當(dāng)調(diào)用傳感器中的任何寄存器時(shí),該板應(yīng)寫(xiě)入或獲得雙字節(jié)響應(yīng)(MSB優(yōu)先,LSB最后)。我使用的是Adafruit的分線板[1528-1032-ND],其中已經(jīng)包含一些正偏電阻。

需注意的寄存器:

0x010000000X00011111這里的X是配置中的備用位,默認(rèn)為0,此為連續(xù)輪詢(xún)模式。溫度寄存器會(huì)不斷更新,但存在功耗問(wèn)題。將此位設(shè)為1將停止輪詢(xún)并節(jié)省功耗。

0x05AAASMMMMLLLLLLLL該寄存器包含12位浮點(diǎn)溫度,其中“A”為報(bào)警信息,“S”為符號(hào)位,“M”和“L”分別代表MSB和LSB。最終輸出將顯示為MMMMLLLL.LLLL。

請(qǐng)注意,在本說(shuō)明中,我沒(méi)有設(shè)置符號(hào)位和報(bào)警位,但如果你希望測(cè)量零下溫度,則需要進(jìn)行設(shè)置。

在Raspberry PI上的實(shí)現(xiàn):

a39961e4-a4b0-11ee-8b88-92fbcf53809c.png

使用Raspberry Pi與I2C接口相連的好處在于Python終端的交互性。我使用的是在Raspbian發(fā)行版上啟用了I2C的Raspberry Pi 4。確保你的GPIO支持3V3、GND、SDA并且SCL支持MCP9808上的正確引腳。在Raspbian中打開(kāi)終端并執(zhí)行以下三個(gè)命令:

python
from smbus import SMBus
bus = SMBus(1)

該命令將創(chuàng)建一個(gè)待連接的總線對(duì)象,該對(duì)象將反過(guò)來(lái)收集我們請(qǐng)求的I2C數(shù)據(jù)。接下來(lái),向芯片詢(xún)問(wèn)它的溫度數(shù)據(jù):

temp_binary =format(bus.read_word_data(0x18, 0x05),‘016b’)

該bus.read_byte_data(Address, Register)將從傳感器檢索數(shù)據(jù),我們使用封閉的format()函數(shù)將信息讀取為二進(jìn)制數(shù),這樣是為了使提取這兩個(gè)字節(jié)變得簡(jiǎn)單。Python通常喜歡使用int或float,但這會(huì)造成妨礙,因?yàn)闀?huì)由多個(gè)字節(jié)返回值。我們將按照[0:8][8:16]順序?qū)⑵渚幹?a target="_blank">索引,而MSB位于數(shù)組的后半部分。

a3be9ad6-a4b0-11ee-8b88-92fbcf53809c.png

計(jì)算輸出:

我們可以利用以下函數(shù)來(lái)正確地獲取輸出值

defword_To_LSB_MSB(word):
return word[0:8], word[12 :16] // note that word indices [8,9,10,11] are notused in this example.

請(qǐng)查看下圖,了解我們所需的輸出。

a3dbd8b2-a4b0-11ee-8b88-92fbcf53809c.png

最后,將這二者結(jié)合在一起,再加上一些浮點(diǎn)運(yùn)算即可。

LSB, MSB =word_To_LSB_MSB(temp_binary)
float(int(MSB + LSB,2)) / 16

a3f5ed42-a4b0-11ee-8b88-92fbcf53809c.png

除以16可將結(jié)果轉(zhuǎn)為MMMMLLLL.LLLL,并獲得十進(jìn)制精度。注意,返回的結(jié)果應(yīng)以攝氏為單位。在上圖所示的情況下,我們從二進(jìn)制浮動(dòng)數(shù)00010111.0101計(jì)算出的溫度是23.3125攝氏度。

完成后進(jìn)入省電模式:

如果你希望在完成操作后關(guān)閉器件,只需將待機(jī)位設(shè)置為省電模式:

bus.write_byte_data(0x18,0x01,0b00000001)

由于只需更改MCP9809配置寄存器中的MSB,所以我們寫(xiě)入一個(gè)字節(jié),不過(guò)我們將字符縮短了,因此不會(huì)更改寄存器中的LSB。

要使MCP9808恢復(fù)到完全工作功能狀態(tài),必須使傳感器獲得動(dòng)力循環(huán)或使用寄存器的零刷新模式。

Microchip的規(guī)格書(shū)在此傳感器的應(yīng)用中仍然非常有用,如果你要使用MCP9808,請(qǐng)務(wù)必定期查詢(xún)。注意,本文未涉及此傳感器的一些重要功能,例如中斷、負(fù)溫度的符號(hào)位和待機(jī)工作。

使用的項(xiàng):

Raspberry Pi:1690-RASPBERRYPI4B/4GB-ND

母頭到公頭的面包板線:1568-1511-ND

用于MCP9808的Adafruit分線板:1528-1032-ND






審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 溫度傳感器
    +關(guān)注

    關(guān)注

    48

    文章

    2940

    瀏覽量

    156015
  • python
    +關(guān)注

    關(guān)注

    56

    文章

    4792

    瀏覽量

    84627
  • 樹(shù)莓派
    +關(guān)注

    關(guān)注

    116

    文章

    1706

    瀏覽量

    105607
  • MSB
    MSB
    +關(guān)注

    關(guān)注

    0

    文章

    13

    瀏覽量

    8258
  • MCP
    MCP
    +關(guān)注

    關(guān)注

    0

    文章

    254

    瀏覽量

    13900

原文標(biāo)題:攻略來(lái)了:用樹(shù)莓派讀取溫度傳感器MCP9808的數(shù)據(jù)

文章出處:【微信號(hào):得捷電子DigiKey,微信公眾號(hào):得捷電子DigiKey】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    樹(shù)莓通過(guò)java語(yǔ)言通過(guò)DHT11讀取環(huán)境溫濕度

    基于java云平臺(tái),在樹(shù)莓+dth11傳感器下,遠(yuǎn)程讀取溫濕度數(shù)據(jù)。
    的頭像 發(fā)表于 05-16 15:16 ?5390次閱讀
    <b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>通過(guò)java語(yǔ)言通過(guò)DHT11<b class='flag-5'>讀取</b>環(huán)境溫濕度

    如何將溫度傳感器DS18B20與樹(shù)莓連接

    在本教程中,我們將學(xué)習(xí)將溫度傳感器DS18B20與樹(shù)莓連接。
    的頭像 發(fā)表于 11-08 16:44 ?9059次閱讀
    如何將<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>DS18B20與<b class='flag-5'>樹(shù)莓</b><b class='flag-5'>派</b>連接

    使用樹(shù)莓Pico的RP2040微控制內(nèi)置溫度傳感器

    樹(shù)莓 Pico 的 RP2040 微控制內(nèi)置了溫度傳感器,它可以通過(guò)第四個(gè)模擬數(shù)字轉(zhuǎn)換通道
    的頭像 發(fā)表于 09-11 10:14 ?1963次閱讀

    樹(shù)莓3通過(guò)串口連接溫度傳感器求助?。。?/a>

    實(shí)驗(yàn):將溫度傳感器VCCGND RXD TXD連接到樹(shù)莓派上面的VCCGND TXD RXD, 通過(guò)Python編寫(xiě)的程序無(wú)法讀取溫度,
    發(fā)表于 10-03 22:07

    樹(shù)莓 怎么讀取串口數(shù)據(jù)

    各路大神們,請(qǐng)問(wèn)一下,樹(shù)莓怎么讀取傳感器的端口數(shù)據(jù)啊,用的是Python語(yǔ)言
    發(fā)表于 03-29 14:51

    如何開(kāi)發(fā)MCP9808溫度傳感器代碼?

    你好,我試過(guò)幾種方法來(lái)開(kāi)發(fā)一個(gè)MCP9808溫度傳感器的代碼,我有一個(gè)PIC 18 Pics的工作代碼,所以我認(rèn)為這對(duì)aPIC32來(lái)說(shuō)沒(méi)什么大不了的,但它確實(shí)如此。在我發(fā)送0x05讀取
    發(fā)表于 08-07 13:20

    MCP9808溫度數(shù)據(jù)顯示在終端所需的轉(zhuǎn)換例程

    你好!我目前與MCP9808通訊并讀取溫度。我把溫度數(shù)據(jù)放入一個(gè)8位的名為T(mén)emperature的變量中。我想把溫度數(shù)據(jù)(8位值)顯示給終端
    發(fā)表于 03-12 13:59

    在Uno、Mega、ESP8266和ESP32上運(yùn)行各種溫度傳感器,哪個(gè)溫度傳感器給出真實(shí)(實(shí)際)值?

    )、BME280 (3x)、TSYS01 (1x)、MCP9808 (1x),數(shù)據(jù)記錄在 ThingsSpeak。傳感器安裝在室外,彼此靠近并防止日曬雨淋。附近沒(méi)有熱源或其他來(lái)源。傳感器
    發(fā)表于 05-25 09:14

    MCP9808最大精度的數(shù)字溫度傳感器

    Microchip Technology Inc.’s MCP9808 digital temperature sensor converts temperatures between -20°C
    發(fā)表于 09-28 15:59 ?13次下載
    <b class='flag-5'>MCP9808</b>最大精度的數(shù)字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>

    樹(shù)莓傳感器教程資料下載

    樹(shù)莓傳感器
    發(fā)表于 05-07 15:20 ?32次下載

    Microchip溫度傳感器系列產(chǎn)品

    Microchip是業(yè)界能提供最豐富溫度傳感器產(chǎn)品的供應(yīng)商之一。本視頻就Microchip各類(lèi)溫度傳感器,著重介紹了 1)邏輯輸出系列—MCP
    的頭像 發(fā)表于 06-07 13:46 ?5058次閱讀
    Microchip<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>系列產(chǎn)品

    基于MCP9808帶有±0.5°C 最高精度數(shù)字溫度傳感器

    Microchip Technology Inc. 的 MCP9808 數(shù)字溫度傳感器 可將-20°C和+100°C之間的溫度轉(zhuǎn)換為±0.25°C/±0.5°C (典型值 / 最大
    發(fā)表于 06-28 09:23 ?24次下載
    基于<b class='flag-5'>MCP9808</b>帶有±0.5°C 最高精度數(shù)字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>

    高精度數(shù)字溫度傳感器的工作原理說(shuō)明

    著名開(kāi)源硬件商DFRobot新推出使用廣泛的Fermion:MCP9808高精度數(shù)字溫度傳感器。它可檢測(cè)-40°C和+125°C之間的溫度,提供±0.25°C/±0.5°C(典型值 /
    的頭像 發(fā)表于 03-17 16:10 ?4077次閱讀
    高精度數(shù)字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>的工作原理說(shuō)明

    樹(shù)莓 Pico內(nèi)置溫度傳感器的應(yīng)用

    樹(shù)莓 Pico 的 RP2040 微控制內(nèi)置了溫度傳感器,它可以通過(guò)第四個(gè)模擬數(shù)字轉(zhuǎn)換通道
    發(fā)表于 09-11 10:14 ?847次閱讀

    樹(shù)莓傳感器使用方法 樹(shù)莓 Raspberry Pi 4優(yōu)缺點(diǎn)

    開(kāi)發(fā)和物聯(lián)網(wǎng)應(yīng)用。以下是一些基本的樹(shù)莓傳感器使用方法: 1. 連接傳感器 GPIO引腳 :樹(shù)莓
    的頭像 發(fā)表于 12-06 10:35 ?342次閱讀
    RM新时代网站-首页