Содержание
Вечный энкодер (валкодер) с устойчивыми положениями из шагового двигателя » Журнал практической электроники Датагор
Механический энкодер — вещь удобная в использовании, но он имеет некоторые досадные недостатки. В частности, контакты со временем изнашиваются и приходят в негодность, появляется дребезг. Оптические энкодеры гораздо надежнее, но они дороже, многие из них боятся пыли, и они редко встречаются в таком виде, в котором их удобно было бы использовать в радиотехнике.
Короче, когда я узнал о том, что шаговый двигатель можно использовать как энкодер, эта идея мне очень понравилась.
Практически вечный энкодер! Замучить его невозможно: соберешь раз и можешь энкодить всю жизнь.
Содержание статьи / 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 с энкодером. |
---|
Мы также предлагаем более высокую версию этого шагового двигателя с идентичными размерами, за исключением высоты. На рисунках ниже показан этот шаговый двигатель слева и более высокая версия справа:
|
|
Квадратурный энкодер
Встроенный квадратурный энкодер работает от 5 В и имеет разрешение 1000 P/R, что позволяет выполнять 4000 импульсов на оборот (CPR) выходного вала при подсчете обоих фронтов ( т. е. рост и спад) обоих каналов (т. е. A и B). В дополнение к выходам каналов A и B энкодер имеет исходный канал Z, который генерирует один импульс за один оборот и может использоваться для абсолютного позиционирования. Энкодер также имеет выходы для инверсии A, B и Z. В комплект входит кабель энкодера длиной 15 см (6 дюймов).
Блинчатый шаговый двигатель Sanyo 42×24,5 мм с энкодером, вид снизу. |
---|