基于自由摆的平板控制系统设计报告怀化学院.docx

上传人:b****3 文档编号:4867794 上传时间:2022-12-11 格式:DOCX 页数:18 大小:186.84KB
下载 相关 举报
基于自由摆的平板控制系统设计报告怀化学院.docx_第1页
第1页 / 共18页
基于自由摆的平板控制系统设计报告怀化学院.docx_第2页
第2页 / 共18页
基于自由摆的平板控制系统设计报告怀化学院.docx_第3页
第3页 / 共18页
基于自由摆的平板控制系统设计报告怀化学院.docx_第4页
第4页 / 共18页
基于自由摆的平板控制系统设计报告怀化学院.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

基于自由摆的平板控制系统设计报告怀化学院.docx

《基于自由摆的平板控制系统设计报告怀化学院.docx》由会员分享,可在线阅读,更多相关《基于自由摆的平板控制系统设计报告怀化学院.docx(18页珍藏版)》请在冰豆网上搜索。

基于自由摆的平板控制系统设计报告怀化学院.docx

基于自由摆的平板控制系统设计报告怀化学院

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

摘要

本报告研究了基于自由摆的平板控制系统,分析了测控系统的结构与特点,结合现代控制技术、角度传感器的应用技术以及电机控制技术并采用自动控制系统的调试技术、查表法设计技术、数字滤波设计等完成本系统的设计。

系统采用STC89C52单片机最小系统作为控制核心,利用SCA61T高精度角度传感器采集角度数据,然后根据角度数据控制采用驱动芯片TB6560AHQ和L297+L298N驱动42BYGH4604步进电机。

在自由摆装置的顶部安装角度传感器,实时检测摆动角度并且采用均值数字滤波,使结果更加精确,在平板上加上MMA7455加速度传感器,进行松手检测,显示装置采用1602液晶。

关键字SCA61T角度传感器单片机自由摆

 

一、方案论证

1.1系统总体方案

对题目进行分析,系统包含以下几个部分:

主控制电路、角度传感器电路、电机驱动电路、液晶显示部分和摆杆装置。

系统框图如图1-1所示。

图1-1系统框图

1.2系统方案选择与比较

(1)主控制部分

方案一:

使用ARMCORTEX-M3内核处理器控制,虽然功能强大,处理速度快,但是价格昂贵,性价比不高。

方案二:

使用FPGA控制系统,同样处理速度快,通过编程设计,可以很容易的实现控制和显示,但是价格较贵。

方案三:

采用单片机STC89C52控制,能够达到题目要求,并且控制方法简单,能够完成题目要求,价格低廉,故我们选用方案三。

(2)电机部分

方案一:

采用直流电机控制,控制方便,价格便宜。

但不容易控制角度,不符合设计要求。

方案二:

采用步进电机控制,虽然控制难度加大,但是控制起来方便,且容易实现控制角度,故选择方案二。

(3)步进电机驱动部分

方案一:

采用L297+L298N作为步进电机驱动,以它作为驱动步进电机抖动小,但是它使步进电机的最小步进度数不够。

方案二:

采用TB6560AHQ,它的特点是能够细分步进度数,所以能够达到很小的电机步进度数,但是步进度数小,抖动也大。

方案三:

采用L297+L298N与TB6560AHQ结合的方式,在要求低抖动的装置中采用LM297+L298N驱动方式,在要求小步进度数的装置中采用TB6560AHQ进行电机驱动。

(4)角度传感器部分

方案一:

采用MMA7260加速度传感器,利用加速度转换为倾角,从而测出角度值,但是精确度不高,稳定性不好。

方案二:

采用AME-B001角度传感器,0°~360°测量范围,但是安装非常不方便,而且输出信号为模拟信号,采集需要外加A/D转换。

方案三:

使用SCA61T-FA1H1G角度传感器,测量范围-90°~+90°,精确度0.07°,且外围电路简单,满足题目要求,故我们选用方案三。

二、理论分析与计算

2.1数学分析与控制

为了确定步进电机的转动角度,我们建立了自由摆的数学模型如图2-1所示。

图2-1

(1)当

=

如上图2-1所示,初始状态平板保持与摆杆垂直,摆杆角度为

,设平板与水平线的夹角为

,则平板应转动

角,使激光笔打在B点。

即在第一步电机转动的角度

(1)

问题的关键在于

的计算

(2)当

=

同理可得,

2

(2)

实现过程中,我们采用查表方式,计算摆角从60°到-60°以1°为间隔计算

的值,则

为相邻两次

值之差,故存在一个关于

的序列。

设为

,n=1,2,3…,因为平板转动1°的脉冲数是已知的,42BYGH4604步进电机在没有细分的时候,脉冲200下,转动360°,所以每转动一度1°的脉冲数是已知的,则可求转动

所需的脉冲数

所以

又单摆的周期T可以通过计算得知,且初始

已知。

即在T/4内电机转动的总脉冲数是已知的,则电机的转速可以通过脉冲的密度计算。

如果n取得越大,那么结果越精确。

在T/4内平板所在位置的线速度并不是一定的,在最高点速度达到最大,在最低点速度为0,所以在转过相同的角度内,所运行的时间长短也不相同,因为在由最高点到最低点的过程中线速度是逐渐加大的,转过相同角度的时间是逐渐减少的,所以,假设n取得很大,那么在每一个很小的区间里面近似可以看成匀速运动,那么在这个匀速区间内,我们取脉冲数是可以改变疏密程度的。

在离最高点越近的地方,脉冲数应该越大,在快达到最低点时,脉冲数应该接近于0。

三、硬件设计

3.1主控制部分电路

如图3-1所示,控制部分采用STC89C52为核心的最小系统方框图,具体电路见附录。

通过独立按键,控制单片机执行操作命令,同时1602显示数据,LED指示灯指示状态。

图3-1

3.2电机驱动电路

3.2.1基本部分电机驱动电路

基本部分电机驱动如下图3-2-1所示,具体电路见附录,采用L297+L298N作为电机驱动,这样能够很稳定的使步进电机转动,从而不易使木板上的硬币掉落。

图3-2-1

3.2.2发挥部分电机驱动电路

发挥部分电机驱动方框图如图3-2-2所示,具体电路见附录,单片机数据通过光电耦合到步进驱动芯片TB6560AHQ,驱动步进电机转动,TB6560AHQ有细分功能,能够将步进电机转角进一步细分,本设计采用1/16细分,42BYGH4604步进电机的最小转动度数为1.8°,如果细分1/16,最小度数约为0.11°,所以完全能够满足发挥部分的调整度数。

图3-2-2

3.3角度传感器电路

SCA61T角度传感器电路如下图3-3所示,通过SPI数字接口通往单片机,SCA61T的测量角度为-90°~+90°,数字接口分辨率为11位,精度很高。

图3-3

3.4自动启动电机电路

采用7455加速度传感器,当摆杆拉到一定角度时,只要一松手就能马上检测到加速度的变化,从而判断松手,自动启动电机转动。

其电路图如下图3-4所示。

图3-4

四、软件设计

4.1软件流程图

图4-1基本部分函数流程图图4-2发挥部分函数流程图

4.2软件滤波

发挥部分对于数据的处理非常重要,这个对于步进电机转动的角度有很大影响,为了让数据稳定,我们采用加权求平均的办法进行滤波。

在发挥部分第一步,由于时间充足,我们采用1000次采样,然后求加权平均值,所得到的数据非常稳定,这样弥补了单片机RAM,又使结果更准确。

具体函数见附录。

发挥部分第二步,速度非常快,属于实时采样,为了确保反应速度,我们采用16次加权平均值。

五、测试方案及结果分析

1.控制电机使平板可以随着摆杆的摆动而旋转(3~5周),摆杆摆一个周期,平板旋转一周(360º)。

表4-1平板旋转角度与摆杆摆动周期之间的偏差记录

次数

摆动周期数

摆杆初始角度(度)

平板初始角度(度)

平板结束角度(度)

偏差(度)

1

3

45

0

1

1

2

4

45

0

2

2

3

4

45

0

1

1

以电机轴到杆轴的方向为零度线,逆时针方向为正角度,顺时针方向为负角度。

2.在平板上粘贴一张画有一组间距为1cm平行线的打印纸。

用手推动摆杆至一个角度θ(θ在30º~45º间),调整平板角度,在平板中心稳定放置一枚1元硬币(人民币),启动后放开摆杆让其自由摆动。

表4-2板上放置一枚硬币的摆动情况记录

次数

摆杆启动角度(度)

是否摆动5个周期

(硬币不掉)

滑离中心距离(CM)

1

30

0.2

2

40

0.3

3

45

0.5

3.用手推动摆杆至一个角度θ(θ在45º~60º间),调整平板角度,在平板中心稳定叠放8枚1元硬币,启动后放开摆杆让其自由摆动。

表4-3板上放置八枚硬币摆动情况记录

次数

摆杆启动角度(度)

5个周期后板上留下的硬币数

保持叠放状态的硬笔数

1

45

8

8

2

50

8

7

3

60

8

4

4.在平板上固定一激光笔,光斑照射在距摆杆150cm距离处垂直放置的靶子上。

摆杆垂直静止且平板处于水平时,调节靶子高度,使光斑照射在靶纸的某一条线上,标识此线为中心线。

用手推动摆杆至一个角度θ(θ在30º~60º间)。

表4-4激光笔固定位置打靶准确情况记录

次数

摆杆角度(度)

调整时间(秒)(或是否超过15秒)

距中心线的偏差(CM)

1

40

5

-0.8

2

45

5

+0.2

3

50

5

+0.7

5.在测试4的基础上,放开让摆杆自由摆动。

表4-5激光笔移动打靶准确情况记录

次数

摆杆启动角度(度)

靶上光斑距中心线的最大偏差(cm)

1

30

+6

2

45

-7

3

60

-8

结果分析:

表4-1中的参数表明,完全满足题目要求;表4-2同样也满足题目要求;表4-3中的数据表明,在角度小的时候系统的稳定度高,当角度大的时候掉落的硬币增加,原因可能是电机反映速度达不到,和一些相应的机械误差;表4-4测试结果表明误差很小,达到题目要求;表4-5通过多次实验,并且多次修正软件参数,最终达到理想的效果,实现系统设计。

六、结论

本系统采用性价比高的STC89C52单片机,结合高精度角度传感器SCA61T,采用加权平均法对信号滤波,1602液晶实时显示,使用驱动芯片TB6560AHQ和L297+L298N驱动42BYGH4604步进电机。

测试结果表明,系统功能基本完成,达到题目要求。

七、附录

7.1电源电路

7.2单片机最小系统电路

7.3TB6560电机驱动电路

7.4L297+L298N电机驱动电路

7.5函数部分

voidSCA_delayus(inttime)

{

while(time--);

}

voidsetnormal()

{

unsignedcharsignal=0x00;

chari;

SCK_L;

CS_L;

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

{

if(signal&(0x80>>i))MO_H;

elseMO_L;

SCK_H;

SCA_delayus

(1);

SCK_L;

SCA_delayus

(1);

}

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

{

SCK_H;

//ret<<=1;

//if(MI)ret|=0x01;

//elseret|=0x00;

SCK_L;

SCA_delayus

(1);

}

CS_H;

}

unsignedintread()

{

unsignedcharsignal=0x10;

unsignedintret=0;

chari;

SCK_L;

CS_L;

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

{

if(signal&(0x80>>i))MO_H;

elseMO_L;

SCK_H;

SCA_delayus

(1);

SCK_L;

SCA_delayus

(1);

}

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

{

SCK_H;

ret<<=1;

if(MI)ret|=0x01;

elseret|=0x00;

SCK_L;

SCA_delayus

(1);

}

CS_H;

returnret;

}

