US-100超声波模块驱动

本文详细介绍了US-100超声波模块的特性及参数,包括其工作原理、串口通信配置和注意事项。特别强调了在无人机应用中如何通过STM32获取精确的高度信息,以及在实际调试过程中遇到的问题和解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

驱动US-100超声波模块

由于最近在搞无人机,为了让它在室内定位稳一点所以使用了光流模块,上面有一个US-100的超声波模块,而我想通过stm32模拟遥控器,需要得到一个高度的信息,于是就准备通过串口通信读取US-100的高度反馈。

模块概述即参数

US-100超声波测距模块可实现2cm4.5m的非接触测距功能,拥有2.45.5V的宽电压输入范围,静态功耗低于2mA,自带温度传感器对测距结果进行校正,同时具有GPIO,串口等多种通信方式,内带看门狗,工作稳定可靠。

主要技术参数:

工作电压:DC 2.4V~5.5V

静态电流:2mA

工作温度:-20~+70度

输出方式:电平或UART(跳线帽选择)

感应角度:小于15度

探测距离:2cm-450cm

探测精度:0.3cm+1%

UART模式下串口配置:波特率9600,起始位1位,停止位1位,数据位8位,无奇偶校验,无流控制。

本模块的尺寸:45mm20mm1.6mm。板上有两个半径为1mm的机械孔

接口说明:

本模块共有两个接口,即模式选择跳线和5 Pin接口。

img

模式选择跳线接口如下图所示。模式选择跳线的间距为2.54mm,当插上跳线帽时为UART(串口)模式,拔掉时为电平触发模式。

img

串口触发

时序

img

img

使用说明

反馈温度

此模式下只需要在 Trig/TX 管脚输入0X50(波特率 9600),系统便启动温度传感器对当前温度进行测量,然后将温度值通过 Echo/RX 管脚输出。测量完成温度后,本模块会返回一个字节的温度值(TData),实际的温度值为 TData-45。例如通过 TX 发送完0X50 后,在 RX 端收到 0X45,则此时的温度值为 [69(0X45 的10进制值)-45] = 24 度。

反馈距离

在此模式下只需要在Trig/TX管脚输入0X55(波特率9600),系统便可发出8个40KHZ的超声波脉冲,然后检测回波信号。当检测到回波信号后,模块还要进行温度值的测量,然后根据当前温度对测距结果进行校正,将校正后的结果通过Echo/RX管脚输出。

输出的距离值共两个字节,一个字节是距离的高8位(HDate),二个字节为距离的低8位(LData),单位为毫米。即距离值为(HData*256 +LData)mm。

注意事项

1、此模块不宜带电连接,若要带电连接,则先让模块的 GND端先连接,否则会影响模 块的正常工作。

2、测距时,被测物体的面积不少于 0.5平方米且平面尽量要求平整,否则影响测量的 结果

3、如果测试面不是很规则或则测试远距离物体时,可采用多次测量的方法来校正。

最坑之处!!!

一般我们知道串口通信TX接RX,而RX接TX,而这个模块正好相反!!!其他的就没什么了,记得不要访问过于频繁,可以在定时器中断里面发送0x50。

  • 1号Pin:接VCC电源(供电范围2.4V~5.5V)。
  • 2号Pin:当为UART模式时,接外部电路UART的TX端;当为电平触发模式时,接外部电路的Trig端。
  • 3号Pin:当为UART模式时,接外部电路UART的RX端;当为电平触发模式时,接外部电路的Echo端。
  • 4号Pin:接外部电路的地。
  • 5号Pin:接外部电路的地。

部分代码

uint8_t receive_data[2];
uint16_t distance = 0;

int main(void)
{
  HAL_UART_Receive_IT(&huart2,receive_data,2u);
  HAL_TIM_Base_Start_IT(&htim2);
  TIM2->ARR = 49999;
}

void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
	if(huart == &huart2)
	{
		HAL_UART_Receive_IT(&huart2,receive_data,2u);
		HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);
		distance = (receive_data[0]*256+receive_data[1])/10;//mm转cm
	}
}

void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)
	{
		uint8_t transmit_data = 0x55;
		HAL_UART_Transmit(&huart2,&transmit_data,1,100);
	}
}

刚才不应该那么快飞线的,又要重新飞线了!!!哭了!

无人机上机调试

一开始失败,原因在于飞线我飞短了!(焊接技术不到家)

重新飞线后成功读取光流超声波数据!

2019.9.4无人机定高测试

US-100超声波模块与无人机机械固连回发生机体机械振动会对超声波发送的超声波有影响(影响在于机体机械振动抵消了超声波发射的超声波振动导致高度信息错误)

海绵垫对超声波有吸收作用,导致探测距离过短(1m不到)

解决办法:在水泥地上测试并且超声波模块与机体通过减震材料固定(如泡棉)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值