Вечный энкодер (валкодер) с устойчивыми положениями из шагового двигателя » Журнал практической электроники Датагор

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

Короче, когда я узнал о том, что шаговый двигатель можно использовать как энкодер, эта идея мне очень понравилась.
Практически вечный энкодер! Замучить его невозможно: соберешь раз и можешь энкодить всю жизнь.

Содержание статьи / Table Of Contents

Камрад, рассмотри датагорские рекомендации

🌼 Полезные и проверенные железяки, можно брать

Опробовано в лаборатории редакции или читателями.

Трансформатор R-core 30Ватт 2 x 6V 9V 12V 15V 18V 24V 30V

Паяльная станция 80W SUGON T26, жала и ручки JBC!

Отличная прочная сумочка для инструмента и мелочей

Хороший кабель Display Port для монитора, DP1. 4

Конденсаторы WIMA MKP2 полипропилен

Трансформатор-тор 30 Ватт, 12V 15V 18V 24V 28V 30V 36V

SN-390 Держатель для удобной пайки печатных плат

Панельки для электронных ламп 8 пин, керамика

В качестве энкодера я решил попробовать миниатюрный безымянный шаговик из компьютерного дисковода 5.25 дюйма.

Я разобрал несколько дисководов, везде двигатели были разные. Встречались на шлейфе, встречались с косой цветных проводов. На шлейфе общий провод — крайний. Всё остальное находится прозвонкой. По сопротивлению понятно: с выхода на выход сопротивление вдвое больше, чем с выхода на общую точку. А можно даже не прозванивать. Если открутить четыре винта, внутри коммутационная плата, на ней видно, где общий провод.

Исходная схема многократно встречается в Сети в вариациях. Я оттолкнулся от статьи Thomas (OZ2CPU).

Рис. 1 Преобразователь сигналов шагового двигателя в квадратурный код

У неё есть достоинства, но есть и недостатки, об этом далее. Собрал пробный вариант в виде макета, и понял, что ничего не понял

Для начала хотелось бы сразу видеть, в какую сторону происходит шаг. Схема выдавала квадратурный код, как и обычный энкодер. Этот код надо было каким-то образом превратить в мигание светодиода — «правый» или «левый».

Разработал и протестировал вот такую схему:

Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.

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

Для сборки понадобятся 8 элементов «2И-НЕ», я использовал два чипа 74HC00.
Элемент U2A, диод, конденсатор и U2B создают короткий импульс в момент положительного фронта. Элемент U6D, U4D и U2D — мультиплексор, который пересылает этот испульс либо на один, либо на другой светодиод.

Рис. 3 Диаграмма квадратурного кода

Разумеется, этот же функционал можно сделать на единственном микроконтроллере, но это далеко не для всех доступно и удобно. Всё-таки элементы 2И-НЕ можно найти где угодно, в т. ч. советские (74хх00, К155ЛА3, К555ЛА3).
Последние два инвертора (U5D и U3D) можно выкинуть, ведь ничто нам не мешает подключить светодиоды не к земле, а к плюсу питания. Если крепко пошевелить мозгом, схему можно было бы ещё упростить, но эту задачу оставляем на будущее.
Печатки нет, поскольку всё собиралось только на макетке.

Собираем всё это, и что же мы видим? Схема далеко не всегда работает должным образом.

Исключён фрагмент. Полный вариант доступен меценатам и полноправным членам сообщества.

Жалко, что видео не передает тактильные ощущения на валу!

В целом работа энкодера меня устраивает. Крутить такую «ручку громкости» необычно приятно.
Работа над устройством будет продолжена.

Спасибо за внимание!

 

Сага о абсолютном энкодере и шаговом двигателе

Техничка

Подпишитесь на автора

Подписаться

Не хочу

42

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

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

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

В итоге я остановился на втором варианте, так как его разрешения хватает что бы легко ловить повороты даже для двигателя в 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 раз
  • Данные с энкодера писались в лог (скриптик с сериал консоли всё писал в файлики)

В итоге получилось довольно занятная картинка:

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

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

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

То что мы видим при скорости 10мм/с (да довольно медленно)

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

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

Теперь посмотрим что будет если шаговик пойдёт немного быстрее 25 мм/с

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

Теперь 50 мм/с

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

Теперь 75 мм/с

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

100 мм/с

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

125мм/с

150 мм/с

200 мм/с

и 250мм/с

Как видим, с увеличением скорости ошибка позиционирования растёт… Что можно нарисовать примерно так…

Картинка похожа на первую. Опять же зеленая линия это среднее. Оражневая медиана. Какие выводы можно сделать?

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

Что из всего этого следует?

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

Продолжение следует…

Подпишитесь на автора

Подписаться

Не хочу

42

Двигатели и энкодеры — Trinamic

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

 

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

QSh3818-32-07-006 11 6Ncm 0.68A 28mm 28mm 32mm
QSh3818-51-07-012 11 12Ncm 68″> 0.68A 28mm 28mm 51mm
QSh5218-35-10-027 17 27Ncm 1.00A 42mm 42mm 35mm
QSh5218-41-10-035 17 35Ncm 1.00A 42mm 42mm 41mm
QSh5218-47-28-040 17 40Ncm 2.80A 42mm 42mm 47mm
QSh5218-51-10-049 17 49Ncm 1. 00A 42mm 42mm 51mm
QSH5718-41-28-055 23 55Ncm 2.80A 57mm 57mm 41mm
QSH5718-51-28-101 23 101Ncm 2.80A 57mm 57mm 51mm
QSH5718-56-28-126 23 126Ncm 2.80A 57mm 57mm 56mm
QSH5718-76-28-189 23 189Ncm 8″> 2.80A 57mm 57mm 76mm
QSH6018-45-28-110 24 110Ncm 2.80A 60mm 60mm 45mm
QSH6018-56-28-165 24 165Ncm 2.80A 60mm 60mm 56mm
QSH6018-65-28-210 24 210Ncm 2.80A 60mm 60mm 65mm
QSH6018-86-28-310 24 310Ncm 8″> 2.80A 60mm 60mm 86mm
QSH8618-96-55-700 34 700Ncm 5.50A 86mm 86mm 96mm

 

2-phase stepper motors combined с небольшими оптическими энкодерами идеально подходят для энергосберегающих приводов с прямой обратной связью. Добавленный энкодер поддерживает сервоуправление для повышения эффективности, позволяя использовать двигатели меньшего размера. Кроме того, дополнительный мониторинг позволяет осуществлять профилактическое обслуживание и создавать более надежные конструкции, идеально подходящие для требовательных приложений.

QSh3818-32-07-006-8k 11 6Ncm 68″> 0.68A 28mm 28mm 47 мм
QSH3818-51-07-012-8K 11 12NCM 0,68A 28MM 6664MM 2 28mm 28MM 6664 Ммм.0013

17 27Ncm 1.00A 42mm 42mm 53mm
QSh5218-51-10-049-10k 17 49Ncm 1.00A 42mm 42mm 69mm
QSH5718-51-28-101-10k 23 101Ncm 8″> 2.80A 57mm 57mm 73mm
QSH5718-76-28-189-10k 23 189Ncm 2.80A 57mm 57mm 98mm
QSH6018-65-28-210-10k 24 210Ncm 2.80A 60mm 60mm 83mm
QSH6018-86-28-310-10k 24 310Ncm 2.80A 60mm 60mm 104mm
QSH6018-86-90-300-10k 24 300Ncm 9. 00A 60 мм 60 мм 104 мм

 

Электродвигатели постоянного тока известны своей долговечностью, эффективностью и управляемостью. Широко используемые во многих приложениях приводы BLDC обеспечивают относительно высокий крутящий момент с хорошим откликом на скорость. Особенно когда они превращаются в сервоприводы с лучшими в отрасли ИС и модулями Trinamic, они представляют собой надежные решения, которые служат всю жизнь.

QBL4208-100-04-025 42mm 25Ncm 6.94A 8 4000rpm 42mm 42mm 100mm
QBL4208-41-04-006 42mm 25″> 6.25Ncm 1.78A 8 4000rpm 42mm 42mm 41mm
QBL4208-61-04-013 42mm 12.5Ncm 3.48A 8 4000rpm 42mm 42mm 61mm
QBL4208-81-04-019 42mm 18.5Ncm 5.14A 8 4000rpm 42mm 42mm 81mm
QBL5704-116-04-042 57mm 42Ncm 6. 68A 4 4000rpm 57mm 57mm 116mm
QBL5704-94-04-032 57mm 32Ncm 5.08A 4 4000rpm 57mm 57mm 94mm

 

Инкрементальные энкодеры являются ключевыми средствами при работе с двигателями BLDC. Они не только повышают производительность приложения, но и освобождают инженеров от растущего давления миниатюризации и энергоэффективности, позволяя использовать диски меньшего размера. Кроме того, двигатели BLDC с энкодерами повышают эффективность за счет сокращения времени простоя до минимума.

QBL4208-100-04-025-1k 42mm 25Ncm 7. 00A 8 4000rpm 42mm 42mm 118mm
QBL4208-61-04-013-1k 42mm 13Ncm 3.50A 8 4000rpm 42 мм 42 мм 79 мм

 

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

TMCS-20-4-8k-AT-01 32768 increments 20mm 4mm TTL yes
TMCS-28 -5-10k-AT-01 40000 increments 28mm 5mm TTL yes
TMCS-28-5-1k-AT-01 4096 increments 28mm 5mm ТТЛ yes
TMCS-28-6. 35-10k-AT-01 40000 increments 28mm 6mm TTL yes
TMCS-28-6.35-1k-AT-01 4096 increments 28mm 6mm TTL yes
TMCS-40-6.35-10k-AT-01 40000 increments 40mm 6mm TTL yes

Шаговый двигатель Sanyo Pancake

с энкодером: биполярный, 200 шагов/об, 42×24,5 мм, 3,5 В, 1 А/фаза, 4000 CPR

Провода биполярного шагового двигателя заканчиваются оголенными выводами.

Схема подключения биполярного шагового двигателя Sanyo.

Обзор

Этот биполярный шаговый двигатель размером NEMA 17 от Sanyo оснащен встроенным квадратурным энкодером с высоким разрешением (1000 P/R), который обеспечивает 4000 импульсов на оборот выходного вала при подсчете обоих фронтов каналы. Сам шаговый двигатель имеет угол шага 1,8° (200 шагов/оборот), и каждая фаза потребляет 1 А при напряжении 3,5 В, что обеспечивает удерживающий момент 0,85 кг·см (12 унций-дюйм). Двигатель имеет четыре провода с цветовой маркировкой, оканчивающиеся оголенными выводами: красный и желтый подключаются к одной катушке; оранжевый и синий соединяются друг с другом. Им можно управлять с помощью пары подходящих H-мостов (по одному на каждую катушку), но мы рекомендуем использовать драйвер биполярного шагового двигателя или один из наших контроллеров шагового двигателя Tic. В частности, Tics упрощают управление, поскольку они поддерживают шесть различных интерфейсов (USB, последовательный TTL, I²C, RC, аналоговое напряжение и квадратурный энкодер) и настраиваются через USB с помощью нашей бесплатной утилиты настройки.

Нашу 5-мм универсальную монтажную втулку можно использовать для крепления объектов на выходном валу шагового двигателя диаметром 5 мм, а наш алюминиевый кронштейн NEMA 17 предлагает различные варианты установки этого шагового двигателя в вашем проекте.

Этот шаговый двигатель также доступен без энкодера.

Технические характеристики

  • Размер: квадрат 42 мм × 24,5 мм, без вала (NEMA 17)
  • Вес: 105 г (3,7 унции)
  • Диаметр вала: 5 мм
  • шагов на оборот: 200
  • Номинальный ток: 1 А на катушку
  • Номинальное напряжение: 3,5 В
  • Сопротивление: 3,5 Ом на катушку
  • Удерживающий момент: 850 г-см (12 унций на дюйм)
  • Индуктивность: 1,2 мГн на катушку
  • Длина провода: 30 см (12 дюймов)
  • Выходной вал на двух шарикоподшипниках

Дополнительные технические характеристики доступны в техническом описании шагового двигателя SS242x (385k pdf) и техническом описании SS2421-50XE100 для конкретного продукта (568k pdf).

Размеры

Размеры (в мм) SS2421-50XE100 42×24,5 мм блинного шагового двигателя Sanyo с энкодером.

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

Шаговый двигатель Sanyo SS2421-50XE100 42×24,5 мм, вид сбоку.

Шаговый двигатель Sanyo SS2422-50XE100 42×31,5 мм, вид сбоку.

Квадратурный энкодер

Встроенный квадратурный энкодер работает от 5 В и имеет разрешение 1000 P/R, что позволяет выполнять 4000 импульсов на оборот (CPR) выходного вала при подсчете обоих фронтов ( т. е. рост и спад) обоих каналов (т. е. A и B). В дополнение к выходам каналов A и B энкодер имеет исходный канал Z, который генерирует один импульс за один оборот и может использоваться для абсолютного позиционирования. Энкодер также имеет выходы для инверсии A, B и Z. В комплект входит кабель энкодера длиной 15 см (6 дюймов).

Блинчатый шаговый двигатель Sanyo 42×24,5 мм с энкодером, вид снизу.