一方案的选择与比较_第1页
一方案的选择与比较_第2页
一方案的选择与比较_第3页
一方案的选择与比较_第4页
一方案的选择与比较_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一.方案的选择与比较1 .主体控制方案比较方案1.闭环数字控制方式闭环数字控制方式,主要利用光电传感器检测法,结构图如图 1所示。首先单片机 根据输入的数据来计算物体要移动的距离并控制物体往坐标的大概方向运动,红外发射接 收器来探测悬挂物体移动了多少个1*1cm的小方格,并经过A/D送给单片机,单片机通过特 定的算法计算出物体的坐标,并控制电机的转动来控制物体往坐标进发,在此过程中单片 机不断计算,不断调整电机的转速和方向使悬挂物体做一定路线的移动。但其缺点是,电 路复杂,不但要求要有 A/D电路,光电探测电路,还要其电路要做得十分精确。任何一个方案2.开环数字控制方式开环数字程序控制方式,即

2、没有反馈系统,开环数字控制的结构图如图 2所示。由图可 看出,此种控制方式与上面的控制方式少了反馈电路。单片机由输入的数据来计算物体要 移动的距离,直接发出控制脉冲来控制电机的转动,进而控制物体的运动方向。由于少了 反馈电路,系统的精度只与单片机所采用的算法准确性有关,此种方式电路结构简单,成本低且易于调整和维护,是一种较理想的方式图2开环数字控制方式综合上面所述,考虑时间和调试的复杂性,本设计采用方案2。2 .电机选择方案1.直流电机。直流电机又分为直流无刷电机和直流有刷电机,是最早实现调速的电动机,具优点是有良好的线性调速特性,简单的控制性能,高的效率,但其数字控制方面较难把握。方案2.步

3、进电机。步进电机是多种机电设备中被广泛应用的一种电机,它主要由定子和转子构成。定子的 主要结构是绕组。三相、四相、五相步进电机分别有三个、四个、五个绕组,其它以此类 推。绕组按一定的通电顺序工作着,这个通电顺序我们称为步进电机的相序,转子的主要结构是磁性转轴,当定子中的绕组在相序信号作用下,有规律的通电、断电工作时,转 子周围就会有一个按此规律变化的电磁场,因此一个按规律变化的电磁力就会作用在因此 转子上,使转子发生转动。它将电脉冲信号转换成角位移,即给一个脉冲信号,步进电动 机就转动一个角度,因此非常适合于单片机控制。另外步进电机还有动态响应快易于起停, 易于正反速及变速等优点。综合上面所述

4、,为易于单片机控制,本设计采用方案 2。3 .驱动方式的选择我们知道步进电动机使用脉冲电源工作。开关管是按照控制脉冲的规律“开”和“关” 使直流电源以脉冲方式向绕组 L供电,这一过程我们称它为步进电动机的驱动。(1)单电压驱动 单电压驱动是指电动机绕组在工作时,只用一个电压电源对绕组供 电(如图3所示)。它的特点是电路简单,一般只用于小功率步进电动机的驱动。-I L T2图3单电压驱动原理图图4双电压驱动原理图(2)双电压驱动 双电压驱动是用提高电压的方法使绕组中的电流上升波形变陡(如图4所示)。它的基本思路是在低频段使用较低的电压驱动,在高频段使用较高的电压驱动。这 种驱动方法在低频段具有单

5、电压驱动的特点,在高频段具有良好的高频性能。本设计考虑到变压器,因采用了单电压驱动.4 .系统组成经过方案比较与论证,最终确定的系统组成框图如图 5所示.其中单片机用89S52,驱动用 1TIP122,驱动用液晶显示.图5系统控制硬件总框图二.软件设计对与一个开环控制系统来说,最重要的就是它的算法的选择,然后就是针对算法的编程.1 .控制算法的比较方案1.逐点比较直线插补算法逐点比较法是数控机床中广泛采用的一种软件插补算法,该方法普遍用于二坐标数控 加工系统.所谓逐点比较法就是在绘图过程中,绘图笔每移动一步都要与理想线路进行比较 然后决定下一步的移动方向用步步修正的方法画出所期望的线段.逐点比

6、较法的基本原理是斜率比较法.即线段的起点与笔当前的位置构成的直线斜率与要绘线段斜率进行比较.当前者斜率小于后者斜率时,笔应该向Y方向走一步.当前者斜率大于后者斜率时,笔应该 向X方向走一步.如图6所示,OA为欲画的路线,M1为画笔开始所在的位置,当OA的斜率小欲画 线段的斜率时,OA向+ Y方向移动一步,到达M2点.然后再用线段OM2的斜率与O A的斜率进行比较,当OM 2的斜率大欲画线段O A斜率时 ,O A向+X方向移动一步。图6逐点比较直线插补算法方案2.逐点比较圆弧插补算法.圆弧轨迹插补不同于直线,一段圆弧可能跨越几个象限。每当一段圆弧跨过象限后, 原来的偏差计算、坐标计算式必须进行修

7、改。在插补过程中每走一步必须检查是否会跨越 象限,一旦查到跨越象限,就要根据顺圆或逆圆改进进入该象限的一套计算方法。传统的 过象限处理是采用查表的方法,即用旧的标志字通过查表取得新标志字,替换旧标志字, 当再次进行插补时,根据新的标志字进行插补和进给。查表法处理起来相当麻烦。符号判 别法是根据动点坐标本身位置的变化自动转换运算和判别,自动转入其他象限,改变偏差 计算、坐标计算式。方案2.数学建模法。数学建模法是指用数学方法,运用几何知识(极坐标)把圆上的点和两个电机所在的 位置联系起来,通过相关计算把圆上的点的坐标用数学表达式表示出来,并转换成电机所 要转动的偏移量,最后把偏移量转化为电机所要

8、转的速度。此方法,计算复杂,但所得数 据较为准确,只要编程正确,用电机所画出来的线就不会编差大。上述几种方法我们都尝试编程,但在调试过程中,前两种方法的误差比较大.达不到比赛的 要求,最后我们只能采用方案 3。采用方案3的算法相当复杂,而且要经过了无数次调试.2 .程序的总流程在设计系统的总流程中.比较简单.但在子程序相当复杂.程序总图如图6所示图6程序的总流程2.1 直线的计算和编程从图7我们可以看到假设原点坐标 X0,Y0,要达到的坐标点X1,Y1(x 1,y 1)图7直线算法图那么到坐标点的距离Ll= '( x1 - X0)2( y 1 - y 0)2我们没有采用Y=KX+B勺直

9、线方程,而是把L的长度分为COUNT_等分即 COUNT_L=一 0.5我们计算出每一个增量INC_X,INC_YINCX=X1 - XoCOUNTINCY=丫 -YoCOUNT L我们假设一个变量i , i的范围从1-COUNT_L所以每走一步的坐标值XX = i *INCX+X)YY = i *INCY+Y)部分程序如下所示:/* 画直线 */ void draw_line(float x0,float y0,float x1,float y1) /(x0,y0): 起点坐标,(x0,y0):停止点坐标float ll,inc_x,inc_y,xx,yy,L_l0,L_r0,L_l,L_r

10、,inc_Ll,inc_Lr,xxx ; /kk:斜率 cc:初点始常数(yy=kk*xx+cc)intcount_ll,count_l,count_r,i /(x0,y0): ll=sqrt(x1-x0)*(x1-x0)+(y1-y0)*(y1-y0) ; /ll: count_ll=ll/0.5+0.5 ;/count_ll:inc_x=(x1-x0)/count_ll;inc_y=(y1-y0)/count_ll;L_l0=sqrt(x0+15)*(x0+15)+(115-y0)*(115-y0) ;L_r0=sqrt(95-x0)*(95-x0)+(115-y0)*(115-y0) ;

11、for(i=1; i<=count_ll; i+) xx=inc_x*i+x0 ; xxx=xx ;yy=inc_y*i+y0 ;L_l=sqrt(xx+15)*(xx+15)+(115-yy)*(115-yy) ;L_r=sqrt(95-xx)*(95-xx)+(115-yy)*(115-yy) ;inc_Ll=L_l-L_l0 ;inc_Lr=L_r-L_r0 ;count_l=inc_Ll/step_l+(inc_Ll>=0 ?0.5:-0.5) ;/步进电机每步弧长(厘米)右步进电机每步弧长(厘米)画直线起点坐标斜边长度步数/inc_x:x步 长/inc_y:y步 长cou

