站内搜索
发作品签到
PID项目
专业版

PID项目

简介

简易的PID练习项目,其中包含MPU6050基础的姿态结算,stm32f103c8t6针脚全部引出,方便日常学习,增加12v.5v3.3v供电外置(如果使用5v12v,必须外置供电)

简介:简易的PID练习项目,其中包含MPU6050基础的姿态结算,stm32f103c8t6针脚全部引出,方便日常学习,增加12v.5v3.3v供电外置(如果使用5v12v,必须外置供电)
复刻成本:30

开源协议

GPL 3.0

创建时间:2025-09-07 22:01:48更新时间:2025-09-09 10:19:27

描述

基于 STM32F103C8T6 简易PID学习项目文档(兼有MPU6050)

[HuiSpec](GitHub - HuiSpec/PID)

1. 项目概述

本项目基于 STM32F103C8T6 最小系统板,结合 TB6612 电机驱动模块,实现对电机的 PID 控制。同时,通过 MPU6050 传感器采集六轴数据(加速度和角速度)并在 OLED 显示屏上显示。此外,按键模块移植了开源的 multi_button 库,用于提供丰富且灵活的按键功能,目前可用于设置 PID 参数、切换显示界面、控制电机启停等操作。

2. 硬件组成

2.1 核心控制器

  • 型号:STM32F103C8T6 最小系统板
  • 功能:作为系统核心,负责 PID 算法运算、电机驱动控制、MPU6050 数据采集、OLED 显示控制以及按键交互等所有逻辑处理。

2.2 传感器模块

  • MPU6050
    • 功能:集成加速度计和陀螺仪,采集系统的加速度和角速度六轴数据,通过 I2C 传输给 STM32,仅用于数据读取与显示,暂未参与 PID 控制反馈。

2.3 电机驱动模块

  • TB6612
    • 功能:接收 STM32 输出的控制信号(如 PWM 等),驱动电机运转,实现对电机转速、方向等的控制,是 PID 控制的执行端。

2.4 电源模块

  • LDO 模块(2 个)
    • 功能:将输入的 12V DC 电源分别转换为 5V 和 3.3V。5V 为 TB6612 等外设供电,3.3V 为 STM32 单片机、OLED 显示屏、MPU6050、五向按键模块等供电。

2.5 显示与交互模块

  • OLED 显示屏
    • 功能:实时显示系统状态信息,包括 PID 控制相关参数(如设定值、实际值、输出值等)以及 MPU6050 采集的六轴数据。
  • 五向按键模块
    • 功能:提供人机交互接口,可用于设置 PID 参数、切换显示界面、控制电机启停等操作。

3. 软件结构(基于提供的项目文件树)

3.1 目录结构说明

  • Core
    • Inc:存放头文件,包含系统各模块功能的声明,如 PID 控制、MPU6050 驱动、OLED 显示、电机驱动等。
    • Src:存放源文件,是各功能模块的具体实现代码,如主程序、中断服务函数等。
  • Drivers
    • CMSIS:包含 ARM Cortex-M 系列内核的通用系统接口文件,为 STM32 芯片的内核操作提供支持。
    • STM32F1xx_HAL_Driver:STM32F1 系列的 HAL(硬件抽象层)驱动库,封装了芯片各类外设(如 GPIO、I2C、TIM 等)的操作接口,方便开发者使用外设。
  • User
    • 包含多个功能子模块目录:
      • BUTTON:五向按键模块的驱动与功能实现代码,用于处理按键输入。
      • ENCODER:(若有编码器相关功能,此处为编码器驱动与处理代码,本项目暂未明确提及编码器,可根据实际情况补充或说明)。
      • GUI:与 OLED 显示相关的图形界面处理代码,用于控制 OLED 显示内容与格式。
      • LED:此处为 LED 驱动与控制代码。
      • MPU6050:MPU6050 传感器的驱动代码,包括 I2C 通信、六轴数据读取与解析等功能。
      • OLED:OLED 显示屏的驱动代码,实现显示初始化、字符与图形显示等功能。
      • PID:PID 控制算法的实现代码,包含 PID 参数设置、误差计算、PID 输出计算等功能,用于电机控制。
  • 其他文件
    • Makefile:用于构建项目的编译脚本,定义了编译规则、目标文件生成等。
    • platformio.ini:PlatformIO 开发环境的配置文件,可配置开发板类型、框架、编译选项等。
    • startup_stm32f103xb.s:STM32 芯片的启动文件,包含系统启动时的初始化代码,如堆栈设置、中断向量表等。
    • STM32F103C8Tx_FLASH.ld:链接脚本,定义了程序在芯片内存(Flash、RAM 等)中的存储布局,如代码段、数据段的起始地址与大小等。
    • STM32F103_PID-BUTTON.ioc:STM32CubeMX 生成的项目配置文件,记录了芯片外设的配置信息(如引脚分配、时钟设置等),可通过 STM32CubeMX 打开并修改配置。

3.2 主要功能流程

  1. 系统初始化:包括 STM32 外设初始化(如 GPIO 用于按键、电机驱动;I2C 用于与 MPU6050、OLED 通信;TIM 用于 PWM 输出等)、MPU6050 初始化、OLED 初始化、PID 参数初始化、TB6612 相关初始化等。
  2. 数据采集与显示:通过 I2C 接口从 MPU6050 读取六轴数据(加速度和角速度),并将这些数据实时显示在 OLED 显示屏上。
  3. PID 控制与电机驱动:根据设定的目标(如电机转速目标值),结合反馈(如实际电机转速反馈,可通过编码器等方式获取,本项目中若未用编码器,可基于控制逻辑的反馈等),计算误差值,代入 PID 算法计算出控制量,通过控制 TB6612 驱动电机运转。
  4. 交互处理:检测五向按键输入,根据按键操作调整 PID 参数、切换 OLED 显示内容(如在 MPU6050 数据显示界面和 PID 控制参数界面间切换)、控制电机启停等。

4. 使用说明

4.1 硬件连接

STM32F103_PID-BUTTON.ioc:STM32CubeMX 生成的项目配置文件,记录了芯片外设的配置信息(如引脚分配、时钟设置等),可通过 STM32CubeMX 打开并修改配置。

4.2 软件编译与下载

4.2.1 使用 PlatformIO

  1. 确保已安装 PlatformIO 开发环境。
  2. 将项目代码克隆到本地。
  3. 打开项目目录,在 platformio.ini 中确认开发板等配置正确。
  4. 执行编译命令(如在 PlatformIO IDE 中点击编译按钮),生成可执行文件。
  5. 通过下载工具(如 ST-Link)将程序下载到 STM32F103C8T6 芯片中。

4.2.2 使用其他工具链

若使用 Keil 等其他开发工具,可根据 MakefileSTM32F103C8Tx_FLASH.ld 等文件中的信息,配置项目工程,添加相应的源文件和头文件,进行编译和下载。

设计图

未生成预览图,请在编辑器重新保存一次

BOM

暂无BOM

3D模型

序号文件名称下载次数
暂无数据

附件

序号文件名称下载次数
暂无数据
克隆工程
添加到专辑
0
0
分享
侵权投诉
知识产权声明&复刻说明

本项目为开源硬件项目,其相关的知识产权归创作者所有。创作者在本平台上传该硬件项目仅供平台用户用于学习交流及研究,不包括任何商业性使用,请勿用于商业售卖或其他盈利性的用途;如您认为本项目涉嫌侵犯了您的相关权益,请点击上方“侵权投诉”按钮,我们将按照嘉立创《侵权投诉与申诉规则》进行处理。

请在进行项目复刻时自行验证电路的可行性,并自行辨别该项目是否对您适用。您对复刻项目的任何后果负责,无论何种情况,本平台将不对您在复刻项目时,遇到的任何因开源项目电路设计问题所导致的直接、间接等损害负责。

底部导航