课 程 设 计 (报 告)
课 程 设 计 题 目: 步进电机控制器
指 导 教 师: 黄 晶
日 期: 2011.12.26~2012.01.06
步进电机控制器
(一)设计内容:用 80C51 单片机设计一个步进电机控制器
(1) 用 80C51 控制一个四相步进电机
(2) 可控制步进电机的启动与停止、正转与反转
(3) 10 档速度调节
(4) 点动控制
(5) 可显示电机运行参数
控制主要有:电机的开关;电机转向装换;点动开关;电机转速级别加减按钮; 正反向点动按钮。控制方式有按键控制和开关控制两种。前三项选择开关控制,后两 项选择按键控制。
由于设计只需要 3 个开关 4 个按键,不需要采用复杂编码,考虑硬件条件、线路 连接和经济性等方面,选择独立按键的方式。
(二)步进电机控制设计方案由于课程设计所用的实验箱上有步进电机单元而且,电机与驱动芯片 ULM2003A
已近连接好,所以只需将 AT89C51 的 I/O 口与实验箱 ULM2003A 芯片上预留的 4 个
接口对应相连。
AT89C51 高性能 8 位单片机,内部集成 CPU、存储器、寄存器、I/O 接口,从而 构成较为完整的计算机,价格便宜。本次课程设计是在仿真环境下进行,我们课程设 计实验室所使用的仿真器就是用 AT89C51,没有太过考虑单片机选择的问题,但就设 计本身来讲,从物美价廉的角度考虑。
方案一:采用 LED 数码管。LED 数码管是显示采用动态扫描的方式,利用人烟 的视觉暂留特性,由于扫描周期很短,使人感觉不到数码管闪动,看到每只数码管都 常亮。
方案二:采用 LCD1602 液晶显示器。LCD1602 具有功率小,效果明显,程序设 计简单,且它最多能显示 2×16 个字符,可以轻松满足设计要求。
虽然方案一稍微麻烦一点,但是课程设计之前我们有两次实验都是围绕动态显示
来进行的,所以本次课程设计依然选择我熟悉的 LED 显示。
(五)程序编写语言的选择软件部分的选择主要是指编程语言的选择,编译调试工具根据设计平台选择伟福
软件。编程语言主要有以下两种方案。
方案一:采用 C 语言编程。C 语言是一种结构化的高级语言,编程灵活,可移植 性强, 但占用资源多,执行效率低。
方案二:采用汇编语言进行编程,。汇编语言是一种用文字助记符来表示机器指 令的符号语言,是最接近机器码的一种语言,占用资源少,程序执行效率高,但不易 移植。
本学期我们所学的单片机课程全是用汇编语言来讲述的,所以本次实验采用汇编 语言来进行程序编写。
(一)总体设计方框图总体设计方框图如图 1 所示
状态显示电路
复位电路
89C51
单片机
键盘控制电路
电源及时钟电路
ULN280
3 启动 电路
步进电 机
图 1 总体设计方框图
1)步进电机的换相顺序的控制 通电换相这一过程称为脉冲分配。例如,三相步进电机在单三拍的工作方式下,
其各相通电顺序为 A→B→C→A,通电控制脉冲必须严格按照这一顺序分别控制 A, B, C 相的通断。三相双三拍的通电顺序为 AB→BC→CA→AB,三相六拍的通电顺序为 A→ AB→B→BC→C→CA→A 。
2)步进电机的转向控制 如果给定工作方式正序换相通电,步进电机正转。若步进电机的励磁方式为三
相六拍,即 A→AB→B→BC→C→CA→A。如果按反序通电换相,即 A→AC→C→CB→B
→BA→A,则电机就反转。其他方式情况类似。
3)步进电机的速度控制 如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
两个脉冲的间隔越短,步进电机就转得越快。调整送给步进电机的脉冲频率,就可以 对步进电机进行调试。
4)步进电机的起停控制 步进电机由于其电气特性,运转时会有步进感。为了使电机转动平滑,减小振
动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机 的步进角,跳过电机运行的平稳性。在步进电机停转时,为了防止因惯性而使电机轴 产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步 进电机转轴不能自由转动。
5)步进电机的加减速控制 在步进电机控制系统中,通过实验发现,如果信号变化太快,步进电机由于惯
性跟不上电信号的变化,这时就会产生堵转和失步现象。所有步进电机在启动时,必 须有加速过程,在停止时波形有减速过程。理想的加速曲线一般为指数曲线,步进电 机整个降速过程频率变化规律是整个加速过程频率变化规律的逆过程。选定的曲线比 较符合步进电机升降过程的运行规律,能充分利用步进电机的有效转矩,快速响应性 好,缩短了升降速的时间,并可防止失步和过冲现象。在一个实际的控制系统中,要 根据负载的情况来选择步进电机。步进电机能响应而不失步的最高步进频率称为“启 动频率”,于此类似“停止频率”是指系统控制信号突然关断,步进电机不冲过目标 位置的最高步进频率。电机的启动频率、停止频率和输出转矩都要和负载的转动惯量 相适应,有了这些数据,才能有效地对电机进行加减速控制。加速过程有突然施加的 脉冲启动频率 f0。步进电机的最高启动频率(突跳频率)一般为 0. 1KHz 到 3~4KHz,而 最高运行频率则可以达到 N* 102KHz,以超过最高启动频率的频率直接启动,会产生堵 转和失步的现象。
6)步进电机的静态指标及术语
相数:产生不同队 N、S 磁场的激磁线圈对数,常用 m 表示。 拍数:完成一个磁场周期性变化所需脉冲用 n 表示,或指电机转过一个齿距角所需
脉冲数,以四相电机为例,有四相四拍运行方式即 AB→BC→CD→DA→AB,四相八拍运 行方式即 A→AB→B→BC→C→CD→D→DA→A。
步距角:对应一个脉冲信号,电机转子转过的角位移用θ 表示。θ =360 度(转子齿 角运行拍数),以常规二、四相,转子齿角为 50 齿角电机为例。四相运行时步距角为
θ =360 度/(50*4) =1.8 度,八拍运行时步距角为θ =360 度/(50*8)=0.9 度。
定位转矩:电机在不通电的状态下,电机转子自身的锁定力矩(由磁场齿形的谐波 以及机械误差造成的)。
静转矩:电机在额定静态作业下,电机不做旋转运动时,电机转轴的锁定力矩。此
力矩是衡量电机体积的标准,与驱动电压及驱动电源等无关。虽然静态转矩与电磁激 磁匝数成正比,与定子和转子间的气隙有关。但过分采用减小气隙,增加励磁匝数来 提高静转矩是不可取的,这样会造成电机的发热及机械噪音。
本次设计采用伟福仿真器模仿 AT89C51 环境。由上面介绍可知,AT89C51 为一款 典型的 80C51 单片机,具有 8 位数据总线、16 位地址总线、128 字节片内 RAM 和 4K 的片内 ROM 以及 4 个并行 I/O 口等单元。其连接电路如图 2 所示。
晶振选择为 11.0592MHz,以产生精确的时钟频率。本次课程设计中 P0 作为 LED 的输出口,P1.0-P1.3 口作为电机控制口,P2.2-2.7 口用于 6 只 LCD 的选通控制,P3 口 用于按键可开关控制。
D
单片
X1
2 2 p F
U1
P 1 0 1 P 1 1 P 1 2 P 1 3 P 1 4 P 1 5 P 1 6 P 1 7P 3 3 P 3 2
V C C
S1 6 C?
F
2 2 p F
1 1 .0 5 9 2
X2
P 3 5 E T
P 3 4
V C C
R?
C
R ES E
10 P 3 1
RD WR
11 P 3 2
30 A LE
29
图 2 AT89C51 接线图
本次课程设计采用单片机实验箱上给出的 LED 显示区显示步进电机的运行参数,实验 箱动态 LED 显示区原理图如图 3。AT89C51 的 P0.0-P0.7 口分别与 a,b,c,d,e,f,g,dp 相连, P2.2-P2.7 分别与 COM1-COM6 相连实验箱上连接图如图 4。
B
R1 0
COM1
a 7
b 6
c 4
d 2
e 1
f 9
g 10
dp 5
A
图 3 实验箱上动态LED显示区原理图
1 2 3
图 4 AT89C51 与 LED连接图
通过 P1 口控制电机具体连接线路如图 5:
图 5 电机与P1口连接图
控制电路连接图如图 6:
图 6 控制电路连接图
实验箱上达连接图如图 7:
图 7 总体电路图
工作都是为了完成改变速度这一功能。下面分析主程序与定时器中断程序及外 部中断程序。
主程序中要完成的工作主要有系统初始值的设置、系统状态的显示以及各 种开关状态的检测判断等。其中系统初始状态的设置内容较多,该系统中, 需要初始化定时器、外部中断;对 P1 口送初值以决定脉冲分配方式,速度值 存储区送初值决定步进电机的启动速度,对方向值存储区送初值决定步进电 机旋转方向等内容。若初始化 P1=11H、速度和方向初始值均设为 0,就意味 着步进电机按四相单四拍运行,系统上电后在没有操作的情况下,步进电机 不旋转,方向值显示“0”,速度值显示“0”,主程序流程图如图 8 所示。
开 始
初 始 化
显示
启动开关为 0?
停止计时器
速度值为 0?
停止计时器
启动计时器
延时
图8主程序流程图
步进电机的转动主要是给电机各绕组按一定的时间间隔连续不断地按规律通入 电流,步进电机才会旋转,时间间隔越短,速度就越快。在这个系统中,这个时间间 隔是用定时器重复中断一定次数产生的,即调节时间间隔就是调节定时器 的中断次 数,因而在定时器中断程序中,要做的工作主要是判断电机的运行方向、发下一个脉 冲,以及保存当前的各种状态。程序流程图如图9所示。
T0 中断入口
保护现场
中断次数-1=0?
读方向指示
发速度脉冲
重送相关状态
恢复形场
中断返回
图9 定时中断程序流程
外部中断所要完成的工作是根据按键次数,改变速度值存储区中的数据
(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,也 就是改变了电机的转速。速度增加按钮S2为INT0中断,其程序流程为原数据, 当值等于7时,不改变原数值返回,小于7时,数据加1后返回;速度减少按钮 S3,当原数据不为0,减1保存数据,原数据为0则保持不变。程序流程图如图 10所示。
外部中断入口
保护现场
延时去抖
速度=上或限值?
速度值±1
按钮是否弹起?
恢复现场
中断返回
图10外部中断程序流程图
;/*****程序开始,初始化*****/
START: SPEED EQU 40H ;SPEED 为转速等级标志,共 10 级,即 1~10 COUNT EQU 41H ;COUNT 中断次数标志
FX EQU 11H ;FX 为方向标志 STAOST EQU P3.4 ;启动/停止位 FAXIA EQU P3.5 ;方向个改变位
QIEHUAN EQU P3.6 ;用于点动和自动的切换
ZUOD EQU P3.0 YOUD EQU P3.1 MOV SPEED,#00H
MOV 20H,#0AAH ;用于转速等级显示存储器
MOV 21H,#0AH ;用于方向标志位显示存储器 MOV 22H,#0AH ;用于旋转速度显示存储器 MOV 23H,#0AH
MOV 24H,#0AH
MOV R1,#33H
MOV R2,#11H
MOV FX,#00H
MOV TMOD,#01H ;工作于定时、软件置位启动!模式 1(16 位计时器)
MOV TH0,#0F8H
MOV TL0,#0F0H
MOV COUNT,#01H
SETB ET0 ;定时/计数器允许中断
SETB IT0 ;外部中断为电平触发方式,低电平有效 SETB IT1
SETB EX0 ;外部允许中断
SETB EX1
MOV SP,#60H ;重设堆栈指针
;/*****主程序*****/
MAIN1: LCALL DISPLAY MAIN2: JB STAOST,DG
CLR TR0 ;停止定时
LJMP START
DG: JB QIEHUAN,FUCK CLR EA
LCALL DIANDONG;可能还要延时
LCALL DISPLAY2 LJMP MAIN2
FUCK: SETB EA ;开总中断
LCALL QIDONG LJMP MAIN1
;/*****显示子程序 1*****/
DISPLAY:
MOV A,20H
ANL A,#0FH
MOV 2FH,A ;转换等级低位,存入 2FH MOV A,20H
ANL A,#0F0H
SWAP A
MOV 2EH,A ;转换等级高位,存入 2EH MOV A,21H
ANL A,#0FH
MOV 2DH,A
;MOV A,22H
;ANL A,#0FH
;MOV 2CH,A ;转换速度低位,存入 2CH
;MOV A,20H
;ANL A,#0F0H
;SWAP A
;MOV 2BH,A ;转换速度高位,存入 2BH
;/*****数码管动态扫描显示*****/
;/*****显示子程序 2*****/
DISPLAY2:MOV A,#0A1H
MOV P0,A
CLR P2.7 LCALL DELAY1 SETB P2.7
MOV A,#092H
MOV P0,A
CLR P2.6 LCALL DELAY1 SETB P2.6
MOV A,#0BFH
MOV P0,A
CLR P2.5 LCALL DELAY1 SETB P2.5
MOV A,#0F9H
MOV P0,A
CLR P2.4 LCALL DELAY1 SETB P2.4
MOV A,#080H
MOV P0,A
CLR P2.3 LCALL DELAY1 SETB P2.3
MOV A,#0C6H
MOV P0,A
CLR P2.2 LCALL DELAY1 SETB P2.2
RET
;/*****延时子程序 1*****/ DELAY1: MOV R5,#0F0H
DJNZ R5,$ RET
;/*****启动/停止电机服务子程序*****/
QIDONG:
;/*****定时器中断服务程序*****/ DTQ0: PUSH ACC
PUSH DPH
PUSH DPL
MOV TH0,#0F8H
MOV TL0,#0F0H DJNZ COUNT,EXIT MOV A,SPEED
CJNE A,#00H,AS
LJMP EXIT
AS: JB FAXIA,NIZHUAN;查询方向标志,P3.5 接换向开关 K2 MOV FX,#33H
NIZHUAN:
MOV A,FX
CJNE A,#33H,FZ;若 A 不等于 33,即反转,跳到 FZ MOV A,R1 ;R1 记录上一次电机脉冲状态 MOV P1,A
RL A ;循环右一位
MOV R1,A
MOV P1,A
LJMP RE
FZ: MOV A,R1
MOV P1,A
RR A ;循环左移一位
MOV P1,A
MOV R1,A
RE: MOV A,SPEED
MOV DPTR,#TAB MOVC A,@A+DPTR
MOV COUNT,A ;把转速级别赋给 COUNT
JB FAXIA ,FFX ;P3.5 接换向开关 K2, 即换向位,若 P3.5=1,则跳到 FFX MOV FX,#33H
LJMP EXIT
FFX: MOV FX,#0FEH;只要 FX 不等于 11H,就可以通过循环左移或右移进行换 向
EXIT: POP DPL
POP DPH
POP ACC RETI
;/*****点动子程序*****/
DIANDONG:
PUSH PSW
PUSH ACC
JNB ZUOD,JING
JB YOUD,CHUKOU
CHUKOU:
POP ACC
POP PSW RET
;/*****加速中断程序*****/
UP: PUSH ACC
LCALL DELAY2;延时防抖动
JB P3.2,UPEX;P3.2 为外部中断 0 位,接增速开关 S2,低电平有效,若 P3.2=1,则退出
MOV A,SPEED
CJNE A,#10,SZ ;最大等级为 10,若 A 不等于 10,则转移到 SZ MOV SPEED,A
LJMP UPEX ;若 A=10,则退出
SZ: INC SPEED ;SPEED= SPEED+1 UPEX: POP ACC
HERE2: LCALL DISPLAY
JNB P3.2,HERE2 ;本条指令为防止开关 S2 按下去后弹不起,导致一直产
生中断
RETI
;/*****减速中断程序*****/ DOWN: PUSH ACC
LCALL DELAY2
JB P3.3,DEX ;P3.3 为外部中断 1 位,接减速开关 S3,低电平有效,若 P3.3=1,则退出
MOV A,SPEED
CJNE A,#0,SJ
LJMP DEX
SJ: DEC SPEED ;SPEED= SPEED-1 DEX: POP ACC
HERE3: LCALL DISPLAY
JNB P3.3,HERE3
RETI
;/*****延时子程序 2*****/ DELAY2: MOV R6,#10 DEL1: MOV R7,#250 HERE1: DJNZ R7, HERE1
DJNZ R6,DEL1 RET
;/*****延时子程序 3*****/
DELAY3: MOV R3,#10
TAB: DB 0,60,40,28,20,15,11,8,5,3,2
LED: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,0BFH,89H TSUDU1: DB 0,0,0,0,0,1,1,1,3,5,7
TSUDU2: DB 0,2,3,5,7,0,3,9,0,1,6
TSUDU3: DB 0,6,9,5,7,2,9,2,6,0,5
END
实验箱实物连接图如图 11
图 11实物连接图
连接好 pc 机、仿真器与实验箱线路,运行程序波动电机开关为关显示如图 12 所 示。
图 12 电机关闭显示
波动电机开关到开的位置,方向转换到正向旋转的位置,此时的转速级别为 0,转 速为 0。显示如图 12 所示。
图 12 电机打开显示
保持电机转向不变,按转速级别增加按钮显示图如图 13
图 13电机级别转速显示
当拨动转向开关位置到反向显示如图 14
图 14反正旋转显示
当拨动点动开关到开位置显示如图 15
图 15点动显示
实验结论:在实验调试过程中遇到了各式各样的错误,比如说:转速级别与转速 大小不能一一对应;当转速级别调为 0 是电机任然会动;无法控制电机转向等问题。 最终在误差允许范围内,步进电机的转动控制及转动都能够按照设计要求进行。LED 显示区能够正确显示电机的转向,转速级别,转速大小。
七、参考资料
【1】 张家生. 电机原理与拖动基础【M】. 北京:北京邮电大学出版社,2006.
【2】 单片机原理接口技术(第二版)【M】.北京:高等教育出版社,2008
【3】 余辉晴. 模拟电子技术基础【M】. 北京:电子工业出版社,2006
【4】 单片机原理、应用与PROTEUS仿真【M】. 北京:电子工业出版社,2006
【5】 百度文库一些相关资料
步进电机的驱动系统的设计课程设计说明书系部班级学生姓名学号指导教师时间日到日1课程设计任务书题目步进电机驱动系统的设计系部专业班级…
湖南工程学院课程设计课程名称单片机原理与应用课题名称步进电机的控制专业测控技术与仪器班级0801学号20xx0120xx24姓名徐…
成绩汇编及接口技术课程设计题目步进电机控制系统班级100602学号100602122姓名张春东时间20xx12251目录1设计任务…
钦州学院数字电子技术课程设计报告步进电机脉冲分配电路的设计院系物理与材料科学学院专业自动化过程控制学生班级20xx级3班姓名黄旭光…
目录摘要1引言2系统设计21系统的基本方案22各模块的方案的选择和功能简述23最终总体方案24系统各模块的最终方案图25步进电机的…
湖南工程学院课程设计课程名称单片机原理与应用课题名称步进电机的控制专业测控技术与仪器班级0801学号20xx0120xx24姓名徐…
目录摘要1引言2系统设计21系统的基本方案22各模块的方案的选择和功能简述23最终总体方案24系统各模块的最终方案图25步进电机的…
江汉大学数字电子技术课程设计报告学院班级B110720xx自动化一学号11220xx01138学生姓名刘红指导教师涂昌培设计时间2…
成绩汇编及接口技术课程设计题目步进电机控制系统班级100602学号100602122姓名张春东时间20xx12251目录1设计任务…
专业课程设计题目一步进电机控制系统设计院系动化学院专业班级智能0801班小组成员指导教师王曙光日期20xx052320xx0603…
华北科技学院计算机系综合性实验实验报告课程名称微机原理及应用实验学期20xx至20xx学年第二学期学生所在系部电子信息工程学院年级…