改造者:黄贤帅
基于STM32的风力摆控制系统
改造者:黄贤帅
本系统以STM32 ARM单片机为控制核心,由功能按键选择控制实现不同过程的切换,陀螺仪传感器对摆杆的运行状态进行实时检测,形成单闭环的控制系统。STM32 ARM单片机对陀螺仪传感器采集回来的数据进行处理,得出的控制量通过脉宽调制方式作用于直流风机驱动电路实现对风力摆的控制。本系统实现了风力摆在只受轴流风机为动力控制下快速起摆、画圆、恢复静止的功能。
设计任务
设计并制作一长约60~70cm的细管上端用万向节固定在支架上,下方悬挂一组(2~4只)直流风机,构成一风力摆,如图1所示。风力摆上安装一向下的激光笔,静止时,激光笔的下端距地面不超过20cm。设计一测控系统,控制各风机使风力摆按照一定规律运动,激光笔在地面画出要求的轨迹。
图1 风力摆结构示意图
设计要求
(1)从静止开始,15s内控制风力摆做类似自由摆运动,使激光笔稳定地在地面画出一条长度不短于50cm的直线段,其线性度偏差不大于±2.5cm,并且具有较好的重复性;
(2)从静止开始,15s内完成幅度可控的摆动,画出长度在30-60cm间可设置,长度偏差不大于±2.5cm的直线段,并且具有较好的重复性;
(3)可设定摆动方向,风力摆从静止开始,15s内按照设置的方向(角度) 摆动,画出不短于20cm的直线段;
(4)将风力摆拉起一定角度(30~45°)放开,5s内使风力摆制动达到静止状态;
(5)以风力摆静止时激光笔的光点为圆心,驱动风力摆用激光笔在地面画圆,30s内需重复3次;圆半径可在15~35cm范围内设置,激光笔画出的轨迹应落在指定半径±2.5cm的圆环内。
本系统的机械结构采用单臂梁结构,万向节固定在伸出的臂杆上,自由摆杆与万向节镶嵌起来,自由摆的状态是垂直向下。在自由摆杆的下方把四个轴流风机呈十字形分布,使得风向分别朝向前后左右,形成起摆动力。摆杆是用铝合金制作,陀螺仪平放在轴流风机的上方,很好地检测运动状态。同时把激光笔安装在自由摆下方垂直向下。
本系统要求能够精确控制各风机使风力摆按照一定规律运动,故使用陀螺仪传感器、直流风机驱动模块、STM32 ARM单片机等模块实现符合系统要求的设计,下面分别论证对于这几个模块的选择。
角度测量方案的论证与选择
方案一:选用双轴倾角传感器模块LE-60-OEMLE-60-OEM,测量重力加速度变化,转为倾角变化,可测量双向。具有稳定性高、低功耗、结构简单等优点。响应速度为5Hz。它可以测量平衡板与水平方向的夹角,x,y方向可以测,但z轴不可测。且操作复杂,软件处理难度大。
方案二: 采用陀螺仪MPU6050模块,MPU6050为全球首例整合性6轴运动处理组件,相较于多组件方案,免除了组合陀螺仪与加速器时之轴间差的问题,减少了大量的封装空间。并且以串口模式向MCU输出MPU6050的测量数据。经过软件滤波后可以得到较为精准的测量值。此方案优点是该模块体积小,无需复杂的机械结构辅助。且与MUC连接仅需要2个I/O口。
基于上述理论分析和实际情况,故采用方案二。
直流风机驱动模块的论证与选择
方案一 : 采用L298N芯片构成的驱动模块,L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。工作电压高,最高工作电压可达46V;输出电流大,瞬间峰值电流可达3A,持续工作电流为2A,采用标准逻辑电平信号控制。此方案可以通过PWM信号控制输出电压,但是持续工作电流为2A,无法满足大电流风机的需求。
方案二 : 采用双BTN7971构成H桥的驱动模块,BTN7971芯片是应用于电机驱动的大电流半桥高集成芯片,最高工作电压为24V,驱动电流最高为70A。集成的驱动IC具有逻辑电平输入、电流诊断、斜率调节、死区时间产生和过温、过压、欠压、过流及短路保护的功能。此方案优点是驱动模块工作频率高,响应时间短,能够在较短的时间里快速调节风机转速。
基于上述理论分析和实际情况,故采用方案二。
控制系统的论证与选择
方案一:采用STC12C5A60S2单片机作为主控芯片,STC12C5A60S2是一款增强型51内核的8位单片机,与传统51单片机相比具有程序执行速度较快、 A/ D 数据处理便捷、PWM输出方便等优点,但是其仅仅集成两路外部中断和三路定时器,对外部输入信号的处理能力略显不足。
方案二:采用嵌入式系统STMF103ZET6的ARM单片机作为控制核心。STMF103ZET6是基于cortex-M3的32位控制器,具有运行速度快,外围器件简单,功耗低等特点。
本系统控制算法涉及单闭环,需要采集陀螺仪的实时信号,并且多通道输出PWM调制,为保证输入信号和输出控制快速与精确地处理,根据实用、高效的原则,综合比较以上两种方案,故采用方案二。
风力摆在起摆过程中,包含了严重的非线性特性,不仅要求风力摆起摆速度快, 而且还要考虑线性度特性。由于风力摆要摆上一定的角度值,只对左右的两个轴流风机进行风速控制,可以让风力摆起摆,但是在要求快速起摆时,会产生一定的线性偏差,通过陀螺仪的反馈量进行调整控制前后的风机进行误差消除,可以满足系统要求。
电路的设计
系统总体框图如图2所示。
按键模块设计
通过74ls148芯片构成中断式键盘,74ls148是一款8线-3线的编码芯片,其输入输出均为低电平有效。对其外接8个机械按键经过编码后,通过MCU的中断程序处理得到键值。此方案不需要程序一直执行键盘扫描程序,只有当输入有效时才进入中断处理得到键值,有效地提高程序的执行效率,按键模块电路原理图如图3所示。
图2 系统总体框图
图3 按键模块电路原理图
程序的设计
系统一开始就进行初始化设计,通过按下指定的按键进行功能的选择。系统程序流程图如图4所示。
测试方案
调试轴流风机和陀螺仪等各个模块分别能够正常工作,之后将各个模块组装在一起,烧入程序逐渐调试整个系统正常工作。
图4 系统程序流程图
测试条件与仪器
测试条件:多长检查硬件电路,确保硬件电路无虚焊,并且连线无误。
测试仪器:数字万用表、量角器、刻度尺、卷尺、秒表。
测试结果
根据系统设计要求进行逐项测试,设计要求(1)的测试结果如表1所示,设计要求(2)的测试结果如表2所示,设计要求(3)的测试结果如表3所示,设计要求(4)的测试结果如表4所示,设计要求(5)的测试结果如表5所示,设计要求(6)的测试结果如表6所示。统误差;
表1 设计要求(1)的测试结果
表2 设计要求(2)的测试结果
表3 设计要求(3)的测试结果
表4 设计要求(4)的测试结果
(2)风力摆摆动角度由陀螺仪传感器采集数据,经处理器计算控制直流风机转动的过程需要消耗一定的时间。在这一定的时间之内风力摆又摆动了一定的角度。因此,电机的转动总是晚于风力摆当时的角度产生误差。
根据上述测试数据,可以得出以下结论:
(1)从静止开始,15s内风力摆做类似自由摆运动,使激光笔稳定地在地面画出一条长度不短于50cm的直线段,其线性度偏差不大于±2.5cm,并且具有较好的重复性;
(2)从静止开始,15s内完成幅度可控的摆动,画出长度在30~60cm间可设置,长度偏差不大于±2.5cm的直线段,并且具有较好的重复性;
(3)可设定摆动方向,风力摆从静止开始,15s内按照设置的方向(角度) 摆动,画出不短于20cm的直线段;
(4)将风力摆拉起一定角度(30~45°)放开,5s内风力摆制动达到静止状态;
(5)以风力摆静止时激光笔的光点为圆心,驱动风力摆用激光笔在地面画 圆,30s内需重复3次;圆半径可在15~35cm范围内设置,激光笔画出的轨迹落在指定半径±2.5cm的圆环内。
综上所述,本系统达到设计要求。
表5 设计要求(5)的测试结果
测试结果分析
误差分析:
(1)风力摆无法避免阻尼和前后摆动造成相应的系
黄贤帅
华南理工大学广州学院
黄贤帅(1987-)男,广东广州人,本科生,助理工程师,主要研究方向为嵌入式系统、单片机应用。
10.3969/j.issn.1001-8972.2016.01.027