STM32控制下的闭环风力摆系统:PID算法与姿态监控

1星 需积分: 40 17 下载量 17 浏览量 更新于2024-09-09 2 收藏 12KB TXT 举报
全国大学生电赛B题风力摆项目是一款基于STM32单片机为核心的闭环控制系统,其核心功能是通过姿态采集模块(如MPU-6050陀螺仪)实时监控风力摆的运动状态,包括姿态角(pitch, roll, yaw)和角速度,然后利用PID(比例-积分-微分)算法来精确控制轴流电机的转速,从而实现风力摆的稳定控制。该系统的设计主要包括以下几个关键部分: 1. **硬件组件**: - STM32单片机(STM32f103):作为系统的中央处理器,负责数据处理和控制命令的发送。 - MPU-6050陀螺仪传感器:用于采集风力摆的姿态信息,包括角度和角速度数据。 - 轴流电机:执行PID算法调整后的转速指令,驱动风力摆的运动。 - 人机交互系统:可能包括LED灯和OLED显示屏,用于显示当前状态和设定参数。 - 风力摆机械结构:承载电机和陀螺仪,完成实际的摆动动作。 2. **软件部分**: - **PID控制器**:采用四个不同的PID函数,分别针对pitch, roll, yaw角度和风向控制。PID算法是一种常用的控制策略,它结合了比例(proportional)、积分(integral)和微分(derivative)反馈,能有效地减小误差并保持系统稳定。 - `pid()`、`pid2()`、`pid4r()` 和 `pid4p()` 函数:分别处理pitch, roll, yaw的PID控制过程,根据设定的setpoint(目标值)与当前姿态角的差值进行计算,并根据PID公式生成电机的控制信号(output)。 - `fabs()` 函数:用于获取数值的绝对值,确保在计算误差时不会受到正负号的影响。 3. **变量声明和初始化**: - `float setpoint`:预设的目标姿态或风向值。 - `zk1`, `zk2`, `zk3`, `zk4`:可能代表某种计数器或者阈值,用于辅助控制流程。 - `pitch`, `roll`, `yaw`:风力摆的实际姿态角。 - `temp`:可能是临时存储或处理的中间结果。 - `et`, `et2`, `etsum`, `det`, `output` 等:PID控制中的内部变量,用于计算误差、积分项、微分项和最终输出信号。 - `kp`, `ki`, `kd`:PID控制器的三个系数,决定控制的响应速度、积分作用和抗干扰能力。 4. **控制流程**: - 在每个PID函数中,首先计算误差(setpoint与当前姿态的差异),然后根据PID算法更新误差的积分和微分项。 - 根据误差大小调整输出信号,对于较大的误差,输出信号会增大;当误差减小时,逐渐减少输出以保持稳定。 - 为了防止过度调整,当角度变化小于某个阈值(如2度)时,设置固定输出值,以保证系统的稳定性和鲁棒性。 这个程序是全国大学生电赛B题的具体实现,参赛者需要理解和运用单片机编程、传感器技术、PID控制理论以及闭环控制系统的知识来设计和调试这个系统,确保风力摆能够按照预期准确地响应风力的变化。
906 浏览量
风力摆控制系统是2015年全国大学生电子设计竞赛赛题,做个此题的对风力摆都会印象深刻,接下来先说说实现方案: 题目分析 首先拿到这份题目,要把出题专家在题目中隐晦告诉你的关键字眼抠出来,揣摩出题专家的意图,才能尽可能的拿高分满分。在下图中把题目的关键字用红色标出来了。请看图! 通过刚才图片上面的分析,用一句话总结:专家想让学生做一个“伺服控制系统”,学过《自动控制系统》的同学肯定知道其中的意思。但是,叫“伺服控制系统”还是不够完整的,还缺少了此题最关键的字眼——随动系统!随动系统的定义是:若给定的输入信号是随时间变化的并且系统的输出量随输入量的变化而变化这种系统就称为随动系统。快速跟踪和准确定位是随动系统的两个重要技术指标。 所以完整的叫法应该是“伺服随动控制系统”。注意!给定的信号是变化的!变化的!变化的!如果理解为固定的,就达不到想要的效果。 这套控制方案实现的视频如下,这个控制方案采用MPU6050做姿态反馈,从第一问到第七问全部采用闭环反馈控制,在视频中可以看到风力摆具有很强的抗干扰能力,基本上任何暴力干扰之后都能在5秒内恢复原来的运动状态,当然用风扇吹就更不在话下了。硬件:STM32+MPU6050+L298+空心杯电机 软件:伺服随动控制器+位置式PID。 附件包含以下资料: