用PWM 细分步进电机,包含原理和程序

用PWM 细分步进电机,包含原理和程序
用PWM 细分步进电机,包含原理和程序

用PWM细分步进电机,包含原理和程序

农民讲习所 

这是俺一个关于打印机项目中步进马达中的内容,使用的原理为电流矢量图(a),为减少矢量表的误差,改进为(g).(误差大的时候,Ia和Ib的绝对值变大,角度不变,即比例不变) 

 

磁场合成决定步进马达当前的位置。 

我们常用的是图(b),用电压驱动时和线圈个数有关系,直接驱动它们,合成的最小角度都是固定的。 

细分最常见的是电流细分,电流引起的磁场的合成就决定马达的角度。所以我们一般用电流合成图来代替磁场合成图。用电流合成电路复杂一点(用MCU+DA+L298实现也不难)。 

 

这里俺用PWM方式,用控制电压的方式代替电流。原因:在电压稳定后,线圈的电流和电压成正比。稳定是PWM细分的要点,也决定马达速度不能太高。 

 

在细分的情况下,电机分两相和四相是没意义的。可以把四相电机当两相使用。 

 

下面是俺的程序,使用MEGA16,因为有PWM。 

 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

//2相步进马达驱动 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

#define Step_OutMode() DDRB|=BIT(6)|BIT(7) 

#define Step_InMode() DDRB&= ̄(BIT(6)|BIT(7)) 

#define Step_ReadIO() (PORTB&(  ̄(BIT(6)|BIT(7)) )) 

#define Step_WriteIO(x) PORTB=x 

 

struct Motor2P_Table{ //细分表结构 

unsigned char mQuadrant; //象限0-3 

unsigned char mX_Pwm; //x输出的PWM 

unsigned char mY_Pwm; //y输出的PWM 

}; 

 

struct Motor2P{ 

unsigned char mTableId; //细分表ID 

unsigned char mTask; //马达驱动的任务转移号 

 

unsigned char mSaveTimer; //马达驱动节电模式使用的计数器 

 

unsigned char mReg; //马达驱动使用的寄存器 

unsigned char mTimer; //对2MS的计数器,时间扩展 

 

unsigned int mSteps; //马达要走的步数 

unsigned char mDirect; //马达走动方向 

 

unsigned char mStepRunTimer; //步进时输出有效的时间寄存器 

unsigned char mStepIdleTimer; //步进时输出节电的时间寄存器 

unsigned char mStepCount; //细分表走动步长。1-2-4-8-16 

}; 

 

//------------------------------------------------------------ 

#ifdef dMotor2P_Main 

#define Motor2P_Head 

#else 

#define Motor2P_Head extern 

#endif 

 

Motor2P_Head struct Motor2P sMotor2P; //定义变量 

Motor2P_Head void Motor_Steps(unsigned char fDirect,unsigned int mSteps);//马达走动.fDirect=1,0->3,顺时针.步数.要先检查Motor_State()==1才调用 

Motor2P_Head void Motor_Init(void); //马达构造函数 

Motor2P_Head void Motor_Destory(void); //马达析构函数 

 

//返回马达状态。>0:空闲 

#define Motor_State() (sMotor2P.mSteps==0) 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

//2相步进马达驱动 

//采用PWM细分。 

//原理:正弦波矢量扩展到正方形矢量 

//细分数为2的整数 

//节电时电流为平常的N/8。 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

#include <iom16v.h> 

#include <macros.h> 

#include <string.h> 

 

#include "Const.h" 

#include "System.h" 

 

#define dMotor2P_Main 

#include "Motor2P.h" //主程序中定义,直接定义变量 

 

#define dStepRunTime 1 //N*2ms,输出有效的时间 

#define dStepIdleTime 1 //输出节电的时间.1->无.改变速度在此改变。 

 

#define dSaveCurrentLimit 10 // dSaveCurrentLimit/16处为节电的比例点。 

 

#define dIdleTimeMax 100 //进入IDLE需要的空闲时间.基于2ms. 

 

enum Motor_State{ 

eMotor_Idle_Process, //下电过程 

eMotor_Stop_State, //未启动 

eMotor_PowerOn_Process, //上电 

eMotor_PowerOnDelay_Process, //上电到正常工作的延时 

eMotor_Normal_State, //正常工作中 

eMotor_StepDelay_Process, //进入步进处理延时过程 

eMotor_IdleDelay_Process, //进入节电处理延时过程 

}; 

 

#define Step_Quadrant0 BIT(6)|BIT(7) 

#define Step_Quadrant1 BIT(7) 

#define Step_Quadrant2 0 

#define Step_Quadrant3 BIT(6) 

 

//0-90度的细分的PWM数据(0-255).n是细分=16.x=cos(a)*255,y=a/tg(a)(正弦转多边,减少误差).逆时针表,半周期。 const struct Motor2P_Table cMotor2P_Table[]= 

{ 

//第一象限 +x,+y 

Step_Quadrant0,255,0 , 

Step_Quadrant0,254,25 , 

Step_Quadrant0,251,50 , 

Step_Quadrant0,244,74 , 

Step_Quadrant0,237,98 , 

Step_Quadrant0,211,141 , Step_Quadrant0,195,160 ,

Step_Quadrant0,180,180 , Step_Quadrant0,160,195 , Step_Quadrant0,141,211 , Step_Quadrant0,121,226 , Step_Quadrant0,98 ,237 , Step_Quadrant0,74 ,244 , Step_Quadrant0,50 ,251 , Step_Quadrant0,25 ,254 ,

//第二象限 -x,+y 

Step_Quadrant1,0 ,255 , Step_Quadrant1,25 ,254 , Step_Quadrant1,50 ,251 , Step_Quadrant1,74 ,244 , Step_Quadrant1,98 ,237 , Step_Quadrant1,121,226 , Step_Quadrant1,141,211 , Step_Quadrant1,160,195 ,

Step_Quadrant1,180,180 , Step_Quadrant1,195,160 , Step_Quadrant1,211,141 , Step_Quadrant1,226,121 , Step_Quadrant1,237,98 , Step_Quadrant1,244,74 , Step_Quadrant1,251,50 , Step_Quadrant1,254,25 ,

//第三象限 -x,-y 

Step_Quadrant2,255,0 , Step_Quadrant2,254,25 , Step_Quadrant2,251,50 , Step_Quadrant2,244,74 , Step_Quadrant2,237,98 , Step_Quadrant2,226,121 , Step_Quadrant2,211,141 , Step_Quadrant2,195,160 ,

Step_Quadrant2,180,180 , Step_Quadrant2,160,195 , 

Step_Quadrant2,121,226 , 

Step_Quadrant2,98 ,237 , 

Step_Quadrant2,74 ,244 , 

Step_Quadrant2,50 ,251 , 

Step_Quadrant2,25 ,254 , 

 

//第四象限 +x,-y 

Step_Quadrant3,0 ,255 , 

Step_Quadrant3,25 ,254 , 

Step_Quadrant3,50 ,251 , 

Step_Quadrant3,74 ,244 , 

Step_Quadrant3,98 ,237 , 

Step_Quadrant3,121,226 , 

Step_Quadrant3,141,211 , 

Step_Quadrant3,160,195 , 

 

Step_Quadrant3,180,180 , 

Step_Quadrant3,195,160 , 

Step_Quadrant3,211,141 , 

Step_Quadrant3,226,121 , 

Step_Quadrant3,237,98 , 

Step_Quadrant3,244,74 , 

Step_Quadrant3,251,50 , 

Step_Quadrant3,254,25 , 

}; 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //马达走动 

