Как стать автором
Обновить

Плавность хода, шум и момент шагового двигателя при управлении микроконтроллером

Время на прочтение 11 мин
Количество просмотров 35K
Всего голосов 26: ↑26 и ↓0 +26
Комментарии 35

Комментарии 35

Это называется микрошаговым драйвером и используется повсеместно в 3D принтерах и так далее. Более того, такие драйверы еще и ток позволяют точно отрегулировать для тихой работы. И, притом, стоят столько же, как и H-мост. Пара примеров: A4988 и DRV8825. Ума не приложу, зачем управлять шаговым мотором с помощью Н-моста, если нужны микрошаги и тихая работа...

Внешние драйвера имеют довольно таки скупые регулировки. Например вышепредставленные DRV8825 дают возможность ограничить максимальный ток на обмотках (внешним резистором), но это константное ограничение (нельзя менять динамически). А динамически менять надо, чтобы оптимально выводить вращение ротора на нужную скорость. Плавные разгоны/торможения, оптимальный по энергоресурсам момент удержания с фиксированной верхней планкой тока практически не реализуемы.
В общем такие драйвера это ниша для самоделок с небольшим потенциалом.
Профессиональные контроллеры шаговых двигателей делаются именно на дискретной логике и специализированном микроконтроллере. Такой подход позволяет хранить внутри контроллера оптимальный профиль со всевозможными настройками тока/частоты/мощности/лимитов и.т.п для конкретной модели ШД. То есть имеется возможнсолть очень гибко и оптимально настроить тракт управления ШД под конкретные потребности механического узла (плавность/момент/эффективность/экономичность и.т.п. )

драйверы от тринамика посмотрите, там помимо step/dir и выбора режима микрошага, как у a4988/drv8825, есть uart/spi и куча регистров внутри
и с установками тока и всякой диагностикой.

Вы отметили самое важное, что я хотел донести до читателя! Именно то, что трудно решить подобные задачи с помощью готовых драйверов.

Т.е. нет таких готовых драйверов, которые решают Вашу очень важную задачу? А точно эта задача требует решения? Или другие толпы инженеров решили этот вопрос по другому?

По делу: a4988 - орут, drv8825 - дохнут при обрыве провода обмотки, TMC2209 - топчик! (тяжело убить ручками, тихие, приличный ток).

Далее на сцену выходят жирные корпусные драйверы, которые умеют давить резонансы и обеспечивать плавный разгон без затыков.

Далее на сцену выходят клозет луп драйверы с энкодером на валу - делают всё то же, но позволяют компенсировать пропуски шагов.

И наконец на сцену врываются сервомоторы вроде 80ST-m02430 посылающие всю предыдущую братву лесом, а потом огородами на скоростях более 1000рпм.

На всё это веселье со стороны наблюдают линейные двигатели с постоянными магнитами, крутя пальцем у виска...

Возьми TMC2209 и не мучайся. 2А тянут

Что касается готовых микросхем, которые вы описали, это действительно удобное решение.
Готовые микросхемы с встроенными ключами значительно дешевле, но, как правило, их мощности хватит на управление двигателями током до 2.5А.
В статье я писал, что испытывал различные модули управления и добиться хороших показателей по шуму и вибрации с ними не удалось. Дело в том, что готовые драйверы прекрасно контролируют ток, формируют токовую синусоиду, а в моем случае синусоида сформирована напряжением. Что касается микрошагового режима. Я также писал в статье, что при увеличении дробления шага на блоках управления до 1/16 шум уменьшился, и плавность хода увеличилась, но эти улучшения были незначительны. Дальнейшее повышение дробления вплоть до 1/512 не привело к улучшению показателей.
По поводу  микрошагового режима все верно, именно его я описывал. Я старался максимально просто излагать мысли  без лишних формул и терминов .

Здесь вы совсем не правы, у тринамик есть микросхемы с внешними ключами, они могут счастливо управлять токами до 10-12А. Гляньте проект yadrv, я могу много рассказать о них))

