上海工程技术大学课程设计(论文)
步进电机控制系统
目 录
1. 绪论............................................................1 2. 系统原理........................................................1 2.1方案介绍.....................................................1 2.2方案思路.....................................................2 2.3系统框图.....................................................2 2.4步进电机的原理...............................................2 2.5步进电机的拍数...............................................2 2.6步进电机的步距角.............................................2 3. 硬件设计.........................................................3 3.1 单片机的选择.................................................4 3.2 I/O接口芯片的选择..........................................5 3.3 步进电机的选择...............................................5 3.4 四位数码管的选择.............................................6 4. 软件设计.........................................................7 4.1 主程序原理...................................................7 4.2 8255初始化程序设计...........................................8 4.3 步进电机程序设计.............................................8 4.4 显示子程序设计...............................................10 5. 调试与故障分析 ..................................................10 6. 课程总结.........................................................11 7. 参考文献.........................................................12 8. 系统设计结果 ....................................................12 附1:硬件原理图....................................................13 附2:源程序代码....................................................14
上海工程技术大学课程设计(论文)
1.绪论
步进电机控制系统
步进电机是一种把电脉冲信号变成直线位移的控制电机,其位移速度与脉冲频率成正比,位移量与脉冲数成正比。步进电机在结构上也是由定子与转子组成,可以对旋转角度和转动速度进行高精度控制。当定子上绕组通电时,可产生激励磁场,并与转子形成回路。如果转子和定子之间的齿没有对齐,鱿鱼磁力线力图走磁阻最小的线路,从而带动转子旋转一角度,使转子的一对磁极旋转方向与定子的磁场方向一致。当定子绕组矢量磁场旋转实际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。每来一个脉冲电压,转子就旋转一个步距角,称为一步。根据电压脉冲的分配方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一步一步地连续转动,从而使电机旋转。每转一周的步数相同,在不丢步的情况下运行,其步距误差不会长期积累。随着电力电子技术的发展,可以实现细分驱动,即将一个步距角细分成若干小步来驱动。步进电机必须使用专用的步进电机驱动设备才能够正常工作。步进电机系统的运行性能,除与电机自身的性能有关外,在很大程度上还取决于驱动设备性能的优劣。
2. 系统原理
2.1 方案介绍
本设计主要实现以下七项功能:
(1) 设计一个步进电机控制系统,通过单片的P1口输出脉冲信号,不断的发送脉冲信号,使步进电机连续运行。
(2) 利用K0、K1、K2、K3开关,使单片机读取开关状态,跳转至相应的程序中。
(3) 当开关K0置位时,程序执行第一功能,即步进电机正转450度,反转450度,反复循环。
(4) 当开关K1置位时,程序执行第二功能,即步进电机正转180度,反转180度,反复循环。
(5)当开关K2置位时,程序执行第三功能,即步进电机原地踏步,进一退一,反复循环。
上海工程技术大学课程设计(论文)
步进电机控制系统
(6)当开关K3置位时,程序执行第四功能,即步进电机前进两步后,反复循环。
(7)利用8255 I/O接口扩展芯片接四位数码显示管,根据开关的不同状态使数码管显示不同的步进电机工作状态。
2.2 方案思路
因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是三相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。使用P3.0~P3.3口来调整电机的运动状态,通过开关K0、K1、K2、K3按钮,就可以改变定时初值从而改变了电机的运动状态,利用8255扩展接口接LED 数码管,可以显示当前的电机按钮状态,具体结构见2.1框图
2.3 系统总框
图1 步进电机控制系统总体结构框图
2.4. 步进电机的工作原理
步进电机是纯粹的数字控制电动机。它将电脉冲信号转变为角位移或线位移的开环控制元件,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 如下图所示,驱动方式为三相双三拍方式各线圈通电顺序如下表:
表3-1:三相双三拍方式驱动
电机正反转控制和速度控制:
当电机绕组通电时序为AB-BC-CA-AB-BC-CA 时为正转,通电时序为CA-BC-AB-CA-BC-AB 时为反转。步进电机的驱动电路,微电脑向步进电机输入端传送1或0信息,则可实现上述操作。通过不同长度的延时来得到不同频率的步进电机输入脉冲,从而得到多种步进速度,也就是改变电机的转动速度。
2.5. 步进电机的拍数
完成一个磁场周期性变化所需脉冲数或导电状态用n 表示,或指电机转过一个齿距角所需脉冲数,以三相电机为例,有三相双三拍运行方式即AB-BC-CA-AB-BC-CA ,
三相单三拍运行方式A-B-C-A-B-C 。
2.6. 步进电机的步距角
以三相单三拍为例来说明步距角,假如A 相通电,B 、C 两相都不通电,在磁场的作用下,使转子齿和A 相的定子齿对齐。若以此作为初始状态,设与A 相磁极中心对齐的转子齿为0号齿,由于B 相磁极与A 相的磁极相差120°,
3
且120°/9°=139整数,所以,此时转子齿不能与B 相定子齿对齐,只是13号小齿靠近B 相磁极的中心线,与中心线相差3°。如果此时突然变为B 相通电,而A 、C 两相都不通电,则B 相磁极迫使13号转子齿与之对齐,整个转子就转动3°。此时,称电机走了一步。同理,我们按照A-B-C-A 的顺序通电一周,则转子转动9°。 磁阻式步进电机的步距角:
360°Q S =
式中,N=MCC为运行拍数,其中MC 为控制绕组相数,C 为状态系数。
3. 硬件设计
3.1. 单片机的选择
本次设计以CPU 选用89C5l 作为步进电机的控制芯片.89C51的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上.使用方便等优点,而且完全兼容MCS5l 系列单片机的所有功能。AT89C51是一种带4K 字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图2 AT89C51单片机结构示意图
3.2. I/O接口芯片的选择
在adlk 试验箱中I/O接口芯片的选择有8255和8279两种,由于我们之前已学过8255接口芯片,相对比较熟悉所以我们选择了8255作为I/O接口扩展芯片。8255是可编程I/O口扩展芯片。可作为CPU 总线与外围的接口. 对8255输入不同的指令可改变I/O口的工作方式。
图3 8255A I/O接口芯片结构示意图
3.3. 步进电机的选择
在adlk 试验箱中已有四相的步进电机,所以我们将采用四相步进电机。 四相步进电机工作原理:
图4 四相步进电机示意图
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距
上海工程技术大学课程设计(论文)
步进电机控制系统
角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图5 a 、b 、c 所示:
a. 单四拍 b. 双四拍 c八拍
图5 步进电机工作时序波形图
图6 步进电机驱动模块图
3.4. 四位LED 数码管的选择
数码管选用7段共阳4位LED.
图7 四位数码管结构示意图
4. 程序设计 4.1. 主程序原理
进入主程序显示初始化状态,主程序由开关程序、显示程序、步进电机驱动程序三部分组成,主程序首先初始化各变量,步进电机驱动的各引脚均输出高电平,然后调用开关程序,并作判断,有键按下,则调用键盘程序,并显示出状态。
4.2. 8255初始化程序
D8255 EQU 0F22BH ;8255命令口地址 D8255A EQU 0F228H ;8255 PA口地址 D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址 ORG 0000H
LCALL DELAY2 ;延时 MOV DPTR,#D8255
MOV A,#81H ;置8255状态 10000001 MOVX @DPTR,A
此程序主要是对8255I/O接口芯片的初始化,设置8255 PA口、PB 口、PC 口的工作方式,使它们工作在相应的状态下。
4.3. 步进电机程序
这里以步进电机的反转为例: MOV R6,#10H FZ1: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ1 SJMP READ AJMP START1
开始单片机读取开关的状态,判断开关K0、K1、K2 、K3状态是否为1,若K1开关状态为1,则程序跳转到START1开始执行。这里以反转为例说明,R6传送#10H,表示步进电机需要反转步进450度,同时P1口分别延时发送#0DH、#0BH、
上海工程技术大学课程设计(论文)
步进电机控制系统
#07H、#0EH作为步进电机反转四相脉冲。当着四步执行结束后程序继续判断开关状态,若开关状态发生变化,则执行新的程序;若开关状态未发生变化,则程序继续跳转到START1执行。这就实现了步进电机的运行。
图8 八位开关模块示意图
4.4. 显示子程序
四位数码管显示子程序:
MOV DPTR,#D8255A
MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#06H MOVX @DPTR,A
在程序开始时,首先将8255初始化,当程序跳转到步进程序时,对8255的PA 口和PB 口分别送入相应的段码和位码来显示当前开关状态的值,例如,当开关K0打开时,数码管则显示1, ;,当开关K1打开时,数码管则显示2;,当开关K2打开时,数码管则显示3;,当开关K3打开时,数码管则显示4;这就实现了不同开关状态可以对应显示不同的数值了。
5. 调试与故障分析
软件部分
将程序写入汇编程序编辑界面进行调试。调试步骤如下
1、定义各个变量 D8255A EQU 0F228H ;8255 PA口地址
上海工程技术大学课程设计(论文)
步进电机控制系统
D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址。
2、单独调试步进子程序。 3、单独调试开关状态子程序。 4、单独调试显示子程序。 5、综合三个子程序进行调试。
6 .总结
四周的单片机课程设计已经结束了,虽然时间不是很长,但我从中得到的却还是很多,通过这次的单片机课程设计,使我更深入的了解的单片机的重要性,也从中学到了很多,通过做步进电机这个课题,使我全面地的,系统的又重新学习了一遍单片机,同时又了解到不同电机不同的工作状态,对其中的原理更加地的熟悉,对我以后的学习有了极大的帮助,虽然在做课程设计的过程中,我还有很多的东西是不知道的,但通过检阅资料,在老师的细心指导下,再加上自己的不断努力 ,最终是完成了自己的课程设计,在调试的过程中,依然会有不少的问题,在细心总结查阅下还是被我一个一个的解决了,最终得到正确的结果。
因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少,而且学到了很多在书本上所没有学到过的知识。在第一周由于考试原因没有花费太多精力,不过在周末的时候,抓紧时间去查阅和收集资料。去了图书馆借一些参考书,上网找一些相关资,通过不断努力,终于把步进电机的原理,工作状态,控制结构有所掌握,把思路和方案定了下来,然后通过分析与软硬件的设计,在电脑上仿真完成。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟是一次全面的设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在此也要感谢李晓秀老师的指导,在老师耐心指导下很多问题都得到了解决!
7. 参考文献
[1]王迎旭. 单片机原理及及应用. 北京:机械工业出版社
[2]张迎新. 单片微型计算机原理、应用及接口技术. 北京:国防工业出版社 [3]周向红.51系列单片机应用与实践教程. 北京:北京航天航空大学出版社 [4]郭天祥. 新概念51单片机C 语言教程. 北京:电子工业出版社
8. 系统设计结果
图9 开关K0置位时状态结果 图10 开关K1置位时状态结果
图11 开关K2置位时状态结果 图12 开关K3置位时状态结果
附录1(总体电路图)
附录2(源程序代码)
;FOR EAT598
D8255 EQU 0F22BH ;8255命令口地址 D8255A EQU 0F228H ;8255 PA口地址 D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址 ORG 0000H
LCALL DELAY2 ;延时 MOV DPTR,#D8255
MOV A,#81H ; MOVX @DPTR,A AJMP READ
READ: MOV A,0B0H JB ACC.0,START1 JB ACC.1,START2 AJMP READ1 START1: MOV R7,#10H ZZ1: MOV P1,#07H ;8255
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#06H
MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ1 MOV R6,#10H FZ1: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ1
置8255状态 10000010
SJMP READ AJMP START1 START2: MOV R7,#07H ZZ2: MOV P1,#07H
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#5BH MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ2 MOV R6,#07H FZ2: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ2 AJMP READ AJMP START2
READ1: JB ACC.2,START3 JB ACC.3,START4 AJMP READ
START3: MOV R7,#01H ZZ3: MOV P1,#07H
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#4FH MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY
MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ3 MOV R6,#01H FZ3: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ3 AJMP READ AJMP START3 START4: MOV R7,#01H ZZ4: MOV P1,#07H
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#66H MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ4 MOV R6,#02H FZ4: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ4 AJMP READ
上海工程技术大学课程设计(论文)
步进电机控制系统
AJMP START4
DELAY: ;延时子程序 MOV R0,#0FFH delay1: mov r1,#0Ffh djnz r1,$
DJNZ R0,delay1 RET
DELAY2: MOV R0,#0H ;DELAY5: MOV R1,#0H DJNZ R1,$
DJNZ R0,DELAY5 RET END
延时子程序
上海工程技术大学课程设计(论文)
步进电机控制系统
目 录
1. 绪论............................................................1 2. 系统原理........................................................1 2.1方案介绍.....................................................1 2.2方案思路.....................................................2 2.3系统框图.....................................................2 2.4步进电机的原理...............................................2 2.5步进电机的拍数...............................................2 2.6步进电机的步距角.............................................2 3. 硬件设计.........................................................3 3.1 单片机的选择.................................................4 3.2 I/O接口芯片的选择..........................................5 3.3 步进电机的选择...............................................5 3.4 四位数码管的选择.............................................6 4. 软件设计.........................................................7 4.1 主程序原理...................................................7 4.2 8255初始化程序设计...........................................8 4.3 步进电机程序设计.............................................8 4.4 显示子程序设计...............................................10 5. 调试与故障分析 ..................................................10 6. 课程总结.........................................................11 7. 参考文献.........................................................12 8. 系统设计结果 ....................................................12 附1:硬件原理图....................................................13 附2:源程序代码....................................................14
上海工程技术大学课程设计(论文)
1.绪论
步进电机控制系统
步进电机是一种把电脉冲信号变成直线位移的控制电机,其位移速度与脉冲频率成正比,位移量与脉冲数成正比。步进电机在结构上也是由定子与转子组成,可以对旋转角度和转动速度进行高精度控制。当定子上绕组通电时,可产生激励磁场,并与转子形成回路。如果转子和定子之间的齿没有对齐,鱿鱼磁力线力图走磁阻最小的线路,从而带动转子旋转一角度,使转子的一对磁极旋转方向与定子的磁场方向一致。当定子绕组矢量磁场旋转实际上就是以一定的规律控制定子绕组的电流来产生旋转的磁场。每来一个脉冲电压,转子就旋转一个步距角,称为一步。根据电压脉冲的分配方式,步进电机各相绕组的电流轮流切换,在供给连续脉冲时,就能一步一步地连续转动,从而使电机旋转。每转一周的步数相同,在不丢步的情况下运行,其步距误差不会长期积累。随着电力电子技术的发展,可以实现细分驱动,即将一个步距角细分成若干小步来驱动。步进电机必须使用专用的步进电机驱动设备才能够正常工作。步进电机系统的运行性能,除与电机自身的性能有关外,在很大程度上还取决于驱动设备性能的优劣。
2. 系统原理
2.1 方案介绍
本设计主要实现以下七项功能:
(1) 设计一个步进电机控制系统,通过单片的P1口输出脉冲信号,不断的发送脉冲信号,使步进电机连续运行。
(2) 利用K0、K1、K2、K3开关,使单片机读取开关状态,跳转至相应的程序中。
(3) 当开关K0置位时,程序执行第一功能,即步进电机正转450度,反转450度,反复循环。
(4) 当开关K1置位时,程序执行第二功能,即步进电机正转180度,反转180度,反复循环。
(5)当开关K2置位时,程序执行第三功能,即步进电机原地踏步,进一退一,反复循环。
上海工程技术大学课程设计(论文)
步进电机控制系统
(6)当开关K3置位时,程序执行第四功能,即步进电机前进两步后,反复循环。
(7)利用8255 I/O接口扩展芯片接四位数码显示管,根据开关的不同状态使数码管显示不同的步进电机工作状态。
2.2 方案思路
因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。用单片机来产生这个脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是三相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。使用P3.0~P3.3口来调整电机的运动状态,通过开关K0、K1、K2、K3按钮,就可以改变定时初值从而改变了电机的运动状态,利用8255扩展接口接LED 数码管,可以显示当前的电机按钮状态,具体结构见2.1框图
2.3 系统总框
图1 步进电机控制系统总体结构框图
2.4. 步进电机的工作原理
步进电机是纯粹的数字控制电动机。它将电脉冲信号转变为角位移或线位移的开环控制元件,在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 如下图所示,驱动方式为三相双三拍方式各线圈通电顺序如下表:
表3-1:三相双三拍方式驱动
电机正反转控制和速度控制:
当电机绕组通电时序为AB-BC-CA-AB-BC-CA 时为正转,通电时序为CA-BC-AB-CA-BC-AB 时为反转。步进电机的驱动电路,微电脑向步进电机输入端传送1或0信息,则可实现上述操作。通过不同长度的延时来得到不同频率的步进电机输入脉冲,从而得到多种步进速度,也就是改变电机的转动速度。
2.5. 步进电机的拍数
完成一个磁场周期性变化所需脉冲数或导电状态用n 表示,或指电机转过一个齿距角所需脉冲数,以三相电机为例,有三相双三拍运行方式即AB-BC-CA-AB-BC-CA ,
三相单三拍运行方式A-B-C-A-B-C 。
2.6. 步进电机的步距角
以三相单三拍为例来说明步距角,假如A 相通电,B 、C 两相都不通电,在磁场的作用下,使转子齿和A 相的定子齿对齐。若以此作为初始状态,设与A 相磁极中心对齐的转子齿为0号齿,由于B 相磁极与A 相的磁极相差120°,
3
且120°/9°=139整数,所以,此时转子齿不能与B 相定子齿对齐,只是13号小齿靠近B 相磁极的中心线,与中心线相差3°。如果此时突然变为B 相通电,而A 、C 两相都不通电,则B 相磁极迫使13号转子齿与之对齐,整个转子就转动3°。此时,称电机走了一步。同理,我们按照A-B-C-A 的顺序通电一周,则转子转动9°。 磁阻式步进电机的步距角:
360°Q S =
式中,N=MCC为运行拍数,其中MC 为控制绕组相数,C 为状态系数。
3. 硬件设计
3.1. 单片机的选择
本次设计以CPU 选用89C5l 作为步进电机的控制芯片.89C51的结构简单并可以在编程器上实现闪烁式的电擦写达几万次以上.使用方便等优点,而且完全兼容MCS5l 系列单片机的所有功能。AT89C51是一种带4K 字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
图2 AT89C51单片机结构示意图
3.2. I/O接口芯片的选择
在adlk 试验箱中I/O接口芯片的选择有8255和8279两种,由于我们之前已学过8255接口芯片,相对比较熟悉所以我们选择了8255作为I/O接口扩展芯片。8255是可编程I/O口扩展芯片。可作为CPU 总线与外围的接口. 对8255输入不同的指令可改变I/O口的工作方式。
图3 8255A I/O接口芯片结构示意图
3.3. 步进电机的选择
在adlk 试验箱中已有四相的步进电机,所以我们将采用四相步进电机。 四相步进电机工作原理:
图4 四相步进电机示意图
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距
上海工程技术大学课程设计(论文)
步进电机控制系统
角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图5 a 、b 、c 所示:
a. 单四拍 b. 双四拍 c八拍
图5 步进电机工作时序波形图
图6 步进电机驱动模块图
3.4. 四位LED 数码管的选择
数码管选用7段共阳4位LED.
图7 四位数码管结构示意图
4. 程序设计 4.1. 主程序原理
进入主程序显示初始化状态,主程序由开关程序、显示程序、步进电机驱动程序三部分组成,主程序首先初始化各变量,步进电机驱动的各引脚均输出高电平,然后调用开关程序,并作判断,有键按下,则调用键盘程序,并显示出状态。
4.2. 8255初始化程序
D8255 EQU 0F22BH ;8255命令口地址 D8255A EQU 0F228H ;8255 PA口地址 D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址 ORG 0000H
LCALL DELAY2 ;延时 MOV DPTR,#D8255
MOV A,#81H ;置8255状态 10000001 MOVX @DPTR,A
此程序主要是对8255I/O接口芯片的初始化,设置8255 PA口、PB 口、PC 口的工作方式,使它们工作在相应的状态下。
4.3. 步进电机程序
这里以步进电机的反转为例: MOV R6,#10H FZ1: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ1 SJMP READ AJMP START1
开始单片机读取开关的状态,判断开关K0、K1、K2 、K3状态是否为1,若K1开关状态为1,则程序跳转到START1开始执行。这里以反转为例说明,R6传送#10H,表示步进电机需要反转步进450度,同时P1口分别延时发送#0DH、#0BH、
上海工程技术大学课程设计(论文)
步进电机控制系统
#07H、#0EH作为步进电机反转四相脉冲。当着四步执行结束后程序继续判断开关状态,若开关状态发生变化,则执行新的程序;若开关状态未发生变化,则程序继续跳转到START1执行。这就实现了步进电机的运行。
图8 八位开关模块示意图
4.4. 显示子程序
四位数码管显示子程序:
MOV DPTR,#D8255A
MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#06H MOVX @DPTR,A
在程序开始时,首先将8255初始化,当程序跳转到步进程序时,对8255的PA 口和PB 口分别送入相应的段码和位码来显示当前开关状态的值,例如,当开关K0打开时,数码管则显示1, ;,当开关K1打开时,数码管则显示2;,当开关K2打开时,数码管则显示3;,当开关K3打开时,数码管则显示4;这就实现了不同开关状态可以对应显示不同的数值了。
5. 调试与故障分析
软件部分
将程序写入汇编程序编辑界面进行调试。调试步骤如下
1、定义各个变量 D8255A EQU 0F228H ;8255 PA口地址
上海工程技术大学课程设计(论文)
步进电机控制系统
D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址。
2、单独调试步进子程序。 3、单独调试开关状态子程序。 4、单独调试显示子程序。 5、综合三个子程序进行调试。
6 .总结
四周的单片机课程设计已经结束了,虽然时间不是很长,但我从中得到的却还是很多,通过这次的单片机课程设计,使我更深入的了解的单片机的重要性,也从中学到了很多,通过做步进电机这个课题,使我全面地的,系统的又重新学习了一遍单片机,同时又了解到不同电机不同的工作状态,对其中的原理更加地的熟悉,对我以后的学习有了极大的帮助,虽然在做课程设计的过程中,我还有很多的东西是不知道的,但通过检阅资料,在老师的细心指导下,再加上自己的不断努力 ,最终是完成了自己的课程设计,在调试的过程中,依然会有不少的问题,在细心总结查阅下还是被我一个一个的解决了,最终得到正确的结果。
因为我们所学的都是单片机方面的理论知识,应用到实践中去还比较少,而且学到了很多在书本上所没有学到过的知识。在第一周由于考试原因没有花费太多精力,不过在周末的时候,抓紧时间去查阅和收集资料。去了图书馆借一些参考书,上网找一些相关资,通过不断努力,终于把步进电机的原理,工作状态,控制结构有所掌握,把思路和方案定了下来,然后通过分析与软硬件的设计,在电脑上仿真完成。
通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟是一次全面的设计,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。在此也要感谢李晓秀老师的指导,在老师耐心指导下很多问题都得到了解决!
7. 参考文献
[1]王迎旭. 单片机原理及及应用. 北京:机械工业出版社
[2]张迎新. 单片微型计算机原理、应用及接口技术. 北京:国防工业出版社 [3]周向红.51系列单片机应用与实践教程. 北京:北京航天航空大学出版社 [4]郭天祥. 新概念51单片机C 语言教程. 北京:电子工业出版社
8. 系统设计结果
图9 开关K0置位时状态结果 图10 开关K1置位时状态结果
图11 开关K2置位时状态结果 图12 开关K3置位时状态结果
附录1(总体电路图)
附录2(源程序代码)
;FOR EAT598
D8255 EQU 0F22BH ;8255命令口地址 D8255A EQU 0F228H ;8255 PA口地址 D8255B EQU 0F229H ;8255 PB口地址 D8255C EQU 0F22AH ;8255 PC口地址 ORG 0000H
LCALL DELAY2 ;延时 MOV DPTR,#D8255
MOV A,#81H ; MOVX @DPTR,A AJMP READ
READ: MOV A,0B0H JB ACC.0,START1 JB ACC.1,START2 AJMP READ1 START1: MOV R7,#10H ZZ1: MOV P1,#07H ;8255
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#06H
MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ1 MOV R6,#10H FZ1: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ1
置8255状态 10000010
SJMP READ AJMP START1 START2: MOV R7,#07H ZZ2: MOV P1,#07H
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#5BH MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ2 MOV R6,#07H FZ2: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ2 AJMP READ AJMP START2
READ1: JB ACC.2,START3 JB ACC.3,START4 AJMP READ
START3: MOV R7,#01H ZZ3: MOV P1,#07H
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#4FH MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY
MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ3 MOV R6,#01H FZ3: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ3 AJMP READ AJMP START3 START4: MOV R7,#01H ZZ4: MOV P1,#07H
MOV DPTR,#D8255A MOV A,#0FH
MOVX @DPTR,A MOV DPTR,#D8255B MOV A,#66H MOVX @DPTR,A ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#0DH ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R7,ZZ4 MOV R6,#02H FZ4: MOV P1,#0DH ACALL DELAY MOV P1,#0BH ACALL DELAY MOV P1,#07H ACALL DELAY MOV P1,#0EH ACALL DELAY DJNZ R6,FZ4 AJMP READ
上海工程技术大学课程设计(论文)
步进电机控制系统
AJMP START4
DELAY: ;延时子程序 MOV R0,#0FFH delay1: mov r1,#0Ffh djnz r1,$
DJNZ R0,delay1 RET
DELAY2: MOV R0,#0H ;DELAY5: MOV R1,#0H DJNZ R1,$
DJNZ R0,DELAY5 RET END
延时子程序