ImageVerifierCode 换一换
格式:DOCX , 页数:34 ,大小:442.28KB ,
资源ID:12294489      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-12294489.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(逐点比较插补原理实现完整版.docx)为本站会员(b****8)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

逐点比较插补原理实现完整版.docx

1、逐点比较插补原理实现完整版微型计算机控制技术课程设计报告课题名称:逐点比较插补原理的实现姓 名: 章洪高 班 级: 自动化2班 学 号: 201320150211 指导老师: 徐猛华 东华理工大学机械与电子工程学院2016年6月1设计任务及要求设计一个计算机控制步进电机系统,该系统利用单片机的I/O口输出控制信号,其信号驱动控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出如下曲线。图1-1 第一象限逆圆弧课程设计的主要任务: 1)在显示器上显示任意四位十进制数;a、定义键盘按键:10个为数字键09;6个功能键:设置SET、清零CLR、确认、开始START、暂停、停止;b、显示器上

2、第一位显示次数,后三位显示每次行走的角度;c、通过键盘的按键,设置X、Y轴插补的起始值;按START键启动步进电机开始转动,按SET键进行数据设置、按CLR键清零。2)设计硬件系统,画出电路原理框图(要求规范);3)定义步进电机转动的控制字;(不设计步进电机驱动电路与驱动程序)。4)推导出用逐点比较法插补绘制出下面曲线的算法;5)编写算法控制程序线;6)撰写设计说明书。2方案设计及认证本次课程设计内容为设计一个单片机控制步进电机系统,该系统利用单片机的I/O口输出控制信号,其信号驱动后控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出第一象限逆圆弧。第一象限逆弧如图2-1所示。图2

3、-1 第一象限逆圆弧针对以上设计要求,采用单片机控制步进电机进行逐步逼近插补。硬件方面,在显示器上显示任意四位数,可采用LCD1602显示,第一位显示次数,即在插补过程中每走一步步数加1在第一位显示出来10个数字键采用矩阵键盘,用矩阵键盘扫描的方式判断哪个键按下,以此来设定X,Y的初始坐标。用独立键盘做其功能键,K1用作设置初始坐标,K2坐标清零,K3插补启动,K4插补暂停,K5停止。主控制器采用STC90单片机做控制,硬件简单,控制方便。插补算法-逐点比较法是以阶梯折线来逼近直线或圆弧等曲线,它与规定的加工直线或圆弧之间的最大误差为一个脉冲当量,因此只要把脉冲当量(每走一步的距离即步长)取得

4、足够小,就可以达到精度的要求。以下为课程设计要求插补的第一象限逆圆弧。图2-1为第一象限逆圆弧。单片机程序软件的设计主要有矩阵键盘和独立键盘扫描程序的设计,人机交互界面采用1602液晶做菜单显示器,设计到显示菜单程序的编写。调试及其结果分析,其中包括界面设置,调试记录以及结果分析三个方面,对软件程序进行调试和完善,实现步进电机插补原理。3硬件设计原理3.1硬件结构步进电机通过51单片机进行控制,进而进行数模转换,由伺服电机驱动电路驱动伺服电机,带动工作台进行逐步比较插补,逐步逼近给定轨迹。流程如图3.1所示。随着集成电路技术的发展,开环数字程序控制得到了广泛的应用,如各类数控机床、线切割机低速

5、小型数字绘图仪等,它们都是利用开环数字程序控制原理实现控制的设备。其结构亦如图3-1所示。这种结构没有反馈检测元件,工作台由步进电机驱动。步进电机接收驱动电路发来的指令作相应的运动,把刀具移动到与指令脉冲相当的位置,至于刀具是否到达了指令脉冲规定的位置,它不作任何检查,因此这种控制的可靠性和精度基本上由步进电机和传动装置来决定。图3-2为两台三相步进电机控制接口示意图,选定由单片机的P2.0、P2.1、P2.2通过驱动电路来控制x轴步进电机,由P2.3、P2.4、P2.5通过驱动电路来控制y轴步进电机,并假定数据输出为“1”时,相应的绕组通电;数据输出为“0”时,相应绕组断电。步进电机是机电控

6、制中一种常用的执行机构,它的用途是将电脉冲转化为角位移,通俗地说:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。通过控制脉冲个数即可以控制角位移量,从而达到准确定位的目的;同时通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。以下为步进电机三相六拍工作方式,其输出字表如表3-1。 表3-1 步进电机三相六拍工作方式输出字表x轴步进电机输出字表Y轴步进电机输出字表存储地址标号P3口输出字存储地址标号P3口输出字ADX10000000101HADY10000100008HADX20000001103HADY20001100018HADX

7、30000001002HADY3000100010HADX40000011006HADY40011000030HADX50000010004HADY5001000020HADX60000010105HADY60010100028H3.2硬件电路图 图3-3硬件电路原理图3.3硬件原理本次课程设计内容为设计一个51单片机控制步进电机系统,该系统利用单片机机的I/O口输出控制信号,其信号驱动后控制X、Y两个方向的三相步进电机转动,利用逐点比较法插补绘制出第一象限逆圆弧。、逐点比较法是以阶梯折线来逼近直线或圆弧等曲线,它与规定的加工直线或圆弧之间的最大误差为一个脉冲当量,因此只要把脉冲当量(每走一步

8、的距离即步长)取得足够小,就可以达到精度的要求。以下为课程设计要求插补的第一象限逆圆弧。图3-4为第一象限逆圆弧。图3-4 第一象限逆圆弧以下就以第一象限为例进行分析。(1) 偏差计算公式设要加工逆圆弧AB,圆心在原点,起点坐标A(x0,Y0),终点坐标(xe,Ye),半径R。瞬时加工点M(xm,Ym),它距圆心Rm,则可用R与Rm来反映偏差。由图3-2可知:由此定义偏差公式为:若Fm0,M点在圆弧上;若Fm0,M点在圆弧外;若Fm0,M点在圆弧内。第一象限逆圆弧的插补原理是:从圆弧起点出发,若Fm0,沿-X方向走一步,并计算新偏差;当Fm0时,沿+Y方向走一步,并计算新偏差。如此一步一步计算

9、与进给,并在到达终点时停止计算。但以上Fm计算式比较复杂,可以考虑用递推公式:(Xm和Ym均取绝对值运算)1 当Fm0时,Xm+1Xm-1 Ym+1Ym Fm+1Fm-2Xm+1当Fm0时,Xm+1Xm Ym+1Ym+1 Fm+1Fm+2Ym+1(2)终点判断方法 设置Nx,NY两个计数器,初值设为|Xe-Xo|,|Ye-Yo|在不同的坐标轴进给时对应的计数器减一,两个计数器均减到零时,到达终点。 用一个计数器NxY ,初值设为Nx+NY,无论在哪个坐标轴进给,Nxy 计数器减一,计数器减到零时,到达终点。(3) 插补计算过程圆弧插补计算比直线插补计算过程要多一个环节,即要计算加工瞬时坐标。故

10、圆弧插补计算为五个步骤即偏差判断、坐标进给、偏差计算、坐标计算、终点判断。通过以上的分析计算,可以得出以下四个象限的顺圆弧(SR)和逆圆弧(NR)的圆弧插补计算公式和进给方向。其插补进算公式及其进给方向如表3-2所示。表3-2 圆弧插补计算公式和进给方向偏 差圆弧种类进给方向偏差计算坐标计算Fm0SR1、NR2-YFm+1Fm-2Ym+1Xm+1XmYm+1Ym-1SR3、NR4+YNR1、SR4-xFm+1Fm-2Xm+1Xm+1Xm-1Ym+1YmNR3、SR2+xFm0+Y四X42,Y4Y3-10F4F3-2Y3+10Nxy45F40+Y一X52,Y5Y4+1=1F5F4-2Y4+11N

11、xy36F510-X一X6X5-1=1,Y61F6F5-2X5+1-2Nxy27F6-20-X一X8X7-1=0,Y82F8F7-2X7+10Nxy0根据以上圆弧插补过程和进给方向,可知单片机实现的圆弧插补控制系统实现了完整并且正确的圆弧插补过程。6心得体会微机控制原理技术是一门综合性的课程,任何一个计算机系统都是一个复杂的整体,学习微机控制原理是要涉及到整体的每一部分。通过讨论其控制原理时又要涉及到各部件之间控制的工作原理,不仅较深入理解计算机控制的工作原理。所以,在循序渐进的课堂教学过程中,我有时候会处于“学会了一些新知识,弄清了一些原来保留的问题,又出现了一些新问题”的循环中,直到课程结

12、束时,才把保留的问题基本搞清楚。学习该门课程知识时,其思维方法也和其它课程不同,该课程偏重于工程思维,具体地说,在了解了微机基本原理的同时,必须学会各种控制技术的应用,其创造性劳动在于如何用计算机的有关技术实现计算机的控制,设计实用的电路和系统,再配上相应的应用程序,完成各种控制应用项目。这次课程设计并不是很难,主要的困难来自对单片机按键程序的处理和1602菜单显示界面的设计。功夫不负有心人,经过团队中2个人的合作和努力,最后对实验的原理有了更清晰的认识。虽然设计中并的功能并不是十分完善,但是就系统功能来说,基本完成了课程设计要求。但是通过平时课程的学习,又通过本次课程设计对它的再一次认真努力

13、学习和操作,巩固了该门课程的知识和应用,对我们以后的学习也会有帮助的。本次还遇到一个困难,便是对于上位机开发VB使用的不熟悉。对于VB的应用,仅仅限于大学一年级的简单学习,这次课程设计中对于步进电机的软件仿真,VB中的很多不懂的地方,通过看书学习和向同学请教,实现了圆弧插补的上位机仿真软件设计。本次课程设计的过程中,对于VB的再一次重温和理解,相信对于今后的学习也有很大的帮助。至于下位机(单片机)调试的过程中花了很多时间,由于本课程涉及到很多按键,又有很多显示内容,所以在硬件的选型上就花费了一些时间,后期的按键和1602显示程序的调试也花费了不少功夫才把显示菜单和按键功能的程序调试出来。总之,

14、这次课程设计对于我们有很大的帮助,通过课程设计,我更加深入地理解了,微机控制原理课程上讲到的各种控制技术, 本次设计尤其深入了对步进电机插补原理的理解,熟悉了VB程序的编写过程和51单片机人机界面程序的编写、运行过程,最后还提高了自己的动手能力。7 参考资料1郑学坚,周斌 微型计算机原理与应用 清华大学出版社2于海生 微型计算机控制技术 清华大学出版社3沈美明,温冬婵 IBM-PC汇编语言程序设计 清华大学出版社 4何立民 单片机应用系统设计 北京航空航天大学出版社附录:附件一下位机调试(单片机)主程序清单/* * 东华理工大学-* 实 验 名 : 逐点比较插补控制1602显示* 实验说明 :

15、 KEY1按键设置起始点坐标,KEY2清零起始点坐标和键值,KEY3插补开始按键,KEY4插补暂停* 连接方式 : 见连接图* 注 意 : */* * 东华理工大学-* 实 验 名 : 逐点比较插补控制1602显示* 实验说明 : KEY1按键设置起始点坐标,KEY2清零起始点坐标和键值,KEY3插补开始按键,KEY4插补暂停* 连接方式 : 见连接图* 注 意 : */#include #includelcd.h#includemath.h/-定义使用的IO口-/ #define GPIO_KEY P1sbit K1=P20; /设置起始点坐标按键sbit K2=P21; /坐标清零按键sb

16、it K3=P22; /插补开始按键sbit K4=P23; /插补暂停按键sbit K5=P24; /插补停止按键/-定义全局变量-/unsigned char R; /圆弧半径设置为变量unsigned char PuZh13=key value is:;unsigned char PuZi16=S: X0Y0 E: X0Y0;unsigned char PuZj16=Times : ;unsigned char KeyValue,STx,STy,EDx,EDy; /键值变量,起始坐标和终点坐标变量设置unsigned char flag=0,flag_Chabu;/用来存放读取到的键值u

17、nsigned char k1num=0; /存放按键K1按下的次数,初始化为0/-声明全局函数-/void NumberKeyScan(void); /(数字)矩阵按键扫描函数void MenuKeyScan(void); /(菜单)独立按键扫描函数void Delay10ms(unsigned int c); /10毫秒延时函数,误差 0usvoid MotorStart(void); /插补显示控制函数void BanyuanChabu_Count(unsigned char STx,unsigned char STy,unsigned char EDx,unsigned char ED

18、y); /插补计算函数/* 函 数 名 : main* 函数功能 : 主函数* 输 入 : 无* 输 出 : 无*/void main(void) unsigned char i; LcdInit(); LcdWriteCom(0x80); for(i=0; i12; i+) LcdWriteData(PuZhi); LcdWriteCom(0x80+0x40); for(i=0;i15;i+) LcdWriteData(PuZii); while(1) NumberKeyScan(); /按键键值扫描计算函数 MenuKeyScan(); /菜单按键扫描函数 /* 函 数 名 : Numbe

19、rKeyScan* 函数功能 : 检测有按键按下并读取键值* 输 入 : 无* 输 出 : 无*/void NumberKeyScan(void) unsigned char i=0; char a = 0; GPIO_KEY=0x0f; if(GPIO_KEY!=0x0f) /读取按键是否按下 Delay10ms(1); /延时10ms进行消抖 if(GPIO_KEY!=0x0f) /再次检测键盘是否按下 /测试列 GPIO_KEY=0X0F; switch(GPIO_KEY) case(0X07): KeyValue=0;break; case(0X0b): KeyValue=4;brea

20、k; case(0X0d): KeyValue=8;break; case(0X0e): KeyValue=12;break; /测试行 GPIO_KEY=0XF0; switch(GPIO_KEY) case(0X70): KeyValue=KeyValue+3;break; case(0Xb0): KeyValue=KeyValue+2;break; case(0Xd0): KeyValue=KeyValue+1;break; case(0Xe0): KeyValue=KeyValue;break; while(a50) & (GPIO_KEY!=0xf0) /检测按键松手检测 Delay

21、10ms(1); a+; if(flag=0) LcdWriteCom(0x80+13); /设置键值显示坐标 if(KeyValue 10) LcdWriteData(0 + KeyValue); else LcdWriteData(7 + KeyValue); /A的ASCII码的前10位是7,所以用7做基数 void MenuKeyScan(void) unsigned char i=0; if(K3=0) Delay10ms(1); if(K3=0) /确认插补开始键按下 while(!K3); /按键释放 flag_Chabu=0; /插补停止标志位清零 LcdWriteCom(0x01); flag=1; MotorStart(

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

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