Готовые микросхемы со ВСТРОЕННЫМИ ключами значительно дешевле, но! как правило, их мощности хватит на управление двигателями током до 2.5А.
В то время как со внешними можно сделать хоть на 100А!

Если я не ошибаюсь, в готовых микросхемах драйверов ШД управляют именно током, а не прямо значением ШИМ. Для этого используются аппаратные источники тока. Если используется источник тока, то можно подать на него высокое напряжение, и таким образом получить более быстрое нарастание тока в обмотке. Если не использовать источник тока, то можно легко получить перегрев мотора.
Также замечу, что существуют еще драйвера TMC2130, которые можно настраивать по SPI, там довольно много настроек.

На текущий момент ШИМ-драйверы шаговых двигателей наиболее популярны, практически все драйверы на рынке этого типа. Драйверы, имеющие не ШИМ управление, сильно греются , так как транзисторы работают не в ключевой режиме. ШИМ-драйверы имеют обратную связь по току. Что позволят подавать высокое напряжение. Тем самым получить максимальный момент. На некоторые драйверы можно подавать 220в.
Но шум и плавность хода на низких оборотах  будут значительно сильнее, чем при методе управления описанной в статье.  До того как сделать драйвер, описанный в статье, было сделано два модуля управления ШД на основе микросхем A4989 и DRV8711, но получившиеся модули не дали желаемого результата по шуму и плавность хода. Ещё один важный ньюанс — частота ШИМ в модулях значительно меньше 20кГц. Из-за чего при работе двигатели издают сильный свист.

Вслушайтесь пожалуйста в то что вам сказали — драйвера управляют ТОКАМИ в обмотке, которые поддерживаются АППАРАТНЫМИ ШИМ контроллерами — проц и знать не знает какой там шим именно сейчас в обмотках — он задает необходимые токи а апаратный модуль дает такой шим(притом он выходит меняется во времени даже если двигатель вхолостую стоит без нагрузки) чтоб поддерживать заданный ток. Синусом должен описываться закон изменения тока в обмотке а не заполнение ШИМа или напряжение т.к. шаговики обладают огромной индуктивностью обмотки и высокими частотами комутации напряжение на них может до 40 вольт доходить для поддержания нужного тока в обмотках. Процессору тут делать нечего — он не успеет — или плис или DSP или апаратные шимконтроллеры, управляемые микроконтроллером
Шаговики вообще применимы в очень узком кругу задач и если появляются датчики реального полодения вала — значит шаговики вам уже не подошли! вам уже надо смотреть на колекторники с линейным/круговым энкодером или вообще BLDC привод с собственно резольвером. там и нулевой шум и плавность хода и мощность и скорость и компактность и дешевизна и готовых силовых выходных частей полно.

Задача была поставлена: сделать управление именно шаговым двигателем. Это желание заказчика. По поводу BLDC. Использование в подобных механизмах оправдано, особенно  многополюсные BLDC. Такие используются в мотор-колёсах гироскутеров, электровелосипедов и т.д.
Ещё раз повторюсь. До того, как сделать драйвер, описанный в статье, было сделано два модуля управления ШД на основе микросхем A4989 и DRV8711, но получившиеся модули не дали желаемого результата по шуму и плавности хода. Ещё один важный ньюанс — частота ШИМ в модулях значительно меньше 20кГц. Из-за чего при работе двигатели издают сильный свист.
Понятно, что аппаратные АЦП и компораторы значительно быстрее любых программных решений, реализованных на МК. Если задача стоит сделать драйвер под конкретный механизм, можно обойтись без обратной связи. Это усложняет настройку драйвера, но позволяет добиться желаемого результата, что не получается сделать на основе даже таких микросхем как DRV8711.

