接上文繼續:
2 MS5540C的程序設計
2.1 MS5540C的工作原理
MS5540C包括一個壓阻式的傳感器和傳感器接口電路。它的主要功能是將壓力傳感器輸出的未補償的模擬電壓轉換成16位數字值,通過接口電路可以將16位數字值輸出。共有2個16位數字值需要輸出,分別是用于氣壓和溫度測量結果計算的D1和D2。這兩個16位數據結果是非常粗糙的,必須通過外部處理器進行補償計算,才能得到比較精確的結果。
每個模塊都會在兩個溫度和兩個氣壓值下進行工廠校準,得到6個補償系數C1~C6,這6個補償系數共64 bit,以4個16 bit的字形式儲存在模塊內的PROM中。因此,在進行補償計算前,必須先讀出這6個補償系數。關于補償系數在4個16位字中的排列方式,請參看文獻的圖4。
2.2 MS5540C的軟件設計
使用帶有SPI接口的MCU與MS5540C接口,將會使程序設計變得簡單。我們以帶有SPI接口的51單片機STCl2LE5A60S2為例來介紹MS5540C的軟件編程。
由前所述,4個16位的補償數據及2個分別為氣壓和溫度傳感器轉換而來的16位結果數據都需要通過SPI來讀取。關于這些數據的讀取,Intersema規定了一套簡單的通訊協議,協議要求處理要先發命令數據,然后才能讀取16位數據。命令數據包括起始位,設置位和停止位,各個數據有不同的設置位,另外為了復位MS5540C,Intersema還提供了一個用于reset模塊的命令,關于具體的通訊協議,請參考文獻。
數據定義:
在程序中調用上述的函數,編程非常方便。讀出的2個16位數據經過文獻1提供的校準公式進行校準后,得到溫度和氣壓的較為精確的測量結果,其中溫度的結果精確到0.1℃,氣壓精確到0.1mbar。
因為MS5540C的ADC為16位,溫度測量分辨率可以到0.01℃,對于-40~85℃之間的測量范圍,我們可以將文獻中溫度校準公式:
TEMP=200+dT*(C6+50)/1024
修改為
TEMP=2000+dT*(C6+50)*10/1024
這樣得到的結果可以使分辨率達到0.01℃。
程序設計需要注意兩點:
1)MCU發送命令和讀取數據時SPI工作方式是不一樣的,主要是SCLK采樣沿的設置不同,具體參考文獻;
2)由于在發送采樣溫度和氣壓的命令之后,需要等大約35 ms左右,才能讀取到采樣數據,所以在發送命令后,需要等待之后再讀取。