Рубрики
Схемы на Arduino

Подключение бесколлекторного электродвигателя постоянного тока (BLDC) к Arduino

В настоящее время наблюдается небывалый интерес к конструированию различных летающих механизмов – дронов, планеров, глайдеров, вертолетов и т.д. Сейчас их можно легко сконструировать самостоятельно благодаря большому количеству материалов по ним в сети интернет. Все эти летающие механизмы используют для своего движения так называемые бесщёточные (бесколлекторные) электродвигатели постоянного тока (BLDC — Brushless DC Motor). Что представляют собой подобные двигатели? Почему именно они сейчас используются в различных летающих дронах? Как правильно купить подобный двигатель и подключить его к микроконтроллеру? Что такое ESC и почему мы будем его использовать? Ответы на все эти вопросы вы найдете в данной статье.

В этой статье мы рассмотрим управление скоростью вращения бессенсорного бесколлекторного электродвигателя постоянного тока A2212/13T (Sensorless BLDC outrunner motor), часто используемого для конструирования дронов, с помощью ESC (Electronic Speed Controller – электронный контроллер скорости) и платы Arduino.

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

  1. Плата Arduino Uno (купить на AliExpress).
  2. A2212/13T BLDC Motor (бесколлекторный электродвигатель постоянного тока).
  3. ESC (20A) (электронный контроллер скорости) (купить на AliExpress).
  4. Источник питания (12V 20A).
  5. Потенциометр 10 кОм (купить на AliExpress).

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

Принцип действия BLDC двигателей

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

Хотя BLDC относятся к двигателям постоянного тока они управляются с помощью последовательности импульсов. Для преобразования напряжения постоянного тока в последовательность импульсов и распределения их по трем проводникам используется контроллер ESC (Electronic speed controller). В любой момент времени питание подается только на две фазы, то есть электрический ток заходит в двигатель через одну фазу, и покидает его через другую. Во время этого процесса запитывается катушка внутри двигателя, что приводит к тому, что магниты выравниваются по отношению к запитанной катушке. Затем контроллер ESC подает питание на другие два провода (фазы) и этот процесс смены проводов, на которые подается питание, продолжается непрерывно, что заставляет двигатель вращаться. Скорость вращения двигателя зависит от того как быстро подается энергия на катушку двигателя, а направление вращения – от порядка смены фаз, на которые поочередно подается питание.

Существуют различные типы BLDC двигателей – давайте рассмотрим основные из них. Различают Inrunner и OutRunner BLDC двигатели. В Inrunner двигателях магниты ротора находятся внутри статора с обмотками, а в OutRunner двигателях магниты расположены снаружи и вращаются вокруг неподвижного статора с обмотками. То есть в Inrunner (по этому принципу конструируется большинство двигателей постоянного тока) ось внутри двигателя вращается, а оболочка остается неподвижной. А в OutRunner сам двигатель вращается вокруг оси с катушкой, которая остается неподвижной. OutRunner двигатели особенно удобны для применения в электрических велосипедах, поскольку внешняя оболочка двигателя непосредственно приводит в движение колесо велосипеда, что позволяет обойтись без механизма сцепления. К тому же OutRunner двигатели обеспечивают больший крутящий момент, что делает их также идеальным выбором для применения в электрических движущихся средствах и дронах. Поэтому и в этой статье мы будем рассматривать подключение к платы Arduino двигателя OutRunner типа.

Примечание: существует еще такой тип BLDC двигателей как бесстержневой (coreless), который находит применение в «карманных» дронах. Эти двигатели работают по несколько иным принципам, но рассмотрение принципов их работы выходит за рамки данной статьи.

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

Более подробно про принцип работы  BLDC двигателя вы можете прочитать в этой статье.

Почему дроны и вертолеты используют именно BLDC двигатели?

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

Существует несколько причин для этого:

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

Зачем нужен контроллер ESC

Как мы уже знаем, для функционирования BLDC двигателей необходим какой-нибудь контроллер, который преобразует напряжение постоянного тока от батарейки в последовательность импульсов, подаваемую в определенном порядке на провода (фазы) двигателя. Этот контроллер называется ESC (Electronic Speed Controller – электронный контроллер скорости). Основной обязанностью данного контроллера является правильная подача питания на провода BLDC двигателя чтобы двигатель вращался в нужном направлении. Это осуществляется с помощью считывания обратной ЭДС (back EMF) с каждого провода и подачи питания на катушку в то время когда магнит пересекает ее. Внутри себя контроллер ESC содержит достаточно много разнообразной электроники и при желании вы можете подробно изучить его устройство по соответствующим материалам в сети интернет. Здесь же мы кратко рассмотрим рассмотрим только основные компоненты его конструкции.

