Подключение драйвера шагового двигателя
- Войдите на сайт для отправки комментариев
Чт, 23/11/2017 - 23:31
Есть драйвер DM432, DM420 и подобные.
На вход принимает импульсы с изменением от 2х мкс. Подскажите, как проще всего программно реализовать функцию регулировки скорости, то есть изменение частоты импульсов hi/low на выходе?
М.б. это потянет https://playground.arduino.cc/Code/Timer1 ? Чтобы уже всё было ардуинисто, а не портографически...
А есть ли более простой способ получения сигнала с изменяемой длительностью?
Так и не удалось найти какую либо информацию
Может как то изменить библиотеку stepper или servo?
Так и не удалось найти какую либо информацию
Может как то изменить библиотеку stepper или servo?
Да, как раз читаю про нее. Она работает с драйвером, это хорошо, но я пока не совсем понимаю, как указывать направление вращения?
Собственно задача проста, нужно с плавным пуском и остановкой включать мотор в разных направлениях
управляешь этим:
objectName.moveTo(steps);
Усли steps увеличивается, получаешь вращение в одну сторону, если уменьшается - то в другую, если не изменяется, то стоит на месте.
А я-то подумал, что товарищ нестандартных решений ищет...
Вот скетч.
При приеме сигнала, значением больше 128 мотор должен начать вращаться и примерно через 6 секунд остановиться. Следующий запуск должен быть в другую сторону, но почему то вообще не работает
А должен так работать? Я очень давно с этой библиотекой баловался, но что я помню, так у меня не все примеры работали, и не все функции. А задача была такая, что надо было явно говорить драйверу куда run, и на сколько run через moveTo.
Без move to полная тишина на выходах, но в моем случае мотор вращается как обычный коллекторный и режим работы с шагами мне не нужен.
Не вижу проблем. Пока мотор должен вращаться - инкременируете параметр moveTo, чтоб вращался в другую сторону - дикременируете. Ну и следить, чтобы переменная long не переполнялась.
Да я пробовал. На выходе тишина. Может нельзя использовать пины 8 и 9? Пока я остановился на таймере и функции digitalWrite(PUL, !digitalRead(PUL)); с интервалом в 10мкс с последующим увеличением. На светодиодах работает, завтра посмотрю на моторе.
Может вообще функцию tone использовать? У нее есть какие то ограничения по частотам?
Да я пробовал. На выходе тишина.
На данный момент код стер за ненадобностью. Попробую пока идею с таймером