![]() |
發(fā)布時間: 2022-1-21 13:12
正文摘要:本帖最后由 新新科技 于 2022-1-21 13:20 編輯 幾年前從T寶上購買的不銹鋼封裝防水型DS18b20溫度探頭,近期拿出來用用。 我設(shè)置的有效數(shù)字是到到小數(shù)點后一位的,即:從18B20讀出十二位數(shù) ... |
18b20可以設(shè)置不同的采樣位數(shù),比如7位,9位,你初始化的時候,估計把它忘了。 |
新新科技 發(fā)表于 2022-1-21 18:19 精度正負0.5度,應(yīng)該這么理解:如果測量值是20度,那么實際的溫度在-19.5到20.5之間。 |
再次看看手冊,終于弄明白了,是配置寄存器的問題。DS18B20一般出廠是設(shè)置為12位的,但本人手頭的18b20是設(shè)置為9位精度的,所以只能測量到整數(shù)度數(shù)或0.5度數(shù)。謝謝大家的關(guān)注! |
參與人數(shù) 1 | 黑幣 +10 | 收起 理由 |
---|---|---|
![]() | + 10 | 贊一個! |
wc86110 發(fā)表于 2022-1-22 00:06 關(guān)鍵程序: void readtemp_ds18b20() //讀取溫度 { uint temp32; uchar templ,temph; EA=0; rest_ds18b20();//復位 write_ds18b20(0xcc); //跳過讀序列號的操作 write_ds18b20(0x44); //啟動溫度轉(zhuǎn)換 delay_50us(15); rest_ds18b20();//復位 write_ds18b20(0xcc); //跳過讀序列號的操作 write_ds18b20(0xbe); //讀取溫度寄存器等(共可讀9個寄存器) 前兩個就是溫度 templ=read_ds18b20();//低八位 temph=read_ds18b20();//高八位 temp32=(temph<<8)|templ;//合并為十六位 if((temph&0xf0))//判斷溫度的正負性 { temp32=~temp32+1; temp32=temp32*0.625;//溫度值擴大10倍 temp=-temp32;//溫度為負數(shù) } else//為正數(shù) { temp=temp32*0.625; //溫度值擴大10倍 } EA=1; } void show_18B20()//顯示18B20的溫度 { uchar i; LcdSetCursor(2,7); //顯示位置 i=temp/100; write_LCD_data(tex[ i]);// //顯示百位,即溫度十位 i=temp/10%10; write_LCD_data(tex[i ]);// //顯示十位,即溫度個位 write_LCD_data('.');//顯示小數(shù)點 i=temp%10; write_LCD_data(tex[i ]);//顯示個位,即溫度小數(shù)部分 } |
zlj20181110 發(fā)表于 2022-1-21 19:59 沒錯,乘0.0625得到的是浮點準確數(shù)值,我乘0.625是將這個數(shù)值擴大10倍,以便于顯示到LCD1602上,上面的問題敘述有提及。 |
塑封的小數(shù)點后的數(shù)字能連續(xù)變化,金屬封裝對溫度就沒那么敏感了。關(guān)鍵還是看程序怎樣 |
看看這個表 |
51hei圖片20220121204133.png (59.02 KB, 下載次數(shù): 53)
精度和分辨率不是一回事,仔細看看手冊就知道了 |
我不知道你的 * 0.625 是用什么方式計算的, 但是, 一般用18B20的話,通常的做法是把得到的值左移4位,高8位就是溫度的整數(shù)值,低8位為0的話就是整數(shù)溫度,非0就是 0.5 的溫度。18B20 一般也就測一下室溫,沒有什么好期待的。 |
本帖最后由 新新科技 于 2022-1-21 18:23 編輯 壓著我頭發(fā)啦 發(fā)表于 2022-1-21 15:46 精度0.5℃的意思是說,如果正確溫度是20℃,那么18b20測得的結(jié)果最低可能是19.5℃,而最高可能是20.5℃,那么,如果正確的溫度是20.2℃呢? |
精度與分辯率的問題。。。 18B20的精度是0.5度,也就是說其測到的數(shù)值與實際溫度的誤差在0.5之內(nèi)。 分辯率是0.625度,就是說測到的數(shù)值是0.625的倍數(shù)。 |
沒用過ds18b20,但是查了一下,該器件精度是±0.5℃的,所以數(shù)值每次變化最小范圍應(yīng)該就是0.5℃吧。PTC\NTC精度會高點吧 |
Powered by 單片機教程網(wǎng)