找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7784|回复: 2
收起左侧

STC单片机+MPU6050风力摆控制系统设计报告

[复制链接]
ID:342455 发表于 2018-5-31 20:13 | 显示全部楼层 |阅读模式
2015年全国大学生电子设计竞赛
风力摆控制系统(B题)

摘要
本系统采用STC12C5A60S2为主控芯片,通过MPU6050传感器提供反馈信息、采用PID控制算法调整轴流风机的工作状态、在液晶和按键的作用下显示并切换工作模式,形成一闭环测控系统。该测控系统通过控制驱动各风机,使风力摆按照一定规律运动,同时保证摆杆下方悬挂的激光笔能在地面画出要求的轨迹。

目录
摘要1
一、设计任务1
二、方案论证1
2.1 控制器模块方案2
2.2位置检测模块2
2.3动力装置方案设计2
2.4 外围模块方案设计2
2.4.1 功能调用模块的设计2
2.4.2 显示模块的设计3
2.4.3 声光提示模块3
  2.4.4 电源模块3
2.5硬件电路设计3
2.6 系统控制方案的整体设计3
2.6.1 风力摆摆直线过程分析4
2.6.2  风力摆摆圆过程分析4
三、理论分析与计算5
3.1运动控制6
3.1.1直线运动的控制6
3.1.2 摆圆运动的控制6
3.2  软件实现6
3.2.1 所用算法6
3.2.2 程序部分6
四、测试结果与误差分析7
4.1风机性能的测试7
4.2摆直线任务的测试7
4.3速停任务测试记录7
4.4圆周轨迹任务测试7
4.5误差分析7
五、结论心得体会8
5.1结论8
5.2心得体会8
参考文献9
附录1:电路原理图10
附录2:部分PCB设计图11
附录3:部分关键程序12
附录4:系统整体照片13

风力摆控制系统

摘要:本系统采用STC12C5A60S2为主控芯片,通过MPU6050传感器提供反馈信息、采用PID控制算法调整轴流风机的状态、在液晶和按键的人机交互作用下显示并切换工作模式,形成一闭环测控系统。该测控系统通过控制驱动各风机,使风力摆按照一定规律运动,同时保证摆杆下方悬挂的激光笔能在地面画出要求的轨迹。

关键词:风力摆  STC12单片机  轴流风机

设计任务

一长约 60cm~70cm 的细管上端用万向节固定在支架上,下方悬挂一组(2~4 只)直流风机,构成一风力摆。风力摆上安装一向下的激光笔,静止时,激光笔的下端距地面不超过 20cm。设计一测控系统,控制驱动各风机使风力摆按照一定规律运动,激光笔在地面画出要求的轨迹。具体要求可参看设计任务书。

二、方案论证

根据题目要求,此测控系统完成控制风力摆按照一定规律运动、使激光笔在地面上画出规定轨迹的任务。其通过按键与LCD三级子菜单,在不同工作模式间切换,完成相应的控制任务,关键在于反馈信息的准确和对轴流风机的控制。为此我们将系统分为五个模块,并对各个模块的方案进行了评估选择。系统整体方案框图如图 1 所示:

0.png
图1 系统整体框图
2.1控制器模块方案
控制器是整个控制系统的核心,承载着执行控制算法,实现控制功能的作用。因此,要保证系统整体的控制质量,控制器的选择非常重要!在控制器的选择方案中,主要进行了如下对比:
方案一:选择常见且应用广泛的AT89C52作为控制芯片。对于这种单片机,我们有良好的知识基础,上手快,成本低。然而对于本控制系统,程序量较大、所需I/O口较多,89单片机将很难满足控制要求,难以胜任控制任务。因此,89单片机并不适合作为本系统的控制器。
方案二:较之89系列单片机,STC12单片机资源丰富,集成EEPROM、AD、 PCA可编程计数阵列等;其功能更强大,执行速度更快。对于本系统来说,足以完成控制任务。故而作为本控制系统的首选。
2.2位置检测模块
检测模块不仅是获得被控系统所需信息的唯一渠道,而且从根本上决定了被控系统的控制精度,相当于控制系统中的“眼睛”;因此检测模块的设计对整个控制系统的设计至关重要!基于此,在选择检测元件时,主要做了如下对比:
方案一:选择整合性6轴运动处理组件MPU6050,利用其自身集成的3轴MEMS陀螺仪,3轴 MEMS加速度计精确地对被控对象的运动状态进行数据采集;在数据处理上采用卡尔曼滤波算法,测量精度极高。另外,该传感器封装小节省空间,对本系统的控制十分有利。
方案二:选择角度、加速度模块 MMA7361传感器。这一模块虽有压降小,适合高噪声电源环境工作等特点,但其测量精度及测量范围等各方面性能不及MPU6050。综合考虑,选取MMA7361作为检测变送传感器并不明智。
              经过上述对比,最终本系统选用了MPU6050作为位置检测的传感器。
2.3动力装置方案设计
动力装置作为本控制系统中的执行机构,是控制系统中的重要组成部分。它将控制器送来的控制信号转换成执行动作,从而操纵作用于被控对象的能量,将被控变量维持在所要求的数值上或一定的范围内。轴流风机作为此系统的唯一动力装置,其提供的动力是否充足、可调性是否优良将直接决定能否完成控制任务和控制质量的高低。为此考虑了成本、体积等因素,主要拟定了以下两个方案。
方案一:选择某牌直流12V-2.3A轴流小型风机。该风机体积小、质量轻,对摆杆的运动十分有利。另外,该种风机功率大、动力充足,能为控制系统提供充足的能量。
方案二:选择与上述风机同品牌的12V-1.8A轴流风机。与上述风机相比,该风机质量较大,功率却不及小型风机。其他方面,此二种风机并无差异。
上述方案的论证,似乎证明方案一将是本系统的不二之选,然而事实并非如此。在经过充分的实验发现(详见4.1中风机性能测试),方案一中风机启动过慢、控制不及时,而且其提供风力并不比方案二中轴流风机大。因此,本系统最终确定以方案二作为动力装置。
2.4外围模块方案设计
本系统中的外围模块,主要是指与对风机的控制不起直接作用的功能调用模块、显示模块、声光提示模块、电源模块。
主要是指键盘(按键)模块和显示模块。由于该系统所涉及的控制任务较多,使用键盘按键进行不同那个任务间的相互切换,降低了对程序的逻辑要求,易于编程、方便实施。而显示模块将检测到的信息直观的显示出来,利于对整个控制过程进行实时监控。这种良好的人机交互环境,也非常符合当前控制过程智能友好的趋势。
2.4.1 功能调用模块的设计
功能调用模块主要完成切换系统工作模式的任务。这里工作模式的切换主要通过按键,常见的按键单元有:矩阵键盘、简单键盘等。以下为两种方案的对比:
方案一:矩阵键盘占用单片机的端口少、节约硬件资源;但电路设计较复杂、开发时间较长、软件设计也相对复杂。主要针对多键盘设计,适用于控制要求高、控制功能多的系统。
方案二:简单键盘设计简单、易于实现、减少了系统的复杂度;尤其适合执行功能不多的系统。
在上面的对比中不难看出,利用简单键盘进行功能调用将更加方便;对本系统的设计更有优势。因此选用方案二。
2.4.2 显示模块的设计
作为人机交互的途径,显示模块旨在占用最小的资源提供最多的可利用信息。常见的显示模块有1602液晶和12864液晶,本文对上述两种液晶做了如下对比:
方案一:采用1602液晶。1602液晶体积小、引脚少,节省硬件资源;但其显示信息量与其他液晶相比较小。
方案二:采用12864液晶。该种液晶微功耗、显示信息量大、字迹清晰、美观、视觉舒适;适合进行菜单显示,使整个控制系统更加人性化。另外,其可在串行口模式下工作,工作时仅需引出两根数据线和两根电源线,更加节省I/O口。
考虑到以上信息、并结合了本系统的特点,最终本系统以12684液晶作为显示单元。
2.4.3 声光提示模块
此模块的设计主要考虑了设计任务的要求,即各项目中,运动达到要求时需有明显的声或光提示,以便开始测试及记录。本系统的提示装置为发光二极管和蜂鸣器,他们在系统中起到了提示作用,这里不再赘述。
2.4.4 电源模块
在该控制系统中,要完成控制任务必须保证风机提供充足的动力。这就要求电源能提供风机工作所需的电流。在选择电源时,主要从如下两个方案中进行实验对比:
方案一:采用类似于驱动直流电机的方法,通过L298N驱动四个风机。此方案在电机的控制中较为常见,轴流风机作为一种直流电机,应该也能正常工作。
方案二:使用两个12V-3A的电源直接供电,每个电源分别为其中的两个风机供电。这样要控制风机,必须选择带有PWM控制线的风机。
通过实验证实:方案一如果没有采用必要的软件控制和硬件补偿,很难提供充足的动力使摆杆摆起足够的角度。而方案二只要选择带有控制线的风机,便避免了方案一中的弊端。 故此系统电源选择方案二。
2.5硬件电路设计

在硬件方面,本系统采用了STC12C5A60S2最小系统板、12864液晶以及其他外围模块。相应的电路图和PCB板可参看附录1。

2.6 系统控制方案整体设计
选择好各模块合适的方案后,系统整体控制方案的设计就相当重要了。首先是系统结构设计,如图2所示是系统的机械结构。
图2 系统结构模型                                                                                      图3 风机摆放位置
值得注意的是③风机的摆放位置,为便于设计分析,风机应摆放为十字型如图3所示。
控制系统各部分的关系如图4控制方框图所示。

图4 控制系统控制方框图
明确了控制流程和系统结构,系统控制任务的完成就完全依赖于对摆运动过程的理解。这里首先对系统结构进行说明,然后将系统的运动过程分为摆直线和摆圆周两个部分,进行简要分析。
2.6.1 风力摆摆直线过程分析
其简化的模型如图5所示。很显然,在该模型中摆杆的位置到圆心A的距离与角度α成单值函数关系。在执行风力摆摆直线的工作模式时,只要根据反馈的角度α,在确定了摆杆的长度的前提下,即可由式1得到摆杆所能摆直线的长度D:
由于 ,而事实上,摆杆摆起的高度可以近似忽略,则
D=l*tanα,      (公式1)
即:α=arctan(D/l)   (公式2)
其中l为摆杆长度。在具体工作时,可将控制器的输出信号作用于风机,以此来改变其摆动的幅度。此为风力摆摆直线的简单分析。
图5 风力摆简化模型
              2.6.2风力摆摆圆过程分析
力摆摆圆过程其实可以分解为两个方向(x轴、y轴)的运动,如图6所示。
在该过程中,四个轴流风机控制了摆杆沿如图所示的x、y方向的运动。只要使在x方向的运动与y向的运动频率相同、幅度相等,相位相差90°,即可完成画圆任务。因此利用反馈的位置信息,可控制四个风机的工作状态;进而改变摆杆所处位置,完成控制任务。
图6风力摆摆圆简易模型
三、理论分析与计算
3.1运动控制
在2.5部分,对摆的运动状况已经有了一个基本的了解。下文的叙述将在上述运动状态的基础上,以设计任务为最终目的,结合采用的控制算法进行分析论证。
3.1.1直线运动的控制
设计任务中,要求本系统做类似自由摆运动,使激光笔稳定地在地面画出一条长度不短于 50cm 的直线段,其线性度偏差不大于±2.5cm,并且具有较好的重复性。这显然是一个开环控制,通过粗略调节便可实现设计任务。在2.5.1中的运动分析部分已经明确,要求激光笔绘制的距离需要控制的其实是摆杆的角度,而摆杆的角度是通过控制轴流风机的转速产生空气推力来间接控制的。为了使激光笔绘制的轨迹达到设定值,我们就需要控制摆杆的倾角,这个个倾角可以直接计算出来;然后,通过简单的开环调节,给风机以相应的PWM波,风机带动摆杆摆动,便可轻易实现直线任务。
3.1.2 摆圆运动的控制
在2.5.2的基础上,可做如下分析。如图7运动分解,并结合公式1和公式2不难得出如下公式:
,  (公式3)
其中,θ是自行设置的,知道轴向风机应产生空气推力的比例之后,MCU 将控制电机的 PWM 置为相应比例,反复调节几次便可以使摆动角度达到要求。
图7  运动分解图示

3.2  软件实现

在有了一定的理论基础,并构建了相应的硬件电路之后,控制任务将完全依赖于程序实现。而此系统的关键在于,根据反馈角度对轴流风机进行较精确的控制。这一精确控制体现在PWM的控制中,因此控制算法的选择尤为重要。

3.2.1所用算法

本系统采用增量式PID控制公式:(如下所示)

△u(k)=Kp[e(k)-e(k-1)]+Kie(k)+Kd[e(k)-2e(k-1)+e(k-2)],  (公式4)

其中,△u(k)系统应增加的输出
Kp为比例系数
Ki积分时间
Kd微分时间
e(k)第K次采样的误差
e(k-1) 第k-1次采样的误差
e(k-2) 第k-2次采样的误差

于本控制系统而言,误差即给定值与反馈的到的姿态角之间的差值。经过计算得到u(k)作为控制器的输出,调节风机转速,这一改变直接作用于被控对象,最终达到控制效果。这一过程中控制质量的优劣,关键在于PID控制算式中比例系数Kp、积分时间Ki和微分时间Kd的整定。本系统整定主要采用了经验试凑法,这里不再赘述。

3.2.2 程序部分
A.主程序流程图如8所示:
图8  程序流程图
B关键算法的程序实现
在任务一和二中,采用了开环控制,这里不再给出其实现程序。在其他基础任务和发挥部分,用到了PID控制方法,其实现代码见附录三。
四、测试结果与误差分析
4.1风机性能的测试
将占空比恒定的PWM波分别加到两组风机上,在其他状况完全相同的情况下,记录启动N秒后摆杆所能摆动的幅度,以此来进行其性能比较。如下表1所示:
风机类型

风机数
小风机启动N秒后的摆动幅度(单位:厘米)
大风机启动N秒后的摆动幅度(单位:厘米)
3
5
10
15
20
3
5
10
15
20
1
3
4
17
25
24
4
4
15
29
35
2
3
5
28
30
35
4
15
37
49
55
表1风机性能的测试
对比上述测试数据,不难发现小风机虽然功率大,但实际的吹风效果并不及大风机,且风机数量越多越利于摆出较大幅度。
4.2摆直线任务的测试
在任务一和任务二中,都是完成摆直线的任务。所以这里仅给出部分测试数据,下表2所示的记录,是设定摆摆动幅度为55cm时的数据。表中的偏离程度是指,所摆轨迹偏离给定直线的距离。
次数
项目
1
2
3
4
5
6
7
8
9
所用时间
12.3‘
12.5’
10’
11.5’
12.3’
11.7’
11.8’
13.9’
11.2’
偏离程度
±1.5
±1.0
±2.0
±1.0
±0.5
±0.8
±1.0
±2.5
±1.5
表2摆直线任务测试记录
4.3速停任务测试记录:
将摆杆拉起不同的角度,记录其停止时间。多次进行试验后,数据记录如下:
起角及耗时
次数

30°

35°

40°

45°
1
3.8s
4.0s
3.7s
5.0s
2
3.7s
4.0s
5.1s
4.7s
3
3.7s
3.8s
3.9s
3.8s
4
4.0s
4.5s
3.8s
6.7s
5
4.6s
6.2s
4.8s
5.0s
6
3.9s
3.6s
6.3s
3.9s
7
4.2s
3.8s
4.0s
4.9s
8
4.1s
4.5s
3.7s
7.8s
表3速停任务记录
4.4圆周轨迹任务测试
该部分数据为设定摆圆半径,记录其轨迹稳定完成规定任务时所用时间:
半径
次数
15cm
20cm
25cm
30cm
1
12.4s
15.2s
17.3s
20.1s
2
13.5s
13.4s
19.8s
22.8s
3
13.9s
12.1s
18.3s
19.8s
4
15.0s
14.9s
17.6s
17.9s
5
14.7s
16.2s
17.8s
21.8s
6
14.0s
15.2s
16.3s
22.3s
7
13.8s
15.3s
21.2s
23.9s
8
13.0s
16.7s
18.2s
18.9s
表4圆周轨迹任务测试
4.5误差分析
由表中数据可知,在每一项数据中都在时间和摆动轨迹上存在误差。分析其产生原因,主要有四:一是参数整定不足够优良,这是最根本的;二是机械结构不够稳固,在摆杆运动过程中其引起系统震动,这一干扰在系统中很难消除;三是控制器通信存在时间滞后,难以消除;还有第四点就是测量是可能存在误差。不过,这些误差都是在所允许的范围内,故而可以认定系统是满足设计要求的。
结论心得体会
5.1结论
经过足够多次的测试,在允许的误差范围内,本系统基本完成了设计任务。测试中,该系统充分展示了其较高稳定性和较强的鲁棒性。附录中给出了相关的程序和电路图等,以供说明使用。
5.2心得体会
眼看结项之日临近,心中难免感慨万千。从确定题目、到制定方案、到程序调试……我们经历了漫长而又最最充实的四天三夜!
热爱下“控制之种”
源于对控制学科的热爱,试题未出,本团队成员便达成一致意见:无论控制类题目的难易,一定做控制题。
工作一展开,我们团队便按事先的准备明确分工、通力配合。这种和谐特别体现在搭建系统机械架构和最后的程序调试过程中。整个工作过程中,我们相互鼓励,最终完成了既定任务。
汗水浇灌成功之花
在作品最终定型那一刻,我们所有的疲惫都化为乌有,我们所有的汗水都化作成功的喜悦。此时,最终的结果都已不再重要,我们有所付出、有所收获、有所感动,这便是我们最大的成功。
从项目开始到最终完成,我们遇到的困难从硬件资源不足,到算法实现困难,又到程序调试困难重重;然而,我们没有被吓倒,因为我们坚信:一切困难都是纸老虎!达不到期望的性能,我们可以不吃饭、不睡觉;我们不认为苦,因为我们乐在其中!最终我们做到了让自己满意,We did it!
稍有遗憾,收获颇丰
当然,这个过程中我们还是留有一些遗憾。因为系统仍有不足,未能完善到我们理想的状态。主要有三:一是对机械部分的构建,现有设备毕竟有限,主要利用了木材作为支撑设备,其柔性对系统的干扰,我们很难克服;二是对算法和程序的优化不足,造成程序略显冗余,给日后本团队完善作品、添加功能造成不便;三是原本计划的发挥功能未能成功添加到系统中,如实现检测信号显示到手机上,进行实时监控的功能等。
谈到收获,那应该就是这次赛事所给我们带来的项目经验了。我们层层障碍,最终完成作品;成功将理论联系实际。我们很享受这个过程,这四天三夜的充实工作,必将是我们团队终生铭记!
致谢
最后我们要感谢主办方、学校和指导老师,感谢你们为我们创造的这一平台,让我们有机会将自己的理论与实践结合,让我们的动手能力提高到新的台阶!
参考文献
1.《单片机实用系统设计与仿真经典实例》,电子工业出版社,周润景 刘晓霞著
2.《全国大学生电子设计竞赛培训系列教程<数字系统与自动控制系统设计>》,电子工业出版社,高吉祥主编
附录1:电路原理图
1.1单片机资源分配
1.2电源转接板原理图
附录2:部分PCB设计图
注:由于条件限制,所画板子为单层板;且由于设备原因,布线很粗,图中出现了警告,但并不影响正常使用。
2.1电源转接板PCB
2.2 显示模块LCD12864转接
附录3部分关键程序
3.1  PID控制算法实现程序

static float Kpx=18.7; //X 轴倾角乘以相应系数进行归一化处理

static float Kdx=0.20; // X 轴角速度归一化

static float Kpy=20.4; //Y 轴倾角实时倾角乘以相应系数进行归一化处理

static float DY=0.20; // Y 轴角速度归一化

float R;//半径长度;

float θ;//目标倾角;

void Angle (void)

{

int X_PWM, Y_PWM;

int nSpeed;

int nPx, nDx;

int nPy, nDy;

θ = arctan(R/L);

nPx= (int)(θ-angle x)*Kpx; //X 轴倾角与目标值的偏差,比例环节

nDx = (int)speed_x*Kdx; //摆杆 X 轴向角速度,微分环节

nSpeedx = nDx + nPx; //实时角度+实时角速度,作为控制输入量

nPy= (int)(0-angel_y)*Kpy; //摆杆 Y 轴向倾角,比例环节

nDy = (int)speed_y*Kdy; //摆杆 Y 轴向角速度,微分环节

nSpeedy = nDy + nPy; //实时角度+实时角速度,作为控制输入量

X_PWM = nSpeedx*; //转化成 PWM 脉宽调制的直接控制量

Y_PWM = nSpeedy;

Motor (X_PWM, Y_PWM);//输出 PWM 信号作用于轴流风机

}

在本系统的PID控制中,所采用的方法基本与上述程序相同。不同之处在于,完成不同的控制任务,所整定的参数是不一样的。这里不一一列举。
附录4:系统整体照片
4.1系统外观
4.2 风机排布
4.3工作中计时器
4.4工作中的菜单显示模块


完整的Word格式文档51黑下载地址:
风力摆控制系统.docx (1.35 MB, 下载次数: 68)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表