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 к двигателю
- Подключите провода фаз двигателя к контактам OUTA, OUTB и OUTC на плате SimpleFOCMini.
- Убедитесь, что напряжение питания находится в указанном диапазоне (6–30 В), и подключите его к выводам VIN и GND.
- При использовании энкодера или датчиков Холла подключите их к соответствующим контактам в соответствии с техническими характеристиками датчика.
Программирование и настройка
Для управления SimpleFOCMini с помощью Arduino UNO выполните следующие действия:
- Установите библиотеку SimpleFOC с помощью менеджера библиотек Arduino.
- Подключите SimpleFOCMini к Arduino UNO через UART, I2C или SPI.
- Используйте следующий пример кода для инициализации двигателя и настройки контура управления:
#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 или в службу технической поддержки.