SimpleFOC Mini — это компактный и недорогой модуль драйвера для бесколлекторных (BLDC) моторов, специально разработанный для реализации алгоритмов векторного управления (Field Oriented Control — FOC). Плата предназначена для точного управления маломощными моторами (обычно подвесными/gimbal моторами) в задачах, где важны плавность хода, бесшумность и контроль положения или крутящего момента.

Ключевые сферы использования:

  • Робототехника: создание суставов роботов, манипуляторов и небольших мобильных платформ, где требуется высокая точность движений.
  • Системы стабилизации (подвесы): управление камерами и другими датчиками для обеспечения сверхплавного вращения.
  • Haptic-устройства: создание органов управления с обратной связью (силовая отдача), например, умных регуляторов или джойстиков.
  • Учебные и DIY-проекты: благодаря открытому ПО (библиотека SimpleFOC) и совместимости с Arduino, плата идеальна для изучения принципов работы бесколлекторных двигателей.
  • Точная автоматизация: управление небольшими помпами, вентиляторами или лабораторным оборудованием. 

SimpleFOC Mini построен на чипе DRV8313. Он отлично справляется с задачами, но имеет свои ограничения:

  • Моторы: Лучше всего подходят Gimbal-моторы (подвесные) с сопротивлением обмоток 10–30 Ом. Если у вас мощный тяговый мотор (низкое сопротивление, <1 Ом), плата будет мгновенно уходить в защиту по току или перегреваться.
  • Контроллер: Плата совместима с любым МК. Рекомендую ESP32 или STM32 (например, BluePill) — их вычислительной мощности хватит для высокой частоты дискретизации алгоритма FOC.
  • Датчик (Обязательно): Для FOC-режима нужен энкодер или магнитный датчик (например, AS5600 через I2C или AS5047 через SPI/PWM/ABI).

Технические характеристики

Основные технические характеристики

  • Диапазон напряжения: 6–30 В
  • Постоянный ток: до 3 А
  • Пиковый ток: до 5 А (кратковременно)
  • Частота ШИМ: до 40 кГц
  • Микроконтроллер: STM32G431 (32-разрядный ARM Cortex-M4)
  • Способы связи: UART, I2C, SPI, PWM, аналоговый.
  • Поддержка энкодеров: ABI, UVW, датчики Холла.
  • Поддержка бесконтактного управления: Да, с датчиком обратного электромагнитного поля.

Расположение и описание контактов

ПИН-кодНазвание пин-кодаОписание
1 НД Заземление
2 VIN Входное напряжение (6–30 В)
3 OUTA Выходная мощность двигателя фазы А
4 OUTB Выходная мощность двигателя фазы B
5 OUTC Выходная мощность двигателя фазы C
6 ЕН Включить контакт (активный высокий уровень)
7 ТЕМП Выход датчика температуры
8 АН Аналоговый вход для измерения тока
9 СКЛ Линия тактового сигнала I2C
10 СДА линия передачи данных I2C
11 TX UART передача
12 РКС Приём UART
13 SWDIO Последовательный проводной ввод/вывод отладочных данных
14 SWCLK Часы отладки по последовательному каналу

Разъемы на плате распределены логично:

  • Питание (V+ и GND): 8–30В. Обязательно добавьте электролитический конденсатор (от 100 мкФ) на линию питания как можно ближе к плате, чтобы сгладить скачки напряжения.
  • Выходы (Phase A, B, C): Три провода к вашему BLDC-мотору. Порядок не важен (направление вращения настраивается в коде).
  • Входы (IN1, IN2, IN3): ШИМ-сигналы от микроконтроллера.
  • EN (Enable): Управление включением драйвера. Если не используете, можно подтянуть к 5В (high), чтобы драйвер был активен всегда.

Инструкция по применению

Подключение SimpleFOCMini к двигателю

  1. Подключите провода фаз двигателя к контактам OUTA, OUTB и OUTC на плате SimpleFOCMini.
  2. Убедитесь, что напряжение питания находится в указанном диапазоне (6–30 В), и подключите его к выводам VIN и GND.
  3. При использовании энкодера или датчиков Холла подключите их к соответствующим контактам в соответствии с техническими характеристиками датчика.

Программирование и настройка

Для управления SimpleFOCMini с помощью Arduino UNO выполните следующие действия:

  1. Установите библиотеку SimpleFOC с помощью менеджера библиотек Arduino.
  2. Подключите SimpleFOCMini к Arduino UNO через UART, I2C или SPI.
  3. Используйте следующий пример кода для инициализации двигателя и настройки контура управления:
#include <SimpleFOC.h>

// Motor instance
BLDCMotor motor = BLDCMotor(pole_pairs);
BLDCDriver3PWM driver = BLDCDriver3PWM(pwmA, pwmB, pwmC, en);

void setup() {
  // Motor & driver setup
  motor.linkDriver(&driver);
  motor.voltage_limit = 12; // Voltage limit in volts
  motor.velocity_limit = 5; // Velocity limit in rad/s

  // Initialize motor and driver
  motor.init();
  driver.init();

  // Set the initial target velocity
  motor.target_velocity = 1;

  // Enable motor
  driver.voltage_power_supply = 12;
  driver.enable();
}

void loop() {
  // FOC algorithm iteration
  motor.loopFOC();
  
  // Motion control loop
  motor.move();
}

Важные моменты и лучшие практики

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

Устранение неполадок и часто задаваемые вопросы

Общие проблемы

  • Двигатель не вращается: проверьте соединения, убедитесь, что напряжение питания находится в пределах допустимого диапазона, и проверьте правильность установки параметров двигателя в программном обеспечении.
  • Перегрев: Обеспечьте надлежащее охлаждение, проверьте наличие коротких замыканий и убедитесь, что не превышены допустимые пределы тока.
  • Сбой связи: проверьте проводку для UART, I2C или SPI и убедитесь, что в программном обеспечении используется правильный протокол связи и соответствующие настройки.

Решения и советы

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

Часто задаваемые вопросы

В: Можно ли использовать SimpleFOCMini без энкодера? О: Да, SimpleFOCMini поддерживает бессенсорную работу с использованием датчика обратной ЭДС.

В: Какова максимальная частота ШИМ, поддерживаемая SimpleFOCMini? О: Максимальная частота ШИМ составляет 40 кГц.

В: Как обновить прошивку на SimpleFOCMini? О: Обновление прошивки можно выполнить через интерфейс последовательной отладки (SWD) с помощью совместимых программаторов.

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