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

Em driver двигатель принцип работы

Шаговый двигатель. Датчики. Ардуино

Привет! Рассмотрим еще один тип двигателей, шаговый двигатель.

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

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

Шаговый двигатель 28BYJ-48

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

Принцип работы

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

То есть, напротив обмотки при полношаговом режиме или между двумя обмотками, при использовании полушагового режима.

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

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

Преимущества

  • Точность
  • Фиксирует свое положение при остановке.
  • Регулировка скорости вращения с высокой точностью.
  • Способность быстрого старта, остановки, реверса.
  • Высокая надежность.

Недостатки

  • Невысокие скорости вращения.
  • Возможность «проскальзывания» ротора
  • Возможно явление резонанса.
  • Может произойти потеря позиционирования при механических перегрузках.

Программа

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

Принципиальная схема подключения

К шаговому двигателю необходим драйвер. В нашем случае это драйвер ULN2003. Ток на обмотках шагового двигателя может достигать 160 мА, что слишком много для выводов ардуино. Поэтому управлять двигателем будем через драйвер.

Шаговый двигатель и драйвер ULN2003

Мы можем управлять двигателем напрямую из программы. Для этого будем последовательно подавать напряжение на разные пины драйвера. Таким образом создавать напряжение на обмотках статора. Ротор будет менять положение в соответствии с магнитным полем.

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

Библиотека AccelStepper.h

В библиотеке примеров IDE есть программы и библиотеки для шаговых двигателей. Но намного удобнее использовать стороннюю библиотеку . Ее легко установить через Library Manager. Комбинация клавиш Ctrl+Shift+I

Подробно об этой библиотеке поговорим позже, пока разберем простейшую программу.

Здесь мы используем несколько методов, но они позволяют использовать большой функционал библиотеки.

Сначала подключаем библиотеку и создаем экземпляр библиотеки с заданными настройками.

Объявляем переменные с номерами пинов, к которым подключаем контакты драйвера двигателя.

В функции setup() задаем параметры нашего класса для двигателя.

В функции loop() программируем смену направления движения вала, когда достигнута заданная позиция вала.

И запускаем работу библиотеки.

Работа шагового двигателя и ардуино

Заключение

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

Электродвигатель – это датчик! Часть I: технологии stallGuard™ и coolStep™ от Trinamic

Микросхемы для управления шаговыми двигателями от компании Trinamic хорошо знакомы отечественным разработчикам. Они отличаются широким функционалом, позволяют максимально упростить создание приводов и сократить время на разработку. Одним из факторов популярности драйверов и контроллеров Trinamic стали встроенные фирменные технологии: stallGuard2™, coolStep™, spreadCycle, stealthChop™, dcStep™, microPlyer™, sensOstep™. В данном цикле статей мы попробуем рассказать о каждой из этих технологий, чтобы помочь разработчикам, которые только знакомятся с продукцией компании Trinamic.

Рис. 1. Фирменные технологии TRINAMIC рассматривают двигатель как датчик

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

Для построения сложных прецизионных систем, таких как, например, станки с числовым программным управлением (ЧПУ), необходимо обеспечить максимальную точность позиционирования и плавность движения. Для этого потребуется не только создать силовую схему, но и как следует потрудиться с программными алгоритмами. К счастью, появляются интегральные микросхемы, в которых встроены все необходимые компоненты – от микроконтроллера и системы питания до силового каскада и программных функций. Примером таких решения являются драйверы и контроллеры шаговых двигателей от Trinamic.

Если рассмотреть номенклатуру продукции Trinamic, то окажется, что для каждой из микросхем производитель указывает не только базовые характеристики, понятные даже начинающему электронщику (рабочее напряжение, ток, число шагов, корпус и т. д.), но и перечень поддерживаемых фирменных технологий: stallGuard2™, coolStep™, spreadCycle, stealthChop™, dcStep™, microPlyer™, sensOstep™. Что это за технологии? Зачем они нужны? Если для опытных разработчиков, давно работающих с драйверами Trinamic, ответы на эти вопросы очевидны, то у новых пользователей могут возникнуть трудности. В данном цикле статей мы последовательно разберем каждую из перечисленных технологий и попробуем помочь разработчикам, которые только знакомятся с продукцией компании Trinamic.

Рис. 2. Микросхемы драйверов шаговых двигателей от TRINAMIC

Рис. 3. Микросхемы контроллеров шаговых двигателей от TRINAMIC

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

Читать еще:  Где взять регулятор оборотов двигателя

«Электродвигатель – это датчик!» – девиз, который помещен на странице веб-сайта TRINAMIC. И это не просто слова, так как контроллеры и драйверы от TRINAMIC действительно получают всю информацию о параметрах вращения из сигналов обратной ЭДС и токов обмоток. Полученные данные позволяют добиться прецизионного управления мотором. В настоящий момент TRINAMIC предлагает шесть базовых технологий:

  • stallGuard2™ – основополагающая технология, позволяющая оценивать момент на валу двигателя по обратной ЭДС и токам обмоток;
  • coolStep – вторая по важности технология, позволяющая оптимизировать ток обмоток с учетом прикладываемой нагрузки;
  • spreadCycle – технология, позволяющая обеспечивать прецизионное плавное движение двигателя;
  • stealthChop – технология, обеспечивающая беспрецедентное снижение шума до уровня характерного для обычных двигателей постоянного тока;
  • dcStep – технология, гарантирующая защиту от пропуска шагов и от потери положения вала двигателя;
  • microPlyer™ – технология разбиения шагов управления на 16 дополнительных микрошагов с автоматической подстройкой длительности.

В данной статье мы рассмотрим две основополагающие технологии stallGuard2™ и coolStep™. Начнем с базовой технологии stallGuard2™, которую используют практически все остальные.

stallGuard2™ – технология, позволяющая измерять нагрузку на валу двигателя. На самом деле название этой технологии весьма говорящее. Применительно к двигателям слово «stall» в переводе с английского означает «останавливаться», а сама stallGuard первоначально разрабатывалась как программная альтернатива концевым датчикам. Когда подвижный механизм упирается в препятствие, нагрузка двигателя возрастает, что и обнаруживает stallGuard. Однако сейчас данная технология шагнула далеко вперед и позволяет использовать получаемые измерения в качестве сигналов обратной связи для прецизионного управления движением. Рассмотрим принцип работы stallGuard.

Схема измерения определяет электрическую энергию, подаваемую в двигатель (EI) и энергию, которая возвращается в источник питания (EB) (рис. 4). Разница между этими показателями определяет энергию, которая была передана механической системе (EM). stallGuard2 контролирует значение EB, и, если оно приближается к нулю, это значит, что вся энергия передается в систему и подвижный механизм, скорее всего, уперся в препятствие.

Рис. 4. Принцип измерения нагрузки двигателя в технологии StallGuard2 от TRINAMIC

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

Рис. 5. Настройка параметров StallGuard2

Коэффициента SGT определяет максимальный допустимый момент на валу в данном конкретном приложении (рис. 6). Если момент превышает это значение, можно считать, что двигатель остановился. После того, как значение SGT задано, StallGuard2 пересчитывает величину ST таким образом, чтобы при максимально допустимом моменте его значение было равно нулю. Обычно SGT выбирают с некоторым запасом с учетом калибровки.

Рис. 6. Оценка показаний StallGuard2

Калибровку системы управления проводят при работе двигателя без нагрузки (рис. 7). Подробно рассматривать механизм калибровки мы не станем, скажем лишь, что ее следует выполнять в среднем диапазоне частот, что связано с особенностями измерения обратной ЭДС двигателя. Дело в том, что при низких частотах значение обратной ЭДС двигателя оказывается слишком мало и работа StallGuard2 затруднена. При больших частотах также возникают проблемы. Поэтому эффективная работа StallGuard2 возможна только в среднем диапазоне частот.

Рис. 7. Особенности настройки параметров StallGuard2

coolStep™– еще одна базовая технология от Trinamic. Она позволяет управлять током питания обмоток с учетом прикладываемой нагрузки.

Если не углубляться в тонкости, то принцип работы coolStep достаточно прост. Микросхема драйвера с помощью StallGuard2 определяет нагрузку на двигателе и ток в обмотках, а coolStep использует эти данные для подстройки тока (рис. 8). Если нагрузка растет, ток увеличивается. И наоборот, если нагрузка падает, то ток уменьшается вслед за ней.

Рис. 8. Принцип работы технологии coolStepот TRINAMIC

Использование coolStep дает следующие преимущества:

  • Повышение КПД до 75%;
  • Минимизация перегрева двигателя;
  • Возможность отказа от принудительного охлаждения двигателя;
  • Возможность использования менее мощных и менее дорогих двигателей.

coolStep поддерживает оптимальное значение тока, что позволяет снизить потери, и, как следствие, значительно повысить КПД системы. В примере, представленном на рис. 9, на частотах выше 60 об/мин использование coolStep приводит к росту КПД на 20%. Здесь стоит отметить, что, так как данная технология использует данные от StallGuard2, она также эффективно работает только на средних частотах.

Рис. 9. Повышение КПД при использовании coolStepTRINAMIC

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

Стоит отметить, что технологии StallGuard2 и coolStep являются базовыми для остальных интеллектуальных технологий от TRINAMIC, о которых будет рассказано в следующей статье.

Характеристики микросхемы драйвера шагового двигателя TMC2130-LA:

  • Интерфейс управления: Step/ Dir;
  • Диапазон питающих напряжений: 4,75…46 В;
  • Постоянный выходной ток (среднеквадратичный): 1,2 А;
  • Пиковый выходной ток: 2,5 А;
  • Коммуникационный интерфейс: SPI;
  • Поддерживаемые фирменные технологии: stallGuard2™, coolStep™, stealthChop™, spreadCycle™, dcStep™, microPlyer™;
  • Диапазон температур кристалла: -40…125°C;
  • Корпусное исполнение: 5×6 мм QFN36.
Читать еще:  Чем накрыть двигатель и радиатор

Как подключить электродвигатель к Arduino

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

Для проекта нам понадобятся:

  • коллекторный электродвигатель постоянного тока или аналогичный;
  • драйвер двигателя L9110S, или шилд на микросхеме L293D или аналогичный;
  • шаговый двигатель 28BYJ-48 с драйвером ULN2003 или аналогичный;
  • Arduino UNO или иная совместимая плата;
  • соединительные провода (например, вот такой набор);
  • макетная плата;
  • персональный компьютер со средой разработки Arduino IDE.

1 Что такое драйвер двигателей и для чего он нужен

Максимальный ток на выводах Arduino слаб (около 50 мА) для такой мощной нагрузки как электромотор (десятки и сотни миллиампер). Поэтому напрямую к выводам Arduino подключать электродвигатель нельзя: есть риск сжечь вывод, к которому подключён двигатель. Для безопасного подключения электродвигателей разных типов к Arduino необходим самодельный или промышленно изготовленный т.н. драйвер двигателей. Драйверы двигателей бывают разные, для их работы часто используются микросхемы типа HG788, L9110S, L293D, L298N и другие. Драйверы двигателей имеют выводы подачи питания, выводы для подключения электродвигателей, а также управляющие выводы.

Различные варианты исполнения драйверов двигателей

В данной статье мы будем использовать драйвер для управления двигателями, сделанный на основе микросхемы L9110S. Обычно выпускаются платы, которые поддерживают подключение нескольких двигателей. Но для демонстрации мы обойдёмся одним.

2 Схема подключения коллекторного двигателяи драйвера двигателей к Arduino

Самые простые электродвигатели – коллекторные двигатели. У таких моторов всего два управляющих контакта. В зависимости от полярности приложенного к ним напряжения меняется направление вращения вала двигателя, а величина приложенного напряжения изменяет скорость вращения.

Давайте подключим двигатель по приложенной схеме. Питание драйвера двигателя – 5 В от Arduino, для управления скоростью вращения ротора мотора управляющие контакты подключаем к выводам Ардуино, поддерживающим ШИМ (широтно-импульсную модуляцию).

Схема подключения коллекторного двигателя к Arduino с помощью драйвера двигателей

Должно получиться что-то подобное:

Двигатель подключён к драйверу двигателей и Arduino

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

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

Загрузим скетч в память Arduino. Запустим его. Вал двигателя не вращается. Чтобы задать скорость вращения, нужно передать в последовательный порт значение от 0 до 255. Направление вращения определяется знаком числа.

Подключимся с помощью любой терминалки к порту, передадим число «100» – двигатель начнёт вращаться со средней скоростью. Если подадим «минус 100», то он начнёт вращаться с той же скоростью в противоположном направлении.

Управление электромотором с помощью драйвера двигателей и Arduino

А вот так выглядит подключение подключение коллекторного двигателя к Arduino в динамике:

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

Шаговый двигатель позволяет вращать ротор на определённый угол. Это бывает полезно, когда необходимо задать положение какому-либо механизму или его узлу. Шагом двигателя называется минимальный угол, на который можно повернуть ротор двигателя. Угол поворота и направление движения задаются в управляющей программе. Существует большое разнообазие шаговых двигателей. Рассмотрим работу с ними на примере двигателя 28BYJ-48 с драйвером ULN2003.

Шаговый двигатель с контроллером —> Шаговый двигатель с контроллером

Характеристики двигателя 28BYJ-48:

ХарактеристикаЗначение
Количество фаз4
Напряжение питанияот 5 до 12 В
Число шагов64
Размер шага5,625°
Скорость вращения15 об./сек
Крутящий момент450 г/см

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

Модуль с драйвером ULN2003

На входы IN1…IN4 подаются управляющие сигналы от Arduino. Используем любые 4 цифровых пина, например, D8…D11. На вход питания необходимо подать постоянное напряжение от 5 до 12 В. Двигателю желательно обеспечить отдельное питание. Но в данном случае, т.к. не планируется использовать двигатель на постоянной основе, можно подать питание и от Arduino. Перемычка «Вкл/выкл» просто разрывает «плюс» питания, подаваемого на драйвер. В «боевом» изделии сюда можно, например, коммутировать питание с помощью реле, когда это необходимо, чтобы снизить потребление всего изделия. Итак, схема подключения будет такой:

Схема подключения шагового двигателя с драйвером ULN2003 к Arduino

Соберём всё по схеме.

Подключение шагового двигателя 28BYJ-48 к Arduino

Для Arduino «из коробки» существует готовая библиотека для управления шаговыми двигателями. Она называется Stepper. Можно посмотреть готовые примеры в среде разработки для Arduino: File Examples Stepper. Они позволяют управлять шаговым двигателем, изменяя скорость и направление движения, поворачивать ротор на заданный угол. Как говорится – бери и пользуйся. Но давайте попробуем разобраться с принципом работы шагового двигателя самостоятельно, не применяя никаких библиотек.

Двигатель 28BYJ-48 имеет 4 фазы. Это означает, что у него имеются 4 электромагнитные катушки, которые под действием электрического тока притягивают сердечник. Если напряжение подавать на катушки поочерёдно, это заставит сердечник вращаться. Рисунок иллюстрирует данный принцип.

Схема работы шагового двигателя

Здесь на (1) напряжение подано на катушки A и D, на (2) – на A и B, (3) – B и С, (4) – C и D. Далее цикл повторяется. И таким образом ротор двигателя вращается по кругу.

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

Простейший скетч управления шаговым двигателем (разворачивается)

Как можно догадаться, задержка del определяет скорость вращения двигателя. Уменьшая или увеличивая её можно ускорять или замедлять двигатель.

Если загрузить этот скетч, то увидим, что шаговый двигатель вращается против часовой стрелки. Соответственно, можно вынести цикл вращения в одну сторону в отдельную функцию rotateCounterClockwise(). И сделать аналогичную функцию вращения в противоположную сторону rotateClockwise(), в которой фазы будут следовать в обратном порядке. Также вынесем в отдельные функции каждую из 4-х фаз чтобы избежать дублирования одинакового кода в нескольких местах программы. Теперь скетч выглядит несколько интереснее:

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

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

Финальный скетч управления шаговым двигателем (разворачивается)

Вот теперь совсем другое дело! Мы можем управлять скоростью шагового двигателя, задавая задержку после каждой фазы. Мы можем менять направление движения ротора двигателя. И, наконец, мы умеем поворачивать ротор на некоторый угол. Осталось только определить, какое число необходимо передавать в функции поворота rotateClockwise() и rotateCounterClockwise(), чтобы ротор шагового двигателя 1 раз провернулся на 360° вокруг своей оси. Собственно, дальнейшие наработки – вопрос фантазии или необходимости.

Управление скоростью драйвера двигателя с помощью Arduino

Кем размещено Firgelli Automations Team вн ноябрь 19, 2019

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

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

Компоненты

  • Линейный привод 12 В
  • Блок питания 12 В
  • Ардуино
  • Драйвер двигателя
  • Потенциометр (опция)
  • Электрические провода для подключения и обжимного инструмента или паяльника

Проводка

Обзор оборудования и программного обеспечения

Двигатели постоянного тока в линейных приводах требуют высокого тока (до 5 А), если бы мы подключили линейный привод непосредственно к Arduino, такое высокое потребление тока разрушило бы цифровые выводы Arduino, поскольку они рассчитаны только на 40 мА каждый. Поэтому мы используем драйвер двигателя, который может принимать слаботочный ШИМ-сигнал (широтно-импульсная модуляция) с платы Arduino и выводить сильноточный ШИМ-сигнал на линейный привод.

Драйвер двигателя подключен к двум цифровым выводам ШИМ (выводы 10 и 11 на Arduino Uno). Установив один из этих выводов в НИЗКИЙ, а другой в ВЫСОКИЙ (см. Строки 18 и 19 в коде ниже), мы можем выдвинуть привод на максимальной скорости. Чтобы остановить привод, мы устанавливаем оба контакта в положение LOW (см. Строки 21 и 22 в коде ниже), а чтобы изменить направление движения, мы можем изменить порядок контактов HIGH и LOW (см. Строки 24 и 25 в коде ниже). Мы также можем регулировать скорость, изменяя переменную «Speed» на любое значение в диапазоне [0, 255]; см. строку 17 в коде ниже.

Регулировка скорости с помощью потенциометра

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

Проводка

Обзор оборудования и программного обеспечения

Как упоминалось выше, потенциометр — это поворотное устройство, которое изменяет сопротивление при повороте ручки. При подключении двух внешних выводов потенциометра к 5V и GND, а средний вывод к аналоговому выводу Arduino, A0, создается делитель напряжения. При вращении ручки Arduino будет считывать аналоговые показания в диапазоне от [0, 1023].

Для значений в диапазоне [512, 1023] мы хотим, чтобы привод выдвигался, а для значений [0, 511] мы хотим, чтобы привод втягивался, этого можно достичь с помощью простого оператора if () / else в строках 22 и 28 в код ниже. Затем, используя функцию map () (строки 23 и 29 в приведенном ниже коде), мы можем преобразовать это в сигнал ШИМ, который будет управлять скоростью и направлением привода.

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