亚洲精品久久久久久久久久久,亚洲国产精品一区二区制服,亚洲精品午夜精品,国产成人精品综合在线观看,最近2019中文字幕一页二页

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

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

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

CW32模塊使用 DS18B20溫度傳感器

CW32生態(tài)社區(qū) ? 來(lái)源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2024-11-26 17:47 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

DS18B20數(shù)字溫度傳感器提供9位至12位精度的溫度測(cè)量,并具有非易失性用戶(hù)可編程上下觸發(fā)點(diǎn)報(bào)警功能。DS18B20通過(guò)單總線通信,根據(jù)定義,只需要一條數(shù)據(jù)線(和地線)即可與單片機(jī)通信。此外,DS18B20可以直接從數(shù)據(jù)線獲得電源(“寄生電源”),消除了每個(gè)DS18B20都有一個(gè)唯一的64位串行代碼,這允許多個(gè)DS18B20在同一條總線上工作。因此,使用一個(gè)微處理器來(lái)實(shí)現(xiàn)是很簡(jiǎn)單的。

控制分布在大面積上的許多ds18b20。可以從此功能中受益的應(yīng)用包括HVAC環(huán)境控制,建筑物,設(shè)備或機(jī)械內(nèi)部的溫度監(jiān)測(cè)系統(tǒng)以及過(guò)程監(jiān)測(cè)和控制系統(tǒng)。

1、模塊來(lái)源

模塊實(shí)物展示:

wKgZO2dFmReAH7XGAAA_DkdnFNs959.jpg


資料下載鏈接:
https://pan.baidu.com/s/1L83uG8So6k1NG_QznraoFQ

2 、規(guī)格參數(shù)

工作電壓:3-5.5V

工作電流:750nA~1.5mA

測(cè)量分辨率:9位到12位可編程分辨率

溫度量程: -55 ~ +125 ℃

測(cè)量精度:±0.5 ℃

通信協(xié)議:?jiǎn)慰偩€

管腳數(shù)量:3 Pin(2.54mm間距排針

以上信息見(jiàn)廠家資料文件

3、移植過(guò)程

我們的目標(biāo)是將例程移植至CW32F030C8T6開(kāi)發(fā)板上【實(shí)現(xiàn)讀取溫度的功能】。首先要獲取資料,查看數(shù)據(jù)手冊(cè)應(yīng)如何實(shí)現(xiàn)讀取數(shù)據(jù),再移植至我們的工程。

3.1查看資料

時(shí)序說(shuō)明

初始化:

將總線拉低,保存低電平至少480us。

轉(zhuǎn)為輸入模式,總線被上拉電阻拉高大約15~60us。

如果初始化成功則會(huì)產(chǎn)生一個(gè)由DS18B20所返回的低電平“0”,持續(xù)時(shí)間大約60~240us。

DS18B20釋放總線,將總線拉高。

wKgZPGdFmRiAFwmKAABJ9Kyu438479.jpg

讀時(shí)序:

將數(shù)據(jù)線拉低至少1us。

將數(shù)據(jù)線轉(zhuǎn)為輸入模式,DS18B20開(kāi)始采集數(shù)據(jù),大約15us。

18B20要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。

注意:所有讀時(shí)隙必須至少需要60us,且在兩次獨(dú)立的時(shí)隙之間至少需要1us的恢復(fù)時(shí)間。

wKgZO2dFmRiALbzsAABGNiPwtYE227.jpg

寫(xiě)時(shí)序:

數(shù)據(jù)線先置低電平“0”,延時(shí)15us。

按從低位到高位的順序發(fā)送數(shù)據(jù)(一次只發(fā)送一位)。

延時(shí)60us。

拉高數(shù)據(jù)線“1”。

穿越火線1~4步驟,直到發(fā)送完整的字節(jié)。

拉高數(shù)據(jù)線,釋放總線。

wKgZPGdFmRmAR4_VAABKwK7-9GM821.jpg

寄存器說(shuō)明

0xCC

主機(jī)可以使用此命令同時(shí)對(duì)總線上的所有設(shè)備進(jìn)行尋址,而無(wú)需發(fā)送其他的任何地址。 DS18B20通過(guò)發(fā)出0XCC命令,然后是溫度轉(zhuǎn)換命令[44h]來(lái)執(zhí)行同步溫度轉(zhuǎn)換。注意,只有在總線上有一個(gè)從設(shè)備時(shí),Read Scratchpad [BEh]命令才能跟隨Skip ROM命令。在這種情況下,通過(guò)允許主服務(wù)器從從服務(wù)器讀取而不發(fā)送設(shè)備的64位ROM代碼可以節(jié)省時(shí)間。如果總線上有多個(gè)從設(shè)備,那么Skip ROM命令后跟Read Scratchpad命令將導(dǎo)致數(shù)據(jù)沖突,因?yàn)槎鄠€(gè)設(shè)備將嘗試傳輸數(shù)據(jù)同時(shí)進(jìn)行。

