基于自由摆的平板控制系统.docx

上传人:b****4 文档编号:6065553 上传时间:2023-05-09 格式:DOCX 页数:23 大小:192.21KB
下载 相关 举报
基于自由摆的平板控制系统.docx_第1页
第1页 / 共23页
基于自由摆的平板控制系统.docx_第2页
第2页 / 共23页
基于自由摆的平板控制系统.docx_第3页
第3页 / 共23页
基于自由摆的平板控制系统.docx_第4页
第4页 / 共23页
基于自由摆的平板控制系统.docx_第5页
第5页 / 共23页
基于自由摆的平板控制系统.docx_第6页
第6页 / 共23页
基于自由摆的平板控制系统.docx_第7页
第7页 / 共23页
基于自由摆的平板控制系统.docx_第8页
第8页 / 共23页
基于自由摆的平板控制系统.docx_第9页
第9页 / 共23页
基于自由摆的平板控制系统.docx_第10页
第10页 / 共23页
基于自由摆的平板控制系统.docx_第11页
第11页 / 共23页
基于自由摆的平板控制系统.docx_第12页
第12页 / 共23页
基于自由摆的平板控制系统.docx_第13页
第13页 / 共23页
基于自由摆的平板控制系统.docx_第14页
第14页 / 共23页
基于自由摆的平板控制系统.docx_第15页
第15页 / 共23页
基于自由摆的平板控制系统.docx_第16页
第16页 / 共23页
基于自由摆的平板控制系统.docx_第17页
第17页 / 共23页
基于自由摆的平板控制系统.docx_第18页
第18页 / 共23页
基于自由摆的平板控制系统.docx_第19页
第19页 / 共23页
基于自由摆的平板控制系统.docx_第20页
第20页 / 共23页
亲,该文档总共23页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

基于自由摆的平板控制系统.docx

《基于自由摆的平板控制系统.docx》由会员分享,可在线阅读,更多相关《基于自由摆的平板控制系统.docx(23页珍藏版)》请在冰点文库上搜索。

基于自由摆的平板控制系统.docx

基于自由摆的平板控制系统

 

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

 

基于自由摆的平板控制系统(B题)

【本科组】

 

 

2011年9月6日

基于自由摆的电机控制系统(B题)

【本科组】

1系统方案

1.1电机的论证与选择

方案一:

直流电机用于调速控制时比较完善,但造价高,结构复杂、换相困难,且不能死锁,用于此控制系统显然不适合。

方案二:

步进电机是专门用于位置和速度精确控制的特定电机。

它的最大特点是其“数字性”,对于控制器发过来的每一个脉冲信号。

本系统是用电机控制旋转一定角度,步进电机只有周期性的误差而无累积误差等特点,使得步进电机在控制系统中运用非常简单。

综合以上两种方案,选择方案二。

1.2传感器的选择

方案一:

用水平传感器检测摆杆转角。

角度传感器是检测物件运动和方向的传感器,它根据物件运动和方向改变输出信号的电压值。

将采集到的电压信号转换成角度信号,就可控制电机以控制平板。

但用水平传感器电路复杂,对输入电压要求严格。

方案二:

用电阻式角度传感器检测摆杆角度。

电阻式角度传感器模拟信号输出,所以用它测角度变化不明显,灵敏度不高。

电压干扰大。

方案三:

用光电编码器检测摆杆转角。

光电编码器是一种通过光电转换将输出轴上的几何位移量转换成脉冲的传感器,检测角度信号时可以直接根据编码器输出脉冲个数得到角度信号,来控制电机步进数。

它的电路简单,不需要在对采集的信号做处理,节省单片机时间。

综合考虑采用方案三。

1.3控制系统的论证与选择

方案一:

用微控制器处理光电编码器输出地角度信号、步进电机步进控制和LCD的显示。

利用51单片机的优点是价格便宜,使用比较方便,缺点是接口少,使用时需扩展,外围电路比较多,运算处理速度不高,功耗高。

方案二:

采用C8501F410单片机达32KB的片内FLASH存储器,两个12位电流输出DAC,有4个通用的16位定时器。

片内有多达24个端口I/O。

运算速度快,功耗低。

综合考虑采用方案二。

2系统理论分析与计算

2.1平板状态测量方法

将光电编码器安装在摆杆固定端检测摆杆旋转角度。

角度变化一度,光电编码器A相输出一个脉冲,B相根据旋转方向不同输出脉冲与A相相位超前或延迟

(具体关系图见附录)。

将输出信号通过I/O口送入单片机。

单片机利用IT01CF寄存器设置外部中断检测端口信号,再判断电机的转向对得到的信号处理后,使平板能够达到所要实现的状态。

2.2系统建模

2.2.1平板保持水平状态的计算

如图2.2.1所示,当轴杆转角为

时,

因为

所以

图2.2.1轴杆转动

2.2.2平板倾斜状态的计算

图2.2.2激光笔打在纸上的转角示意图

发挥部分计算平板转角如图2.2.2所示是

因为

(1)

摆杆右测摆动时平板旋转角度为

,左摆时旋转角度为

如公式

(1)、

(2)所示。

(2)

2.2.3自由摆周期的计算

根据摆的运动规律,算的摆的周期T为

2.3系统控制方法

系统控制是根据公式

(1)、

(2)中两角之间的关系,根据MATLAB计算得到数据表见附录3。

光电传感器测得度数,单片机判断角度信息设置IT01CF,利用外部中断0,步进电机细分为32,根据电机步进角度和附录中两角关系控制电机步进。

3电路与程序设计

3.1电路设计

3.1.1总体思路

单片机从键盘获取控制信息,通过液晶屏显示实时控制界面。

由光电编码器检测摆杆的摆角信号传送给单片机,单片机将控制信号输出到电机驱动器上,驱动步进电机转动相应的步数使平板达到不同要求所设定的不同状态。

3.1.2系统结构框图

图3.1.1系统总体框图

3.2程序设计

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

单片机选择C8051F410是完全集成的低功耗信号片上系统型MCU。

单片机含高速、流水线结构的8051兼容的微控制器核,外部中断可以直接跟踪。

本系统主要依靠单片机C语言软件编程。

系统主要程序有控制电机使平板随摆杆旋转、在平板中心稳定放置硬币、平板上固定激光笔使光斑投射到靶子上中心线三部分。

系统总体流程图如图3.2.1所示。

图3.2.1系统总流程图

3.2.2主要程序流程图

单片机从键盘获取控制信息,进入不同的功能模块,通过液晶屏显示实时控制界面。

功能一实现平板旋转控制。

摆动摆杆控制平板随摆杆摆动一周期而平板旋转360度,其流程图如图3.2.2所示。

功能二实现在摆杆摆动5个周期中硬币不从平板滑落,其流程图如图3.2.2所示。

功能三实现光斑照射在靶纸中心线上的控制,其流程如图3.2.3所示。

功能四自动检测平板状态并调整,其流程如图3.2.4所示。

在程序控制过程中还要用到角度调整,因为角度测量用到外部中断,不影响正常程序运行。

它的流程图如图3.2.5所示。

图3.2.2功能一流程图图3.2.3功能二程序流程图

图3.2.4功能三流程图图3.2.5功能四流程图图3.2.6角度调整

4测试方案与测试结果

4.1测试方案

1)将软件下载,用手推动摆杆至一个角度

,记录在五个摆动周期内平板随摆杆旋转周数是否达到要求(

角保持不变),测量10次。

2)用手推动摆杆至一个角度

间),调整平板角度,在平板中心稳定放置一枚1元硬币,启动后放开摆杆让其自由摆动。

测试10次在摆杆摆动过程中硬币能否在5个摆动周期内不从平板上滑落(尽量少滑离平板的中心位置)。

3)用手推动摆杆至一个角度

间),调整平板角度,在平板中心稳定叠放8枚1元硬币,启动后放开摆杆让其自由摆动。

测试10次在摆杆摆动5个摆动周期内硬币仍在平板上的数目。

4)平板上固定激光笔,用手推动摆杆至一个角度

间),启动后,系统在15s时间内激光笔照射在靶子上中心线的偏离距离,测量10次。

4.2测试条件

单片机光电电压为9V,电机驱动的参数设定如表4.2.1所示。

表4.2.1步进电机驱动控制器的参数

电压

细分

衰减

电流

测试时应保证未外界干扰(如风、地面平整等能避免的自然条件),准备有硬币,粘着A4靶纸的靶子。

4.3测试结果及分析

4.3.1测试结果

1)平板转动测量结果:

第1次

第2次

第3次

第4次

第5次

第6次

第7次

第8次

第9次

第10次

2)在板中心位置放一枚硬币测试结果:

第1次

第2次

第3次

第4次

第5次

第6次

第7次

第8次

第9次

第10次

成功

成功

成功

成功

成功

成功

成功

成功

成功

成功

3)在板中心位置叠放8枚硬币测试结果:

第1次

第2次

第3次

第4次

第5次

第6次

第7次

第8次

第9次

第10次

4)光斑打在靶子上与中心线偏离距离:

第1次

第2次

第3次

第4次

第5次

第6次

第7次

第8次

第9次

第10次

cm

cm

cm

cm

cm

cm

cm

cm

cm

cm

4.3.2测试分析与结论

根据上述测试数据可以看到本系统完成了,由此可以得出以下结论:

5参考文献

1)郭强.液晶显示应用技术[M].北京:

电子工业出版社2003年第1版

2)郭强.液晶显示应用技术[M].北京:

电子工业出版社2003年第1版

3)王小明.电动机的单片机控制[M].北京:

北京航空航天大学出版社,2002年第1版

4)图尔克(天津)传感器有限公司。

传感器技术产品手册,1997年第1版.

5)王福瑞等编.单片微机测控系统设计大全.北京:

北京航空航天大学出版社,1999年第1版

6)马忠梅,籍顺心,张凯,等.单片机的C语言应用程序设计(修订版).北京:

北京航空航天大学出版社,年第1版

 

附录1:

源程序

控制平板旋转子程序

#include

#include

#include

externvoiddelay(unsignedintm);

externvoidmain_menu();

externvoidkey_up(void);

externunsignedcharread_key(void);

externunsignedintGD_flag,step_rate;

externintdushu;

sbitP0_0=P0^2;//电机方向控制

sbitP0_1=P0^1;//输出脉冲个数

//-------------------------------------------------------------------------

voidproblem1(void)

