全国大学生电子设计竞赛风力摆控制系统论文.docx

上传人:b****7 文档编号:10480802 上传时间:2023-02-13 格式:DOCX 页数:24 大小:55.68KB
下载 相关 举报
全国大学生电子设计竞赛风力摆控制系统论文.docx_第1页
第1页 / 共24页
全国大学生电子设计竞赛风力摆控制系统论文.docx_第2页
第2页 / 共24页
全国大学生电子设计竞赛风力摆控制系统论文.docx_第3页
第3页 / 共24页
全国大学生电子设计竞赛风力摆控制系统论文.docx_第4页
第4页 / 共24页
全国大学生电子设计竞赛风力摆控制系统论文.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

全国大学生电子设计竞赛风力摆控制系统论文.docx

《全国大学生电子设计竞赛风力摆控制系统论文.docx》由会员分享,可在线阅读,更多相关《全国大学生电子设计竞赛风力摆控制系统论文.docx(24页珍藏版)》请在冰豆网上搜索。

全国大学生电子设计竞赛风力摆控制系统论文.docx

全国大学生电子设计竞赛风力摆控制系统论文

2015年全国大学生电子设计竞赛

风力摆控制系统(B题)

2015年8月15日

摘要

系统为由STC12单片机控制模块、姿态采集模块、风力摆模块、液晶显示模块、人机交互系统以及风力摆机械结构组成的闭环控制系统。

MPU6050采集风力摆的姿态角,单片机处理姿态角数据后通过PID精确算法调节直流风机以控制风力摆。

本系统实现了风力摆在仅受直流风机为动力控制下快速起摆、画线、恢复静止的功能,并能准确画圆,且受风力影响后能够快速的恢复画圆状态,具有很好的鲁棒性,另外,本系统具有良好的人机交互界面,各参数及测试模式可有按键并通过液晶显示,性能好,反应速度快。

关键词:

PID算法MPU6050STC12单片机人机交互

一、系统方案1

1.1主控制器件的论证与选择1

1.2姿势采集的论证与选择1

二、系统理论分析与计算2

2.1风力摆控制系统的分析2

2.2、基础部分功能实现的分析与计算3

2.2.1基础一功能实现的分析与计算3

2.3、发挥部分功能实现的分析与计算4

三、电路与程序设计5

3.1电路的设计5

3.2基础部分系统框图与电路原理图5

3.2.1基础部分系统框图5

3.3发挥部分系统框图与电路原理图6

3.3.1系统框图6

3.4电源6

3.5程序的设计6

3.5.1程序功能描述与设计思路6

3.5.2程序流程图6

四、测量方案与测量结果7

4.1测量工具7

4.2测试方案及结果7

五、结论与心得8

六、参考文献9

附录1:

电路原理图10

附录2:

源程序(部分)11

风力摆控制系统(B题)

【本科组】

一、系统方案

本系统主要由STC12单片机控制模块、姿态采集模块、风力摆模块、液晶显示模块、电源模块组成,下面分别论证这几个模块的选择。

1.1、主控制器件的论证与选择

1.1.1单片机比较控制器选用

方案一:

采用传统的51系列单片机传统的51单片机为8位机,价格便宜,控制简单,但是运算速度慢,片内资源少,存储容量小,难以存储大体积的程序和实现快速精准的反应控制。

并且受时钟限制,计时精度不高,外围电路也增加了系统的不可靠性。

方案二:

采用以增强型80C51内核的STC系列单片机STC12C5A60S2,其片内集成了60KB程序Flash,2通道PWM、16位定时器等资源,操作也较为简单,具有在系统调试功能(ISD),开发环境非常容易搭建

通过比较,我们选择方案二,采用以增强型80C51内核的STC系列单片机STC12C5A60S2作为控制器。

1.1.2控制系统方案选择

方案一:

采用在面包板上搭建简易单片机系统在面包板上搭建单片机系统可以方便的对硬件做随时修改,也易于搭建,但是系统连线较多,不仅相互干扰,使电路杂乱无章,而且系统可靠性低,不适合本系统使用。

方案二:

自制单片机印刷电路板

自制印刷电路实现较为困难,实现周期长,此外也会花费较多的时间,影响整体设计进程。

不宜采用该方案。

 

方案三:

采用单片机最小系统。

单片机最小系统包含了显示、矩阵键盘、A/D、D/A等模块,能明显减少外围电路的设计,降低系统设计的难度,非常适合本系统的设计。

