步进电机按定子上绕组来分,有二相、三相和五相等系列。最受欢迎的是两相混合式步进电机,约占97%以上的市场份额,其原因是性价比高,配上细分驱动器后效果良好。该种电机的基本步距角为1.8°/步,配上半步驱动器后,步距角减少为0.9°,配上细分驱动器后其步距角可细分达256倍(0.007°/微步)。由于摩擦力和制造精度等原因,实际控制精度略低。同一步进电机可配不同细分的驱动器以改变精度和效果。
此篇文档以二相四线制步进电机演示
一、 效果演示
二、 单片机程序
写程序之前,先把前提工作做好了,本次用的是STC89C52RC芯片(用别的也行,改一下头文件),keil软件和烧写软件以及主板驱动CH340程序。
程序解读:
A:
1.0引脚是脉冲引脚
1.1引脚是使能引脚
1.2引脚是方向引脚
2.0引脚控制电机正转
2.1引脚控制电机反转
2.2引脚控制电机加速
2.3引脚控制电机减速
2.4引脚控制电机停止
2.5引脚控制电机步距角加
2.6引脚控制电机步距角减
2.7引脚控制电机以一定步距角转动
sbit CLK = P1^0;
sbit ENA = P1^1;
sbit DIR = P1^2;
sbit P_TS = P2^0;
sbit N_TS = P2^1;
sbit P_ADJ = P2^2;
sbit N_ADJ = P2^3;
sbit StopStart = P2^4;
sbit P_Step = P2^5;
sbit N_Step = P2^6;
sbit SS_Step = P2^7;
B:
初始化电机;调用定时器,初始化定时器;调用键控扫描程序
void main()
{
ENA=1;
CLK=0;
DIR=0;
Init_time();
while(1)
{
Key_scan();
}
}
C:
初始化定时器,给T0装初值,打开中断
void main()
{
ENA=1;
CLK=0;
DIR=0;
Init_time();
while(1)
{
Key_scan();
}
}
D:
进入定时器中断
void Enter_Timer0() interrupt 1
{
TH0=(65536-CYCLE)/256;
TL0=(65536-CYCLE)%256;
CLK=~CLK;
PWM_count++;
if(PWM_count==(2*cy_count)&&CY_status)
{
PWM_count=0;
TR0=0;
ENA=0;
}
}
E:
控制步进电机正反转,以一定步距角转动,调速,调脉冲
void Key_scan()
{
static char i=0,j=0;
if(P_TS==0)
{
if(P_TS==0)
{
while(!P_TS);
DIR=1;
}
}
if(N_TS==0)
{
if(N_TS==0)
{
while(!N_TS);
DIR=0;
}
}
if(P_ADJ==0)
{
if(P_ADJ==0)
{
while(!P_ADJ);
i--;
if(i<1)
i=0;
CYCLE=Tspeed[i];
}
}
if(N_ADJ==0)
{
if(N_ADJ==0)
{
while(!N_ADJ);
i++;
if(i>2)
i=2;
CYCLE=Tspeed[i];
}
}
if(StopStart==0)
{
if(StopStart==0)
{
while(!StopStart);
Run_Status=~Run_Status;
if(Run_Status)
{
ENA=1;
TR0=1;
}
else
{
ENA=0;
TR0=0;
CY_status=0;
}
}
}
if(P_Step==0)
{
if(P_Step==0)
{
while(!P_Step);
j++;
if(j>3)
j=3;
Step(StepAngle[j]);
}
}
if(N_Step==0)
{
if(N_Step==0)
{
while(!N_Step);
j--;
if(j<1)
j=0;
Step(StepAngle[j]);
}
}
if(SS_Step==0)
{
if(SS_Step==0)
{
while(!SS_Step);
Step(StepAngle[j]);
}
}
}
F:
角度控制
void Step(unsigned int step_count)
{
PWM_count=0;
CY_status=1;
cy_count=step_count;
ENA=1;
TR0=1;
}
单片机程序下载:
链接: https://pan.baidu.com/s/1uCTHYBnQcke1_4By6ps_WA
提取码:zplc
三、 实物接线
接线图如图所示
驱动器可采用共阳极接法或共阴极接法,但在这里我们选择共阳极接法
因为驱动器的接口是光驱动的,而选择共阴接法的话,就意味着我们得靠单片机I/0口的电流来驱动里面的发光二极管,我们都知道单片机I/O口的驱动能力非常小,查看手册可知I/O口的拉电流只有几uA根本不足以驱动发光二极管,共阳极接法的灌电流可达15mA,此时足以驱动发光二极管,这就是为什么要选择共阳接法。
Ps:拉电流是逻辑门输出为高电平时的负载电流。
外部电流通过芯片引脚向芯片内‘流入’称为灌电流
实物接线图:
细分:
就是驱动器的6个拨码,它提高了步进电机转角精度和运行平稳性。
不过细分怎么调呢?
下图是细分的调节方式,可以按照自己的需求响应的调整,具体可以参照步进电机驱动器说明书
说明书详情网站:
https://wenku.baidu.com/view/4e003934dcccda38376baf1ffc4ffe473368fd26.html
OK,51单片机控制二相四线制步进电机到这里就结束啦,您学废了吗?
转载:https://blog.csdn.net/qq_45156021/article/details/108483824