4步进电机定位控制实验_第1页
4步进电机定位控制实验_第2页
4步进电机定位控制实验_第3页
4步进电机定位控制实验_第4页
4步进电机定位控制实验_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

中国民航大学电气综合性课程设计报告项目名称基于单片机的步进电机分布式控制系统成员朱志聪121142440蒋茅121142412陈冠良121142403李想成121142415专业电气工程及其自动化班级121142D指导教师张长勇1、课设题目基于单片机的步进电机分布式控制系统2、课设目的与要求:(1)实现步进电机的速度控制和正反转控制。(2)实现步进电机定位,须包括加速、匀速、减速三个阶段。(3)计算机通过串口远程控制步进电机并设置定位值3、课设背景:步进电机是国外发明的。中国在文化大革命中已经生产和应用,例如江苏、浙江、北京、南京、四川都生产,而且都在各行业使用,驱动电路所有半导体器件都是完全国产化的,当时是全分立元器件构成的逻辑运算电路,还有电容耦合输入的计数器,触发器,环形分配器。国外在大功率的工业设备驱动上,目前基本不使用大扭矩步进电动机,因为从驱动电路的成本,效率,噪音,加速度,绝对速度,系统惯量与最大扭矩比来比较,比较不划算,还是用直流电动机,加电动机编码器整体技术和经济指标高。一些少数高级的应用,就用空心转杯电机,交流电机。国外在小功率的场合,还使用步进电机,例如一些工业器材,工业生产装备,打印机,复印件,速印机,银行自动柜员机。国外用许多现代的手段将步进电机排挤出驱动应用,除了前面提到的旋转编码器,打印机还使用光电编码带或感应编码带配合直流电动机,实现闭环直线位移控制。4、课设的目和意义:步进电动机是用脉冲信号行控制,将转换成相应的角位移或线步进电动机是用脉冲信号行控制,将转换成相应的角位移或线的微电动机,它最突出的优点是可以在宽广频率范围内通过改变脉冲来实现调速,快起停、正反转控制及动等并且用其组成的开环系统既简单廉价又可行,因此在打印机等办公自动化设备以及各种控制装置众多领域有着极其广泛的应用。随着微电子和计算机技术的发展,步进动需求量与日俱增随着微电子和计算机技术的发展,步进动需求量与日俱增研制步进电机驱动器及其控制系统具有十分重要的意义。5、课设计划与安排:本课程设计有五周的时间,我们小组计划安排如下:第一周:自我学习51单片机,初步掌握51单片机的LED灯、数码管、LCD屏幕、定时器、按键矩阵、步进电机等模块的控制。第二周:编写要求(1)对应的程序,下载进行调试。第三周:编写要求(2)对应的程序,下载进行调试。第四周:编写要求(3)对应的程序,下载进行调试。第五周:对程序进行总调试,把所有的程序组合起来,最后实现步进电机的分布式控制。6、课设内容:(一)要求(1)的实现通过学习51单片机的定时、矩阵按键、步进电机模块,编写相应程序,实现步进电机加速、减速控制,正转、反转控制:①实验步骤:(程序设计)#includevreg52.h>sbitKEY_IN_1=P2人4;sbitKEY_IN_2=P2A5;sbitKEY_IN_3=卩2人6;sbitKEY_IN_4=卩2人7;sbitKEY_OUT_1=卩2人3;sbitKEY_OUT_2=卩2人2;sbitKEY_OUT_3=卩2人1;sbitKEY_OUT_4=P2A0;unsignedcharcodeKeyCodeMap[4][4]={〃矩阵按键编号到标准键盘键码的映射表{0x31,0x32,0x33,0x26},//数字键1、数字键2、数字键3、向上键{0x34,0x35,0x36,0x25},//数字键4、数字键5、数字键6、向左键{0x37,0x38,0x39,0x28},//数字键7、数字键8、数字键9、向下键{0x30,0x1B,0x0D,0x27}〃数字键0、ESC键、回车键、向右键};unsignedcharKeySta[4][4]={〃全部矩阵按键的当前状态{1,1,1,1},{1,1,1,1},{1,1,1,1},{1,1,1,1}};signedlongbeats=0;〃电机转动节拍总数unsignedintspeed=250;voidKeyDriver();voiddelay(unsignedinti);voidmain(){EA=1;〃使能总中断TMOD=0x01;〃设置T0为模式1TH0=0xFC;〃为T0赋初值0xFC67,定时1msTL0=0x67;ET0=1;〃使能T0中断TR0=1;〃启动T0while(1){KeyDriver();〃调用按键驱动函数}}/*步进电机启动函数‘angle-需转过的角度*/voidStartMotor(signedlongangle){〃在计算前关闭中断,完成后再打开,以避免中断打断计算过程而造成错误EA=0;beats=(angle*4076)/360;〃实测为4076拍转动一圈EA=1;}/*步进电机停止函数*/voidStopMotor(){EA=0;beats=0;EA=1;}/*按键动作函数,根据键码执行相应的操作,keycode-按键键码*/voidKeyAction(unsignedcharkeycode){staticbitdirMotor=0;//电机转动方向if((keycode>=0x30)&&(keycodev=0x39))〃控制电机转动1-9圈{if(dirMotor==0)StartMotor(360*(keycode-0x30));elseStartMotor(-360*(keycode-0x30));}elseif(keycode==0x26向上键,控制转动方向为正转{dirMotor=0;}elseif(keycode==0x28向下键,控制转动方向为反转{dirMotor=1;}elseif(keycode==0x25向左键,减速{speed=speed+50;}elseif(keycode==0x27向右键,加速{speed=speed-50;}elseif(keycode==Oxl//Es(键,停止转动{StopMotor();}}/*按键驱动函数,检测按键动作,调度相应动作函数,需在主循环中调用*/voidKeyDriver(){unsignedchari,j;staticunsignedcharbackup[4][4/按键值备份,保存前一次的值{1,1,1,1}{1,1,1,1}{1,1,1,1}{1,1,1,1}};for(i=0;i〈4;i++循环检测4*4的矩阵按键{for(j=0;j<4;j++){if(backup[i][j]!=KeySta[i]/检测按键动作{if(backup[i][j]!=0)/按键按下时执行动作{KeyAction(KeyCodeMap[i][j])调用按键动作函数}backup[i][j]=KeySta[i][j];〃刷新前一次的备份值}}}}/*按键扫描函数,需在定时中断中调用,推荐调用间隔1ms*/voidKeyScan(){unsignedchari;staticunsignedcharkeyout=0;〃矩阵按键扫描输出索引staticunsignedcharkeybuf[4][4]={〃矩阵按键扫描缓冲区{OxFF,OxFF,OxFF,OxFF},{OxFF,OxFF,OxFF,OxFF},{OxFF,OxFF,OxFF,OxFF},{OxFF,OxFF,OxFF,OxFF}};〃将一行的4个按键值移入缓冲区keybuf[keyout][O]=(keybuf[keyout][O]<<1)|KEY_IN_1;keybuf[keyout][l]=(keybuf[keyout][1]<<1)|KEY_IN_2;keybuf[keyout][2]=(keybuf[keyout][2]<<1)|KEY_IN_3;keybuf[keyout][3]=(keybuf[keyout”3]vv1)|KEY_IN_4;〃消抖后更新按键状态for(i=O;i<4;i++)〃每行4个按键,所以循环4次{if((keybuf[keyout][i]&OxOF)==OxOO){〃连续4次扫描值为O,即4*4ms内都是按下状态时,可认为按键已稳定的按下KeySta[keyout][i]=O;}elseif((keybuf[keyout][i]&OxOF)==OxOF){〃连续4次扫描值为1,即4*4ms内都是弹起状态时,可认为按键已稳定的弹起KeySta[keyout][i]=1;}}〃执行下一次的扫描输出keyout++;〃输出索引递增keyout=keyout&OxO3;〃索引值加到4即归零switch(keyout)〃根据索引,释放当前输出引脚,拉低下次的输出引脚{caseO:KEY_OUT_4=1;KEY_OUT_1=O;break;case1:KEY_OUT_1=1;KEY_OUT_2=O;break;case2:KEY_OUT_2=1;KEY_OUT_3=O;break;case3:KEY_OUT_3=1;KEY_OUT_4=O;break;default:break;}/*电机转动控制函数*/voidTurnMotor(){unsignedchartmp;〃临时变量staticunsignedcharindex=0;〃节拍输出索引unsignedcharcodeBeatCode[8]={〃步进电机节拍对应的IO控制代码OxE,0xC,OxD,0x9,OxB,0x3,0x7,0x6};if(beats!=0)〃节拍数不为0则产生一个驱动节拍{if(beats>0)〃节拍数大于0时正转{index++;〃正转时节拍输出索引递增index=index&0x07;〃用&操作实现到8归零beats--;〃正转时节拍计数递减}else〃节拍数小于0时反转{index--;〃反转时节拍输出索引递减index=index&0x07;〃用&操作同样可以实现到-1时归7beats++;〃反转时节拍计数递增}tmp=P1;〃用tmp把P1口当前值暂存tmp=tmp&0xF0;〃用&操作清零低4位tmp=tmp|BeatCode[index];〃用操作把节拍代码写到低4位P1=tmp;〃把低4位的节拍代码和高4位的原值送回P1}else〃节拍数为0则关闭电机所有的相{P1=P1|0x0F;}}/*T0中断服务函数,用于按键扫描与电机转动控制*/voidInterruptTimer0()interrupt1{staticbitdiv=0;TH0=0xFC;〃重新加载初值TL0=0x67;KeyScan();〃执行按键扫描〃用一个静态bit变量实现二分频,即2ms定时,用于控制电机div=〜div;if(div==1){delay(speed);TurnMotor();}}voiddelay(unsignedinti){while(i__);②实验结果:我们借鉴了板子的内带按键、步进电机、定时器例程程序,重新进行编写,实现了步进电机的加减速控制和正反转控制,在学习板子的过程中,我们小组遇到的问题就是对C语言的不熟悉,起码有两年没有接触C语言程序了,程序的很多函数,语句不知道该怎么使用,一些C语言的规则也记得不太清了,在学习的过程中需要不断复习,上网查资料慢慢的才把C语言重新捡回来,经过一周的学习,我们也初步掌握了C语言程序与板子之间的正常单向通信,以及板子基本模块功能的实现,在编写程序过程中,我们常遇到的问题就是编写的程序下载到单片机后,和我们的预想情况不一样,如步进电机加减速定时函数的调用,经过的反复的修改,变量的定义错误,前置声明的缺少等,修改好程序后发现电机还是不能转,经过排查才发现,板子的跳线没有调好,在设计的过程中还遇到了很多其他的问题,如按键扫描不能正常工作,按键的状态备份没有设置好等等,经过了反复的排查修改才最后调试成功,通过这两星期的学习,我们小组对51单片机的部分功能有了进一步的认识。