0x44

該命令為啟動(dòng)單次溫度轉(zhuǎn)換。轉(zhuǎn)換后,產(chǎn)生的溫度數(shù)據(jù)存儲(chǔ)在地址為【BEh】的2字節(jié)溫度寄存器中。

0xBE

該命令允許主機(jī)讀取溫度寄存器上的內(nèi)容。數(shù)據(jù)傳輸從低位開(kāi)始,直到讀取第9個(gè)字節(jié)(bit8=CRC)。如果只需要溫度數(shù)據(jù),主機(jī)可以在任何時(shí)候發(fā)出復(fù)位以終止讀取。

溫度換算

溫度傳感器的分辨率我們可配置為9、10、11或12位,分別對(duì)應(yīng)于0.5°C、0.25°C、 0.125°C和0.0625°C的增量。開(kāi)機(jī)時(shí)的默認(rèn)分辨率是12位。我們不進(jìn)行修改,因?yàn)榉直媛试礁呔驮骄珳?zhǔn)。

wKgZO2dFmRmAboUbAABb3ibN6zQ205.jpg

例如數(shù)據(jù)手冊(cè)中的示例,如當(dāng)前當(dāng)前的溫度是+25.0625℃,寄存器讀出的高8位數(shù)據(jù)為0000 0001,低8位數(shù)據(jù)為1001 0001。將其整合得到16位數(shù)據(jù):0000 0001 1001 0001。再轉(zhuǎn)換為10進(jìn)制數(shù)據(jù)為401。將讀取到的數(shù)據(jù)乘以分辨率即可得到實(shí)際溫度。

401 * 0.0625 = 25.0625℃

3.2引腳選擇

該模塊有3個(gè)引腳,具體引腳連接見(jiàn)各引腳連接。

wKgZPGdFmRqAMK0GAAE5RgdTg3k517.jpg

模塊接線圖

3.3移植至工程

工程模板參考入門(mén)手冊(cè)的工程模板

移植步驟中的導(dǎo)入.c和.h文件與【CW32模塊使用】DHT11溫濕度傳感器相同,只是將.c和.h文件更改為bsp_ds18b20.c與bsp_ds18b20.h。這里不再過(guò)多講述,移植完成后面修改相關(guān)代碼。

在文件bsp_ds18b20.c中,編寫(xiě)如下代碼。