floatSCA_GET()

{

inta;floatb;

a=read();

a=a-1024;

b=a/819.0;//注:

sensitivity(SCA61T-FAHH1G:

1638,SCA61T-FA1H1G:

819)

b=asin(b);

b=b*180.0/3.14159;

b=b-err;//校正

returnb;

}

floatfilt500()

{

inttemp1=0,temp2=0,temp3=0,i;

floatb;

temp1=read();

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

{

SCA_delayus(150);

temp2=read();

//temp0=temp0*0.8+temp1*0.2;

//temp3=temp1-temp2;

temp1=temp2+0.9*(temp1-temp2);

}

temp1=temp1-1024;

b=temp1/819.0;//注:

sensitivity(SCA61T-FAHH1G:

1638,SCA61T-FA1H1G:

819)

b=asin(b);

b=b*180.0/3.14159;

//b=b-err;//校正

returnb;

}

floatfilt()//滤波函数

{

inttemp1=0,temp2=0,temp3=0,i;

floatb;

temp1=read();

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

{

SCA_delayus(200);

temp2=read();

//temp0=temp0*0.8+temp1*0.2;

//temp3=temp1-temp2;

temp1=temp2+0.9*(temp1-temp2);

}

temp1=temp1-1024;

b=temp1/819.0;//注:

sensitivity(SCA61T-FAHH1G:

1638,SCA61T-FA1H1G:

819)

b=asin(b);

b=b*180.0/3.14159;

b=b-err;//校正

returnb;

}floatcalc(floatx)

{

floata,b,c;

a=x*PI/180.0;

b=1.5-sin(a);

c=1-cos(a);

c=atan(c/b);

c=c*180.0/PI;

c=c+x;

if(c<=0)c=-c;

returnc;

}

floatfudu(floatfudu)

{

floata,b,c;

a=1.5-sin(fudu);

b=1-cos(fudu);

c=atan(b/a);

c=c*180.0/PI;

returnc;

}

voidmain()

{

floatx,f1;bitdir;

intnum1=0;floatstep=0;

uart_init();

ZH_1602_init();

init7455();

write(0x18,0x80);//配置速度

delay(60000);

while

(1)

{

//a=getYa();

if(key1==0){turn298(0,100,1);}

if(key4==0){turn298(1,100,1);}

if(key3==0)break;

x=filt500();

ZH_1602_com(0,0x80);

ZH_1602_float(x);

x=calc(x);

ZH_1602_com(0,0x88);

ZH_1602_float(x);

//delay(10000);

}

x=filt();

if(x<0)dir=1;elsedir=0;

ZH_1602_com(0,0xC0);

ZH_1602_float(x);

f1=calc(x);

//x-=0.63;

ZH_1602_com(0,0xC8);

ZH_1602_float(x);

turnTHB(dir,16,400,f1,x);

while

(1)

{

if(key1==0){turn298(0,100,1);num1--;}

if(key4==0){turn298(1,100,1);num1++;}

if(key3==0)break;

delay(6000);

ZH_1602_com(0,0x8A);

ZH_1602_int(num1);

}

while

(1)

{if(key3==0){turnTHB(~dir,16,400,x);dir=~dir;}}

//turnTHB(0,16,200,x);turn298(0,100,num1);

while

(1);

//delay(7000);

//这里。

是程序的最核心部分,最fashion部分。

step=0;

while

(1)

{

x=SCA_GET();

ZH_1602_com(0,0x80);

ZH_1602_float(x);delay(20000);

}

}

voidt0()interruptT0_INTNO

{

TH0=(65536-56160)/254;TL0=(65536-56160)%254;trytime++;

}

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

当前位置:首页 > 法律文书 > 调解书

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

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