步进电机设计报告doc.docx
《步进电机设计报告doc.docx》由会员分享,可在线阅读,更多相关《步进电机设计报告doc.docx(19页珍藏版)》请在冰豆网上搜索。
![步进电机设计报告doc.docx](https://file1.bdocx.com/fileroot1/2022-11/15/7dc770e6-4987-4477-afc4-2ce852c72b88/7dc770e6-4987-4477-afc4-2ce852c72b881.gif)
步进电机设计报告doc
步进电机设计报告
一、设计要求
要求以单片机为控制核心、通过步进电机驱动芯片驱动步进电机、显示和键盘阵列,能够实现步进电机的正反转及速度控制,并且显示数据。
二、设计目的
1.本次设计用单片机完成对步进电机的正反转、速度、显示的控制。
2.强化了对单片机的了解与应用,在设计的过程中增强对问题的处理能力,将单片机在学习中的知识具体应用到具体实践当中。
同时也熟悉了对步进电机的工作原理,具体工作方式是怎么实现的有清楚地认识。
三、设计的具体实现
1.系统概述
步进电机可以对旋转角度和转动速度进行高精度控制。
步进电机作为控制执行元件,是机电一体化的关键产品之一,广泛应用在各种自动化控制系统和精密机械等领域。
随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。
步进电机和普通电动机不同之处是步进电机接受脉冲信号的控制。
现在比较常用的步进电机包括反应式步进电机、永磁式步进电机、混合式步进电机和单相式步进电机等。
其中反应式步进电机的转子磁路由软磁材料制成定子上有多相励磁绕组,利用磁导的变化产生转矩。
现阶段,反应式步进电机获得最多的应用。
步进电机和普通电机的区别主要在于其脉冲驱动的形式,正是这个特点,步进电机可以和现代的数字控制技术相结合。
不过步进电机在控制的精度、
速度变化范围、低速性能方面都不如传统的闭环控制的直流伺服电动机。
在精度不是需要特别高的场合就可以使用步进电机,步进电机可以发挥其结构简单、可靠性高和成本低的特点。
使用恰当的时候,甚至可以和直流伺服电动机性能相媲美。
2 步进电机的控制原理步进电机2个相邻磁极之间的夹角为60°。
线圈绕过相对的2个磁极,构成一相(A-A′,B-B′,C-C′)。
磁极上有5个均匀分布的矩形小齿,转子上没有绕组,而有40个小齿均匀分布在其圆周上,且相邻2个齿之间的夹角为9°。
体摩擦变为非完全液体摩擦或半干摩擦,而容易使轴瓦发生磨损烧蚀。
通过单片机按顺序给绕组施加有序的脉冲电流,就可以控制电机的转动,从而实现数字→角度的转换。
转动的角度大小与施加的脉冲数成正比,转动的速度与脉冲频率成正比,而转动方向则与脉冲的顺序有关。
以三相步进电机为例,电流脉冲的施加共有3种方式。
(1)单相三拍方式(按单相绕组施加电流脉冲):
→A→B→C→正转;→A→C→B→反转。
(2)双相三拍方式(按双相绕组施加电流脉冲):
→AB→BC→CA→正转;→AC→CB→AB→反转。
(3)三相六拍方式(单相绕组和双相绕组交替施加电流脉冲):
→A→AB→B→BC→C→CA→正转;→A→AC→C→CB→B→BA→反转。
单相三拍方式的每一拍步进角为3°,三相六拍的步进角则为1.5°,因此,在三相六拍下,步进电机的运行反转平稳柔和,但在同样的运行角度与速度下,三相六拍驱动脉冲的频率需提高1倍,对驱动开关管的开关特性要求较高。
常见的步进电机分三种:
永磁式(PM),反应式(VR)和混合式(HB),永磁式步进一般为两相,转矩和体积较小;反应式步进一般为三相,可实现大转矩输出,但噪声和振动都很大。
混合式步进是指混合了永磁式和反应式的优点,它又分为两相和五相,应用最为广泛。
单片机管脚输出电压一般不足以驱动步进电机转动,所以需要在单片机和步进电机之间加入驱动电路。
步进电机常用的驱动方式是全电压驱动,即在电机移步与锁步时都加载额定电压。
为了防止电机过流及改善驱动特性,需加限流电阻。
由于步进电机锁步时,限流电阻要消耗掉大量的功率,故限流电阻要有较大的功率容量,并且开关管也要有较高的负载能力。
步进电机的另一种驱动方式是高低压驱动,即在电机移步时,加额定或超过额定值的电压,以便在较大的电流驱动下,使电机快速移步;而在锁步时,则加低于额定值的电压,只让电机绕组流过锁步所需的电流值。
这样,既可以减少限流电阻的功率消耗,又可以提高电机的运行速度,但这种驱动方式的电路要复杂一些。
驱动脉冲的分配可以使用硬件方法,即用脉冲分配器实现。
现在,脉冲配器已经标准化、芯片化,市场上可以买到。
但硬件方法结构复杂,成本也较高。
步进电机控制(包括控制脉冲的产生和分配)也可以使用软件方法,即用单片机实现,下面给出具体的使用单片机以软件方式驱动步进电机的实现方法。
因为步进电机的控制是通过脉冲信号来控制的,将电脉冲信号转变为角位移或线位移的开环控制元件。
所以怎样产生这个脉冲信号和产生怎样的信号是电机控制的关键。
用软件控制单片机产生脉冲信号,通过单片机的P1口输出脉冲信号,因为所选电机是两相的,所以只需要P1口的低四位P1.0~P1.3分别接到电机的四根电线上。
可以通过调整输出脉冲的频率来调整电机的转速,通过改变输入脉冲的顺序来改变转动方向,P0口接LED数码管,可以显示当前的电机转速和转向,设置复位键可使正在转动的电机停止转动。
p0.0~p0.7
AT89C51
单片机
p2.0~p2.3
p1.0~p1.3
p3.0~p3.4
四位数码显示管
控制按键
复位部分
步进电机
驱动
部分
外部晶
振电路
图1
2.单元电路设计
步进电机
使用的是两相混合式步进电机,型号为42H33H-1334A,最小电压为2.8V,最小电流为1.33A,电阻为2.1Q,电感为2.5H,静转矩2.2kg·cmpl。
采用AT89S52单片机、1602液晶显示屏。
微处理器的选择
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器和128bytes随机存取数据存储器的低电压、高性能8位微处理器。
片内置通用8位中央处理器,采用ATMEL公司的高密度、非易失性存储技术的生产,兼容标准MCS-51指令系统。
AT89C51提供以下标准功能:
4K字节Flash闪存存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器;一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一次硬件复位。
用AT89C51足以实现对步进电机的简单控制。
图2
时钟电路
时钟电路是用于产生单片机工作时所必需的时钟信号。
时钟是单片机的心脏,单片机各功能部件的运行都是以时钟频率为基准的,有条不紊地一拍一拍地工作。
时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。
在本系统中采用外部时钟方式的电路,如图所示:
图3
控制电路的实现
常规步进电机的驱动是用ULN达林顿驱动器实现的,其内部含有多个达林顿管,适于感性负载的驱动。
本文所设计的步进电机控制驱动器的框路图如图:
图4
L297芯片是一种硬件环分集成芯片,可产生四相驱动信号,用于计算机控制的两相双极或四相单极步进电机。
其内部主要部分是一组译码器,能产生各种所需的相序。
这一部分是由两种输入模式控制,方向控制(CW/CCW)和HALF/FULL,以及步进式时钟CLOCK,能将译码器从一阶梯推进至另一阶梯。
译码器有四个输出点连接到输出逻辑部分,提供抑制和斩波功能所需的相序。
因此L297能产生三种相序信号,对应于三种不同的工作方式:
即半步方式(HALFSTEP),基本步距(FULLSTEP,整步)一相激励方式,基本步距两相激励方式。
脉冲分配器内部是一个3bit可逆计数器,加上组合逻辑产生每周期8步格雷码时序信号,就是半步工作方式的时序信号,此时HALF/FULL信号为高电。
若HALF/FULL取低电平,得到基本步距工作方式,即双四拍全阶梯工作方式。
L297另一个重要组成是由两个PWM斩波器来控制相绕组电流,实现恒流斩波控制以获得良好的矩频特性。
每个斩波器由一个比较器、一个RS触发器和外接采样电阻组成,并设有一个公用振荡器,向两个斩波器提供触发脉冲信号。
L298是一种高压、大电流双全桥式驱动器,其设计是为接受标准TTL逻辑电平信号和驱动电感负载的,例如继电器、圆筒形线圈、直流电动机和步进电动机等。
L298具有两抑制输入,可使器件不受输入信号影响。
每桥的三级管的射极是连接在一起的,相应外接线端可用来连接外设传感电阻,还可安置另一输入电源,使逻辑能在低电压下工作。
L298芯片是具有15个引出脚的多瓦数直插式封装的集成芯片。
由L297和L298所组成的步进电机控制电路如图:
图5
这种控制电路的优点是需要的元件较少,装配线路简单,成本低,可靠性高,占空间少。
控制电路所需信号也比较简易,可以简化和减轻微型计算机的负担。
另外,L297和L298都是独立的芯片,所以组合和控制十分灵活。
但缺点是,所控制的电机类型以及运行方式会受芯片限制。
键盘及显示电路
本设计键盘采用低电平有效的独立键盘,用位运算进行键盘扫描。
显示选用1602液晶显示器,可同时显示两部电机的运行速度,加入通信串口。
系统的仿真与调试
仿真时,先完成由键盘控制的一台步进电机的加速减速控制,确定键盘扫描、电机走步等的基本算法是否可行。
之后开辟新的接口,对另一台电机控制,新变量的加入使两台电机的异步运行十分容易。
最后仿真串行接口的通讯与控制。
3.软件程序设计
程序
#include
#include
#include
intdelay();
voidinti_lcd();
voidshow_lcd(inti);
voidcmd_wr();
voidShowSpeed();
voidkey_scan();
voidcod_scan();
voiddelayms(intms);
voidsend_char(unsignedcharout);
sbitRS=P2^4;//定义LCD的端口物理地址
sbitRW=P2^5;
sbitE=P2^6;
charSpeedChar1[]="V1(n/min):
";//显示变量
charSpeedChar2[]="V2(n/min):
";
charSPEED1[3]="050";
charSPEED2[3]="050";
charforward='f',
backforward='b';
unsignedintRunSpeed1=50;//运算变量
unsignedintRunSpeed2=50;
unsignedintcnt1=0;
unsignedintcnt2=0;
unsignedintcod;
bitRunDir1=1,RunDir2=1;//运行状态(起始为正方向)
bitContrl=0;//控制状态(起始为按键控制)
unsignedchartemp;//串口变量
voidInit_RS232(void)
{
TL1=0Xfd;
TH1=0Xfd;//波特率为9600(fd),4800(fa),2400(f4)
SCON=0x50;//设定串行口工作方式
PCON&=0xef;//波特率不倍增
TR1=1;
}
main()
{
TMOD=0x21;//定时器工作方式
EA=1;//开中断
TR0=0;//关闭计数器0
TH0=(65535-1000)>>8;//定时器0初值,即1ms中断一次
TL0=(65535-1000)&0x00ff;
PT0=1;//定时器0高优先级中断
ET0=1;//定时器0中断允许
TR0=1;//启动计数器0
Init_RS232();
inti_lc