範例-連接環境感應器

    • 主題 - 用電腦按鍵指定接收感應器的量測訊號

最後,來到了學習UART通訊協定的最後一個範例,延續著前面範例是對內建的溫度計作量測,我們已經能夠針對我們使用者輸入的特定字元去做特定的動作,看來我們已經可以正常跟基板作雙向溝通了。

接下來這個例子我們可以連接其他的外接感測器,更加擴充這個與基板的互動功能,下面內容,將再介紹如何使用回傳基板上的類比電壓讀值,然後回傳到電腦螢幕來顯示。

簡單來說,就是當我們按下鍵盤的按鍵4時,就可以知道LaunchPad上的A4電壓值,

當我們按下鍵盤的按鍵5時,就可以知道LaunchPad上的A5電壓值。

參考資料1參考資料2

原始程式碼的紅色部分,特別標出與前面的範例4所添加的程式碼(或是不同的部分)。註解說明也很值得讓玩家可以循序漸進的了解C語言程式用法,比較每個範例之間的差異性,這部分留給想研究程式碼的玩家去研讀,不了解的地方,歡迎在討論區提出。

    • 程式流程圖

  • 上傳程式碼到基板

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

  • 原始程式碼

原始程式碼UART_ADC.c
  • 類比數位訊號轉換的曲線圖 (Vcc - ADCvalue reference)

這個例子LaunchPad必須使用有ADC10功能的核心晶片,例如型號MSP430G2231 就有10位元的ADC通道功能,提供1024階的解析度,嗯~這裡有關類比轉換成數位的電子原理,後面就不詳細描述,可以參考基本電子學或google這類文章介紹。

現在我們做了一個實驗,將每一個電壓值(由0V到3.5V電壓)供給基板的A4的類比輸入腳位,然後量出每一個相對應電壓下基板所報出來的ADCValue值,依序做0 0.5V 1V 1.5V ....最後將繪製成下圖中的每一個點依據實際量測出來的數據所繪成由曲線圖,推知得類比數位的轉換呈等比例的直線(性)關係,。

我們要的就是將這樣的關係自己做成一個固定的換算公式,當我們知道LaunchPad的ADCValue值就知道它所擷取到的電壓值是多少。這點很重要。不再需要向上例的步驟二。

原稿

所以類比與數位的轉換關係公式為

所擷取到的電壓VDC = ( ADCvalue * 3.6 V參考電壓值 ) / 1024

= ADCvalue * 0.003515625

= 449 * 0.003515625

= 1.57V

以一個實際的例子來說,當我們在電腦上接收到的十六進位碼為C1 01。高低位元經轉換後,代表真正的數據是01 C1 。而以十進位制轉換後,(如同上範例說明中的第一步),換算後由小算盤得到的ADCvalue為449階,以3.6 V總共為1024階來換算,套用到以上的轉換公式,運算出結果 449 * (3.6 /1024) =1.57 V

得到類比輸入的電壓為1.57V

  • 應用-- 連接外接型感測器到基板上(請參考進階實例)。