2025年全国大学生电子设计竞赛技术报告
| 学校名称 | [你的学校全称] | 参赛编号 | [你的15位参赛编号] |
|---|---|---|---|
| 作品题目 | [请在此处填写你的作品题目,风力摆控制系统] | 参赛类别 | [本科组 / 高职高专组] |
| 队员信息 | 队员1: [姓名] (队长) 队员2: [姓名] 队员3: [姓名] |
指导教师 | [指导教师姓名] |
| 提交日期 | [2025年8月31日] | 页 数 | [总页数] |
摘要
(本部分是报告的高度浓缩,约300-500字,应包含项目背景、设计目标、总体方案、核心实现、最终成果和创新点。) ** 是2025年全国大学生电子设计竞赛的赛题之一,本设计旨在实现 [简述作品的核心功能,控制风力摆实现各种轨迹运动],系统以 [核心控制器,STM32F103系列微控制器] 为核心,结合高精度传感器 [MPU6050九轴传感器] 和大功率直流电机驱动模块 [L298N驱动模块] 构成闭环控制系统。

硬件设计上,系统由主控模块、姿态检测模块、电机驱动模块、电源模块和辅助人机交互模块组成,软件设计上,我们采用 [核心算法,卡尔曼滤波] 对传感器数据进行融合处理,以提高姿态解算的精度;并设计了 [控制算法,增量式PID] 控制算法,实时调整电机转速,以实现稳定控制。
经过测试与调试,本系统成功实现了 [列举实现的主要功能,静止、画线、画圆、摆动等] 功能,系统运行稳定,响应迅速,轨迹误差控制在 [±2cm] 以内,各项性能指标均达到或超过题目要求,本设计在控制算法、硬件集成和系统稳定性方面进行了创新性探索,具有较高的实用价值和扩展性。
[风力摆;STM32;PID控制;MPU6050;卡尔曼滤波]
目录
- 系统方案论证 ........................................................................................................... [X] 1.1. 任务分析与设计目标 ..................................................................................... [X] 1.2. 系统总体方案设计 ......................................................................................... [X] 1.3. 核心控制器选型 ............................................................................................. [X] 1.4. 传感器选型 ..................................................................................................... [X] 1.5. 执行机构选型 ................................................................................................. [X] 1.6. 电源方案选型 ................................................................................................. [X]
- 理论分析与计算 ................................................................................................... [X] 2.1. 建模与控制策略 ............................................................................................. [X] 2.2. PID控制参数整定 ........................................................................................... [X] 2.3. 传感器数据融合与滤波 ................................................................................. [X] 2.4. 电机驱动与PWM计算 ..................................................................................... [X]
- 电路与程序设计 ................................................................................................... [X] 3.1. 硬件电路设计 ................................................................................................. [X] 3.1.1. 主控电路 ............................................................................................. [X] 3.1.2. 传感器电路 ......................................................................................... [X] 3.1.3. 电机驱动电路 ..................................................................................... [X] 3.1.4. 电源管理电路 ..................................................................................... [X] 3.2. 软件程序设计 ................................................................................................. [X] 3.2.1. 开发环境与总体流程 ......................................................................... [X] 3.2.2. 传感器数据采集与处理程序 ............................................................. [X] 3.2.3. 控制算法实现程序 ............................................................................. [X] 3.2.4. 电机PWM输出与驱动程序 ............................................................... [X] 3.2.5. 任务调度与状态机设计 ..................................................................... [X]
- 系统测试与结果分析 ........................................................................................... [X] 4.1. 测试环境与仪器 ............................................................................................. [X] 4.2. 硬件模块测试 ................................................................................................. [X] 4.3. 软件功能测试 ................................................................................................. [X] 4.4. 系统整体性能测试 ......................................................................................... [X] 4.5. 测试结果分析与误差讨论 ............................................................................. [X]
- ......................................................................................................................... [X]
- 参考文献 ............................................................................................................... [X]
- 附录 ......................................................................................................................... [X] 7.1. 系统完整电路原理图 ..................................................................................... [X] 7.2. 核心源代码清单 ............................................................................................. [X] 7.3. 实物照片 ......................................................................................................... [X]
系统方案论证
1. 任务分析与设计目标
本赛题要求设计并制作一个风力摆控制系统,能够控制摆杆在规定时间内完成指定轨迹,具体任务分解如下:

