- 收藏
- 加入书签
基于STM32的自由摆平衡系统
郑傲楠,性别:男,汉族 新疆乌鲁木齐市,2000年1月30日,本科,研究方向:通信工程
摘要:单片机开发极大地推动了生活应用的需求,而在工厂制造和生活应用方面也对单片机开发技术有着依赖性。在探究自由摆悬挂物体平衡中,受控制力方向,摆动角度以及物体重量体积等多因素干扰,单纯依靠器械保持平衡可实现性较低。应用单片机STM32,以核心电机控制平板移动,误差以角度计量,在保持偏差角度不大于45度的情况下,实现悬挂摆杆摆一周期,平板随之摆动一周。为进一步探究自由摆平台可承载性,一枚一元硬币被固定在画有组间距1厘米的白纸中心位置上,此白纸也被粘贴在平衡板上。基于外力也就是手推动的力,测试摇摆角度在30度到45度的同时,硬币是否能不滑落平板中心位置,保证摇摆测试周期不低于五个周期。为了深入探究承载容量,应用八枚硬币于白纸中心,同样在保证五个周期的同时,记录硬币滑落数量和位置。基于探究自由摆回正速度的目的,本实验通过固定激光笔于平板上,于距离摆杆150米处垂直放置白板,调整至白板某一线与激光笔照射点在同一水平的程度,用手外加推力,测验是否能在15秒控制激光笔照射点重回白板某一线上任意一点处。
结合硬件电路连接和软件编译检测,在收集了实验所需数据后,本实验能实现单片机作为控制核心,处理角度测量,平衡状态控制,电机驱动以及相应的显示模块,最后能保证预期实验目的达成。
对实验结果处理分析中,虽然目的能达成,但是有些细节仍值得进一步优化。如在自由摆动过程中,利用单片机控制角度方面在向左摆动时精度不如向右摆动时准确。拟定解决方案有缩短定时器中断时间间隔,改善软件部分计算角度的代码方法。当然,在最终成品展示时,也将用木质材料或更优材料来替代塑料材料。总体而言,本次实验能够在误差允许的范围内完美呈现实验目的。
关键词 STM32 自由摆 角度测量 平衡控制
前言
随着科技的快速发展,使得自动控制、平衡系统等科学技术能够与人们生活有越来越紧密的结合。动态的平衡系统主要运用在两轮平衡车,以及移动机器人等方面。基本的概念就是用数字处理器来侦测平衡的改变自平衡控制系统的主要特征就是以系统在垂直方向上的角度或水平方向上的位移为控制对象,使其控制在一定的范围内。在实际中所见到的重心在上、支点在下的控制系统就是一个自平衡控制系统。本设计提出的自平衡控制系统具有以下主要特点:与传统的自平衡系统相比,负载状态和运行状态是变化:系统不但要保持静态平衡而且要在运动中保持动态平衡。这些特点决定了系统控制的复杂性,系统稳定性的解决需要综合考虑各种控制理论和控制方法,特别是先进控制理论的应用。
本文研究的核心内容是基于STM32开发板设计并制作一个自由摆上的平板控制系统。
1.控制电机使平板随摆杆摆动旋转,摆杆摆一个周期,平板旋转一周,偏差绝对值不大于45°。
2.推动摆杆至θ角度(30º~45º间),调整平板角度,在平板中心放置一枚硬币;让摆杆自由摆动。摆动过程中,控制平板状态,使硬币在5个摆动周期中不从平板上滑落,并尽量不滑离平板的中心位置。
3.将一激光笔固定在平板上,激光笔照射在距摆杆 150cm 处垂直放置的白板上。在摆杆垂直静止且平板处于水平时,调节白板高度,使光斑照射在板纸的某一条线上,标识此线为中心线。用手推动摆杆至一个角度θ(30º~60º间),启动后,在15秒内控制平板尽量使激光笔照射在中心线上.
1.系统设计方案
本项目选择使用32位低功耗STM32F103ZET6单片机[1]作为项目的主控芯片,STM32F103ZET6具有72MHz CPU的速度和高达1MB的闪存。包含电动机控制外围设备以及CAN和USB全速接口。STM32系列ARM Cortex-M3 32位闪存微控制器工作时具有低功率、低电压,并结合了实时功能的极佳性能。封装类型系列可用于您的嵌入式应用。MCU体系结构具有一个易于使用的STM32平台,可用于包括电机驱动;I2C通信;中断控制。
STM32F103系列单片机能够对每个模块进行单独的控制。如,开启时钟中断、开启I2C通信接受数据并通过数据控制电机实时转动
电机模块
步进电机的驱动器采用TB67S109高性能步进电机驱动器,具有最大32细分的6种细分模式可选;采用9V-42V直流供电,标准共阳单脉冲接口,脱机保持功能,半封闭式机壳可适应更严苛的环境
步进电机[6]型号为 42BYG,该电机为双相步进电机[7],步进角度为1.8°有较高的空载启动频率,在十六细分后能实现0.225°的步距。电机模块的主要作用是,通过STM32主控发送信息转动相应角度,并且带动平板旋转,达到题目要求的动态平衡,当单摆在不同状态下摆动时,主控做出不同的控制信息使得电机转动。
角度模块
我们选择MPU6050模块[3]。MPU-60X0是世界上第一款集成6轴MotionTracking设备。它集成了3轴MEMS陀螺仪,3轴MEMS加速度计,以及一个可扩展的数字运动处理器DMP(DigitalMotion Processor),可用I2C接口连接一个第三方的数字传感器,比如磁力计。扩展之后就可以通过其I2C或SPI接口输出一个9轴的信号(SPI接口仅在MPU-6000可用)。MPU-60X0也可以通过其I2C接口连接非惯性的数字传感器,比如压力传感器。
本项目要求MPU6050[5]记录摆杆旋转的角度,通过I2C[12]通信协议传输给主控板,再由主控板进行角度计算达到平衡控制
显示模块
用STM32驱动TFT-LCD[11]屏幕,用于显示单摆摆动的角度以及测试功能的可视化,便于用户操作与调试
2.理论分析
2.1 自由摆平板控制系统的分析
建立自由摆运动模型,由于系统是由轻杆和步进电机等组成,与步进电机相比,轻杆质量很小,可以近似认为旋转臂重心在平板附近,平板沿半径为L的弧长自由摆动。
(2)硬币不滑落的模型分析
自由摆的摆臂质量集中在端点的电机上, 当摆角处于30°45°之间时,经过推算,硬币会受到平板沿平板方向上微弱的分力作用,但是考虑到两者之间的摩擦力作用,静摩擦力要远大于沿平板方向分力作用,是不会使硬币发生位移。因此只要保持平板与摆臂的垂直就能保证硬币不会滑落。自由臂开始运动时平板保持水平位置,而要保证硬币不从平板上滑落则需要平板尽快保持与自由臂垂直,因此在放开平板时需要让平板带动硬币尽快达到与自由臂垂直位置
2.2 自由摆旋转角度与电机旋转角度关系的建模与分析
对于基础要求的部分,为了使硬币不从平板上滑落,只需要保持平板始终与自由摆垂直,在初始时刻,平板保持水平,与自由摆臂夹角达到30°45°左右时,为了保证硬币不滑落,需要在自由摆开始摆动时刻步进电机控制平板尽快达到与自由摆臂垂直位置,在以后的摆动过程当中,只需保持平板方向不变就能达到硬币不滑落的要求
2.4 步进电机模块的分析
2.4.1 步进电机步进数与螺旋编码盘输出脉冲之间关系
由于步进电机[8]步进角为1.8°,旋转编码盘分辨率为0.36°,可以求得每一个步进角将对应5个旋转编码器输出脉冲。我们所采用的是步进电机十六细分下的,所以最后的送给电机的单个步进角对应脉冲数N=5*16
2.4.2 步进电机最大空载启动频率分析与计算
根据自由摆运动模型可知,平板在最低位置处角速度达到最大值,=179°/s,为保证系统的可靠,要求步进电机最大启动速度能达到 2=358°/s,由于步进电机的步进角为1.8°,因此可以算出空载启动频率f=2/1.8=198.9Hz,而选用的步进电机空载启动频率远高于该频率,因此选用的步进电机能符合系统要求。
3.硬件电路设计
硬件模块设计如图所示
4.核心程序设计
4.1程序功能描述
主程序根据不同的要求设定不同的控制模式,在各个模式间切换。根据设计要求,把程序归为几个模式,由按键切换模式。具体分配如下:
模式一对应为基本要求一,即平板跟随自由摆旋转一周误差不超过45°;
模式二对应为基本要求二,即保持硬币在平板上的平衡,不让硬币掉落
4.2具体程序设计
4.2.1 模式一分析
主程序流程图如下图所示,主程序由三个按键控制两个模式的选择。当系统启动时,S1按下选择模式一,S1和S2都按下,那么执行模式二。因为自由摆的周期是固定的,计算为1.5s一个周期,所以需要控制电机转动在1.5s内旋转 360。采用定时器定时,在十六细分下,发每个脉冲的周期为625us。定时器定时即为625us。 6400脉冲电机旋转一周,此时,每旋转一周,记录旋转周数的变量加一,到五周后,程序执行结束。
4.2.2 模式二分析
模式二首先在电机调整角度之前要先判断摆杆掉落前的初始位置,是位于左侧还是右侧。设定两个计数器分别为T1和T2。T1为左侧的计数器,T2为右侧的计数器。判断当T2大于零而且T1等于零时,表明平板往右摆,置右摆标志位为一。判断当T1大于零而且T2等于零时,表明平板往左摆,置左摆标志位为一。对应的计数器加一后,输出对应的电机脉冲数送给电机,从而控制电机转动。
按下S2后,执行角度测量的中断函数,,摆杆缓慢拉到一定的角度,同时单片机获得旋转编码器所送来的脉冲并记录下来,拉到一定角度后摆杆停止,此时,单片机就获得了最后的角度值。按下S3后,摆杆开始做单摆运动,单片机根据获取的角度值,换算为电机的转动脉冲数,发给电机立即开始转动,保持平板对摆杆的垂直。最后,电机锁定,避免电机的抖动,到此程序执行结束。
4.2 测试与总结
4.2.1 测试准备工作
硬件连接:步进电机驱动与单片机的连接;PG13端口与驱动使能ENA+端连接;PG14端口与驱动方向DIR+端连接;PG15端口与驱动脉冲PUL+端连接。以上三个端口的负极端口共阴连接,并且与单片机的GUN地端相连。
驱动与步进电机[9]的连接按照步进电机A,B相的连接方法连接;旋转编码器与单片机的连接;旋转编码器的A相(黑线)与单片机的PG7端口相连;B相(白线)与单片机的PG12端口相连[10];以上三个部分的Vcc要共连,地端也要共连,勿把1部分的共阴连接与此处的地端相连。
4.2.2 测量结果
按照上图的连接方法连接硬件电路后,先测试基本要求一,多次测量平板在一个周期内旋转的角度。测试方法:在最低点处保持平板水平,将摆杆拉至最高点,启动电机开始转动8圈后停止,同时让单摆自由摆动8个周期后到达最高点时停止,用量角器测出平板偏离水平的角度,测量结果见下表:
同上述步骤,继续测量1枚硬币滑离中心位置的距离,测试方法为将摆杆推至一个角度(30°-45°),在水平的平板上放置1枚硬币,并在白纸上标记其轮廓,启动系统后,观测硬币滑动的距离结果见下表:
4.2.3 误差分析
角度测量时通过多次测量求均值降低了测试时的系统误差,较为准确的测试出了实验的误差。硬币距离测量过程中,当摆杆起始角度由30°到45°逐渐增大时,硬币滑离中心位置的距离越大(在实验允许的误差之内),这符合理论分析的结果且符合实际生活规律,达到了预期的实验效果。
4.2.4 结果分析
由实验测试结果可以得出以下结论,在一个周期内平板旋转角度误差基本在15°以下,完全能满足设计要求。在摆动一个角度硬币偏离中心位置的距离30°时误差基本保持在5%以内,在45°时偏离中心位置距离变大,但是也都能满足设计要求。
5. 总结
此次基于自由摆的平板控制系统设计,以单片机为控制核心,采用1000线增量型旋转编码器实时采集自由摆旋转角度及方向信息,并通过步进电机开环控制平板旋转角度,以实现控制要求。达到了在一个周期里电机精确旋转一周;平板角度调整速度快,硬币滑动小无跌落;总结该设计的实现过程,具有以下三个方面的优点:
首先,采用1000线增量型光电旋转编码器,输出信号A、B为高低电平的数字脉冲信号,可直接与单片机管脚相连,无需额外附加驱动电路,精简了整体硬件电路设计。实验中可根据光电旋转编码器输出脉冲触发单片机外部中断的快慢,判断摆杆的旋转速度,根据光电旋转编码器输出脉冲的多少,判断摆杆的旋转角度,根据光电旋转编码器输出信号A、B的相位关系,判断摆杆的旋转方向。因而该设计方案具有角度值精确度高,旋转方向判别稳定可靠,硬件电路接口简单的优点。
其次,采用高性能步进电机及配套的步进电机驱动器,该步进电机最小步进角为1.8度,且可对步进电机进行四细分、八细分、十六细分可调控制,进而实现步进电机的微小精确控制。此外,该步进电机具有较短的响应时间,经理论计算可完全满足平板保持动态水平的实时性要求。再者,该步进电机驱动器具有脱机功能,可实现步进电机的锁定,从而使步进电机转动到指定角度后能够稳定保持在这一位置,增强了控制的稳定性。最后,该步进电机具有较大的带负载能力,保障了在带动平板转动的过程中稳定而可靠。
再者,在该设计的程序编写方面,用光电旋转编码器输出信号产生脉冲数,直接计算出摆杆的角度,再由摆杆角度计算出步进电机需要转动的角度,再由步进电机转动角度计算出步进电机的步进数,提高了实验的精度。
以上三方面的优点是该设计方案得以取得良好的实验结果的有力保障。同时,该设计方案也存在不足和有待完善之处需要进一步分析处理。
参考文献
[1]喻金钱,喻斌.STM32F系列ARM Cortex-M3核微控制器开发与应用[M].北京:清华大学出版社,2011.
[2]范浩,徐龙,赖福明,蔡文广,吕明泽,李媛.基于STM32和MPU6050的姿态控制系统[J].电子元器件与信息技术,2020,4(02):74-75+86.DOI:10.19772/j.cnki.2096-4455.2020.2.028.
[3]何枫,杨凤年,何文德.基于STM32+MPU6050的小型四旋翼无人机设计[J].电脑知识与技术,2020,16(19):213-214.DOI:10.14004/j.cnki.ckt.2020.2335.
[4]周涵,边海关,杨欢. 基于STM32和MPU6050的无人机姿态采集及解算[A]. 中国航空学会、中国航空研究院.第八届民用飞机航电国际论坛论文集[C].中国航空学会、中国航空研究院:中国航空学会,2019:5.DOI:10.26914/c.cnkihy.2019.053525.
[5]孙铭,王锏,张耀军.CC3200和MPU6050的迷你四轴飞行器控制原理[J].单片机与嵌入式系统应用,2016,16(02):40-43.
[6]孙笑宾,吴其.步进电动机驱动器设计[J].计算机产品与流通,2019(07):79.
[7]丁伟雄,杨定安,宋晓光.步进电机的控制原理及其单片机控制实现[J].煤矿机械,2005(06):127-129.DOI:10.13436/j.mkjx.2005.06.072.
[8]鲁修琼.步进电机原理及应用[J].广播电视信息(下半月刊),2007(05):49-52.
[9]李建军.基于微控制器的步进电机驱动控制系统实现[D].华南理工大学,2012.
[10]杨鉴.基于AT89C52单片机的两坐标步进电机控制系统设计[J].湖南工业职业技术学院学报,2021,21(04):17-19+39.DOI:10.13787/j.cnki.43-1374/z.2021.04.004.
[11]庄恩泽,沙双庆.浅析液晶显示屏的工作原理[J].计算机与网络,2020,46(17):29.
[12]谢晓钟.单片机I/O口扩展I~2C通信模块的技术应用[J].福建农机,2020(02):26-30.
[13]刘鲁兵. 基于MCU的I2C总线控制器的设计与验证[D].西安电子科技大学,2020.DOI:10.27389/d.cnki.gxadu.2020.001890.
[14]周首杰.基于主控模式下的I~2C通信从动模式软件设计[J].物联网技术,2019,9(11):28-29+32.DOI:10.16667/j.issn.2095-1302.2019.11.006.



京公网安备 11011302003690号