/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "bsp_ds18b20.h" #include "stdio.h" /****************************************************************** * 函 數(shù) 名 稱(chēng):bsp_ds18b20_GPIO_Init * 函 數(shù) 說(shuō) 明:MLX90614的引腳初始化 * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:1未檢測(cè)到器件 0檢測(cè)到器件 * 作 者:LC * 備 注:無(wú) ******************************************************************/ char DS18B20_GPIO_Init(void) { unsigned char ret = 255; GPIO_InitTypeDef GPIO_InitStruct; // GPIO初始化結(jié)構(gòu)體 RCC_DQ_ENABLE(); // 使能GPIO時(shí)鐘 GPIO_InitStruct.Pins = GPIO_DQ; // GPIO引腳 GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; // 推挽輸出 GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; // 輸出速度高 GPIO_Init(PORT_DQ, &GPIO_InitStruct); // 初始化 ret = DS18B20_Check();//檢測(cè)器件是否存在 return ret; } /****************************************************************** * 函 數(shù) 名 稱(chēng):DS18B20_Read_Byte * 函 數(shù) 說(shuō) 明:從DS18B20讀取一個(gè)字節(jié) * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:讀取到的字節(jié)數(shù)據(jù) * 作 者:LC * 備 注:無(wú) ******************************************************************/ uint8_t DS18B20_Read_Byte(void) { uint8_t i=0,dat=0; for (i=0;i>=1; if( DQ_GET() ) { dat=dat|0x80; } delay_us(50); } return dat; } /****************************************************************** * 函 數(shù) 名 稱(chēng):DS18B20_Write_Byte * 函 數(shù) 說(shuō) 明:寫(xiě)一個(gè)字節(jié)到DS18B20 * 函 數(shù) 形 參:dat:要寫(xiě)入的字節(jié) * 函 數(shù) 返 回:無(wú) * 作 者:LC * 備 注:無(wú) ******************************************************************/ void DS18B20_Write_Byte(uint8_t dat) { uint8_t i; DQ_OUT();//設(shè)置輸出模式 for (i=0;i>1;//傳輸下一位 } } /****************************************************************** * 函 數(shù) 名 稱(chēng):DS18B20_Check * 函 數(shù) 說(shuō) 明:檢測(cè)DS18B20是否存在 * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:1:未檢測(cè)到DS18B20的存在 0:存在 * 作 者:LC * 備 注:無(wú) ******************************************************************/ uint8_t DS18B20_Check(void) { uint8_t timeout=0; //復(fù)位DS18B20 DQ_OUT(); //設(shè)置為輸出模式 DQ(0); //拉低DQ delay_us(750); //拉低750us DQ(1); //拉高DQ delay_us(15); //15us //設(shè)置為輸入模式 DQ_IN(); //等待拉低,拉低說(shuō)明有應(yīng)答 while ( DQ_GET() &&timeout=200) return 1; else timeout=0; //等待18B20釋放總線 while ( !DQ_GET() &&timeout=240) return 1; return 0; } /****************************************************************** * 函 數(shù) 名 稱(chēng):DS18B20_Start * 函 數(shù) 說(shuō) 明:DS18B20開(kāi)始溫度轉(zhuǎn)換 * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:無(wú) * 作 者:LC * 備 注:無(wú) ******************************************************************/ void DS18B20_Start(void) { DS18B20_Check(); //查詢(xún)是否有設(shè)備應(yīng)答 DS18B20_Write_Byte(0xcc); //對(duì)總線上所有設(shè)備進(jìn)行尋址 DS18B20_Write_Byte(0x44); //啟動(dòng)溫度轉(zhuǎn)換 } /****************************************************************** * 函 數(shù) 名 稱(chēng):DS18B20_GetTemperture * 函 數(shù) 說(shuō) 明:從ds18b20得到溫度值 * 函 數(shù) 形 參:無(wú) * 函 數(shù) 返 回:溫度數(shù)據(jù) * 作 者:LC * 備 注:無(wú) ******************************************************************/ float DS18B20_GetTemperture(void) { uint16_t temp; uint8_t dataL=0,dataH=0; float value; DS18B20_Start(); DS18B20_Check(); DS18B20_Write_Byte(0xcc);//對(duì)總線上所有設(shè)備進(jìn)行尋址 DS18B20_Write_Byte(0xbe);// 讀取數(shù)據(jù)命令 dataL=DS18B20_Read_Byte(); //LSB dataH=DS18B20_Read_Byte(); //MSB temp=(dataH

在文件bsp_ds18b20.h中,編寫(xiě)如下代碼。

/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #ifndef _BSP_DS18B20_H_ #define _BSP_DS18B20_H_ #include "board.h" //端口移植 #define RCC_DQ_ENABLE() __RCC_GPIOB_CLK_ENABLE() #define PORT_DQ CW_GPIOB #define GPIO_DQ GPIO_PIN_0 //設(shè)置DQ輸出模式 #define DQ_OUT() { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pins = GPIO_DQ; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_Init(PORT_DQ, &GPIO_InitStruct); } //設(shè)置DQ輸入模式 #define DQ_IN() { GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pins = GPIO_DQ; GPIO_InitStruct.Mode = GPIO_MODE_INPUT_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; GPIO_Init(PORT_DQ, &GPIO_InitStruct); } //獲取DQ引腳的電平變化 #define DQ_GET() GPIO_ReadPin(PORT_DQ, GPIO_DQ) //DQ輸出 #define DQ(x) GPIO_WritePin(PORT_DQ, GPIO_DQ, (x?GPIO_Pin_SET:GPIO_Pin_RESET)) void DS18B20_Reset(void); uint8_t DS18B20_Check(void); char DS18B20_GPIO_Init(void); void DS18B20_Start(void); float DS18B20_GetTemperture(void); #endif

4、移植驗(yàn)證

在自己工程中的main主函數(shù)中,編寫(xiě)如下。

