如何调试超声波测距系统?
创作时间:
作者:
@小白创作中心
如何调试超声波测距系统?
引用
1
来源
1.
https://www.jerry.net.cn/articals/15448.html
超声波测距是一种常用的非接触式测量技术,广泛应用于机器人避障、液位检测和距离测量等领域。本文将详细介绍超声波测距系统的调试步骤和注意事项。
一、硬件连接与配置
- 硬件连接:
- 将HC-SR04模块的VCC引脚连接到5V电源。
- GND引脚连接到地线。
- Trig引脚连接到单片机的PB14引脚。
- Echo引脚连接到单片机的PB15引脚。
- CubeMX配置:
- 设置系统时钟频率为最大,例如168MHz。
- APB1的时钟频率设置为84MHz。
- 配置TIM2基础定时器,分频系数为83,计数单位为1μs,向上计数模式,周期为65535。
- 配置PB14为输出模式(Trig引脚),PB15为输入模式(Echo引脚)。
二、软件实现
触发信号:
使用宏定义控制Trig引脚的高低电平:#define HCSR_TRIG_HIGH() HAL_GPIO_WritePin(HC_SR04_Trig_GPIO_Port, HC_SR04_Trig_Pin, GPIO_PIN_SET) #define HCSR_TRIG_LOW() HAL_GPIO_WritePin(HC_SR04_Trig_GPIO_Port, HC_SR04_Trig_Pin, GPIO_PIN_RESET)
触发脉冲信号:
实现不低于10μs的TTL高电平脉冲信号,这里延时20μs:void HCSR04StartTrigStart(void) { HCSR_TRIG_HIGH(); for_delay_us(20); HCSR_TRIG_LOW(); }
回响信号读取:
使用TIM2计时器来测量Echo引脚的高电平持续时间:void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { if (GPIO_Pin == GPIO_PIN_15) // Echo引脚 { if (HAL_GPIO_ReadPin(GPIO_PIN_15) == 1) // Echo高电平开始 { __HAL_TIM_SET_COUNTER(&htim2, 0); // 重置TIM2计数器 while (HAL_GPIO_ReadPin(GPIO_PIN_15) == 1); // 等待Echo变低 time_count = __HAL_TIM_GET_COUNTER(&htim2); // 获取计数值 } } }
三、计算距离
- 公式:
距离 = (time_count * 声速(340M/S)) / 2;
time_count是TIM2计数器的值,单位为μs。
四、调试与优化
- 调试步骤:
- 确保硬件连接正确,特别是Trig和Echo引脚的连接。
- 检查单片机和超声波模块的供电是否正常。
- 使用逻辑分析仪或示波器观察Trig和Echo引脚的信号波形,确保触发信号和回响信号的正确性。
- 根据实际测量结果调整延时和计数器的参数,以确保测量精度。
- 常见问题及解决方法:
- 如果测量距离不准确,检查超声波模块的安装位置和被测物体的表面是否平整。
- 如果回响信号不稳定,可能是由于环境噪声干扰,可以尝试增加滤波处理。
五、代码示例
以下是完整的代码示例,用于实现超声波测距的基本功能:
#include "stm32f1xx.h"
#include "usart.h"
#include "delay.h"
#include "key.h"
#include "time.h"
#include "exti.h"
#include "Ultrasonic.h"
int main(void)
{
unsigned int rang = 0;
/*初始化串口*/
delay_init();
key_init_wt();
//TIM3_Int_Init(4999,7199);//10Khz的计数频率,计数到5000为500ms
ultrasonic_config();
EXTI_config();
TIM3_Int_Init(4,71); //5us
USART1_Config();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
USART1_printf(USART1,"\r\nHello World\r\n");
while(1)
{
if(0 == KEY1)
{
delay_ms(10);
if(0 == KEY1)
{
while(0 == KEY1);
USART1_printf(USART1,"\r\n\r\n");
ultrasonic_Ranging();
USART1_printf(USART1,"\r\ntime_count=%d\n",time_count);
rang = (unsigned int)(((time_count*0.000005*340)/2)*1000);
USART1_printf(USART1,"\r\nDistance=%d\n",rang);
}
while(0 == KEY1);
}
}
}
六、相关问答FAQs
Q1:超声波测距模块的工作原理是什么?
A1:超声波测距模块通过发射超声波脉冲并接收其回波来测量距离,模块的Trig引脚发送一个至少10μs的高电平脉冲信号,触发模块内部发出8个40kHz的方波,然后自动检测是否有信号返回,有信号返回时,Echo引脚输出一个高电平,高电平持续的时间就是超声波从发射到返回的时间,根据这个时间间隔和声速,可以计算出距离。
Q2:如何提高超声波测距的精度?
A2:提高超声波测距精度的方法包括:
- 确保被测物体表面平整且面积足够大(建议不少于0.5平方米)。
- 使用适当的滤波处理来减少环境噪声干扰。
- 调整测量周期,建议测量周期为60ms以上,以防止发射信号对回响信号的影响。
热门推荐
美元汇率下降对跨境电商的影响与应对策略
《骆驼祥子》:一个普通人的奋斗与堕落
从《骆驼祥子》看现代人的压力与选择:一个跨越时空的对话
北京曲剧《骆驼祥子》改编引发热议:创新还是背叛?
亲子游必备清单,4大宝典!助你快乐游!
《我的阿勒泰》——摄影家钱捍十年镜头记录哈萨克族牧民转场生活
出发!在“我的阿勒泰”,从四季转场中,感受震撼与美
《我的女友是九尾狐》里的正宗韩国烤肉体验
天道酬勤适合挂客厅吗?探讨其意义与装饰效果
坐高铁儿童需要买票吗?高铁免票儿童乘车规定
秋冬西装皮鞋配色指南:你穿对了吗?
秋冬正装皮鞋搭配指南:你穿对了吗?
想要延長電器壽命,入冬記得讓這些家電收工!冷氣、電扇、循環扇…清潔保養5招
摇晃几下,瞬间炸开!使用保温杯时别这样做!
央视曝光:这种保温杯可能含重金属,家中若有请立即处理
苏格拉底教你如何在现代社会找到幸福
企鹅吃什么(企鹅吃什么食物)
正红色口红如何搭配你的冬季皮靴?
职场女性如何选对皮鞋颜色?西班牙王妃的穿搭秘诀来了!
塑木廊架:打造高颜值葡萄架
打造时尚庭院:铝合金葡萄架DIY指南
木塑葡萄架:种葡萄的新宠儿!
冬季葡萄搭架技巧与管理要点全攻略
国产游戏《黑神话:悟空》持续火爆,齐天大圣让全世界感受中国文化魅力
“想带走南京的味道?这些美食特产,你挑对了吗?”
如何确保企业符合兽药经营质量管理规范?
在功能农业和功能农产品及健康领域中,张勇飞教授的默默耕耘化作了累累成果!
肇事逃逸怎么定义
数字营销兼职:提升技能的职业发展新选择
心脏支架术后康复指南:从卧床到旅行的生活重启