Решил подлключить к Arduino шаговый двигатель, в качестве драйвера шагового двигателя использовал A4988, понравились его рабочие характеристики.
Документация (datasheet) на A4988
Для настройки определенного уровня дробления нужно на входе MS1,MS2,MS3 установить определенную комбинацию уровней.
Таблица настройки на необходимое дробление:
Выводы драйвера | Дробление | ||
MS1 | MS2 | MS3 | - |
L | L | L | 1 |
H | L | L | 1/2 |
L | H | L | 1/4 |
H | H | L | 1/8 |
H | H | H | 1/16 |
При сборке изначально использовал для питания силовой части блок питания от модема на 12 Вольт, но схема категорически отказывалась работать. После длительных мучений решение было найдено. Оказывается качество выходного напряжение с блока питания оставляет желать наилучшего - т.е высокий уровень нелинейных искажений, а в микросхеме стоит то ли блокиратор то ли еще что то поэтому она и не хотела работать.
После того как подключил батарейку на 9 Вольт, все заработало должным образом. Производитель рекомендут ставить на питании силовой части дополнительно еще и конденсатор.
Шаговик использовал от флоппи дисковода, можно использовать абсолютно любой главное что бы ток не превысил 2 А, иначе драйвер может не выдержать.
На вход step подаются сигнал с определенной частотой которые отвечают за "шаги" двигателя, к нему я подключил 13-й вывод от arduino, вывод DIR подключается к 12-му выводу данный вывод отвечает за направление вращения шаговика.
Код программы прост до безобразия, тут нет никаких библиотек и замудренных регистров и таймеров.
int stp = 13; //connect pin 13 to step int dir = 12; // connect pin 12 to dir int a = 0; // gen counter void setup() { pinMode(stp, OUTPUT); pinMode(dir, OUTPUT); } void loop() { if (a < 200) //sweep 200 step in dir 1 { a++; digitalWrite(stp, HIGH); delay(10); digitalWrite(stp, LOW); delay(10); } else { digitalWrite(dir, HIGH); a++; digitalWrite(stp, HIGH); delay(10); digitalWrite(stp, LOW); delay(10); if (a>400) //sweep 200 in dir 2 { a = 0; digitalWrite(dir, LOW); } } }
Думаю тут никаких пояснений не нужно. Сначала мы крутим в одну сторону потом в другую. Arduino отлично подходит для управления шаговым двигателем.
&feature=youtu.be
Комментарии
Я использовал Arduino Nano, стоит приблизительно 250 рублей если с Китая заказывать.