zl小功率步进电机综述.docx
- 文档编号:25681901
- 上传时间:2023-06-11
- 格式:DOCX
- 页数:22
- 大小:433.32KB
zl小功率步进电机综述.docx
《zl小功率步进电机综述.docx》由会员分享,可在线阅读,更多相关《zl小功率步进电机综述.docx(22页珍藏版)》请在冰豆网上搜索。
zl小功率步进电机综述
摘要:
本设计通过单片机AT89C51对步进电机进行控制,通过IO口输出的具有时序的方波作为步进电机的控制信号。
主要介绍了步进电机控制器、驱动电路和LED显示电路的设计,实现了步进电机的控制。
单片机考虑接受来自RS232的速度控制指令,通过单片机转换成步进电机的走步脉冲,同时对2只步进电机的连续速度控制。
LED数码管显示电机运行状态,通过速度与走步脉冲的关系,实现加速、减速和恒速工作。
关键词:
单片机、步进电机、调速控制、AT89C51
1、步进电机的概述....................................1
1.步进电机的概念..................................1
2.步进电机的发展概况..............................1
3.步进电机速度与走步脉冲的关系....................2
二、设计的任务要求与思路..............................3
1.设计任务要求....................................3
2.设计思路........................................4
三、硬件的设计与实现..................................6
1.控制电路........................................6
2.最小系统以及AT89C51单片机简介..................7
3.电源模块.......................................9
4.驱动电路以及步进电机............................10
5.显示模块.......................................12
6.RS232串口通讯模块................................13
四、软件的设计与实现..................................13
1.系统总体框图...................................13
2.四位八段LED数码管显示代码......................14
3.PWM调节输出模块代码............................17
4.1*8距阵键选择模块程序.........................19
五、课程设计总结......................................22
六、附录:
电路总原理图.................................23
七、参考文献..........................................24
小功率步进电机速度控制系统设计报告
1、步进电机的概述
1.步进电机的概念:
步进电机是一种将电脉冲信号变换成相应的角位移或直线位移的机电执行元件。
控制步进电机的输入脉冲数量、频率及电机各相绕组的接通顺序,可以得到各种需要的运行特性。
单片机控制的步进电机广泛地应用于工业自动控制、数控机床、组合机床、机器人、计算机外围设备、照相机,大型望远镜,卫星天线定位系统等等。
随着经济的发展技术的进步和电子技术的发展,步进电机的应用领域更加广阔,同时也对步进电机的运行性能提出了更高的要求。
步进电机是一种能将电脉冲信号转换成角位移或线位移的机电元件步进电机控制系统主要由步进控制器,功率放大器及步进电机等组成。
采用单片机控制,用C语言编写软件代替上述步进控制器,使得线路简单,成本低,可靠性大大增加。
软件编程可灵活产生不同类型步进电机励磁序列来控制各种步进电机的运行方式。
2.步进电机的发展概况:
步进电机的原始模型起源于1830年至1860年。
1870年前后开始以控制为目的的尝试,应用于氩弧灯的电极输送机构中,这被认为最早的步进电机。
1950年后期晶体管的发明也逐渐应用在步进电机上,对于数字化的控制变得更为容易。
到20世纪60年代后期在步进电机本体方面随着永磁材料的发展,各种实用性步进电机应运而生。
步进电机往后经过不断改良,使得今日步进电机已广泛运用在需要高定位精度、高分解能、高响应性、信赖性等灵活控制性高的机械系统中。
在生产过程中要求自动化、省人力、效率高的机器中,我们很容易发现步进电机的踪迹,尤其以重视速度、位置控制、需要精确操作各项指令动作的灵活控制性场合步进电机用得最多。
步进电机是机电一体化的关键产品之一,被广泛应用在各种自动化控制系统中,随着微电子和计算机技术的发展,它的需要量与日俱增,在各个国民经济领域都有应用。
步进电机是机电数字控制系统中常用的执行元件,由于其精度高、体积小、控制方便灵活,因此在智能仪表和位置控制中得到了广泛的应用,大规模集成电路的发展以及单片机技术的迅速普及,为设计功能强,价格低的步进电机控制驱动器提供了先进的技术和充足的资源。
3.步进电机速度与走步脉冲的关系
步进电机是数字控制电机,它将脉冲信号转变成角位移,即给一个脉冲信号,步进电机就转动一个角度,因此非常适合于单片机控制。
步进电机区别于其他控制电机的最大特点是:
它是通过输入脉冲信号来进行控制的,即电机的总转动角度由输入脉冲数决定,而电机的转速由脉冲信号频率决定。
该设计采用的电机为四相步进电机。
采用单极性直流电源供电。
只要对步进电机的各相绕组按合适的时序通电,就能使步进电机转动。
当某一相绕组通电时,对应的磁极产生磁场,并与转子形成磁路,这时,如果定子和转子的小齿没有对齐,在磁场的作用下,由于磁通具有力图走磁阻最小路径的特点,则转子将转动一定的角度,使转子与定子的齿相互对齐,由此可见,错齿是促使电机旋转的原因。
对步进电机的控制主要有分散器件组成的环形脉冲分配器、软件环形脉冲分配器、专用集成芯片环形脉冲分配器等。
本设计利用单片机进行控制,主要是利用软件进行环形脉冲分配。
四相步进电机的工作方式为四相单四拍,双四拍和四相八拍工作的方式。
各种工作方式在电源通电时的时序与波形分别如图所示。
图1时序与波形图
本设计的电机工作方式为四相单四拍,根据步进电机的工作的时序和波形图,总结出其工作方式为四相单四拍时的脉冲分配规律,四相双四拍的脉冲分配规律,在每一种工作方式中,脉冲的频率越高,其转速就越快,但脉冲频率高到一定程度,步进电机跟不上频率的变化后电机会出现失步现象,所以脉冲频率一定要控制在步进电机允许的范围内。
二、设计的任务要求与思路
1.设计任务要求
设计以单片机为内核的小功率步进电机速度控制器。
单片机考虑接受来自RS232的速度控制指令,通过单片机转换成步进电机的走步脉冲,同时对2只步进电机的连续速度控制。
要求讨论速度与走步脉冲的关系,并实现加速、减速和恒速工作。
硬件的设计选择计算机51内核的单片机,设计支持计算机工作的外围电路,讨论加速、减速和恒速工作方式下的控制策略;设计步进电机驱动电路,设计键盘、显示接口电路,考虑设计RS232串行通讯通口还要包括电源等相关电路的设计方案。
软件设计分配系统资源,编写系统初始化和主程序模块。
步进电机控制信号输入程序以及步进电机控制程序设计,显示与键盘等处理程序其它程序模块。
2.设计思路
步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。
在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度,它的旋转是以固定的角度一步一步运行的。
可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。
单片机使用AT89c51,通过控制模块发出信号,经单片机处理后,向步进电机的驱动器和状态显示模块发出触发信号,使得步进电机接收到驱动器的触发信号,就开始动作。
状态显示模块显示当前步进电机的转速。
电源为各个模块提供电能,让每个模块都能正常工作的基础。
步进电机不能识别单片机发出的信号,应有驱动模块将单片机发出的信号进行转换、放大;才可以让步进电机做出相应的动作;驱动器在这里起到桥梁作用,为单片机与步进电机的连接而采用的;步进电机有单、双拍及单双混合式工作方式,课程设计采用四相五线式步进电机(双四拍工作方式),驱动模块应具备四根相线,才能满足步进电机的要求,驱动模块选取ULN2003芯片,ULN2003特点是低电压,低功率控制元件,符合课程设计要求;现在是智能化的时代,通过PC机发出要求,硬件做出相应的反馈动作,课程设计的控制模块就涉及到PC机,通过单片机串口通信,就可以与PC机连接、通信,这样就可以远距离,可监视、控制步进电机的运转速度;显示模块通过一对四联式的数码管构成,能够时时刻刻反映电机的状态,PC机与数码管都可以显示电机的运转速度,二者的区别在于数码管是固定在某个地方,给人指示的作用,而PC机是作为控制而显示的;各个模块都是独立的个体,软件程序是将整个模块合理的统一调度起来,完成课程设计任务。
图2步进电机速度控制系统原理框图
3、硬件的设计与实现
1.控制电路
据系统的控制要求,控制输入部分设置了启动控制,换向控制,加速控制和减速控制按钮,分别是K1、K2、K3、K4、K5、K6、K7、K8,控制电路如下图所示。
通过K1、K2、K3选择单相、二相、一二相驱动;通过K4、K5选择正转、反转;通过K6、K7控制转速,K8控制系统回复初始状态或重置状态。
根据步进电机的工作原理可以知道,步进电机转速的控制主要是通过控制通入电机的脉冲频率,从而控制电机的转速。
对于单片机而言,主要的方法有:
软件延时和定时中断在此电路中电机的转速控制主要是通过定时器的中断来实现的,该电路控制电机加速度主要是通过K6、K7的断开和闭合,从而控制外部中断根据按键次数,改变速度值存储区中的数据(该数据为定时器的中断次数),这样就改变了步进电机的输出脉冲频率,从而改变了电机的转速。
图3键盘开关电路
2.最小系统以及AT89C51单片机简介
单片机最小系统或者称为最小应用系统,就是用最少的元件组成的单片机可以工作的系统,对51系列单片机来说,最小系统一般应该包括:
单片机、复位电路、晶振电路。
如图3所示。
图4最小系统
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器和128bytes随机存取数据存储器的低电压、高性能CMOS8位微处理器。
片内置通用8位中央处理器,采用ATMEL公司的高密度、非易失性存储技术的生产,兼容标准MCS-51指令系统。
AT89C51提供以下标准功能:
4K字节Flash闪存存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器;一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲方式停止CPU的工作,但允许RAM、定时/计数器、串行通信及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其他所有部件工作直到下一次硬件复位。
用AT89C51足以实现对步进电机的简单控制。
89C51单片机其管脚图如图4所示,其各引脚功能如下:
VCC:
供电电压。
GND:
接地。
P0~P3口:
4个8位I/O端口,每个端口既可以用作输入,也可用作输出。
P3口也可作为AT89C51的一些特殊功能口。
P3.0RXD(串行输入口);
P3.1TXD(串行输出口);
P3.2/INT0(外部中断0);
P3.3/INT1(外部中断1);
P3.4T0(计时器0外部输入);
P3.5T1(计时器1外部输入);
P3.6/WR(外部数据存储器写选通);
P3.7/RD(外部数据存储器读选通)。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
图589C51芯片引脚图
ALE:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,CPU只访问片外ROM程并执行外部存储器中的指令;当/EA端保持高电平时,CPU只访问片内FlashROM并执行内部存储器中的指令。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
3.电源模块
电源是各种电子系统与设备的源动力,电源系统出故障,会使整个电子设备不能正常工作,因此电源性能的好坏直接影响到系统与设备工作质量和效率。
在电子电路中,通常都需要电压稳定的直流电源供电,直流稳压电源是一种性能接近理想电压源的直流电源。
通过变压,整流,滤波,稳压,使电源输出某一稳定电压值。
系统所用电源模块电路如下图所示:
图6电源模块电路图
线性稳压电源由变压、整流、滤波和稳压三个部分组成。
变压是将输入的220V的交流电变成所需大小的交流电;整流指把大小、方向都变化的交流电变成单向脉动的直流电;滤波指滤除脉动直流电中的交流成分,使得输出波形平滑;稳压指输入电压波动或负载变化引起输出电压变化时,能自动调整使输出电压维持在原值。
图7直流稳压电源的组成
4.驱动电路以及步进电机
步进电机是工业过程控制及仪表控制的主要控制元件之一,它具有以下几个显著特点:
步进电机可以直接接受数字信号,而不再需要进行D/A转换;
步进电机具有快速启、停能力,可在一刹那间实现启动或停止。
步进电机具有精度高,步距角可由每步90°降低到0.36°。
步进电机由于精度高及不用传感器,故定位精确。
进电机不能直接接到工频交流或直流电源上工作,而必须使用专用的步进电动机驱动器,如下图所示。
它由脉冲发生控制单元、功率驱动单元、保护单元等组成。
驱动单元与步进电动机直接耦合,也可理解成步进电动机微机控制器的功率接口。
图8步进电机驱动电路原理框图
通过ULN2803构成驱动电路,电路图如下图所示。
通过单片机的P3.4~P3.7输出脉冲到ULN2003的1B~4B口,经信号放大后从1C~4C口分别输出到电机的A、B、C、D相。
图9驱动电路电路图
5.显示模块
本设计采用四位共阳极七段数码管动态显示,用来显示。
它将所有数码管的8个段线相应地并接在一起,并接到AT89C51,由P2口控制字段输出。
而各位数码管的共阳极由AT89C51的P0口控制Q2-Q5来实现4位数码管的位输出控制。
由于单片机内P0口没有上拉电阻,单片机上的P0口需接上上拉电阻,同时段码和P2口之间需要加限流电阻。
图10显示模块电路
这样,对于一组数码管动态扫描显示需要由两组信号来控制:
一组是字段输出口输出的字形代码,用来控制显示的字形,称为段码;另一组是位输出口输出的控制信号,用来选择第几位数码管工作,称为位码。
由于各位数码管的段线并联,段码的输出对各位数码管来说都是相同的。
因此,同一时刻如果各位数码管的位选线都处于选通状态的话,4位数码管将显示相同的字符。
若要各位数码管能够显示出与本位相应的字符,就必须采用扫描显示方式。
即在某一时刻,只让某一位的位选线处于导通状态,而其它各位的位选线处于关闭状态。
同时,段线上输出相应位要显示字符的字型码。
这样同一时刻,只有选通的那一位显示出字符,而其它各位则是熄灭的,如此循环下去,就可以使各位数码管显示出将要显示的字符。
虽然这些字符是在不同时刻出现的,而且同一时刻,只有一位显示,其它各位熄灭,但由于数码管具有余辉特性和人眼有视觉暂留现象,只要每位数码管显示间隔足够短,给人眼的视觉印象就会是连续稳定地显示。
6.RS232串口通讯模块
本设计采用RS232串行通讯通口,来实现计算机与单片机的通信。
其具体的电路图如下图所示。
图11通讯串口模块电路
4、软件的设计与实现
1.系统总体框图
单片机是系统的核心,主要承担控制信号的接受,逻辑分析和运算,控制量的输出和显示的运算和输出等功能。
本程序采用模块化设计,针对上述功能主要包括主函数、键盘扫描、串口中断、计时中断和显示程序几个模块。
其中,主函数主要负责对单片机、内部元件及中断等工作方式进行定义和设定,并协调好各模块之间的运行时序,其流程图如下:
图12系统总体框图
2.四位八段LED数码管显示代码
部分代码如下:
#include"reg52.h"
#include"intrins.h"//_nop_();延时函数用
#defineDisdataP0//段码输出口
#definediscanP2//扫描口
#defineucharunsignedchar
#defineuintunsignedint
sbitDQ=P3^3;//电压输入口
sbitDIN=P0^7;//LED小数点控制
sbitk5=P1^4;
ucharup_alarm=20;
uinth;
ucharflag;
//**************电压小数部分用查表法***********//
ucharcodeditab[16]=
{0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,0x08,0x08,0x09,0x09};
//
ucharcodedis_7[12]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff,0xbf};
//共阳LED段码表"0""1""2""3""4""5""6""7""8""9""不亮""-"
ucharcodescan_con[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};//列扫描控制字
uchardatatemp_data[2]={0x00,0x00};//读出电压暂放
uchardatadisplay[8];//显示单元数据,共4个数据和一个运算暂用
/***********11微秒延时函数**********/
voidser_init()
{
TMOD=0X20;
SCON=0X50;
TH1=0XFD;
TL1=0XFD;
TR1=1;
}
voiddelay(uintt)
{
for(;t>0;t--);
}
/***********显示扫描函数**********/
scan()
{
chark;
for(k=0;k<7;k++)//四位LED扫描控制
{
Disdata=0xff;
Disdata=dis_7[display[k]];
if(k==4){DIN=0;}
discan=scan_con[k];delay(200);
discan=0xff;
}
}
.............
3.PWM调节输出模块代码
部分代码如下:
#include
unsignedintpulse_width_MAX=0xF0;//;PWM脉宽最大值,占空比=93.75%
unsignedintpulse_width_MIN=0x10;//;PWM脉宽最小值,占空比=6.25%
unsignedintstep=0x38;
unsignedintpulse_width;
unsignedinti,j;
unsignedcharstate;
voidPCAinit();//PCA模块初始化
voiddelay1ms(unsignedintTIME);//1ms延时程序(大概是1ms)
voidwork0_enter();//调节占空比
voidwork1_add();//调节占空比
voidwork2_sub();//调节占空比
voidwork3_stop();//调节占空比
voidst();//用来表示pulse_width的状态函数
voidmain(void)
{
EA=0;
PCAinit();//初始化PCA定时器
zhankongbi();
}
voidPCAinit()
{
CMOD=0x80;//PCA在空闲模式下停止PCA计数器工作
//PCA时钟模式为fosc/12
//禁止PCA计数器溢出中断
CCON=0x00;//禁止PCA计数器工作,清除中断标志、计数器溢出标志
CL=0X00;//清0计数器
CH=0X00;
//下面设置模块0为8位PWM输出模式,PWM无需中断支持。
脉冲在P3.7(第11脚)输出
CCAPM0=0x42;//PCA(计数器阵列)模块0的工作模式:
8位PWM工作模式
PCA_PWM0=0x00;//赋值为0,pwm才能有高电平输出
//下面设置模块1为8位PWM输出模式,PWM无需中断支持。
脉冲在P3.5(第9脚)输出
CCAPM1=0x42;//PCA(计数器阵列)模块1的工作模式:
8位PWM工作模式
PCA_PWM1=0x00;//赋值为0,pwm才能有高电平输出
EPCA=1;//开PCA中断
EA=1;//开总中断
CR=1;//将PCA计数器打开
}
voiddelay1ms(unsignedintTIME)
{
for(i=0;i
for(j=0;j<400;j++)
{;}
}
voidst()
{
if(pulse_width==pulse_width_MIN)
state=0;
if(pulse_width==pulse_width_MAX)
state=1;
}
.............
4.1*8距阵键选择模块程序
部分代码如下:
#include
#include
#include
#include
voidkeyscan();
voiddisp();
voidwork0_enter();
voidwork1_add();
voidwork2_sub();
voidwork3_stop();
voidmain()
{
t400ms=100;
buf4=0xff;
keycnt=0x05;//去抖延时器
TMOD=0X01;//定时器0工作发生1
TH0=0XF0;//定时器设初值,定5MS
TL0=0X60;
TR0=1;//开定时
while
(1)
{
while(!
TF0);
TF0=0;//5ms到主循环一次
TH0=0XF0;
TL0=0X60;
keyscan();//调用按键扫描
disp();
switch(sta)
{case0:
work0_enter();break;//指定电压值输入
case1:
w
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- zl 功率 步进 电机 综述