[應用] 超音波與溫濕度系統 (以 NXP LPC11x 控制器實現)

前言

       這是一個超音波測距和溫濕度系統,MCU 當作系統的核心,整合超音波模組、溫濕度模組、和 LCM 顯示模組。系統的電源為 5V,耗電量約 26mA,使用三顆四號電池供電。可應用的範圍,如:自走車、掃地機器人、停車場車位偵測...等。我們先在麵包板上把各個模組的電路功能設計出來,並驗證韌體程式可以正常運作,接下來再製作成 PCB 電路板。

元件介紹

       超音波模組 HC-SR04:如下圖所示,一般常使用在 Arduino 系統上,做為自走車的距離感測器,利用發射超音波與接收其反射波的時間差計算出前方物體的距離,再根據距離遠近做出適當的動作。

       溫濕度零件 DHT11:這是溫度與濕度整合的零組件,其工作電壓在 3~5.5V,具有 8-bit 的解析度,溫度範圍 0~50C,濕度範圍 20~90%,可應用的領域像是家電、空調、數據紀錄器、自動控制等等。

    NXP LPC11xx系列的MCU:這是ARM Cortex-M0為核心的控制器,運算速度約 50MHz,用來控制超音波模組和溫濕度模組,包含控制一個 2x16 LCM 顯示模組,如下圖所示。除了讀取溫濕度數據之外,同時 MCU 計算超音波傳輸的時間,再將數值轉換成反射物的距離,並將所有資訊顯示在 LCM 上。


圖一:超音波與溫濕度系統

圖二:超音波測距模組

原理說明

       LPC1114 MCU 對超音波模組的Trig腳發出一個 pulse,突波的時間需超過10 us以上,如下圖所示。超音波的反射信號會回應在模組的 Echo 腳上,當低電位升到高電位的時間是音波發射的時間點,而當高電位降到低電位是接收反射波的時間點。

未命名

       為了精準計算音波傳輸的時間,我們採用 LPC MCU 的中斷來擷取 Echo 腳的電位變化,計算出兩個中斷產生的時間差,再轉換成距離。一般常溫下,聲音傳遞的速度為 340 m/s,也就是說聲音每走1公分需要 29.4 us (1s / 34000)。由於從超音波發射到接收需要走 2倍的距離,所以我們必須將中斷的時間差除以 2才是實際超音波傳遞的距離。最後,距離公式如下:

                   距離㎝=(兩中斷的時間差 us ÷ 2÷ 29.4 us

       溫濕度零件分成幾款不同精準度的元件,DHT11DHT21DHT22 和 AM2303,除了 DHT11 8-bit之外,其餘都是採用16-bit的解析度。另外量測範圍不同,除了 DHT11是 0~50之外,其餘都是 -40~80C。每款的濕度精準度不同且量測範圍也不一樣。

       唯一相同的是控制元件的方式,元件只有一根訊號線,負責接收命令與傳送出量測的數值,也就是說訊號號既可當輸出也當輸入使用。元件在傳送bit-0bit-1都是高電位,唯一分辨的方式就是電位維持的時間,bit-0維持高電位的時間約27 usbit-1維持高電位的時間約 70 us,所以我們從高電位的時間點來判斷 bit-0或 bit-1

       數值傳送的格式為 40-bit,而且是 MSB 先傳送的方式,其中包含五組8-bit的資料,傳送的順序分別是 8-bit濕度整數部分、8-bit濕度小數部分、8-bit溫度整數部分、8-bit溫度小數部分、8-bit驗證和。

影片:系統操作過程

資料連結

留言

此網誌的熱門文章

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[筆記] Android APP 藍芽範例說明 -- BluetoothChat

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Visual Studio 遠端偵錯的設定步驟

[筆記] Android APP BLE範例程式 -- BluetoothLeGatt

[應用] 藍芽 BLE client/server 架構:BLE remote controller