单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc

上传人:枫** 文档编号:563063538 上传时间:2023-02-24 格式:DOC 页数:18 大小:684KB
返回 下载 相关 举报
单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc_第1页
第1页 / 共18页
单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc_第2页
第2页 / 共18页
单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc_第3页
第3页 / 共18页
单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc_第4页
第4页 / 共18页
单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc》由会员分享,可在线阅读,更多相关《单片机课程设计~步进机~~~湘大信工院~~警告学弟学妹,超级难做,不要选啊!.doc(18页珍藏版)》请在金锄头文库上搜索。

1、一、课题名称:步进电机控制器设计二、内容摘要:步进电机是一种输出与输入数字脉冲对应的驱动元件,具有快速启动和停止的能力。转子运动的速率仅取决于驱动脉冲频率,转子运动的总位移也仅取决于总的驱动脉冲数,步距精密准确,而且不易受电压、电流的波动,脉冲波形状, 自身和环境温度变化等干扰因素的影响。在一定的频率范围内,启动、停止、正转、反转等运动方式的改变,都不会产生失步现象。根据设计要求,步进电机控制电路可以分为控制模块、显示模块、电源模块、键盘模块、电机驱动模块、步进电机部分。三、实验目的:(1)了解步进电机控制的基本原理;(2)掌握控制步进电机转动编程方法;(3)掌握步进电机和单片机的接口驱动方法

2、;四、设计内容及要求要求完成原理设计并通过软件仿真部分:(1)利用MCS51单片机作为主控制器组成一个双步进电机控制器;(2)通过小键盘,能给定两台步进电机单独运行的速度,要求可供选择的步进速度从60600步/秒,可连续任意设置;(3)假设两台被控步进电机分别固定在X轴和Y轴,其初始位置在零点(0,0),根据直线差补算法,使两步进电机联动运行,各自在XY轴上同步运行距离(即相同时间T到达的距离)的交点构成的轨迹是一条直线段从(0,0)到(20,40)。发挥部分:(1)能够实时显示所绘直线段的坐标,并能通过键盘设定新的终点参数,且步进电机能正确运行到该点;(2)按下“回零”命令键后,两台电机能以

3、最快的速度准确返回到原点,并显示原点坐标。五、实验方案比较1、步进电机的控制和驱动方案一:使用多个功率放大器件驱动电机通过使用不同的放大电路和不同参数的器件,可以达到不同的放大的要求,放大后能够得到较大的功率。但是由于使用的是四相的步进电机,就需要对四路信号分别进行放大,由于放大电路很难做到完全一致,当电机的功率较大时运行起来会不稳定,而且电路的制作也比较复杂。方案二:使用芯片ULN2003驱动电机ULN2003芯片可以驱动两个二相电机,输出电压最高可达50V,可以直接通过电源来调节输出电压;可以直接用单片机的IO口提供信号;而且电路简单,使用比较方便。结果:通过比较,使用芯片ULN2003充

4、分发挥了它的功能,能稳定地驱动步进电机,且价格不高。而使用ULN2003时,可以用芯片来提供时序信号,可以节省单片机IO口的使用;也可以直接用单片机模拟出时序信号,由于控制并不复杂,故选用后者。2、数码管显示电路的设计方案一:串行接法设计中要显示4位数字,用74LS164作为显示驱动,其中带锁存,使用串行接法可以节约IO口资源,但要使用SIO,发送数据时容易控制。方案二:并行接法使用并行接法时要对每个数码管用IO口单独输入数据,占用资源较多。结果:由于设计中用一块单片机进行控制,资源有限,选择了方案一。另外,使用锁存也起到节约资源的作用。六、实验原理1、步进电机工作原理(a)步进电机是将给定的

5、电脉冲信号转变为角位移或线位移的开环控制元件。(b)步进电机的正反转与电机每相的通电顺序有关,可以改变相序来改变电机的正反转。步进电机每步所旋转角度的大小,称为步距角(B)。它是由电机本身转子的齿数(ZR)。一个通电循环内通电节拍数(MQ)决定的。即B=360/ ZR MQ。电机出厂的步距角是固定的。四相步进电机的步距角为0.90/1.80(表示半步工作时为0.90,整步工作时为1.80)。步进电机转速的高低与控制脉冲频率有关。改变控制脉冲频率,可改变电机转速。连续给定脉冲信号,步进电机就可以连续运转。由于电脉冲信号与步进电机转角存在的这种线性关系,使得步进电机在速度控制、位置控制等方面得到了

6、广泛的应用。(c)步进电机的使用至少需要三个方面的配合,一是电脉冲信号发生器,它按照给定的设置重复为步进电机输送电脉冲信号,目前这种信号大多数由可编程控制器或单片机来完成;二是驱动器(信号放大器),它除了对电脉冲信号进行放大、驱动步进电机转动以外,还可以通过它改善步进电机的使用性能,事实上它在步进电机系统中起着重要的作用,一般一种步进电机可以根据不同的工况具有多种驱动器;三是步进电机,它有多种控制原理和型号,现在常用的有反应式、感应子式、混合式等。(d)步进电机的速度控制是通过输入的脉冲频率快慢实现的。当发生脉冲的频率减小时,步进电机的速度就下降;当频率增加时,速度就加快。还可以通过频率的改变

7、而提高步进电机的速度或位置精度。(e)步进电机的位置控制是靠给定的脉冲数量控制的。给定一个脉冲,转过一个步距角,当停止的位置确定以后,也就决定了步进电机需要给定的脉冲数。2、直线插补算法:为了简化程序的设计,将插补计算的坐标系的原点选在被插补直线的起点。设直线OP,O(0,0)为起点。P(Xe,Ye)为终点,进给速度F,沿OP进给,插补周期为T,则在T内的合成进给量L为:L=FT/60 (um)设P(Xi,Yi)为某一插补点,P(Xi+ 1,Yi+1)为下一插补点,则由几何关系可知:上述两式,那一个较优,可作如下分析:当时,应采用算法(1),当时,应采用算法(2)。即,在插补计算时,总是先计算

8、大的坐标增量,后计算小的坐标增量。考虑不同的象限,插补计算公式将有8组,为了方便程序设计,引入引导坐标的概念,即在插补周期内,将进给增量值较大的坐标定义为引导坐标G,另一个为非引导坐标N。引入引导坐标后可将8组插补计算公式归结为一组流程图如下图所示。 直线插补程序流程图具体程序代码见试验程序void motor(void);3、键盘接口矩形键盘由行列键组合而成,在扫描过程中,先对各行线都送低电平,若读回各列线电平值均为l,则说明未曾按过键:如果某列出现低电平,则说明该列上的按键已有按下,然后将行线的低电平引入到列线,在通过逐行扫描来判断具体的按键。对于在何时扫描,不同的单片机应用系统有不同的方

9、式。有的是定时扫描,即每隔一段时间对键盘扫描一次,发现有键盘按下就进行相应处理;有的在主程序循环执行的过程中作为作为内容之一把键盘扫描程序作为子程序附带执行;也有的在按键按下后申请外部中断,由CPU响应并执行这一外部中断后再进行键盘扫描本系统采用主程序循环扫描的方法七、实验电路及连线八、实验电路说明1、本试验使用的步进电机用直流+12V电压,电机线由A、B两相组成。2、驱动方式为二相四线方式。各线圈通电顺序如下表。按表中顺序切换,电机顺时针方向转,若通电顺序相反,则电机轴按逆时针方向旋转。(注:为提高步进电机负载能力和运行平稳,可使用四相八拍驱动方式)顺序/相ABCD1100020100300

10、1040001九、系统原理图以及实验框图51系列单片机4*4键盘8位LED显示X向步进电机控制复位电路晶振电路等Y向步进电机控制十、实验程序框图:十一、步进电机实验程序程序清单如下:#includesbit P3_0=P30;sbit P3_1=P31;sbit P3_2=P32;sbit P3_3=P33;/*全居变量定义*/ unsigned int DS_chuzhi=15; /*T0定时器ms定时初值*/ unsigned int time; char dis_buf6=0,0,0,0,0,0 ; /*键值保存数组 */ char jianzhi=0; int flag=0; /*有键

11、按下标志 */ int x=0,y=0; /* 电机位置标志 */ char X_ffw8=0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09; char Y_ffw8=0x10,0x30,0x20,0x60,0x40,0xc0,0x80,0x90; char code table18=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8, 0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x8c,0x91;/*/*/* /* 延时t毫秒 /* 11.0592MHz时钟,延时约1ms /* /*/void d

12、elay(int t) int k; while(t-) for(k=0; k125; k+) ; /*/*4*3键盘扫描程序*/*8051 P2.0-P2.2接键盘列线/*8051 P2.4-2.7接键盘行线/*/char JP_saomiao(void) char temp; char key; P3=0xff; /*p2口输出*/ P3_0=0; /*第一行扫描*/ temp=P3; temp=temp&0xf0; if(temp!=0xf0) delay(20); temp=P3; temp=temp&0xf0; if(temp!=0xf0) switch(temp) case 0xe0: key=13;flag=1; return(key); break; case 0xd0: key=16;flag=3; return(key); break; case 0xb0: key=0;flag=1; return(key); break; case 0x70: key=17;flag=2; /*号键按下 修改不进电机速度 */ return(key); break; else return(0); P3=0

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号