基于MATLAB的蓄電池充放電監(jiān)測系統(tǒng)
其中A/D轉(zhuǎn)換比較簡單,不再贅述。主要注意一點,啟動A/D后要等待轉(zhuǎn)換完成再讀結(jié)果,否則讀出的是將上次轉(zhuǎn)換結(jié)果。
3.2 DS18B20程序
DS18B20的操作分為3個步驟:初始化、ROM命令和DS18B20功能命令。DS18B20的操作時序如圖5所示。從時序圖中可以得出,DS18B20對操作時序要求比較嚴格,否則將導(dǎo)致操作失敗。本文引用地址:http://m.butianyuan.cn/article/177783.htm
根據(jù)時序圖所示,每讀一位數(shù)據(jù)需要60us延時,為了延時精確,采用的方法是查看匯編語言,計算需要加入的空指令(NOP)個數(shù)。
根據(jù)時序要求編寫代碼后,有如下統(tǒng)計,啟動溫度轉(zhuǎn)換時間約為2.5ms,讀溫度時間約為10.25ms,這些時間量都遠小于一個時間片(20ms)的長度,符合要求。為達到12位精度,器件手冊要求兩次啟動溫度轉(zhuǎn)換時間問隔不得低于750ms。溫度采集1s一次可以實現(xiàn)。讀取溫度任務(wù)流程圖如圖6所示。
圖6中,SenseNo是指DS18B20的序號,SENSE CNT為器件總數(shù)。讀取不同DS18B20的方法是器件自身的ID,這個ID可以通過程序讀出,但較為繁瑣。為了減輕程序的負擔,我們事先通過其他方式讀出每個器件的ID,讀溫度時直接使用,簡化了任務(wù)。
評論