Управление скоростью вращения на основе ШИМ (широтно-импульсной модуляции, в англ. PWM). Контроллер ESC может управлять скоростью вращения BLDC двигателя при помощи считывания сигнала ШИМ подаваемого на его оранжевый провод. Принцип управления им очень похож на управление сервомоторами. Сигнал ШИМ, подаваемый на контроллер ESC, должен иметь период 20ms, а коэффициент заполнения этого ШИМ сигнала будет определять скорость вращения BLDC двигателя. Поскольку точно такой же принцип используется для управления углом поворотом сервомотора, то для управления BLDC двигателем мы можем использовать библиотеку для управления сервомоторами. Если вы не сталкивались с этим принципом ранее, то вы можете прочитать статью о подключении сервомотора к плате Arduino.

Battery Eliminator Circuit (BEC) – цепь, исключающая батарею. Почти все контроллеры ESC поставляются с этой схемой. Как следует из ее названия, данная схема устраняет потребность в использовании отдельной батареи для питания микроконтроллера, то есть в данном случае нам не понадобится отдельный источник питания для платы Arduino – контроллер ESC сам обеспечит плату Arduino регулируемым напряжением питания +5V. В различных контроллерах ESC используются различные схемы регулировки данного напряжения, но в большинстве случаев распространена схема с линейной регулировкой.

Встроенное ПО. Каждый контроллер ESC содержит в своем ПЗУ встроенную прикладную программу, написанную производителем контроллера. Эта программа во многом определяет логику функционирования контроллера. Наиболее популярными встроенными программами для контролеров ESC являются Traditional, Simon-K и BL-Heli. Эта программа может изменяться пользователем, однако мы в этой статье не будем рассматривать данный вопрос.

Некоторые термины, используемые в тематике BLDC и ESC

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

Braking (торможение) – определяет насколько быстро BLDC двигатель может остановить свое вращение. Это особенно актуально для летающих средств (дронов, геликоптеров и т.д.) поскольку они вынуждены часто изменять количество оборотов двигателя в минуту чтобы маневрировать в воздухе.

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

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

Low Voltage Stop (остановка при низком напряжении питания). Обычно BLDC двигатели калибруют так, чтобы при одинаковом уровне управляющего воздействия скорость его вращения была постоянной. Однако этого трудно достигнуть потому что со временем напряжение питающей батареи уменьшается. Чтобы предотвратить это обычно контроллеры ESC программируют таким образом чтобы они останавливали работу BLDC двигателя когда напряжение питающей батареи опускается ниже определенной границы. Особенно эта функция полезна при использовании BLDC двигателей в дронах.

Response time (время отклика, время реакции, время ответа). Означает способность двигателя быстро изменять скорость вращения при изменении управляющего воздействия. Чем меньше время реакции, тем лучше контроль над двигателем.

Advance (движение вперед). Эта проблема является своеобразной «ахиллесовой пятой» для BLDC двигателей. Все BLDC двигатели имеют хотя бы небольшой подобный баг. Эта проблема вызвана тем, что когда катушка статора запитана ротор движется вперед поскольку на нем есть постоянный магнит. И когда управляющее напряжение с этой катушки снимают (чтобы подать его на следующую катушку) ротор продвигается вперед немного дальше чем предусмотрено логикой функционирования двигателя. Это нежелательное продвижение двигателя вперед в англоязычной литературе называют “Advance” и оно может приводить к нежелательным вибрациям, нагреву и шуму при работе двигателя. Поэтому хорошие контроллеры ESC стараются по возможности устранить этот эффект в работе BLDC двигателей.

Работа схемы

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

Как видите, схема достаточно проста. Контроллеру ESC необходим источник питания с напряжением 12V и током как минимум 5A. Для питания схемы можно использовать адаптер или Li-Po батарейку. Три фазы (провода) BLDC двигателя необходимо подсоединить к трем выходным проводам контроллера ESC – неважно в каком порядке.

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

Схема BEC (Battery Eliminator circuit) в контроллере ESC будет самостоятельно обеспечивать (регулировать) постоянное напряжение +5V, поэтому его можно непосредственно использовать для питания платы Arduino. Для управления скоростью вращения двигателя в схеме используется потенциометр, подключенный к контакту A0 платы Arduino.

