红外超声波雷达测距
一.
采用stm32F103和HC-SR04超声波模块, 使用标准库或HAL库+ 定时器中断,完成1或2路的超声波障碍物测距功能。
1)测试数据包含噪声,程序需要进行滤波处理;将测距数值通过串口上传到上位机串口助手;
2)根据障碍物距离远近,控制一个蜂鸣器(可以用LED灯代替)发出频率不同的声音(或LED不同闪烁),即输出占空比变化的PWM波形;
3)在没有超声波模块硬件的场景下,先使用Keil中的仿真逻辑分析仪,观察分析对应管脚上的时序波形,判读是否符合协议规范。
一、设计方案概述
1. 硬件设计
- 主控制器:STM32F103系列MCU。
- 超声波传感器:HC-SR04超声波模块,用于测量障碍物距离。
- 通信接口:使用STM32的串口(USART)进行数据上传。
- 蜂鸣器/LED:用于根据测距结果发出不同频率的声音或LED闪烁。
2. 软件设计
- 驱动程序:编写HC-SR04超声波模块的驱动程序。
- 滤波算法:实现滤波算法,如滑动平均或中值滤波,以减少噪声。
- 串口通信:实现串口通信程序,用于将数据上传至上位机。
- PWM控制:实现PWM波形输出,用于控制蜂鸣器频率或LED闪烁。
3. 功能实现
- 超声波测距:使用HC-SR04模块,通过STM32的定时器中断来精确测量超声波的发送和接收时间,从而计算距离。
- 数据滤波:对测距数据进行滤波处理,提高数据稳定性。
- 串口上传:将滤波后的测距数据通过串口发送至上位机。
- 蜂鸣器/LED控制:根据测距结果,通过PWM控制蜂鸣器频率或LED闪烁。
二、详细设计
1. 超声波测距功能
- 初始化:配置STM32的GPIO为输出模式,用于触发HC-SR04模块。
- 发送超声波:通过GPIO输出一个短脉冲触发超声波发送。
- 接收回波:配置另一个GPIO为输入模式,并使用外部中断或定时器捕获回波信号的时间戳。
- 计算距离:根据发送和接收的时间差,计算超声波在空气中的传播距离。
2. 数据滤波处理
- 算法选择:根据实际需求选择合适的滤波算法,如滑动平均滤波或中值滤波。
- 实现滤波:在主循环或中断服务程序中实现滤波算法,对连续的测距数据进行处理。
3. 串口上传数据
- 初始化串口:配置STM32的USART接口,设置波特率、字长、停止位等参数。
- 数据发送:将滤波后的测距数据转换为字符串,通过串口发送至上位机。
4. PWM波形输出
- 初始化PWM:配置STM32的定时器产生PWM波形。
- 占空比控制:根据测距结果调整PWM的占空比,实现蜂鸣器频率变化或LED闪烁。
三、仿真测试
1. 使用Keil仿真逻辑分析仪
- 配置仿真:在Keil uVision中配置逻辑分析仪,选择需要观察的管脚。
- 运行仿真:运行程序,观察逻辑分析仪捕获的波形。
- 波形分析:分析超声波触发、回波接收以及PWM波形,确保它们符合预期的时序和协议规范。
2. 验证协议规范
- 时序检查:确保超声波模块的触发和回波接收时序正确。
- 通信协议:验证串口通信的数据格式和波特率是否符合上位机的要求。
- PWM规范:检查PWM波形的频率和占空比是否符合设计要求。
通过上述设计方案,可以实现一个基本的超声波障碍物测距系统,并具备数据滤波、串口上传和根据测距结果控制蜂鸣器或LED的功能。在没有硬件的情况下,可以通过Keil仿真逻辑分析仪进行初步的测试和验证。
二.
当前智能汽车上一般配置有12路超声波雷达,这些专用超声波雷达内置了MCU,直接输出数字化的测距结果,一般硬件接口采用串口RS485,通信协议采用modbus。请思考:
1)RS485与RS232(UART)有什么不同?
2)Modbus协议是什么?
3)如果让你设计一款 12路车载超声波雷达,采用 stm32F103+HC-SR04超声波模块,对外提供RS485和Modbus协议,你的设计方案是什么?
1)RS485与RS232(UART)的不同
RS485和RS232都是串行通信协议,但它们在电气特性、连接方式和应用场景上有所不同:
-
电气特性:
- RS485:使用差分信号传输,可以在长距离上进行通信,并且具有较强的抗干扰能力。RS485支持多点通信,即一个总线上可以连接多个设备。
- RS232(UART):使用单端信号传输,通常用于短距离通信,抗干扰能力相对较弱。RS232通常用于点对点通信。
-
连接方式:
- RS485:采用一对双绞线,一条为A线,另一条为B线,数据在两条线上以相反的极性传输。
- RS232:除了数据发送(TX)和数据接收(RX)线外,还有控制线如载波检测(CD)、载波发送(CTS)等。
-
应用场景:
- RS485:常用于工业环境中,因为它能在恶劣的电气噪声条件下稳定工作,适合长距离通信。
- RS232:常用于计算机与外设之间的通信,如调制解调器、鼠标、打印机等。
2)Modbus协议是什么?
Modbus是一种应用层协议,主要用于工业自动化领域的电子设备之间的通信。它支持多种通信方式,包括RS232、RS485、以太网等。Modbus协议的特点包括:
- 简单性:协议结构简单,易于实现。
- 灵活性:支持多种数据编码格式,如16位BCD码或32位IEEE浮点数。
- 功能码:使用功能码来区分不同的命令和请求,如读取保持寄存器、写入保持寄存器等。
- 地址域:允许在同一个网络上寻址多个设备。
- 数据域:传输的数据包括寄存器地址和数据值。
3)设计方案
如果设计一款12路车载超声波雷达,采用STM32F103+HC-SR04超声波模块,并提供RS485和Modbus协议,设计方案如下:
-
硬件设计:
- 主控制器:选择STM32F103系列MCU作为主控制器,因为它具备足够的处理能力和丰富的外设接口。
- 超声波传感器:使用HC-SR04超声波模块作为测距传感器,每个模块包含一个超声波发射器和一个接收器。
- RS485通信接口:集成RS485收发器,用于实现Modbus协议的通信。
- 电源管理:设计电源电路,确保传感器和MCU的稳定供电。
-
软件设计:
- 驱动程序:编写HC-SR04超声波模块的驱动程序,实现距离测量和数据采集。
- Modbus协议栈:实现Modbus协议栈,处理Modbus功能码和数据交换。
- 通信管理:编写RS485通信管理程序,实现数据的发送和接收。
- 任务调度:设计任务调度程序,协调各个超声波模块的数据采集和通信任务。
-
系统架构:
- 主控单元:STM32F103作为中心处理单元,负责协调整个系统的工作。
- 传感器阵列:12个HC-SR04模块分布在车辆周围,用于测量距离。
- 通信协议:通过Modbus协议实现与车辆其他系统的通信。
- 用户接口:可选配LCD或LED指示灯,显示系统状态和测量结果。
-
测试与验证:
- 单元测试:对每个模块进行单独测试,确保其功能正常。
- 集成测试:将所有模块集成到系统中,测试整体性能和通信协议的兼容性。
- 环境测试:在实际车辆环境中测试系统的稳定性和可靠性。
通过上述设计方案,可以构建一个稳定、可靠且符合工业标准的12路车载超声波雷达系统。