tag 标签: 超声测距

相关博文
  • 热度 4
    2022-8-15 09:05
    1866 次阅读|
    0 个评论
    本项目通过HC-SR04超声波传感器和STM32F411开发板,以精确到cm的精度测量目标物体的距离。项目BOM表如下: STM32F411RE开发板 x1 HC-SR04超声波传感器 x1 跳线 若干 其中,HC-SR04超声波传感器可以0.3cm精度读取2-400cm范围距离,而且超声波发射器和接收器组合在一起,适合大多数个人爱好项目。主要性能包括: 工作电源:5VDC 工作电流:15mA 工作频率:40KHz 最大距离:4m 最小距离:2cm 测量角度:15度 分辨率:0.3cm 触发输入信号:10uS TTL脉冲 回升输出信号:TTL脉冲,与测量成距离成正比 ​ 当传感器接收到一个触发信号,就发出一个40KHz突发信号。该信号通过空气传播,在撞到目标物体后返回传感器,再由传感器根据一定算法得出被测物体的距离。 HC-SR04传感器与STM32的连接电路比较简单,传感器Vcc与STM32板的5V连接,两个板子的GND引脚连接,传感器的Trig 引脚与开发板的A0 (PA0) 连接,echo引脚与开发板的A1 (PA1)引脚连接。 ​ 按照上述电路图连接妥当后,将以下代码上传到Arduino IDE。 #include "stm32f4xx.h" // Device header //macros for trigger pin BSRR=GPIO_BSRR_BS_0 // turn on PA0 (trig pin) BSRR=GPIO_BSRR_BR_0 // turn off PA0 (trig pin) ​ uint32_t duration; float distance; //prototypes of the used function void delaymS(uint32_t ms); void delayuS(uint32_t us); uint32_t read_echo(uint32_t timeout); ​ int main(void) ​ { AHB1ENR |= RCC_AHB1ENR_GPIOAEN; //enable GPIOA Clock MODER |= (1<<0); //set PA0 to Output //configure Timer1 to generate micorseconds delay APB2ENR |= RCC_APB2ENR_TIM1EN; /*Enable TIM3 clock*/ PSC = 16 -1; /* 16 000 000 /16 = 1000 000*/ ARR = 1; /* 1000 000 /1 = 1000000*/ CNT =0; CR1 =1; while(1) { Trig_low; //turn off trig delayuS(10); //wait 4uS Trig_high; //turn on trig delayuS(10); Trig_low; duration=read_echo(400000); //measure the time of echo pin distance=duration/58; //distance=duration/2*SOUND_SPEED delaymS(1000); //delay for 1 second between each read } ​ } ​ void delaymS(uint32_t ms) //delay for certain amount in milliseconds { LOAD=16000-1; VAL=0; CTRL=0x5; for (int i=0;i
相关资源