如何实现步进电机的正反转?步进电机正反转程序详解
扫描二维码
随时随地手机看文章
步进电动机是将电脉冲激励信号转换成相应的角位移或线位移的离散值控制电动机,这种电动机每当输入一个电脉冲就动一步,所以又称脉冲电动机。
步进电动机(stepping motor)把电脉冲信号变换成角位移以控制转子转动的微特电机。在自动控制装置中作为执行元件。每输入一个脉冲信号,步进电动机前进一步,故又称脉冲电动机。步进电动机多用于数字式计算机的外部设备,以及打印机、绘图机和磁盘等装置。步进电动机的驱动电源由变频脉冲信号源、脉冲分配器及脉冲放大器组成,由此驱动电源向电机绕组提供脉冲电流。
步进电动机的运行性能决定于电机与驱动电源间的良好配合。步进电机的优点是没有累积误差,结构简单,使用维修方便,制造成本低,步进电动机带动负载惯量的能力大,适用于中小型机床和速度精度要求不高的地方,缺点是效率较低,发热大,有时会“失步”。步进电动机分为机电式、磁电式及直线式三种基本类型。
机电式步进电动机机电式步进电动机由铁心、线圈、齿轮机构等组成。螺线管线圈通电时将产生磁力,推动其铁心心子运动,通过齿轮机构使输出轴转动一角度,通过抗旋转齿轮使输出转轴保持在新的工作位置;线圈再通电,转轴又转动一角度,依次进行步进运动。
磁电式步进电动机磁电式步进电动机 其结构简单, 可靠性高, 价格低廉, 应用广泛。 主要有永磁式、 磁阻式和混合式。
(1)永磁式步进电动机。
永磁式步进电动机的基本原理其转子有永磁体的磁极,在气隙中产生极性交替磁场,定子由四相绕组组成(见图)。当A相绕组通电时,转子将转向该相绕组所确定的磁场方向。当A相断电、B相绕组被通电励磁时,就产生一个新的磁场方向,这时,转子就转动一角度而位于新的磁场方向上,被励磁相的顺序决定了转子转动方向。
若定子励磁的变化太快,转子将不能和定子磁场方向的变化保持一致,转子即失步。起动频率和运行频率较低,是永磁式步进电动机的一个缺点。但永磁式步进电动机消耗功率较小,效率较高。20世纪80年代初,出现了转子是盘式的永磁盘式步进电动机,使步距角及工作频率达到磁阻式步进电动机的水平。
(2)磁阻式步进电动机。
其定、转子铁芯的内外表面上设有按一定规律分布的相近齿槽,利用定、转子铁芯齿槽相对位置变化引起磁路磁阻的变化,从而产生转矩。其转子铁芯由硅钢片或软磁材料做成,当定子某相被励磁时,转子将转到使磁路磁阻最小的位置。当另一相被励磁,转子转到另一位置,使磁路磁阻为最小时,电动机就停止转动。这时,转子转过一个步距角θb,即式中N为转子转过一个齿距的运行拍数;ZR为转子齿数。磁阻式步进电动机结构形式较多。定子铁芯有单段式、多段式;磁路有径向、轴向;绕组相数有三相、四相、五相。磁阻式步进电动机步距角可做到1°~15°,甚至更小,精度容易保证,起动与运行频率较高,但功耗较大,效率较低。
(3)混合式步进电动机。
它的定、转子铁芯结构与磁阻式步进电动机相似。转子有永磁体在气隙中产生单极性磁场,此磁场还被转子上软磁材料的齿槽调制。混合式步进电动机兼有永磁式步进电动机与磁阻式步进电动机两者的优点,电动机步距角小,精度高,工作频率高,且功耗小,效率高。
步进电机正反转控制方式:
1、步进电机有四相绕组A、B、C、D,当一绕组通电时在电动机内部形成N-S极,产生磁场,当通电的相发生变化,磁场发生旋转,在磁场的作用下,转子将转动,若步进电机按双四拍的方式来工作。
/2、在A、B、C、D四相绕组上输入脉冲的顺序为AB→BC→CD→DA→AB,步进电机沿顺时针方向转动,即正转;若在A、B、C、D四相绕组上依次输入脉冲AB→DA→CD→BC→AB;步进电机将沿逆时针方向旋转,即反转。电机内部数据参数,初始的即可,不用调改。
整体程序的结果:
(1)先正转一圈,等待一秒后再反转一圈。这一过程可以自己修改程序,把它去掉,即整体main函数while循环的前面那部分,只会执行一次。
while(1)
{
(2)按下按钮1,整个电机开始正转N圈,当检测按钮一直按下时,整个电机就一直正转下去。当检测到其他按钮按下时,立即跳转到其他按钮对应的程序。
(3)按下按钮2,和按钮1相反。
(4)按钮3,使整个电机停止工作。
}
上面2,3,4部分是一直在循环扫描检测的。
#include
#include
unsigned char code z[]={0x02,0x06,0x04,0x0c,0x08,0x09,0x01,0x03//315,270,225......360(0)
};//八拍
unsigned char code f[]={0x01,0x09,0x08,0x0c,0x04,0x06,0x02,0x03//45,90,145......360(0)
};
sbit K1 = P3^0;//定义正转按钮
sbit K2 = P3^1;//定义反转按钮
sbit K3 = P3^2;//定义停止按钮
void zz(unsigned char n);
void fz(unsigned char n);
void delay();
void step();
void main()
{
unsigned char N = 1;//由于设定好了转一圈的数据,所以N在此设定为转多少圈。
TMOD=0X10;
TL1=0XF0;
TH1=0XD8;
EA=0;
ET1=0;//这里没有使用定时器中断,这里只是使用定时器的定时功能。
zz(N);
delay();
fz(N);
while(1)
{
if(K1 == 0)
{
while(1)
{
P0 = 0xfe;
zz(N);
if(K3 == 0||K2==0) break;
}
}
else if(K2 == 0)
{
while(1)
{
P0 = 0xfd;
fz(N);
if(K3 == 0||K1==0) break;
}
}
else
{
P0 = 0xfb;
P1 = 0x03;
}
}
}
void zz(unsigned char n)//正转
{
unsigned char i,j;
for(i=0;i
{
for(j=0;j<8;j++)//整个for循环,正转一个步距角,因为四相八拍,所以是半个步距角,即半步。
{
if(K3 == 0) break;
P1 = z[j];
step();
}
}
}
void fz(unsigned char n)//反转
{
unsigned char i,j;
for(i=0;i
{
for(j=0;j<8;j++)
{
if(K3 == 0) break;
P1 = f[j];
step();
}
}
}
void delay()//定义1s
{
unsigned char i,j,k;
_nop_();
i=8;
j=154;
k=122;
do
{
do
{
while(--k);
}while(--j);
}while(--i);
}
void step()//定时器计时10ms
{
TF1=0;
TR1=1;
while(TF1==0);
TR1=0;
TL1=0XF0;
TH1=0XD8;
}
1.程序中用到的延时,这个根据自己的习惯,可以写相对应的函数延时,但是由于电机转的过程中的延时,就我上文中for循环里面的定时10ms,这个是根据实际情况来调的,理论上来说,使用proteus仿真的电机延时最低是1ms,如果低于1ms实验起来,不会看到自己编写代码的理想结果。
2.步距角的不同,那么想要电机转一圈,执行zz或者fz函数的参数就要有所不同。以我上面程序为例。
八拍转一个循环,转过360度,步距角是90°。
那么步距角是45°时,要想转过360°,那么就需要16拍。
这里需要各位自己去修改程序去实验,这里只提供一个提醒。如果超过256拍的话,那么unsigned char是不够你玩的,需要unsigned int。
步进电机驱动器是一种将电脉冲转化为角位移的执行机构。当步进驱动器接收到一个脉冲信号,它就驱动步进电机按设定的方向转动一个固定的角度(称为“步距角”),它的旋转是以固定的角度一步一步运行的。可以通过控制脉冲个数来控制角位移量,从而达到准确定位的目的接下来,详细为你说下步进驱动器怎么控制方向 步进驱动器怎么设置电机正反转。
脉冲控制,因为脉冲有数量,利于精确控制。所以步进电机方向是靠脉冲控制的,
怎么控制:一般高电平控制一个方向,低电平控制另一个方向。
也有用两路脉冲控制的。就是一路脉冲的高电平控制一个方向,另一路脉冲的高电平控制另一个方向。
只要控制在四相绕组上输入脉冲的顺序,就可以控制电机的正转/反转。(控制延时就能控制转速。)
方向电平信号DIR用于控制步进电机的旋转方向。当该端高时,电动机沿一个方向旋转,当该端低时,电动机沿另一方向旋转。电机换向必须在电机停止后执行,并且换向信号必须在前一个方向的最后一个CP脉冲之后和下一个方向的第一个CP脉冲之前发送。
如果控制器(主机)发送双脉冲(例如正脉冲和负脉冲)或脉冲信号的幅度不匹配,则需要使用信号模块将其转换为5v单脉冲(脉冲) 。中文加方向))。
1.输入为单个脉冲
信号模块的DIP开关应设置在“单脉冲”位置。如果有脉冲输出,则电动机将旋转。改变方向信号的高电平和低电平可以改变旋转方向。有关特定时序,请参阅信号模块手册。
2,输入为双脉冲
信号模块的DIP开关应置于?双麦:中间?位置。发送正脉冲会使电动机正向旋转,而发送负脉冲会使电动机反向。正脉冲和负脉冲不能同时给出,具体时序请参考信号模块手册。
步进电机的运行方向与要求相反。我应该如何调整? Shanshe Motor的技术工程师提出了两种实现方法:
一种方法是更改控制系统的方向信号。
另一种方法是通过调整步进电机的接线来改变方向。具体方法如下:
对于两相电机,只需将其中一根电机线切换到A +和A交换等步进电机驱动器即可。
对于三相电动机,不能更换其中一根电动机电线,但必须依次更换两相,例如交换A +和B +。
A-和B-互换。