四相八拍步进电机调速.docx
《四相八拍步进电机调速.docx》由会员分享,可在线阅读,更多相关《四相八拍步进电机调速.docx(27页珍藏版)》请在冰点文库上搜索。
![四相八拍步进电机调速.docx](https://file1.bingdoc.com/fileroot1/2023-6/7/ffd22f88-24fc-4d43-8fe6-ca13b5f4fb48/ffd22f88-24fc-4d43-8fe6-ca13b5f4fb481.gif)
四相八拍步进电机调速
引言
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
步进电机的调速一般是改变输入步进电机的脉冲的频率来实现步进电机的调速,因为步进电机每给一个脉冲就转动一个固定的角度,这样就可以通过控制步进电机的一个脉冲到下一个脉冲的时间间隔来改变脉冲的频率,延时的长短来具体控制步进角来改变电机的转速,从而实现步进电机的调速。
在本设计方案中采用单片机内部的定时器改变脉冲的频率从而实现对步进电机的转速进行控制,实现电机调速与正反转的功能。
关键词:
步进电机,单片机,调速系统
第1章绪论
1.1步进电机的概述
1.1.1步进电机的特点
1)一般步进电机的精度为步进角的3-5%,且不累积。
2)步进电机外表允许的温度高。
步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。
3)步进电机的力矩会随转速的升高而下降。
当步进电机转动时,电机各相绕组的电感将形成一个反向电动势;频率越高,反向电动势越大。
在它的作用下,电机随频率(或速度)的增大而相电流减小,从而导致力矩下降。
4)步进电机低速时可以正常运转,但若高于一定速度就无法启动,并伴有啸叫声。
步进电机有一个技术参数:
空载启动频率,即步进电机在空载情况下能够正常启动的脉冲频率,如果脉冲频率高于该值,电机不能正常启动,可能发生丢步或堵转。
在有负载的情况下,启动频率应更低。
如果要使电机达到高速转动,脉冲频率应该有加速过程,即启动频率较低,然后按一定加速度升到所希望的高频(电机转速从低速升到高速)。
1.1.2步进电机的工作原理简述
步进电机是一种用电脉冲进行控制,将电脉冲信号转换成相位移的电机,其机械位移和转速分别与输入电机绕组的脉冲个数和脉冲频率成正比,每一个脉冲信号可使步进电机旋转一个固定的角度.脉冲的数量决定了旋转的总角度,脉冲的频率决定了电机运转的速度.当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
1.2四相八拍步进电机
1.2.1四相步进电机工作原理
图1.5是该四相反应式步进电机工作原理示意图。
图1.5四相步进电机步进示意图
开始时,开关SB接通电源,SA、SC、SD断开,B相磁极和转子0、3号齿对齐,同时,转子的1、4号齿就和C、D相绕组磁极产生错齿,2、5号齿就和D、A相绕组磁极产生错齿。
当开关SC接通电源,SB、SA、SD断开时,由于C相绕组的磁力线和1、4号齿之间磁力线的作用,使转子转动,1、4号齿和C相绕组的磁极对齐。
而0、3号齿和A、B相绕组产生错齿,2、5号齿就和A、D相绕组磁极产生错齿。
依次类推,A、B、C、D四相绕组轮流供电,则转子会沿着A、B、C、D方向转动。
四相步进电机按照通电顺序的不同,可分为单四拍、双四拍、八拍三种工作方式。
单四拍与双四拍的步距角相等,但单四拍的转动力矩小。
八拍工作方式的步距角是单四拍与双四拍的一半,因此,八拍工作方式既可以保持较高的转动力矩又可以提高控制精度。
单四拍、双四拍与八拍工作方式的电源通电时序与波形分别如图1-6.a、b、c所示:
a单四拍 b双四拍 c八拍
图1.6步进电机工作时序波形图
1.2.2八拍得工作方式
单双八拍工作方式:
A-AB-B-BC-C-CD-D-DA(即一个脉冲,转3.75度)八拍运行时步距角为θ=360度/(50*8)=0.9度(俗称半步)。
1.3单片机概述
1.3.1单片机原理简述
单片机(SINGLE-CHIPMICROCOMPUTER)是把微型计算机主要部分都集成在一块芯片上的单芯片微型计算机。
图1.7中表示单片机的典型结构图。
由于单片机的高度集成化,缩短了系统内的信号传送距离,优化了结构配置,大大地提高了系统的可靠性及运行速度,同时它的指令系统又很适合于工业控制的要求,所以单片机在工业过程及设备控制中得到了广泛的应用。
图1.7典型单片机结构图
单片机在进行实时控制和实时数据处理时,需要与外界交换信息。
人们需要通过人机对话,了解系统的工作情况和进行控制。
单片机芯片与其它CPU比较,功能虽然要强得多,但由于芯片结构、引脚数目的限制,片内ROM、RAM、I/O口等不能很多,在构成实际的应用系统时需要加以扩展,以适应不同的工作情况。
单片机应用系统的构成基本上如图1.8所示。
图1.8单片机的应用系统
单片机应用系统根据系统扩展和系统配置的状况,可以分为最小应用系统、最小功耗系统、典型应用系统。
本设计是设计一款最小应用系统,最小应用系统是指能维持单片机运行的最简单配置的系统。
这种系统成本低廉、结构简单,常用来构成简单的控制系统,如开关量的输入/输出控制、时序控制等。
对于片内有ROM/EPROM的芯片来说,最小应用系统即为配有晶体振荡器、复位电路和电源的单个芯片;对与片内没有ROM/EPROM芯片来说,其最小应用系统除了应配置上述的晶振、复位电路和电源外,还应配备EPROM或EEPROM作为程序存储器使用
1.3.28031单片机
8031单片机具有体积小,重量轻,价格低,耗电少,电源单一,抗干扰能力强,可靠性高,面向控制,控制功能强,运行速度快等特点。
所以本次调速设计芯片采用8031来控制。
8031单片机内部组成:
1个8位微处理器CPU;128字节的数据存储器(RAM);32条I/O位线(四个8位口P0,P1,P2,P3);2个定时器;1个具有5个中断源,2个优先级的中断嵌套机构;1个全双工的串行通信端口,特许功能寄存器以及一个震荡和时钟电路。
各部分通过芯片内部总线连接。
8031单片机的硬件机构特点:
8031单片机无内部存储器(ROM),有数据存储器(RAM);输入/输出(I/O)端口:
它具有一个全双的串行口,该串行口由两根I/O位线构成,有四种工作方式,可通过编程选定,且8031还有32个I/O位线。
中断与堆栈:
8031单片机有5个中断源,分为2级优先,每个中断源的优先级是可以编程的。
它的堆栈位置也是可以编程的,堆栈深度可以达到128字节。
定时/计数器与寄存区:
8031单片机有2个16位定时/计数器,通过编程可以实现四种工作模式。
8031单片机在内部RAM中设置了四个通用工作寄存器区,共32个寄存器,以适应多种终端或子程序嵌套的要求。
指令系统:
8031单片机指令系统功能大,指令段,执行速度快。
外接晶振的频率为128MHZ时,大部分指令执行时间为1μM。
1.4总体方案设计
1.4.1系统的组成
本系统主要组成部分为:
主机芯片8031,转速测量采集系统,步进电机的驱动系统,8279扩展外部中断子系统,报警系统等多部分
系统原理图
图1.10系统原理框图
1.4.2系统的工作原理
系统的工作原理如下:
有主机芯片8031发出指令至步进电机的驱动和隔离电路,步进电机启动,通过8031的内部中断来实现步进电机的加速运转。
电机的转速通过光电传感器,传输到采样保持电路到A/D转换器,转换成数字信号,存到主机芯片8031进行处理,在传输到8279到LED显示器。
如果转速超过规定速度,通过8031发出指令到报警电路报警。
单片机控制步进电机工作是,电机在几十伏,甚至一百幅的高压条件下工作,而单片机则在5V的低压条件下工作,一旦步进电机的电压窜到单片机部分,竟会引起单片机损坏;或者步进电机部分的有关信号干扰单片机,也会引起系统工作失误。
故单片机与不进电极之间的硬件接口一般需要进行电压隔离;对于四相步进电机,需要四路控制电路,每一路控制步进电机的一相;有时需要步进电机以不同的速度工作,不适应不同的目的,硬件接口中将包括工作频率发生器。
第2章系统软件设计
2.1显示子程序的设计
图2.1显示程序流程图
8279的初始化程序如下:
INIT:
MOVDPTR,#7FFFH;置8279命令/状态口地址
MOVA,#0D1H;置清显示命令字
MOVX@DPTR,A;送清显示命令
WEIT:
MOVXA,@DPTR;读状态
JBACC.7,WEIT;等待清显示RAM结束
MOVA,#34H;置分频系数,晶振12MHZ
MOVX@DPTR,A;送分频系数
MOVA,#00H;置键盘/显示命令
MOVX@DPTR,A;送键盘/显示命令
MOVIE,#84H;允许8279中断
RET
显示子程序如下:
DIS:
MOVDPTR,#7FFFH;置8279命令/状态口地址
MOVR0,#30H;字段码首地址
MOVR7,#08H;8位显示
MOVA,#90H;置显示命令字
MOVX@DPTR,A;送显示命令
MOVDPTR,#7FFEH;置数据口地址
LP:
MOVA,@R0;取显示数据
ADDA,#6;加偏移量
MOVCA,@A+PC;查表,取得数据的段码
MOVX@DPTR,A;送段码显示
INCR0;调整数据指针
DJNZR7,LP;
RET
SEG:
DB3FH,06H,5BH,4FH,66H,6DH
;字符0、1、2、3、4、5段码
DB7DH,07H,7EH,6FH,77H,7CH
;字符6、7、8、9、A、B段码
DB39H,5EH,79H,71H,73H,3EH
;字符C、D、E、F、P、U段码
DB76H,38H,40H,6EH,FFH,00H
;字符H、L、-、Y、“空”段码
2.2键盘子程序的设计
图2.2键盘程序流程图
键盘中断子程序如下:
KEY:
PUSHPSW
PUSHDPL
PUSHDPH
PUSHACC
PUSHB
SETBPSW.3
MOVDPTR,#7FFFH;置状态口地址
MOVXA,@DPTR;读FIFO状态
ANLA,#0FH;
JZPKYR;
MOVA,#40H;置读FIFO命令
MOVX@DPTR,A;送读FIFO命令
MOVDPTR,#7FFEH;置数据口地址
MOVXA,@DPTR;读数据
LJMPKEY1;转键值处理程序
PKYR:
POPB
POPACC
POPDPH
POPDPL
POPPSW
RETI;
KEY1:
……;键值处理程序
键盘程序清单:
KEY1:
ACALLKS1;有无键按下子程序
JNZLK1;有键按下,转去抖延时
AJMPKEY1;无键按下,继续扫描
LK1:
ACALLDELA12;12MS延时程序调用
ACALLKS1;判断键是否真正按下
JNZLK2;有键按下,转逐列扫描
AJMPKEY1;无键按下,继续扫描
LK2:
MOVR2,#0FEH;设置首列扫描字
MOVR4,#00H;保存首列号
LK4:
MOVDPTR,#7F01H;列扫描字送至PA口
MOVA,R2
MOVX@DPTR,A
INCDPTR;指向PC口
INCDPTR
MOVXA,@DPTR;读入行状态
JBACC.0,LONE;第0行无键按下,转LONE
MOVA,#00H;有键按下,设置行首键号
AJMPLKP;转求键号
LONE:
JBACC.1,LTWO;第1行无键按下,转LTWO
MOVA,#08H;有键按下,设置行首键号
AJMPLKP;转求键号
LTWO:
JBACC.2,LTHR;第2行无键按下,转LTHR
MOVA,#10H;有键按下,设置行首键?
AJMPLKP;转求键号
LTHR:
JBACC.3,NEXT;第3行无键按下,查下一列
MOVA,#18H;有键按下,设置行首键
LKP:
ADDA,R4;求键号,键号=行首键号+列号
PUSHACC;保护键号
LK3:
ACALLKS1;等待键释放
JNZLK3;键未释放,继续等待
POPACC;键释放,键号送A
AJMPOVER;键扫描结束
NEXT:
INCR4;列号加1,指向下一列
MOVA,R2;判断8列扫描完否
JNBACC.7,KND;8列扫描完,继续
RLA;扫描字左移一位
MOVR2,A;送扫描字
AJMPLK4;转下一列扫描
KND:
AJMPKEY1
OVER:
RET;键扫描结束
KS1:
MOVDPTR,#7F01H;指向PA口
MOVA,#00H;设置扫描字
MOVX@DPTR,A;扫描字送PA口
INCDPTR;指向PC口
INCDPTR
MOVXA,@DPTR;读入PC口状态
CPL;以高电平表示有键按下
ANLA,#0FH;屏蔽高4位
RET
2.3正反转程序流程图
2.3.1正反转程序流程图
图2.3正反转程序流程图
主程序如下:
CON:
MOVR3,#N
MOVTMOD,#10H
MOVTL1,#LOW
MOVTH1,#HIGH
JNBFLAG,LEFT
MOVR0,RM
AJMPTIME-S
LEFT:
MOVR0,LM
TIME:
SETBEA
SETBET1
SETBTR1
步进电机控制程序P3.2正转,P3.3反转,P3.4停止步进电机接P1.0P1.1P1.2P1.3
ORG00h
STOP:
ORLP1,#0FFh;步进电机停止
LOOP:
JNBP3.2,FOR2;如果P3.2按下正转
JNBP3.3,REV2;如果P3.3按下反转
JNBP3.4,STOP1;如果P3.4按下停止
JMPLOOP;反复监测键盘
FOR:
MOVR0,#00h;正转到TAB取码指针初值
FOR1:
MOVA,R0;取码
MOVDPTR,#TABLE;
MOVCA,@A+DPTR
JZFOR;是否到了结束码00h
CPLA;把ACC反向
MOVP1,A;输出到P1开始正转
JNBP3.4,STOP1;如果P3.4按下停止
JNBP3.3,REV2;如果P3.3按下反转
CALLDELAY;转动的速度
INCR0;取下一个码
JMPFOR1;继续正转
REV:
MOVR0,#05h;反转到TAB取码指针初值
REV1:
MOVA,R0
MOVDPTR,#TABLE;取码
MOVCA,@A+TABLE
JZREV;是否到了结束码00h
CPLA;把ACC反向
MOVP1,A;输出到P1开始反转
JNBP3.4,STOP1;如果P3.4按下停止
JNBP3.3,REV2;如果P3.3按下反转
CALLDELAY;转动的速度
INCR0;取下一个码
JMPREV1;继续反转
STOP1:
CALLDELAY;按P3.4的消除抖动
JNBP3.4,$;P3.4放开否?
CALLDELAY;放开消除抖动
JMPSTOP;
FOR2:
CALLDELAY;按P3.2的消除抖动
JNBP3.2,$;P3.2放开否?
CALLDELAY;放开消除抖动
JMPFOR;
REV2:
CALLDELAY;按P3.3的消除抖动
JNBP3.3,$;P3.3放开否?
CALLDELAY;放开消除抖动
JMPREV;
DELAY:
MOVR1,#40;步进电机的转速20MS
D1:
MOVR2,#248;
DJNZR2,$
DJNZR1,D1
RET
TABLE:
DB03h,09h,0Ch,06h;正转表
DB00;正转结束
DB03h,06h,0Ch,09h;反转
DB00;反转结束
END
2.3.2转速快慢程序流程图
图2.4转速快慢程序流程图
步进电机正反快慢程序
ORG00h
x1:
MOVR3,#48一圈48步
START:
MOVR0,#00h正转取码初值
START1:
MOVP1,#0FFh;先停止
MOVA,R0
MOVDPTR,#TABLE
MOVCA,@A+DPTR
JZSTART;是否到了结束码00?
CPLA
MOVP1,A;输出运转
CALLDELAY;调用慢速的延时转动
INCR0;取码指针加1取下一个码
DJNZR3,START1;是否走了48步?
MOVR3,#48;是则重新设定48步
START2:
MOVP1,#0FFh
MOVR0,#05;逆转的取码初值
START3:
MOVA,R0;
MOVDPTR,#TABLE
MOVCA,@A+DPTR
JZSTART2
CPLA
MOVP1,A
CALLDELAY2
INCR0
DJNZR3,START3
JMPx1;重复开始
DELAY:
;延时程序(慢速)
MOVR7,#255
D1:
MOVR6,#50
D2:
DJNZR6,D2
DJNZR7,D1
RET
DELAY2:
;延时程序(快速)
MOVR5,#255
D3:
MOVR2,#25
D4:
DJNZR2,D4
DJNZR5,D3
RET
TABLE:
DB03h,09h,0Ch,06h;正转表
DB00
DB06h,0Ch,09h,03h;反转表
DB00
END
2.4定时中断流程图
图2.5中断子程序流程图
中断服务程序如下:
INTTO:
PUSHA
PUSHPSW
MOVA,@R0
MOVP1,A
INCR0
MOVA,#00H
XRLA,@R0
JNZNEXT
MOVA,R0
CLRC
SUBBA,#03H
MOVR0,A
NEXT:
DJNZR3,RETU
CLRET1
CLREA
RETU:
POPPSW
POPA
RETI
利用软件形成脉冲序列的程序清单:
PULSE_S:
MOVR7,#NUM;设定脉冲个数
PUSHA;保护现场
PUSHPSW
LOOP:
SETBP1.0;输出高电平
ACALLDELAY1;延时
CLRP1.0;输出低电平
ACALLDELAY2;延时
DJNZR7,LOOP;R7≠0,继续输出脉冲
POPPSW;恢复现场
POPA
RET
定时中断子程序:
TIME0:
CLREA;关中断
INC30H
MOVA,30H
XRLA,#50H;判断是否到8秒
JZS_8;8秒定时到,转至S_8
AJMPRECOUN;未到8秒,继续计时
S_8:
SETBP3.2;触发外部中断0
NOP
CLRP3.2
NOP
RECOUN:
MOVTH0,#3CH
MOVTL0,#0B0H;设定定时器初值
SETBEA;开中断
RETI;中断返回
中断子程序
T_CON:
PUSHA;保护现场
PUSHPSW
MOVR7,#N;设定控制步数
JNBFLAG,LEFT;判断旋转方向
RIGHT:
MOVR0,RM;正转模型起始地址
AJMPROTATE
LEFT:
MOVR0,LM
ROTATE:
MOVA,@R0;取第一拍控制模型
MOVP1,A;输出第一拍控制模型
ACALLDELAY1;延时
INCR0
MOVA,@R0;取第二拍控制模型
MOVP1,A;输出第二拍控制模型
ACALLDELAY1;延时
INCR0
MOVA,@R0;取第三拍控制模型
MOVP1,A;输出第三拍控制模型
ACALLDELAY1;延时
DJNZR7,ROTATE;未走完要求的步数,继续
POPPSW;恢复现场
POPA
RET;返回
2.5语音报警系统
该系统采用专用集成语音芯片,将所要播放的语音信息一次性烧录到存储器内。
当检测电路检测到报警信号出现时,微处理器送出所要播报的语句地址信号,控制语音芯片播放对应的原理图语音报警原理图信息。
其原理图
图2.6语音报警系统原理框图
软件的设计
采用芯片外接寄存器,脉冲触发方式。
当报警信号出现,未处理报警语句的地址信息送到寄存器,同时控制信息触发寄存器的CLK引脚,地址信息存储器。
芯片收到地址信息后即发出报警音,由于地址信息在寄存器的存储,在脉冲触发方式下,报警信息将反复播报,当报警信号消失,未处理器送出报警停止信号(00000000),即实现语音报警信号停止。
2.6主程序设计
步进电机的旋转方向和内部绕组的通电顺序及通电方式有密切关系。
对于四相八拍的工作方式:
正相旋转:
A→AB→B→BC→C→CD→D→DA→A
反相旋转:
A→DA→D→DC→C→CB→B→BA→A
四相八拍步进电机控制程序:
ORG2000H
ROUT1:
MOVA,#N
JNB00H,LP2
LP1:
MOVP1,#01H
ACALLDELAY
DECA
JZDONE
MOVP1,#03H
ACALLDELAY
DECA
JZDONE
MOVP1,#02H
ACALLDELAY
DECA
JZDONE
MOVP1,#06H
ACALLDELAY
DECA
JZDONE
MOVP1,#04H
ACALLDELAY
DECA
JZDONE
MOVP1,#0CH
ACALLDELAY
DECA
JZDONE
MOVP1,#08H
ACALLDELAY
DECA
JZDONE
MOVP1,#0