logo资料库

单片机悬挂运动控制系统论文.pdf

第1页 / 共35页
第2页 / 共35页
第3页 / 共35页
第4页 / 共35页
第5页 / 共35页
第6页 / 共35页
第7页 / 共35页
第8页 / 共35页
资料共35页,剩余部分请下载后查看
悬挂运动控制系统 悬挂运动控制系统 悬挂运动控制系统 悬挂运动控制系统 参赛队员:吴亚军 参赛队员:吴亚军 吴怀恩吴怀恩吴怀恩吴怀恩 季宿儒季宿儒季宿儒季宿儒 参赛队员:吴亚军 参赛队员:吴亚军 摘要:本系统以单片机 89C52 为核心,采用了步进电机控制装置、红外寻迹传感 装置来实现一个对悬挂物体运动控制系统。友好的操作界面和灵活的监控 方式是本设计的两大特色,增强了系统的实用性。 关键词:步进电机 ;红外传感器 ;悬挂运动。 一、方案论证与选择 一、方案论证与选择 一、方案论证与选择 一、方案论证与选择 1.题目任务要求及相关指标的分析 题目的基本要求中,要求在 150 秒内到达设定的一个坐标点以及 300 秒内画 圆或按照设定的轨迹运动,这要求我们对左右两个电机进行灵活、准确、快速的 控制,并且有和谐的人机交换功能,才能够满足要求。因此选择合适的电机以及 运用有效的算法来对电机进行控制是必需的,我们通过建立合理的数学模型,使 两电机控制的绳长依照我们建立的函数关系变化,来实现悬挂物体在板上以各种 方式运动。 发挥部分,要求控制物体沿板上标出的任意曲线运动,通过红外传感器寻迹, 实现跟踪运动。而显示画笔的位置坐标,则可通过两段绳长变化与原点坐标之间 的函数关系来计算,求出当前点的横纵坐标,并在 LCD 上显示出来。 2.方案的比较与选择 (1)电机的选择 方案一:直流电机 采用单片机和 A/D 转换构成系统,控制普通电机的步数和旋转方向,可 以考虑达林管组成的 H 型 PWM 电路。用单片机控制达林管使之工作在占空比 可调的开关状态,精确调整电机转速,减小因惯性,速度,步距角过大而引起的 调整误差,达到改变绳长的要求,缺点是通过控制直流电机驱动模块将脉冲信号 转化为模拟信号,需要将单片机输出的序列脉冲转换,延长了控制的时间,导致 控制精度差;关键是直流电机不能即停,使直流电机不能精确定位,满足不了控 制误差范围为设定值的要求。 方案二:步进电机 用单片机产生脉冲信号,脉冲信号的占空比为 0.5 左右,脉冲信号经过功 率放大控制步进电机,控制信号为数字信号,不再需要数/模转换;步进电机的 速度易于控制,具有快速启/停能力,可在一刹那间实现启动或停止;它的转动 角度严格可控,一般情况步距角可以降低到 °5.1 以下,而采用专用驱动块,可以 更加的精确。步进电机延时短,定位准确,精度高,可控制性强。这样我们就可 以根据驱动脉冲总数来计算绳子所走过的路程,从而得出坐标和时间。 根据本课题技术指标要求,物体质量大于100克即可,步进电机的输出功
率足以满足负载要求;同时根据题目要求运动轨迹与预期轨迹偏差不超过 4cm, 这对电机有精确的要求,而直流电机难以达到这一指标。综上方案的比较分析, 故而本设计采用方案二。 (2)悬挂物体定位方式的选择 方案一:坐标查询方式 在 80cm×100cm 的白色底板上,等分为 8000 个方格,视其为 8000 个点, 每个点都有横纵坐标(a,b)两个数据,即共有 16000 个数据,而底板左右对称, 所以只需记录一半的数据,即 8000 个,这样我们只需事先计算出悬挂物体在每 一点对应的两侧绳长(x,y),将这 8000 个数据,即 4000 个确定的绳长数组记 录在单片机中,这样就可以对所设定的坐标,采用查询的方式,找到相应点所对 应的数组(x,y),与当前点对应的绳长做差,得到所需的绳长改变量,从而控 制电机使物体到达该点。 此方案的优点在于查询方便快捷,准确性高,动作运动迅速,但准备工作 的计算量太大,而且需要通过一块片外的 ROM 来存储如此庞大的数组集,不方便 实现。 方案二:公式计算方式 根据题目中给出的各段长度,可以很容易的得到底板上各点坐标与两电机 分别对应的绳长之间的函数关系,这样可以根据给定点的坐标求出各绳长或根据 绳长求出点的坐标,能够实现各项指标,实现悬挂物体的精确定位,满足题目的 要求。 该方案数学模型清晰,可以在较短时间内完成绳长或坐标的计算,使电 机快速动作,无须片外 ROM 存储,而且占用单片机内存少,空间利用率较高, 可操作性强。 综上方案的比较分析,根据本课题技术指标要求,用公式计算的方法比较 容易实现,故而本设计采用方案二。 (3)画圆方案的选择 方案一:切分拟合法 首先通过周长计算,将圆等分为 3000 等份,然后依次计算初始点到下一 点的坐标增量,通过增量来控制两个电机的运动,从而调整绳长,实现点对点的 精确移动,也就是说所画的圆是由 3000 段小线段与之拟合连接起来的。这需要 我们有足够快的运算速度,与很高的精度,依次精确计算出每一次步进的距离, 横纵坐标和两段绳子的改变量,占用内存很大,计算时间较长,反应到电机上就 是电机的运动时断时续,画圆的用时很长,线段相对光滑,但是累积误差比较大。 方案二:查询计算法 第一步要求我们能够画出一个题中要求的标准圆,然后将这条轨迹对应的 各点坐标与相邻坐标的增量处理后详细记录,并且存储到单片机内,当我们需要 画圆的时候,只需要调用这些标准增量,通过公式计算出绳长的改变量,就可以 很精准的得到:左右电机从当前点运动到相邻点的脉冲数目与方向。这样就可以 实现快速、准确、美观的画圆。 上述两种方案中,方案二可以避免复杂的计算,缩短电机的等待时间,没 有误差的累积,反应快速、灵活,画面连续、美观,实现起来也比较方便。因此, 我们画圆采用上述的方案二。 (4)寻迹传感器的选择 发挥部分寻迹传感器可供选择的种类较多,主要有以下两种:
方案一:光电传感器 光电传感器有多种类型,按其外表结构有对射型、回归反射型、扩散反射 型;按光源色分类又有红色、绿色、蓝色、红外以及半导体雷射等,其自身带有 内置的或分离的放大器。根据题目的要求,要使所选传感器可以很好区分白色与 黑色,有多种光电传感器可供选择,某些光源色为红色或绿色的光电传感器由于 其对黑色与白色的反射率相差很大,所以可以很容易的识别。但是其价格昂贵, 结构偏大,外围机械部分比较复杂。 方案二:红外传感器 红外传感器是我们非常常用的一种传感器,也具有很强的对黑色与白色的 辨识能力。由于红外光波长比可见光长,因此受可见光的影响较小。同时红外系 统还具有以下优点:尺寸小、质量轻,能有效的抗可见光波段的伪装,对辅助装 置要求最少,对人眼无伤害。当然红外光也有一定的缺点,如大气、潮湿的天气、 雾和云对它有衰减作用。它具有体积小、灵敏度高、线性好等特点,外围电路简 单,安装起来方便,电源要求不高。用它作为近距离传感器是最理想的,电路设 计简单、性能稳定可靠。 综上方案的比较分析,根据本课题技术指标要求,故而本设计采用方案二。 (4)寻迹传感器布局的选择 方案一:5 传感器梅花状分布 采用上、中、下、左、右各装一个红外传感器来探测黑线,常态让中间的 传感器保持在黑线上面,其余四个方向的传感器用来告知控制系统:该传感器所 在的位置,是否为黑线上方。若在,则控制画笔向该传感器所在的方位移动,否 则保持原来的移动方向不变,直到某个传感器探测到黑线,并发出信号为止。 这种方法虽然所用器件少,但是可靠性相对较差,精度较低。 方案二: 8 传感器九宫图分布 在九宫格中间的右上、右、上、右下、左上、左下、左、下这八个方向装 上红外传感器,并按照上面的顺序设置优先级。优先级的设定,取决于坐标原点 相对于运动区域的所在位置。这样的话,我们就可以很容易的探测出黑线的前进 趋向,依照优先级来控制电机的运动,可以准确快速实现寻迹功能,能够精准追 踪 1.5cm~1.8cm 宽的黑色轨迹。 比较以上两种方案,方案一的探测范围显然要小,一旦传感器组处于黑线 的同一边时,就很难重新自纠正,尤其是碰到有间断的曲线时,就很难控制它的 运动;而方案二则可以探测较大的范围,实现多方位探测,控制思想较之方案一 要先进的多,便于实现 PID 控制。 (5) 小结 经过仔细比较与论证,我们确定了整个控制系统各个模块的最终方案如 下: 控制; 电机的选择:步进电机,带专用驱动模块,通过单片机输出脉冲信号来 悬挂物体定位方式的选择:公式计算方式,求出点坐标对应的绳长,用 步进电机实现绳长的改变。 画圆的算法:存储、查询计算,预先存储标准圆的相应增量,以便随时 调用。 发挥部分寻迹传感器的选择:红外传感器 发挥部分寻迹传感器布局方法的选择:九宫图分布
二、系统总体设计方案及实现方框图 二、系统总体设计方案及实现方框图 二、系统总体设计方案及实现方框图 二、系统总体设计方案及实现方框图 系统以 89C52 单片机为核心,加以其他外围电路实现较高精度定位。由于 只需控制左右两个电机,所以其外围电路较简单,由于要实现高精度的控制,而 硬件上的误差影响太多,所以需采用合理程序实现优良性能。 系统原理图 三、理论分析与计算 三、理论分析与计算 三、理论分析与计算 三、理论分析与计算 该设计以单片机控制的两个 步进电机为基本构架,两电机控制 各自的绳长实现悬挂物体的二维移 动。根据题目将滑轮近似为一点(误 差在最后单片机做出补偿),我们根 据如图 3.1 中各线之间的关系,得 到关系式如下: ⎧ ⎪ ⎨ ⎪⎩ x a 15) ( 2 + y a (95 ) 2 − (1) = = 2 2 2 + + (115 (115 b ) − b ) − 2 其中:x 为左电机控制的滑轮 右侧绳长; y 为右电机控制的滑轮 左侧绳长; a 为以图中标出的原点 为原点物体所对应的横坐标; 图 3.1 b 为物体所对应的纵坐标。 这样通过输入设定值,便可在单片机中依式(1)计算得出绳长 x 和 y,与 所在点的坐标所对应的绳长做差,便可得到电机所需运动的绳长及转动方向,便 可通过单片机对电机驱动, 实现对悬挂物体的精确定位。 图 3.1
在实现控制物体沿板上标出的任意曲线运动的过程中,我们实现了系统每移 动到一个坐标便在 LCD 上显示这点的坐标,这就要求根据绳长的变化得到坐标的 变化,同样在单片机内部可依据式(1)进行逆变换,得到如下的函数,式(2) ⎧ a =⎪ ⎨ ⎪ = b ⎩ 依次可算出 a、b,得到所在点的坐标,从而显示出来。 x y 2 2 + 220 x a 2 + 8800 (2) 115 − − − ( 2 15) 四、主要功能电路的设计 四、主要功能电路的设计 四、主要功能电路的设计 四、主要功能电路的设计 1.基本说明 由于本系统设计所要求的精度较高,我们用单片机输出脉冲控制的步进电 机,每前进一个步距的距离为 0.046mm,速度易于控制,具有快速启/停能力, 可以达到精度高、速度快、定位准这些优良的性能,足以很好的满足各项性能要 求。 反射式红外传感器,其工作原理为:红外发射管发射红外光,接收管是否 接收到红外光,对应了接收管的导通与截止两种状态,导通时有一个变化的通光 电流,我们只需对微弱的通光电流进行上拉,变为电压信号,再对这个电压信号 进行比较,输出开关脉冲,由单片机的 I/O 口将检测到的开关信号送到单片机进 行识别、分析,然后发出相应的控制指令。整体电路的设计简单合理、性能稳定 可靠。 2.关键电路单元的考虑和计算 红外寻迹传感器的电路设 计如右图 4.1,传感器型号采用 反 射 式 红 外 发 射 — 接 收 管 ST188,比较器采用 LM339,用 两片以满足 8 个红外传感器的 需求。 查资料得,红外发射管的极 限电流为 50mA,我们取中间态 R 计算: 1 = V 5 mA 50 = 100 Ω , 红外接收管的通光电流最 大为 lI =0.25mA,可以计算其导 通截止两种状态的电平所需电 阻最小为: 图 4.1 红外寻迹电路
Vcc V V 5 R min = − 0.25 V 1.25 mA − I l D = = 15 k Ω ,其中 DV 为导通管压降,实际电路中取大于 15kΩ ,取 3R =100kΩ 。 五、系统软件的设计 五、系统软件的设计 五、系统软件的设计 五、系统软件的设计 本设计以合理的定位计算和优良的修正补偿为主要特色,程序中这两点的 合理性在系统性能指标实现中起着很大的作用。 主程序: 主程序主要由四块模式组成,即画直线,画圆,通过键盘控制物体上下 左 右 运 动 , 以 及 写 字 ( 通 过 程 序 — — 本 程 序 为 “ 电 ”)。 开机 开机画面 复位 选择工作类型 直线 圆 上下左右 写“电” 图 5.1 主程序流程图 直线 运动 核心算法 假设 E( x0,y0),F(x1,y1)为给定 平面范围上的 任意两 点 ,作辅助 线 (图中虚 线部分 ),在 直角 三角形 ⊿ABE 中 a0 2=(x0+15) 2+(115-y0) 2 ( 5.1 ) 在直 角三 角形⊿CDE 中 : b0 2=(95-x0) 2+(115-y0) 2 ( 5.2 ) 同理 对于 F 点, 两拉 线长分别为 : a1 2=(x1+15) 2+(115-y1) 2 ( 5.3 ) b1 2=(95-x1) 2+(115-y1) 2 ( 5.4 ) 因此 当悬 挂物从 E 点运动 到 F 点时:
电机 1的收 放线 长度为 c(当 c<0,电机 正转(或拉线 伸长); c>0时 , 电机反转 (或拉线 收 缩)) c=a0-a1( 5.5) 电 机 2的 收 放 线 长 度 为 d( 当 d<0, 电 机反 转 ( 或拉 线 收 缩), 当 d>0 时,电机 正转(或 拉 线伸长)) d=d0-d1( 5.6) 根据 c,d 的正 负分 别确定电 机 1,电机 2的正反 转向。设绳索 位移 1mmAD 变化 值 为 P,而 根 据 c, d 的绝 对值 来确 定电位器 1,电 位器 2所要 变化 的 值: 电位 器 1所分 配的数值: m=|c|*p ( 5.7 ) 电位 器 2所分 配的数值: n=|d|*p ( 5.8 )
画圆子程序: 根据圆的参数方程的计算圆上点的坐标,通过调用画圆程序来实现,画圆程序流程图 如图 4.4 所示。 图 4.4 画圆子程序流程图 /**画圆*********************/ 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++) {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)) ;
分享到:
收藏