/* * Change Logs: * Date Author Notes * 2024-06-20 LCKFB-LP first version */ #include "board.h" #include "stdio.h" #include "bsp_uart.h" #include "bsp_ds18b20.h" int32_t main(void) { board_init(); // 開(kāi)發(fā)板初始化 uart1_init(115200); // 串口1波特率115200 DS18B20_GPIO_Init(); while(1) { printf("溫度 = %.2frnn", DS18B20_GetTemperture() ); delay_ms(1000); } }

上電現(xiàn)象(手心溫度36度、37度左右):

wKgZO2dFmRqAOWn5AADjZjM5bfI786.jpg

模塊移植成功案例代碼:

鏈接:https://pan.baidu.com/s/1FHARC1eodVU-O3N6vxbfAw?pwd=LCKF

提取碼:LCKF

審核編輯 黃宇

聲明:本文內(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

    文章

    3078

    瀏覽量

    162098
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    278

    瀏覽量

    1625
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    單片機(jī)實(shí)例項(xiàng)目:DS18B20溫度傳感器

    單片機(jī)實(shí)例項(xiàng)目:DS18B20溫度傳感器,推薦下載!
    發(fā)表于 06-03 20:59

    傳感器有哪些類(lèi)型?有哪些接口?

    傳感器的類(lèi)型和接口種類(lèi)繁多,以下是一些常見(jiàn)的分類(lèi)和接口方式: 傳感器類(lèi)型 溫度傳感器:用于測(cè)量溫度,常見(jiàn)的有熱電偶、熱電阻、數(shù)字
    的頭像 發(fā)表于 05-22 09:33 ?8062次閱讀

    最佳實(shí)踐指南:Air780EPM的LuatOS二次開(kāi)發(fā)——OneWire協(xié)議調(diào)試的注意事項(xiàng)

    在物聯(lián)網(wǎng)設(shè)備開(kāi)發(fā)中,精準(zhǔn)且穩(wěn)定的數(shù)據(jù)傳輸是構(gòu)建智能系統(tǒng)的核心。 一、LuatOS 及 OneWire 說(shuō)明 ? LuatOS 支持 OneWire 通信協(xié)議,本文以 DS18B20 溫度傳感器
    的頭像 發(fā)表于 03-17 16:57 ?511次閱讀
    最佳實(shí)踐指南:Air780EPM的LuatOS二次開(kāi)發(fā)——OneWire協(xié)議調(diào)試的注意事項(xiàng)

    基于FPGA的DS18B20數(shù)字溫度傳感器測(cè)溫實(shí)例

    本文將使用三段式狀態(tài)機(jī)(Moore型)的寫(xiě)法來(lái)對(duì)DS18B20進(jìn)行測(cè)溫操作,以便了解DS18B20和熟悉三段式狀態(tài)機(jī)的寫(xiě)法。
    的頭像 發(fā)表于 03-17 11:06 ?1968次閱讀
    基于FPGA的<b class='flag-5'>DS18B20</b>數(shù)字<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>測(cè)溫實(shí)例

    DS18B20實(shí)時(shí)溫度傳感器中文資料

    DS18B20 是一種單總線數(shù)字溫度傳感器,它被廣泛應(yīng)用于各種領(lǐng)域,例如氣象監(jiān)測(cè)、室內(nèi)溫度控制、工業(yè)自動(dòng)化等。DS18B20 采用了單總線接
    發(fā)表于 02-28 17:02 ?5次下載

    基于FPGA的溫度傳感器(ds18b20)驅(qū)動(dòng)設(shè)計(jì)

    本篇主要討論基于FPGA的溫度傳感器ds18b20)驅(qū)動(dòng)設(shè)計(jì)---第一版 設(shè)計(jì)實(shí)現(xiàn):利用FPGA驅(qū)動(dòng)DS18b20,讀取到溫度數(shù)值顯示到數(shù)
    的頭像 發(fā)表于 01-16 14:08 ?1881次閱讀
    基于FPGA的<b class='flag-5'>溫度</b><b class='flag-5'>傳感器</b>(<b class='flag-5'>ds18b20</b>)驅(qū)動(dòng)設(shè)計(jì)

    【正點(diǎn)原子STM32H7R3開(kāi)發(fā)套件試用體驗(yàn)】DS18B20、DHT11溫濕度采集

    USART1_RX - PB15 MPU HyperRAM 正點(diǎn)原子 2.8/3.5/4.3/7 寸 LCD 模塊 DS18B20 高精度溫度傳感器 項(xiàng)目實(shí)現(xiàn) 檢測(cè)是否有
    發(fā)表于 01-01 11:16

    CW32模塊使用】SGP30氣體傳感器

    SGP30是一款單一芯片上具有多個(gè)傳感元件的金屬氧化物氣體傳感器,內(nèi)集成4個(gè)氣體傳感元件,具有完全校準(zhǔn)的空氣質(zhì)量輸出信號(hào)。另外,SGP易于集成,能夠?qū)⒔饘傺趸餁怏w傳感器集成到移動(dòng)設(shè)備
    的頭像 發(fā)表于 12-30 10:58 ?3962次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】SGP30氣體<b class='flag-5'>傳感器</b>

    《DNESP32S3使用指南-IDF版_V1.6》第二十九章 DS18B20實(shí)驗(yàn)

    第二十九章 DS18B20實(shí)驗(yàn) 本章,我們將介紹ESP32-S3如何讀取外部溫度傳感器溫度,來(lái)得到較為準(zhǔn)確的環(huán)境溫度。我們將學(xué)習(xí)單總線技術(shù)
    發(fā)表于 12-25 09:43

    CW32模塊使用 人體紅外傳感器

    人體紅外感應(yīng)模塊使用的是熱釋電紅外傳感器,它是利用溫度變化的特征來(lái)探測(cè)紅外線的輻射,利用雙靈敏元互補(bǔ)的方法抑制溫度變化產(chǎn)生的干擾,提高了傳感器
    的頭像 發(fā)表于 12-05 15:09 ?972次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 人體紅外<b class='flag-5'>傳感器</b>

    CW32模塊使用 SHT20溫濕度傳感器

    由瑞士Sensirion推出的 SHT20數(shù)字溫濕度傳感器,基于領(lǐng)先世界的CMOSens ? 數(shù)字傳感技術(shù),具有極高的可靠性和卓越的長(zhǎng)期穩(wěn)定性。全量程標(biāo)定,兩線數(shù)字接口,可與單片機(jī)直接相連,大大縮短
    的頭像 發(fā)表于 12-05 12:14 ?983次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 SHT<b class='flag-5'>20</b>溫濕度<b class='flag-5'>傳感器</b>

    CW32模塊使用 BMP180氣壓傳感器

    一、模塊來(lái)源 模塊實(shí)物展示: ? 資料下載鏈接: https://pan.baidu.com/s/1miTIphm 二、規(guī)格參數(shù) 工作電壓:1.8~3.6V 工作電流:0.1~1000uA 溫度精度
    的頭像 發(fā)表于 12-05 12:06 ?899次閱讀
    <b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用 BMP180氣壓<b class='flag-5'>傳感器</b>

    CW32模塊使用】微波多普勒無(wú)線雷達(dá)傳感器

    傳感器不受環(huán)境溫度的影響,探測(cè)距離遠(yuǎn),靈敏度高,被廣泛應(yīng)用于工業(yè)、交通及民用裝置中,如車(chē)輛測(cè)速、自動(dòng)門(mén)、感應(yīng)燈、倒車(chē)?yán)走_(dá)等。由于微波傳感器檢測(cè)對(duì)象存在普遍性,在實(shí)際的生活應(yīng)用中,會(huì)搭配另一個(gè)
    的頭像 發(fā)表于 11-28 17:24 ?1720次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】微波多普勒無(wú)線雷達(dá)<b class='flag-5'>傳感器</b>

    CW32模塊使用】雨滴傳感器

    雨滴傳感器主要是用來(lái)檢測(cè)是否下雨及雨量的大小。主要用于汽車(chē)智能燈光(AFS)系統(tǒng)、汽車(chē)自動(dòng)雨刷系統(tǒng)、智能車(chē)窗系統(tǒng)。 該雨滴傳感器基本上是一塊板,上面以線形形式涂覆鎳。雨滴傳感器常見(jiàn)的工作原理是通過(guò)
    的頭像 發(fā)表于 11-28 11:23 ?3361次閱讀
    【<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>使用】雨滴<b class='flag-5'>傳感器</b>

    基于CW32模塊的雨滴傳感器設(shè)計(jì)

    雨滴傳感器主要是用來(lái)檢測(cè)是否下雨及雨量的大小。主要用于汽車(chē)智能燈光(AFS)系統(tǒng)、汽車(chē)自動(dòng)雨刷系統(tǒng)、智能車(chē)窗系統(tǒng)。
    的頭像 發(fā)表于 11-26 17:22 ?1029次閱讀
    基于<b class='flag-5'>CW32</b><b class='flag-5'>模塊</b>的雨滴<b class='flag-5'>傳感器</b>設(shè)計(jì)