Эдуард писал(а):Прежде всего, вам надо формализовать задачу.
У меня следующие вопросы.
Вам надо просто вращать двигатель, или еще требуется постоянно контролировать какой-нибудь датчик для остановки двигателя? Т.е. алгоритм управления – нажали кнопку, и двигатель крутится или более сложный? Что надо делать в программе в рабочем цикле при вращении?
Думаю, что логично иметь возможность остановки двигателя в нужный момент. Либо концевой датчик для остановки (микропереключатель). Точность положения ротора меня, практически, не интересует, это не станок. В рабочем цикле, когда двигатель вращается нужно только выведение информации на LCD 1602 Hd44780 желательно на русском языке такого характера: установленная скорость, ну и "СТОП" чтобы можно было понять, что для остановки двигателя нужно нажать на кнопку. Характер сообщений или МЕНЮ я еще конкретно не обдумывал, но должны быть такие параметры как скорость в условных единицах, направление вращения, старт\стоп. Пока как-то так. Не плохо было бы иметь уровень разряда аккумулятора, ибо устройство предполагается мобильным, но пока не представляю как это реализовать.
Эдуард писал(а):Прежде всего, вам надо формализовать задачу.
У меня следующие вопросы.
Зачем Вам микро шаговый режим? Он снижает скорость вращения двигателя, уменьшает крутящий момент, требует увеличивать частоту импульсов STEP.
Гиперболический закон изменения скорости вращения это обязательное условие? Или вы боитесь, что двигатель выйдет из синхронизма?
С какой точностью и дискретностью надо регулировать частоту вращения?
Читал известную в сети статью Леонида Ридико, по всему видно, что это профессионал в шаговых двигателях.
http://darxton.ru/wiki-article/kontroller-shagovogo-dvigatelya/Он, в частности, указывает ''.. В микрошаговом режиме можно осуществлять только разгон и торможение, а основное время работать в полношаговом режиме...'' Затем, на невысоких скоростях микрошаговый режим позволяет работать двигателю более плавно.
Что касается гиперболического закона, то в вышеуказанной статье пишется следующее :
"... Использование разгона и торможения позволяет достичь значительно больших скоростей - в индустриальных применениях используются скорости до 10000 полных шагов в секунду. ......
...На практике чаще всего применяют разгон и торможение с постоянным ускорением.....
...При разгоне или торможении с постоянным ускорением частота повторения шагов должна изменяться линейно, соответствено значение периода, которое необходимо загружать в таймер, должно меняться по гиперболическому закону...."
Точность регулировки частоты вращения не имеет ни малейшего значения. Достаточно весь спектр скоростей поделить на 10-20 градаций от нуля до максимума и выбирать просто нужную относительную цифру перед пуском.
Эдуард писал(а):[list]Собрать реальную конструкцию или близкий к ней макет.
Подключить STEP/DIR драйвер к плате Arduino UNO по схеме из урока 35. Загрузить в плату программу драйвера с AT командами.
В уроке 31 есть программа верхнего уровня (на компьютер) позволяющая управлять двигателем. Можно выставить любую скорость, режим, направление, сделать любое число шагов.
Конструкцию собрал, а именно: двигатель, драйвер, контроллер. Питание на контроллер пока пробовал только 12 вольт, вот вот появится возможность подать до 48 В (как того требует драйвер для максимальных скоростей).
Загружал именно Ваш скетч из урока 35 с библиотекой StepDirDriver. Двигатель вращается. Правда максимальная скорость не очень высока. Я ещё плохо понимаю Ваш скетч, буду задавать вопросы. Мне там не понятно, как формируется скорость.
С AT командами не пробовал, но думаю, что максимальную скорость без разгона по гиперболе все равно не получить.
Эдуард писал(а):
Проверить на реальной конструкции, с реальной нагрузкой работу всего: механической конструкции, двигателя, электроники. Вы узнаете все: мощность, скорость, какой режим вращения предпочтительнее…
На реальной конструкции пока не получается, еще не собрал, комплектующие не все в наличии...