您的当前位置:首页单片机课程设计 步进电机控制器设计

单片机课程设计 步进电机控制器设计

2023-04-22 来源:爱问旅游网
摘要

步进电机是一种以脉冲信号控制转速的电机,它是将电脉冲信号转变为角位移或线位移的开环控制元件,很适合使用单片机来进行控制。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变得非常的简单。

步进电机分为反应式、永磁式、混合式三类。其中混合式步进电机综合了反应式和永磁式的优点,它的动态性能好,控制精度高,是目前应用最为广泛的一种。

1

目录

一 设计目的 ................................................................................................................................... 3 二 硬件电路设计及描述 ............................................................................................................... 3

2.1 步进电机的基本特点 ..................................................................................................... 3 2.2 步进电机的工作原理 ..................................................................................................... 3

2.2.1 步进电机的启停控制 ......................................................................................... 3 2.2.2 步进电机的转向控制 ....................................................................................... 4 2.2.3 步进电机的速度控制 ....................................................................................... 4 2.2.4 步进电机的换向控制 ..................................................................................... 4 2.3 控制系统的硬件设计 ................................................................................................... 4

2.3.1 步进电机控制工程方案 ..................................................................................... 4 2.3.2 电路设计 ........................................................................................................... 5

3 系统软件设计 ........................................................................................................................... 5

3.1总体设计 ............................................................................................................................ 5

3.1.1步进电机的工作方式 ............................................................................................ 5 3.2 程序流程图 ................................................................................................................... 7 3.3 程序清单 ....................................................................................................................... 8 4 参考文献 ............................................................................................................................... 19 5 结束语..................................................................................................................................... 20

2

一 设计目的

利用单片机来控制步进电机的转速、正转和反转,通过改变相序通电来实现正转和反转之间的转变,并且可通过显示步数的改变进一步调节步进电机的转速。

步进电机的运行控制涉及位置控制和加、减速控制,其中,位置控制是最主要的控制,本设计要求在位置上实现准确控制(要求转动步数有数字键直接输入)。

使步进电机具有运行步设置,在线正、反转以及启停控制,运行速度在线可调。

二 硬件电路设计及描述

2.1 步进电机的基本特点

步进电机之所以得到广泛应用的原因是由于步进电机有以下特性:

(1)步进电机是在脉冲作用下工作,步进电机的速度与加在绕组上的脉冲频率成正比。

(2)步进马达具有瞬间启动与急速停止的特性。

(3)改变线圈励磁的顺序,就能改变马达的转动方向。

2.2 步进电机的工作原理

步进电机由定子和转子两部分组成,下面以两相反应式步进电机为例说明步进电机工作原理。

两相步进电机的定子上有两对磁极,按N、S、N、S分配,每两个相对的磁极组成一队。每对磁极都缠有同一个绕组,形成一相。转子是由软磁材料制成的,其外表面均匀分布着小齿,他们大小相同,间距相等。这些小齿与定子磁极上的小齿的锯齿相同,形状相似。

如果按下表的时序给步机绕组通电,步进电机将产生转动,改变相序通电,步进电机的转向将反相,停止发送脉冲,步进电机将停止运转。

图一 步进电机结构 通电相序

2.2.1 步进电机的启停控制

3

步进电机由于其电气特性,运转时会有步进感 ,即振动感。为了使电机转动平滑 ,减小振动 ,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波 ,可以减小步进电机的步进角 ,提高电机运行的平稳性。在步进电机停转时 ,为了防止因惯性而使电机轴产生顺滑 ,则需采用合适的锁定波形 ,产生锁定磁力矩 ,锁定步进电机的转轴 ,使步进电机的转轴不能自由转动。

2.2.2 步进电机的转向控制

如果给定工作方式正序换相通电 ,步进电机正转。若步进电机的励磁方式为三相六拍 ,即 A-AB-B-BC-C-CA。如果按反序通电换相 ,即则电机就反转。其他方式情况类似。

2.2.3 步进电机的速度控制

如果给步进电机发一个控制脉冲 ,它就转一步 ,再发一个脉冲 ,它会再转一步。2 个脉冲的间隔越短 ,步进电机就转得越快。调整送给步进电机的脉冲频率 ,就可以对步进电机进行调速。

2.2.4 步进电机的换向控制

步进电机换向时 ,一定要在电机减速停止或降到突跳频率范围之内再换向 ,以免产生较大的冲击而损坏电机。换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第1 个脉冲前发出。对于脉冲的设计主要要求要有一定的脉冲宽度(一般不小于5μs)、脉冲序列的均匀度及高低电平方式。在某一高速下的正、反向切换实质包含了减速→换向→加速3 个过程。

2.3 控制系统的硬件设计

2.3.1 步进电机控制工程方案

基于单片机的步进电机控制方案如下图二所示,系统由键盘、微处理器和功率放大器三部分组成。键盘负责发布命令、输入数据,采用带中断的行列式键盘,微处理器负责将命令转化成控制信号。功率放大器具有信号放大的功能。

图二 单片机控制步进电机原理图

4

2.3.2 电路设计

在Proteus环境选用下列元器件,设计电路如图三所示 (1)IN4003、BUTTON:二极管、按钮;

(2)7SEG-MPX4-CA、RESPACK-8、80C51、四位一体共阳极数码管、排阻、单片机;

(3)RES、CAP、CAP-ELEC、AND-4、CRYSTAL:电阻、电容、电解电容、4输入与门、晶振;

(4)MOTOR-BISTEPPEA、L298:步进直流电机、电机驱动模块。

图三 单片机控制步进电机原理图

3 系统软件设计

3.1总体设计

3.1.1步进电机的工作方式

(1)三相单三拍工作方式 在这种工作方式下,A、B、C三相轮流通电,电流切换三次,磁场旋转一周,转子向前转过一个齿距角。因此这种通电方式叫做三相单三拍工作方式。这时步距角θb (度)为

θb = 360 /mz (公式1)

式中:m──定子相数; z ──转子齿数 单三拍的数学模型:

5

步序 1 2 3 控制位 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 C相 B相 A相 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 工作 控制 状态 模型 A B C 01H 02H 04H (2)三相六拍工作方式 在这种工作方式下,绕组以A—AB—B—BC—C—CA—A时序(或反时序)转换6次,磁场旋转一周,转子前进一个齿距,每次切换均使转子转动1. 5°,故这种通电方式称为三相六柏工作方式。其步距角θb 为: θb = 360 /2mz = 180 /mz (公式2) 六拍的数学模型: 控制位 步序 工作 控制 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 状态 模型 C相 B相 A相 1 0 0 0 0 0 0 0 1 A 01H 2 0 0 0 0 0 0 1 1 AB 03H 3 0 0 0 0 0 0 1 0 B 02H 4 0 0 0 0 0 1 1 0 BC 06H 5 0 0 0 0 0 1 0 0 C 04H 6 0 0 0 0 0 1 0 1 CA 05H (3)双三拍工作方式

这种工作方式每次都是有两相导通,两相绕组处在相同电压之下,以AB─BC─CA─AB (或反之)方式通电,故称为双三拍工作方式。以这种方式通电,转子齿所处的位置相当于六拍控制方式中去掉单三拍后的三个位置。它的步距角计算公式与单三拍时的公式相同。 极分度角/齿距角= R + k·1/m 进一步化简得齿数z:

z = q (mR + k) (公式3)

式中:m──相数; q──每相的极数; k──≤ (m - 1)的正整数; R──正整数,为0、1、2、3……。 双三拍的数学模型: 控制位 步序 工作 控制 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 状态 模型 C相 B相 A相 1 0 0 0 0 0 0 1 1 AB 03H 2

0 0 0 0 0 6

1 1 0 BC 06H 3 0 0 0 0 0 1 0 1 CA 05H

3.2 程序流程图

主程序主要完成初始化,设置中断入口程序,并将R7寄存器的5、6、7三位作为功能标志位,R7中的值不停的送累加器,并检测累加器高三位是否为1,若其中有某位为1则转向相应的功能程序。主程序不断的循环处于等待中断状态。

流程图如图所示:

图四 主程序流程图

7

是 主程序 3.3 程序清单

ORG 0000H LJMP MAIN ORG 0013H LJMP KEYL ORG 0030H

MAIN: MOV SP, #60H MOV R0, #00H MOV R1, #00H MOV R3, #40 MOV 72H, #40 MOV P2, #0F0H CLR P3.4

中断 抖动 否 扫描键盘的键号 释放键 键号入累加器 返回

中断程序流程图

;开始

;跳转至主程序

;外部中断1入口地址;跳转至键盘程序 ;对SP赋值 ;赋值 ;赋值 ;赋值 ;赋值 ;赋值 ;清零

8

图五 CLR 06H CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3

MOV 43H, #00H ;赋值 MOV 42H, #00H MOV 41H, #00H MOV 40H, #00H MOV R7, #00H

SETB EA SETB IT1 SETB EX1 START: SETB 20H CJNE R7, #1,L1 L1

CLR 20H LCALL ZZ SETB 20H LI: CJNE R7, #2,L2 CLR 20H LCALL FF SETB 20H

L2: LCALL LED NNT3: LJMP START

LED: MOV DPTR, #TAB SETB P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV A, 43H

MOVC A, @A+DPTR MOV P0, A LCALL TT CLR P1.4 SETB P1.5 CLR P1.6 CLR P1.7 MOV A, 42H

MOVC A, @A+DPTR MOV P0, A LCALL TT CLR P1.4 CLR P1.5

;开CPU中断

;设置边沿触发方式 ;开外部中断1中断 ;置1

;判断R7是否为1,否则跳至;清零

;调转子程序 ;置1 ;显示程序 9

SETB P1.6 CLR P1.7 MOV A, 41H

MOVC A, @A+DPTR MOV P0, A LCALL TT CLR P1.4 CLR P1.5 CLR P1.6 SETB P1.7 MOV A, 40H

MOVC A, @A+DPTR MOV P0, A LCALL TT CLR P1.7 RET

KEYL: MOV DPTR, #JS CLR EX1 MOV 70H, R0 MOV 71H, R1 MOV 72H, R3 MOV A, P2 MOV P2, #0FH MOV 01H, P2 MOV P2, #0F0H JNB ACC.4, E1 JNB ACC.5, E2 JNB ACC.6, E3 JNB ACC.7, E4 SETB EX1 RETI

E1: MOV 20H, #0 LJMP KEYH

E2: MOV 20H, #4 LJMP KEYH

E3: MOV 20H, #8 LJMP KEYH

E4: MOV 20H, #12 LJMP KEYH

KEYH: MOV A, 01H JNB ACC.0, D0 JNB ACC.1, D1 JNB ACC.2, D2 JNB ACC.3, D3

;键盘程序 10

SETB EX1 RETI

D0: MOV A, #0 ADD A, 20H MOV B, #3 MUL AB

JMP @A+DPTR D1: MOV A, #1 ADD A, 20H MOV B, #3 MUL AB

JMP @A+DPTR D2: MOV A, #2 ADD A, 20H MOV B, #3 MUL AB

JMP @A+DPTR D3: MOV A, #3 ADD A, 20H MOV B, #3 MUL AB

JMP @A+DPTR JS: LJMP LOOP1 LJMP LOOP2 LJMP LOOP3 LJMP LOOP10 LJMP LOOP4 LJMP LOOP5 LJMP LOOP6 LJMP LOOP11 LJMP LOOP7 LJMP LOOP8 LJMP LOOP9 LJMP LOOP15 LJMP LOOP0 LJMP LOOP12 LJMP LOOP13 LJMP LOOP14

LOOP0: JB 20H,SS0 LJMP WX

SS0: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #0

11

LJMP RRT

LOOP1: JB 20H, SS1 LJMP WX

SS1: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #1 LJMP RRT

LOOP2: JB 20H, SS2 LJMP WX

SS2: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #2 LJMP RRT

LOOP3: JB 20H, SS3 LJMP WX

SS3: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #3 LJMP RRT

LOOP4: JB 20H, SS4 LJMP WX

SS4: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #4 LJMP RRT

LOOP5: JB 20H, SS5 LJMP WX

SS5: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #4 LJMP RRT

LOOP6: JB 20H, SS6 LJMP WX

LOOP6: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #6 LJMP RRT

LOOP7: JB 20H, SS7

12

LJMP WX

SS7: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #7 LJMP RRT

LOOP8: JB 20H, SS8 LJMP WX

SS8: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #8 LJMP RRT

LOOP9: JB 20H, SS9 LJMP WX

SS9: MOV 43H, 42H MOV 42H, 41H MOV 41H, 40H MOV 40H, #9 LJMP RRT

LOOP10: MOV A, 43H MOV B, #10 MUL AB ADD A, 42H MOV R0, A MOV A, 41H MOV B, #10 MUL AB ADD A, 40H MOV R1, A MOV R3, #40 SETB P3.4 SETB 06H MOV R7, #1 MOV 73H, R7 SETB EX1 RETI

LOOP11: MOV A, 43H MOV B, #10 MUL AB ADD A, 42H MOV R0, A MOV A, 41H MOV B, #10

13

MUL AB ADD A, 40H MOV R1, A MOV R3, #40 SETB P3.4 SETB 06H MOV R7, #2 MOV 73H, R7 SETB EX1 RETI

LOOP12: CLR 06H SETB EX1 MOV R0, 70H MOV R1, 71H MOV R3, 72H MOV R7, 73H RETI

LOOP13: SETB P3.4 SETB 06H MOV R0, 70H MOV R1, 71H MOV R3, 72H

CJNE R0, #00H,GP1 CJNE R1, #00H,GP2 LJMP GP

GP1: INC R3 LJMP GP

GP2: DEC R1

GP: MOV R7, 73H SETB EX1 RETI

LOOP14: MOV SP, #60H MOV R0, #00H MOV R1, #00H MOV R3, #40 MOV 72H, #40 MOV P2, #0F0H CLR P3.4 CLR 06H CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 MOV 43H, #00H

14

MOV 42H, #00H MOV 41H, #00H MOV 40H, #00H MOV R7, #00H SETB EA SETB IT1 SETB EX1 RETI

LOOP15: JB 20H, SS10 LJMP WX

SS10: MOV 40H, #00H MOV 41H, #00H MOV 42H, #00H MOV 43H, #00H SETB EX1 RETI

RRT: SETB EX1 CLR P3.4 CLR 06H RETI

WX: MOV R0, 70H MOV R1, 71H MOV R3, 72H MOV R7, 73H SETB 06H RETI

ZZ: CJNE R0, #00H, FORWCYCLE NEXT2: CJNE R1, #00H, STEP LCALL SC MOV R0, #00H MOV R1, #00H MOV R3, #40 MOV 72H, #40 MOV P2, #0F0H CLR P3.4 CLR 06H

MOV 43H, #00H MOV 42H, #00H MOV 41H, #00H MOV 40H, #00H MOV R7, #00H SETB EA SETB IT1 SETB EX1

;正转圈,步程序 15

RET

FORWCYCLE: MOV R3, 72H NEXTFORSTEP: LCALL FORWSTEP DEC R3

JB 06H, NT2 CLR P3.4 RET

NT2: CJNE R3, #00H, NEXTFORSTEP MOV 72H, #40 DEC R0 LJMP ZZ

STEP : LCALL FORWSTEP JB 06H, NT1 CLR P3.4 RET

NT1: DEC R1 LJMP NEXT2

FORWSTEP: JB 06H,NT LCALL SC MOV R7, #0 RET

NT: SETB P1.0 CLR P1.1 SETB P1.2 CLR P1.3 LCALL SC SETB P1.0 CLR P1.1 CLR P1.2 CLR P1.3 LCALL SC SETB P1.0 CLR P1.1 CLR P1.2 SETB P1.3 LCALL SC SETB P1.3 CLR P1.0 CLR P1.1 CLR P1.2 LCALL SC CLR P1.0 SETB P1.1 CLR P1.2

;正转一步子程序 16

SETB P1.3 LCALL SC CLR P1.0 SETB P1.1 CLR P1.2 CLR P1.3 LCALL SC CLR P1.0 SETB P1.1 SETB P1.2 CLR P1.3 LCALL SC CLR P1.3 LCALL SC RET

FF: CJNE R0, #00H, BACKWCYCLE NEXT4: CJNE R1, #00H, STEP1 LCALL SC MOV R0, #00H MOV R1, #OOH MOV R3, #40 MOV 72H, #40 MOV P2, #0F0H CLR P3.4 CLR 06H

MOV 43H, #00H MOV 42H, #00H MOV 41H, #00H MOV 40H, #00H MOV R7, #00H SETB EA SETB IT1 SETB EX1 RET

BACKWCYCLE: MOV R3, 72H

NEXTBACKSTEP: LCALL BACKSTEP DEC R3

JB 06H, NT4 CLR P3.4 RET

NT4: CJNE R3, #00H, NEXTBACKSTEP MOV 72H, #40 DEC R0 LJMP FF

17

;反转圈,步程序 STEP1: LCALL BACKSTEP ;反转一步子程序 JB 06H, NT3 CLR P3.4 RET

NT3: DEC R1 LJMP NEXT4

BACKSTEP: JB 06, NT5 LCALL SC MOV R7, #0 RET

NT5: CLR P1.0 CLR P1.1 SETB P1.2 CLR P1.3 LCALL SC CLR P1.0 SETB P1.1 SETB P1.2 CLR P1.3 LCALL SC CLR P1.0 SETB P1.1 CLR P1.2 CLR P1.3 LCALL SC SETB P1.3 CLR P1.0 CLR P1.1 CLR P1.2 LCALL SC SETB P1.0 CLR P1.1 CLR P1.2 SETB P1.3 LCALL SC SETB P1.0 CLR P1.1 CLR P1.2 CLR P1.3 LCALL SC SETB P1.0 CLR P1.1 SETB P1.2 CLR P1.3

18

LCALL SC RET

SC: MOV DPTR, #TAB ;显示数据处理 MOV A, R0 MOV B, #10 DIV AB MOV 43H, A MOV 42H, B MOV A, R1 MOV B, #10 DIV AB MOV 41H, A MOV 40H, B MOV R6, #30H

NN: DJNZ R6, LED1 RET

LED1: LCALL LED LJMP NN

TT: MOV R5, #0FFH ;显示延时程序 T1: NOP DJNZ R5, T1 RET

TAB: DB 40H, 79H,24H,30H,19H,12H,02H,78H,00H,10H END

4 参考文献

《单片机原理及接口技术》 高等教育出版社 李全利 《单片机原理与应用系统设计》 电子工业出版社 张齐

《单片机原理与应用设计》 电子工业出版社 张毅刚、彭喜元 《基于Proteus的单片机应用技术》 电子工业出版社 江世明

《51单片机开发入门与典型实例》 人民邮电出版社 王守中、聂元明

19

5 结束语

从书本上的知识到自己亲手的课程设计,每一步对我们来说无疑都是巨大的尝试和挑战,也成就了我们目前在大学期间独立完成的最大的项目。记得在刚接到这个课题时,我有些茫然不知所措。设计好一个步进电机需要什么专业知识?带着这个疑问我们开始了地学习和实验:去图书馆查阅相关资料、上网去了解相关的内容,渐渐头脑中的概念清晰了起来。在具体设计的过程中,我遇到了更大的困难。我不断地给自己提出新的问题,然后去论证、推翻,再接着提出新的问题。在这个循环往复的过程中,这篇稚嫩的设计日臻完善。虽然我的设计作品不是很成熟,即使借鉴前人的很多资料仍然还有很多不足之处,但我仍然心里有一种莫大的幸福感,因为我实实在在地走过了一个完整的设计所应该走的每一个过程,并且享受了每一个过程,同时,在此次设计中我学会了很多东西,对我来说这是一次非常有意义的设计。

20

因篇幅问题不能全部显示,请点此查看更多更全内容