杨程翔
摘 要:倒立摆是处于倒置不稳定状态、通过人为控制使其处于动平衡的一种摆。倒立摆是一个复杂的快速、非线性、多变量、强耦合、自然不稳定的非最小相位系统,是重心在上、支点在下控制问题的抽象。旋转倒立摆是倒立摆的一种类型,它将普通倒立摆的平动控制改为旋转控制,使得整个系统更为复杂和不稳定,增加了控制的难度。本文提出了一种基于直流伺服电机的旋转倒立摆实验装置的设计,主要有机械部分、硬件电路部分、软件部分组成。单片机通过检测摆杆和悬臂(主要是摆杆)的角度,来产生PWM信号控制电机动作,电机的动作又会改变摆杆和悬臂的角度,这样就会形成一个闭环系统,通过不断地控制,最终使摆杆达到倒立的状态。
关键词:直流伺服电机;旋转倒立摆;实验装置;设计
倒立摆是一种较为复杂快速、多变量、强耦合、非线性以及严重组不稳定的系统,对于倒立摆的研究具有十分重要的现实意义。当然,在研究的过程当中,会涉及很多问题,比如鲁棒问题以及动态平衡等。对于倒立摆控制方法的研究,有助于更好地控制生产生活当中所遇到的各种不稳定系统,这种研究与应用可以说是较为广泛的,甚至可以说在军工以及航天等领域当中都有其身影。当然,目前对于倒立摆的研究比较多,控制方法也层出不穷,但是摆杆稳定性很容易受到影响,大多源自于传动机构的各种缺陷。对此,本文提出一个基于直流伺服电机的旋转倒立摆实验装置的设计,他不仅具有结构简单牢固的特征,而且还减少了实验过程当中的一些不可控因素,同时兼具成本低等优势。下文就本设计的系统硬件、程序以及整机功能参数测试展开详细论述。
一、系统硬件设计
本设计的硬件系统构成主要包括机械部分(支架、伺服电机、悬臂、编码器和摆杆)和控制电路部分。
(一)机械结构
系统的机械结构,旋转臂在直流伺服电机的驱动之下,能够进行水平转动;伺服电机驱动旋转臂进行顺时针或逆时针转动,进而带动摆杆摆动;摆杆在除受重力之外,能够自由转动且在转动过程当中阻力几乎为零。该系统主要由单片机最小系统、角度传感器(光电编码器)输入电路和直流伺服电机驱动电路三部分组成。STM32F103VC单片机通过检测摆杆和悬臂(主要是摆杆)的角度,来产生PWM信号控制电机动作,电机的动作又会改变摆杆和悬臂的角度,这样就会形成一个闭环系统,通过不断地控制,最终达到摆杆倒立的状态。
1.直流伺服电机
直流电机运行时静止不动的部分称为定子,定子的主要作用是产生磁场,由机座、主磁极、换向极、端盖、轴承和电刷装置等组成。运行时转动的部分称为转子,其主要作用是产生电磁转矩和感应电动势,是直流电机进行能量转换的枢纽,所以通常又称为电枢,由转轴、电枢铁心、电枢绕组、换向器等组成。
2.编码器
采用增量式光电编码器(欧姆龙编码器ZSP4006-003G-2000BZ3-5-24C)采集摆杆的角度,不仅可以得到摆杆的角度,也可方便地判断出旋转方向,并且,结构简单,成本较低,易于用程序得到摆杆角度。三路信号输出,分辨率为2000P/R(即每圈输出2000个脉冲),5~24V供电,NPN集电极开路输出。
(二)控制电路及主要器件
1.电源电路
电源电路原理,本系统中使用到的电源包括+12V,+5V和+3.3V,其中+12V由直流电源直接提供,+5V和+3.3V由电源转换芯片得到。+12V转换成+5V的芯片为CYT78L05,+3.3V电压是由+5V转换得到的,转换芯片为AMS1117。
2.微处理器电路
本系统选择基于Cortex-M3的STM32作为主控制器。工作频率最高可达50MHz,功耗低至150uA/MHz。更突出的是,它能显著降低所有8/16位应用的代码长度。
3.角度传感器输入电路
本系统采用采用HCPL-0630,双路信号输入输出,转换速度快。
二、程序的设计
(一)程序功能描述
程序设计部分,主要目标是要实现摆杆的摆动,另外当外力撤销之后,摆杆能够保持倒立平衡的状态。其中,就摆杆摆动而言,能够在电机的带动之下做往复摆动的同时,摆角达到或超过160度。另外,当外力撤销的同时,启动旋转臂使摆杆保持倒立状态,时间上至少保持5s。
(二)程序设计几个关键内容
程序的初始化、角度采集子程序、摆杆状态监测、伺服电机动作是本程序设计的几个关键内容。
1.程序的初始化
在完成程序初始化之后,电机通过悬臂使摆杆转动到一定的角度并停留,此时摆杆受重力作用会下摆,假设摆杆下摆的过程是顺时针的,当其顺时针经过0点(即自由下垂状态)时,电机控制悬臂向运动方向的反方向运动,这样就会给摆杆增加动能,摆杆上升的最大角度就会比上一次的最大角度大。擺杆不断经过0点,电机就会不断地给摆杆增加动能,摆杆上升的最大角度就会不断变大,当摆杆上升的最大角度满足上方调节的条件(大于160度),系统就进入上方调节的状态,大体思想是摆杆向左偏离竖直状态,悬臂就向左运动,反之悬臂向右运动,进过不断地上方调节,最终使摆杆到达倒立状态。
2.角度采集子程序
保证角度信号的可靠性,才能够正确计算输出值来对电机进行控制。为此,在摆杆角度采集当中,可以通过读取TM3的计数器,来得到摆杆的角度(脉冲数来代替),即Rod_Angle=TIM3->CNT。另外,在悬臂角度采集当中,原理基本相同,同样可以基于TIM4的编码模式,而电机角度则需要用圈数的累加,基于Overflow,来得出Motor_Angle=Overflow*2000+(TIM4->CNT)。
3.摆杆状态检测
通过对摆杆角度进行实时监测,基于所监测到的数据来相对应地调节摆杆角度,进而控制电机。本设计按照如下流程,每隔1ms执行一次:
开始后,基于角度采集子程序得到当前角度,在与上次采集到的摆杆的角度进行对比之后,得出摆杆最大上摆角度,当最大上摆角度大于160时且当前角度不等于0时,进行上方调节,当最大上摆角度大于160度且当前角度等于0时,最大上摆角度清零。另外,如果最大上摆角度小于160时,进行下方加速,其中当本次溢出值大于上次溢出值时,进行向左加速,而当本次溢出值小于上次溢出值时,进行向右加速。基于下方加速与上方调节又可以得到当前的角度。
在下方加速的过程中,还要判断是顺时针加速还是逆时针加速。摆杆顺时针转过0点时,Overflow加1,逆时针转过0点时,Overflow减1,且程序设定Overflow只有-1和0两个值,Overflow由-1变为0表明顺时针转过0点,反之表明逆时针转过0点。进而就可以知道电机是向左运动给摆杆加速,还是向右运动。然后单片机设置电机动作命令字(Motor_Action),以便电机动作任务执行不同的任务。
在上方调节过程中加入一个判断当前角度是否为零的环节,这就防止摆杆从上方掉下来,而电机一直执行的是上方调节。由流程图看到,当摆杆掉下来后,最大上摆角度清零,又从下方加速开始执行,满足上方调节条件后才能上方调节。确定电机动作后,改变电机动作命令字(Motor_Action),让电机执行不同的动作。
4.伺服电机动作
基于下方加速子程序与上方调节子程序,来控制伺服电机动作。就下方加速子程序而言,当电机动作命令字表示顺时针转动给摆杆加速时,设定PWM的占空比为1447,让电机顺时针转动。当电机动作命令字表示逆时针转动给摆杆加速时,设定PWM的占空比为2647让电机逆时针转动。另外,就下方调节子程序而言,本设计将摆杆直立PID控制与悬臂回零PID控制叠加在一起。其中,擺杆直立PID控制,此控制环输入是摆杆当前的角度,摆杆当前角度与摆杆竖直角度相减得到偏差,根据偏差确定输出PWM的占空比,控制电机的转速和正反转,进而改变摆杆的角度,使摆杆迅速直立。此调节每1ms执行一次。悬臂回零PID控制,此控制环输入是悬臂(电机)当前的角度,悬臂当前角度与初始化时悬臂的角度(即为0度)相减得到偏差,根据偏差确定输出PWM的占空比,控制电机的转速和正反转,进而改变悬臂的角度,是悬臂慢慢回零。此调节每50ms执行一次。
三、整机功能参数测试
在初期测试过程当中,旋转臂来回转动时抖动较大,影响了单片机对数据的处理与执行。另外,在摆杆倒立调节的过程当中,旋转臂同样会出现上下抖动的情况,影响了直流伺服电机准确地执行动作。对此,笔者采用了以下几点措施来进行调试,包括将伺服电机最大转速控制在1000r/s以内,这样可有效避免失步问题,重新对PID参数进行整定,另外旋转臂和电机转轴以最大限度契合旋转臂选用材质更轻且质地更硬的材料,轴心距离长于规定长度的同时,又不可过长,以避免抖动问题。经过调试与改进之后,本设计中的基于直流伺服电机的旋转倒立摆的摆杆稳定倒立悬挂之后,能够保持较长时间的倒立悬挂状态。
四、结语
本设计提出的基于直流伺服电机的旋转倒立摆实验装置设计,具有较为良好的鲁棒性与自我调节能力。综上所述,本设计达到了设计的要求。
参考文献:
[1]任桢,林都,李静.旋转倒立摆虚拟仿真模型构建与验证[J].现代电子技术,2019(03):60-64.
[2]杨勋涛,樊丽,颜新华.两轮自平衡小车启动暂态过程的研究[J].西南师范大学大学报(自然科学版),2014(12):87-93.
[3]王东亮,刘斌,张曾科.环形一级倒立摆摆起及稳定控制研究[J].微计算机信息,2017(04):13-14.
[4]李晓豪,李鑫.基于单片机的旋转倒立摆控制系统研发[J].常熟理工学院学报,2019(09):98-101.