悬挂运动控制系统E题设计报告.docx
- 文档编号:28698366
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:62
- 大小:356.98KB
悬挂运动控制系统E题设计报告.docx
《悬挂运动控制系统E题设计报告.docx》由会员分享,可在线阅读,更多相关《悬挂运动控制系统E题设计报告.docx(62页珍藏版)》请在冰豆网上搜索。
悬挂运动控制系统E题设计报告
悬挂运动控制系统(E题)设计报告
悬挂运动控制系统(E题)设计报告
摘要:
本悬挂控制系统是一个电机控制系统,控制物体在80cm×100cm的范围内作直线、圆、寻迹等运动,并且在运动时能显示运动物体的坐标。
设计采用AT89S52单片机作为核心控制器件,采用57BYG007-4型步进电机和高细分步进电机驱动器SM-60作为动力装置,采用红外反射式光电传感器实现画板上黑色线寻迹检测,显示部分用液晶显示模块LCD1602实现。
关键词:
悬挂控制、单片机、步进电机、红外反射式光电传感器
一、设计要求
1、任务
设计一电机控制系统,控制物体在倾斜(仰角≤100度)的板上运动。
在一白色底板上固定两个滑轮,两只电机(固定在板上)通过穿过滑轮的吊绳控制一物体在板上运动,运动范围为80cm×100cm。
物体的形状不限,质量大于100克。
物体上固定有浅色画笔,以便运动时能在板上画出运动轨迹。
板上标有间距为1cm的浅色坐标线(不同于画笔颜色),左下角为直角坐标原点,示意图如下。
2、基本要求:
(1)控制系统能够通过键盘或其他方式任意设定坐标点参数;
(2)控制物体在80cm×100cm的范围内作自行设定的运动,运动轨迹长度不小于100cm,物体在运动时能够在板上画出运动轨迹,限300秒内完成;
(3)控制物体作圆心可任意设定、直径为50cm的圆周运动,限300秒内完成;
(4)物体从左下角坐标原点出发,在150秒内到达设定的一个坐标点(两点间直线距离不小于40cm)。
3、发挥部分
(1)能够显示物体中画笔所在位置的坐标;
(2)控制物体沿板上标出的任意曲线运动(见示意图),曲线在测试时现场标出,线宽1.5cm~1.8cm,总长度约50cm,颜色为黑色;曲线的前一部分是连续的,长约30cm;后一部分是两段总长约20cm的间断线段,间断距离不大于1cm;沿连续曲线运动限定在200秒内完成,沿间断曲线运动限定在300秒内完成;
(3)其他。
4、评分标准
项目
满分
基本要求
设计与总结报告:
方案比较、设计与论证,理论分析与计算,电路图及有关设计文件,测试方法与仪器,测试数据及测试结果分析。
50
实际制作完成情况
50
发挥部分
完成第
(1)项
10
完成第
(2)项中连续线段运动
14
完成第
(2)项中断续线段运动
16
其他
10
5、说明
1、物体的运动轨迹以画笔画出的痕迹为准,应尽量使物体运动轨迹与预期轨迹吻合,同时尽量缩短运动时间;
2、若在某项测试中运动超过限定的时间,该项目不得分;
3、运动轨迹与预期轨迹之间的偏差超过4cm时,该项目不得分;
4、在基本要求(3)、(4)和发挥部分
(2)中,物体开始运动前,允许手动将物体定位;开始运动后,不能再人为干预物体运动;
5、竞赛结束时,控制系统封存上交赛区组委会,测试用板(板上含空白坐标纸)测试时自带。
二、方案论证与选择
1.核心控制模块的选择
方案一:
FPGA/CPLD方式。
即用FPGA/CPLD完成键盘定义与识别、电机工作状态选择与切换、液晶电路的驱动与控制等功能。
这种方案的优点在于系统结构紧凑、操作方便,而且可以使用的I/O口线很多;缺点是调试时需要接很多接线,过程繁琐,而且使用CPLD时,由于其内部没有ROM,对功能的实现有所限制。
方案二:
单片机方式。
即由单片机、电机驱动电路及电机等组成系统。
使用单片机也可以完成键盘定义与识别、电机工作状选择与切换等功能,组成的系统规模较小,有一定灵活性,而且可以使用我们比较熟悉的单片机最小系统电路板,减少了工作量。
该控制方式需要单片机具有较大的程序存储量,所以可选择存储量为8K的AT89S52单片机。
基于以上分析,拟选用方案二。
2.电机及其驱动模块的选择
电机驱动模块是本系统的执行机构,用于控制悬挂物体的运动。
方案1:
采用普通小型直流电机。
普通直流电机由于其自身结构的限制,控制精度很低,无法达到系统要求的指标,这里不予采用。
方案2:
采用专用步进电机驱动器及与其配套的步进电机。
用这种方案的控制精度、效率和可靠性都很高。
根据精度要求选择方案二。
3.黑线探测模块
方案一:
采用多路阵列式光敏电阻组成的光电探测器。
因为光敏电阻探测到黑线时,黑线上方的电阻值发生变化,经过电压比较器比较将信号送给单片机处理,从而控制物体做相应的动作。
但由于光敏电阻对环境光的识别,容易受到外界环境光的影响。
,
方案二:
采用红外反射式探测,即用已调的红外线垂直射到板面,经反射后转换为电信号送入单片机处理。
由于使用的是红外线,不受外界自然光的影响,循迹效果好。
基于上面的讨论,选用了抗干扰能力强的方案二。
4.显示方案的选择
方案一:
采用LED数码管显示器。
LED数码管亮度高,醒目,但是其电路复杂,显示信息量较小,且动态扫描需要占用大量单片机时间,无法做到实时显示。
方案二:
采用汉字LCD液晶显示器。
LCD有明显的优点:
微功耗、尺寸小,超薄轻巧、显示信息量大、字迹清晰、美观、视觉舒适。
本设计中采用1602字符型LCM。
1602字符型LCM克服了LED数码管的缺点,具有显示容量大、占用单片机口线少、节省单片机时间、功耗低等优点,完全符合本系统要求。
5.位置传感模块
位置传感模块用于实现"显示画笔位置"的功能。
对于这个模块可以有硬件和软件两类解决方案。
方案1:
在物体上安装水平和垂直方向的两只激光笔,在板边缘每条坐标线旁边安装一光电传感器,物体坐标所在处的传感器接收到激光笔,即可确定物体位置。
可见本方案共需要180个光电传感器,造成此方案几乎不可实现。
方案2:
采用软件的方法确定物体位置。
单片机控制物体从某个已知的坐标位置出发,并且记录步进电机的每一次移动情况,就可以通过一定的算法计算出物体的位置。
这种方案没有位置传感器,精度较低,但是系统简单。
避免了硬件方案过于复杂的缺点。
本设计使用方案2。
6.键盘模块
本模块采用即插型按键,接在最小系统的P2.0—P2.7,采用了4×4的16点阵键盘。
可以键入1—9的数字,即可以输入点的坐标值(X,Y),以及清除,确定,等功能按键。
三、系统具体设计实现
1、硬件电路的设计
(1)系统的总体设计方案
如图3-1所示采用AT89S52单片机作为运动物体的控制中心,进行数学计算、对光电传感器送来的信号进行处理来控制运动物体的运行方向、计算运行物体的坐标位置、LCD数据显示、键盘控制等。
图3-1系统方框图
(2)黑线检测模块电路
黑线检测模块电路图3-2所示。
当红外线反射式光电传感器ST178位于黑线之上时,光电开关输出高电平;反之,输出低电平。
光电传感器输出电平后接反相器74LS04以稳定电平和增大驱动能力。
本设计采用8个红外传感器实现对黑线的检测,通过并口转串口芯片74LS165将数据串行传送到单片机。
图3-2黑线检测模块电路
(3)键盘电路
本设计采用4x4矩阵键盘实现数字的输入和功能的选择,键盘接到AT89S52单片机的P2口,通过单片机对键盘的行列扫描实现按键的识别。
键盘电路如图3-3所示:
图3-34x4键盘电路
对应的按键码如下:
7
8
9
/
4
5
6
/
1
2
3
/
清除
0
确认
/
(4)单片机电源电路
单片机控制电路、红外传感器模块电路和液晶显示模块均采用+5V供电,采用集成稳压芯片7805来实现,电路图如图3-4所示。
图3-4单片机电源电路
(5)步进电机驱动电路
本设计采用57BYG007-4型步进电机和专用高细分步进电机驱动器SM-60作为动力装置。
57BYG007-4型步进电机为四相混合式步进电机,由于实验室现有电机驱动器为两相的,固步进电机作两相使用,步距脚为1.8度,通过步进电机驱动器SM-60细分实现步距脚0.9度。
电机驱动器SM-60接口如下 :
☆GND端为外接直流电源,直流电压为12v
☆ A+,A-端为电机A相,B+,B-端为电机B相。
☆ +COM端为光电隔离电源公共端,接单片机供电电源为+5V,
☆ CP端为脉冲信号,下降沿有效。
☆ DIR端为方向控制信号,电平高低决定电机运行方向。
☆ FREE端为驱动器使能,高电平或悬空电机可运行。
低电平驱动器无电流输出,电机处于自由状态。
2、软件及算法设计
(1)物体位置的计算
图3-5物体位置示意图
坐标点参数的计算
将画笔所在的位置设定为整个物体的位置。
如图3-5
设定物体位置的初值坐标为(X,Y)
L1=
L2=
设电机A 的步进为acm,电机B的步进为bcm,物体高度为hcm。
如图8为物体在画板某一位置,则有:
解得X轴点位置和h为
则Y轴点位置
Y=115-h
控制物体从一点到另一点的实现就是当X、Y已知条件,求电机的步进过程。
由图8解得:
解得
(cm)
(cm)
由此,利用软件实现以上算法来分别控制两个步进电机的步进a,b,这样就可以向控制系统输入起点坐标和终点坐标让物体在画板置任意行走。
(2)直线算法:
目前画直线的算法也算是有很多,比如:
逐点比较直线插补,脉冲增量插补和数据采集插补,本设计根据实际所学知识,选择了逐点比较直线插补法,具体如下:
逐点比较法的基本原理是,在刀具按要求轨迹运动加工零件轮廓的过程中,不断比较刀具与被加工零件轮廓之间的相对位置,并根据比较结果决定下一步的进给方向,使刀具向减小偏差的方向进给。
图3-6第一象限直线
如图3-6所示,设直线的起点为坐标原点,终点坐标为A(
),点m(
)为加工点(动点)。
定义偏差公式为
。
若
=0,表明点m在OA直线段上;若
>0,表明点m在OA直线段上方,即点m’处;若
<0,表明点m在OA直线段下方,即点m’’处。
由此可得第一象限直线逐点比较法插补的原理是:
从直线的起点出发,当
0时,沿+x轴方向走一步;当
<0时,沿+y轴方向走一步;当两方向所走的步数与终点坐标(
)相等时,发出终点到信号,停止插补。
可以将上面所定义的偏差公式进一步简化,推导出偏差的递推公式。
1当
0时,沿+x轴方向进给一步,
(1)
②当
<0时,沿+y轴方向进给一步,
(2)
式
(1)和式
(2)是简化后偏差的计算公式,在公式中只有一次加法或减法运算,新加工点的偏差都可由前一点偏差和终点坐标相加或相减得到。
本体设计中采用以上原理,不过对于非原点开始的直线,采用起点坐标归零思想,结果也证明了改思路的可行性。
(3)画圆算法:
画圆算法采用圆弧插补法。
圆弧插补法也是在绘图系统中常用的一种方法,它和直线插补法原理相同,也是逐点比较算法。
若F=0,表明加工点在圆弧上;
F>0,表明加工点在圆弧外;
F<0,表明加工点在圆弧内。
若F≥0,为逼近圆弧,下一步向-X轴进给一步,并计算出新的偏差值;
F<0,为逼近圆弧,下一步向+Y轴进给一步,并计算出新的偏差值。
各象限插补公式如下
在实际操作中,可以以圆心为假设的坐标原点,再根据上面的原理设计算法。
(4)循迹黑线的探测及循迹算法
在以画笔为中心,半径20毫米的圆周上安装了8个反射式红外对管作为轨迹探测传感器,安装方式如图3所示。
图3-7轨迹探测传感器安装方式图3-8方向调整示意图
根据图3-7安装方式及安装半径,只要系统的采样频率足够高,轨迹是无法脱离探测范围的。
但由于使用了8个传感器,不同传感器信号间的组合太多,使用一般穷举办法难以实现循迹控制,因此自己设计了一套循迹算法。
如图3-8,定义了物体循迹时运动的8个方向,图中黑箭头(1号方向上)表示物体当前的循迹方向。
循迹时,使用变量Direct表示当前物体运动方向,物体每次运动时先按当前方向向前步进一段固定的距离,然后检测采样传感器信号并调整Direct,再沿新的Direct方向步进。
由于所给的曲线是连续的,所以每次调整Direct只能是+1或-1。
如图3-8所示,Direct在需向左偏时则Direct加1,需向右偏则减1,继续前进则保持不变。
由于只有8个运动方向,所以对Direct的运算需在模8的范围内(0~7)进行。
现在考虑如何决定左偏或右偏的问题,使用上述调整办法只需要根据Direct的前后方向及左右方向的四个信号对Direct调整即可。
如图4中仅需根据1、3、5、7方向的信号对Direct调整。
由于每个方向上±1和保持不变的传感器信号是一定的,故对8个方向上的调整策略用一个静态数组的形式保存起来,调整时直接查表即可,方便编程。
这种循迹算法大大地减少了循迹运动的调试时间,为整个作品成功的完成打下了基础。
当每次步进的距离较小时,若在Direct方向的前、左、右三处的传感器同时发现是白纸,则表明传感器探测到了曲线的间断部分或尽头,此时应根据前几次(2~3次)Direct的平均值作为探索方向,再向前步进2~3步,保证循迹的正确停止。
在取平均值时,需对7→0和0→7的转变作特殊处理,否则可能出错。
实践证明,按照上面的办法循迹迅速稳定,并且不会受交叉线的影响。
由于轨迹线有一定宽度,实际的轨迹不可能转折得十分迅速,当步进距离较小时,甚至可以完成锐角的循迹。
本系统使用的步进距离是5毫米,效果很好。
(5)系统主程序流程框图
图3-9系统主程序流程框图
四、系统测试
1.测试仪器
DT9205A型数字万用表;
秒表、卷尺;
+12V直流稳压电源。
2.测量结果
(1)直线测试
次数
设定起点坐标
设定终点坐标
实际坐标
误差
用时
1
(0,0)
(50,50)
(50.2,51.3)
2cm
75s
2
(0,0)
(80,99)
(80.1,100.5)
1.5cm
134s
(2)画圆测试
次数
圆心坐标
半径
最大误差
用时
1
(25,25)
25
1cm
130s
2
(3)循迹测试
连续线段线长
间断线段长度
60cm
46cm
用时
28.1s
24.3s
3.误差分析及改进措施
(1)坐标转换的误差。
(X,Y)坐标向(L,R)坐标转换时使用几何分析的方法,但为了处理方便,将悬挂滑轮视为一点,没有考虑其半径。
本作品以减小其半径的办法降低误差。
同时,进行坐标变换时,单片机在计算精度上也会引进误差,由于使用浮点运算,该误差不大。
(2)笔尖和悬挂点不在同一平面引入误差,应尽量使三点处于与地板平行的平面以减小误差。
(3)步进电机的步进脉冲个数和步进线距离之间的折算误差。
作品使用了直接测量一段距离和步进个数再求平均值的办法降低误差。
(4)牵引线引入的误差,包括拉伸误差和由松弛产生的误差。
改进措施是使用变形系数小的牵引线和增加悬挂物体的重量。
(5)绕线产生的误差。
解决办法是根据力学分析采用机械的办法保证绕线不重叠,并且使用半径小的牵引线使绕线在横向延伸的距离减少,从而减少误差。
(6)读数误差。
初始定位时需提供物体坐标,测量结果需人为读数,这会引入误差。
五、结论
本设计以AT89S52单片机为核心,利用软件编程,实现了定点直线运动,圆形轨迹运动,间断黑线循迹以及坐标的实时显示。
测试结果表明,本设计很好地完成了题目基本部分和发挥部分的全部要求,速度快、精度高。
整个系统从软件到硬件都体现优良简约的风格。
主要有以下几个优点:
(1)采用步进电机及专用细分驱动器,悬绳收放控制较精确;
(2)程序算法优良,易于误差处理和提高精确度;
(3)LCD液晶显示,界面友好。
六、参考文献
1、王琼.单片机原理及应用.合肥工业大学出版社
2、求是科技.单片机典型模块设计实例导航.人民邮电出版社
3、高吉祥.全国大学生电子设计竞赛培训教程-数字系统与自动控制系统设计.电子工业出版社
附录一电路原理图
1、控制部分电路图:
2、循迹模块电路图:
附录二源代码
/*******************************************************************/
#include
#include
#include
#include
#defineucharunsignedchar//无符号字符类型定义
#defineuintunsignedint//无符号整数类型定义
/******************************************************************/
//步进电机驱动器引脚连接定义
sbitMotor_Left_CP=P1^0;//左步进电机脉冲
sbitMotor_Left_DIR=P1^1;//左步进电机方向控制端
sbitMotor_Right_CP=P1^2;//右步进电机脉冲
sbitMotor_Right_DIR=P1^3;//右步进电机方向控制端
sbitMotor_FREE=P1^4;//电机使能端(高电平有效,低电平是电机处于自由状态)
sbitSHLD=P1^5;
sbitS_clk=P1^6;
sbitS_data=P1^7;
sbitjiesu=P3^6;
/**************************************************/
#definepai3.141592//圆周率
#definea15//80cmx100cm场地到两电机连线的垂直距离(厘米)
#defineb15//80cmx100cm场地到边线(顶端滑轮和电机的连线)的垂直距离(厘米)
#definer0.8276//滑轮半径(厘米)
#definestepz0.0122//左步进电机每步弧长(厘米)
#definestepy0.0122//右进步点击每步弧长(厘米)
#definestep0.0125//步进电机每步弧长(厘米)
#defineradius25//圆周半径长度
#defineMotor_FREE1
/**************************************************/
//LCD1602液晶模块引脚连接定义
#defineLCD_DataP0//1602的8位数据线连接到P0口
sbitRS=P3^5;//1602的数据/命令选择端RS连接到P1.0
sbitRW=P3^4;//1602的读/写选择端连接到P1.1
sbitEN=P3^3;//1602的使能信号引脚连接到P1.2
/**************************************************/
ucharcodekaiji0[16]={">>>WELCOME!
<<<"};
ucharcodekaiji1[16]={"LOADDOWNING....."};
ucharcodetable0[16]={"1.Line2Rectan"};
ucharcodetable1[16]={"3.Circu4.Follow"};
ucharcodetable3[16]={"DrawaLine"};
ucharcodetable4[16]={"DrawCircularity"};
ucharcodetable5[16]={"FollowtheLine"};
ucharcodetable6[16]={"(,);(,)"};
ucharcodetable7[16]={"(,);r=cm"};
ucharcodetable8[16]={"(cm,cm)"};
ucharcodetable9[16]={"ENTERtoBegin"};
ucharcodetable10[16]={"Executing....x"};
ucharcodetable11[16]={"Rectanperform."};
ucharcodetable12[16]={"(25,25)-(50,25)"};
ucharcodetable13[16]={"(50,50)-(25,50)"};
ucharcodetable14[16]={"havecompleted!
!
"};
ucharcodewrong[16]={"WrongCoordinate"};
ucharcodeagian[16]={"InputAgian?
"};
ucharcodenumber[10]={"0123456789"};
/**************************************************/
intx0,y0,x1,y1;
/*******************************************************************/
//函数声明
voidDelay_1ms(inttime);//延时1ms*time
voidLCD1602_Busy_Check(void);//LCD1602忙检查函数
voidWrite_LCD1602(ucharudata,bitcommand);//LCD1602写数据和写指令函数
voidWrite_Byte_Locate(ucharx,uchary,ucharudata);//把数据显示在LCD1602的指定位置
voidInit_LCD1602();//LCD1602初始化函数
ucharKeyboard_Scan(void);//键盘扫描函数,返回键盘扫描码
ucharScan_Code_Transform(ucharscancode);//键码识别函数
//voidMotot_ld(int);
voidMotor_Left_Step(bitDir);//左电机转动一步,Dir=0时反转(顺时针),即松开线;Dir=1时正转(逆时针),即收紧线
voidMotor_Right_Step(bitDir);//右电机转动一步,Dir=0时反转(顺时针),即收紧线;Dir=1时正转(逆时针),即松开线
voidDraw_Circular(intx,inty);//画圆函数
voidcurrentdisp(intline,intx,inty);//当前显示
voidlinedisp(int,int,int,int,int);//当前直线点显示
voiddisplay(uchartable[16],bitline);//提示显示
voidline(int,int,int,int);//画直线函数
void
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 悬挂 运动 控制系统 设计 报告