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


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

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

Независимо от того, где будет применяться двигатель постоянного тока, практически всегда требуется управление скоростью его вращения, которое может осуществляться различными способами. В данной статье мы будем управлять скоростью вращения двигателя постоянного тока, используя ШИМ-сигнал с платы Arduino и MOSFET-транзистор.

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

Как выбрать MOSFET (МОП-транзистор) для управления скоростью двигателя постоянного тока?

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

Входные параметры MOSFET, которые необходимо учитывать

Как правило, необходимо понимать взаимосвязь между напряжением затвор-исток (Vgs) и током сток-исток (Id). В нашем случае мы используем плату Arduino UNO, которая работает при 5 В, и это уровень напряжения ее входных и выходных контактов. Поэтому выбранный нами MOSFET должен поддерживать входное напряжение затвора 5 В, чтобы обеспечить максимальный выход в пределах своего предела.

Ниже приведен хороший пример для различения двух MOSFET с немного похожими названиями, IRLZ44N и IRFZ44N. Если вы внимательно изучите график, то увидите, что при напряжении затвор-исток (Vgs) 5 В IRLZ44N может выдавать ток стока до 100 А максимум, тогда как IRFZ44N может выдавать только 30 А максимум. Поэтому найдите похожий график в техническом описании выбранного вами MOSFET и проверьте его.

Сравнительный график характеристик MOSFET IRLZ44N и IRFZ44N

Может быть случай, когда выбранный MOSFET не поддерживает вход 5 В. В этом случае необходимо включить схему драйвера MOSFET.

Теперь нам нужно узнать о нашей нагрузке

Основные параметры нагрузки, которые необходимо учитывать

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

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

Например:

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

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

В моем случае я решил собирать необходимые данные вручную. Это просто, если у вас есть регулируемый источник питания (RPS) или аналогичные источники питания и мультиметр. Вот данные, которые я собрал:
Максимальное проверенное напряжение: 30 В
Максимальный ток остановки: 2,5 А
Номинальное напряжение: 12 В
Номинальный ток (без нагрузки): 300 мА

Поэтому, по моему мнению, МОП-транзистор с максимальным током стока более 5 А и максимальным напряжением сток-исток 36 В должен нормально работать в течение длительного времени.

Выбор правильного МОП-транзистора

С вышеизложенными известными данными начните поиск в Интернете, и вы найдете правильный MOSFET, который соответствует вашему бюджету и потребностям. Для оптимального выбора правило простое: если вам нужна модель на 10 А, то модели на 20 А будет более чем достаточно, а все, что меньше 10 А, будет недостаточным. Поэтому установите некоторые ограничения в своем выборе и выберите правильный транзистор.

В моем случае я искал самый доступный MOSFET на местном рынке и нашел IRLZ44N. Он хорошо подходит для моего приложения, поддерживая напряжение сток-исток до 55 В, ток стока до 47 А и, что самое важное, он поддерживает логические уровни 5 В.

Необходимые компоненты

  1. Плата Arduino UNO (купить на AliExpress).
  2. MOSFET IRLZ44N.
  3. Электродвигатель постоянного тока.
  4. Резистор 1 кОм (купить на AliExpress).
  5. Потенциометр 10 кОм (купить на AliExpress).
  6. Кабель USB A - USB B.
  7. Макетная плата.
  8. Соединительные провода.
  9. Источник питания 12 В - любой.

Реклама: ООО "АЛИБАБА.КОМ (РУ)" ИНН: 7703380158

Схема проекта

Принципиальная схема управления скоростью вращения двигателя постоянного тока с помощью Arduino и MOSFET представлена на следующем рисунке.

Принципиальная схема управления скоростью вращения двигателя постоянного тока с помощью Arduino и MOSFET

Наша цель — управлять скоростью вращения двигателя постоянного тока с помощью платы Arduino UNO и потенциометра. MOSFET используется в связи с тем что мы не можем управлять мощной индуктивной нагрузкой только с помощью логического уровня выхода Arduino UNO. MOSFET размещается между Arduino UNO и двигателем, эффективно действуя как драйвер двигателя. MOSFET подключен к 9-му выводу Arduino UNO через резистор сопротивлением 1 кОм для ограничения тока. Вы можете задаться вопросом, почему мы выбрали 9-й вывод, а не другой вывод. Причина проста: мы выбрали случайный вывод с возможностью ШИМ. Технически Arduino UNO имеет шесть выводов ШИМ (3, 5, 6, 9, 10, 11). Выводы 3, 9, 10 и 11 выдают сигнал ШИМ частотой 490 Гц, а выводы 5 и 6 выдают сигнал ШИМ частотой 980 Гц. Для управления скоростью на более высокой частоте используйте контакты 5 или 6; для нормальной скорости подойдет любой другой контакт ШИМ.

Здесь используется потенциометр 10 кОм. Концы резистивной дорожки подключены к 5 В и земле соответственно, а вывод движка подключен к аналоговому входному выводу A0 Arduino UNO. Когда движок перемещается с одной стороны на другую, он генерирует различное напряжение в диапазоне от 0 до 5 В, которое подается на 10-битный АЦП Arduino UNO.

Как упоминалось ранее, диод общего назначения подключен параллельно двигателю для отвода обратной ЭДС, создаваемой катушкой двигателя. Для двигателя предусмотрен отдельный источник питания 12 В.

Настройка оборудования

Переходя к сборке компонентов, поскольку наша схема очень проста, мы использовали макетную плату для соединения компонентов. Мы использовали внешний аккумулятор для питания Arduino UNO и литий-ионный аккумулятор 4S для питания двигателя. Остальные соединения соответствуют схеме, приведенной выше. Ниже вы можете увидеть общее изображение собранной схемы.

Собранная схема контроллера скорости вращения двигателя постоянного тока

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

Соединения контроллера скорости вращения двигателя постоянного тока на макетной плате

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

Итак, давайте перейдем к объяснению кода.

Объяснение работы кода контроллера скорости двигателя постоянного тока

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Изначально 9-й пин объявлен как motorPin и настроен как цифровой выход (OUTPUT) в функции setup().

В функции loop() выполняются две основные операции. Во-первых, аналоговые данные с потенциометра собираются, а во-вторых, изменяется рабочий цикл (коэффициент заполнения) выхода ШИМ на motorPin.

Значение PotValue, полученный от потенциометра, не передается напрямую в функцию analogWrite(). Вместо этого функция map() используется для масштабирования значения выхода АЦП (в диапазоне от 0 до 1023) до диапазона от 0 до 255. Это необходимо, поскольку АЦП (аналого-цифровой преобразователь), используемый в Arduino, является 10-битным, обеспечивая 1024 дискретных значения. Однако ШИМ (широтно-импульсная модуляция), используемая для analogWrite(), является 8-битной, допуская только 256 дискретных значений. Таким образом, отображение 10-битных значений АЦП в 8-битный диапазон ШИМ обеспечивает совместимость и точность управления скоростью двигателя. Чтобы узнать больше о работе с ШИМ в Arduino, советуем прочитать эту статью.

Моделирование контроллера скорости двигателя постоянного тока на Arduino

Давайте смоделируем проект контроллера скорости двигателя постоянного тока Arduino с помощью TinkerCad, прежде чем перейти к демонстрации работы проекта в реальном времени. Ниже приведена симуляция TinkerCad, предоставленная для справки.

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

Демонстрация работы контроллера скорости двигателя постоянного тока на Arduino

Наконец, мы достигли долгожданной рабочей демонстрации управления скоростью двигателя постоянного тока Arduino с использованием MOSFET. Как и ожидалось, все работает отлично. Однако на этом этапе вам нужно кое-что знать: двигатель не включится, пока MOSFET не подаст минимально необходимую мощность (среднее напряжение). На демонстрации ниже вы можете увидеть эту проблему.

Чтобы решить эту проблему, есть несколько способов. Один из самых простых способов — настроить диапазон отображения в коде Arduino. Например:

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

Исходный код программы

Видео, демонстрирующее работу контроллера скорости

Источник статьи

(Проголосуй первым!)
Загрузка...
146 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *