Увеличить
Драйвер шагового двигателя EasyDriver A3967
ВВЕДЕНИЕ
Драйвер шагового двигателя A3967 EasyDriver V4.4 можно использовать в своих проектах для управления биполярными шаговыми двигателями.
Есть режимы работы: полного шага или микрошага (1/2, 1/4, 1/8 шага).
Управлять можно при помощи контроллера Arduino или др.
- Пары клемм A и B - для подключения двигателя;
- PWR IN используются для подключения питания;
- GND, STEP, DIR - для управления шагом и направлением вращения двигателя. Один импульс на клемму STEP один шаг. Высокий или низкий уровень на клемме DIR отвечает за направление вращения двигателя;
- Если же замкнуть выходы MS1 и MS2 на GND,то драйвер будет работать в обычном режиме (с полным шагом). Клеммы MS1 и MS2 отвечают за микрошаг 1/2, 1/4, 1/8 шага);
- Клеммы Enable и Sleep отвечают за режим сна и выход из режима сна;
- Reset - сброс или перегрузка
- Клеммы +5V и GND питание двигателя;
- Питание модуля осуществляется или от Arduino контроллера, или от другого микропроцессорного управляющего устройства, или от внешнего источника питания (блока питания, батареи). Напряжение питания встроенной логики: 3,3 – 5 В. Питание драйвера: напряжение 6 – 30В, рабочий ток 150 – 750 мА на фазу. ;
ПАРАМЕТРЫ
- Максимальный ток на одну фазу: 750 мА
- Напряжение привода двигателя: от 7В до 30В
- Напряжение питания логики: 3.3 – 5 В
- Возможность ограничения выходного тока: от 150мА до 750мА
- Микрошаг: 1/2, 1/4, 1/8 шага
- Размеры: 49х21х9мм;
СХЕМА ПОДКЛЮЧЕНИЯ
ПРИМЕР КОДА
//Выполняются две функции, поворот на 90 градусов (отрицательное вращение вращение в противоположном направлении), микрошаг (8)
#define DIR_PIN 2
#define STEP_PIN 3
void setup() {
pinMode(DIR_PIN, OUTPUT);
pinMode(STEP_PIN, OUTPUT);
}
void loop(){
//rotate a specific number of degrees
rotateDeg(360, 1);
delay(1000);
rotateDeg(-360, .1); //reverse
delay(1000);
//rotate a specific number of microsteps (8 microsteps per step)
//a 200 step stepper would take 1600 micro steps for one full revolution
rotate(1600, .5);
delay(1000);
rotate(-1600, .25); //reverse
delay(1000);
}
void rotate(int steps, float speed){
//rotate a specific number of microsteps (8 microsteps per step) - (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (steps > 0)? HIGH:LOW;
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){
//rotate a specific number of degrees (negitive for reverse movement)
//speed is any number from .01 -> 1 with 1 being fastest - Slower is stronger
int dir = (deg > 0)? HIGH:LOW;
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);
}
}
КОМПЛЕКТ
- Драйвер шагового двигателя EasyDriver A3967 x1
Наверняка понадобятся
Метки: #Arduino #motor