图1-1单片机步进电机运行照片(二)要求(2)(3)的实现:我们利用实验室的PLC步进电机控制系统实现(2)(3)的要求,其步进电机的频率-时间图如图2-1所示。图2-1步进电机的频率-时间图①实验过程(包括主要步骤、代码分析)(1)了解触摸屏Touch-Win、西门子S7-200工作原理和驱动器KR-5MC参数设置。(2)根据实验要求,画出实验硬件接线图,如图2-2所示。图2-2实验硬件接线图(3)依据实验连线图接线,同时设置电机参数:将细分调到“FULL”档(对应电机接收一个脉冲时转动0.72度);将时钟调到“1”档(对应的CW控制输出脉冲,CCW控制转向)。接线和电机参数设置无误后请老师检查是否正确。

设计如图2-3所示的基于Touch-Win的人机界面,同时设置相关参数。其中量程、最大转速是需要输入的变量,分别设定为VW1和VW11。M0.1=l时电机启动,M0.0=1代表电机正转,丝杠向电机方向运动;M0.0=0代表电机反转,丝杠朝电机反方向运动。图2-3触摸屏工作界面其中触摸屏中各个变量对应关系如表1所示:表1触摸屏中变量对应关系表变量名称M0.1启动M0.0=1左移M0.0=0右移VW1行程设定值VW11最大转速设定值M0.3电机图标根据实验要求及其触摸屏的相关输入变量,设计基于西门子S7-200的PLC程序。已知控制器接收一个脉冲转动0.72度,每500个脉冲电机转一圈,丝杠的螺距是2毫米,电机转一圈丝杠前进2毫米。

PLC程序参数设定如表2所示:表2PLC程序参数设定值表参数设定值说明VB5003总段数VW5012/VW11+100第一段初始周期时间VW503-1第一段周期增量值VW505100第一段脉冲数VW5092/VW11第二段初始周期时间VW5110第二段周期增量值VW513VW1*25-200第二段脉冲数VW5172/VW11第三段初始周期时间VW519+1第三段周期增量值VW521100第三段脉冲数编写的PLC程序如图所示主程序tt;jMAIN~XSBR_OXINT_O/闍,1翩燿鑫加电ggg电/丝杠锵gg有红色变成蓝Q0.7M0.3网络2瞿瞬腮醜紀电ggg电/丝杠锵5电鹽标有红色变成蓝网络3NETWUFiKTITLE(singleline)NETWORKCOMMENTSM0.1QO.OM0.1<1SBR_OEN±|►

温馨提示

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

评论

0/150

提交评论