Вы меня конечно извините но если вы не смогли разобраться с DRV8711 то вы чтото не понимаете в этом деле или занялись тем что вашим делом не является.
Вопервых у этих райверов частота шим 40 килогерц — услышать такое — нереально.
Во вторых — у него есть Частотный Чоппинг позволяющий плавно перекатывать ротор с одного шага в следующий, в третьих 1/256 шага это просто больше чем дохрена деления для бесшумной работы, у нем же есть стабилизатор тока и запитаться можно от 50 вольт — ничего греться не будет. Имеет он так же програмное управление током двигателя и самое крутое — он может детектировать момент начала пропуска шага — тоесть вы програмно можете знать что двигатель уже начал проскальзывать — и вы можете оперативно нащелкать шагов назад чтоб не довести до опрокидыватья с перещелкиванием механическим. На этих драйверах с хорошими транзисторами выходят просто турбореактивные принтеры с абсолютно бесшумной работой.
Возможно вы юзали готовый модуль с этим драйвером и левым процем куда индусы код писали и просто не поняли всей глубины ахрененности данной микросхемы но… поверьте… она одна из самых продвинутых драйверов шаговика в мире!
Он совершенно бесшумный, мягкий, регулируемый настраиваемый и вообще при грамотном его использовании получить можно практически сервопривод.
www.youtube.com/watch?v=QQmQp_tbRFU
Спасибо за комменты!
Тот случай когда полезней чем статья

Вы пишите: "1/256 шага это просто больше, чем дохрена деления для бесшумной работы".
Объясняю повторно:
При увеличении дробления шага на блоках управления до 1/16 шум уменьшился, и плавность хода увеличилась,
но эти улучшения были незначительны.
Дальнейшее повышение дробления вплоть до 1/512 не привело к улучшению показателей.
Я испытывал не только на DRV8711, а ещё на шести разных драйверах управления ШД.


Вы пишите: "У него же есть стабилизатор тока".
Да есть, НО! В конечном варианте драйвера, который я описывал в статье, даже не пришлось вешать радиаторы на транзисторы, так как они практически не грелись.
Я максимально оптимизировал потребление.


Вы пишите: "Запитаться можно от 50 вольт".
Обращаю Ваше внимание на то, что напряжение питания блока управления ограничено двенадцатью вольтами!
Ставить преобразователь с 12В на 50В не целесобразно, так как и 12 вольт достаточно.
И повторюсь, что12В это предельно допустимое значение. ЭТО ТРЕБОВАНИЕ ЗАКАЗЧИКА.


Вы пишите: "Имеет он так же програмное управление током двигателя".
Да, удобная функция и ОДНА ИЗ ПРИЧИН ШУМА!


Вы пишите: "Самое крутое — он может детектировать момент начала пропуска шага — тоесть вы програмно можете знать что двигатель уже начал проскальзывать".


При тестирования модуля на основе DRV8711 активно использовал эту полезную функцию.
НО! заменить абсолютный энкодер эта функция никак не может. Она лишь может дополнить.


Вы пишите:" И Вы можете оперативно нащелкать шагов назад, чтоб не довести до опрокидывания с перещелкиванием механическим."


Предположим, рука, воздействуя на механизм, значительно увеличивает скорость движения ротора, тем самым ротор опережает магнитное поле статора.
Естественно появится сильный шум. Поэтому необходимо подобрать подходящую скорость шагов.
Если при описанном выше воздействии руки уменьшить скорость двигателя, получится самый шумный режим работы, какой только можно получить.
Неоднократно проверял на практике.


Вы пишите: "На этих драйверах с хорошими транзисторами выходят просто турбореактивные принтеры с абсолютно бесшумной работой".
Драйверы на основе DRV8711 действительно хороши. НО! Дело в том, что шум исходит ни только от двигателя, но и от деталей, которые крепятся на валу и к корпусу двигателя.
Примером могут служить проходные калитки определенных компаний, использующие ШД, вал которого соединен с житкосной муфтой, которая гасит вибрации.
Бороться с шумом и вибрациями можно и механическим путем. Конструкция и материалы принтера тоже играют важную роль в формировании шума. Плюс на ШД принтера нет воздействия руки.


Вы пишите: "Возможно Вы юзали готовый модуль с этим драйвером и левым процем, куда индусы код писали, и просто не поняли всей глубины ахрененности данной микросхемы".
Я в комментариях выше уже писал. До того, как сделать драйвер, описанный в статье, было сделано два модуля управления ШД на основе микросхем A4989 и DRV8711.
Из чего ясно, что было сделано два модуля управления ШД на основе микросхем A4989 и DRV8711, СДЕЛАЛИ а не использовали готовы модуль.


Драйверы, которые мы сделали на основе DRV8711 работают в других устройствах уже около 3 лет.
Микросхемы DRV8711 действительно хороши. Они очень гибкие и многофункциональные.


В видео по ссылки, которую Вы скинули, двигатель стоит на столе. Для проверки уровня шума и плавности хода нужно закрепить ШД в конкретной конструкции, а не просто вращать в холостую без нагрузки.
Я изначально все драйверы проверял, подключая двигатели, которые находились на столе. Потом подключал к двигателям в сборе с механизмом.
По уровню шума и плавности хода была колоссальная разница!


Да действительно, частота ШИМ DRV8711 составляет 40кГц, но это решает лишь одну проблемму, проблемму свиста.
P. S. С удовольствием послушаю дельные советы, касающиеся описанного случая в статье. А что является моим делом, и чем мне заниматься, решу самостоятельно!

опять одно и тоже — Вы совершенно не понимаете принципа работы шагового двигателя и не понимаете что радиаторы на эти транзисторы до 50 ампер можно не вешать т.к. шим.
Двигатель это обмотка. любая обмотка это индуктивность, любая индуктивность при подаче на неё напряжения не дает резко измениться току — ток плавно нарастает — в этом и смысл стабилизатора тока — он сразу лупит побольше напруги а потом снижает шим до нужного уровня чтоб поддерживать нужный ток… вы полный профан вы не разобрались в вопросе и околичными путями решили героически проблемы корней которых вы даже не успели понять но уже зарелизили решение и статью набабахали… а потом сотни ремонтников в сервисцентрах волосы на жопе рвут — кова хрена оно ток не держит где пробой… а он и не пытается держать ток :)

Посмотрев в даташит, каждый имеет возможность убедиться в том, что через транзисторы IRF7836, указанные на схеме, НЕЛЬЗЯ пропускать ток 50А ни в виде ШИМ, ни в виде постоянного тока. Да ещё и без радиаторов!

в оригинальном EVB от техаса применены CSD18531 которые могут долговременно 130 ампер пиково 400 а номинально без активного охлаждения — 30 ампер.
как вы поставили эти заморыши на 30 вольт я ума не приложу — шаговикам надо высокое напряжение 40-50 вольт. иначе не получится достигать скорости нарастания тока и поддержания этого тока на оборотах
Вы же не будете утверждать что драйвер гавно потому что с вашими транзюками вы с него ничего вытащить не можете а их быстродействие не позволяет адекватно на 40 килогерцах работать как и с нормальным напряжением питания?

Поддержу хейт!

Контроллер коммутирует линию питания (напругу) через токоограничивающий регулятор на обмотку. На малой скорости ток напряжение на обмотке успевает дорасти до установленного лимита и в обмотках выделяется хорошее тепло, двиг развивает паспортный момент. При повышении скорости напряжение не успевает достигнуть питания и паспортный момент не развивается. Чтобы его развить - нужно поднять напряжение питания драйвера - тогда напряжение на индуктивности будет нарастать быстрее и получим больше момента на валу.

Если Вам по ТЗ надо питаться от 12В и ездить быстро, то тогда Вам потребуется совершенно конкретная конструкция шаговика с малой индуктивностью (слабенький шаговик), т.е. большой шаговик быстро крутиться не сможет от 12В. Опять же возникает вопрос, а не взять ли конструкцию двигателя, подходящего для хороших оборотов?

НЛО прилетело и опубликовало эту надпись здесь
вы пожалуйста не путайте таймера с функционалом вывода ШИМа и шимконтроллеры — это знаете-ли сильно не одно и то же!
Если так хотите то да — как на плисе можно построить любой процессор так и на достаточно мощном процессоре можно сэмулировать ПЛИС. но почемуто до сих пор активно развиваются именно SOC в виде однокристального решения в которое включается и процессор и ПЛИС ядро и даже несколько аналоговых операционников с аналоговой же системой комутации — аналог цифрового плис только в аналоге. ну просто потому что DSP это и как бы процессор но и какбы плис. Всё для своих нужд.
И совершенно не важно что некую конкретную сверхузкую задачу с кучей огрехов у когото получилось решить способом для этого не предназначенным… я ж не против — забивайте гвозди и дальше гранатой — пожалуйста. вот только я бы предпочел гранату отдать професионалам а сам бы взял молоток и притом соответствующий по массе длине и толщине гвоздя и прочности древесины ато опять может получиться кувалдой подбивать штапики на окнах.
Колекторник это в равной степени мной указано в сторону BLDC ибо это по сути тот же колекторник но с электронным колектором. Давно существуют BLDC сервоприводы где вы не паритесь с усилиями, весом и характеристикой инерции нагрузки а просто даете команду «не позднее 12 мс спозиционироваться в 14 градусе» и всё идете себе дальше и это уже не ваша забота какими токами это будет достигаться — простейший пример — практически все струйные принтеры, навороченные лазерные резаци на ремнях и конечно же всеми любимые 3д принтеры — колекторные серкоприводы там справляются сильно лучше шаговиков когда дело касается на настольных игрушек а с площадами хотябы в пару квадратных метров и напечатать такую деталь надо не за месяц а хотябы за день.
Потому я и утверждаю — как только появляется абсолютный энкодер как необходимость ловить пропуски шагов — вы или маломощный шаговик выбрали или он у вас на нужную мощность тупо не влез а нагрузка сильно инерционная — с ней и надо работать в векторном разрезе а не в тупую пытаться грубой силой все реактивы в колебания около одного зуба шаговика уложить. Нет. я ни в коем случае не умаляю достижений тошибы в мире превращения шаговиков в более менее векторизированный привод но их шаговики как бы больше ВРД чем шаговики так что опять таки — отсыл в сторону BLDC.
ASIC вообще отдельная тема подсказывающая о том что любое универсальное решение будет хуже узкоспециализированного сразу разработанного под конкретную забачу — получится и эффективнее и удобнее и меньше тепла выделяться будет и так далее и тому подобное — достаточно посмотреть на криптофферию и как быстро кончились простые процы, потом как быстро кончились видеокарты а потом как мигом сдулись и плис — и на чем сейчас все биток майнят? ASIC. яркий пример когда сколько бы ты ядер туда не впихнул сктолько бы гигагерц не набрал под азотом — всеравно это костыль временный.
НУ и поверьте я не умаляю усилий топикстартера нет — я сам раньше такой был — не разобравшись в проблеме взяв молот потяжелее пошел хреначить влоб. Это тоже работа и раз хоть какая-то цель достигнута — ну и ок. Я лишь призываю — если и браться делать и уж тем более выставлять свою работу напоказ давая другим пример — тогда делать нужно как положено. какнибудь оно само получится.
НЛО прилетело и опубликовало эту надпись здесь
ну вот и смотрите — скорость изменения тока в катушке типового шаговика на нормальном питании 40+ вольт достигает «всего» 10-20 микросекунд. на этом промежутке времени ацп приведенного дспика сможет сделать всего 60 замеров если позволит полоса аналогового датчика тока. даже если это все завести на апаратные прерывания и каждый замер тока будет изменять заполнение ШИМа — всеравно точность удержания тока будет +- 18% что уже писк шум и ультразвук в люфтах исполнительных устройств.
Другое дело когда проц будет через высокоскоростной DAC выдавать требуемые токи по фазам а уже внешний аналоговый шимчик работающий на частоте под мегагерц и с полосой канала тока под 2 мегагерца — будет поддерживать заданный процем ток. тогда да — и атмеги8-й хватит. ну или это будет специализированная микруха где подобные аналоговоаппаратные шимконтроллеры будут встроены внутрь и какое-то полудохлое ядро будет ими управлять. ну а я бы поставить 100 msps ацп и плисину чтоб на ней цифровую часть шимконтроллера организовать с дикими частотами шима и естественно с нормальнім разрешением а не 8 бит. вот так то. а т.к. уже есть плисина то или nios или picoblaze — их прекрасно хватит если рутину по поддержке тока переложить на апаратную реализацию а не софтово пытаться поциклово ток ограничивать. вообще я против шима в подобных применениях и надо чтото типа чим но в разрезе компаратора и заданного тока с высокой полосой пропускания и дедтаймами.
НЛО прилетело и опубликовало эту надпись здесь

Согласен с Вами, контроллер pic18f2331 на данный момент устарел. Но и драйвер был сделан не вчера. Тем не менее, его характеристики подошли для решения поставленной задачи.
Если бы мне пришлось решать подобную задачу на данный момент, конечно, я выбрал бы другой контроллер. Цель статьи- описать принципы управления ШД. Микроконтроллеры можно использовать разные.

Чем выше частотa ШИМ, тем будет меньше гармонических искажений «синусоиды» на выходе. Но при этом возрастают тепловые потери на силовых транзисторах, что уменьшает КПД.
Использование DSP  процессоров, а уж тем более FPGA , для решения описанной в статье задачи крайне нецелесообразно. Так как стоимость драйвера значительно вырастает.
В некоторых задачах, связанных с управлением  двигателями, необходимо использовать  FPGA и DSP внешние АЦП . Для описанной в статье задачи хватило и простого контроллера.

Чем выше частотa ШИМ, тем будет меньше гармонических искажений «синусоиды» на выходе. Но при этом возрастают тепловые потери на силовых транзисторах, что уменьшает КПД.
Использование DSP  процессоров, а уж тем более FPGA , для решения описанной в статье задачи крайне нецелесообразно. Так как стоимость драйвера значительно вырастает.
В некоторых задачах, связанных с управлением  двигателями, необходимо использовать  FPGA и DSP внешние АЦП . Для описанной в статье задачи хватило и простого контроллера.

Прежде всего несколько непонятно — у вас обычные BLDC двигатели (под трапецию) или рассчитанные на векторное управление (под синус)?
Двигатель ниже 5 об/мин двигается рывками, а ток сильно возрастает

момент при малых оборотах высокий, а с увеличением оборотов нелинейно падает, и чем меньше напряжение питания, тем хуже зависимость

Собственно — это одна проблема. И она называется «противоэдс». То есть вращение ротора вызывает ЭДС в катушках. В управлении бездатчиковыми двигателями этот эффект используется для уточнения положения ротора.
По большому счёту вам надо рассчитывать подаваемое напряжение с учётом требуемого ускорения и текущей скорости. Либо работать с токовыми драйверами.

первый шаг периодически сопровождался рывком ротора. Удар можно убрать, путем снижения амплитуды первой половины шага (в моем случае 20% от максимума) и значительно увеличив время первой половины шага по сравнению с другими шагами.

Здесь имеет смысл плавно (линейным нарастанием) вывести на максимальное значение чтобы плавно поставить ротор в заданное положение и дальше уже регулировать напряжение в зависимости от требуемого ускорения.
Двигатель должен вращать массу около 7кг за 0,7 — 1 секунду на 90°.

Массу? Обычно для движения вращения указывают момент инерции, одна масса тут информативности не несет.

По поводу законов разгона, торможения расчета скорости итд. Не проще ли было сделать замкнутую систему с несколькими контурами П/ПИ/ПИД регуляторов с конечным контуром по положению, а на вход подавать заданное положения вала — ступеньку или для плавности в начале прямая/парабола с 0 до 90 градусов с выходом на 90? Мне кажется тогда проблемы 2,3,4 решились бы сами собой, через подбор коэффициентов регуляторов.

Насчёт массы я с Вами согласен. Нужно указывать необходимый момент, а не массу. Так как мне не были предоставлены значения момента, я узнавал экспериментальным путем хватит ли мощности двигателя.


Действительно идею об использовании ПИД-регулятора можно использовать для частичного решения проблемы 2 и 3! Решить проблему 4 данным способом уже сложнее.

Спасибо за статью. Дружище не спорь с упертыми в своей вере. Ты решил поставленную задачу в рамках тз, и главное, что работает. Уровень упертости твоих оппонентов просто поражает. Это не конструктивный технический диалог, а больше похоже на религиозный агр.

Спасибо, рад, что статья понравилась!

В принципе, многое уже сказали, поэтому только обобщу и дополню:
— Основное непонимание при работе с шаговым двигателем, это то, что он питается током, а не напряжением, и задача всех микросхем и готовых устройств это поддержание тока через обмотки (ну и вращение результирующего вектора с учетом дробления) чоппером с фиксированной или настраиваемой частотой. По сути, отсюда все эти проблемы с вибрацией и потерей момента. И питание для такого стабилизатора нужно чем больше, тем лучше (есть готовые драйвера и на 100В). Иначе момент начнет падать при скорости вращения хоть немного больше 0, тк индуктивность ограничивает скорость нарастания тока(=момента). Да, я видел, что в ТЗ стоит 12В, но это ваша задача как исполнителя объяснить, почему это не подходит. Но, допустим, питание не поменять вообще никак, даже мощный повышающий преобразователь поставить нельзя (хм, почему ?). тогда…
— Основное непонимание номер 2 — каждой (категории) задаче свое решение, и шаговики применяются там, где заранее известен диапазон скорость/момент, и под этот диапазон выбирается и шаговик, и драйвер, и напряжение питания. Если у вас появляется какая-то рука человека с неизвестными характеристиками и вы пытаетесь компенсировать это энкодером, то шаговик тут становится лишним. На рынке представлено достаточно двигателей (как синхронных, так и коллекторных) с энкодером на одном валу и редуктором на другом (Faulhaber, Maxon, да хотя бы GYEMS), тем более 3Н*м это очень небольшое требование. Далее двигатель подключается к готовому блоку управления, который подключается к вашему микроконтроллеру управления объектом и все.
Ну, и почему я все это написал:
Думаю, эта статья принесет практическую пользу и поможет читателю лучше понять принципы управления шаговым двигателем.
— извините, нет. Вы собрали почти все грабли, не разобравшись в теории.
И нет, готовые микросхемы/драйверы не имеют отношения к ШИМ вообще.
Ну а чтобы быть не совсем голословным, проект, реализованный пару лет назад: платформа колесная на рельсах, примерно 21кг весом, управляется с пульта по типу взад/вперед или до заданного расстояния, вес не меняется, внешних воздействий нет, диапазон передвижения около 8м, скорость 0,45 м/с. Для движения выбран шаговик NEMA23H76 на ~1Н*м, готовый драйвер типа step/dir с регулировкой максимального тока до 3А, микрошагом до 16. Управляется с микроконтроллера pic16f887, который рассчитывает ускорения, расстояние торможения, посылает импульсы (до 24кГц), показывает, что происходит оператору на дисплей. При этом время разгона 0,51с с ускорением около 0,87 м/с^2 и усилием 18,3Н.

Вы пишите: "Да, я видел, что в ТЗ стоит 12В, но это ваша задача как исполнителя объяснить, почему это не подходит." Но, допустим, питание не поменять вообще никак, даже мощный повышающий преобразователь поставить нельзя (хм, почему?).
Ответ — Заказчик объяснил, что напряжение не должно превышать 12В из соображений безопасности! Это обязательное требование ТЗ.
Вы пишите: "Если у вас появляется какая-то рука человека с неизвестными характеристиками, и Вы пытаетесь компенсировать это энкодером, то шаговик тут становится лишним. На рынке представлено достаточно двигателей (как синхронных, так и коллекторных) с энкодером на одном валу и редуктором на другом (Faulhaber, Maxon, да хотя бы GYEMS). Тем более 3Н*м это очень небольшое требование. Далее двигатель подключается к готовому блоку управления, который подключается к вашему микроконтроллеру управления объектом и все."
Ответ — Да, данную задачу в разы легче решить с использованием других типов двигателей.
Вы предлагаете использовать двигатель с редуктор. Данная идея была реализованна ранее с использованием коллекторного двигателя и редуктора. Это решение оказалось крайне не удачным. Так как редукторы достаточно быстро выходили из стоя. Редуктор с достаточным допустимым моментом имел большие габариты и стоимость. А у коллекторного двигателя со временем стирались щетки, что требовало дополнительно обслуживания механизма.
Так и появилась у заказчика идея об использовании ШД и значительное упращение механических узлов изделия.
Практически все двигатели асинхронные, коллекторные, BLDC и т.д. с малым количество пар полюсов имеют не подходящие характеристики на низких оборотах.
Поэтому необходимо устанавливать дополнительно редуктор. Также стоит учитывать воздействие руки взрослого (и порой не совсем адекватного) человека, что в свою очередь требует установку достаточно мощного редуктора. Это увеличивает габариты и стоимость.
В дальнейших проектах на других схожих механизмах были использованы BLDC двигатели с большим количеством пар полюсов, чтоо решало большое количество проблем описанных выше.
Так как заказчик очень хотел сделать механизм с ШД, он его получил!
Вы пишите: "Вы собрали почти все грабли, не разобравшись в теории."
Ответ — Смысл перегружать статью теорией расчета, уравнениями обощенных электрических машин, насыщение стали ШД потокосцепления, функциями зависимости токов и индуктивности фазных обмоток зависимости угла разсогласования магнитных осей статора и ротора?
По моему мнению, системы уравнений достаточно сложны и требуют написания отдельной статьи.
Замечания о том, что я не учитываю индуктивность обмоток и их сопротивление безосновательны. Зависимость сопротивления и индуктивности и напряжения учитывается в первую очередь. Это совершенно очевидные характеристики.
Повторюсь, классическое управление шаговым двигателем подразумевает контроль тока, что всегда влечет за собой появление ШУМА!
Основная проблема- это ШУМ ШУМ ШУМ! Специально выделяю это большими буквами!
Если бы моя задача была сделать механизм, движимый ШД, без учета ШУМА, я бы использовал готовую микросхему.
Вы пишите: "Ну а чтобы быть не совсем голословным, проект, реализованный пару лет назад: платформа колесная на рельсах, примерно 21кг весом, управляется с пульта по типу взад/вперед или до заданного расстояния, вес не меняется, внешних воздействий нет, диапазон передвижения около 8м, скорость 0,45 м/с. Для движения выбран шаговик NEMA23H76 на ~1Н*м, готовый драйвер типа step/dir с регулировкой максимального тока до 3А, микрошагом до 16. Управляется с микроконтроллера pic16f887, который рассчитывает ускорения, расстояние торможения, посылает импульсы (до 24кГц), показывает, что происходит оператору на дисплей. При этом время разгона 0,51с с ускорением около 0,87 м/с^2 и усилием 18,3Н.
Ответ- Вы описали классическую задачу. Решить которую можно классическим путем.
На производстве подобные задачи неоднократно решались с помощью готовых блоков управления ШД. А если не требовалось высокоточного позиционирования, то использовались асинхронные двигатели с частотными преобразователями.
А шуме и речи не шло, так как на производстве главное эффективность, цена готового изделия.
Еще раз повторюсь это класссические задачи.
Мне была поставлена НЕстандартная задача, которая и потребовала не стандарных подходов для ее решения.

Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации

Истории