前言
在電子技術應用中,距離測量是一個常見且重要的需求。超聲波模塊因其測量精度較高、成本較低、易于使用等優點,被廣泛應用于機器人避障、液位檢測、智能停車系統等領域。該文主要講解以stm32wb芯片為主控,用HAL庫來對HY-SRF05超聲波模塊進行代碼編寫,實現基本的驅動和測距功能。代碼的主要核心思路是通過polling對Echo信號進行捕獲。
HY-SRF05 超聲波模塊工作原理
HY-SRF05 超聲波模塊包括超聲波發射器、接收器和控制電路。可提供2cm – 450 cm的非接觸式距離感測功能,測距精度可達到3mm.
基本工作原理
(1)采用IO口TRIG出發測距,給至少10us的高電平信號;
(2)模塊自動發送8個40KHZ的方波,自動檢測是否有信號返回;
(3)有信號返回,則通過IO口ECHO輸出一個高電平,高電平的持續時間,結合超聲波在空氣中的傳播速度(約 340m/s),可以計算出測量目標與模塊之間的距離。測試距離 = (高電平持續時間 × 聲速)/ 2。
引腳定義
其中OUT腳置空即可。
電氣參數
工作電壓 | DC 5V |
---|---|
工作電流 | 15 mA |
工作頻率 | 40 HZ |
最遠射程 | 4.5 m |
最近射程 | 2 cm |
測量角度 | 15 度 |
輸入觸發信號 | 10us TTL脈沖 |
輸出回響信號 | 輸出TTL電平信號,與射程成比例 |
規格尺寸 | 45 * 20 * 12 mm |
超聲波時序圖
注意事項
- 模塊的工作電壓為 5V,而 STM32 的 GPIO 引腳通常為 3.3V。
STM32 代碼實現
通過宏定義引腳,方便代碼移植和修改
// define gpio for srf05 ultrasonic sensor
#define TRIG_PIN GPIO_PIN_2
#define TRIG_PORT GPIOC
#define ECHO_PIN GPIO_PIN_3
#define ECHO_PORT GPIOC
初始化以及發射和接收信號
TIM_HandleTypeDef htim2; // 采用定時器2作為時長控制void TIM2_Init(void) //定時器2 初始化
{TIM_ClockConfigTypeDef sClockSourceConfig