综合以上三种方案,选择方案三。

1.2、姿势采集的论证与选择

方案一:

只测量风力摆关于静止状态时的偏转角。

采用二维平面内角位移传感器测量风力摆转动时关于静止状态时的偏转角,通过控制该偏转角实现对流风机的控制。

该方案软件处理繁琐,且二维平面内的角位移传感器不利于测量风力摆的空间位置,不利于实现对风力摆的精确控制。

方案二:

选用双轴倾角传感器模块LE-60-OEMLE-60-OEM,测量重力加速度变化,转为倾角变化,可测量双向。

具有稳定性高、低功耗、结构简单等优点。

响应速度为5Hz。

它可以测量平衡板与水平方向的夹角,x,y方向可以测,但z轴不可测。

且操作复杂,软件处理难度大。

方案三:

采用三维角度传感器。

用三维角度传感器时刻测量风力摆当前姿态,通过处理采集的姿态角数据控制风机带动风力摆运动。

此方案可精确测量风力摆当前姿态,实现对风力摆的精确控制。

综合比较以上两个方案,本系统选择方案三。

1.3、控制系统的论证与选择

1.3.1风机速度控制

方案一:

采用D/A变换电路将数字量转换成控制电机电压的模拟量。

再利用电平的高低达到调速的目的。

原理框图如图1所示。

本方案达到了利用CPU输出的数字量精确控制模拟量的目的。

但原电路比较复杂,成本较高。

方案二:

采用脉宽调制方式(PWM)从I/O口输出不同占空比的脉冲,经滤波后获得不同高低电平控制电机。

本方案可以达到对速度的控制要求,且控制简单易实现。

通过比较明显方案二最简洁清晰、容易实现、速度快、精度高。

从系统指标要求来看,对速度要求较高,低速与高速之间差别较大,且准确度要求高,各个速度之间的切换也要求简单、迅速。

采用方案二可利用单片机运行速度快的特点进行速度的快速调整,且方案二速度准确度高、级数多容易达到系统指标要求。

所以我们选用方案二作为控制部分具体实施的方案。

1.3.2算法的选择

方案一、采用模糊控制算法,模糊控制有许多良好的特性,它不需要事先知道对象的数学模型,具有系统响应快、超调小、过渡过程时间短等优点,但编程复杂,数据处理量大。

方案二、采用PID算法,按比例、积分、微分的函数关系,进行运算,将其运算结果用以输出控制。

优点是控制精度高,且算法简单明了。

对于本系统的控制已足够精确,节约了单片机的资源和运算时间。

综合比较以上两个方案,本系统选择方案二。

二、系统理论分析与计算

2.1、风力摆控制系统的分析

2.1.1风力摆系统模型建立

(1)建立风力摆运动模型,由于系统是由轻杆和风机等组成,相较于风机,轻杆质量很小,可以近似认为旋转臂重心在风机中心线上附近,风机沿半径为L的弧长自由摆动。

示意图如图

图.1自由摆模型示意图

最低位置时风机将达到最大速度,因此在不计空气阻力及固定点摩擦力的下利用能量守恒定律有:

在θ不超过60°,l=70cm的情况下。

计算得v=2.236m/s,由角速度与线速度之间的关系,得出

②自由摆周期计算

根据单摆的周期计算公式

;得单摆周期T=1.732ms。

2.2、基础部分功能实现的分析与计算

2.2.1基础一功能实现的分析与计算

如图2:

图2系统结构图

要绘制超过50cm的直线段,只需要在平面内运动即可,如上图所示,只需要R大于25cm,有公式:

;则

其中,R为横向摆动半长,

为摆杆长,

为激光笔长(

可忽略不计)。

2.2.2基础二功能实现的分析与计算

要实现任意设置的线段长度,相当于需要实现指定范围内任意的角度,必须使用闭环控制,否则很难实现精确控制。

计算公式和基本部分

(1)一样,不过,我们需要增加闭环控制算法,详述如下:

设置任意直线段长度(30~60cm间)∆R,那么,对应的摆杆最大角度(角度阈值)为

如此转换便可得到我们能够测量的物理量(倾角)传感器将倾角,角速度返回MCU,MCU通过控制轴流风机产生空气推力推动摆杆摆动。

2.2.3基础三功能实现的分析与计算

示意图3:

图3轴流风机俯视图

假设轴流风机呈“+”形状分布,分别对应X,Y轴方向,那么如果设定某一摆动方向,与X轴呈θ角,那么:

,则

这需要四台轴流风机配合,形成合力方可实现,而四台风机分别位于X,Y轴线上,只需要两个轴线上的风机各自产生的空气推力呈比例,即,

其中,θ是自行设置的,轴向风机应产生空气推力的比例为

,MCU将控制电机的PWM置为相应比例,反复调节几次便可以使摆动角度达到要求。

拉起一定角度后,需要提供与运动方向相反的力,阻碍摆杆运动。

设定值半长R=0,则

=0;此为平衡位置。

重力方向(自然平衡点)为需要控制达到的转态,无论以何种方向拉起摆杆,倾角传感器的X、Y轴角度都会产生变化(除非沿轴向),这样,根据X、Y轴的倾角、角速度数据(PD算法)分别控制X、Y轴向的风机,使之分别达到平衡状态。

2.3、发挥部分功能实现的分析与计算

图4画圆示意图

如上图,激光笔的圆周轨迹可以通过激光笔x轴的轨迹和y轴的轨迹合成得到。

即当x轴和y轴两个方向的运动轨迹是等幅且相位相差90°,这样通过两个x和y两个方向的运动合成,即可使激光笔的轨迹呈现一个圆。

x轴和y轴方向的运动模型即是基础部分提到的直线运动模型。

开始时让摆杆能在x轴方向稳定摆动一个角度θ,当摆到最高点时,同时让摆杆在y轴方向开始起振(即满足相位差为90°),并通过调节相对的两个风机转速是摆杆在y轴方向也稳定摆动θ(即满足振幅相等)

三、电路与程序设计

3.1、电路的设计

3.1.1系统总体框图

系统总体框图如图5所示,系统总体框图

图5系统总体框图

3.2基础部分系统框图与电路原理图

图6基础部分系统框图

3.2.2、基础部分系统原理电路见附录1

3.3发挥部分系统框图与电路原理图

图7发挥部分系统框图

3.3.2、发挥部分系统电路图见附录1

3.4电源

用集成稳压器7805,电路图中,稳压器7805输入端的电容为输入端滤波电容,输出端的电容为输出端滤波电容;家用电220V经过变压器接入供电电源模块,能输出直流电压-12V、-5V、5V、12V。

电源原理图见附录

3.5、程序的设计

3.5.1程序功能描述与设计思路

本系统采用三个独立按键输入各参数及测试模式,系统开机启动进入系统初始化界面,按下指定按键后进入菜单选择界面,菜单选择界面有6个功能:

分别对应题目基本要求和发挥部分6点,通过按键可以选择进入相应的功能,功能执行完毕后系统回到菜单选择界面,继续等待按键输入执行相应的功能。

3.5.2程序流程图

图8主程序图

四、测试方案与测试结果

4.1测量工具

(1)秒表

(2)量角器

(3)自制方向角度图纸

4.2测试方案及结果

表一风力摆画长于50cm直线测试

时间(s)

误差1(cm)

误差2(cm)

误差3(cm)

误差4(cm)

误差5(cm)

第一次测量

5.5

2.4

2.0

.0.5

1.3

1.7

第二次测量

5.0

1.9

1.7

0.3

1.4

1.6

第三次测量

6.0

1.4

1.0

0.6

0.8

1.6

4.2.2设置风力摆画线长度,驱动风力摆工作,记录其由静止至开始自由摆时间及在画不同长度直线时的最大偏差距离。

测试结果如表2所示

表二风力摆画不同长度直线测试

时间(s)

误差1(cm)

误差2(cm)

误差3(cm)

误差4(cm)

误差5(cm)

画30cm直线

13.6

+1.0

+1.5

-1.0

-1.0

-1.1

画40cm直线

14.5

+1.5

-0.5

-0.9

-1.0

-1.1

画50cm直线

14.0

+1.0

+0.8

+0.5

+0.4

-0.5

4.2.3设置风力摆自由摆时的角度,驱动风力摆工作,记录其由静止到开始摆时间及在不同角度上的直线时的最大偏离距离,测试结果如图3所示。

表三风力摆画不同角度直线测试

时间(s)

长度1(cm)

长度2(cm)

长度3(cm)

长度4(cm)

长度5(cm)

画0°直线

14.0

21.0

20.5

22.0

20.6

21.0

画90°直线

12.0

20.0

21.5

22.0

21.0

20.5

画180°直线

11.5

20.5

21.0

22.5

21.5

21.0

