单片机原理及应用第10章步进电机及其控制.ppt

单片机原理及应用第10章步进电机及其控制.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
表10-2 三相六拍控制模式的控制字   对应的控制程序设计如下:     STEPPROC:MOV R0,#STEPNUM ; 执行步控制,R0中对应步数   MOV R1,#00H ; ?R1初始化     NEXTSTEP:JB F0,ROLLBACK ; 正反转判断   MOV DPTR,#TABLE ; 正转控制字地址   SJMP GO_ON     ROLLBACK:MOV DPTR,#TABLE1 ; 反转控制字地址     GO_ON:  MOV A,R1 ; ?R1用于设定步序, 总是在0~2之间变化   MOVC A,@A+DPTR ; 取出对应控制字   MOV P1,A ; 输出控制字   ACALL DELAY ; 延时   INC R1 ; 修改进入下一个步序      CJNE R1,#03H,NEXT; 如果已经全部结束, 则重新设置 MOV R1,#00H       NEXT: DJNZ R0,NEXTSTEP; 当前是否已经全部走完设定步数 RET     DELAY: ; 请读者自己完成 RET     TABLE:  DB 0FEH,0FCH,0FDH,0F9H,0FBH,0FAH ; 正转控制字     TABLE1: DB 0FEH,0FAH,0FBH,0F9H,0FDH,0FCH ; 反转控制字   进一步解释:   ? 这里没有设计延时程序,请读者自己完成。可以参考11.3.1节给出的例程,那里对延时程序作了详细的使用和计算说明。   ? ?R1用于步序的控制,而R0用于步数的控制。   ? 在此设置F0作为正反转标志位,也可以单独设置。   ? 对于其它节拍和相数的步进电机,也可按照这种方法进行分析。   2. 通过硬件实现脉冲分配   所谓硬件法,实际上就是使用脉冲分配器来进行通电换相控制。脉冲分配器有很多种,如CH224、CH250、PMM8713等。这里介绍8713集成电路芯片。   8713属于单极性控制,用于控制三相和四相步进电机。对三相步进电机的工作方式有单三拍、双三拍、六拍;对四相步进电机的工作方式有单四拍、双四拍、八拍。   8713可以选择单时钟输入或双时钟输入,具有正反转控制、初始化复位、工作方式和输入脉冲状态检测等功能;所有输入端内部都设有施密特整形电路,以提高抗干扰能力。8713使用4~18 V直流电源,输出电流为20 mA。   8713的引脚分布如图10-13所示。各引脚功能如表10-3所示。 图10-13 8713引脚图 表10-3 8713引脚功能 续表   8713与8031单片机的接口电路如图10-14所示。本例选用单时钟输入方式,8713的3脚为步进脉冲输入端,4脚为转向控制端,分别由P1.0和P1.1控制,工作方式为三相六拍方式。 图10-14 8713脉冲分配器与8031单片机接口   对应的控制程序段如下: ORG 0000H LJMP START ORG 000BH ; ?T0中断 LJMP T0_ISR ; 转到T0中断服务 ORG 0100H     STEPNUM EQU 100 ; 定义步数     DATA1 EQU 55H ; 设置T1定时初始值     DATA2 EQU 55H ; 这个值要根据实际速度计算, 下一小节会给出解释     START: MOV SP,#60H MOV TMOD,#01H ; ?T0定时器方式1, 16位方式 MOV TH0,#DATA1 ; 赋初始值 MOV TL0,#DATA2 SETB ET0 ; 开T0中断 SETB EA ; 开中断 CLR P1.1 ; 正反转控制位, 0—反转,1—正转 MOV A,#STEPNUM ; 两次中断产生一拍脉冲            RL A ; 所以,步数乘以2 MOV R0,A ; ?R0作为计数器 SETB TR0 ; 开始输出步进脉冲 SJMP $     T0_ISR: CLR EA CLR TR0 MOV TH0,#DATA1 MOV TL0,#DATA2 CPL P1.0 ; 取反步进脉冲,50%的占空比 DJNZ R0,CONTINUE ; 如果已经全部走完,则不再置位TR0            SJMP RETU ;      CONTINUE: SETB TR0      RETU: SETB EA

文档评论(0)

autohhh + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档