Внешний вид собранной конструкции показан на следующем рисунке.

Объяснение программы для Arduino

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

Для управления BLDC двигателем мы будем формировать ШИМ сигнал с частотой 50 Гц и изменяемым от 0 до 100% коэффициентом заполнения. Значение коэффициента заполнения будет управляться с помощью потенциометра. То есть, вращая потенциометр, мы будем управлять скоростью вращения двигателя. Как уже указывалось, управление BLDC двигателем очень похоже на управление сервомотором с помощью ШИМ 50 Гц, поэтому в данном случае мы будем использовать ту же самую библиотеку, которую использовали для управления сервомотором. Если вы начинающий в изучении платформы Arduino, то перед дальнейшим прочтением данной статьи рекомендуем вам изучить принципы формирования ШИМ сигнала в Arduino и подключение сервомотора к плате Arduino.

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

Коэффициент заполнения ШИМ (от 0 до 100%) управляется с помощью положения ручки потенциометра. То есть когда на выходе потенциометра у нас будет 0V (0 на выходе АЦП), у нас коэффициент заполнения будет равен 0, а когда на выходе потенциометра будет 5V (1023 на выходе АЦП), коэффициент заполнения ШИМ будет равен 100%. Поэтому мы будем использовать функцию, которая будет считывать значение с выхода АЦП контакта A0.

Затем мы должны конвертировать полученное значение (оно будет в диапазоне от 0 до 1023) в диапазон от 0 до 180. В дальнейшем значение 0 у нас будет означать 0% коэффициент заполнения ШИМ, а значение 180 – 100% коэффициент заполнения ШИМ. Конвертация значения из диапазона 0-1023 в диапазон 0-180 будет осуществляться с помощью функции:

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

Тестирование работы схемы

Сделайте все необходимые соединения в схеме, загрузите программу в плату Arduino и подайте питание на контроллер ESC. Убедитесь в том, что ваш BLDC двигатель надежно закреплен, иначе он будет прыгать во время вращения. Когда вы подадите питание на контроллер ESC вы услышите приветственный тон и он будет издавать этот звук до тех пор пока не поступит управляющий сигнал заданного уровня (в заданных границах). Начните постепенно вращать ручку потенциометра чтобы на его выходе напряжение стало отличным от 0, и этот звук прекратится. Это будет означать, что вы подали на контроллер ШИМ сигнал минимально допустимого уровня. При дальнейшем вращении ручки потенциометра двигатель начнет медленно вращаться. При дальнейшем повороте ручки потенциометра и увеличении напряжения на его выходе скорость вращения двигателя будет увеличиваться. Когда напряжение достигнет верхней допустимой границы двигатель остановится. В дальнейшем вы можете повторить весь этот процесс заново.

Исходный код программы (скетча)

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

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

48 ответов к “Подключение бесколлекторного электродвигателя постоянного тока (BLDC) к Arduino”

Здравствуйте! Не могу понять как прошить ардуинку на два бесколлекторных мотора при управлении радио пультом. То есть у меня кораблик с двумя моторами один крутится по часовой стрелки, а другой против часовой. Управление двумя стиками на джостике при этом моторы имеют как передний ход, так и задний. Стики на пульту работают от середины в перёд ( от себя) кораблик едит вперёд. А если стики оба от середины нажать назад ( к себе), то кораблик едит назад ( задний ход). При повороте работает только один мотор. В кораблике стоят колекторные моторы, я хочу туда поставить бессколекторные. Что бы он плавал быстрее. Я что-то не могу понять как это сделать под пульт, а не под потенциометр на проводах. И как бы под два мотора с такой работой. Можите подсказать как это сделать?

Добрый день.
Как это будет работать
Сигнал от пульта: Вы двигаете стики. Радиопередатчик (самодельный на Arduino или готовый) отправляет значения положения стиков на приемник в лодке.

Обработка на кораблике: Приемник передает эти данные в Arduino (или это может быть сам приемник, если он на Arduino). Здесь в дело вступает главный секрет: реверс для бесколлекторного мотора.

Стандартный ESC для «самолетного» типа не имеет заднего хода. Он управляется сигналом от 1000 мкс (стоп) до 2000 мкс (полный газ).

Но существуют специальные судомодельные ESC, в которые «прошита» функция реверса. Они работают хитрее: нейтральная точка — это сигнал в 1500 мкс. Если посылать сигнал от 1500 до 2000 мкс — мотор крутится вперед, а если от 1500 до 1000 мкс — мотор крутится назад .

Моторы крутятся в разные стороны: Чтобы один мотор крутился по часовой стрелке, а другой против, при подключении есть два пути:

Способ 1 (простой): Купить два одинаковых ESC и при подключении моторов к одному из них просто поменять местами два любых провода из трех, идущих к мотору. Фаза изменится, и мотор будет крутиться в другую сторону.

Способ 2 (программный): Использовать ESC с поддержкой реверса и в коде Arduino для одного мотора посылать сигнал как есть, а для другого — инвертировать (например, сигнал_левого = 1500 — (сигнал_правого — 1500)).

Логика управления для двух стиков
Вы хотите классическое управление, как на катере. Вот как это преобразовать в цифры для ESC (значения в микросекундах):

Нейтраль (стоп): Оба стика в центре. Arduino отправляет на оба ESC сигнал 1500 мкс.

Вперед: Оба стика от себя.

Arduino преобразует отклонение стиков в сигнал от 1500 до 2000 мкс для обоих ESC. Чем сильнее отклонение, тем ближе сигнал к 2000 мкс, и моторы крутятся быстрее вперед.

Назад: Оба стика на себя.

Arduino преобразует отклонение в сигнал от 1500 до 1000 мкс для обоих ESC. Сигнал 1000 мкс — это максимальная скорость назад.

Поворот налево: Левый стик (газ) в центре или слегка вперед, правый стик отклоняете влево.

Arduino вычисляет скорость для каждого мотора так, чтобы левый замедлился или остановился, а правый продолжил крутиться вперед. Например, левый получает сигнал 1500 мкс (стоп), правый — 1600 мкс (медленно вперед). Лодка повернет налево.

Разворот на месте: Левый стик на себя (назад), правый стик от себя (вперед).

Arduino отправляет на левый ESC сигнал 1300 мкс (назад), а на правый — 1700 мкс (вперед). Лодка будет крутиться вокруг своей оси.

Примерный код:
#include

// Создаем объекты для управления ESC (они работают как сервоприводы)
Servo escLeft;
Servo escRight;

// Пины, к которым подключены сигнальные провода ESC
const int escLeftPin = 9;
const int escRightPin = 10;

// Пины, к которым подключен приемник (пример для приемника, который дает ШИМ)
const int ch1Pin = 3; // Канал газа (левый стик, вверх-вниз)
const int ch2Pin = 4; // Канал поворота (правый стик, влево-вправо)

// Переменные для хранения значений от приемника
int throttleValue = 0;
int steerValue = 0;

// Переменные для сигналов ESC (в микросекундах)
int leftSpeed = 1500; // Нейтраль
int rightSpeed = 1500; // Нейтраль

void setup() {
// Прикрепляем ESC к пинам. Они сразу начнут подавать сигнал.
// Важно! Перед первым запуском ESC нужно откалибровать.
// Обычно для этого при включении нужно подать сигнал максимального газа (2000),
// потом подключить питание ESC, дождаться сигналов и перевести стик в нейтраль (1500).
escLeft.attach(escLeftPin);
escRight.attach(escRightPin);

// Устанавливаем начальные сигналы (стоп)
escLeft.writeMicroseconds(1500);
escRight.writeMicroseconds(1500);

pinMode(ch1Pin, INPUT);
pinMode(ch2Pin, INPUT);

Serial.begin(9600); // Для отладки
}

void loop() {
// 1. Читаем сигналы с приемника.
// Функция pulseIn измеряет длину импульса в микросекундах.
// Для стандартного приемника значения будут от ~1000 до ~2000.
throttleValue = pulseIn(ch1Pin, HIGH, 30000); // Таймаут 30 мс
steerValue = pulseIn(ch2Pin, HIGH, 30000);

// Проверяем, что сигналы прочитаны корректно (не 0)
if (throttleValue > 0 && steerValue > 0) {

// 2. Преобразуем значения в скорость для моторов.
// Базовая скорость (газ/реверс) определяется левым стиком.
// steerValue будет влиять на разницу скоростей.
// Простейший алгоритм (миксер):
// leftSpeed = throttleValue + steerValueCorrection;
// rightSpeed = throttleValue — steerValueCorrection;

// Но чтобы все работало красиво, нужно привести значения к общему диапазону.
// Проще всего сначала отмасштабировать throttle и steer к диапазону -100..0..100,
// а потом вычислить скорости в мкс.
// Для простоты примера сделаем линейное смешивание.

// Вычисляем коррекцию от руля. steerValue от 1000 до 2000, центр 1500.
// Преобразуем отклонение руля в значение от -500 до 500.
int steerCorrection = map(steerValue, 1000, 2000, -500, 500);
// Ограничиваем, чтобы на всякий случай не выйти за пределы.
steerCorrection = constrain(steerCorrection, -500, 500);

// Применяем коррекцию к газу.
// Здесь throttleValue также от 1000 до 2000.
leftSpeed = throttleValue + steerCorrection;
rightSpeed = throttleValue — steerCorrection;

// Важно! Нужно убедиться, что скорости не вышли за допустимые пределы для ESC (1000-2000).
leftSpeed = constrain(leftSpeed, 1000, 2000);
rightSpeed = constrain(rightSpeed, 1000, 2000);

// 3. Отправляем сигналы на ESC.
escLeft.writeMicroseconds(leftSpeed);
escRight.writeMicroseconds(rightSpeed);

// Для отладки можно выводить значения в монитор порта
Serial.print(«T: «);
Serial.print(throttleValue);
Serial.print(» S: «);
Serial.print(steerValue);
Serial.print(» L: «);
Serial.print(leftSpeed);
Serial.print(» R: «);
Serial.println(rightSpeed);

} else {
// Если сигнал с приемника потерян, лучше остановить моторы.
escLeft.writeMicroseconds(1500);
escRight.writeMicroseconds(1500);
}

delay(20); // Небольшая задержка для стабильности
}

Напишите мне что-то на почту (akul2411@yandex.ru). Я сделаю фото и видео, потом вам отправлю. Чтобы у вас было полное понимание всей картины. А то я вам написал частичные сведения. И теперь не могу разобраться в вашем ответе. Я навичёк в ардуине. Возникла проблема и хочется чтобы было решение. Огромное вам спасибо за ответ.

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

Спасибо за статью. Запустил мотор с первого раза! До этого год получал разные советы от «специалистов» ничего не получалось!

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

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

Подскажите пожалуйста, а если нужны обороты больше 300, например 333 оборота в минутк, будет ли нормалтно вращаться bldc мотор от квадракоптера с esc платой? И правилтно ли я понимаю что пр лется в этом случае регулировать напряжении, подавать мнньше вольта, тогда будет очень маленький крутящий момент и вообще будет ли крутиться мотор на таком нищком напряжении?

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

У меня задача найти двигатель, желательно безщеточный, с платой управления чтобы можно было с контроллера управлять скоростью вращения для винилового проигрывателя. Основной ведомый диск Диаметром 300мм должен вращаться со скоростью 33,3 и 45 оборота в минуту, ведущий вал можно подобрать диаметром например в 10 раз меньше основного, то есть ведущий вал должен вращаться со скоростью 333 оборота в минуту и 450 для скорости 45 основного диска. Помогите пожалуйста разобраться какой мотор подойдет?

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

Здравствуйте! Такой вопрос: есть контроллер без функции реверса и радиоаппаратура. Можно ли сделать реверс через ардуино?

Добрый день. Не знаю, не занимался подобным вопросом, но в сети подобной информации, на первый взгляд, достаточно много. Например, здесь electrotransport.ru/index.php?topic=36849.396 активно обсуждается данный вопрос

Программа написана неправильно. Ардуино такой скетчч не примет

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

как выподсоединили ESC с ардуино потенциометром. в ардуино явно присоединено больше 3 проводов

Не совсем понял суть вопроса. Потенциометр подключен к контакту A0 Ардуино, а ESC — к ее контакту 9. Ну и еще 5V + GND для подачи питания

Добрый вечер, есть ли возможность точно задавать обороты в минуту и контролировать их по данной схеме без использование датчика Холла?
К примеру в ардуино задать скорость вращения 7200rpm и она будет поддерживаться на заданном значении

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

Могу ли я подключить 45 ампер к esc на 30? И напряжение 12 Вольт для всех?

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

Здравствуйте!
А какой примерно ток потребляет сама управляющая часть ESC? Надо просто понимать параметры понижайки.

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

можно ли применить Регулятор скорости двигателя ZW40, электрический шим регулятор скорости с реверсивным переключателем, 9-55 в постоянного тока, 9/12/24/36/48/55 в, 40 а

К сожалению, не являюсь профессионалом в подобных вопросах, затрудняюсь с ответом

у меня Индуктивный бесщеточный двигатель высокой мощности, 2500-КВ, Вт, 36 В, с алиэкспресс.
максимальный ток 80 а. какой контролер возможно для него применить

на али экспресс обычно вместе с продажей БКД предлагают и драйвер к нему

Спасибо за очень интересное и простое решение для изучения управления BLDC мотором! Попробовал, получилось с первого раза. по поводу источника: данный мотор можно запустить и от источника тока меньше 5 А, в моем случае он запускался от 12 В 0.2 А. И касательно сваливания оборотов при скважности около 1: лучше мапить АЦП с выходным диапазоном 0-174(175) чтобы при выкрученной рукоятке потенциометра на Макс обороты не падали

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

Автор, в ссылке на Али контролер с выводами для питания щеточного двигателя. То есть с двумя выводами.
В видео приводится другой контролер

Мне непонятен один момент, если можно, поясните пожалуйста.
У вас двигатель A2212/13T подключен к контроллеру ESC (20A).
Значит ли это, что для питания такого контроллера во время отладки мне обязательно использовать
источник питания с максимальным выходным током 20А. У меня такого источника питания просто нет.
Мой лабораторный БП выдает максимальный ток всего 10А, а отладочные БП и того меньше.
Получается, что я не могу его использовать при отладке такой схемы?
Если попытаюсь запитать, мой блок питания сгорит? Я заметил, что на видео из ютуба подобные проекты почему-то всегда запитывают только от батареек или аккумуляторов.
По этой причине, или у них просто прикол такой?
И еще вопрос. Мне не удалось достать ESC (20A), но удалось раздобыть ESC (35A).
Могу ли я использовать этот ESC (35A) для работы с двигателем A2212/13T?
Или мне обязательно искать именно ESC (20A)?
Простите за вопросы, я начинающий в этом «дирежаблестроении».

20A — это максимальный ток, который способен выдержать контроллер, но ток может быть и меньше. И в описании схемы написано для питания схемы можно использовать адаптер или Li-Po батарейку, и что используемый ток в этом проекте всего 5 А (минимум). Поэтому если вы подадите 10А на ESC (20A), то ничего с ним не случится, но я бы советовал начать с тока меньшей величины, а потом увеличивать его при необходимости. ESC (35A) можно использовать вместо ESC (20A) если вы не собираетесь подавать на него такой гигантский ток, а то двигатель может сгореть, а не контроллер.

У меня возникла проблема при попытке использовать эту схему совместно с широко распространенным двухстрочным ЖК индикатором 1602, подключенным через плату I2C. (Я хотел бы отображать на экране показания потенциометра для регулирования скорости двигателя).
Если включать по-отдельности, то ваша схема и экранчик прекрасно работают. Экранчик запитываю от УСБ — все работает.
Моторчик запитываю от контроллера без экранчика — тоже работает, а когда пытаюсь ардуинку с экранчиком запитать от контроллера, то экранчик перестает работать и моторчик не запускается. Контроллер прерывисто пикает, слегка подергивает мотор, но не запускает его. Как думаете, в чем может быть проблема одновременного подключения к ардуинке экранчика и мотора? Встречалось ли вам что-то подобное? Буду благодарен, если подскажете что-нибудь.

Возможно, питания не хватает. Попробуйте мотор запитать от контроллера, а плату Ардуино с экраном — через USB

Спасибо за помощь, разобрался. Дело было не столько в напряжении питания, сколько в стабильности питания. Контроллер выдает недостаточно стабильное напряжение. Оно почему-то пульсирует сильнее, чем нужно и это нарушает стабильность обмена пакетами по шине I2C.

Понятно. Я рад что у вас получилось

Вот тут подробнее. У вас хороший гайд, но не описан способ как пройти калибровку, в ролике все понятно и есть способ заложить калибровку в программу изначально. Так же там есть некоторые нюансы программирования и задавание параметров вращения (https://www.youtube.com/watch?v=8xGrPpXyc5w&t=3s)

Хорошо, я надеюсь рекомендованный вами ролик восполнит этот пробел

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

Ну здесь Ардуино используется только для управления работой контроллера ESC, поэтому с ее помощью теоретически можно управлять стольким количеством таких моторов, сколько у нее контактов для формирования ШИМ сигнала. В данном случае плата Ардуино будет получать питание только от одного контроллера ESC, у остальных контроллеров выводы 5 В можно оставить не подключенными.

Добрый вечер, а мотор будет работать если подключить напрямую аккомулятор -esc-бк мотор?

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

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

А вы через контроллер ESC подключали, как в статье, или каким то другим образом?

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

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