//入口:方向.fDirect=1,0->3,顺时针. 

// 步数 

//要先检查Motor_State()==1才调用 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ void Motor_Steps(unsigned char fDirect,unsigned int mSteps) 

{ 

sMotor2P.mDirect=fDirect; 

sMotor2P.mSteps =mSteps; 

} 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //输出马达能量(电压->电流) 

//入口:mId=细分驱动表 

// mNum=节电比例,16倍缩小,mNum倍放大 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

static void InMotor_Energy(unsigned char mId,unsigned char mNum) 

{ 

const struct Motor2P_Table *pcMotor2P_Table; 

unsigned char i; 

unsigned char x; 

unsigned char y; 

 

pcMotor2P_Table=&cMotor2P_Table[mId]; 

 

x=(unsigned int)( pcMotor2P_Table->mX_Pwm *mNum) >>4; 

y=(unsigned int)( pcMotor2P_Table->mY_Pwm *mNum) >>4; 

 

PushInterrupt(); 

CLI(); 

i=Step_ReadIO()|pcMotor2P_Table->mQuadrant; //方向,因为PWM变化慢,所以方向后改变 

OCR1A=x; 

OCR1B=y; 

Step_WriteIO(i); 

PopInterrupt(); 

} 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

//马达走动一步 

//入口:方向.fDirect=1,0->3,顺时针 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

static void InMotor_DirecctStep(unsigned char fDirect) 

{ 

if(fDirect){ 

if(sMotor2P.mTableId==0)sMotor2P.mTableId=sizeof(cMotor2P_Table)/sizeof(struct 

Motor2P_Table)-sMotor2P.mStepCount; 

else sMotor2P.mTableId-=sMotor2P.mStepCount; 

} 

else { 

sMotor2P.mTableId+=sMotor2P.mStepCount; 

if(sMotor2P.mTableId==sizeof(cMotor2P_Table)/sizeof(struct Motor2P_Table) )sMotor2P.mTableId=0; } 

} 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

//马达构造函数 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

void Motor_Init(void) 

{ 

//变量初始化 

memset( (unsigned char *)(&sMotor2P),0,sizeof(struct Motor2P) ); 

sMotor2P.mTimer=sMotor2P.mStepRunTimer=dStepRunTime; //输出有效的时间,设置步进时间 

sMotor2P.mStepIdleTimer=dStepIdleTime; //输出节电的时间 

sMotor2P.mSaveTimer = dIdleTimeMax; //可以判断忙否。>0不忙. 

sMotor2P.mStepCount=1; //最大16无插值.1-2-4-8-16. 

 

//T2初始化。马达驱动 

// OCR2=106; //马达定时时间,决定马达的最大速度 OCR2=150; //马达定时时间,决定马达的最大速度 TCCR2=BIT(WGM21)|BIT(CS21); 

TIMSK|=BIT(OCIE2); 

 

//PWM初始化,使用T1的PWM,8bit 

OCR1A=OCR1B=0; 

TCCR1B=BIT(CS10); //1分频 

TCCR1A=BIT(COM1A1) | BIT(COM1B1) |BIT(WGM10); //8位PWM,OC1A,OC1B 

DDRB|=BIT(1)|BIT(2); 

 

//控制口初始化 

Step_OutMode(); 

} 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

//马达析构函数 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

void Motor_Destory(void) 

{ 

TCCR2=0; 

TIMSK&= ̄BIT(OCIE2); 

 

TCCR1B=TCCR1A=0; 

DDRB&= ̄(BIT(1)|BIT(2)); 

 

Step_InMode(); 

} 

 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

//中级线程 

//马达驱动使用 

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 

#pragma interrupt_handler timer2_comp_isr:iv_TIMER2_COMP 

void timer2_comp_isr(void) 

