Библиотека StepperQ Управление Шаговым мотором. Ищу Beta-Tester
- Войдите на сайт для отправки комментариев
Привет всем!
Понадобилась библиотека для работы шаговым двигателем. Accelstepper не устроила. Медленная (4400 шагов физический предел), содержит много ошибок и требует постоянного вызова из loop run()
В тоге переписал код, сделал вызов из таймера. Получилась новая библиотека. Физический предел 18000 шагов...
Добавил поддержку ESP8266.
https://github.com/achest/stepperQ
Ищу Beta Tester. Нужно проверить библиотеку на ошибки. помочь написать документацию.
Спасибо.
Пример кода, Мотор крутится 4 секунда с 800 шагов в секунду, потом 2 секунды 400 и 2 секунды 1200. Скорость меняется по кругу.
#include <stepperQ.h> int c = 0; int dir_pin = D3; int step_pin = D4 ; void setup() { stepperq.init(dir_pin,step_pin); delay(2000); stepperq.setMaxSpeed(800); stepperq.setAcceleration(2800); stepperq.moveTo(80000); stepperq.start(); delay(4000); } void loop () { if ( stepperq.distanceToGo() <4000 ) { stepperq.move(8000); } return ; if (c%2 == 0) { stepperq.setMaxSpeed(400); } else { stepperq.setMaxSpeed(1200); } c++; delay(2000); }
L298E тоже надо тестировать. Честно говоря лень. DRV8825 стоит дешевле и работает надежнее.
p.s. Skype включаю по необходимости. Ник тот же.
Привет. Тестирую эту либы. Есть пару вопросов.
На скоростях ниже 60, происходят чюдеса. Не могу разобраться. Прошу помочь.
Вывод из консоли
Привет. Тестирую эту либы. Есть пару вопросов.
На скоростях ниже 60, происходят чюдеса. Не могу разобраться. Прошу помочь.
Спасибо за тестирование. извниняюсь за задержку с ответом. Грипп...
У меня происходит тоже самое. Причина в том, что мотор достигает максимальной скорости за 1-2 шага.. т.е. Workaround уменьшить ускорение, так, что бы ему требовалось больше шагов для разгона.
Библиотека расчитана (оптимизирована ) на работу на больших скоростях. Поэтому много проверок не делается. Кроме того расчет скорости идет по упрощенной формуле, без вычисления квадратного корня.
Когда разгон занимает 1000 шагов, то не важно, что мотор как бы "болтается" вокруг своей максимальной скорости это все равно в пределах погрешности работы микроконтроллера. Лучше и не сделать.
Когда же шагов всего 1-2-3, то мотор разгонятся быстрее, чем надо, и потом его надо тормозить. И сделано это не плавно а грубо... поэтому приводит к такой болтанке. Если есть идеи, как это исправить, пожалуйста. Я склоняюсь к тому, что нужно расчитывать n0 не только из ускорения, но и учитывая максимальную скорость. Тогда эта болтанка будет в пределах погрешности расчета... Но это значит, что и ускорение можно будет задать только определенное.
Делать дополнительные расчет в коде, ответвенном за движение не хочу. Он сильно замедлит всю логику.
Спасибо за тесты. пожалуйста пишите на Github, постараюсь исправить все баги.
Как можно с вами стонтактировать, кроме как тут?
Там выплыла другая проблема
Skype: achest ( последнее время включается редко )
www.chestnov.com