{

inttemp_angle,sumstep,i;

temp_angle=dushu;

while

(1)

{

delay(20);

if((abs(temp_angle)>abs(dushu))&(dushu>0))

break;

else

temp_angle=dushu;

}

sumstep=360*18-step_rate;

for(i=0;i

{

P0_0=0;//inverse

P0_1=1;

delay(200);

P0_1=0;

delay(200);

}

}

在平板中心稳定放置硬币的程序

#include

#include

#include

externunsignedintpulse_mum,finish_flag;

externintdushu,fact_dushu,t_num,curr_num,coin_rate;

//------------------------------------------------------------------------------

externvoiddelay(unsignedintm);

sbitP0_0=P0^2;//电机方向控制

sbitP0_1=P0^1;//输出脉冲个数

voidcoin_1(void)

{

inti,time;

t_num=dushu*coin_rate/10;

time=200;

for(i=1;i

{

if(dushu>0)

{

if(abs(t_num)>abs(curr_num))

{

P0_0=0;//inverse反转

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

else

{

P0_0=1;//forward正转

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

}

else//dushu>0

{

if(abs(t_num)

{

P0_0=0;//inverse

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

else

{

P0_0=1;//forward

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

}

}

curr_num=t_num;

}

voidcoin_8(void)

{

inttime;

t_num=dushu*coin_rate/10;

time=200;

curr_num=t_num;

}

在平板上固定激光笔光斑投射到靶子中心线上的子程序

#include

#include

#include

externvoiddelay(unsignedintm);

codefloatsinta1[91]={

0.00,1.01,2.02,3.05,4.10,5.15,6.22,7.31,8.41,9.53,10.66,

11.80,12.97,14.15,15.35,16.57,17.81,19.07,20.35,21.66,22.98,24.33,

25.70,27.10,28.52,29.97,31.45,32.95,34.48,36.04,37.63,39.25,40.90,

42.58,44.30,46.05,47.82,49.64,51.48,53.36,55.27,57.21,59.18,61.18,

63.21,65.27,67.36,69.48,71.61,73.77,75.95,78.15,80.36,82.58,84.82,

87.06,89.30,91.55,93.79,96.03,98.26,100.48,102.69,104.88,107.05,109.20,

111.33,113.43,115.51,117.56,119.58,121.57,123.54,125.46,127.36,129.22,131.06,132.86,134.62,

136.36,138.06,139.73,141.37,142.98,144.56,146.11,147.63,149.12,150.58,152.02,153.43,

};

codefloatsinta2[91]={

0.00,0.99,1.98,2.95,3.91,4.86,5.80,6.74,7.66,8.57,9.48,10.38,11.27,

12.15,13.02,13.89,14.75,15.60,16.45,17.29,18.12,18.95,19.78,20.59,21.40,22.21,

23.01,23.81,24.60,25.39,26.17,26.95,27.72,28.49,29.25,30.02,30.77,31.53,32.28,

33.03,33.77,34.51,35.25,35.98,36.71,37.44,38.17,38.89,39.61,40.33,41.04,41.75,

42.46,43.17,43.88,44.58,45.28,45.98,46.68,47.37,48.07,48.76,49.45,50.14,50.82,

51.51,52.19,52.87,53.55,54.23,54.91,55.58,56.26,56.93,57.60,58.27,58.94,59.61,

60.27,60.94,61.60,62.27,62.93,63.59,64.25,64.91,65.57,66.23,66.89,67.54,68.20,

};

externunsignedintpulse_mum,finish_flag;

externintdushu,fact_dushu,t_num,curr_num,laser_rate;

//------------------------------------------------------------------------------

sbitP0_0=P0^2;//电机方向控制

sbitP0_1=P0^1;//输出脉冲个数

voidlaser_focus(void)

{

inti,time,jd_value,jiaodu;

jd_value=dushu;

if((jd_value>0)&(jd_value<90))

{

jiaodu=sinta1[jd_value];

}

elseif((jd_value<0)&(jd_value>-90))

{

jiaodu=-sinta2[abs(jd_value)];

}

else

jiaodu=0;

t_num=jiaodu*laser_rate/10;

time=200;

for(i=1;i

{

if(dushu<0)

{

if(abs(t_num)>abs(curr_num))

{

P0_0=0;

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

else

{

P0_0=1;//forward

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

}

else//dushu>0

{

if(abs(t_num)

{

P0_0=0;//inverse

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

else

{

P0_0=1;//forward

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

}

}

curr_num=t_num;

}

voidlaser_auto(void)

{

inti,time,jd_value,jiaodu;

jd_value=dushu;

if((jd_value>0)&(jd_value<90))

{

jiaodu=sinta1[jd_value];

}

elseif((jd_value<0)&(jd_value>-90))

{

jiaodu=-sinta2[abs(jd_value)];

}

else

jiaodu=0;

t_num=jiaodu*laser_rate/10;

time=200;

for(i=1;i

{

if(dushu<0)

{

if(abs(t_num)>abs(curr_num))

{

P0_0=0;//

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

else

{

P0_0=1;//forward

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

}

else

{

if(abs(t_num)

{

P0_0=0;//inverse

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

else

{

P0_0=1;//forward

P0_1=1;

delay(time);

P0_1=0;

delay(time);

}

}

}

curr_num=t_num;

}

MATLAB程序:

theta=0:

90;

theta=theta.*pi/180;

alfa=theta+atan((2-2*cos(theta))./(3-2*sin(theta)))

theta=-90:

0;

theta=theta.*pi/180;

alfa=-theta-atan((2-2*cos(theta))./(3-2*sin(theta)))

附录2:

电路原理图

附录3:

光电编码器时序图

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2