Электротехнический интернет-журнал Electrik.info

"Электрик Инфо" - онлайн журнал про электричество. Теория и практика. Обучающие статьи, примеры, технические решения, схемы, обзоры интересных электротехнических новинок. Уроки, книги, видео. Профессиональное обучение и развитие. Сайт для электриков и домашних мастеров, а также для всех, кто интересуется электротехникой, электроникой и автоматикой.
 


Схемы подключения | Принципиальные схемы | Электроснабжение
Розетки и выключатели | Автоматы защиты | Кабель и провод | Монтаж электропроводки Ремонт электротехники | Молодому электрику

Электрик Инфо » Схемы на микроконтроллерах » Управление двигателями и сервоприводами с помощью Ардуино
Количество просмотров: 40997
Комментарии к статье: 6


Управление двигателями и сервоприводами с помощью Ардуино


Из этой статьи вы узнаете:

  • Что такое двигатель постоянного тока,

  • Как управлять скоростью вращения двигателя постоянного тока,

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

  • Что такое сервопривод,

  • Как управлять сервоприводом.

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

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

В этой статье мы рассмотрим сервоприводы и небольшие двигатели постоянного тока, их подключение к плате Arduino и регулировку ДПТ.

Управление двигателями и сервоприводами с помощью Ардуино

Двигатель постоянного тока

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

Двигатель постоянного тока

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

Якорь коллекторного электродвигателя

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

Управление скоростью вращения

Электричсекий двигатель постоянного тока

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

ШИМ-регулирование

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

То есть период делится на две части:

1. Время импульса.

2. Время паузы.

Отношение времени импульса к общему времени периода называют коэффициентом заполнения:

Кз=tи/tпер

обратная величина называется "скважность":

D=1/Kз=tпер/tи

Для описания режима работы ШИМ-контроллера используют оба понятия: и коэффициент заполнения, и скважность.

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

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

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

Подключаем к ардуино

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

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

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

Для регулировки оборотов я добавил переменный резистор в схему, подключив его к аналоговому входу А0. Для быстрого соединения я использовал беспаечную макетную плату, как её еще называют «breadboard».

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

Подробно о полевых транзисторах описано в статье на нашем сайте. Я использовал мощный, распространённый и не слишком дорогой mosfet с n-каналом и встроенным обратным диодом IRF840.

Исполнительная и задающая часть схемы

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

Двигатель постоянного тока и ардуино

Функция ШИМ-регулирования вызывается при записи в соответствующий выход (3, 5, 6, 9, 10, 11) значения от 0 до 255 командой AnalogWrite(pin, значение). Логика её работы изображена на графиках ниже.

Функция ШИМ-регулирования

Такой сигнал подаётся на затвор транзистора:

Такой сигнал подаётся на затвор транзистора

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

int sensorPin = A0;   // вход с потенциометра

int motorPin = 3;      // выход ШИМ на затвор тр-ра

void setup() {

  pinMode(motorPin, OUTPUT);

}

void loop() {

 analogWrite(motorPin, map (analogRead(sensorPin), 0, 1023, 0, 256));

}

В функции analogWrite я присваиваю значение на ШИМ-выход, через команду map, её использование позволяет убрать несколько строчек кода и одну переменную.

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

В ардуино частота ШИМ, при вызове через функцию analogWrite всего лишь 400 Гц, при минимальных значениях напряжения был слышен гул соответствующей частоты от обмоток двигателя.

Ардуино и сервопривод

Сервоприводы

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

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

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

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

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

Обычно с сервопривода для Arduino (сервомашинки) выходит три провода:

  • Плюс питания.

  • Минус питания.

  • Управляющий сигнал.

Сервопривод состоит из:

  • Электродвигателя постоянного тока (или бесколлекторного двигателя);

  • Платы управления;

  • Датчика положения (энкодера у сервоприводов с углом поворота 360° или потенциометра у серв с углом поворота 180°);

  • Понижающего редуктора (понижает скорость вращения двигателя, и повышает момент на валу привода).

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

Принцип работы сервопривода

Основные характеристики сервоприводов:

  • Скорость поворота (время, за которое вал поворачивается на угол 60°);

  • Крутящий момент (кг/см, т.е. сколько килограмм может выдерживать двигатель на рычаге в 1 см от вала);

  • Напряжение питания;

  • Потребляемый ток;

  • По способу управления (аналоговый или цифровой, существенной разницы нет, но цифровой более быстродействующий и стабильный).

Обычно период сигнала равен 20 мс, а длительность управляющего импульса:

  • 544 мкс – соответствует 0°;

  • 2400 мкс – соответствует углу 180°.

В редких случаях длина импульсов может отличаться, например 760 и 1520 мкс соответственно, эту информацию можно уточнить в технической документации на привод. Одним из популярнейших сервоприводов для хобби является Tower Pro SG90 и подобные модели. Стоит недорого – порядка 4 долларов.

Севропривод для ардуино

Он удерживает на валу 1.8 кг/см, и в комплекте с ним идут крепежные винты и рычаги со шлицами под вал. На деле этот малыш довольно сильный, и в движении одним пальцем его остановить весьма проблематично – начинает выпадать из пальцев сам привод – такая его сила.

Управление сервоприводом и Ардуино

Как уже было сказано, управление осуществляется изменением длительности импульса, но не стоит путать этот метод с ШИМ(PWM), его правильное назвать PDM (Pulse Duration Modulation). Незначительные отклонения по частоте сигнала (20 мс – длительность, частота 50 Гц) особой роли не играют. Но не стоит отклоняться от частоты более чем на 10 Гц, двигатель может работать рывками или сгореть.

Управление сервоприводом и Ардуино

Схема подключение к ардуино довольно проста, можно и запитать привод от 5v –пина, но не желательно. Дело в том, что при старте происходит небольшой скачок тока, это может вызвать просадку по питанию и ложные состояния выходов микроконтроллера. Хотя 1 маленький привод (типа SG90) можно, но не более.

Для управления такими сервоприводами с ардуино в вашем распоряжении есть встроенная в IDE библиотека Servo, у неё небольшой набор команд:

  • attach() — добавить переменную к пину. Пример: названиеПривода.attach(9) – к 9 пину подключаем сервопривод. Если вашему приводу нужны нестандартные длины управляющих импульсов (544 и 2400 мкс), то их можно задать через запятую после номера пина, например: servo.attach(pin, min угол (мкс), max угол в МКС));

  • write() — задает угол поворота вала в градусах;

  • writeMicroseconds() — задает угол, через длину импульса в микросекундах;

  • read() — определяет текущее положение вала;

  • attached() — Проверяет, задан ли пин с подключенным сервоприводом;

  • detach() — отмена команды attach.

Эта библиотека позволяет управлять 12-ю сервоприводами с плат UNO, Nano и подобных (mega368 и 168) при этом исчезает возможность использовать ШИМ на 9 и 10 пине. Если у вас MEGA – вы можете управлять 48-ю сервами, но на пинах 11 и 12 исчезнет ШИМ, если вы используете до 12 серв, то функционирование ШИМ остается полноценным на всех контактах.

Если вы подключили эту библиотеку – вы не сможете работать с 433 МГц приёмниками/передатчиками. Для этого есть библиотека Servo2, которая в остальном идентична.

Библиотека Servo2

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

#include <Servo.h> // подключаем библиотеку

Servo myservo;  // объявили имя переменной для сервопривода myservo

int potpin = 0;  // пин для подключения задающего потенциометра

int val;    // переменная для сохранения результатов чтения сигнала с потенциометра

void setup() {

  myservo.attach(9);  // устанавливаем 9 пин, как управляющий выход для сервы

}

void loop() {

  val = analogRead(potpin);            // результаты чтения потенциометра сохр в пер. val, они будут в диапазоне от 0 до 1023

  val = map(val, 0, 1023, 0, 180);     // переводим диапазон измерений с аналогового входа 0-1023

                                           // в диапазон заданий для сервы 0-180 градусов

  myservo.write(val);                  // передаем преобр. сигнал с пот-ра на упр. вход сервы

  delay(15);                           // задержка нужна для стабильной работы системы

 

 

Подключаем сервопривод к Ардуино

Заключение

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

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

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

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

Алексей Бартош

Популярные публикации:

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

Подписывайтесь на канал в Telegram про электронику для профессионалов и любителей: Практическая электроника на каждый день



Поделитесь этой статьей с друзьями:


Другие статьи с сайта Электрик Инфо:

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

    Широтно-импульсная модуляция, Шаговый электродвигатель, Электродвигатель постоянного тока, Программирование Ардуино, Ардуино, Arduino для начинающих

      Комментарии:

    #1 написал: Олег |

    Если выводы аналогового входа предназначены для считывания аналоговых датчиков (вход), выводы ШИМ предназначены для вывода. ШИМ - это метод получения аналоговых результатов с цифровым выходом. Поскольку цифровой выход имеет импульсный характер, для получения аналогового выхода цифровой выход быстро переключается между HIGH(1) и LOW(0). Процент времени, в течение которого сигнал имеет высокий уровень, называется рабочим циклом. У нас есть возможность установить частоту, с которой сигнал может переключаться между HIGH и LOW уровнями. Эта частота измеряется в Герцах и устанавливает, сколько раз сигнал может переключаться в секунду. Например, если мы установим частоту 500 Гц, это будет означать, что сигнал может переключаться 500 раз в секунду.

      Комментарии:

    #2 написал: Павел |

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

      Комментарии:

    #3 написал: Михаил Жуков |

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

    Решения по управлению электродвигателями состоят из аппаратных и программных компонентов. Аппаратный компонент - это электронные устройства управления, такие как IGBT, SiC и GaN MOSFET, силовые диоды и т. д., и программный компонент, предназначенный для управления аппаратным обеспечением, которое становится все более сложным и изощренным.

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

    Пара примеров от NXP Semiconductors и Renesas Electronics. Семейство 32-разрядных процессоров NXP MPC57xx основано на технологии Power Architecture для автомобильных и промышленных силовых агрегатов в дополнение к другим возможностям автомобильного контроля и функционального управления.

    Процессоры предлагают качество AEC-Q100, внутреннюю шифровальную защиту для защиты от несанкционированного доступа и поддержку функциональной безопасности ASIL-D и SIL-1 (ISO 26262 / IEC 61508). Они предоставляют Ethernet (FEC), двухканальный FlexRay и до 6 SCI / 8 DSPI / 2 I 2 C для различных протоколов связи.

    Renesas предлагает 32-битные микроконтроллеры RA6T1 на базе ядра Arm Cortex-M4 для работы на частоте 120 МГц с набором периферийных устройств, оптимизированных для обеспечения высокой производительности и точного управления двигателем. Один микроконтроллер RA6T1 может одновременно управлять двумя двигателями BLDC.

    Кроме того, платформа Google TensorFlow Lite Micro для приложений TinyML добавляет улучшенное обнаружение сбоев в микроконтроллеры RA6T1, предлагая клиентам интеллектуальную, простую в использовании и экономичную бессенсорную систему двигателей для профилактического обслуживания.

      Комментарии:

    #4 написал: Даниил |

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

    Серводвигатели используются для очень точного управления положением и скоростью, но в простом случае можно управлять только положением. Механическое положение вала можно определить с помощью потенциометра, который соединен с валом двигателя через шестерни. Текущее положение вала преобразуется в электрический сигнал с помощью потенциометра и сравнивается с входным командным сигналом. В современных серводвигателях для определения положения вала используются электронные датчики или преобразователи. Ввод команды вводится в соответствии с требуемыми параметрами положения вала. Если сигнал обратной связи отличается от указанного входа, генерируется сигнал ошибки. Затем этот сигнал ошибки усиливается и используется в качестве входного сигнала для двигателя, заставляя двигатель вращаться. А когда вал достигает желаемого положения, сигнал ошибки становится равным нулю, оставляя двигатель в покое. Ввод команды подается в виде электрических импульсов. Поскольку фактический ввод, подаваемый на двигатель, представляет собой разницу между сигналом обратной связи (текущее положение) и поданным сигналом (желаемое положение), скорость двигателя пропорциональна разнице между текущим положением и желаемым положением.

    Обычно серводвигатель поворачивается на 90° в обоих направлениях, т.е. максимальное перемещение может составлять 180°. Обычный серводвигатель не может продолжать вращаться из-за встроенного механического стопора. С сервопривода сняты три провода: плюс, масса и провод управления. Серводвигатель управляется путем отправки ШИМ-сигнала (широтно-импульсной модуляции) по проводу управления. Импульс отправляется каждые 20 миллисекунд. Ширина импульса определяет положение вала. Например, импульс 1 мс сдвинет вал против часовой стрелки на -90°, импульс 1,5 мс сдвинет вал в нейтральное положение, т.е. 0°, а импульс 2 мс сдвинет вал по часовой стрелке на +90°. Когда серводвигатель получает команду двигаться с помощью импульса подходящей ширины, вал перемещается и удерживается в желаемом положении. Если внешняя сила пытается изменить положение вала, двигатель сопротивляется этому изменению. Импульсы должны повторяться, чтобы двигатель удерживал положение.

      Комментарии:

    #5 написал: Гость |

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

      Комментарии:

    #6 написал: Максим |

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

    Сервоприводы используются для управления механизмами, которые должны быть точно позиционированы. Например, сервоприводы могут использоваться для управления поворотом колес робота или для управления положением антенны. Сервоприводы подключаются к Ардуино по тому же принципу, что и электродвигатели постоянного тока: два провода к источнику питания, два провода к управляющей плате. Но в отличие от ДПТ, управление сервоприводом осуществляется путем отправки сигнала на его управляющий пин, который обычно обозначается буквой “S”.

    Для управления сервоприводами и двигателями постоянного тока на Ардуино используются различные библиотеки, например, Servo.h и Motor.h. Эти библиотеки предоставляют функции для управления сервоприводами и ДПТ, а также для генерации ШИМ-сигналов.

    Присоединяйтесь к нам в социальных сетях:

    ВКонтакте | Facebook | Одноклассники | Электрик Инфо на Яндекс Дзен

     

    Популярные разделы сайта:

    Электрика дома  Электрообзоры  Энергосбережение
    Секреты электрика Источники света Делимся опытом
    Домашняя автоматика Электрика для начинающих
    Практическая электроника Электротехнические новинки
    Андрей Повный - все статьи автора



    Copyright © 2009-2024 Электрик Инфо - Electrik.info, Андрей Повный
    Вся информация на сайте предоставлена в ознакомительных и познавательных целях.
    За применение этой информации администрация сайта ответственности не несет.
    Перепечатка материалов сайта запрещена.