画270°直线

13.6

20.6

21.0

22.5

21.0

21.0

画360°直线

13.4

20.0

22.0

20.5

20.5

21.5

4.2.4将风力摆拉起一定角度放开,驱动风力摆工作,测试风力摆制动达到静止状态所用时间。

测试结果如表4所示。

表四风力摆恢复静止测试

T(s)

时间

(1)

时间

(2)

时间(3)

时间(4)

时间(5)

时间(6)

拉起30°

3.6

3.6

3.5

3.4

3.6

3.5

拉起40°

3.9

4.0

4.1

4.2

4.1

4.0

拉起45°

4.6

4.8

4.5

4.7

4.7

4.6

4.2.5以风力摆静止时激光笔的光点为圆心,设置风力摆画圆半径,驱动风力摆用激光笔在地面画圆,记录其画三次圆所用时间以及最大偏差距离,重复测试三次。

改变圆半径再次测试,重复以上操作四次。

测试结果如表5所示。

4.2.6在4.2.5的基础上,使用一台60W台扇在距离风力摆1m距离处向其吹5s后静止,记录风力摆回复画圆状态时间。

测试结果如表5所示。

表五风力摆画圆测试

T(s),cm

半径15cm

半径20cm

半径25cm

半径30cm

半径35cm

时间

(1)

17.6

18.5

20.5

23.0

26.5

偏离距离

(1)

5.0

6.6

4.5

7.1

8.0

恢复时间

(1)

3.5

4.0

3.9

4.3

4.6

时间

(2)

17.9

18.1

20.8

24.0

26.8

偏离距离

(2)

5.1

6.3

4.5

7.2

7.9

恢复时间

(2)

3.7

3.9

4.0

4.5

4.7

时间(3)

16.9

18.3

20.5

23.5

26.0

偏离距离(3)

5.6

6.4

4.4

7.0

7.5

恢复时间(3)

3.9

4.0

4.0

4.4

4.5

根据上述测试数据,由此可以得出本设计达到设计要求。

五、结论与心得

首先,感谢组委会给我们这样一个平台,来提高我们的能力和展示自我的舞台。

我们小组通过利用STM12单片机控制模块、姿态采集模块、风力摆模块、液晶显示模块、人机交互系统以及风力摆机械结构组成的闭环控制系统。

实现了风力摆在仅受直流风机为动力控制下快速起摆、画线、恢复静止的功能,并能准确画圆,且受风力影响后能够快速的恢复画圆状态,具有很好的鲁棒性,另外,本系统具有良好的人机交互界面,各参数及测试模式可有按键并通过液晶显示,性能好,反应速度快。

经过一个月的集训和四天三夜的竞争比赛,我们感触颇多。

本年的“摆系列”可谓是达到了摆的最高境界了,从“自由摆”到“倒立摆”,再到今年的“风力摆”,都让我们有很好的收获。

在竞争的比赛时间了,我们小组三人,分工明确,齐心合作,一起熬夜,一起战斗,最终达到了题目的要求。

期间遇到的很多困难,我们不放弃,认真讨论,最终得到了解决。

我们为自己的努力和不放弃感到自豪!

六、参考文献

[1]黄智伟,王彦,陈文光等.全国大学生电子设计竞赛训练教程[M].北京:

电子工业出版社,2007

[2]康华光数字电子技术基础(数字部分)第五版[M]高等教育出版社

[3]康华光数字电子技术基础(模拟部分)第五版[M]高等教育出版社

[4]高吉祥,唐朝京.全国大学生电子设计竞赛培训系列教程(电子仪器仪表设计)[M].北京:

电子工业出版社,2007

[5]郭天祥.新概念51单片机C语言教程.入门、提高、开发[M].北京:

电子工业出版社,2009.

[6]梁明理.电子线路(第五版)[M].北京:

高等教育出版社,2008

附录1:

电路原理图

图一:

图一系统原理图

图二液晶原理图图三矩阵键盘原理图

附录2:

源程序(部分)

voidPWMInit();//PWM初始化

voidUart1Init(void);//串口1初始化使用独立波特率

voidTime1Config();

voidMotorRun();

voidBase1Run();

voidBase2Run();

voidBase3Run();

voidDevelop1Run();

voidDevelop2Run();

voidDelayMs(uintms)//在11.0592M晶振下,stc10f系列(单周期指令)的ms级延时

{

uinti;

while(ms--)

{

for(i=0;i<850;i++);

}

}

voiddelayTShake()//延时程序去抖动

{

ucharm,n,s;

for(m=20;m>0;m--)

for(n=20;n>0;n--)

for(s=248;s>0;s--);

}

voidmain()

{

PWMInit();

Uart1Init();

lcdinit();//LCD12864初始化

Time1Config();

//CCAP1H=CCAP1L=0;//此处应该设置合适速度以达到合适振荡

//CCAP0H=CCAP0L=0;//此处一直打开是否有影响

ucStrAngle[0]=0;ucStrAngle[1]=0;ucStrAngle[2]=0;ucStrAngle[3]=0;

ucStrw[0]=0;ucStrw[1]=0;ucStrw[2]=0;ucStrw[3]=0;

EN1=0;EN2=0;EN3=0;EN4=0;

while

(1)

{

MotorRun();

}

}

voidPWMInit()//PWM初始化

{

CCON=0;

CL=0;

CH=0;

CMOD=0x00;

CCAPM1=0x42;

CCAPM0=0x42;//一直打开是否有影响

CR=1;

}

voidBase1Run()

{

CCAP1H=CCAP1L=0;

DXH=0;

while(flag)

{

if(XJIA==0)

{

delayTShake();

if(XJIA==0)

{

while(!

XJIA);

i++;

}

}

if(XJIAN==0)

{

delayTShake();

if(XJIAN==0)

{

while(!

XJIAN);

i--;

}

}

if(KAISHI==0)

{

delayTShake();

if(KAISHI==0)

{

while(!

KAISHI);

flag=0;

Xaim=jiaodu[i-30];//在此处查表

}

}

Test(i,0,0);

}

while

(1)

{

TR1=1;

b10=((short)(ucStrw[1]<<8|ucStrw[0]))/32768.0*2000;

b1=((short)(ucStrAngle[1]<<8|ucStrAngle[0]))/32768.0*180;

b2=((short)(ucStrAngle[3]<<8|ucStrAngle[2]))/32768.0*180;

if(b1max

{

b1max=fabs(b1);

}

if(b2max

{

b2max=fabs(b2);

}

j=abs((int)(174.0*tan(b1max*PI/180)));

j0=abs((int)(174.0*tan(fabs(b1)*PI/180)));

k=abs((int)(174.0*tan(b2max*PI/180)));

if(j0

{

if(b10>0)

{

EN1=0;

EN2=1;

}

else

{

EN1=1;

EN2=0;

}

}

else//大于16度即达到50cm,可调节比此范围小自荡上去

{

EN1=0;

EN2=0;

}

Test(i,j,k);

}

}

voidBase2Run()

{

}

voidBase3Run()

{

DXH=0;

CCAP1H=CCAP1L=120;//此处应该设置合适速度以达到合适振荡

CCAP0H=CCAP0L=40;

while(flag)

{

EN1=0;EN2=0;EN3=0;EN4=0;

if(KAISHI==0)

{

DelayMs(5);

if(KAISHI==0)

{

while(!

KAISHI);

flag=0;

}

}

}

while

(1)

{

TR1=1;

if(timer2>=160)//PWM周期为100*0.5ms

{

timer2=0;

DXH=1;

}

b10=((short)(ucStrw[1]<<8|ucStrw[0]))/32768.0*2000;

b20=((short)(ucStrw[3]<<8|ucStrw[2]))/32768.0*2000;

b1=((short)(ucStrAngle[1]<<8|ucStrAngle[0]))/32768.0*180;

b2=((short)(ucStrAngle[3]<<8|ucStrAngle[2]))/32768.0*180;

if(b1max

{

b1max=fabs(b1);

}

if(b2max

{

b2max=fabs(b2);

}

j=abs((int)(174.0*tan(b1max*PI/180)));

j0=abs((int)(174.0*tan(fabs(b1)*PI/180)));

k=abs((int)(174.0*tan(b2max*PI/180)));

k0=abs((int)(174.0*tan(fabs(b2)*PI/180)));

if((fabs(b10)<6)&&(fabs(b1)<4)&&(fabs(b2)<3)&&(fabs(b20)<6))

{

while

(1)

{

EN1=0;EN2=0;EN3=0;EN4=0;

}

}

else

{

if((b1<0)&&(b2>0))//b1

{

EN1=1;

EN2=0;EN3=0;EN4=1;

}

if((b1<0)&&(b2<0))

{

EN1=1;

EN2=0;EN3=1;EN4=0;

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1