Прошивка гироскутера для управления ручкой газа

Всем привет! Для своего проекта “Электроскутер Honda Tact AF16 из деталей от гироскутера” решил изучить тему по прошивке гироскутера для управления ручкой газа. Пересмотрел несколько видео и прочитал столько же разных инструкций по прошивке, решил в итоге собрать все рекомендации и советы в одну статью для удобства личного использования.

В своем проекте планирую установить сдвоенные мотор-колеса на заднее колесо скутера, управление хочу сделать электронной ручкой газа и использовать плату от гироскутера. Для этого я приобрел на Авито гироскутер с мотор-колесами 6,5 дюймов (диаметр 17 см) полностью в рабочем состоянии. Остальные подробности о проекте “Электроскутер Honda Tact AF16 из деталей от гироскутера” расскажу в следующей статье, а теперь приступлю к описанию прошивки платы от гироскутера.

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

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

  • Управление моторами векторное (FOC), за счет этого получается высокий КПД и экономичный расход энергии;
  • Использование ручки газа для электротранспорта на датчиках холла или потенциометрах;
  • Плата от гироскутера выдерживает пиковый батарейный ток на каждый мотор до 20А, при 36В.
  • В данной прошивке ручка газа управляет мощностью (током), поступаемой в мотор, а не оборотами (напряжением). За счет этого получаем плавный старт.
  • Электронный тормоз можно сделать с кнопки или курка;
  • Прошивка обеспечивает свободный накат мотор-колес при сбросе ручки газа;
  • Функция “ослабление поля” позволяет получить более высокие оборотов без повышения напряжения батареи;
  • Безопасный максимальный предел напряжения питания до 60 В (Батарея до 14S, с полным зарядом 58,8В).

Процесс подготовки и прошивки платы:

Шаг 1. Что понадобится для прошивки

  • Для такой прошивки подойдет гироскутер с тремя платами в корпусе. Нам понадобится самая большая из трёх – это плата контроллера (остальные две платы поменьше это гироскопы). На плате контроллера обязательно должен стоять чип STM32F103RCT6, GD32F103RCT6 или GS32F103RCT6. Работа прошивки с другими чипами не поддерживаются. Также если в вашем гироскутере всего две платы, то такие платы не подойдут для данной прошивки.
  • Необходимо купить программатор ST-Link V2 для загрузки новой прошивки в плату контроллера гироскутера. Программатор можно купить на сайте Aliexpress доставка из Китая / доставка из РФ.
  • Электрическая Ручка газа с вольтметром и двумя кнопками: красная кнопка (с фиксацией) используется для включения и отключения вольтметра, а зеленая кнопка (без фиксации) будет использоваться в качестве электронного тормоза и включения заднего хода. Ссылка: Ручка газа с вольтметром (доставка из Китая).
  • Также нужны будут конденсаторы 0,1-0,47 мкФ (2 шт.) и резисторы 2-10 кОм (2 шт.). Для подключения программатора ещё понадобится “гребенка” на 3 или 4 контакта.

Шаг 2. Подготовка платы к прошивке

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

Плата контроллера у меня на чипе GD32F103RCT6 (это аналог STM32).

Сначала необходимо припаять на плату контроллера конденсаторы 0,1-0,47 мкФ (2 шт.) и резисторы 2-10 кОм (2 шт.). Установка данных элементов на плату контроллера предназначена для устранения помех в проводах систем управления ручкой газа, без их установки может быть нестабильная работа и возможны ложные срабатывания при управлении. Ниже на фото показана установка данных элементов.

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

Для удобства подключения платы для прошивки, вместо кнопки включения гироскутера, добавил переключатель на 2 положения (вкл. и выкл.). После прошивки нужно будет установить обратно стандартную кнопку для корректной работы платы.

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

На этом подготовка платы к прошивке завершена.

Шаг 3. Настройка прошивки / Файл прошивки

Как я писал ранее, в качестве прошивки был выбран проект автора Emanuel Feru на Github. Вот прямая ссылка на прошивку для скачивания, после скачивания извлекаем её из архива. Эту прошивку будем настраивать в дальнейшем под свои нужды. (В исходном состоянии прошивка не готова к заливке в контроллер, её нужно сначала настроить)

Для настройки прошивки необходимо скачать и установить программу Visual Studio Code. После настройки прошивки мы сможем получить BIN-файл, который после закачаем в микроконтроллер с помощью программатора. (Чтобы скачать Visual Studio Code нужно будет зарегистрироваться на их сайте)

