基于STM32F407的超声波定位装置(利用超声波测距原理)

基于STM32F407的课设项目,采用两块板子、两个超声波模块(HC-SR04和HY-SRF05)和OLED显示屏,通过PWM波触发超声波模块测距并用输入捕获计算高电平时间。利用超声波测距原理和电机转动,实现360度定位,根据距离转换成坐标。电机驱动器BLD-120A控制超声波模块旋转,覆盖测量范围。
摘要由CSDN通过智能技术生成

学校的课设,历时五周,总算做出了一点东西,现在给大家分享一下,也算给这个课设做一个最后的总结,第一次写,写得可能不好,请大家谅解。
先说一下课设所用的器材吧,本次设计主要用到了两个无刷直流电机,两块STM32F407ZGT6的板子,两个超声波模块和一个OLED显示屏。
本次设计所用超声波模块型号为HC-SR04,和HY-SRF05
在这里插入图片描述在这里插入图片描述 至于为什么会用两个不同型号的超声波模块,嗯。。。。因为设计做到后面才发现要用到两个超声波模块,然后再到淘宝上买已经来不及了,只能去实验室借一块过来,实验室借的是HC-SR04,我自己买的是HY-SRF05,不过,超声波模块的型号是否一样是不影响实验结果的,因为所有的超声波模块它们的原理都一样,给trig引脚一个大于10us的TTL脉冲,超声波模块自动会循环发出8个40KHz的脉冲,这里我是给它一个PWM波,(之前找资料的时候发现有一些是直接给trig引脚一个大于10us的高电平,这个方法我试过,不过没有成功。)然后用输入捕获去获取echo引脚的高电平时间,获取的高电平时间可以在串口助手上看到。HY-SRF05型号的超声波模块虽然有5个引脚,但实验时真正用到的引脚实际只有4个,和HC-SR04一样,HY-SRF05多出来的那个OUT引脚资料上是显示可以当报警模块使用。
0.96寸OLED屏
两个超声波模块所测距离在OLED屏上显示
下面是设计所用无刷直流电机的图,左边那两个大铁盒子是24V的电源,用来驱动BLD-120A驱动器工作的
左边那两个大铁盒子是24V的电源,用来驱动BLD-120A驱动器工作的电机驱动器,型号为BLD-120A
在这里插入图片描述接下来说一下方案吧,因为做的是超声波定位,所以最终我们要得到的是所测目标的坐标,超声波模块只能得到距离,所以我们要想个办法把距离转换成坐标。
欲确定平面某一物品C(X,Y)的坐标,如图所示。A、B为两个超声波模块,a、b为超声波模块的距离。已知A(0,0)、B(C,0)。则有:
cos∠ A= (bb+cc-a*a)/(2bc)
A=arcos ∠A
X=bcos ∠A,Y=bsin ∠A
故只要用测出a、b的长度,便可以确定该物品的位置。
在这里插入图片描述即我们固定两个超声波模块的位置,这就是我们要用到两个电机的原因,因为超声波模块的测量角度只有15度,要想测量整个平面的位置坐标,我们就要让超声波模块能够360度转起来,电机的作用就是这个,组装的时候我们在电机的轴上固定一块木板,然后将超声波模块固定在木板上,这样,装置的模型就出来了。
下面给大家说一下程序吧,设计总共用了两块STM32F4的板子,一块用来控制两个电机的转动,一块用来控制两个超声波模块和OLED屏,这里说一下控制超声波模块的程序,两路PWM波和两路输入捕获以及主程序。
两路PWM波程序

void TIM14_PWM_Init(u32 arr,u32 psc)
{		 					 
	GPIO_InitTypeDef GPIO_InitStructure;
	TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
	TIM_OCInitTypeDef  TIM_OCInitStructure;
	
	RCC_APB1Per
你好!基于STM32F407超声波测距是一种常见的应用,可以用于测量物体与传感器之间的距离。下面是一个简单的步骤指导来实现这个功能: 1. 硬件准备: - STM32F407开发板和USB线 - 超声波传感器模块(比如HC-SR04) - 杜邦线若干 2. 连接电路: - 将超声波传感器的VCC引脚连接到STM32F407的3.3V电源引脚 - 将超声波传感器的GND引脚连接到STM32F407的GND引脚 - 将超声波传感器的Trig引脚连接到STM32F407的一个GPIO引脚(比如GPIOA0) - 将超声波传感器的Echo引脚连接到STM32F407的另一个GPIO引脚(比如GPIOA1) 3. 编写代码: - 使用STM32CubeMX来配置引脚和时钟设置 - 在生成的代码中,找到main.c文件 - 在main函数中初始化GPIO引脚和定时器 - 编写一个函数来发送超声波信号,并计算返回的脉冲宽度来计算距离 - 在main函数中循环调用该函数并输出测量结果 4. 编译和烧录: - 使用STM32CubeIDE或其他开发环境编译代码 - 将生成的二进制文件烧录到STM32F407开发板中 5. 测试: - 连接STM32F407开发板到电脑上,并打开串口终端软件 - 在终端上观察到测量到的距离值 这只是一个简单的示例,具体的实现可能因为不同的开发环境和超声波传感器模块而有所不同。你可以根据自己的需求和具体的硬件来进行相应的调整和扩展。希望对你有所帮助!如有更多问题,请随时提问。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值