12、nt_r=inc_Lr/step_r+(inc_Lr>=0 ?0.5:-0.5) ;/ drive_motor(count_l,count_r) ;delay(50) ;/延时 50ms test: x0,y0,x1,y1=10,10,40,40L_l0=L_l ;L_r0=L_r ;我们可以看到画直线的程序的复杂性.2.2 圆的的计算和编程在圆弧的编程中, 它的算法比直线的算法更复杂. 从图我们可以看到假设圆心坐标X0,Y0, 半径为R,Xq, Yqexo;y”JIY圆上的一点坐标为xqyqXq=X0+R yq=y)而我们把圆分成360度,即设一个变量i , i的范围从1到360,每走

13、一小步的坐标值XX,YyXx= R * cos(* i)X0180YY=R * sin( * i) y0180那么它的力臂LL,LRLl= (15Xx)2(115 - yy)2Lr=95 - Xx)2(115 - yy)2而原点坐标的力臂LL0,LR0Ll0= (15X0)2(115 - y0)2Lr0=(95 - x。)2(115 - y。)2因此力臂的增量为LL,LR LL= L L- Ll0 LR= L R- LR0因我们的步进不同,所以它的增量分别为0.039,0.078.最后才计算出要给的脉冲数 COUNT_L,COUNT_RCOUNT L=L一 0.039COUNT_R=Lr 一

14、0.078部分程序程序如下:/* 阿圆 */void draw_circularity(float rr,float x0,float y0) /rr:半径,(x0,y0):圆心坐标float L_l,L_r,L_l0,L_r0,inc_Ll,inc_Lr,xx,yy,xxx ;int count_l,count_r,i ;L_l0=sqrt(x0+rr+15)*(x0+rr+15)+(115-y0)*(115-y0) ;/(x0+rr,y0):画圆起点坐标L_r0=sqrt(95-x0-rr)*(95-x0-rr)+(115-y0)*(115-y0);for(i=1;i<=360;i+

15、)xx=rr*cos(pai*i/180)+x0 ;xxx=xx;yy=rr*sin(pai*i/180)+y0 ;L_l=sqrt(xx+15)*(xx+15)+(115-yy)*(115-yy);L_r=sqrt(95-xx)*(95-xx)+(115-yy)*(115-yy);inc_Ll=L_l-L_l0 ;inc_Lr=L_r-L_r0 ;count_l=inc_Ll/step_l+(inc_Ll>=0 ?0.5:-0.5) ; /左步进电机每步弧长(厘米)count_r=inc_Lr/step_r+(inc_Lr>=0 ?0.5:-0.5) ; /右步进电机每步弧长(厘

16、米)drive_motor(count_l,count_r);delay(50) ;/ 延时 50msL_l0=L_l ;L_r0=L_r ;2.3 坐标的显小和编程坐标的显示和编程就是把每走一步走的距离显示在液晶上,通过调用液晶子程序,把变 量写入。三、系统测试为了确定系统与题目要求的符合程度,我们对系统中的关键部分进行了测试。位置测试如下:直线测试表原点坐标(X, Y)输入坐标(X, Y)实际测量距离值误差值运行时间(10cmi 10cmj)(40cmn, 50cm)(39cm 49. 2cm)0. 8cm-2cm20S(19cmi 24cmm(34cmn, 35cm(33cm 34. 5cmj)1cm-2-cm2S圆弧测试表圆点坐标(X, Y)实际测量半径值误差值运行时间(40cm 50cmj)2327cm+-2cm150S发挥部分测试:直线测试表原点坐标(X, Y)输入坐标(X, Y)实际测量距离值误差值运行时间(10cm 10cmj)(40cmn, 50cm)(39cmi 49. 2cm)0. 8cm-2cm20S(19cm 24cmm(34cmn, 35cm)(33cmi 34. 5cm)1cm-2-cm2S圆测试表圆点坐标(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论