{ 

switch(sMotor2P.mTask){ 

case eMotor_Idle_Process: //下电过程.==0 

if(--sMotor2P.mReg){ //sMotor2P.mReg此时为衰减比例 

if( --sMotor2P.mTimer ==0){ //延时 

sMotor2P.mTimer= sMotor2P.mStepRunTimer + sMotor2P.mStepIdleTimer ; 

InMotor_Energy( sMotor2P.mTableId, sMotor2P.mReg ); 

} 

break; 

} 

else sMotor2P.mTask = eMotor_Stop_State; //进入STOP状态 

 

case eMotor_Stop_State: //马达未启动 

//判断起始条件sMotor2P.mSteps>0; 

if( sMotor2P.mSteps == 0)break; 

sMotor2P.mTask = eMotor_PowerOn_Process; 

 

case eMotor_PowerOn_Process: //上电启动 

if( sMotor2P.mReg < dSaveCurrentLimit ){ 

if( --sMotor2P.mTimer ==0){ //延时 

sMotor2P.mTimer= sMotor2P.mStepRunTimer + sMotor2P.mStepIdleTimer ; 

InMotor_Energy( sMotor2P.mTableId, ++sMotor2P.mReg ); //衰减比例递增加大电流 } 

break; 

} 

sMotor2P.mTask = eMotor_PowerOnDelay_Process; //进入正常工作模式前的延时 

break; 

 

case eMotor_PowerOnDelay_Process: //进入步进处理延时过程 

if( --sMotor2P.mTimer ==0){ 

sMotor2P.mTimer= sMotor2P.mStepRunTimer; //开始延时 

sMotor2P.mTask = eMotor_Normal_State; //进入正常工作模式 

} 

else break; 

 

lMotor_Normal_State: 

case eMotor_Normal_State: //正常工作中 

if( sMotor2P.mSteps == 0){ 

//节电模式计时器增加 

if( ++sMotor2P.mSaveTimer == dIdleTimeMax ){ 

sMotor2P.mReg = dSaveCurrentLimit; //衰减比例 

sMotor2P.mTask = eMotor_Idle_Process; //下电过程 

} 

} 

else { 

sMotor2P.mSaveTimer=0; 

 

//开始步进 

InMotor_DirecctStep( sMotor2P.mDirect ); //走动细分表 

InMotor_Energy( sMotor2P.mTableId, 16 ); //输出电流 

 

sMotor2P.mTask = eMotor_StepDelay_Process; //进入步进处理过程 

} 

break; 

 

case eMotor_StepDelay_Process: //进入步进处理延时过程 

if( --sMotor2P.mTimer ==0){ 

//节电处理 

InMotor_Energy( sMotor2P.mTableId, dSaveCurrentLimit ); 

sMotor2P.mTask = eMotor_IdleDelay_Process; //进入节电处理延时过程 

sMotor2P.mTimer= sMotor2P.mStepIdleTimer; //开始延时 

} 

else break; 

 

case eMotor_IdleDelay_Process: //进入节电处理延时过程 

if( --sMotor2P.mTimer ==0){ 

sMotor2P.mTimer= sMotor2P.mStepRunTimer; //延时时间 

sMotor2P.mTask=eMotor_Normal_State; //转入正常工作状态,等待下一步。 

sMotor2P.mSteps -- ; 

if(sMotor2P.mSteps == 0)Message_TailPushOnlyMess( nMotor2P_Stop); //发送马达走完消息。 

goto lMotor_Normal_State; 

} 

break; 

} 

 

} 

 

驱动分驱动电压和维持电压,可以大幅度降低电流。长时间不用,STOP。(能STOP的原因,是只要再上电按STOP前的矢量图输出就可以保证位置不动。) 

 

从矢量合成表很容易就推出我们常用的四相的驱动图。 

如果把矢量合成表的个数只保留4个,就是最普通的两相驱动方式: 

Ia=Max,Ib=0;->Ia=0,Ib=Max;->Ia=-Max,Ib=0;->Ia=0,Ib=-Max;-> 

 

 

PWM方式只适合不太高的速率场合 

 

在这个条件下不存在抖动。所有的细分模式都会引起电流的增大,反过来说,电流的增大提高了扭矩力。 

 

引入节电模式,多长时间电机都不会发烫。 

 

四相和两相比较,本质就是想提高步进精度,仅此而已。从矢量图的角度来说,他们没有区别。这也是细分后,四相没有意义的道理。 

很多场合都可以看到‘细分后,四相没有意义’这句话,俺把它从原理阐述出来而已。 

 

效果比较: 

细分前,电流为1A,细分后为1.2A左右,加入节电模式,电流只有120mA左右,效果惊人。 

力矩变大是细分的必然效果。 

步进角度变小。 

运行非常稳定,没有失步,没有振动。(细分就是解决此类问题才提出来的,步进角度变小只是它的副作用) 

按俺的程序,不需要缓启动和缓停止概念。这里是用缓电流的方式解决的。

4、基于FPGA的步进电机细分驱动控制设计

南京工程学院 自动化学院 大作业(论文) 题目:基于FPGA的步进电机细分驱动 控制设计 专业:测控技术与仪器 班级:学号: 学生姓名: 任课教师:郭婧 成绩:

基于FPGA的步进电机细分驱动控制设计 一、基本要求: 在理解步进电机的工作原理以及细分原理的基础上,利用FPGA实现四相步进电机的8细分驱动控制。 二、评分标准: 1、设计方案介绍(共15分) 要求:详细叙述利用FPGA实现对四相步进电机进行8细分控制的设计方案。 评分标准: 13-15分:方案叙述详细,正确; 10-12分:方案叙述较详细,基本正确; 9分以下:酌情给分 0分:抄袭别人 2、VHDL设计部分(60分) 要求:给出详细的VHDL设计过程,提供详细的程序代码,如果设计中用到LPM模块,则给出生成LPM模块的每一步操作流程的截图,并加以文字描述。 评分标准: 54-60分:代码详细,截图完整,书写规范, 48-53分:代码较详细,截图较完整,书写较规范; 47以下:酌情给分 0分:抄袭别人 3、模拟调试部分(20分) 要求:给出详细的仿真过程,对软件编译、仿真分析、仿真波形进行截图。并给出8细分情况下的仿真测试结果,给出详细的实验结果分析。 评分标准: 18-20分:调试过程详细,正确,截图完整; 15-17分:调试过程较详细,基本正确,有截图; 14分以下:酌情给分 0分:抄袭别人

4、提高部分(5分) 要求:利用FPGA实验箱上的步进电机,实现细分控制。 评分标准:根据完成的程度给分。 0分:抄袭别人

参考:实验十八 FPGA步进电机细分驱动控制设计 示例程序和实验指导课件位置:\EDA_BOOK3_FOR_C35\chpt3\EXP18_MOTO\工程:step_a 一、实验目的 学习用FPGA实现步进电机的驱动和细分控制。 二、实验设备 PC机一台 GW48-PK4试验系统一台 连接线若干 三、实验内容 1、建立工程。完成以图18-1为原理图的工程设计,并保存工程名为step_a。 2、编译仿真。对以上工程进行编译,成功后进行方针测试。 3、引脚锁定。引脚锁定参考图18-2. 图18-1 步进电机PWM细分控制控制电路图 图18-2 引脚锁定图 4、下载测试 参考\EDA_BOOK3_FOR_C35\Chpt3\ALl.PPT\实验17.PPT 选择模式5,短路冒接clock0.根据第一章注释分别“38“和”42“或”“7”连接(见GW48主

本教程介绍步进电机驱动和细分的工作原理

本教程介绍步进电机驱动和细分的工作原理,以及stm32103为主控芯片制作的一套自平衡的两轮车系统,附带原理图pcb图和源代码,有兴趣的同学一起来吧.本系统还有一些小问题,不当之处希望得到大家的指正. 一.混合式步进电机的结构和驱动原理 电机原理这部分不想讲的太复杂了,拆开一台电机看看就明白了。 电机的转子是一个永磁体,它的上面有若干个磁极SN组成,这些磁极固定的摆放成一定角度。电机的定子是几个串联的线圈构成的磁体。出线一般是四条线标记为A+,A-,B+,B-。A相与B相是不通的,用万用表很容易区分出来,至于各相的+-出线实际是不用考虑的,任意一相正负对调电机将反转。另外一种出线是六条线的只是在A相和B相的中间点做两条引出线别的没什么差别,六出线的电机通过中间出线到A+或A-的电流来模拟正向或负向的电流,可以在没有负相电流控制的电路中实现电机驱动,从而简化驱动电路,但是这种做法任意时刻只有半相有电流,对电机的力矩是有损失的。步进电机的转动也是电磁极与永磁极作用力的结果,只不过电磁极的极性是由驱动电路控制实现的。 我们做这样的一个实验就可以让步进电机转动起来。1找一节电池正负随意接入到A相两端;然后断开;(记为A正向)2再将电池接入到B相两端; 然后断开;(记为B正向)3电池正负对调再次接入A相; 然后断开;(记为A负向)4保持正负对调接入B相;然后断开;(记为B负向)…如此循环你会看到步进电机在缓慢转动。注意电机的相电阻是很小的接

通时近乎短路。我们将相电流的方向记录下来应该为:A+B+A-B-A+…, 如果我们更换接线顺序使得相电流顺序为A+B-A-B+A+…这时我们会看 到电机向反方向运动。这里每切换一次相电流电机都会转动一个很小的角度,这个角度就是电机的步距角。步距角是步进电机的一个固有参数,一般两相电机步距角为1.8度即切换200次可以让电机转动一圈。这里我们比较正反转的电流顺序可以看出A+和A-;B+和B-的交换后的顺序 和正反顺序是一致的,也就是前面所说的”任意一相正负对调电机将反转”。以上为四排工作方式,为了使相电流更加平滑另外可以使用八排的工作方式即: A+;A+B+;B+;B+A-;A-;A-B-;B-;B-A+;从前往后循环正转,从后往前循环反转。 为了用单片机实现相电流的正负流向控制必须要有一个H桥的驱动电路,这种带H桥的驱动模块还是很多的,比较便宜的是晶体管H桥比如L298N,晶体管开关速度比较慢,无法驱动电机高速运动。有些模块将细分控制电路也包含在内,我们也不用这种,因为我们的细分由软件控制。实际应用中使用ST的mos管两桥驱动芯片L6205一片即可驱 动一台步进电机。有了H桥通过PWM就可以控制相电流大小,改变输入极IN1、IN2的状态(参看手册第8页)可以控制相电流的方向。 二.细分的原理和输出控制 从这里开始重点了,别的地方看不到哦。 一个理想的步进电机电流曲线应该是相位相差90度的正弦曲线如

步进细分的算法

1、步进电机的步距角,比如说,1.8度,则一个圆周360/1.8=200,也就是说200个脉冲,电机旋转一周。 2、驱动器设了几个细分,请查阅相关资料,比如说4细分,则承上所述,200*4=800,等于说800个脉冲电机才旋转一周。 3、一周的导程:如果是丝杠,螺距*螺纹头数=导程,如果是齿轮齿条传动,分度圆直径(m*z)即为导程,导程/800=一个脉冲的线位移。 有关步进电动机驱动系统的基本知识 1、系统常识:步进电动机和步进电动机驱动器构成步进电机驱动系统。步进电动机驱动系统的性能,不但取决于步进电动机自身的性能,也取决于步进电动机驱动器的优劣。对步进电动机驱动器的研究几乎是与步进电动机的研究同步进行的。 2、系统概述:步进电动机是一种将电脉冲转化为角位移的执行元件。当步进电动机驱动器接收到一个脉冲信号(来自控制器),它就驱动步进电动机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。 3、系统控制:步进电动机不能直接接到直流或交流电源上工作,必须使用专用的驱动电源(步进电动机驱动器)。控制器(脉冲信号发生器)可以通过控制脉冲的个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 4、用途:步进电动机是一种控制用的特种电机,作为执行元件,是机电一体化的关键产品之一,随着微电子和计算机技术的发展(步进电动机驱动器性能提高),步进电动机的需求量与日俱增。步进电动机在运行中精度没有积累误差的特点,使其广泛应用于各种自动化控制系统,特别是开环控制系统。 5、步进电机按结构分类:步进电动机也叫脉冲电机,包括反应式步进电动机(VR)、永磁式步进电动机(PM)、混合式步进电动机(HB)等。 (1)反应式步进电动机:也叫感应式、磁滞式或磁阻式步进电动机。其定子和转子均由软磁材料制成,定子上均匀分布的大磁极上装有多相励磁绕组,定、转子周边均匀分布小齿和槽,通电后利用磁导的变化产生转矩。一般为三、四、五、六相;可实现大转矩输出(消耗功率较大,电流最高可达20A,驱动电压较高);步距角小(最小可做到10?);断电时无定位转矩;电机内阻尼较小,单步运行(指脉冲频率很低时)震荡时间较长;启动和运行频率较高。 (2)永磁式步进电动机:通常电机转子由永磁材料制成,软磁材料制成的定子上有多相励磁绕组,定、转子周边没有小齿和槽,通电后利用永磁体与定子电流磁场相互作用产生转矩。一般为两相或四相;输出转矩小(消耗功率较小,电流一般小于2A,驱动电压12V);步距角大(例如7.5度、15度、22.5度等);断电时具有一定的保持转矩;启动和运行频率较低。 (3)混合式步进电动机:也叫永磁反应式、永磁感应式步进电动机,混合了永磁式和反应式的优点。其定子和四相反应式步进电动机没有区别(但同一相的两个磁极相对,且两个磁极上绕组产生的N、S极性必须相同),转子结构较为复杂(转子内部为圆柱形永磁铁,两端外套软磁材料,周边有小齿和槽)。一般为两相或四相;须供给正负脉冲信号;输出转矩

步进电机驱动方式(细分)概述

步进电机驱动方式(细分)概述 众所周知,步进电机的驱动方式有整步,半步,细分驱动。三者即有区别又有联系,目前,市面上很多驱动器支持细分驱动方式。本文主要描述这三种驱动的概述。 如下图是两相步进电机的内部定子示意图,为了使电机的转子能够连续、平稳地转动,定子必须产生一个连续、平均的磁场。因为从宏观上看,电机转子始终跟随电机定子合成的磁场方向。如果定子合成的磁场变化太快,转子跟随不上,这时步进电机就出现失步现象。 既然电机转子是跟随电机定子磁场转动,而电机定子磁场的强度和方向是由定子合成电流决定且成正比。即只要控制电机的定子电流,则可以达到驱动电机的目的。下图是两相步进电机的电流合成示意图。其中Ia是由A-A`相产生,Ib是由B-B`相产生,它们两个合成后产生的电流I就是电机定子的合成电流,它可以代表电机定子产生磁场的大小和方向。 有了以上的步进电机背景描述后,对于步进电机的整步、半步、细分的三种驱动方式,都会是同一种方法,只是电流把一个圆(360°)分割的粗细程序不同。 整步驱动 对于整步驱动方式,电机是走一个整步,如对于一个步进角是3.6°的步进电机,整步驱动是每走一步是走3.6°。

下图是整步驱动方式中,电机定子的电流次序示意图: 由上图可知,整步驱动每一时刻只有一个相通电,所以这种驱动方式的驱动电路可以是很简单,程序代码也是相对容易实现,且由上图可以得到电机整步驱动相序如下: BB’→A’A→B’B→A A’→B B’ 下图是这种驱动方式的电流矢量分割图: 可见,整步驱动方式的电流矢量把一个圆平均分割成四份。 下图是整步驱动方式的A、B相的电流I vs T图: 可以看出,整步驱动描出的正弦波是粗糙的。使用这种方式驱动步进电机,低速时电机会抖动,噪声会比较大。但是,这种驱动方式无论在硬件或软件上都是相对简单,从而驱

步进电机的细分

步进电机的细分 步进电机是一种将离散的电脉冲信号转化成相应的角位移或线位移的电磁机械装置,它具有转矩大、惯性小、响应频率高等优点,已经在当今工业上得到广泛的应用,但其步矩角较大,一般为1.5o~3o,往往满足不了某些高精密定位、精密加工等方面的要求。实现细分驱动是减小步距角、提高步进分辨率、增加电机运行平稳性的一种行之有效的方法。本文在选择了合理的电流波形的基础上,提出了基于Intel 80C196MC 单片机控制的步进电机恒转矩细分驱动方案,其运行功耗小,可靠性高,通用性好,具有很强的实用性。 细分电流波形的选择及量化 步进电机的细分控制,从本质上讲是通过对步进电机的励磁绕组中电流的控制,使步进电机内部的合成磁场为均匀的圆形旋转磁场,从而实现步进电机步距角的细分。一般情况下,合成磁场矢量的幅值决定了步进电机旋转力矩的大小,相邻两合成磁场矢量之间的夹角大小决定了步距角的大小。因此,要想实现对步进电机的恒转矩均匀细分控制,必须合理控制电机绕组中的电流,使步进电机内部合成磁场的幅值恒定,而且每个进给脉冲所引起的合成磁场的角度变化也要均匀。我们知道在空间彼此相差2p/m的m相绕组,分别通以相位上相差2p/m而幅值相同的正弦电流,合成的电流矢量便在空间作旋转运动,且幅值保持不变。这—点对于反应式步进电机来说比较困难,因为反应式步进电机的旋转磁场只与绕组电流的绝对值有关,而与电流的正反流向无关。以比较经济合理的方式对三相反应式步进电机实现步距角的任意细分,绕组电流波形宜采用如图1所示的形式。 图中,a为电机转子偏离参考点的角度。ib滞后于ia,ic超前于ia。此时,合成电流矢量在所有区间b=Ime-ja,从而保证合成磁场幅值恒定,实现电机的恒转矩运行。且步进电机在这种情况下也最为平稳。将绕组电流根据细分倍数均匀量化后,所得细分步距角也是均匀的。为了进一步得到更加均匀的细分步距角,可通过实验测取一组在通入量化电流波形时的步进电机细分步距的数据,然后对其误差进行差值补偿,求得实际的补偿电流曲线。这些工作大部分由计算机来完成。 步进电机是一种将离散的电脉冲信号转化成相应的角位移或线位移的电磁机械装置,它具有转矩大、惯性小、响应频率高等优点,已经在当今工业上得到广泛的应用,但其步矩角较大,一般为1.5o~3o,往往满足不了某些高精密定位、精密加工等方面的要求。实现细分驱动是减小步距角、提高步进分辨率、增加电机运行平稳性的一种行之有效的方法。本文在选择了合理的电流波形的基础上,提出了基于Intel 80C196MC单片机控制的步进电机恒转矩细分驱动方案,其运行功耗小,可靠性高,通用性好,具有很强的实用性。

步进电机常识与矩频曲线

步进常识 1.什么是步进电机? 步进电机是一种将电脉冲转化为角位移的执行机构。通俗一点讲:当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(及步进角)。您可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时您可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。 2.步进电机分哪几种? 步进电机分三种:永磁式(PM),反应式(VR)和混合式(HB)永磁式步进一般为两相,转矩和体积较小,步进角一般为7.5度或15度;反应式步进一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。在欧美等发达国家80年代已被淘汰;混合式步进是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为 0.72度。 这种步进电机的应用最为广泛。 3.什么是保持转矩(HOLDING TORQUE)? 保持转矩(HOLDING TORQUE)是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进

电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为2N.m 的步进电机。 4.什么是DETENT TORQUE?(起动转扭) DETENT TORQUE 是指步进电机没有通电的情况下,定子锁住转子的力矩。DETENT TORQUE 在国内没有统一的翻译方式,容易使大家产生误解;由于反应式步进电机的转子不是永磁材料,所以它没有DETENT TORQUE。 5.步进电机精度为多少?是否累积? 一般步进电机的精度为步进角的3-5%,且不累积。 6.步进电机的外表温度允许达到多少? 步进电机温度过高首先会使电机的磁性材料退磁,从而导致力矩下降乃至于失步,因此电机外表允许的最高温度应取决于不同电机磁性材料的退磁点;一般来讲,磁性材料的退磁点都在摄氏130度以上,有的甚至高达摄氏200度以上,所以步进电机外表温度在摄氏80-90度完全正常。 7.为什么步进电机的力矩会随转速的升高而下降?

步进电机细分控制(英文)

1/17 AN1495 APPLICATION NOTE 1INTRODUCTION Microstepping a stepper motor may be used to achieve one or both of two objectives; 1) increase the position resolution or 2) achieve smoother operation of the motor. In either case the basic the-ory of operation is the same. The simplified model of a stepper motor is a permanent magnet rotor and two coils on the stator separated by 90 degrees, as shown in Figure 1. In classical full step operation an equal current is delivered to each of the coils and the rotor will align itself with the resulting magnetic vector along one of the 45 degree axis. To step the motor, the current in one of the two coils is reversed and the rotor will rotate 90 degrees. The complete full step sequence is shown in figure 2. Half step drive,where the current in the coil is turned off for one step period before being turned on in the opposite direction, has been used to double the step resolution of a motor. In either full and half step drive,the motor can be positioned only at one of the 4 (8 for half step) defined positions.[4][5] Therefore,the number of steps per electrical revolution and the number of poles on the motor determine the resolution of the motor. Typical motors are designed for 1.8 degree steps (200 steps per revolution)or 7.5 degree steps (48 steps per revolution). The resolution may be doubled to 0.9 or 3.75 degrees by driving the motor in half step. Further increasing the resolution requires positioning the rotor at positions between the full step and half step positions. Figure 1. Model of stepper motor MICROSTEPPING STEPPER MOTOR DRIVE USING PEAK DETECTING CURRENT CONTROL Stepper motors are very well suited for positioning applications since they can achieve very good positional accuracy without complicated feedback loops associated with servo sys-tems. However their resolution, when driven in the conventional full or half step modes of operation, is limited by the configuration of the motor. Many designers today are seeking alternatives to increase the resolution of the stepper motor drives. This application note will discuss implementation of microstepping drives using peak detecting current control where the sense resistor is connected between the bottom of the bridge and ground. Examples show the implementation of microstepping drives with several currently available chips and chip sets. REV . 2AN1495/0604

