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