ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
25 апреля
1005266 Топик полностью
Связанные сообщения
Stepper Motor
Системе управления в целом -- энкодер нужен. Шаговику -- могут быть варианты. Во-первых энкодер размещён непосредственно на валу...2020-09-03
А документация что-то говорит, как например "ноль" энкодера соотносится с положением якоря относительно статора? В общем случае,...2020-06-15
fk0, легенда (17.05.2020 14:08 - 14:43, просмотров: 878) ответил RxTx на Шаговик это вообще у меня тотальная жопа реализации. Признаюсь. Ну лично я так считаю. Я пытался этот блок переписывать чтобы он был "простой и тупой" как микросхема, но каждый раз оказывалась какая-нибудь да херня. Объясню в чем дело. Аппаратура при условном "POWER ON' калибруется по концевику. (я гоню шаговик до концевика, который калиброочно расположен строго в определенном месте). После этого я возвращаюсь в исходный нуль. Я при работе никогда не могу потерять
Управление шаговиком -- это достаточно развесистый конечный автомат скорей полностью умещающийся в прерываниях. И получающий от прикладного уровня комадны вроде "приехать в такую-то позицию", "найти начальную позицию", "безостановочное движение с такой-то скоростью"... И отдающий на прикладной уровень текущую позицию (когда в движении), код ошибки и т.п. При этом этот автомат должен сам следить ещё и за концевиками или датчиками положений. Вообще удобней такой автомат 

вынести на отдельный мелкий контроллер, поближе к драйверу двигателя и соединяемый через I2C, RS485, CAN... В этом кстати ещё плюс, что контроллер может заменить дорогостоящий драйвер и останутся только мосфеты (у многих МК есть спец. модуль для этого -- ШИМ со сбросом от компаратора измеряющего ток в обмотке).


У автомата можно выделить по меньшей мере несколько глобальных состояний:


1) начальное, ожидание команд от прикладного уровня;

2) поиск начальной позиции;

3) движение с положительным постоянным ускорением, разгон;

4) движение с постоянной скоростью;

5) движение отрицательным постоянным ускорением, торможение;

6) останов, удержание двигателя полным током;

7) удержание двигателя малым током (не всегда применимо в случае микрошага: будет доворачиваться);

8) сбой (ожидание команды, переход на пункт 2).


Пункты 3-7 выполняются в порядке перечисления многократно в процессе работы...


Пункт 2 сложный. Он рекурсивно включает в себя пункты 3-6 для движения в сторону срабатывания флажка оптопары, например. Флажок (его край) заведомо проезжается мимо. Затем происходит возврат на границу срабатывания флажка с минимально возможной скоростью и при пересечении флажка фиксируется точка нуля координат.


В дальнейшем, при работе, в движении, сбой фиксируется только если флажок фиксируется на значительном расстоянии от ожидаемого места его нахождения (даже в варианте с ШВП всё оно на самом деле порядочно эластичное). С "лазерным диском" углового датчика аналогично, в движении он может отставать или опережать фактическое положение насколько-то и только после остановки более-менее должен соответствовать. Вообще это от механики больше зависит. Если всё посажено прямо на вал, то каких-то фокусов ожидать не стоит (хотя электрическая фаза всё равно опережает механическую).


Потерять позицию очень даже можно, если во-первых не хватило мощности при заданных ускорениях и скоростях (драйвер может не развить заданный ток, при высокой скорости вращения, из-за индуктивности ротора -- нужно увеличивать напряжение), во-вторых если есть проблемы в механике (рвётся пластик в ремнях и съезжает по корду, сам корд растягивается, высокое трение на направляющих, люфты...) Оптопара при засветке солнечным светом может срабатывать раньше или позже. Хуже того, если там большой гистерезис, оптопара может срабатывать в разных местах в зависимости от направления движения флажка.


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


Как рассчитать ускорение можно почитать здесь: https://www.embedded.com/generate-stepper-motor-speed-profiles-in-real-time/

Это критически важно, если двигатель таскает нагрузку со значительной массой.


У Ридико Леонида Ивановича была статья где-то хорошая, не найти.


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


"По шагам" -- это когда в прерывании расчитывают время когда нужно сделать следующий (микро)шаг и программируют таймер. Не советую, ибо сразу возникает масса проблем и с таймером, и с неуспеванием контроллера на высоких скоростях. Но у тебя, если там сигналы типа DIR и STEP, с управлением фазами ничего не выйдет. Лучше другие драйвера, где просто задаётся ток, без всяких степов. Или вовсе с подходящего МК управлять транзисторами напрямую.

[ZX]