Aklaypart.ru

Авто Журнал
1 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Анимация работы шагового двигателя

Управление шаговым двигателем с помощью Arduino

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

Многие из вас знакомы с маленькими моторчиками, из которых исходят всего 2 провода, они часто встречаются в детских игрушках, например, в машинках.

Это коллекторные электродвигатели постоянного тока. Они могут напрямую подключатся к источнику питания и будут всегда вращаться с постоянной скоростью, в зависимости от подаваемого напряжения. Если необходимо изменить направление вращения, то на нашем моторе нужно просто поменять местами «+» и «-» и он сразу начнёт крутиться в другую сторону. За счёт их простой конструкции, они имеют небольшую стоимость и простоту в управлении.

Но есть ещё один из распространенных типов двигателей — это шаговые электродвигатели.

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

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

Как видно — здесь уже больше, чем 2 провода и напрямую подключить такой мотор к источнику питания просто так не получиться из-за совсем другой конструкции самого двигателя. Если для нашего первого моторчика достаточно было подать «+» и «-» на соответственные клемы и он начинал вращаться, то для шагового электродвигателя нужно подавать цифровые электронные сигналы управления, которые будут сообщать двигателю на сколько и в какую сторону ему необходимо вращаться. Это возможно осуществить с помощью устройства, которое будет генерировать и отправлять эти сигналы на драйвер, а он, в свою очередь, напрямую управлять обмотками двигателя.

Мы рассмотрим пример, как подключить шаговый электродвигатель к Arduino Mega 2560 — именно оно и будет тем устройством, которое генерирует нужные электронные сигналы управления.

Я взял мотор формата Nema 17 — это гибридный шаговый двигатель, который часто встречается в 3Д принтерах, ЧПУ системах, робототехнике и т.д.

Фото двигателя в разрезе:

Драйвер на микросхеме TB6600 — это довольно неплохой контроллер, который можно использовать с двигателями до 4.5 А, 50 В. Для домашних 3Д принтеров и ЧПУ систем его полностью достаточно.

Чтобы драйвер работал, необходим внешний источник питания с напряжением 8-50 В (рекомендуется 36 В). Именно с него наш двигатель будет получать энергию для своей работы. А логические сигналы Dir — направление вращения и Pulse — сигнал шага, драйвер будет получать от ардуино.

У данного двигателя 4 обмотки: A+, A-, B+, B-, их нужно соединить с соответствующими выходами на плате драйвера.

Для управления шаговым двигателем можно использовать различные библиотеки, которые упрощают жизнь, если необходимо как-то динамически управлять двигателем, например «AccelStepper» и тому подобные. Также есть различные программные комплексы для управления 3Д принтерами или ЧПУ станками.

Мы же рассмотрим простой пример вращения двигателя с постоянной скоростью, который не сложно будет повторить всем желающим. Также, так ещё удобно проверять общее состояние двигателя.

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

Примерно так всё работает:

P.S. Сильно в теорию я не вдавался, потому что на это нужен не один пост, да и не всем она понравится 🙂

Дубликаты не найдены

Arduino & Pi

1K постов 17.9K подписчика

Правила сообщества

В нашем сообществе запрещается:

• Добавлять посты не относящиеся к тематике сообщества, либо не несущие какой-либо полезной нагрузки (флуд)

• Задавать очевидные вопросы в виде постов, не воспользовавшись перед этим поиском

• Выкладывать код прямо в посте — используйте для этого сервисы ideone.com, gist.github.com или схожие ресурсы (pastebin запрещен)

• Рассуждать на темы политики

P.S. Сильно в теорию я не вдавался, потому что на это нужен не один пост, да и не всем она понравится 🙂

Почему хотя бы не рассказать об отличиях униполярного от биполярного двигателя? Почему не привести схему модуля(хотя бы из даташита на микросхему)?
Ладно упущен режим микрошага, но основу то можно было скопипастить написать.
Зачем было использовать ардуину? Много нагляднее было бы пару кнопок повесить.

Спасибо за совет, в будущем буду стараться поместить всё в один пост.

Зачем было использовать ардуину? Много нагляднее было бы пару кнопок повесить.

Не совсем понял вопрос

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

Точно, две обмотки А и Б, соответственно + и — на каждой обмотке.

Спасибо, что нашёл ошибку, она как-то автоматически получилась — вижу четыре буквы на плате — пишу, что четыре обмотки)

Если бы копипастил, то думаю, что не сделал такую глупую ошибку, с головы старался писать.

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

Драйвер шагового двигателя менял — не помогло

В чем может быть проблема?

а будет электрическая схема? =) мотор гудит когда не крутится?

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

Читать еще:  Формула определения оборотов двигателя

@BesttseB, проверь код, а именно повнимательнее, где задается частота импульсов. Возможно слишком большая частота импульсов, движок просто ахреневает. Попробуй отдельно протетстить шаговик+МК+твой код, без обвеса. У меня было, что движок сначала разгонялся, потом из-за большой частоты стопорился и когда уменьшалась, то он снова продолжал крутиться.

Автор показывает, как быстро и равномерно крутится шаговый двигатель. Ясно. Понятно. Тема раскрыта на 10 из 10.

а обязательно покупать эту здоровую мандулу? DRV8825 прекрасно справляется с шаговиками до NEMA17 включительно и стоит в несколько раз дешевле + под них на ардуины есть такиеже дешманские шилды — например ардуино 2560 + шилд + 5 драйверов = 1050рублей на али

4988 не то, чтобы хуже, но в DRV8825 можно микрошаг поменьше поставить(актуально для станков с ременнойзубчатой передачей и 3D принтеров) и, как мне кажется, на DRV8825 шаговики звучат благороднее =)

Не конечно, для каждой цели целесообразен тот или иной драйвер. Просто у меня был в наличии только этого формата (остался после ЧПУ системы: https://youtu.be/N3xBpIMORf4 )

а можно статью про то, как с компа управлять этим всем. желательно с кодом.

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

Serial гугли. С компа посылаешь строку на ардуину, она разбирает её и выполняет команду по аргументам.

а с компа в зависимости от языка просто посылаешь в серийный порт строку.

Аргументы придумать не сложно.

Можно заморочиться с wi-fi или ethernet shield, там поднять веб-сервер и из браузера делать запросы. Например, NodeMCU умеет из коробки это, т.к. на ней встроен в-ф

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

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

Похоже, этим драйвером мотор от сидюка не запустишь — напряжение слишком высокое. У мотора +5в, а питание драйвера от 8 в начинается.

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

. ну т.е. у меня на одном таком движке было по маркировке до 38V и 3А максимальная подача (оптимальное 12V & 1.5A), где то около 30V&3A подавал. Как бы я не крепил это сверло, болтами, суперклеем, и тем и тем, эпоксидкой также вместе взятой и т.д. и т.п. в т.ч. и резал/сверлил это чертову маленькую ось, чтоб хоть как в неё вцепиться (по сути надо было его в таком режиме использовать весьма недолго, так что должно было быть норм), всё срывало! . если застревало хоть в мало-мальски не протачиваемом проёме, т.к. крутилось бешено, то даже небольшое торможение со временем всё равно давало срыв и приходилось монтажить заново. Да конечно я и искал напряжение оптимальное, но это либо получалось дико долгое сверление, которое добивало, либо срывало.

Вот как вы за такую ось цепляетесь нормально? . такая ж мелкая сволочь.

..Эпоксидка блин, ну ты даёшь)

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

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

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

К двигателям с нормальными осями обычно бывают цанги типа ERxx, напримем ER11 на шпиндели с валом 6мм

Есть ещё один вариант — запрессовка шестерней.

Держит намертво, промышленный стандарт

Вот тут можно увидеть пример, показывают два стандарта установки шестерней на вал —

2)посадочное место (щлиц на валу)

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

Читать еще:  Двигатель бензонасоса работает постоянно

Но это хорошо, когда еще ось хоть как то нормально торчит, а есть у меня еще одно, даже для меня, исключение (вот там прям с кулак моторчики были) мелочь 2,5-3 см с осью на 1,2 в диаметре убийца до 50 вольт можно подрубать — это жесть! Я на обычные по 20 вольт выставляю и потом руки трясутся после них (ну бывает в руках держишь тестируешь, что будет если зажать шестеренку или еще что или тупо смотришь на его работу, зависнешь или любуешься или и то и то:D). А на того зверя дал 50 вольт, да у меня чуть зубы не повыпадали! 😀

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

Сказать, что я офигел, это ничего не сказать. После такого я положил его подальше и решил использовать только в реально экстренных случаях)

Что такое шаговый двигатель?

Прежде чем перейти к статье, давайте сразу договоримся, что статья не направлена на специалистов, а её цель – донести любознательным любителям техники и технологий о таком устройстве, как шаговый двигатель и об основах работы с ними. Поэтому умников и критиков, жаждущих поговорить о великом многообразии управляемого и регулируемого электропривода, прошу идти общаться на тематические ресурсы по ЧПУ-станкам и 3D-принтерам.

Итак, для начала сформулируем определение. Согласно Википедии: « Шаговый электродвигатель — синхронный бесщёточный электродвигатель с несколькими обмотками, в котором ток, подаваемый в одну из обмоток статора, вызывает фиксацию ротора. Последовательная активация обмоток двигателя вызывает дискретные угловые перемещения (шаги) ротора».

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

Всем известно что ротор «обычного» электродвигателя, будь то асинхронного, синхронного, коллекторного или любого другого будет вращаться до тех пор, пока на него подают напряжение питания, и после отключения питания он будет вращаться еще какое-то время по инерции, если же не используются какие-либо средства для его торможения.

Ротор такого двигателя вращается просто вокруг своей оси без каких-либо ограничений, на 360 градусов, и остановится он в любом месте. Зафиксировать его положением можно только механически (тормозом). По этой причине не получится добиться точного позиционирования исполнительных механизмов, что требуется в робототехнике, ЧПУ-станках и другом автоматизированном оборудовании.

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

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

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

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

Рассматривать типы шаговых двигателей в пределах этой статьи мы не будем, лишь кратко перечислим, какими они бывают. По конструкции:

2. С постоянными магнитами.

По способу питания:

  1. Униполярные (однополярные — ток пропускают через обмотки только в одну сторону).
  2. Биполярные (ток пропускают через обмотки в обе стороны). Здесь драйвер должен подавать напряжение различной полярности, что несколько усложняет схемотехнику. При тех же размерах развивают бОльшую мощность по сравнению с униполярными.

В униполярном двигателе зачастую 5 проводов — 1 общий, от середины каждой из двух обмоток, и 4 от концов обмоток. Иногда говорят «4 обмотки» – это также правильно, поскольку фактически мы получаем 4 обмотки соединенных в общей точки.

Униполярный шаговый двигатель

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

Варианты схем соединения обмоток в шаговых двигателях

Управление шаговым двигателем

Различают два способа управления шаговым двигателем:

1. Полношаговое .
Одновременно включается только пара обмоток (без перекрытия с другими). Достигается максимальный момент на валу, но точность установления угла меньше, чем в других способах.

2. Полушаговое .
В этом случае увеличивается количество шагов, соответственно повышается точность установки положения вала. На каждый первый шаг включается одна обмотка, на каждый второй шагами (полушаг) – пара обмоток. Но когда включена одна обмотка момент на валу снижается вдвое.

На анимациях ниже наглядно продемонстрировано

В некоторых источниках отдельно обозначают микрошаговое управление. Используется, когда необходимо максимальное количество шагов и точность управления. По способу управления оно похоже на полушаговый режим, между шагами включаются две обмотки, а отличие в том, что токи в них распределяются не равномерно. Главный недостаток такого подхода — усложняется коммутация (система управления).

Читать еще:  Двигатель 4m41 какое масло залить

Какие шаговые двигатели выбрать для 3D-принтера: лучшие варианты

При покупке вращающего устройства для 3D-принтера стоит обратить внимание на следующие параметры:

  • размер вращающей конструкции;
  • момент удержания — от 2,5–4 кг/см;
  • номинальный ток — оптимальная версия на 1,7 А;
  • вал — диаметр должен соответствовать конструктивным параметрам принтера.

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

В 3D-принтерах устанавливаются вращающие моторы с маркировкой NEMA.

NEMA — Национальная ассоциация производителей электрооборудования, которая стандартизировала вращающие устройства по таким параметрам, как размер фланца и посадочные параметры. Такой стандарт позволяет разным производителям выпускать двигатели по определенным параметрам в зависимости от маркировки.

Самые востребованные модели в серии NEMA:

  • NEMA 17 с фланцем 42 * 42 мм;
  • NEMA 23 с фланцем 57 * 57 мм;
  • NEMA 34 размером 86 * 86 мм.

Устройство сервопривода

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

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

Скетчи для управления шаговым двигателем

Простой Arduino-код для проверки шагового двигателя

//простое подключение A4988

//пины reset и sleep соединены вместе

//подключите VDD к пину 3.3 В или 5 В на Arduino

//подключите GND к Arduino GND (GND рядом с VDD)

//подключите 1A и 1B к 1 катушке шагового двигателя

//подключите 2A и 2B к 2 катушке шагового двигателя

//подключите VMOT к источнику питания (9В источник питания + term)

//подключите GRD к источнику питания (9В источник питания — term)

int stp = 13; //подключите 13 пин к step

int dir = 12; //подключите 12 пин к dir

if (a 400) // вращение на 200 шагов в направлении 2

Второй код для Arduino для обеспечения плавного вращения двигателя. Используется библиотека AccelStepper library.

AccelStepper Stepper1(1,13,12); //использует пин 12 и 13 для dir и step, 1 — режим «external driver» (A4988)

int dir = 1; //используется для смены направления

Stepper1.setMaxSpeed(3000); //устанавливаем максимальную скорость вращения ротора двигателя (шагов/секунду)

Stepper1.setAcceleration(13000); //устанавливаем ускорение (шагов/секунду^2)

Stepper1.move(1600*dir); //устанавливает следующее перемещение на 1600 шагов (если dir равен -1 будет перемещаться -1600 -> противоположное направление)

dir = dir*(-1); //отрицательное значение dir, благодаря чему реализуется вращение в противоположном направлении

delay(1000); //задержка на 1 секунду

Stepper1.run(); //запуск шагового двигателя. Эта строка повторяется вновь и вновь для непрерывного вращения двигателя

Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

Практический пример

  • В уроке 1 мы определили цель нашего проекта, чтобы понять какого типа мобильного робота можно сконструировать при небольшом бюджете.
  • В уроке 2 мы решили, что мы хотели небольшую платформу на колесах. Во-первых, давайте определим тип привода, который потребуется для создания робота.

Для этого нужно ответить на пять вопросов:

  1. Это привод используется для перемещения колесного робота?
    Да. Нужен мотор-редуктор с управлением при помощи притормаживания одного борта. Это означает, что каждое колесо будет нужно оснастить собственным мотором.
  2. Двигатели для робота используются, чтобы поднять или повернуть тяжелый вес?
    Нет, настольная платформа не должна быть тяжелой.
  3. Диапазон движения ограничивается на 180 градусов?
    Нет, колеса могут постоянно вращаться.
  4. Угол должны быть точными?
    Нет, наш робот не требует позиционной обратной связи.
  5. Это движение по прямой?
    Нет, поскольку мы хотим, чтобы робот вращаться и двигаться во всех направлениях.

Большой мотор Lego EV3

Всем этим требованиям соответствует большой мотор из базового набора LEGO MINDSTORMS Education EV3.

Второй пример использования

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

  • Плата Arduino Uno -1;
  • Драйвер A4988 — 1;
  • Шаговый двигатель NEMA17 — 1;
  • Потенциометр 10 кОм — 1;
  • Кнопка — 1;
  • Переключатель 2-х позиционный — 1;
  • Резистор 10 кОм – 3;
  • Провода MF — 20

Соединение деталей по схеме на рисунке ниже

Схема подключения для управления скоростью и направлением движения

Приступим к написанию скетча. Нажатие на кнопку включает/выключает двигатель, подавая сигнал LOW/HIGH на вход ENABLE драйвера A4988. С помощью переключателя выбираем направление вращения двигателя (сигнал с переключателя подается напрямую на вход DIR драйвера A4988). C помощью потенциометра мы выбираем один из режимов микрошага. Содержимое скетча представлено в примере кода №2. двигателя с постоянной скоростью на один оборот в одну сторону, затем в другую, и далее в цикле.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector