登录/注册

stm32超声波雷达扫描

更多

要实现STM32的超声波雷达扫描系统,主要包括硬件连接、工作原理和编程实现。以下是详细步骤:


1. 系统组成


2. 硬件连接

STM32引脚 外设模块 功能
PA0 HC-SR04 Trig 触发信号输出
PA1 HC-SR04 Echo 回波信号输入
PA6 SG90 PWM信号线 控制舵机旋转角度
UART1 PC串口/USB转TTL 传输扫描数据到PC

3. 工作原理

  1. 舵机控制
    • 通过PWM信号控制舵机角度(0.5ms-2.5ms脉宽对应0°-180°)。
    • 扫描范围:0° → 90° → 180° → 90° → 0°(往复扫描)。
  2. 超声波测距
    • STM32发送10μs高电平触发信号。
    • 测量Echo引脚高电平持续时间 ( t )。
    • 距离计算:( \text{距离} = \frac{t \times 340}{2 \times 10000} )(单位:cm)。
  3. 雷达扫描
    • 在每个角度获取一次距离数据,形成极坐标数据点(角度+距离)。
  4. 数据显示
    • OLED显示实时角度和距离。
    • 串口发送数据到PC,使用Python等工具绘制雷达图。

4. STM32代码实现(Keil MDK)

#include "stm32f4xx_hal.h"
#include <stdio.h>

// 引脚定义
#define TRIG_PIN GPIO_PIN_0
#define TRIG_PORT GPIOA
#define ECHO_PIN GPIO_PIN_1
#define ECHO_PORT GPIOA
#define SERVO_PWM_PIN GPIO_PIN_6
#define SERVO_PWM_PORT GPIOA

// 全局变量
TIM_HandleTypeDef htim2;  // 定时器2用于PWM
TIM_HandleTypeDef htim3;  // 定时器3用于超声波计时

// 初始化函数
void SystemClock_Config(void);
void GPIO_Init(void);
void TIM_Init(void);

// 超声波测距函数
float Get_Distance(void) {
    // 发送10us触发信号
    HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_SET);
    delay_us(10);
    HAL_GPIO_WritePin(TRIG_PORT, TRIG_PIN, GPIO_PIN_RESET);

    // 等待回波信号
    while (!HAL_GPIO_ReadPin(ECHO_PORT, ECHO_PIN));
    __HAL_TIM_SET_COUNTER(&htim3, 0);
    while (HAL_GPIO_ReadPin(ECHO_PORT, ECHO_PIN));
    uint32_t echo_time = __HAL_TIM_GET_COUNTER(&htim3);

    // 计算距离(单位:cm)
    return echo_time * 0.034 / 2;
}

// 舵机角度控制
void Set_Servo_Angle(uint8_t angle) {
    // 舵机PWM公式:0.5ms (0°) -> 2.5ms (180°)
    uint16_t pulse = 500 + angle * 2000 / 180; // 转换为脉宽值(单位:us)
    __HAL_TIM_SET_COMPARE(&htim2, TIM_CHANNEL_1, pulse);
    HAL_Delay(20); // 等待舵机转动
}

int main(void) {
    HAL_Init();
    SystemClock_Config();
    GPIO_Init();
    TIM_Init();

    // 启动定时器
    HAL_TIM_PWM_Start(&htim2, TIM_CHANNEL_1); // 舵机PWM
    HAL_TIM_IC_Start(&htim3, TIM_CHANNEL_2);  // 超声波计时

    while (1) {
        for (int angle = 0; angle <= 180; angle += 10) {
            Set_Servo_Angle(angle);
            float dist = Get_Distance();

            // 通过串口发送数据到PC(格式:角度,距离)
            printf("%d,%.2f\n", angle, dist);
        }
        for (int angle = 180; angle >= 0; angle -= 10) {
            Set_Servo_Angle(angle);
            float dist = Get_Distance();
            printf("%d,%.2f\n", angle, dist);
        }
    }
}

5. PC端数据处理(Python示例)

使用Python接收串口数据并绘制雷达图:

import serial
import numpy as np
import matplotlib.pyplot as plt

ser = serial.Serial('COM3', 115200)  # 串口配置
plt.ion()  # 开启交互模式

while True:
    data = ser.readline().decode().strip().split(',')
    if len(data) == 2:
        angle = int(data[0])
        dist = float(data[1])

        # 转换为笛卡尔坐标
        x = dist * np.cos(np.radians(angle))
        y = dist * np.sin(np.radians(angle))

        # 更新雷达图
        plt.clf()
        plt.scatter(x, y, c='red', s=20)
        plt.xlim(-100, 100)
        plt.ylim(0, 100)
        plt.pause(0.01)

6. 关键注意事项

  1. 定时器配置
    • 超声波高电平时间测量需使用输入捕获模式(精度1μs)。
    • 舵机PWM频率需50Hz(周期20ms)。
  2. 防干扰处理
    • 添加距离滤波(如中值滤波)。
    • 设置有效距离范围(2cm~400cm)。
  3. 性能优化
    • 使用DMA传输串口数据。
    • 减少扫描步进角(如5°)以提高分辨率。

7. 扩展功能

通过上述步骤,即可完成基于STM32的超声波雷达扫描系统。实际应用时需根据硬件调整参数,并通过实验校准距离精度。

超声波雷达和360影像有什么用

超声波雷达和360影像是两种不同的技术,它们在不同的领域有着广泛的应用。以下是对这两种技术的介绍。 一、超声波

2024-08-16 10:22:52

第七章-V1.5 STM32超声波测距STM32F103C8t6超声波避障小车 超声波避障模块 STM32超声波测距

5STM32超声波测距STM32F103C8t6超声波避障小车

2024-08-15 16:25:10

超声波(Ultrasound,又称超声波雷达)定位

超声波(Ultrasound,又称超声波雷达)定位,即使用发射探头发出频率大于20KHz的

2022-03-11 19:29:37

科力超声波清洗机132KHz超声波换能器图纸

科力超声波清洗机132KHz超声波换能器图纸

资料下载 Kelisonic 2023-07-08 03:05:46

制作基于Arduino的超声波雷达

电子发烧友网站提供《制作基于Arduino的超声波雷达.zip》资料免费下载

资料下载 李泽坚 2023-02-08 15:35:05

stm32捕获占空比_基于STM32超声波避障小车

stm32捕获占空比_基于STM32超声波避障小车

资料下载 Petc 2021-11-23 16:21:10

stm32捕获占空比_基于STM32超声波避障小车

stm32捕获占空比_基于STM32超声波避障小车

资料下载 丁冬芹 2021-11-22 19:21:03

超声波倒车雷达的源代码程序免费下载

本文档的主要内容详细介绍的是超声波倒车雷达的源代码程序免费下载。

资料下载 杨海清 2019-08-07 17:33:00

毫米波/激光/超声波雷达的区别是什么?

毫米波/激光/超声波雷达的区别是什么?

2021-09-29 06:23:42

基于STM32超声波测距设计

基于STM32F103的超声波测距(定时器)使用的硬件设备:stm32f103c8t6,0.96寸OLED,

2021-07-22 08:53:51

怎么实现基于超声波检测的倒车雷达设计?

本文所设计的倒车雷达系统是保障汽车倒车安全的辅助系统,通过超声波探头发出超声波,使用高速单片机计算距离,并加入了温度补偿电路,提高了距离计算的精

2021-05-14 06:04:41

超声波液位计和雷达液位计的区别

超声波液位计和雷达液位计都是液位测量仪表。顾名思义,一种采用超声波,一种采用电磁波,除此之外,

2020-06-24 14:59:31

elmos E524.09超声波雷达配置问题

最近在做超声波雷达驱动这部分工作,发现用MEAS_STEUP命令配置雷达不成功。不知道大家在实际操作中有没有遇到过这种问题,或许是我哪里的操作有

2020-05-22 13:32:45

dfrobot超声波扫描套件简介

想拥有一个超声波扫描仪?不是什么难事!只要在舵机上装在支架和超声波就可以达到理想的效果。

2019-12-24 14:14:41

毫米波雷达VS激光雷达VS超声波雷达

近年来,随着雷达技术的发展和普及,科技大片中的无人驾驶离我们越来越近。全球很多中高档汽车已经开始配备汽车雷达。目前用于汽车上的雷达分为

2019-09-19 09:05:02
7天热门专题 换一换
相关标签