步进电机控制资料.docx
- 文档编号:3709058
- 上传时间:2023-05-06
- 格式:DOCX
- 页数:27
- 大小:235.48KB
步进电机控制资料.docx
《步进电机控制资料.docx》由会员分享,可在线阅读,更多相关《步进电机控制资料.docx(27页珍藏版)》请在冰点文库上搜索。
步进电机控制资料
机电一体化技术课程设计报告
目录
1.系统概述1
1.1步进电机控制工作原理1
1.2系统设计思路1
2.系统硬件设计2
2.1基于8255的步进电机控制系统3
2.2显示电路7
3.系统软件设计12
3.1程序流程图12
3.2程序清单15
4.结束语20
参考文献21
1.系统概述
1.1步进电机控制工作原理
步进电机实际上是一个数字\角度转换器,也是一个串行的数\模转换器。
步进电机的基本控制包括启停控制、转向控制、速度控制、换向控制4个方面。
从结构上看,步进电机分为三相、四相、五相等类型,常用的则以三相为主。
三相步进电机的工作方式有三相单三拍、三相双三拍和三相六拍3种,下面具体加以阐述。
1.1.1步进电机的启停控制
步进电机由于其电气特性,运转时会有步进感,即振动感。
为了使电机转动平滑,减小振动,可在步进电机控制脉冲的上升沿和下降沿采用细分的梯形波,可以减小步进电机的步进角,提高电机运行的平稳性。
在步进电机停转时,为了防止因惯性而使电机轴产生顺滑,则需采用合适的锁定波形,产生锁定磁力矩,锁定步进电机的转轴,使步进电机的转轴不能自由转动。
1.1.2步进电机的转向控制
如果给定工作方式正序换相通电,步进电机正转。
若步进电机的励磁方式为三相六拍,即A-AB-B-BC-C-CA。
如果按反序通电换相,即则电机就反转。
其他方式情况类似。
1.1.3步进电机的速度控制
如果给步进电机发一个控制脉冲,它就转一步,再发一个脉冲,它会再转一步。
2个脉冲的间隔越短,步进电机就转得越快。
调整送给步进电机的脉冲频率,就可以对步进电机进行调速。
1.1.4步进电机的换向控制
步进电机换向时,一定要在电机减速停止或降到突跳频率范围之内再换向,以免产生较大的冲击而损坏电机。
换向信号一定要在前一个方向的最后一个脉冲结束后以及下一个方向的第1个脉冲前发出。
对于脉冲的设计主要要求要有一定的脉冲宽度(一般不小于5μs)、脉冲序列的均匀度及高低电平方式。
在某一高速下的正、反向切换实质包含了减速→换向→加速3个过程。
1.2系统设计思路
此次我们所设计的是一个步进电机控制系统,主要由单片机80C51,并行输入/输出接口8255,3相步进电机,7段数码管,及一些其他相关元件设计而成。
可以通过开关来控制系统的启/停工作,当系统运转时,用开关来控制方向,并使相应的指示灯亮起,同样由开关来选择工作模式,这次设计并不是使用键盘来输入运转步数,而是由8个开关置0/1设步数。
运转时,用3位7段数码管来输出剩余步数。
最后根据思路所设计出来的硬件图设计相适应的软件。
当步进电机驱动系统工作时,控制器首先检测接收传感器信号,经过A/D转换成需要的检测量,即:
将模拟量转换为数字量送入单片机的数据口(P1口)——单片机根据需要轮流给P1.0,P1.1,P1.2端口发送步进脉冲来控制电机运行,程序中,只要依次将6个控制字送到P1口,步进电机就会转动一个齿距角.每送一个控制字,就完成一拍,步进电机就转过一个步距角;然后将之与设定的初值进行比较,得出其差值,并根据程序的设定转化为步进电机的步进脉冲,从而通过单片机控制的驱动器来驱动步进电机,以带动丝杆传动系统,完成一个循环控制过程.
系统的总体设计框图如下:
2.系统硬件设计
2.1基于8255的步进电机控制系统
2.1.18255芯片的原理
1.8255特性:
(1)一个并行输入/输出的LSI芯片,多功能的I/O器件,可作为CPU总线与外围的接口.
(2)具有24个可编程设置的I/O口,即使3组8位的I/O口为PA口,PB口和PC口.它们又可分为两组12位的I/O口,A组包括A口及C口(高4位,PC4~PC7),B组包括B口及C口(低4位,PC0~PC3).A组可设置为基本的I/O口,闪控(STROBE)的I/O闪控式,双向I/O3种模式;B组只能设置为基本I/O或闪控式I/O两种模式,而这些操作模式完全由控制寄存器的控制字决定.
2.8255引脚功能:
RESET:
复位输入线,当该输入端外于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
''
A0,A1:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A0=0,A1=0时,PA口被选择;
当A0=0,A1=1时,PB口被选择;
当A0=1,A1=0时,PC口被选择;
当A0=1.A1=1时,控制寄存器被选择.
2.12步进电机原理
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。
这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。
使得在速度、位置等控制领域用步进电机来控制变的非常的简单。
虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。
它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。
实验连接原理图如下
图1—1实验连接图
2.1.3步进电机I/O分配表
输入
功能
输出
功能
X0
正转
Y0
控制A相
X1
反转
Y1
控制B相
X2
启动
Y2
控制C相
X3
停止
X4
低速
X5
中速
X6
高速
2.1.4步进电机控制流程图
2.1.5实验程序:
TITLEBUJIN.ASM
IOCONPTEQU02A3H
IOBPTEQU02A1H
IOAPTEQU02A0H
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,90H
MOVDX,IOCONPT
OUTDX,AL
NOP
NOP
NOP
XUNHUAN:
MOVDX,IOAPT
INAL,DX
CMPAL,01H
JEIOLED1
JNEIOLED2
IOLED1:
MOVDX,IOBPT
MOVAL,09H
OUTDX,AL
CALLDELAY
MOVAL,0CH
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY
MOVAL,03H
OUTDX,AL
CALLDELAY
JMPXUNHUAN
IOLED2:
MOVDX,IOBPT
MOVAL,03H
OUTDX,AL
CALLDELAY
MOVAL,06H
OUTDX,AL
CALLDELAY
MOVAL,0CH
OUTDX,AL
CALLDELAY
MOVAL,09H
OUTDX,AL
CALLDELAY
JMPXUNHUAN
DELAY:
MOVCX,0FFFFH
DELA:
LOOPDELA
RET
CODEENDS
ENDSTART
2.2显示电路(可编程键盘/显示控制器8279电路工作原理)
2.2.18279电路工作原理
1.I/O控制及数据缓冲器
数据缓冲器是双向缓冲器,连接内、外总线,用于传送CPU和8279之间的命令或数据。
I/O控制线是CPU对8279进行控制的引线,CS是8279的片选信号,当CS=0时,8279才被允许读出或写入信息。
WR、RD为来自CPU的读、写控制信号。
A0用于区别信息特性:
A0=1时,表示数据缓冲器输入为指令、输出为状态字;A0=0时,输入、输出皆为数据。
2.控制与定时寄存器及定时控制
控制与定时寄存器用来寄存键盘及显示的工作方式,以及有CPU编程的其它操作方式。
这些寄存器一旦接受并锁存送来的命令,就通过译码产生相应的信号,从而完成相应的控制功能。
定时控制包含基本计数器。
其中计数器是一个可编程的N级计数器。
N可以为2~31之间的数据,由软件编程,以便从外界时钟CLK分频得到内部所需要的100kHZ的时钟。
然后再经过分频,为键盘扫描提供适当的逐行扫描频率和显示扫描时间。
3.扫描计数器
扫描计数器有两种工作方式。
按编码方式工作时,计数器作二进制计数。
4位计数状态从扫描线SL0~SL3输出,经外部译码器译码后,为键盘和显示器提供扫描线(16条);按译码方式工作时,扫描计数器的最低二位被译码后,从SL0~SL3输出。
因此,SL0~SL3提供了4中取1的扫描译码。
4.回复缓冲器、键盘去抖动及控制
来自RS0~RS7的8根回复线的回复信号,由回复缓冲器缓冲并锁存。
在键盘工作方式中,回复线作为行列式键盘的行列输入线。
在逐行列扫描时,回复线用来搜寻每一行列中闭合的键,当某一键闭合时,去抖电路被置位,延时等待10ms后,再检验该键是否继续闭合,并将该键的地址和附加的移位、控制状态一起形成键盘数据被送入8279内部FIFO(先进先出)存储器。
键盘数据格式如下:
D7
D6
D5D4D3
D2D1D0
控制
移位
扫描
回复
控制和移位(D6D7)的状态由两个独立的附加开关决定,而扫描(D5D4D3)和回复(D2D1D0)则是被按键置位的数据。
D5D4D3来自扫描计数器,是按下键的行列编码,而D2D1D0则来自行/列计数器,它们是根据回复信号而确定的行/列编码。
在传感器开关状态矩阵方式中,回复线的内容直接被送往相应的传感器RAM(即FIFO存储器)。
在选通输入方式工作时,CNTL/STB为选通输入信号,回复线的内容在CNTL/STB线的脉冲上升沿送入FIFO存储器。
5.FIFO/传感器及其状态寄存器
FIFO/传感器RAM是一个双重功能的8×8RAM。
在键盘或选通方式工作时,它是FIFO寄存器,其输入或读出遵循先入先出的原则。
FIFO状态寄存器用来存放FIFO的工作状态。
例如,RAM是满还是空;其中存有多少数据;是否操作出错等。
当FIFO寄存器不空,状态逻辑将产生IRQ=1信号向CPU申请中断。
在传感器矩阵方式工作中,这个存储器又是传感器存储器。
它存放着传感器中的每一个状态。
在此方式中,若检索出传感器的变化,IRQ信号变为高电平,向CPU申请中断,同时该状态被送入传感器RAM。
6.显示RAM和显示地址寄存器
显示RAM用来存储显示数据,容量为16×8位。
在显示过程中,存储的显示数据轮流从显示寄存器输出。
显示寄存器分为A、B两组,OUTA0~3和OUTB0~3可以单独送数,也可以组成一个8位的码(由编程控制)。
显示寄存器的输出与显示扫描结合,不断从显示RAM中读出显示数据,同时轮流驱动被选中的显示器件,以达到多路复用的目的,使显示器件呈现稳定的显示状态。
显示地址寄存器用来寄存由CPU进行读/写显示RAM的地址,它可以由命令设定,也可以设置成每次读出或写入后自动递增。
2.2.2管脚,引线与功能
8279采用40引脚封装,其管脚,引线功能如图2—8所示.其引脚功能分述如下:
图2 —8
◆D0-D7(数据总线):
双向,三态总线,和系统的数据总线相连,用于CPU和8279间的数据/命令传送.
◆CLK(系统时钟):
输入线,为8279提供内部时钟的输入端.
◆RESET(复位):
输入线,当RESET=1时,8279复位,其复位状态为:
16个字符显示;编码扫描键盘;程序时钟编程为31.
◆CS(片选):
输入线,当CS=0时8279被选中,允许CPU对其读,写,否则被禁止.
◆A0(数据选择):
输入线.当A0=1时CPU写入的数据为命令字,读出数据为状态字;A0=0时CPU读,写的字节均为数据.
◆RD,WR(读、写信号):
输入线.低电平有效,来自CPU的控制信号,控制8279的读,写操作.
◆IRQ(中断请求):
输出线.高电平有效.
在键盘工作方式中,当FIFO/传感器RAM村有数据时,IRQ为高电平.CPU每次从RAM中读出数据时,IRQ变为低电平.若RAM中仍有数据,则IRQ再次恢复为高电平.
在传感器工作方式中,每当检测到传感器状态变化时,IRQ就出现高电平.
◆SL0~SL3(扫描线):
输出线.用来扫描键盘和显示器.它们可以编程设定为译码(4中取1)或编码输出(16取1).
◆RL0~RL7(回复线):
输入线.它们是键盘矩阵或传感器矩阵的列(或行)信号输入线.
◆SHIFT(移位信号):
输入线,高电平有效.该输入信号是8279键盘数据的次高位(D6),通常用来扩充键的功能,可以用作键盘上、下档功能键.在传感器方式和选通方式中,SHIFT无效.
◆CNTL/STB(控制/选通):
输入线,高电平有效.
在键盘工作方式时,该输入信号是键盘数据的最高位(D7),通常用来扩充键开关的控制功能,作为控制功能键用.
在选通输入方式时,该信号的上升沿可把来自RL0~RL7的是数据存入FIFORAM中.
在传感器方式下,该信号无效.
◆OUTA0~OUTA3(A组显示信号):
输出线.
◆OUTB0~OUTB3(B组显示信号):
输出线.
这两组引线都是数据输出线,与多位数字显示(LED数码管)的扫描线SL0~SL3同步.两组可以独立使用,也可以合并使用,合并使用时OUTA0为最低位,OUTB3为最高位.
◆BD(显示消隐):
输出线,低电平有效.该信号在数字切换显示或使用消隐命令时,将显示消隐.
2.2.38279键盘、显示接口电路设计
利用键盘、显示专用芯片8279能够以较简单的硬件电路和较少的软件开销实现微型机与键盘和LED显示器接口,图2—9是一个设计实例。
图中的单片机可以是8031,也可以是AT89C51。
下面讨论其硬件电路的工作原理和设计问题。
1.外时钟脉冲产生
在图2—9中,AT89C51的ALE既可用作低8位地址的锁存信号,也把它接到8279的CLK引脚用作8279的外时钟脉冲信号的输入。
脉冲信号频率并非固定不变,好在8279并不要求时钟频率固定不变,因此,这样安排还是可以的。
不过应该注意,对于MCS--51系列单片机来说,ALE脉冲频率经常是振荡周期频率fosc的六分之一,这也是MCS--51单片机的ALE最高频率,通过对8279的程序时钟命令字节的编程,8279可以对来自CLK引脚的脉冲实行2~31分频,从而得到8279内部工作所需要的100kHZ内部时钟。
如果fosc=12MHz,分频应为20。
2.译码电路
1)8279片选译码电路
对8279的片选译码电路可根据实际电路的地址分配设计。
2)键盘、显示扫描译码器
在对“键盘/显示方式设置命令字”的编程设置为编码凡是(D0=0)时,那么8279内部不译码,从SL3~SL0输出的不是键盘的列和显示器的位信号(高电平有效)。
而是列和位号的编号的BCD码(SL3是最高位)。
在这种情况下应外接译码器,对SL3~SL0译码,以产生列和位信号。
8279可以对8位或16位显示器以及8列8行键盘扫描。
在16位显示时,对显示器扫描和对键盘扫描必须各有自己的译码器,显示器采用4~16线译码器,例如74LS154;键盘采用3~8译码器,例如74LS138。
在图2—9中,只有8个显示器,适当安排,对显示器和键盘可以共用一个3~8译码器。
不过应注意,被扫描的键盘的列必须是低电平,因此应选用被选中端(Y0~Y7)为低电平的74LS138。
BD是消隐信号输出端,当BD=0时,74LS138不译码,显示器均为暗。
3.驱动电路
由74LS138输出(Y0~Y7)的显示器的位选信号和由A3~B0输出的段选信号的输出电流太小,不足以点亮LED显示器。
图2—9中采用共阴极LED:
BS202(发红光的BSR202或发绿光的BSG202),因此位驱动器选用集电极开路(OC门)同相输出门电路72LS07,段选信号由两个同相输出的功率驱动器75491提供。
在这种情况下单片机的字型码应是
表2—2“七段码(字形码)”表的内容。
图2—9中的8个5.1k为上拉电阻,用来保证A3~B0输出高电平时,达到接近+5V,使LED有足够的亮度。
4.中断请求线
在键盘中的某键按下,8279在测得其按下并在去抖动(延时10ms)之后再检测认为此键仍在按下状态,便确认此键已按下。
在8279确认某键已按下时,便把此键的键只存于FIFO寄存器中,此时FIFO内有内容,称为FIFO存储器不空。
只要FIFO存储器不空,便使IRQ为高电平,就直接通过EXINT端向8089请求中断。
但由于AT89C51的INT0或INT1是低电平或下降沿请求中断。
因此应把IRQ反相后加到AT89C51的INT1端。
当单片机读取FIFO的内容后,IRQ就回到低电平。
如果FIFO存储器中还有未读到的键值,会重新使IRQ变为高电平,向单片机请求中断。
由于FIFO存储器是先进先出RAM,因此先读走的键值对应于先按下的键。
5.SHIFT和CNTL
可用这两个键增加键盘的功能。
例如上档键和下档键。
这两键在按下时使SHIFT(或CNTL)为低电平。
当这两个弹起时,使SHIFT(或CNTL)脚悬空,但由于此两引脚内部有上拉电阻,当它们悬空时实际上是高电平
2.2.4硬件原理图
3系统软件设计
3.1程序流程图:
本系统主要由主控程序﹙实现系统的初始化、各个子程序的调用等)、脉冲分配驱动子程序(驱动步进电机的转动,使其按一定规律进行旋转)、A/D转换子程序(完成对模拟信号进行模/数转换,然后把转换成的数字量送入步进电机控制器—AT89C51芯片)、8279键盘/显示子程序(主要通过键盘设定初值并实现部分功能键的作用,然后将数据显示在LED上,以及在LED上显示当前检测的值)。
3.1.1.主程序流程图
图3—1系统的主程序流程图
3.1.28279键盘/显示流程图
图3—2键盘显示程序框图
3.1.3步进电机驱动子程序流程图
图3—3驱动子程序流程图
3.2程序清单
1.采用MCS—51汇编语言编写源程序
程序入口:
ORG0000H
LJMPMAIN
A/D转换入口:
ORG0050H
LJMPMSZH
键盘显示入口:
ORG08F0H
LJMPHA7S
步进电机驱动中断子程序入口:
ORG0003H
LJMPMAIN
2.主程序入口:
ORG0080H
MAIN:
CLRPSW
LCALLMSZH
LCALLHA7S
JZDELAY
PUSHACC
PUSHPSW
PUSHR0
LCALLSTART
LCALLDELAY
SJMPMAIN
3.A/D转化程序:
MSZH:
MOVDPTR,#0FEF8H;地址保证P2.0=0,且指向IN0
MOVR1,#40H;存数据的首址
MOVR7,#08H;采样次数
READ:
MOVX@DPTR,A;启动IN0A/D转换
HERE:
JBP3.3,HERE;INT1=1,转换未结束等待
MOVXA,@DPTR;取数据
MOVX@R1,A;存数据
INCR1
INCDPTR
DJNZR7,READ;8路未采样完继续
CLRC
SBBBA30H;计算偏差值
RET
4.8279键盘显示程序:
ORG08F0H
HA7S:
MOVSP,#53H
MOVDPTR,#0B001H
MOVA,#00H
MOVX@DPTR,A;写8279方式字
MOVA,#32H
MOVX@DPTR,A;写分频系数
MOVA,#0DFH
MOVX@DPTR,A;清显示缓冲区
HA7S1:
MOVXA,@DPTR
JBACC.7,HA7S1
MOVDPTR,#0B000H
MOVA,#0C8H
MOVX@DPTR,A;字形送入8279
INCDPTR
MOVA,#80H
MOVX@DPTR,A;字位送入8279(显示P)
HA7S2:
MOV30H,#80H
MOV31H,#40H
HA7S3:
MOVDPTR,#0B001H
MOVX,@DPTR
ANLA,#07H
CJNEA,#00H,HA7S4;有键按下吗?
AJMPHA7S3
HA7S4:
MOVDPTR,#0B000H
MOVXA,@DPTR
MOVB,A;取键值
MOVR1,#00H
MOVDPTR,#KEYTAB
HA7S5:
MOVA,#00H
MOVCA,@A+DPTR
CJNEA,BHA7S6;键值表是否相同
AJMPHA7SA;转数字键处理程序
HA7S6:
INCDPTR;键值表地址加1
INCR1;查找次数加1
MOVA,R1
JBACC.4,HA7S7;是功能键吗?
AJMPHA7S5;继续查找
HA7S7:
MOVR1,#00H
MOVDPTR,#KEYTAB1
HA7S8:
MOVA,#00H
MOVXA,@A+DPTR;取出功能键键值
CJNEA,B,HA7S9;键值相同吗?
AJMPHA7SC;转功能键处理程序
HA7S9:
INCDPTR
INCR1
MOVA,R1
JMBACC.2,HA7S8;继续查找
AJMPHA7SD;无键按下返回
HA7SD:
LJMPHA7S
HA7SA:
MOVA,30H
MOVDPTR,#0B001H
MOVX@DPTR,A;字位送入8279
MOVA,R1
MOVR0,31H
MOV@R0,31H
MOV@R0,A
INC31H;字形缓冲区加1
MOVDPTR,#CDATA
MOVCA,@A+DPTR;取字形代码
MOVDPTR,#0B000H
MOVX@DPTR,A;送8279显示
INC30H
MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 步进 电机 控制 资料