步进电机细分驱动方式的研究

步进电机作为电磁机械装置,其进给的分辨率取决于细分驱动技术。采用软件细分驱动方式,由于编程的灵活性、通用性,使得步进细分驱动的成本低、效率高,要修改方案也易办到。同时,还可解决步进电机在低速时易出现的低频振动和运行中的噪声等。但单一的软件细分驱动在精度与速度兼顾上会有矛盾,细分的步数越多,精度越高,但步进电机的转动速度却降低;要提高转动速度,细分的步数就得减少。为此,设计了多级细分驱动系统,通过不同的细分档位设定,实现不同步数的细分,同时保证了不同的转动速度。 1 细分驱动原理 步进电机控制中已蕴含了细分的机理。如三相步进电机按A→B→C……的顺序轮流通电,步进电机为整步工作。而按A→AC→C→CB→B→BA→A……的顺序通电,则步进电机为半步工作。以A→B为例,若将各相电流看作是向量,则从整步到半步的变换,就是在IA与IB之间插入过渡向量IAB,因为电流向量的合成方向决定了步进电机合成磁势的方向,而合成磁势的转动角度本身就是步进电机的步进角度。显然,IAB的插入改变了合成磁势的转动大小,使得步进电机的步进角度由θb 变为0.5θb,从而也就实现了2步细分。由此可见,步进电机的细分原理就是通过等角度有规律的插入电流合成向量,从而减小合成磁势转动角度,达到步进电机细分控制的目的。 在三相步进电机的A相与B相之间插入合成向量AB,则实现了2步细分。要再实现4步细分,只需在A与AB之间插入3个向量I1、I2、I3,使得合成磁势的转动角度θ1=θ2=θ3=θ4,就实现了4步细分。但4步细分与2步细分是不同的,由于I1、I2、I33个向量的插入是对电流向量IB的分解,故控制脉冲已变成了阶梯波。细分程度越高,阶梯波越复杂。 在三相步进电机整步工作时,实现2步细分合成磁势转动过程为 IA→IAB→IB;实现4步细分转动过程为IA→I2→IAB……;而实现8步细分则转

步进电机基本原理

步进电机基本原理 电机将电能转换成机械能,步进电机将电脉冲转换成特定的旋转运动。每个脉冲所产生的运动是精确的,并可重复,这就是步进电机为什么在定位应用中如此有效的原因。 永磁步进电机包括一个永磁转子、 线圈绕组和导磁定子。激励一个线圈绕 组将产生一个电磁场,分为北极和南极,见图1所示。定子产生的磁场使转子转动到与定子磁场对直通过改变定子线圈的通电顺序可使电机转子产生连续的旋转运动。 图2显示了一个两相电机的典型的步进顺序。在第1步中,两相定子的A相通电,因异性相吸,其磁场将转子固定在图示位 開!対 $绸I第服励 『0 产唯业餓场

置。当A 相关闭、B 相通电时,转子顺时针旋转 90°。在第3步 中,B 相关闭、A 相通电,但极性与第1步相反,这促使转子再 次旋转90°。在第4步中,A 相关闭、B 相通电,极性与第2步 相反。重复该顺序促使转子按 90°的步距角顺时针旋转。 32樹柏血机的单榊通岖歩进时 图2中显示的步进顺序称为“单相激励”步进。更常用的步 进方法是“双相激励”,其中电机的两相一直通电。但是,一次 只能转换一相的极性,见图 3所示。两相步进时,转子与定子两 相之间的轴线处对直。由于两相一直通电,本方法比“单相通电” Ph ase B zop^l rNIa £ Phase A Step 3 Pha** 耳 心w 町卩冃匾丽 Jf PhawB P 0 I 『sJZ 五朗 Fha?e B Ph 』理A PtMAC A P1is*f¥ B

步进多提供了41.1%的力矩,但输入功率却为 2 倍 图3附J电机的毗柑通葩儿进繼庁 半步步进 电机也可在转换相位之间插入一个关闭状态而走“半步”。 这将步进电机的整个步距角一分为二。例如,一个90°的步进电机将每半步移动45°,见图4。但是,与“两相通电”相比, 半步进通常导致15%- 30%勺力矩损失(取决于步进速率)。在 每交换半步的过程中,由于其中一个绕组没有通电,所以作用在 a Step 2 Ph阴申A Pkas? A

步进电机驱动器及细分控制原理

步进电机驱动器及细分控制原理 步进电机驱动器原理: 步进电机必须有驱动器和控制器才能正常工作。驱动器的作用是对控制脉冲进行环形分配、功率放大,使步进电机绕组按一定顺序通电。 以两相步进电机为例,当给驱动器一个脉冲信号和一个正方向信号时,驱动器经过环形分配器和功率放大后,给电机绕组通电的顺序为AA BB A A B B ,其四个状态周而复始 进行变化,电机顺时针转动;若方向信号变为负时,通电时序就变为 AA B B A A BB ,电机就逆时针转动。 随着电子技术的发展,功率放大电路由单电压电路、高低压电路发展到现在的斩波电路。其基本原理是:在电机绕组回路中,串联一个电流检测回路,当绕组电流降低到某一下限值时,电流检测回路发出信号,控制高压开关管导通,让高压再次作用在绕组上,使绕组电流重新上升;当电流回升到上限值时,高压电源又自动断开。重复上述过程,使绕组电流的平均值恒定,电流波形的波顶维持在预定数值上,解决了高低压电路在低频段工作时电流下凹的问题,使电机在低频段力矩增大。 步进电机一定时,供给驱动器的电压值对电机性能影响较大,电压越高,步进电机转速越高、加速度越大;在驱动器上一般设有相电流调节开关,相电流设的越大,步进电机转速越高、力距越大。 细分控制原理: 在步进电机步距角不能满足使用要求时,可采用细分驱动器来驱动步进电机。细分驱动器的原理是通过改变A,B相电流的大小,以改变合成磁场的夹角,从而可将一个步距角细分为多步。

定子 A 转子 S N B B B S N A A (a)(b) A S N B B N S B S N A (c)(d) 图3.2步进电机细分原理 图 仍以二相步进电机为例,当A、B相绕组同时通电时,转子将停在A、B相磁极中间,如图3.2。 若通电方向顺序按AA AA BB BB BB AA AA AA BB BB BB AA,8个状态周而 复 始进行变化,电机顺时针转动;电机每转动一步,为45度,8个脉冲电机转一周。与图2.1相比,它的步距角小了一半。 驱动器一般都具有细分功能,常见的细分倍数有:1/2,1/4,1/8,1/16,1/32,1/64;或:1/5,1/10,1/20。 细分后步进电机步距角按下列方法计算:步距角=电机固有步距角/细分数 例如:一台1.8°电机设定为4细分,其步距角为 1.8°/4=0.45°。当细分 等级大于1/4后,电机的定位精度并不能提高,只是电机转动更平稳。

基于FPGA的步进电机的PWM控制__细分驱动的实现

姓名___ _ _ _ 学号201016050136 院系电气信息工程学院 专业电子信息工程 班级___信息10-1______ __

目录 目录 (2) 摘要 (3) 关键词 (3) Abstract (3) Keywords (3) 一、引言 (4) 二、步进电机细分驱动的基本原理 (4) 三、Quartus II概述 (5) 四、课题设计 (5) (一)总体设计 (5) (二)细分电流的实现 (6) (三)细分驱动性能的改善 (6) (四)程序设计 (6) 六、仿真与测试结果分析 (10) 七、结论 (12) 参考文献 (12) 注释 (13) 附录 (14) 心得体会 (20)

摘要 在对步进电机细分驱动原理进行分析研究的基础上,提出一种基于FPGA 控制的步进电机细分驱动器。利用FPGA中的嵌入式EAB构成LPM-ROM,存放步进电机各相细分电流所需的PWM控制波形数据表,并通过FPGA设计的数字比较器,同时产生多路PWM电流波形,实现对步进电机转角进行均匀细分控制。实验证明,所研制的步进电机驱动器不仅体积小,简化了系统的设计,减少了延迟,改善了低频特性,有良好的适应性和自保护能力,提高了驱动器的稳定性和可靠性。 关键词 步进电机;细分驱动;脉宽调制;FPGA Abstract In this paper, a divided driving circuit for stepping motor controlled by FPGA is put forward, based on the analysis of the principle of stepping motor divided driving. Using embedded EAB in FPGA to compose LPM-ROM, store PWM control wave form data which stepping motor each phase subdivided driving current is needed.The magnitude comparator designed with FPGA generates several PWM current waveform synchronously, to realize the step angles even division control for three–phase stepping motor.Experimments have proved that the developed subdivision driver is not only smaller,sampler in system, can shorten the delay time,improve the stability in low frequency ,but has good self-adaptation and self-protection ability,and its stability and relibility are higher. Keywords stepping motor; divided driving;PWM; FPGA

步进电机工作原理及功能运用

步进电机工作原理及功能运用 双击自动滚屏发布者:admin 发布时间:2012-02-18 03:06:33 阅读:495次【字体:大中小】步进电机的概术: 步进电机是将电脉冲信号转变为角位移或线位移的开环控制组件,是目前行业设备的主要配件,如剥线机设备就需要用到此步进电机。 在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。 这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 单相步进电机有单路电脉冲驱动,输出功率一般很小,其用途为微小功率驱动。多相步进电机有多相方波脉冲驱动,用途很广。使用多相步进电机时,单路电脉冲信号可先通过脉冲分配器转换为多相脉冲信号,在经功率放大后分别送入步进电机各项绕组。每输入一个脉冲到脉冲分配器,电机各相的通电状态就发生变化,转子会转过一定的角度(称为步距角)。正常情况下,步进电机转过的总角度和输入的脉冲数成正比;连续输入一定频率的脉冲时,电机的转速与输入脉冲的频率保持严格的对应关系,不受电压波动和负载变化的影响。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转

过一个步距角。 步进电机按旋转结构分两大类:1是圆型旋转电机如下图A 2直线型电机,结构就象一个圆型旋转电机被展开一样,如下图B 步进电机的别称 步进电机(stepping motor),步进电机(step motor),或者是脉冲电机(pulse motor),其它的如(stepper motor)等……有着各式各样的称呼方式,这些用日本话来表示的时候,就成为阶动电动机,还有,阶动就是一步一步阶段动作的意思,这各用另外一种语言来表示时,就是成为步进驱动的意思,总之,就是输入一个脉冲就会有一定的转角,分配转轴变位的电动机。 一、步进电机的特点

步进电机的原理,分类,细分原理

步进电机原理及使用说明 一、前言 步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电机的转速、停止的位置只取决于脉冲信号的频率和脉冲数,而不受负载变化的影响,即给电机加一个脉冲信号,电机则转过一个步距角。这一线性关系的存在,加上步进电机只有周期性的误差而无累积误差等特点。使得在速度、位置等控制领域用步进电机来控制变的非常的简单。 虽然步进电机已被广泛地应用,但步进电机并不能象普通的直流电机,交流电机在常规下使用。它必须由双环形脉冲信号、功率驱动电路等组成控制系统方可使用。因此用好步进电机却非易事,它涉及到机械、电机、电子及计算机等许多专业知识。 步进电机是将电脉冲信号转变为角位移或线位移的一种开环线性执行元件,具有无累积误差、成本低、控制简单特点。产品从相数上分有二、三、四、五相,从步距角上分有0.9°/1.8°、0.36°/0.72°,从规格上分有口42~φ130,从静力矩上分有0.1N?M~40N?M。 签于上述情况,我们决定以广泛的感应子式步进电机为例。叙述其基本工作原理。望能对广大用户在选型、使用、及整机改进时有所帮助。 二、感应子式步进电机工作原理 (一)反应式步进电机原理 由于反应式步进电机工作原理比较简单。下面先叙述三相反应式步进电机原理。 1、结构: 电机转子均匀分布着很多小齿,定子齿有三个励磁绕阻,其几何轴线依次分别与转子齿轴线错开。 0、1/3て、2/3て,(相邻两转子齿轴线间的距离为齿距以て表示),即A与齿1相对齐,B与齿2向右错开1/3て,C与齿3向右错开2/3て,A…与齿5相对齐,(A…就是A,齿5就是齿1)下面是定转子的展开图: 2、旋转: 如A相通电,B,C相不通电时,由于磁场作用,齿1与A对齐,(转子不受任何力以下均同)。 如B相通电,A,C相不通电时,齿2应与B对齐,此时转子向右移过1/3て,此时齿3与C偏移为1/3て,齿4与A偏移(て-1/3て)=2/3て。 如C相通电,A,B相不通电,齿3应与C对齐,此时转子又向右移过1/3て,此时齿4与A偏移为1/3て对齐。 如A相通电,B,C相不通电,齿4与A对齐,转子又向右移过1/3て 这样经过A、B、C、A分别通电状态,齿4(即齿1前一齿)移到A相,电机转子向右转过一个齿距,如果不断地按A,B,C,A……通电,电机就每步(每脉冲)1/3て,向右旋转。如按A,C,B,A……通电,电机就反转。 由此可见:电机的位置和速度由导电次数(脉冲数)和频率成一一对应关系。而方向由导电顺序决定。 不过,出于对力矩、平稳、噪音及减少角度等方面考虑。往往采用A-AB-B-BC-C-CA-A这种导电状态,这样将原来每步1/3て改变为1/6て。甚至于通过二相电流不同的组合,使其1/3て变为1/12て,1/24て,这就是电机细分驱动的基本理论依据。 不难推出:电机定子上有m相励磁绕阻,其轴线分别与转子齿轴线偏移1/m,2/m……(m-1)/m,1。

步进电机细分控制原理

步进电机细分原理(雕刻机) 2010-03-1213:05:51|分类:学生作品|标签:|举报|字号大中小订阅 雕刻机的X、Y、Z轴分别采用步进电机驱动, 在网上购买等了四天终于到了,57两相步进电机,1.5A,24V。 结构尺寸如下图

这里说说步进电机的细分原理: 细分的基本概念:步进电机通过细分驱动器的驱动,其步距角变小。如驱动器工作在10细分状态时,其步距角只为“固定步距角”的十分之一,也就是:当驱动器工作在不细分的整步状态时,控制系统每发一个步进脉冲,电机转动1.8;而用细分驱动器工作在10细分状态时,电机只转动0.18度。细分功能完全是由驱动器靠精度控制电机的相电流所产生的,于电机无关。 为两相步进电机的工作原理示意图,它有2个绕组A和B。当一个绕组通电后,其定子磁极产生磁场,将转子吸合到此磁极处。 若绕组在控制脉冲的作用下,通电方向顺序按照: 这四个状态周而复始进行变化,电机可顺时针转动;控制脉冲每作用一次,通电方向就变化一次,使电机转动一步,即90度。4个脉冲,电机转动一圈。

细分驱动器的原理是通过改变A,B相电流的大小,以改变合成磁场的夹角,从而可将一个步距角细分为多步。当A、B相绕组同时通电时,转子将停在A、B 相磁极中间,如图1(b),(d)所示。若通电方向顺序按照: 这8个状态周而复始进行变化,电机顺时针转动;电机每转动一步,为45度,8个脉冲电机转一周。与通电顺序(1)相比,它的步距角小了一半。 为了保证电机输出的力矩均匀,A、B相线圈电流的大小也要调整,使A、B相产生的合力在每个位置相同。图2所示为电机四细分时,A、B相线圈电流的比例。 A、B相线圈电流大小与转角关系如图3所示。 图24细分时电机A、B线圈电流在不同角度的分配比例 从图3中可以看出,步进电机的相电流是按正弦函数(如虚线所示)分布的;细分数越大,相电流越接近正弦曲线。 2.步进电机细分与电机运动平稳性的关系 被测步进电机步距角为1.8度,即无细分时每转200步。试验时,将步进电机转速都设为2r/s;电机2细分时,电机每转400步,每步周期为1.25ms;电机8细分时,电机每转1600步,每步周期为0.3125ms;电机64细分时,电机每转12800步,每步周期为0.0391ms。 步进电机2细分时,电流波形台阶均匀,且电流脉动值很大,其最大值是最大电流的70.7%;步进电机8细分时,电流波形台阶明显,但电流脉动值较小,其最大值是最大电流的19.5%;步进电机64细分时,电流波形较平滑,电流波形已很难分辨分别出台阶的个数,最大电流脉动值仅为最大电流的2.45%。 由电磁感应定理知,步进电机输出力矩和电机线圈的电流成正比,及: T=KT×i 式中KT为电机力矩常数,它与电机结构、材料、线圈长度等因素有关。 由此公式就很容易理解:步进电机细分数越高,电机运转越平稳;步进电机细分数越小,电机运转时振动越大。因为细分数高时,电流曲线光滑,所以电机输出力矩也就波动小连续、电机运行就平稳;电机细分数小,电机电流脉动就大,其输出力矩脉动就大,因而造成电机较大的振动,该振动并产生噪音乃至其它部件的谐振噪音。 3.结论 步进电机细分驱动电路不但可以提高工作平台的运动平稳性,而且可以有效

步进电机闭环细分驱动控制系统设计_宋鸿飞

步进电机闭环细分驱动控制系统设计 摘要:介绍了螺纹非接触光电测试系统中步进电机闭环细分控制系统的设计,并结合系统要求对抗干扰性和稳定性进行深入研究。文中对步进电机的特性与系统的性能相互关系进行了论述,在此基础上提出了可行的系统设计方案,给出了基于TA8435专用芯片的细分驱动设计电路,对系统抗干扰性和稳定性设计提出了具体解决办法,硬件设计中采用了传感器反馈的全伺服控制方法,软件上采用升频离散化处理,很好的解决了步进电机在高速启停过程中的堵转和丢步现象,提高了系统的稳定性和精度。 关键词:闭环控制;细分驱动;升频离散化 中图分类号:TP216文献标识码:A文章编号:1672-9870(2008)02-00093-03 收稿日期:200716 基金项目:国家863计划资助项目 作者简介:宋鸿飞(1980

角,并依靠电磁力锁定转轴在一定的位置上。因此在定位精度不高的场合下,一般的步进系统都采用开环控制。但由于步进电机固有的低频共振,高频扭矩小引起的失步和机械结构等因素的影响,都会造成实际位移值偏离指令设定值。因此在高定位精度的场合下,没有闭环反馈就无法知道电机是否丢步或过步,系统无法对其进行有效校正和补偿,导致不能准确定位。在步进系统中引入检测环节并对其进行闭环控制,可从根本上解决步进系统的定位精度问题,将使其性能大大提高。步进电机的闭环控制可采用各种不同的方法,其中包括步校验、无传感器反电动势检测和有传感器反馈的全伺服控制。 1系统构成 本电机系统设计应用精密在螺纹非接触光电测试系统中,两相步进电机通过精密滚珠螺杆把电机的轴角运动转化成直线位移运动,带动负载平台及上边安装的测试系统在螺管内部进行直线运动,实现对螺纹的实时检测。由于螺纹检测属于精密检测,对精密位移台的定位精度、速度范围和速度稳定性提出了很高的要求,因此步进电机采用开环控制方式是达不到系统的指标要求的,针对系统的要求步进电机要采用闭环细分控制方式。 电机控制系统设计采用有传感器反馈的全伺服控制方法。其系统组成包括四部分:(1)使用89S52单片机实现电机控制器设计;(2)电机细分驱动器采用东芝公司生产的TA8435电机驱动专业芯片实现电机细分驱动器的设计;(3)位置反馈传感器采用分辨率 1 图1步进电机闭环细分控制系统功能图 Fig.1Diagram for close-loop subdivision control system func- tion of stepper motor 2细分驱动器设计 结合螺纹检测系统对位移平台定位精度和速度范围的要求,步进电机步距角不能满足使用条件,在设计中采用细分驱动的方法,细分驱动电路是通过对步进电机的励磁绕组中电流的控制,来调整步进惦记步距角的大小,把原来的一个整步步距角细分成若干步来完成,从而实现步进电机的高精度定位,提高了步进电机的分辨率。实现细分驱动的方法有很多种,设计中使用了东芝公司生产的单片正弦细分二相步进电机驱动专用芯片TA8435,芯片采用的是脉宽调制式斩波驱动,该芯片有电路连接简单,工作稳定,特点如下: (1)工作电压范围宽(10 、B+、B 图2细分驱动电路原理图 Fig.2Circuit schematic diagram of subdivision driving 在系统中使用的位移平台螺杆导程L为4mm (即电机轴转动一周负载平台的直线位移量),细分数为为0.9° ,分数为 而转台的移动速度和脉冲频率、细分选择、电机本身的固有频率有关。在设计中由89S52的内部 定时器

步进电机基本原理-第一节

步进电机的基本原理 步进电机作为执行元件,是机电一体化的关键产品之一, 广泛应用在各种自动化控制系统中。随着微电子和计算机技术的发展,步进电机的需求量与日俱增,在各个国民经济领域都有应用。 步进电机是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的;同时可以通过控制脉冲频率来控制电机转动的速度和加速度,从而达到调速的目的。步进电机可以作为一种控制用的特种电机,利用其没有积累误差(精度为100%)的特点,广泛应用于各种开环控制。 现在比较常用的步进电机包括反应式步进电机(VR)、永磁式步进电机(PM)、混合式步进电机(HB)和单相式步进电机等。 永磁式步进电机一般为两相,转矩和体积较小,步进角一般为7.5度或15度; 反应式步进电机一般为三相,可实现大转矩输出,步进角一般为1.5度,但噪声和振动都很大。反应式步进电机的转子磁路由软磁材料制成,定子上有多相励磁绕组,利用磁导的变化产生转矩。 混合式步进电机是指混合了永磁式和反应式的优点。它又分为两相和五相:两相步进角一般为1.8度而五相步进角一般为0.72度。这种步进电机的应用最为广泛,也是本次细分驱动方案所选用的步进电机。 步进电机的一些基本参数: 电机固有步距角: 它表示控制系统每发一个步进脉冲信号,电机所转动的角度。电机出厂时给出了一个步距角的值,如86BYG250A型电机给出的值为0.9°/1.8°(表示半步工作时为0.9°、整步工作时为1.8°),这个步距角可以称之为…电机固有步距角?,它不一定是电机实际工作时的真正步距角,真正的步距角和驱动器有关。 步进电机的相数: 是指电机内部的线圈组数,目前常用的有二相、三相、四相、五相步进电机。电机相数不同,其步距角也不同,一般二相电机的步距角为0.9°/1.8°、三相的为0.75°/1.5°、五相的为0.36°/0.72°。在没有细分驱动器时,用户主要靠选择不同相数的步进电机来满足自己步距角的要求。如果使用细分驱动器,则…相数?将变得没有意义,用户只需在驱动器上改变细分数,就可以改变步距角。 保持转矩(HOLDING TORQUE): 是指步进电机通电但没有转动时,定子锁住转子的力矩。它是步进电机最重要的参数之一,通常步进电机在低速时的力矩接近保持转矩。由于步进电机的输出力矩随速度的增大而不断衰减,输出功率也随速度的增大而变化,所以保持转矩就成为了衡量步进电机最重要的参数之一。比如,当人们说2N.m的步进电机,在没有特殊说明的情况下是指保持转矩为

相关文档
最新文档