Как работает управление коллекторным двигателем через ШИМ на Arduino. Какие преимущества дает использование ШИМ для регулировки скорости двигателя. Какие компоненты нужны для схемы управления двигателем на Arduino. Как реализовать плавный запуск и остановку двигателя с помощью ШИМ.
Принцип работы коллекторного двигателя постоянного тока
Коллекторный двигатель постоянного тока состоит из следующих основных компонентов:
- Статор с постоянными магнитами
- Ротор (якорь) с обмотками
- Коллектор
- Щетки для подачи питания на обмотки ротора
При подаче напряжения на щетки, ток проходит через обмотки ротора, создавая магнитное поле. Взаимодействие этого поля с полем постоянных магнитов статора приводит к вращению ротора. Коллектор обеспечивает переключение направления тока в обмотках при вращении, поддерживая непрерывное движение.
Преимущества использования ШИМ для управления двигателем
Широтно-импульсная модуляция (ШИМ) позволяет эффективно регулировать скорость вращения коллекторного двигателя. Основные преимущества ШИМ:
- Плавное изменение скорости в широком диапазоне
- Высокий КПД регулирования
- Простота реализации на микроконтроллерах
- Возможность создания сложных алгоритмов управления
При использовании ШИМ на двигатель подаются короткие импульсы напряжения. Изменяя скважность (отношение длительности импульса к периоду) можно регулировать среднее значение напряжения и, соответственно, скорость вращения.
Компоненты схемы управления двигателем на Arduino
Для создания простой схемы управления коллекторным двигателем с помощью Arduino потребуются следующие компоненты:
- Arduino (например, Uno или Nano)
- Силовой ключ (MOSFET-транзистор)
- Диод для защиты от обратного выброса ЭДС
- Резистор для управления затвором MOSFET
- Источник питания для двигателя
Arduino генерирует ШИМ-сигнал, который управляет силовым ключом, коммутирующим питание двигателя. Диод защищает схему от выбросов напряжения при отключении индуктивной нагрузки.
Реализация управления двигателем на Arduino
Базовый код для управления двигателем с помощью ШИМ на Arduino может выглядеть следующим образом:
«`cpp const int motorPin = 9; // Пин для подключения двигателя void setup() { pinMode(motorPin, OUTPUT); } void loop() { // Плавный разгон for (int speed = 0; speed <= 255; speed++) { analogWrite(motorPin, speed); delay(20); } delay(1000); // Работа на полной скорости // Плавное торможение for (int speed = 255; speed >= 0; speed—) { analogWrite(motorPin, speed); delay(20); } delay(1000); // Пауза перед следующим циклом } «`
Этот код демонстрирует плавный запуск и остановку двигателя с использованием ШИМ. Функция analogWrite() генерирует ШИМ-сигнал на указанном пине Arduino.
Особенности настройки ШИМ для двигателя
При использовании ШИМ для управления коллекторным двигателем следует учитывать несколько важных моментов:
- Частота ШИМ: слишком низкая частота может вызвать слышимый шум от двигателя
- Минимальная скважность: при слишком малой скважности двигатель может не запуститься
- Плавность изменения: резкое изменение скважности может вызвать рывки двигателя
Оптимальные параметры ШИМ зависят от конкретной модели двигателя и требований к системе. Часто требуется экспериментальный подбор значений для достижения наилучшего результата.
Реализация реверса двигателя
Для обеспечения возможности вращения двигателя в обоих направлениях используется схема H-моста. H-мост можно собрать из дискретных компонентов или использовать готовую микросхему драйвера двигателя.
Пример кода для управления направлением вращения с использованием H-моста:
«`cpp const int in1Pin = 7; // Пин 1 для управления направлением const int in2Pin = 8; // Пин 2 для управления направлением const int enablePin = 9; // Пин для управления скоростью (ШИМ) void setup() { pinMode(in1Pin, OUTPUT); pinMode(in2Pin, OUTPUT); pinMode(enablePin, OUTPUT); } void loop() { // Вращение в одном направлении digitalWrite(in1Pin, HIGH); digitalWrite(in2Pin, LOW); analogWrite(enablePin, 200); // Скорость 200/255 delay(2000); // Остановка digitalWrite(in1Pin, LOW); digitalWrite(in2Pin, LOW); delay(1000); // Вращение в другом направлении digitalWrite(in1Pin, LOW); digitalWrite(in2Pin, HIGH); analogWrite(enablePin, 200); delay(2000); // Остановка digitalWrite(in1Pin, LOW); digitalWrite(in2Pin, LOW); delay(1000); } «`Этот код демонстрирует управление направлением вращения двигателя с использованием H-моста. Пины in1 и in2 управляют направлением, а enablePin используется для регулировки скорости с помощью ШИМ.
Защита схемы и двигателя
При разработке схемы управления двигателем важно предусмотреть защиту от возможных проблем:
- Защита от обратного выброса ЭДС (использование защитных диодов)
- Ограничение пускового тока
- Защита от перегрузки по току
- Тепловая защита двигателя и силовых компонентов
Многие современные драйверы двигателей имеют встроенные схемы защиты, что упрощает разработку надежной системы управления.
Оптимизация энергопотребления
Для оптимизации энергопотребления при управлении двигателем можно использовать следующие методы:
- Использование режима сна Arduino между операциями управления
- Отключение питания двигателя, когда он не используется
- Применение алгоритмов плавного разгона и торможения
Пример кода с использованием режима сна Arduino:
«`cpp #includeЭтот код демонстрирует использование режима сна Arduino для экономии энергии между операциями управления двигателем. Arduino просыпается по внешнему прерыванию, что позволяет реагировать на события даже в спящем режиме.
Поворотный стол. Часть 2 / Хабр
Привет, Хабр! В предыдущей статье я рассказывал о наших продуктах – поворотных столах для круговой фотосъёмки. За прошедшее время нам удалось серьёзно продвинуться вперёд и разработать новые устройства на базе Ардуино с использованием коллекторных и бесколлекторных двигателей.
Поворотный стол не такое уж простое техническое изделие как может показаться на первый взгляд. Например, в автоматическом режиме стол поворачивается на нужный угол, выдерживает паузу для того чтобы предмет съёмки смог успокоиться и стать неподвижным, автоматически делает снимок с фотоаппарата, затем некоторое время ожидает окончания экспозиции и переходит к следующему шагу. Так стол совершает полный оборот, и получается серия снимков предмета со всех сторон. Есть и другие режимы работы.
Мы выпускаем столы разных размеров. Самые ходовые – с диаметром столешницы 400, 600 и 900 миллиметров. Столы способны вращать довольно приличный груз, например, стол 600 выдерживает 150 кг, а стол 900 – 250 кг. Как-то приходилось делать по спецзаказу стол диаметром 2700 миллиметров, выдерживающий груз до 700 кг.
Как говорилось в части 1, стол с промышленным контроллером выходил слишком дорогим, поэтому мы решили переходить на Ардуино. Кроме того, мы хотели заменить шаговый двигатель коллекторным.
Почему мы решили менять двигатель? Шаговый двигатель – отличный вариант для программирования. Не надо заботиться о том, как переместить стол на заданное расстояние, всё уже сделано за нас. Шаговый двигатель оснащён логическим контроллером, просто используй нужные команды и ни о чём не думай.
Но есть один существенный недостаток. Шаговый двигатель сильно шумит. Иногда двигатель попадает в резонанс, и тогда тарахтение стола становится невыносимым.
Новая схема работы стола была простой: есть двигатель с питанием на 24 вольта и встроенным редуктором. Двигатель вращает столешницу и управляется через преобразователь ШИМа, так называемый драйвер двигателя. К вращающейся столешнице подсоединён оптический энкодер, передающий текущее положение в скетч Ардуино, который должен управлять двигателем посредством ШИМ-сигнала. И первой моей задачей было научить скетч перемещать стол из точки A в точку B.
Признаться, начинал я эту работу с некоторой робостью. Придётся ли погружаться в изучение ТАУ-регуляторов? Если да, то, скорее всего, надо будет оперировать значением мгновенной скорости. Позволит ли медленная и ограниченная ардуина проводить необходимые вычисления в реальном времени? К счастью, всё оказалось намного проще.
Наш первый макет. Arduino Uno, двустрочный дисплей, кнопкиИтак, скетч должен получать данные от энкодера и управлять двигателем посредством ШИМ-сигнала. Библиотека для энкодера сразу нашлась. Называется, как ни странно, Encoder, легко находится в менеджере библиотек Arduino IDE. Выводы энкодера подсоединяем к пинам 2 и 3, чтобы использовать прерывания – так значения текущего положения стола будут максимально близки к реальности.
Через какое-то время выяснится, что энкодер тем не менее слегка привирает. В чём дело? Плохой энкодер? Библиотека? Несколько отладочных скетчей, измерение импульсов, всё не то… Проблема в том, что мест, где может возникать ошибка энкодера, множество. Да и ошибка плавающая, то она есть, то нет. И вдруг совершенно случайно обнаруживается, что текущая конструкция стола несколько мм… шаткая что-ли. Раньше это было незаметно, ведь обратная связь в системе отсутствовала. А в новом изделии небольшой люфт приводил к большой погрешности в показаниях энкодера, так что потребовалось сделать конструкцию более жёсткой.
Ну что ж, теперь можно приступать к решению главной задачи по перемещению стола на заданное расстояние. Двигатель управляется ШИМ-сигналом. Это значение от единицы до 255, если не использовать большее разрешение. Сразу выяснилось, что двигатель с редуктором начинает вращать стол с некоторого минимального значения ШИМ. На первом макетном столе это значение равнялось 60.
Итак, попробуем реализовать самый простой алгоритм: первую половину пути линейно увеличиваем ШИМ, вторую половину – линейно уменьшаем:
Если значение ШИМ превышает 255, оно будет обрезано:
Угол наклонных прямых на графике можно сделать настраиваемым, тогда пользователь сможет регулировать движения и шаги стола: сделать их более резкими и быстрыми, либо плавными и медленными. И оказалось, что этот простейший подход даёт неплохие результаты!
Правда, иногда стол всё-таки слегка перескакивал через заданную точку. На этот случай мы предусмотрели коррекционное перемещение для возврата назад на минимальном ШИМе. Тем не менее, хотелось бы добиться того, чтобы стол совершал минимальное количество таких ошибок.
Если на минимальном ШИМе стол безошибочно переходит в нужную точку, то что надо сделать? Может быть, стоит использовать квадратичное замедление вместо линейного? Тогда стол будет подходить к концу движениях на скоростях, близких к минимальному значению. Можно и так. Но оказалось, что есть более простое решение. Достаточно начинать тормозить чуть раньше, как на картинке:
Большое значение имеет правильный выбор минимального значения ШИМ. Если значение слишком велико, стол будет часто ошибаться и перескакивать через заданную точку. Слишком маленькое значение приведёт к тому, что нагруженный стол не сможет тронуться.
Тут родилась идея о том, что столу с тяжёлым грузом надо помогать начать движение. То есть если стол в течение определённого промежутка времени не сдвигается с места, надо слегка увеличивать минимальный ШИМ. Но нужно также предусмотреть и верхний лимит увеличения, чтобы в случае короткого перемещения стол не перескочил через заданную точку.
В процессе тестирования выяснилась странная вещь: вроде бы стол вовремя останавливается, но затем оказывается, что текущая позиция немного смещена. Особенно это заметно, если на столе стоит тяжёлый и неустойчивый предмет, например, канистра с плещущейся водой. Стало понятно, что это происходит в результате вибрации в конце движения. Чтобы дождаться полного окончания движения стола и принять решение о необходимости коррекции, нужно подождать какое-то время. Я решил задачу так: делю время на короткие интервалы по 10 мс и дожидаюсь, пока в течении десяти последних интервалов стол не меняет своего положения. Это позволяет минимизировать время ожидания. Попробовал трясти стол с грузом в конце движения – и класс! Стол ждёт, пока тряска не закончится!
Итак, задача перемещения стола была решена. И решена, как выяснилось, неплохо: калибровочные скетчи и скетчи, измеряющие время и осуществляющие десятки и даже сотни циклов по перемещению стола на 360°, приводили стол в исходное положение с точностью до долей миллиметра.
Теперь можно было приступать к реализации режимов стола: автоматическому, ручному, безостановочному, режиму видео и вращению на 90°. Тут дело техники. Упомяну только о том, что в шаговых режимах, автоматическом и ручном, была реализована ещё одна стадия отслеживания ошибок перемещения. Если на предыдущем шаге обнаружилась ошибка, её надо учесть и скорректировать количество меток энкодера, на которое надо переместить стол на следующем шаге. Это важно, поскольку стол в процессе работы может быть случайно сдвинут фотографом.
Как мы и предполагали, новый двигатель работал гораздо тише шагового. Тем не менее, во время работы был слышен лёгкий звон. Дело в том, что стандартная частота ШИМ в Ардуино менее 1 кГц, именно она и ощущается при работе мотора. После того, как мы увеличили частоту ШИМ до 15 кГц при помощи библиотеки PWM, звон исчез. Звук работающего двигателя стал приятным и чем-то напоминал звук движений Робокопа из голливудского фильма. После изменения частоты пришлось немного подкорректировать минимальное значение ШИМ в скетче.
Коллекторный двигатель с редуктором, который мы использовали в первом экспериментальном столеДрайвер двигателя – устройство, преобразующее ШИМ в управляющие сигналыТеперь об управлении. Мы предполагали, что стол будет управляться при помощи проводного пульта. Предыдущий опыт общения с пользователями говорил о том, что длина кабеля должна быть достаточно большой, не менее 5 метров. Когда-то мы пытались использовать беспроводные пульты, но этот опыт был не слишком удачным.
Кроме того, надо было предусмотреть дисплей. Режимов и настроек не так уж и мало, надо информировать пользователя о текущем состоянии. Нашли на Алиэкспресс подходящие коробочки. Вот таким получился пульт, с управляющим энкодером, кнопками и дисплеем:
По ходу дела попался нам на глаза китайский бесщёточный двигатель. Вот такой:
Ему не нужен драйвер, контроллер у него внутри, и ШИМ можно подавать непосредственно на выходы. Кроме того, не нужно менять частоту ШИМ, он работает одинаково тихо на любой частоте. Позже стало ясно, что это тоже важно.
В один прекрасный момент посмотрели мы на наш пульт и подумали, что как-то он не слишком удобен. Надо крутить энкодер, чтобы попасть в нужный пункт меню, жать кнопку, проваливаться в подменю… Да тут ещё и проблема с дисплеем нарисовалась. Подсоединён он у нас был к двум пинам ардуинки и управлялся по протоколу I2C. Оказалось, что если быстро крутить управляющий энкодер и переключать пункты меню на экране, дисплей начинает глючить, пропускать или путать буквы, а через какое-то время и вовсе зависает.
А что, если вообще отказаться от пульта и использовать вместо него смартфон? Мобильное приложение может отображать движения стола в реальном времени и вообще сделает процесс управления очень удобным. Соединяться со столом можно через bluetooth, тут проблем нет. Кроме того, в мобильном приложении можно реализовать такие фишки пользовательского интерфейса, которые трудно сделать на пульте, например, поворот стола на произвольный угол. Так у нас начался второй этап разработки.
Со средой разработки вопросов не было, это должен быть Xamarin. Во-первых, у меня уже был опыт разработки на этой платформе. А во-вторых, нужно приложение и для Android, и для iOS. Многие фотографы – пижоны, и любят пользоваться айфонами.
Xamarin не предоставляет стандартных средств для работы с bluetooth, поэтому пришлось искать библиотеку. Я остановился на Bluetooth LE. Собственно, и выбора-то особого не было, да и где-то на форумах MSDN сотрудник Microsoft рекомендовал эту библиотеку для работы в Xamarin. На первый взгляд, плагин оставлял впечатление какой-то незавершённости, но потом оказалось, что он вполне рабочий.
О железе: вначале я использовал имеющийся у меня bluetooth модуль HC-6. Он не подходил для полноценной работы, поскольку нам был нужен bluetooth не ниже 4 версии, то есть bluetooth low energy – iOS в отличие от Android не работает со старыми версиями. Но я набросал нечто вроде тестового фреймворка для первых экспериментов. Потом мы перешли на модули JDY-34, вот такие:
Архитектура была ясна с самого начала: приложение должно устанавливать связь со столом и посылать команды. Стол, то есть скетч, будет отвечать на команды и во время движения информировать приложение о своём текущем положении. Протокол обмена лучше всего построить на основе коротких текстовых сообщений, так отладка будет проще.
Пришло время изучать Bluetooth GATT. И вот что я вам скажу: вроде и Интернет у нас есть, и информации море, а найти то, что тебе нужно, с каждым годом всё сложнее и сложнее. В общем виде оно вроде бы понятно: GATT как иерархическая структура, устройство, сервисы, характеристики, но вот детали…
Лирическое отступлениеВспоминаю прекрасные руководства пользователя по операционным системам, программам и библиотекам 30-летней давности. Любая библиотека имела исчерпывающее описание всех методов и возможностей, это было очевидно и даже не обсуждалось. Написаны они были простым английским языком, и там можно было найти всю необходимую информацию. Кроме руководств своевременно выходили объёмные учебники, детально объясняющие все тонкости и проблемы.
Сейчас всё не так. Фреймворки меняют друг друга с калейдоскопической быстротой. Гайды пишутся, скорее, для галочки, а то их и вовсе нет. Массу времени приходится тратить на сбор информации в Интернете по крупицам… Да, судари мои, куда катится этот мир?
Исходя из архитектуры приложения, мне были нужны две возможности – write, чтобы посылать команды, и notify, чтобы получать ответы и уведомления. Но какую GATT-характеристику следует выбрать? В модуле JDY-34 есть несколько подходящих. Где-то в одном из описаний я нашёл UUID сервиса как в моём модуле и решил, что эту характеристику и надо использовать для записи и нотификации.
В этом и заключалась моя ошибка. Сначала вроде бы всё работало, но потом я стал замечать, что иногда ответы от стола приходят в искажённом виде. Вскоре я понял, что проблема заключается в следующем: приложение отправляет команду столу, но в это самое время от стола приходит очередной токен, и данные в общем буфере портятся. Как оказалось, никакой синхронизации на уровне характеристики нет, то есть запись и чтение могут перекрывать друг друга, и другого выхода, кроме использования раздельных характеристик для write и update нет. К счастью, модуль JDY-34 позволяет сделать это.
Кстати, ещё во время работы с модулем HC-6 я заметил, что мои короткие текстовые сообщения буквально в несколько символов, приходящие от стола, могут иногда разбиваться. То есть сначала приложение получает нотификацию с первой частью сообщения, а потом – со второй. Я надеялся, что в Bluetooth LE этого не будет, но нет, поведение осталось таким же. Так что мне пришлось ввести в протокол обмена разделитель термов и реализовать стрим, куда поступает входной поток сообщений.
В итоге, мобильное приложение получилось таким:
И вот пришло время решать вопрос с комплектующими. Платы Nano были ненадёжны, среди модулей JDY-41 попадались бракованные. Предлагать недешёвое изделие с подобной начинкой – это неуважение к покупателю. Хотелось бы найти хорошие надёжные платы со встроенным bluetooth.
Первое, что мы попробовали, – это ESP32, но она нам не зашла. То ли плата была левая, то ли делали мы что-то неправильно, но нам никак не удавалось заставить работать энкодер.
Потом мы стали смотреть в сторону BLE Nano V3.0 Micro с интегрированным чипом Bluetooth TI CC2540 BLE. Тут вообще интересная история случилась: вроде как и характеристики были такие же, как в модуле JDY-34, вплоть до совпадения UUID, но характеристика для записи не работала. То есть нотификация и чтение работает, а запись – нет.
Хорошо, если найти подходящую плату со встроенным bluetooth модулем не получается, надо хотя бы заменить устаревшие китайские Nano на что-то приличное. Вот в Москве есть в продаже фирменная Nano Every, позиционируется как эволюция традиционной Nano. Но – парадокс! библиотека PWM на ней не работает, и, похоже, возможности устанавливать частоту ШИМ для отдельных пинов нет вовсе. Можно, правда, ускорить системное время, тогда и частота увеличится. Не слишком элегантно, но этот подход работает. Надо только увеличить все временные интервалы, использующиеся в скетче, ведь функции millis и micros будут выдавать ускоренное время.
Тем не менее, такой подход довольно стрёмный. Вот, например, функции чтения в классе Serial используют временную задержку. Выходит, надо её переустанавливать при помощи Serial.setTimeout. А сколько ещё подобных подводных камней?
Под конец нам всё-таки удалось найти плату с интегрированным bluetooth модулем. Это Nano 33 IoT. Эта плата позволяет программно сконструировать в скетче bluetooth-устройство со всеми его сервисами и характеристиками, используя библиотеку ArduinoBLE. Библиотека эта реализует полноценный GATT. Это здорово! Программисты меня поймут – я был впечатлён!
И напоследок о моторах. Бесколлекторный двигатель, конечно, предпочтительней. Он не требует драйвера, но самое главное – не нужно менять частоту ШИМ, двигатель не звенит на стандартной частоте. На самом деле, важнейшей характеристикой является передаточное число, чем оно больше – тем лучше. На достаточно большом передаточном числе стол работает очень устойчиво. Кроме того, можно добиться медленного перемещения стола на минимальном ШИМе, а это важно для безостановочного режима.
Наш финальный выбор – бесщёточный двигатель с передаточным числом 131 и плата Nano 33 IoT.
Кабели для соединения разных фотоаппаратов со столомНа всякий случай оставлю ссылки на исходники, вдруг кому-то будет интересно:
→ Ардуино: Github
→ Xamarin: Github
Управление скоростью и направлением малых щеточных двигателей постоянного тока
Небольшие щеточные двигатели постоянного тока все еще широко используются, от электрических сидений в автомобилях до электроинструментов, поэтому, несмотря на то, что бесщеточные двигатели кажутся будущим, все же стоит понять, как эта технология интегрирована в электронные схемы. Здесь мы рассмотрим ШИМ, Н-мосты и некоторые высокоинтегрированные микросхемы управления двигателем.
Небольшие щеточные двигатели постоянного тока все еще широко используются, от электрических сидений в автомобилях до электроинструментов, поэтому, хотя будущее за бесщеточными двигателями, все же стоит понять, как эта технология интегрируется в электронные схемы. Здесь мы рассмотрим ШИМ, Н-мосты и некоторые высокоинтегрированные микросхемы управления двигателем.
Управление скоростью и направлением малых щеточных двигателей постоянного тока
Легко подумать, что приложения, требующие электрических двигателей, давно перешли на более эффективные бесщеточные альтернативы. Но коллекторные двигатели постоянного тока остаются важнейшим компонентом в широком диапазоне применений, от автомобильной и бытовой техники до электроинструментов и игрушек. По данным Data Bridge, в 2021 году рынок таких двигателей оценивался более чем в 10 миллиардов долларов, и ожидается, что к 2029 году он продолжит расти до более чем 17 миллиардов долларов (долларов США).
. Таким образом, по-прежнему важно хорошо понимать эту традиционную электродвигательную технологию.Продукты нижнего сегмента рынка щеточных двигателей постоянного тока обычно называются двигателями с дробной мощностью (FHP). Они состоят из банки, внутри которой установлены два постоянных магнита (ПМ). В оставшийся зазор помещается ротор с его якорем и коллектором. Торцевая крышка обеспечивает поддержку ротора и электрическое соединение с коллектором через две щетки. Настоящая красота таких двигателей с постоянными магнитами заключается в простоте их питания. Просто подайте напряжение постоянного тока, и двигатель заработает со скоростью вращения, линейной к приложенному напряжению.
см. на валу ротора по обмоткам якоря. (Источник: ShutterStock/Pixel Enforcer)
Преимущества и проблемы при использовании коллекторных двигателей постоянного тока
Подача питания и наблюдение за движением ротора показывают наше первое ключевое преимущество коллекторных двигателей постоянного тока перед бесщеточными версиями — простоту управления. Реле, переключатель или полевой МОП-транзистор — это все, что требуется для запуска двигателя. Это существенная разница по сравнению с бесщеточными двигателями постоянного тока, которые требуют значительного количества схем управления и пространства для реализации коммутации.
Коллекторные двигатели также хорошо изучены. После десятилетий использования в различных приложениях потенциальные электрические и механические режимы отказа хорошо известны. Кроме того, полупроводниковая промышленность разработала широкий спектр микросхем с высокой степенью интеграции, предназначенных для этих двигателей, со встроенной защитой и контролем.
Несмотря на простоту питания и управления, коллекторные двигатели постоянного тока создают различные проблемы для инженеров-проектировщиков. Первый из них — срок службы, связанный с щетками. Со временем щетки изнашиваются, и в какой-то момент требуется их замена. Разработчики обычно учитывают это в своих требованиях к дизайну. Например, электрически регулируемые сиденья и электрические двери в транспортных средствах по-прежнему используют щеточные двигатели. Поскольку двигатели используются лишь изредка в течение всего срока службы автомобиля, щетки, вероятно, переживут всех владельцев.
и выключать и даже контролировать его скорость.
Решение проблемы рассеивания тепла и шума двигателя постоянного тока
Отвод тепла — еще одна ключевая проблема. Поскольку тепло генерируется внутри двигателя в обмотках вокруг ротора (якоря), корпус двигателя обычно нуждается в вентиляционных прорезях и зависит от вращения якоря для перемещения воздуха по его поверхности. Большие нагрузки на низких скоростях могут довести двигатель до предела.
В некоторых приложениях, таких как электрически регулируемый стол, пользователю рекомендуется включить двигатели только на несколько минут, прежде чем дать им остыть. Ограничение использования — один из действенных методов решения таких тепловых проблем, если это ограничение не серьезно мешает использованию приложения.
Наконец, необходимо контролировать шум, как электрический, так и звуковой. Длинные провода двигателя могут индуцировать токи в близлежащих кабелях и дорожках печатной платы (PCB), которые нарушают работу других цепей или вызывают шумы в измерительных сигналах. Чтобы свести к минимуму проблемы, делайте провода как можно короче и размещайте небольшие конденсаторы емкостью 0,1 мкФ между клеммами двигателя и от клемм двигателя к корпусу двигателя.
Ферритовые кольца на кабелях или подавители переходных процессов также могут быть рассмотрены. Моторы также вибрируют и дребезжат, поэтому для борьбы со слышимым шумом может потребоваться звукопоглощающий материал и тщательная оценка крепления двигателя. Однако это должно быть сбалансировано со способностью рассеивать тепло, поэтому вам также необходимо обеспечить достаточный поток воздуха.
Управление скоростью с помощью широтно-импульсной модуляции
В большинстве приложений также необходимо контролировать скорость двигателя. В то время как большая часть задач двигателя может требовать только простых движений, таких как перемещение сиденья вперед и назад или подъем и опускание стола, превосходное ощущение достигается за счет медленного ускорения до полной скорости при запуске и постепенного снижения скорости при остановке. Это реализуется с помощью выхода с широтно-импульсной модуляцией или ШИМ.
Частота таких сигналов обычно фиксирована, а ширина импульса может варьироваться от 0% до 100% периода сигнала. С помощью осциллографа отчетливо видны отдельные импульсы. Однако при проверке вольтметром измеряется только среднее значение напряжения питания (например, при 25% при питании 12 В будет измерено 3 В).
Есть несколько вещей, которые следует учитывать при настройке ШИМ. Во-первых, это частота работы. Использование сигналов, слышимых человеком, таких как 1 кГц, может привести к раздражающему воющему звуку, поскольку ширина импульса увеличивается. Это вызвано вибрацией обмоток в магнитном поле и может усугубляться ослабленным креплением ротора, которое допускает движение в более дешевых двигателях FHP. Таким образом, при возникновении такой проблемы стоит попробовать разные рабочие частоты.
Следующей задачей является запуск двигателя с места. Якорю требуется достаточно электроэнергии, чтобы преодолеть начальный крутящий момент, чтобы начать движение. Однако после движения ротор может вращаться с шириной импульса ниже этого уровня. Использование редуктора или переменной нагрузки на ротор также может изменить эти значения длительности импульса в начальной и минимальной точках вращения. Это означает, что при написании управляющего кода вам может понадобиться запустить двигатель, например, с шириной импульса 10 %, быстро возвращаясь, скажем, к 4 % после того, как ротор начнет двигаться, чтобы достичь минимальной скорости.
Изменение направления вращения коллекторного двигателя постоянного тока
Для управления скоростью требуется полевой МОП-транзистор для быстрого включения и отключения питания двигателя. Однако это позволяет двигателю вращаться только в одном направлении. Поддержка двунаправленной работы требует использования H-моста. Как следует из названия, схема выглядит как буква «H», с полевыми МОП-транзисторами, используемыми в вертикальных полосах, и двигателем, расположенным между ними в положении горизонтальной полосы.
Диагональные пары полевых МОП-транзисторов используются для вращения двигателя в ту или иную сторону. Скорость двигателя также можно изменять с помощью этой схемы, подавая ШИМ-сигнал либо на нижний, либо на верхний полевой МОП-транзистор. Выбор верхних или нижних МОП-транзисторов не имеет отношения к управлению двигателем. Однако, если в вашей конструкции есть другие схемы, такие как резистор и АЦП для измерения тока двигателя, вы можете захотеть переключить противоположную сторону, чтобы свести к минимуму шум в ваших измерениях. В конечном счете, тестирование — лучший способ определить оптимальное решение.
Еще одна возможность H-моста — реализация электрического тормоза. При включении пары полевых МОП-транзисторов на нижней стороне клеммы двигателя замыкаются друг на друга. Обратная ЭДС, создаваемая все еще вращающимся ротором, приводит к возникновению противодействующего крутящего момента, который быстро замедляет ротор.
Защита цепи H-моста
Одна потенциальная проблема со схемой H-моста заключается в том, что если одновременно включить полевой МОП-транзистор верхнего и нижнего плеча, произойдет короткое замыкание, что приведет к катастрофическому отказу. Чтобы избежать этого, имеет смысл использовать один из множества доступных драйверов коллекторных двигателей постоянного тока. Такие устройства предотвращают короткие замыкания и дополнительно обеспечивают защиту от перегрева, открытой нагрузки и пониженного напряжения, а также обратную связь с микроконтроллером через интерфейс GPIO или SPI.
Почти каждый поставщик полупроводников предлагает такие решения, например, NCV7721 от OnSemi или TC78H660FNG от Toshiba.
ИС драйвера двигателя
. механизмы. (Источник: Toshiba Electronics Europe GmbH)
Также доступны специальные устройства, предназначенные для автомобилей, известные как системные базовые микросхемы (SBC), объединяющие приемопередатчики CAN и LIN и регуляторы с малым падением напряжения (LDO) для питания микроконтроллера. Одним из примеров является линейка MOTIX от Infineon, такая как TLE9.561QX, который поддерживает до двух коллекторных двигателей постоянного тока в конфигурации Н-моста, но требует от разработчика выбора соответствующих N-канальных полевых МОП-транзисторов в соответствии с двигателем и применением.
Системные базовые микросхемы (SBC)
. приемопередатчик и регулятор с малым падением напряжения наряду со схемой управления щеточным двигателем постоянного тока.
Для этих конкретных устройств требуются внешние МОП-транзисторы. (Источник: Infineon AG) Высокая степень интеграции
упрощает управление коллекторными двигателями постоянного тока
Управление щеточными двигателями постоянного тока никогда не было таким простым благодаря ряду высокоинтегрированных микросхем, доступных от поставщиков полупроводников. В некоторых даже интегрированы мощные МОП-транзисторы, внутренняя логика гарантирует, что H-мост не может быть случайно помещен в короткое замыкание. Дополнительные функции, такие как обнаружение перегрева, перегрузки по току и обрыва цепи, предоставляют разработчикам множество отзывов о состоянии как H-моста, так и двигателя, которые могут использоваться для предоставления диагностических выходных данных пользователям. Потратить время на изучение этой хорошо зарекомендовавшей себя технологии по-прежнему имеет смысл, несмотря на быстрое внедрение бесщеточных технологий, поскольку коллекторные двигатели постоянного тока еще долгие годы будут находить применение в бытовой технике, игрушках и автомобилях.
Проектирование и внедрение трехфазного драйвера двигателя для управления скоростью двигателя BLDC на основе ШИМ
Цифровая библиотека Европейского Союза
Материалы 1-й Международной конференции по устойчивому инженерному развитию и технологическим инновациям, ICSEDTI 2022, 11-13 октября 2022 г., Танджунгпинанг, ИндонезияИсследовательская статья
Download89 загрузок- Cite
- BibTeX Plain Text
@INPROCEEDINGS{10.4108/eai.11-10-2022.2326430,2326430 автор={Хендри Масди и Дони Три Путра Янто}, title={Проектирование и реализация драйвера трехфазного двигателя для управления скоростью двигателя BLDC на основе ШИМ}, разбирательства = {Материалы 1-й Международной конференции по устойчивому инженерному развитию и технологическим инновациям, ICSEDTI 2022, 11–13 октября 2022 г., Танджунгпинанг, Индонезия}, издатель={EAI}, разбирательство_a={ICSEDTI}, год = {2023}, месяц = {1}, ключевые слова = {бесщеточный двигатель постоянного тока arduino nano 3-фазный инвертор датчик на эффекте холла mosfet irf 3505}, doi={10. 4108/eai.11-10-2022.2326430} }
Hendri Masdi
Doni Tri Putra Yanto
Year: 2023
Design And Implementation of Three Phase Motor Driver For PWM-Based BLDC Motor Speed Control
ICSEDTI
EAI
DOI: 10.4108/eai.11-10-2022.2326430
- 1: Факультет электротехники, инженерный факультет, Universitas Negeri Padang
id Abstract
Со временем потребность в двигателях с высоким КПД, высоким крутящим моментом, высокой и переменной скоростью и низкими затратами на техническое обслуживание увеличилась. один из этих двигателей представляет собой бесщеточный двигатель постоянного тока, в котором используется электрическая коммутация, что обеспечивает высокую эффективность и длительное время работы. Поэтому, чтобы удовлетворить потребность в высокой эффективности, высоком крутящем моменте, высокой и переменной скорости и низких затратах на техническое обслуживание, используется бесщеточный двигатель постоянного тока (BLDC) или бесщеточный двигатель переменного тока (BLAC).