当前位置: 首页 > article >正文

嵌入式硬件篇---陀螺仪|PID


文章目录

  • 前言
  • 1. 硬件准备
    • 主控芯片
    • 陀螺仪模块
    • 电机驱动
    • 电源
    • 其他
  • 2. 硬件连接
  • 3. 软件实现步骤
    • (1) MPU6050初始化与数据读取
    • (2) 姿态解算(互补滤波或DMP)
    • (3) PID控制器设计
    • (4) 麦克纳姆轮协同控制
  • 4. 主程序逻辑
  • 5. 关键优化与调试技巧
    • (1) 传感器校准
    • (2) PID参数整定
      • 先调P
      • 再调D
      • 最后调I
    • (3) 动态稳定性增强
      • 死去处理
  • 6. 扩展功能
    • (1) 遥控控制叠加
    • (2) 多传感器融合
  • 7. 常见问题解决
    • 问题1:小车剧烈振荡
    • 问题2:车身缓慢倾斜
    • 问题3:电机响应延迟


前言

在STM32F103RCT6上使用陀螺仪(如MPU6050)结合PID算法实现麦克纳姆轮小车的车身稳定控制(如自平衡或抗倾斜),需要融合传感器数据、姿态解算和电机协同控制。以下是详细实现步骤:


1. 硬件准备

主控芯片

主控芯片:STM32F103RCT6(72MHz Cortex-M3,带硬件I²C和PWM)。

陀螺仪模块

陀螺仪模块:MPU6050(集成3轴加速度计+3轴陀螺仪,I²C接口)。

电机驱动

电机驱动:4个麦克纳姆轮+4个直流电机(需带编码器反馈,如TB6612驱动)。

电源

电源:12V锂电池(需稳压至5V/3.3V供模块使用)。

其他

其他:OLED(显示姿态角,可选)、稳压模块。

2. 硬件连接

MPU6050引脚 STM32引脚 说明
VCC 3.3V 模块供电
GND GND 共地
SDA PB7 I²C数据线
SCL PB6 I²C时钟线
INT PA0 中断引脚(可选)
电机驱动 STM32引脚 说明
PWM1~4 PA8, PA9, PA10, PA11 4路PWM输出
电机方向控制 任意GPIO 如PB0~PB3

3. 软件实现步骤

(1) MPU6050初始化与数据读取

#include "mpu6050.h"
MPU6050_HandleTypeDef hmpu;void MPU6050_Init() {hmpu.i2c = &hi2c1; // I²C初始化略MPU6050_Reset(&hmpu);MPU6050_SetGyroRange(&hmpu, MPU6050_GYRO_RANGE_500DPS);MPU6050_SetAccelRange(&hmpu, MPU6050_ACCEL_RANGE_4G);
}// 读取原始数据(需定期调用,如1kHz)
void Read_MPU6050() {MPU6050_ReadAccel(&hmpu);MPU6050_ReadGyro(&hmpu);
}

(2) 姿态解算(互补滤波或DMP)

互补滤波示例(融合加速度计和陀螺仪数据):
float pitch_angle = 0; // 俯仰角(前后倾斜)
float gyro_bias = 0;   // 陀螺仪零偏void Update_Attitude() {float dt = 0.001f;   
http://www.lryc.cn/news/2385357.html

相关文章:

  • 电机控制储备知识学习(五) 三项直流无刷电机(BLDC)学习(四)
  • Java—— 网络爬虫
  • Baklib内容中台的主要构成是什么?
  • 深度解析 Java 中介者模式:重构复杂交互场景的优雅方案
  • 家用和类似用途电器的安全 第1部分:通用要求 与2005版差异(7)
  • HTTP Digest 认证:原理剖析与服务端实现详解
  • untiy实现汽车漫游
  • PID项目---硬件设计
  • Pluto实验报告——基于FM的音频信号传输并解调恢复
  • 【Redis】AOF日志
  • Leetcode 2792. 计算足够大的节点数
  • 《关于浔川社团退出DevPress社区及内容撤回的声明》
  • Windows逆向工程提升之IMAGE_RESOURCE_DIRECTORY
  • 使用ps为图片添加水印
  • x64_ubuntu22.04.5安装:cuda driver + cuda toolkit
  • 开盘啦 APP 抓包 逆向分析
  • vs2022 Qt Visual Studio Tools插件设置
  • Python包__init__.py标识文件解析
  • 【MySQL】第8节|Innodb底层原理与Mysql日志机制深入剖析(一)
  • 电商ERP管理系统,Java+Vue,含源码与文档,统筹订单、库存等,助力电商企业高效运营
  • Spring Boot微服务架构(四):微服务的划分原则
  • 【打卡】树状数组的操作
  • OpenLayers 加载动画控件
  • Oracle 基础知识作业的使用
  • HTTP协议初认识、速了解
  • C#:多线程Task使用
  • 模拟电子技术基础----绪论
  • 从零基础到最佳实践:Vue.js 系列(2/10):《模板语法与数据绑定》
  • iOS 使用 - 设置 来电震动/关闭震动
  • anaconda、miniconda、conda的关系及miniconda安装