欢迎来到三一文库! | 帮助中心 三一文库31doc.com 一个上传文档投稿赚钱的网站
三一文库
全部分类
  • 研究报告>
  • 工作总结>
  • 合同范本>
  • 心得体会>
  • 工作报告>
  • 党团相关>
  • 幼儿/小学教育>
  • 高等教育>
  • 经济/贸易/财会>
  • 建筑/环境>
  • 金融/证券>
  • 医学/心理学>
  • ImageVerifierCode 换一换
    首页 三一文库 > 资源分类 > DOC文档下载  

    步进电机单片机控制系统的设计.doc

    • 资源ID:10525236       资源大小:135KB        全文页数:12页
    • 资源格式: DOC        下载积分:4
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录   微博登录  
    二维码
    微信扫一扫登录
    下载资源需要4
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    步进电机单片机控制系统的设计.doc

    哈 尔 滨 理 工 大 学 荣 成 学 院课程设计步进电机单片机控制系统的设计 姓名: &&&& 专业: 电机与电器 班级: 0&&&&&& 学号: * 日期: 2012年5月10日 一、设计题目的背景 1.步进电机的原理步进电动机又称为脉冲电动机,是数字控制系统的一种执行元件,其功用是将脉冲信号变换为相应的角位移或直线位移,既给一个脉冲电信号,电动机就转动一个角度或前进一步。步进电动机的控制原理是通过它每相线圈的电流的顺序切换来使电机作步进式旋转,驱动电路由脉冲控制,所以调节脉冲的频率便可改 变步进电机的转速,微控制器最适合控制步进电机。此次设计步进电机共有四个相位(A、B、C、D),按转动步骤分为单四拍(A 、 B 、 C 、 D 、 A)四相双四拍:电机正转 ( AB 、 BC 、 CD 、 DA 、AB) 电机反转 ( DA、AB 、 BC 、 CD、 DA)单双8拍(A、 AB、 B、 BC、 C、CD 、 D、DA、 A)2.应用领域(1)应用领域相当广泛,只要是要有动力源的,而且对精度有要求的一般都可能涉及到伺服电机。如机床、印刷设备、包装设备、纺织设备、激光加工设备、机器人、自动化生产线等对工艺精度、加工效率和工作可靠性等要求相对较高的设备。(2)广泛应用于ATM机、喷绘机、刻字机、写真机、喷涂设备、医疗仪器及设备、计算机外设及海量存储设备、精密仪器、工业控制系统、办公自动化、机器人等领域。特别适合要求运行平稳、低噪音、响应快、使用寿命长、高输出扭矩的应用场合。(3)步进电机在电脑绣花机等纺织机械设备中有着广泛的应用,这类步进电机的特点是保持转矩不高,频繁启动反应速度快、运转噪音低、运行平稳、控制性能好、整机成本低。二、设计原理1、设计目的(1)了解步进电机的基本原理,掌握步进电机的转动编程方法 (2)了解影响电机转速的因素有哪些2、方案的比较在于对步进电机的控制和驱动,设计中受控电机为四相六线制的的步进电机。方案一:使用多个功率放大器驱动电机通过使用不同的放大电路和不同参数的器件,可是达到不同的放大要求,放大后能够得到较大的功率,但是由于使用的是四相的步进电机,就需要对四路信号分别放大,而放大电路很难达到完全一致,当电机的功率较大时运行会不稳定,而电路的制作也比较复杂。方案二:使用ULN2003芯片驱动电机ULN2003可以驱动两个二相电机,也可以驱动一个四相电机,它工作电压高,工作电流大,并且能够在关太时承受50V的电压,输出还可以在高负载电流并行运行,可直接用单片机的I/O口提供信号;而且电路简单,使用比较方便。通过比较,使用ULN2003芯片充分发挥了它的功能,能稳定地驱动步进电机,且价格不高,故选用ULN2003驱动电机。三、电路设计 1.单片机型号的选择80C51单片机属于MCS-51系列单片机,增加了如乘(MUL)、除(DIV)、减(SUBB)、比较(PUSH)、16位数据指针、布尔代数运算等指令,以及串行通信能力和5个中断源。采用40引脚双列直插式DIP(Dual In Line Package),内有128个RAM单元及4K的ROM。80C51有两个16位定时计数器,两个外中断,两个定时计数中断,及一个串行中断,并有4个8位并行输入口。80C51内部有时钟电路,但需要石英晶体和微调电容外接,本系统中采用12MHz的晶振频率。由于80C51的系统性能满足系统数据采集及时间精度的要求,而且产品产量丰富来源广,应用也很成熟,故采用来作为控制核心。 80C31单片机,它是8位高性能单片机结合了HMOS的高速和高密度技术及CHMOS的低功耗特征。80C31内置中央处理单元、128字节内部数据存储器RAM、32个双向输入/输出(I/O)口、2个16位定时/计数器和5个两级中断结构,一个全双工串行通信口,片内时钟振荡电路。但80C31片内并无程序存储器,需外接ROM。此外,80C31还可工作于低功耗模式,可通过两种软件选择空闲和掉电模式。在空闲模式下冻结CPU而RAM定时器、串行口和中断系统维持其功能。掉电模式下,保存RAM数据,时钟振荡停止,同时停止芯片内其它功能。 综上,所以选择80C51单片机.2.硬件电路设计四、 软件设计1、程序框图NYNYNNNN0->需要刷新显示标志1->步进电机未转动过标志1->转动方向标志(1:表示顺时针方向)33H->下次送给步进电机值5->步进电机转速初始化8255(PC口输出)初始化8253(计数器T0设置在模式2状态,BCD码计数,CLK0/210)初始化8259(允许8253中断)初始化8253中断向量初始化显示缓冲区:(数码管第8位:0,顺时针方向;5、7位消隐;6位:转速;1、2、3、4位:0,表示连续转动,其他值表示需要转动的步数)调用显示子程序有键按下需要刷新显示标志=10->需要刷新显示标志调用步数调整子程序关中断(终止步进电机转动)数码管的1、2、3位->2、3、4位键值送给数码管的第一位调用改变转向子程序键值>9键值=0AH调用增速子程序调用减速子程序调用启动步进电机子程序Y键值=0BH键值=0CH键值=0DH开始YYY改变方向子程序:YYNNY开始转动方向标志=091H->下次送给步进电机值下次送给步进电机值循环右移二次1->转动方向标志0->送给数码管的第7位步进电机未转动过标志33H->下次送给步进电机值下次送给步进电机值循环左移二次0->转动方向标志1->送给数码管的第7位步进电机未转动过标志返回启动步进电机子程序:YNY开始0->步进电机未转动过标志取转动步数取转速对应的延时值(转速延时)初始转速延时1=初始转速延时转速延时< 50初始转速延时=50返回开定时器0初始转速延时=转速延时增速子程序:YN开始转速=11转速+1转速送给数码管第5位返回减速子程序:NY开始转速=0转速-1转速送给数码管第5位返回NNYNNNYYNY初始转速延时1=转速延时初始转速延时 -1=0时初始转速延时1 - 1初始转速延时=初始转速延时11-1转动方向标志=0时下次送给步进电机值循环右移一次1-1转动步数=0时1->需要刷新显示标志转动步数减一1-1转动步数=0时关中断开始下次送给步进电机值循环左移一次1-1返回下次送给步进电机值->P1口(控制步进电机转动一步)Y2.完整程序EXTRNCODE(INIT8279,SCAN_KEY,Display8)MAIN_CODESEGMENTCODEMAIN_BITSEGMENTBITMAIN_DATASEGMENTDATASTACK SEGMENTIDATA;PUBLIC INIT8279,SCAN_KEY,Display8CMD_8279XDATA0bF01HDATA_8279XDATA0bF00HRSEGMAIN_DATAStepControl:DS1buffer:DS8SpeedNo: DS1StepDelay:DS1StartStepDelay:DS1StartStepDelay1:DS1RSEGMAIN_BITbFirst:DBIT1bClockwise:DBIT1bNeedDisplay: DBIT1RSEGSTACKDS20HCSEGAT0000HLJMPSTARCSEGAT000BHLJMPTIMER0RSEGMAIN_CODESTAR:MOVSP,#STACK-1ACALLINIT8279SETBbFirst SETB bClockwiseMOVStepControl,#33HMOV SpeedNo,#5MOVTMOD,#02HMOVTH0,#55MOVTL0,#55MOVIE,#82HMOVBuffer+7,#0MOVbuffer+6,#0MOVbuffer+5,#0MOVbuffer+4,#0MOVbuffer+3,#10HMOVbuffer+2,SpeedNoMOVbuffer+1,#10HMOVbuffer,#0STAR2:MOVR0,#bufferACALLDisplay8STAR3:ACALLScan_KeyJCSTAR5JNBbNeedDisplay,STAR3CLRbNeedDisplayACALLStep_SUB_1SJMPSTAR2STAR5:CLRTR0CJNEA,#10,$+3JNCSTAR1MOVbuffer+4,buffer+5MOVbuffer+5,buffer+6MOVbuffer+6,buffer+7MOVBuffer+7,ASJMPSTAR2STAR1:CJNEA,#14,$+3JNCSTAR3MOVDPTR,#DriverTabCLRCSUBBA,#10RLAJMPA+DPTRDriverTab:SJMPDirectionSJMPSpeed_upSJMPSpeed_DownSJMPExecDirection:CPLbClockwiseJBbClockwise,ClockwiseMOVbuffer,#1AntiClockwise:JNBbFirst,AntiClockwise1MOVStepControl,#91HSJMPDirection1AntiClockwise1:MOVA,StepControlRRARRAMOVStepControl,ASJMPDirection1Clockwise:MOVbuffer,#0JNBbFirst,Clockwise1MOVStepControl,#33HSJMPDirection1Clockwise1:MOVA,StepControlRLARLAMOVStepControl,ADirection1: SJMP STAR2Speed_up: MOV A,SpeedNo CJNEA,#11,Speed_up1 SJMPspeed_up2Speed_up1:INCSpeedNo MOVbuffer+2,SpeedNoSpeed_up2:SJMPSTAR2Speed_Down:MOVA,SpeedNo JZSpeed_Down1 DECSpeedNo MOVbuffer+2,SpeedNoSpeed_Down1:SJMPSTAR2Exec:CLRbFirst ACALLTakeStepCount MOVDPTR,#StepDelayTab MOVA,SpeedNo MOVCA,A+DPTR MOVStepDelay,A CJNEA,#50,$+3 JNCExec1 MOVA,#50Exec1: MOVStartStepDelay,A MOVStartStepDelay1,A SETBTR0 AJMPSTAR2StepDelayTab:DB250,125,83,62,50,42,36,32,28,25,22,21TIMER0:PUSHACC DJNZStartStepDelay,TIMER0_1 MOVA,StartStepDelay1 CJNEA,StepDelay,TIMER0_5 SJMPTIMER0_2TIMER0_5:DECA MOVStartStepDelay1,ATIMER0_2:MOVStartStepDelay,A MOVA,StepControl CPLA MOVP1,A CPLA JBbClockwise,TIMER0_3 RRA SJMPTIMER0_4TIMER0_3:RLATIMER0_4:MOVStepControl,A MOVA,R6 ORLA,R7 JZTIMER0_1 SETBbNeedDisplay DJNZR7,TIMER0_1 DJNZR6,TIMER0_1 CLRTR0TIMER0_1:POPACC RETIStep_SUB_1:MOVR5,#4 MOVR0,#buffer+7Step_SUB_1_1: MOVA,R0 DECR0 JNZStep_SUB_1_2 MOVR0,#9 DECR0 DJNZR5,Step_SUB_1_1Step_SUB_1_2:RETTakeStepCount:MOVA,buffer+4 MOVB,#10 MULAB ADDA,buffer+5 MOVB,#10 MULAB ADDA,buffer+6 MOVR7,A MOVA,B ADDCA,#0 MOVB,#10 MULAB XCHA,R7 MOVB,#10 MULAB XCHA,B ADDA,R7 XCHA,B ADDA,buffer+7 MOVR7,A MOVA,B ADDCA,#0 MOVR6,A CJNER7,#0,TakeStepCount1 RETTakeStepCount1:INCR6 RETINIT8279: MOVA,#34H MOVXDPTR,A CLRA MOVDPTR,#CMD_8279 MOVXDPTR,AINIT8279_1: CALLCLEAR MOVA,#90H MOVXDPTR,A RETCLEAR:MOVA,#0DEH MOVDPTR,#CMD_8279 MOVXDPTR,AWAIT1:MOVXA,DPTR JBACC.7,WAIT1 RETSCAN_KEY:MOVDPTR,#CMD_8279 MOVXA,DPTRREAD_FIFO:ANLA,#7 JZNO_KEYREAD:MOVA,#40H MOVXDPTR,A MOVDPTR,#DATA_8279 MOVXA,DPTR ACALLKEY_NUM SETBCSCAN_KEY1: RETNO_KEY:CLRC SJMPSCAN_KEY1KEY_NUM:ANLA,#3FH RETWRITE_DATA: MOVDPTR,#DATA_8279 MOVXDPTR,A RETLED_TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB080H,90H,88H,83H,0C6H,0A1H,86H,8EH,0FFHRETDisplay8:PUSH07HMOVDPTR,#LED_TABMOVP2,#HIGH(CMD_8279)MOVR1,#LOW(CMD_8279)MOVA,#90H MOVXR1,A MOVR1,#LOW(DATA_8279) MOVR7,#8Display81:MOVA,R0MOVCA,A+DPTRMOVXR1,AINCR0DJNZR7,Display81POP07HRET END五、结语 1、运行结果首次运行时电机不会旋转,在加入子程序时,电机只能做单方向简单旋转,当加入子程序(INIT8279:到LED_TAB:)电机才能做正反转方向的转动,且能加减速。键盘上A表示正反转的切换并且定时,当LED灯显示为0使步进电机会不停地转下去,B表示加速,最高速度为12级,C表示减速,D表示输入的拍数,按下D键电机转动,按任意键电机停止转动。2、评价和改进建议 设计的步进电机基本能实现预期目标,经过调试和修改,但还存在问题,比如按开关时会出现不稳定情况,有时高速启动不起来现象,显示有时也有些不理想。这些原因一般是硬件或是处理程序不完善造成的,还待进一步的完善。六、参考文献 1 李全利.单片机原理及应用技术.高等教育出版社,北京.2009 2 张永枫.单片机应用实训教程.机械工业出版社,北京.20093 林春景.单片机原理与应用.机械工业出版社,北京.20094 杨居义.单片机课程设计指导.清华大学出版社,北京.20095 张小林、崔洗.51单片机常用模块设计查询手册.清华大学出版社,北京.20106 王君.单片机原理及控制技术.机械工业出版社,北京.2010

    注意事项

    本文(步进电机单片机控制系统的设计.doc)为本站会员(土8路)主动上传,三一文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    经营许可证编号:宁ICP备18001539号-1

    三一文库
    收起
    展开