一种基于STM32的风力摆控制系统设计
2021-01-14毕涛葛宝川刘迪杨莉莉
毕涛 葛宝川 刘迪 杨莉莉
摘 要:本系统以STM32为核心控制芯片,由姿态采集模块、风力摆模块、人机交互模块及机械结构组成闭环控制系统。姿态采集模块采用六轴加速度陀螺仪MPU6050,采集姿态数据后通过内部集成的DMP处理单元进行姿态角的解算。STM32根据解算得到的角度计算风力摆的状态,通过调节各状态量PID参数实现对风力摆摆动幅度和线性度的控制,将输出量和输入量进行线性分解,控制风力摆完成按指定轨迹运动。本系统受到外部干扰后能快速恢复到指定状态。
关键词:风力摆;STM32;MPU6050;PID
中图分类号:TP273 文献标识码:A文章编号:2096-4706(2021)14-0068-04
Abstract: This system takes STM32 as the core control chip, and consists of attitude acquisition module, wind pendulum module, human-computer interaction module and mechanical structure, forming a closed-loop control system. Six axis acceleration gyroscope MPU6050 is used in the attitude acquisition module. After collecting the attitude data, the attitude angle is calculated through the internal integrated DMP processing unit. STM32 calculates the state of the wind pendulum according to the angle obtained by the solution,controls the swing amplitude and linearity of the wind pendulum by adjusting the PID parameters of each state quantity, linearly decomposes the volume of output and input, and controls the wind pendulum to move according to the specified track. The system can quickly recover to the specified state after external interference.
Keywords: wind pendulum; STM32; MPU6050; PID
0 引 言
風力摆控制系统是一种利用风力作为动力对物体进行位置控制的摆动装置控制系统。在工业自动化生产、飞行控制系统、娱乐场所、自动控制教学领域中,风力摆系统有很高的实用价值。目前的普遍问题是风力摆系统的自动控制水平不高。本文主要介绍风力摆控制系统的整体结构、硬件的选取、运动控制算法的分析、软件实施方案及实验结果的分析,读者可以结合所学的自动控制原理相关知识,设计风力摆系统并加以改进。
1 系统结构
本系统整体结构如图1所示,具体要求如下:
首先,控制风力摆做自由摆运动,在15秒内使激光笔在地面画出一条直线段,长度不短于50厘米,误差小于2.5厘米;其次,让风力摆以一定角度(30°~45°)摆动,5秒内使风力摆静止;最后,驱动风力摆用激光笔在地面画圆,圆的半径可在15~35厘米范围内可调,误差小于2.5厘米。
主控模块负责外部输入信号的处理和产生所需的输出信号;人机交互模块主要完成参数的设定和显示功能;倾角采集模块主要负责将风力摆的实时角度信息进行采集并转换为数字信号,传送给CPU进行处理;风机驱动模块负责产生PWM脉冲驱动风机转动;供电电源模块主要提供整个系统中所需的12 V和5 V电源。风力摆的系统结构如图2所示。
2 系统硬件方案设计
2.1 主控模块
采用STM32作为核心控制芯片。STM32F4支持J-link仿真调试,调试方便;资源丰富,有16个中断源、51个快速IO口;运行速度快,频率最高可达到72 MHz,完全能胜任题目任务要求。STM32不仅内含硬件IIC电路,可以实现较高速率的采样,并且可以直接设置输出PWM波。STM32中FPU可以专门进行浮点运算,大部分浮点运算可以在一个指令周期内完成。
2.2 姿态采集模块
采用MPU6050六轴传感器。MPU6050集成了陀螺仪和加速度传感器,可以测量三轴加速度和三轴角速度。MPU6050具有较高的精度,可测量1%的运动变化。同时MPU6050内部集成了DMP处理单元,可以独立完成姿态融合的解算,运算速度快且误差小。MPU6050可使用最高400 kHZ的IIC或最高20 MHz的SPI,符合系统要求。
2.3 风机控制模块
采用12 V、0.65 A的轴流风机。该风机重量较小,满转时可产生11.52 m/s的风速,能够实现系统要求。
采用L298为双全桥步进电机专用驱动芯片,内部包含4信道逻辑驱动电路,是一种二相和四相步进电机的专用驱动器,可同时驱动2个二相或1个四相步进电机,可直接输出PWM信号控制风机转动,电路简单,如图3所示。
2.4 人机交互模块的设计
采用12864OLED进行显示。OLED12864具有厚度薄、质量轻、响应速度快、可视角度大、发光效率高、成本低、控制简单等优点。
采用红外遥控器进行输入。红外遥控占用资源少、使用方便、按键可靠,并且可以实现10 MB内的无线遥控。
3 运动控制算法的分析
3.1 风力摆运动状态的测量
MPU6050是整合型六轴处理组件,组合了陀螺仪和加速度传感器。测得的数据通过MPU6050内部集成的DMP数字运动处理器进行姿态角解算,DMP可以进行复杂的姿态融合解算,减轻核心控制器的負担。MPU6050和控制器之间采用400 kHz的IIC通信,实现较高的采样速率。但由于MPU6050有噪声干扰,控制器接受到数据后还需要进行简化的卡尔曼滤波,这样获得的姿态角、加速度有较高的精确度。
3.2 控制量的计算
对激光笔划线距离的控制L可以转化为对风力摆一个周期内最大角度θmax的控制:
但是在一个摆动周期内只能采集一次θmax,无法进行精准的控制。由于风力摆做近似自由摆的运动,所以风力摆能摆到的角度取决于系统所具有的机械能。通过测量数据计算风力摆所具有的机械能,对机械能进行PID控制就可以得到较为精确的结果。
根据物理知识可知:
但是ω的噪声较大且精度较低。再通过圆周运动法向加速度公式:
Az=ω2l
经过简化后公式变为:
以为变量进行控制便可实现较为精准的控制。
3.3 PID算法的分析
本系统采用PID算法对变量进行控制,MPU6050实时采集姿态数据,控制器接受到后进行计算并与设定值进行比较。使得风机摆动的角度和激光笔划线的长度逐渐趋近于设定值。PID控制包括3个参数:
比例系数Kp:对与设定值的误差进行比例控制,比例系数越大,调节速度越快,但比例系数过大会使系统震荡较大,影响控制精度。
微分系数Kd:对的前后两次测量值的相对误差进行控制,即的变化率。微分可以改善系统的动态特性,缩短调节时间。但微分系数无论过大过小都会使超调量增大。
积分系数Ki:对的累积误差进行控制。积分作用会消除系统的稳态误差,但积分作用会降低系统的稳定性,所以要对积分作用进行简单的限幅。
PID控制的输入e(t)与输出U(t)的关系为:
其传递函数为:
3.4 电机的控制
对电机采用脉宽调制(PWM)的控制方式。脉宽调制是利用控制器的数字输出对模拟电路进行控制的一种非常有效的方式。再测定电机对控制量的最大作用量∆max,然后根据∆max对计算的输出量进行归一化处理,得到PWM的占空比。
3.5 对摆动线性度的控制
由于机械安装、外部干扰、风力发散等原因,线性度不可避免地有所偏差。为达到任务中线性度的要求,我们通过MPU6050测得的ωi进行简单的PD控制。若ωi≠0,则对控制侧向电机使其恢复到平衡位置。
3.6 全向摆动的控制
风力摆的自由摆运动可以被正交分解为两个与电机方向相同的自由摆运动。通过对两个方向独立的运动控制便可实现风力摆在水平面上的全方位运动。控制两个方向运动的相位差β,可以改变运动的离心率e=sin(β)(e=1为圆,e=0为直线);控制两个风机转速的相对大小,可以改变运动的角度;控制风机转速的绝对大小,可以改变运动的幅度。
4 系统软件设计和实验结果
4.1 系统软件实施流程
系统启动后,依次初始化陀螺仪,定时器,遥控器,配置中断和引脚模式。然后显示主界面,提示用户选择要执行的任务,本系统采用红外遥控器输入各种命令和参数。遥控器采用NEC编码方式。由于STM32芯片的定时器数量达到14个,因此我们可以方便地把每一个控制任务分别放入一个定时器中断中,各定时器中断服务程序不会相互影响,大大降低了程序结构的复杂性,同时提高了程序的可靠性。我们在定时器的中断服务函数中完成对三轴加速度,角速度的测量和姿态的解算,这样可以方便地控制系统的采样速率。达到任务要求后会有提示,还可以通过遥控器进行必要的参数输入,测量结束后按返回键可回到主界面。程序流程图如图4所示。
4.2 定幅摆动测试
利用红外遥控器设置激光在地面划线的长度,对摆线长度、线性度以及所需时间进行测量。可以得到以下的测试结果,如表1所示。
结论分析:风力摆运动误差随着设置长度的增加有所增加,所需时间在8~10 s。
4.3 定向摆动测试
利用红外遥控器设置风力摆的摆动角度,对摆动角度的误差和线性度进行测量,如表2所示。
4.4 圆周运动测试
设置风力摆所画圆的半径,对摆动的最大误差和旋转3次所需时间进行测量,如表3所示。
结论分析:风力摆运动最大误差和所需时间会随设置半径的增加而增大,但误差和所需时间均满足要求。
5 结 论
本系统设计的关键是直线摆动距离控制、直线摆动角度控制、圆周摆动半径控制以及具备一定的抗干扰能力。根据这些要求,主要包括主控模块、倾角采集模块、风机控制模块、人机交互模块以及供电电源模块等,其中在硬件上最关键的是倾角采集和风机控制模块,在软件上则是摆动控制算法。本系统架构设计合理,各项指标均能达到要求。系统稳定性较好可靠性高、人机界面清晰友好,功能切换和参数输入均能通过红外遥控器实现。可通过蓝牙模块和手机互联,实现物联网功能。风力摆控制系统在工业生产、飞行控制系统、娱乐场所、自动控制教学领域中有着广泛的应用。
参考文献:
[1] 王平,张新东.基于智能仪表的数据采集系统设计 [J].自动化与仪表,2009,24(4):9-10+18.
[2] 王云飞,张凯,田亚芳,等.基于STM32的简易多功能液体容器的设计与制作 [J].电子制作,2020(19):21-24.
[3] 杜里,张其善.电子装备自动测试系统发展综述 [J].计算机测量与控制,2009,17(6):1019-1021.
[4] 邢兰昌,祁雨,刘昌岭,等.电-声-热多参数联合测试系统开发 [J].实验技术与管理,2017,34(11):78-85.
[5] 李惠,徐小川,于学伟,等.基于STM32的智能发电机电参量测量装置的设计 [J].电测与仪表,2016,53(2):125-128.
[6] 康婷霞,牟丽霞.基于STC8A8K的智能LED灯条检测仪设计 [J].电子测试,2020(6):24-26.
[7] 武慧挺.基于STC8A8K单片机的智能水泵控制器设计 [J].集成电路应用,2019,36(10):100-101.
[8] 张星宇,郭金刚,胡全义,等.基于STC8的户外仪器加热器及其控制系统设计 [J].工业控制计算机,2019,32(9):151-152+156.
[9] 李虹静,李升辉.基于STC8系列单片机的继电器控制电路设计 [J].科技与创新,2019(13):37-38.
[10] 孟庆生,徐中干.基于无线传感器网络的电参数测量系统设计 [J].数字技术与应用,2019,37(1):195-196+198.
[11] 陆翔,刘邦经.基于STM32的嵌入式综合实验开发平台研究 [J].实验室研究与探索,2017,36(10):57-60.
[12] 王建莉,田成元,张总.一种简易多功能液体容器测量装置的设计 [J].电子世界,2019(20):139-140.
[13] 杨旭.传感器技术在机电技术中的应用 [J].当代化工研究,2020(22):73-74.
作者简介:毕涛(1986—),男,汉族,山东烟台人,讲师,硕士研究生,研究方向:控制工程。