1 、 概述
Keyes A3967 步进电机驱动板主要用到 a3967slb 芯片。a3967slb 是 pwm 恒流控制微步距驱动二相步进电机专用驱动器。它的工作电压可达 30v,驱动电流达 750ma。芯片内部的 pwm 电流控制电路可通过加在 pfd 的电压设置为慢、快、混合三种电流衰减模式,如果 pfd 端的电压高于 0.6vdd,则选择慢衰减方式。若低于 0.21vdd,则选择快衰减模式。处于两者之间为混合衰减模式。另外,a3967slb 还能提供完善的保护措施,包括抑制瞬态电压,过热保护、防止电流直通、欠电压自锁等功能。驱动板具有步距细分功能,默认细分为 8 细分,也就是将电机的每一步再细分为 8 小步,这样能够能够得到更精确的控制,也就是说 EasyDriver 需要 1600 步来完成一个完整的 360 度旋转。你也可以用杜邦线将引脚选择性的引到 GND 上来选择其余的 3 种模式。请看下面的说明表:
MS1 | MS2 | 细分模式 |
低 | 低 | 全步 (2 相) |
高 | 低 | 半步 |
低 | 高 | 1/4 步 |
高 | 高 | 1/8 步 |
2 、 引脚说明
MOTOR:步进电机接口
PFD:PFD 输入
RST:用于重置芯片初始值,屏蔽所有外部输出
ENABLE:为使能端
MS1 MS2:步进电机细分分辨率选择的逻辑输入口
PWR IN:电源输入 DC 7-30V
GND 5V:+5V 输出
SLP:sleep 输入
STEP:脉冲输入端口
DIR:电机运转方向的选择口
3 、 连接 方法
A3967 步进电机驱动板 | UNO |
DIR | 8 |
STEP | 9 |
ENABLE | 10 |
GND | GND |
M+ | 7-30V |
4 、 测试代码
int DIR_PIN=8;
int STEP_PIN=9;
int ENABLE_PIN=10;
void setup()
{
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
pinMode(ENABLE_PIN, OUTPUT);
}
void loop()
{
digitalWrite(ENABLE_PIN,LOW);
A3967 步进电机驱动板 UNO
DIR 8
STEP 9
ENABLE 10
GND GND
M+ 7-30V
rotateDeg(360, 1);
delay(1000);
rotateDeg(-360, .1);
delay(1000);
rotate(1600, .5);
delay(1000);
rotate(-1600, .25);
delay(1000);
}
void rotate(int steps, float speed)
{
int dir = (steps > 0);
steps = abs(steps);
digitalWrite(DIR_PIN,dir);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++)
{
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}
void rotateDeg(float deg, float speed)
{
int dir = (deg > 0);
digitalWrite(DIR_PIN,dir);
int steps = abs(deg)*(1/0.225);
float usDelay = (1/speed) * 70;
for(int i=0; i < steps; i++)
{
digitalWrite(STEP_PIN, HIGH);
delayMicroseconds(usDelay);
digitalWrite(STEP_PIN, LOW);
delayMicroseconds(usDelay);
}
}
5 、 测试结果
按照接线方法接好线,烧录好代码,上电后,步进电机转