После запуска программы Visual Studio Code нужно будет установить дополнительное расширение PlatformIO IDE. (В некоторых случаях для Windows 10 требуется ещё дополнительно установить Python на компьютер).

Теперь открываем в Visual Studio Code папку со скаченным с Github проектом (Жмём иконку Файл – Открыть папку):

Далее открываем файл platformio.ini, в котором мы будем настраивать прошивку. В прошивке имеется несколько вариантов реализации управления, но нам необходимо выбрать вариант VARIANT_HOVERCAR (строка 18), поэтому нужно “раскомментировать” эту строку как показано на картинке ниже:

18 default_envs = VARIANT_HOVERCAR ; Variant for HOVERCAR build

Далее переходим в подпапку “Inc” и открываем “config.h“. В этом файле нужно будет установить все необходимые нам параметры. Управление выбираем VARIANT_HOVERCAR (строка 19), также нужно “раскомментировать” данную строку.

Теперь приступаем к настройке батареи – раздел “BATTERY”. Эта настройка необходима для того, чтобы контроллер научить верно определять напряжение батареи.

76 #define BAT_CALIB_REAL_VOLTAGE  4100  – здесь нужно указать фактическое напряжение батареи из расчета 1000=10В. Т.е. если после измерения напряжения своей батареи мультиметром я получил 41В, значит в прошивке прописываем значение 4100.

77 #define BAT_CALIB_ADC  1492  – здесь нужно указать значение, измеренное АЦП контроллера, которое можно будет получить через серийный порт. Это значение можно будет замерить позже.

78 #define BAT_CELLS  10 – количество последовательных ячеек в аккумуляторной батарее.

86-87 #define BAT_LVL_1..2 – напряжение при котором будет подаваться предупреждающий звуковой сигнал (340 = 3,4 вольт на банку при 10S)

88 #define BAT_DEAD  (337……) – при каком напряжении на банку (320=3,2 В) отключить батарею (во избежание переразряда).

Если использовать литий-ионную аккумуляторную батарею 10S, то допускается разряжать её до 30В. Поэтому можно будет установить значения BAT_LVL2, BAT_LVL1 и BAT_DEAD соответственно 330, 320 и 300.

Если не нужно звуковое оповещение и отключение при разряде АКБ, то нужно снизить значение BAT_DEAD до 100 (10 вольт), отключить звук можно установив значение #define BAT_LVL1_ENABLE пишем 0.

Далее переходим в раздел “MOTOR CONTROL”.

В строках 146-147 можно отключить одно из колес, если планируется использовать только одно колесо. Чтобы отключить колесо нужно “закомментировать” значение в строке, поставив спереди две косых черты //. Но я в проекте планирую использовать два мотор-колеса, поэтому оставляю без изменений.

В строках 150-152 можно выбрать тип управления, для самокатов хорошо подходит FOC_CTRL в сочетании с TRQ_MODE (управление моментом). При выборе этих значений получаем мягкое управление, свободный накат при сбросе газа и высокую энергоэффективность.

В строках 155-157 можно установить ток подаваемый на мотор-колеса и установить ограничение максимальных оборотов (об/мин). Для мотор-колес мощностью 250 Вт рекомендуется устанавливать ток 15А. На практике любая плата выдерживает пиковый непродолжительный ток до 25А (но для этого нужно улучшать охлаждение).

155 #define I_MOT_MAX 15 – максимальный ток для одного мотор-колеса, А.

156 #define I_DC_MAX 17 – ставим на 2А больше по рекомендации автора прошивки.

157 #define N_MOT_MAX 1000 – ограничение максимальных оборотов, об/мин. Установка данного значения не гарантирует, что при использовании батареи 36В получится раскрутить колеса до такой скорости, так как все зависит от мощности моторов, тока и нагрузки.

В строках 160-164 можно включить режим ослабления поля (Field Weakening), что позволяет увеличить максимальную скорость. Я планирую использовать следующие значения:

160 #define FIELD_WEAK_ENA 1 – включение (1) или отключение (0) ослабления поля (опережения фазы).

161 #define FIELD_WEAK_MAX 9 – максимальный ток ослабления поля, чем больше значение, тем выше скорость (максимальное значение 10).

163 #define FIELD_WEAK_HI 1000 – (1000, 1500) верхний порог для ограничения оборотов.

164 #define FIELD_WEAK_LO 750 – (500, 1000) нижний порог для начала ослабления поля, рекомендуется значение 750.

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

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

Строку 519 #define DEBUG_SERIAL_USART3 нужно “раскомментировать”, это позволит нам подключиться в дальнейшем к плате с помощью USB-TTL адаптера через USART3 и получить фактические значения о напряжении нашей батареи. Эти значения нужно будет добавить в строки 76-77 и прошить повторно плату контроллера.

На этом основные настройки прошивки завершены, можно переходить к её компиляции (т.е. получению готовой прошивки). Для этого нужно нажать на кнопку “PlatformIO: Build” в нижнем левом углу и в итоге получим прошивку для установки в микроконтроллер на плате. Готовый файл прошивки (firmware.bin) будет находиться в папке: \hoverboard-firmware-hack-FOC-main.pio\build\VARIANT_HOVERCAR\firmware.bin

Шаг 4. Подключение программатора к плате

Подключение программатора к плате контроллера отображено на следующей схеме:

Для подключения буду использовать три контакта от программатора SWCLK-GND-SWDIO, подключаем их к гребенке, которую ранее припаяли к плате контроллера (для подключения нужны только три контакта).

Питание +3,3В с программатора ST-LINK V2 для питания микроконтроллера на плате советуют не брать, прошивать будем с подключенной к плате аккумуляторной батареи от гироскутера.

При прошивке контроллера должны быть подключены:

  • Аккумуляторная батарея от гироскутера;
  • Кнопка включения питания гироскутера (для удобства лучше подключить кнопку с фиксацией или переключатель);
  • Программатор ST-LINK Utility.

Шаг 5. Процесс прошивки

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

Перед прошивкой необходимо будет снять защиту Flash-памяти микроконтроллера. Это можно сделать также через программу STM32 ST-LINK Utility. Для этого подключаем программатор ST-LINK к плате гироскутера и к компьютеру через USB. Также подключаем аккумуляторную батарею к плате (см. фото ниже).

Включаем переключателем плату гироскутера (Если вы используете стандартную кнопку от гироскутера, то тогда зажимаете и удерживаете кнопку в течении всего процесса прошивки). Для подключения к чипу нужно нажать Target – Connect (или иконка серой вилки на панели управления).

Процесс по снятию защиты представляю несколько скриншотов.

После разблокировки открываем в программе файл своей прошивки (Нажимаем Open file).

Для запуска процесса установки прошивки нужно нажать Target – Program & Verify…., в открывшемся окне Start.

Если прошивка прошла удачно, то появится в нижнем окне надпись Verifycation…OK и Programmed Memory Checksum: ******. Теперь можно отпустить кнопку включения гироскутера или выключить плату переключателем.

Если потребуется заново установить прошивку, то всегда предварительно нужно очистить микроконтроллер платы (кнопка Full chip erase), иначе фрагменты старого кода останутся и это будет мешать работе новой прошивке.

Шаг 6. Подключение ручки газа и тормоза / Калибровка

Для моей самоделки подходит следующая схема подключения ручки газа:

Необходимое напряжение +3,3В для питания ручки газа будет взято с корпуса преобразователя AMC1117 отдельным проводом.

Обратите внимание, что от USART2 (провода для подключения левой платы гироскопа) выходит провод с питанием +15В, который нельзя использовать для питания ручки газа.

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

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

Вход в режим калибровки и процесс определения элементов управления:

  1. Нажимаем и отпускаем кнопку питания контроллера;
  2. Сразу после звукового сигнала зажимаем кнопку и ждём многотональный звуковой сигнал;
  3. Теперь отпускаем кнопку и дожидаемся короткого гудка высокого тона (входим в режим калибровки);
  4. Крутим пару раз полностью ручку газа и отпускаем;
  5. Нажимаем пару раз на кнопку тормоза и отпускаем;
  6. Нажимаем и отпускаем кнопку выключения контроллера (выходим из режима калибровки);
  7. Перезагружаем контроллер и проверяем работу ручки газа и электронного тормоза.

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

На этом процесс прошивки гироскутерной платы для управления ручкой газа завершён. Дальнейшее описание проекта “Электроскутер Honda Tact AF16 из деталей от гироскутера” скоро будет размещен на этом сайте. Электроскутер уже собран, нужно время на написание статьи и также на монтаж видео.

А пока можете подписаться на наши сообщества, чтобы не пропустить новые статьи и видео о самоделках:

YouTube – https://www.youtube.com/channel/UC_Mn3T_amfE4JfvOUYtgOaw
Яндекс-Дзен – https://zen.yandex.ru/id/5e1e2c02f73d9d00af63964f
RuTube – https://rutube.ru/channel/23770098/
Группа в контакте – https://vk.com/samodelofru