- 基本任务: 实现风力摆的静止平衡控制。
- 发挥部分任务:
- 在规定时间内,控制摆杆从静止开始,摆动到与竖直方向成特定角度并保持稳定。
- 控制摆杆在竖直平面内沿任意直线轨迹运动。
- 控制摆杆在竖直平面内沿任意圆形轨迹运动。
- 其他创新功能。
设计目标:
- 稳定性: 系统启动后能在短时间内达到静止平衡状态,抗干扰能力强。
- 精度: 轨迹运动(直线、圆)的误差小,姿态控制角度准确。
- 响应速度: 对控制指令的响应迅速,动态性能好。
- 可靠性: 系统长时间运行稳定,不易死机或失控。
2. 系统总体方案设计
为实现上述目标,我们设计了如图1所示的系统总体框图,系统采用“传感器-控制器-执行器”的闭环控制结构。
[图1:系统总体框图] (此处应插入一个框图,包含:风力摆(含电机) -> 传感器 -> 主控制器 -> 电机驱动器 -> 风力摆,形成一个闭环,主控制器连接电源模块和按键/显示等交互模块。)
3. 核心控制器选型
51系列单片机 (如STC89C52)

- 优点: 成本极低,资料丰富,开发简单。
- 缺点: 运算速度慢,片上资源(如定时器、PWM通道)有限,难以实现复杂的卡尔曼滤波和PID控制算法,实时性较差。
STM32系列微控制器 (如STM32F103ZET6)
- 优点: 基于 ARM Cortex-M3 内核,主频高(可达72MHz),拥有丰富的片上资源(多个高级定时器、ADC、SPI/I2C通信接口),支持硬件浮点运算(FPU),能够高效处理传感器数据和执行复杂控制算法。
- 缺点: 相比51单片机,学习曲线稍陡。
考虑到系统对实时性和计算能力的高要求,我们选择 方案二,STM32F103ZET6 作为主控制器。
4. 传感器选型
单轴/双轴加速度计
- 优点: 成本低。
- 缺点: 无法直接测量角速度,且静态下易受重力加速度影响,无法解算完整姿态。
六轴惯性测量单元 (IMU,如MPU6050)
- 优点: 集成了三轴加速度计和三轴陀螺仪,通过数据融合(如卡尔曼滤波)可以精确计算出摆杆的俯仰和横滚角度,满足姿态检测需求。
- 缺点: 成本相对较高。
为获取完整的姿态信息,我们选择 方案二,MPU6050 作为核心传感器。
5. 执行机构选型
舵机
- 优点: 控制简单,自带减速箱,输出扭矩大。
- 缺点: 响应速度较慢,难以满足风力摆快速摆动的要求,且线性度不佳。
直流减速电机
- 优点: 响应速度快,转速高,通过PWM控制可以方便地调节转速和方向,配合风扇叶片能产生足够的风力。
- 缺点: 需要外接电机驱动电路,控制算法相对复杂。
考虑到风力摆需要快速、连续的风力变化,我们选择 方案二,直流减速电机 作为执行机构。
6. 电源方案选型
系统需要为STM32、传感器、电机和风扇等模块供电,电机功率较大,需单独供电。
- 主控制器与传感器供电: 采用LM2596等降压模块,将12V锂电池电压降压至5V,再通过AMS1117-3.3V稳压至3.3V为STM32和MPU6050供电。
- 电机供电: 直接使用12V锂电池供电,通过电机驱动模块进行控制。
采用 12V锂电池 + 多级稳压 的方案,满足不同模块的供电需求,保证系统稳定运行。
理论分析与计算
1. 建模与控制策略
风力摆可以简化为一个倒立摆系统,其运动方程复杂,具有非线性、强耦合的特性,我们采用经典的 PID(比例-积分-微分)控制算法 进行闭环控制。
- P(比例)环节: 快速响应误差,误差越大,控制作用越强。
- I(积分)环节: 消除稳态误差,防止系统在目标位置附近震荡。
- D(微分)环节: 预见误差的变化趋势,抑制超调,提高系统稳定性。
控制策略上,我们采用 位置式PID,将传感器反馈的实时角度与目标角度进行比较,得到误差 e(t),然后通过PID公式计算控制量 u(t),该控制量经过转换后输出给电机驱动器。
2. PID控制参数整定
PID参数的整定是系统成败的关键,我们采用 试凑法 结合 Ziegler-Nichols经验公式 进行整定。
- 整定P: 先将I和D置零,从小到大增加P,直到系统开始出现等幅震荡,记录此时的临界增益
Ku和临界震荡周期Tu。 - 整定PI: 根据Z-N公式(如P=0.6Ku, I=1.2Ku/Tu),设置P和I,消除稳态误差。
- 整定PID: 加入D环节,从零开始增加D,以抑制超调,使系统快速平稳地达到目标。
经过反复调试,我们为不同任务(静止、画线、画圆)找到了一组较优的PID参数。
3. 传感器数据融合与滤波
MPU6050的原始数据存在噪声,陀螺仪存在漂移,加速度计在动态下噪声大,我们采用 互补滤波 或 卡尔曼滤波 对两者数据进行融合。
- 互补滤波原理: 利用陀螺仪积分得到的角度(短期准确,长期漂移)和加速度计得到的角度(短期不准,长期稳定)进行加权融合,得到更准确的姿态角。
- 卡尔曼滤波: 更为高级的状态估计算法,能更有效地处理噪声,但计算量也更大,在STM32上实现了简化版的卡尔曼滤波,显著提高了角度解算的精度和稳定性。
4. 电机驱动与PWM计算
我们使用L298N驱动模块,通过控制其使能端和输入端的电平,实现电机的正转、反转和停止,控制量 u(t) 经过限幅后,转换为PWM的占空比,PWM的频率设置为20kHz以上,以减小电机噪音。
电路与程序设计
1. 硬件电路设计
(此处应附上详细的电路原理图,并用文字说明各模块的设计要点。)
1.1. 主控电路 以STM32F103ZET6为核心,包括最小系统电路(电源、晶振、复位)、SWD下载调试接口,PA0-PA7用于连接按键,PC0-PC3用于连接数码管段选,PD0-PD3用于连接数码管位选。
1.2. 传感器电路 MPU6056通过I2C接口(SCL-PA8, SDA-PA9)与STM32连接,VCC接3.3V,GND接地,为提高抗干扰性,I2C总线上接了4.7K的上拉电阻。
1.3. 电机驱动电路 L298N的IN1、IN2、IN3、IN4分别由STM32的4个GPIO口控制,ENA、ENB使能端由2路PWM输出控制,以实现转速调节,电源输入端接12V,逻辑供电端接5V。
1.4. 电源管理电路 使用两节18650锂电池串联提供12V电源,通过LM2596-5V降压模块得到5V,为L298N逻辑部分和数码管供电,再通过AMS1117-3.3V得到3.3V,为STM32和MPU6050供电,各路电源均并联了滤波电容,确保供电稳定。
2. 软件程序设计
(此处应附上软件流程图,并用文字说明主要模块的功能。)
2.1. 开发环境与总体流程 开发环境:Keil MDK 5.24。 软件采用 前后台系统 设计,主循环(后台)负责按键扫描、数码管显示、任务调度,定时器中断(前台)以固定频率(如1kHz)执行传感器数据读取、姿态解算、PID计算和PWM输出。
2.2. 传感器数据采集与处理程序 在定时器中断中,通过I2C读取MPU6050的加速度计和陀螺仪原始数据,调用 Kalman_Filter_Update() 函数进行数据融合,得到当前摆杆的俯仰角和横滚角。
2.3. 控制算法实现程序
根据当前任务模式(静止、画线等),设定目标角度或轨迹方程,在定时器中断中,将传感器反馈的角度与目标值比较,计算误差 e,调用 PID_Calculate() 函数,输出控制量 u。
2.4. 电机PWM输出与驱动程序
将PID输出的控制量 u 进行限幅(如-1000到1000),映射到PWM的占空比(如0%到100%),根据控制量的正负,设置GPIO口控制电机转向,并通过PWM定时器设置占空比,从而控制电机转速。
2.5. 任务调度与状态机设计 在主循环中,通过一个状态机来管理不同的任务模式,根据按键输入或串口指令,切换状态机的状态(如STATE_IDLE, STATE_BALANCE, STATE_DRAW_LINE等),并更新PID的目标值和控制逻辑。
系统测试与结果分析
1. 测试环境与仪器
- 测试平台: 标准竞赛风力摆底座、摆杆。
- 测试仪器: 直流稳压电源、数字万用表、卷尺、秒表、量角器。
2. 硬件模块测试
- 电源模块: 测量各路输出电压,均在正常范围内,且带载后稳定。
- 传感器模块: 静止时,MPU6050输出角度应为0度;旋转时,角度变化平滑,符合预期。
- 电机驱动模块: 单独上电测试,电机能正常正反转,转速随PWM占空比变化。
3. 软件功能测试
- PID控制测试: 手动拨动摆杆,系统能迅速将其拉回竖直位置,无震荡或超调过大。
- 任务切换测试: 通过按键切换不同任务模式,系统能正确响应并进入相应状态。
4. 系统整体性能测试
(此处应使用表格和图表展示测试数据。)
| 测试项目 | 要求 | 实测结果 | 评价 |
|---|---|---|---|
| 静止平衡 | 5秒内稳定在竖直位置 | 3秒内稳定,误差<±1° | 优秀 |
| 摆动到30° | 10秒内摆动到30°并保持 | 8秒内完成,稳定保持 | 优秀 |
| 画直线(10cm) | 15秒内完成,误差<±2cm | 12秒完成,误差<±1.5cm | 良好 |
| 画圆(半径5cm) | 20秒内完成,误差<±2cm | 18秒完成,误差<±1.8cm | 良好 |
5. 测试结果分析与误差讨论
系统基本完成了所有要求的功能,主要误差来源包括:
- 机械装配误差: 电机安装不完全对称,导致左右风力不均。
- 传感器安装误差: MPU6056安装时与摆杆不完全垂直,导致角度解算存在固定偏差。
- 算法局限性: PID控制是线性控制,对非线性系统控制效果有限,尤其是在高速运动时。
- 环境干扰: 气流、桌面震动等外部因素对系统稳定性有影响。
本设计基于STM32微控制器,成功实现了一个高精度的风力摆控制系统,通过硬件选型、电路设计、软件编程和算法优化,系统在稳定性、精度和响应速度方面均达到了预期目标,实践证明,本方案可行,控制算法有效,为类似倒立摆控制系统的设计提供了有价值的参考。
参考文献
[1] 王晓明. 电动机的单片机控制[M]. 北京航空航天大学出版社, 2012. [2] 刘金琨. 先进PID控制MATLAB仿真(第3版)[M]. 电子工业出版社, 2011. [3] Invensense. MPU-6050 Product Specification Revision 3.4[EB/OL]. 2025. [4] STMicroelectronics. STM32F103xx Datasheet[EB/OL]. 2011.
附录
1. 系统完整电路原理图
(附上A3或A4大小的完整电路原理图)
2. 核心源代码清单
(附上关键部分的源代码,如PID函数、卡尔曼滤波函数、主程序和中断服务函数,并进行必要注释)
3. 实物照片
(附上系统各模块和整体实物的清晰照片)
[指导教师评语]
(此部分由指导教师填写)
[赛区评审意见]
(此部分由赛区评委填写)
