範例-基板的內建溫度計

  • 主題 - 讀取基板內建類比溫度計與數據校正 (附顯示溫度GUI介面)

延續著前面範例,我們已經能夠針對我們使用者輸入的特定字元去做特定的動作,看來電腦已經可以正常跟基板作溝通了。接下來我們要擴充這個功能,由數位訊號到類比訊號,將在下面再介紹如何使用回傳基板上內建的類比溫度電壓,然後回讀值到電腦螢幕來顯示。簡單來說,就是當我們在電腦前面按下鍵盤的按鍵"T"大寫時,就可以知道LaunchPad上的溫度數值,當然,這個溫度數值還要經過適當的轉換(與溫度校正步驟)才得到我們所熟知的攝氏溫度值。

這裡有關類比轉換成數位的電子原理,本例子就不詳細描述,可以參考基本電子學或google這類文章介紹(參考連結)。

原始程式碼的紅色部分,特別標出與前面的範例3所添加的程式碼(或是不同的部分)。註解說明也很值得讓玩家可以循序漸進的了解C語言程式用法,比較每個範例之間的差異性。

    • 程式流程圖

  • 上傳程式碼到基板

請參照<初次使用整合開發環境>步驟,再貼上UART_TEMP.c程式碼,基板即可運作。

  • 基板原始碼 for msp430g2553 (V4)

  • 支援基板硬體HW rev1.5

原始程式碼LILP_MSP430G2553.c ‎‎(v4)‎‎ for OQCN
  • 溫度數據的校正四步驟

我們透過USB連結上基板已經可以量到數值,但還不是我們要的數據,還要完成以下的數據轉換步驟,才算是真正量到我們所使用的溫度。這裡先介紹一下要如何一步一步轉換的步驟,先透露一下以後這四個部分會直接用LabVIEW電腦介面程式中做掉所有溫度數據校正的部分,但這裏我們還是跟玩家詳細報告一下其中的溫度數據校正原理。

1. 單位轉換 - ADCValue單位十六進位轉換成十進位。

2. 單位轉換 - ADCValue單位十進位轉成電壓Voltage表示。

3. 單位轉換 - 電壓單位Voltage轉換成攝氏溫度單位度C表示。

4. 溫度補償校正- 與標準溫度計做誤差常數補償。

  • 第一步

當我們按下鍵盤的按鍵T時,之前必須開啟通訊埠軟體 AccessPort(使用方法請參考說明,請按連結)。就可以知道LaunchPad回傳溫度是多少,但是核心程式是以十六進位來表示回傳數值,以本例子中得到的數值為D1 02,而實際上的高位元與低位元互換為02 D1才是正確。

再發送欄位鍵入 "T" 而會得到的回傳數值為D1 02

由基板傳送到電腦上的讀值,十六進位制字碼ADCValue,但是正常人還是看不懂那是代表什麼,所以需先將ADCValue單位換算成十進位制。這裡可以用WINDOWS 內建的小算盤來算出16進位轉10進位。( WIN7與XP內建的小算盤長的不一樣!)

由標準型小算盤,切換到

小算盤到程式設計師(P)。檢視(V)>>程式設計師(P)

點選左邊的十六進位選項,然後再接著輸入02D1,會顯示十六進位數值 2D1

滑鼠點選切換,再點選回左邊的10進位選項,會得到十進位數值 721

  • 第二步

因為參考晶片核心內部的類比電壓是1.5V伏特,此處要乘上一個1.5電壓常數。

再根據ADC類比訊號轉數位原理, 由十位元解析度1024階的ADC轉換的721階,因此2的10次方為1024階,

經由還原成類比電壓的形式後,得知溫度計擷取到的電壓公式為:

溫度計所擷取到的電壓VTEMP = 溫度計ADCValue * 1.5 / 1024

= 721 * 1.5 / 1024

= 1.05615234375

  • 第三步

溫度計所擷取到的電壓V,接下來需要在套用到另外一個溫度公式,這裡需查詢MSP430G2553規格書上的ADC10內建溫度轉換的參考公式,依照這一個公式,已知電壓V,帶入公式中,就換算得到基板量測的攝氏溫度值C。

溫度計所擷取到的電壓 VTEMP = 0.00355*( CTEMP ) + 0.986

1.05615234375 = 0.00355*( CTEMP ) + 0.986

0.07015234375 = 0.00355*( CTEMP )

最後, 由公式推得 CTEMP = 19.7612235915493

約等於19.7度C

  • 第四步

其實第三步已數值換算出來量得的攝氏溫度,但是玩家可能會發現此一個數值與實際上溫度差距頗大,別緊張,(在實例中,套用規格書上的公式得到的溫度竟然與實際溫度差距了將近攝氏十度)。因此,我們接下來完成第四步,也是最後一步,正確的數據轉換需要還額外做了一些溫度校正實驗。

將LaunchPad放置於一個密閉隔熱溫控箱的可調整溫度環境,然後再去讀取基板上的溫度電壓,以下是由許多次量測所得出來的實驗量測數據(就我本身這一台的所量得的數據),這裡提出一些方法給玩家去做校正實驗並不代表所有的基板都適用同一個的補償數值,必須由玩家們自行校正出來,而原本規格書上寫的補償參數0.986,而經過溫度校正實驗,在本例中應該為0.949219。

簡單的做法,玩家如果沒有可以供溫度校正的設備,簡單的做法可以直接用一般的溫度計作讀值比較,然後補上一個誤差值即可,如果你的標準溫度計顯示的是攝氏29度C,在第三步LaunchPad換算出來的讀值是攝氏19度C,那麼,以後這塊板子的讀值就直接再加上一個溫度常數值10度C做為溫度補償值即可。

      • 經溫度校正過的參考曲線

輸出電壓(Volts)

1.05615234375 = 0.00355*( CTEMP ) + 0.949219

0.10693334375 = 0.00355*( CTEMP )

溫度 (攝氏度C)

經校正後的公式更正為VTEMP = 0.00355*( CTEMP_CAL ) + 0.949219

最後, 由公式推得 CTEMP = 30.12206866197183

約等於30.1度C

      • 溫度實驗數據比較表

MSP430-LaunchPad-Temp-Cal

    • 進階應用 - 溫度計GUI介面

嗯~每次量溫度都需要這樣換算,是不是有點麻煩,不過,之後我們有更好的方法,將會介紹如何用電腦介面程式,套用轉換公式下去,直接幫我們處理這些數值的溫度數據校正工作。

  • 完成!! USB溫度計實際操作影片

  • 進階功能

可以每一個基板的個別差異考慮進去,能將補償溫度調整回去。

  • 檔案下載

完整原始檔+程式安裝檔 InterTempSensor_project_directory_full.7z (124MB),這裡

參考

http://www.eettaiwan.com/ART_8800615233_617739_TA_c62b12a1.HTM