DS18B20讀數錯誤排除


描述:

同時測試了好幾個板子,都接了DS18B20傳感器。但,有的板子讀取的DS18B20溫度值正確,有的讀取錯誤。

原因查找:

以為是有的傳感器壞了,但測試后發現並不是。

又以為是DS18B20需要的啟動時間長,因此在給DS18B20芯片供電好長一段時間后,才啟動采集程序,但結果還是錯誤。

但在找問題的過程中,發現調試時的暫停會導致讀出正確的DS18B20結果。

因此,懷疑是延時的問題。

解決:

所以在程序中連續讀取10次DS18B20數據,並把數據打印出來查看,結果發現:前幾次讀取的結果是錯誤的,之后讀取的結果就都是對的。

雖然解決了,但並沒有找到根源,不求甚解吧。

 

在此,也記錄下之前的一個針對錯誤的處理語句(已經看不明白當時為何要這么處理了,但感覺該處理目前似乎用不上了,因此刪除掉了)

if ((fabs(g_fSoilTemp - 85) > 1) && (fabs(g_fSoilTemp - 127.9) > 1))
{
break;
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM