roboforum.ru

Технический форум по робототехнике.
Текущее время: 10 апр 2025, 22:56

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 09 май 2019, 00:30 
Не в сети

Зарегистрирован: 05 фев 2015, 22:58
Сообщения: 93
Данная тема по сути репост моего же поста с 3dtoday. Так что обсуждать можно и тут и там ;)

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

  • AS5048A с разрешением 14bit (если пересчитать в угол по нехитрой формуле 360/2**14 ~ 0.022 градуса)
  • TLE5012b с разрешением 15bit (опять же если пересчитать в угол то 360/2**15 ~ 0.011 градуса)

В итоге я остановился на втором варианте, так как его разрешения хватает что бы легко ловить повороты даже для двигателя в 400 шагов на оборот при 32 микрошаге (а это получится примерно так 360/(400*32) ~ 0.028125 градуса), хотя это уже и экстремальный вариант.

На макетке была собрана конструкция из stm32f103c8t6 aka bluepill энкодера и драйвера шагового двигателя tmc2130 (взял то что было под руками). Всё это счастье было запрограммировано на довольно простые действия:

  • stm32 имеет прерывания на трех пинах которые подключены к Step/Dir/Enable на плате управления принтером при получении сигналов на Step/Dir/Enable производится stm32 делает шаг через tmc2130 после завершения шага (если успевает) считывает положение двигателя через энкодер tle5012b (на валу двигателя помещён магнит)
  • stm32 печатает в UART инфу о количестве шагов, микрошаге, количесве оборотов и текущем угле поворота двигателя (энкодер таки абсолютный и умеет считать обороты)

Дальше у меня возникла идея проверить насколько точно шаговик встаёт по шагам. Для этого в управляющей плате принтера (которая тоже stm32 но пожирнее) были выставлены виртуальные 80 steps/mm для оси X (в принципе это значение стандартное для 20 зубой шпули для GT2) а драйвер двигателя был выставлен в 16 микрошаг (двигатель у меня 1.8 градуса, 200 шагов на оборот, и как следствия с 16 микрошагом каждый шаг соответсвует 360/(200*16) = 0.1125 градуса, запомним эту цифру). Я решил посмотреть как у нас зависит точность выставления угла поворота от скорости принтера (а как следствие и точность).

Как происходило тестирование:

  • Был выбран набор скоростей: 10, 25, 50, 75, 100, 125, 150, 200, 250 мм/с
  • Для каждой скорости передвижение с X0 до X160 и обратно и ожидание в крайних положения по 2 секунды (это 4 оборота движка в одну строну и в другую) повторялось по 25 раз
  • Данные с энкодера писались в лог (скриптик с сериал консоли всё писал в файлики)
В итоге получилось довольно занятная картинка:
Вложение:
repeatability.png
repeatability.png [ 16.07 КиБ | Просмотров: 2928 ]


На картинке выше нарисована статистика собранная по каждой скорости в виде так называемого boxplot (прямоугольник это все значения которые были в измерениях и лежат в пределах одного стандартного отклонения, зеленая линия это среднее значение, оражевая линия это медиана). На картинке нарисовано отклонение от значения медианы для каждой измеренной точки для каждой скорости. Как её интерпретировать:
  • На низких скоростях (до 50 мм/с), у нас повторяемость очень неплохая, на уровне погрешности измерения энкодера
  • На скорости 75мм/с (а это у нас ~1.875 оборота в секунду) ошибка повторяемости позиционирования шаговика становится сравнимой с одним микрошагом
  • На скоростях 100, 125, 150 и 200 мм/с у нас ошибка повторяемости позиционирования шаговика снова становится сравнимой с погрешностью датчика угла поворота (особенность драйвера tmc2130, для него это другой режим работы и он пытается делать точное позиционирование)
  • А вот на скорости в 250мм/с система идёт в разнос и повторяемость падает до ~0.7 градусов (что примерно 7 шагов при дроблении 1/16, или если пересчитать в мм то это будет ~0.1 мм в среднем)

Но это если речь идёт о повторяемости а не о точности. А это разные понятия. Так что теперь поговрим про точность. Будем считать, как это далают прошивки большниства принтеров, что перемещение на один микрошаг у нас всегда одианково (в данном случае это 0.1125 градуса или 0.0125 мм если у нас 80 шагов на мм). Посмотрим насколько это так.

То что мы видим при скорости 10мм/с (да довольно медленно)
Вложение:
f10mmps_real_vs_ideal.png
f10mmps_real_vs_ideal.png [ 42.08 КиБ | Просмотров: 2927 ]


На картинках нарисовано чтение с датчика и счётчик шагов (данные датчика это синяя линия) а так же идеальные значения углов для данного номера шага (хе хе, довольно просто посчитать) а так же вертикальными черточками различия реально измеренного от идеального. Какие выводы можно сделать по этой картинке:
Шаги у нас не равномерны (что в целом понятно, исходя из физики двигателя)
Какие то шаги у нас почти точно попадают в идеальные значения углов поворота (но не все..., совсем не все...)
Хотя точность позиционирования у нас не очень высокая, но повторяемость хорошая (синяя линия на картинке это статистика по 25 повторам

Теперь посмотрим что будет если шаговик пойдёт немного быстрее 25 мм/с
Вложение:
f25mmps_real_vs_ideal.png
f25mmps_real_vs_ideal.png [ 46.44 КиБ | Просмотров: 2933 ]


Картинка в целом не поменялась, но ошибка позиционирования возросла (разница между реальным и идеальным положением)

Теперь 50 мм/с
Вложение:
f50mmps_real_vs_ideal.png
f50mmps_real_vs_ideal.png [ 51.16 КиБ | Просмотров: 2919 ]


Видно что позиционирование стало ещё хуже...

Теперь 75 мм/с
Вложение:
f75mmps_real_vs_ideal.png
f75mmps_real_vs_ideal.png [ 43.1 КиБ | Просмотров: 2914 ]

Всё поплыло ещё дальше...

100 мм/с
Вложение:
f100mmps_real_vs_ideal.png
f100mmps_real_vs_ideal.png [ 42.36 КиБ | Просмотров: 2922 ]


Ошибка осталась на прежнем уровне (tmc2130 перешел в другой режим работы)

125мм/с
Вложение:
f125mmps_real_vs_ideal.png
f125mmps_real_vs_ideal.png [ 41.53 КиБ | Просмотров: 2923 ]

150 мм/с
Вложение:
f150mmps_real_vs_ideal.png
f150mmps_real_vs_ideal.png [ 48.58 КиБ | Просмотров: 2919 ]

200 мм/с
Вложение:
f200mmps_real_vs_ideal.png
f200mmps_real_vs_ideal.png [ 47.54 КиБ | Просмотров: 2923 ]

и 250мм/с
Вложение:
f250mmps_real_vs_ideal.png
f250mmps_real_vs_ideal.png [ 49.58 КиБ | Просмотров: 2922 ]

Как видим, с увеличением скорости ошибка позиционирования растёт... Что можно нарисовать примерно так...
Вложение:
poss_errors.png
poss_errors.png [ 15.48 КиБ | Просмотров: 2941 ]

Картинка похожа на первую. Опять же зеленая линия это среднее. Оражневая медиана. Какие выводы можно сделать?
Что приятно средняя ошибка позиционирования примерно 0. Что означает что шаговик с одинаковой вероятность как проскакивает положение, так и недоходит до него (по этому среднее и есть 0).
А вот медиана уже становится большой. На уровне 0.5-0.8 градуса.
Разброс ошибок довольно большой, он растёт с примерно 0.2 градусов при 10мм/с до 4 градусов при 250мм/с, что соответсвует разбросу хода от 0.02 до 0.5 мм (хе хе.. кто там хвастался что печатает на скорости 200+мм/с....?)
Ещё замечу, что всё это измерялось на свободном шаговике без нагрузки. С нагрузкой будет все печальнее (и я это проверю в следующей части)
Что из всего этого следует?

Если хочется повышать качество печати, то надо слегка поменять подход к позиционирования шаговика в прошивках (позицоинирование у него не линейное, и это надо учитывать). По идее надо сделать умный closed-loop шаговик, которые будет в состоянии корректировать нелинейности при перемещении.

Здравая критика, и идеи приветствуются


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 11 май 2019, 13:50 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10990
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Похоже задача с точностью позиционирования и повторяемости уже не раз возникала перед конструкторами классических принтеров, особенно высокоточных струйников. И система обратной связи положения головы через энкодер плюс безколлекторный двигатель похоже там не с проста...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 12 май 2019, 23:05 
Не в сети

Зарегистрирован: 13 янв 2014, 22:06
Сообщения: 80
Струйник всё-таки отдельная история, там нет необходимости в точном позиционировании, достаточно знать, где находится головка. Но я за ОС! Но ОС на ШД, мягко говоря не правильно, ИМХО..
Мне кажется, что 3д принтеры уже стали достаточно массовым явлением, и кто-то должен уже надоумить китайцев клепать нормальные bldc привода с ОС, вместо навешивания всех тех костылей на драйвера ШД для борьбы с шумом и пропусками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 13 май 2019, 18:58 
Не в сети
скрытый хозяин вселенной :)
Аватара пользователя

Зарегистрирован: 18 сен 2006, 12:26
Сообщения: 18018
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич
alexxy писал(а):
По идее надо сделать умный closed-loop шаговик

Ещё один? может уже всётаки пора на брушлесы перейти?

_________________
<telepathmode>На вопросы отвечает Бригадир Телепатов!</telepathmode>
Всё уже придумано до нас!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 14 май 2019, 10:37 
Не в сети

Зарегистрирован: 05 фев 2015, 22:58
Сообщения: 93
Myp писал(а):
alexxy писал(а):
По идее надо сделать умный closed-loop шаговик

Ещё один? может уже всётаки пора на брушлесы перейти?


Я как то пока не вижу принтеров с bldc + cl


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 14 май 2019, 13:22 
Не в сети
Аватара пользователя

Зарегистрирован: 08 авг 2012, 00:38
Сообщения: 1129
Откуда: Нидерланды, Алмере
Skype: edwbes
ФИО: Эдуард
Можете поучавствовать (2 дня осталось) - IVI: The Closed-Loop 3D Printer
Ну и проект уже 3 года как пробежавший по разным сайтам -
Add a closed loop control to your 3D printer and never worry about missed steps again
Хотя конечно по первой ссылке степперы, во втором обычный DC.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 14 май 2019, 15:25 
Не в сети

Зарегистрирован: 03 янв 2012, 12:55
Сообщения: 3298
Откуда: Москва
прог. языки: VB6, BASCOM, ASM...
alexxy писал(а):
Я как то пока не вижу принтеров с bldc + cl

Да их трудно найти: https://odriverobotics.com/


https://www.youtube.com/watch?v=FUh36RUHzdU

А принтеров нет потому как - дорого, основной прыжок всей этой "технологии" - это была цена.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 15 май 2019, 15:23 
Не в сети

Зарегистрирован: 05 фев 2015, 22:58
Сообщения: 93
Про odrive я в курсе. Но для принтеров нет прошивок которые его умеют ;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Абсолютный магнитный энкодер и шаговик
СообщениеДобавлено: 15 май 2019, 15:55 
Не в сети
Аватара пользователя

Зарегистрирован: 28 авг 2006, 17:09
Сообщения: 664
Откуда: Всеволожск (СПб)
прог. языки: С, C++, Python, Lua, VHDL, Verilog, Forth
ФИО: Олег Белоусов
alexxy писал(а):
Про odrive я в курсе. Но для принтеров нет прошивок которые его умеют ;)


А зачем прошивка? Вот они же пишут - "Step/direction -- Existing motion controllers". Т.е. можно подключить как обычный драйвер шаговика.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO