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

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

Некоторые самоделки Вы можете посмотреть в этом видео.

В этой статье рассказано именно о прошивке под управление с ручки газа, но применяя другие настройки плата может управляться с проводного джойстика, пульта дистанционного управления. Это ещё больше расширяет область её применения!

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

Контроллер от гироскутера с такой прошивкой не уступает обычным велосипедным/самокатным контроллерам средней мощности. Кратко о возможностях и особенностях:

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

На что нужно обратить внимание при выборе донора

Первое условие – для такой прошивки подойдет гироскутер с тремя платами на борту. Это большинство первых версий гироскутеров. Одна из них – плата контроллера (она самая большая) и две платы поменьше (гироскопы). В одной половине корпуса размещается первый гироскоп и контроллер, в другой – батарея и второй гироскоп. Еще встречаются гироскутеры с двумя платами, такие для прошивки не подойдут.

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

  • прошивка платы гироскутера
  • прошивка платы гироскутера

Второе условие – плата контроллера обязательно должна быть с чипом STM32F103RCT6, GD32F103RCT6, CS32F103RCT6 (символы после не имеют значения). Работа прошивки с другими чипами не поддерживается.

Прошивка гироскутера с чипом STM32F103RCT6 или GD32F103RCT6 под ручку газа

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

Программатор ST-Link

Програматор ST-Link

Программатор ST-Link V2 доставка из Китая / доставка из РФ. Все необходимые провода для подключения будут в комплекте.

Утилита для программатора STM32 ST-LINK Utility

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

При установке всё предельно просто, и проблем возникнуть не должно.

Интерфейс утилиты выглядит следующим образом:

STM32 ST-LINK Utility

Драйвера для программатора ST-Link V2

Распаковываем архив и от имени администратора запускаем dpinst_amd64 (для х64) или dpinst_x86 (для х32) в зависимости от разрядности операционной системы. Разрядность можно посмотреть – Мой компьютер – свойства, (тип системы)

Исходник прошивки

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

Программа Visual Studio

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

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

,

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

Также при неполадках с программой иногда помогает её запуск через “Исправление неполадок совместимости” (жмем на иконку программы правой кнопкой мыши, из меню выбираем эту функцию) экспериментируем с различными вариантами.

Настройка прошивки

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

Открываем в программе Visual Studio папку с проектом (исходником прошивки). Жмем иконку Explorer – File – Open Folder и выбираем папку с проектом. Необходимо выбрать именно конечную папку с этим названием, иначе прошивка может не компилироваться (не собираться).

Выбор режима управления

Открываем в левом меню пункт platformio.ini. Здесь мы видим список возможных вариантов управления. Для управления ручкой газа служит вариант HOVERCAR. Для его активации нужно раскомментировать строку default_envs = VARIANT_HOVERCAR; Variant for HOVERCAR build, для этого убираем знак ; в начале строки.

Далее в левом меню выбираем Inc – config.h, открывается код, в котором и проводим необходимые настройки.

Настройка батареи

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

Настройки батареи (строки 63-82).

Эта настройка нужна для того чтобы научить контроллер правильно измерять напряжение батареи. При вводе неправильного значения в BAT_CALIB_REAL_VOLTAGE возможно преждевременное отключение контроллера, отключение сразу после запуска.

70 #define BAT_CALIB_REAL_VOLTAGE  3600      – указать реальное напряжение батареи из расчета 1000=10В на момент прошивки. Достаточно измерить напряжение батареи мультиметром. Например, 36 В записываем как 3600.

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

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

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

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

Можно сделать проще, если не нужно звуковое оповещение уровня заряда и отключение при разряде АКБ. Если на борту есть вольтметр (например курок газа с ним) и батарея с БМСкой, эти функции вобщим то и не нужны. В этом случае BAT_CALIB_REAL_VOLTAGE пишем например 3600, занижаем значение BAT_DEAD например до 100 (10 вольт). Отключаем звук #define BAT_LVL2_ENABLE (пишем 0 как у #define BAT_LVL1_ENABLE) Плата исправно работает начиная с 24 В (моя точно работает).

Отключение/включение моторов

(138-140) При необходимости, можно программно отключить один из моторов, если он не нужен в конструкции. Дело в том, что при запуске контроллера сначала происходит самодиагностика. Если один из моторов отключен физически (отключены провода датчиков Холла) от платы с прошивкой на два мотора, при запуске будет ошибка. Не будет работать ни один мотор и зуммер будет писком сигнализировать о неисправности. По умолчанию оба мотора включены.

138 // Enable/Disable Motor

139 #define MOTOR_LEFT_ENA – для отключения левого мотора закомментировать

140 #define MOTOR_RIGHT_ENA   – для отключения правого мотора закомментировать

Типы управления и методы контроля

(142-145)

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

Также в разделе ховеркар (ищите ниже)

############## VARIANT_HOVERCAR SETTINGS ####################

выставляем в #define CTRL_MOD_REQ           значение  TRQ_MODE

Ограничение тока и оборотов

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

(147-150)

// Limitation settings

define I_MOT_MAX 15 – максимальный ток одного мотора, А

define I_DC_MAX 17 – ставим на 2 Ампера больше как рекомендует автор исходника

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

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

Ослабление поля/опережение фазы

Ослабление поля позволяет раскручивать мотор на бОльшие обороты без увеличения напряжения батареи. При этом если силы моторов хватает для ускорения под нагрузкой, они раскрутятся. Также увеличится и расход батареи. Если при резком сбросе газа после разгона до повышенной скорости моторы будут притормаживать до замедления до некой промежуточной скорости, установите в FIELD_WEAK_HI и N_MOT_MAX значение 1600.

(152-157)

// Field Weakening / Phase Advance

153 define FIELD_WEAK_ENA 1 – Включение ослабления поля / опережения фазы: 0 = отключено (по умолчанию), 1 = включено

154 define FIELD_WEAK_MAX 6 – Максимальный ток ослабления поля, чем больше тем выше возможная скорость (максимум 10)

156 define FIELD_WEAK_HI 1000 // (1000, 1500] – Верхний порог для ограничения оборотов, ставим 1600 если наблюдается глюк при сбросе газа как описано выше

157 define FIELD_WEAK_LO 750 // ( 500, 1000] – Нижний порог для начала ослабления поля, рекомендуется оставить 750

Направление вращения моторов

(502-503)

Раскомментировать для активации. По умолчанию моторы вращаются как если бы они стояли на гироскутере и он катился вперед. На скриншоте инвертирован правый мотор, при этом оба мотора (если смотреть со стороны оси) вращаются по часовой стрелке.

//#define INVERT_R_DIRECTION – инвертировать правый мотор
//#define INVERT_L_DIRECTION – инвертировать левый мотор

#define SPEED_COEFFICIENT – чем больше значение тем стремительнее ускорение. При токе на колесо 15 А его значение 16384 более менее оптимально, если уменьшаете ток то экспериментально уменьшите и коэффициент, чтобы при ускорении “газ в пол” колеса не издавали шум на подобие звона/неприятного свиста (шум из обмоток, т.к. срабатывает ограничение тока). Если наоборот Вы добавляете максимальный ток то увеличьте если нужно и коэффициент (если динамика разгона будет недостаточной но при этом еще нет шума из колес).

Формирование файла прошивки

После завершения настройки нужно нажать галочку внизу. Программа проверит код на ошибки и при их отсутствии создаст файл прошивки в папке с исходником по адресу hoverboard-firmware-hack-FOC-master / pio / build / VARIANT_HOVERCAR / firmware.BIN. Его мы и будем заливать в чип платы гироскутера.

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

Также замечены похожие платы, но немного с другой разводкой. Они встречаются очень редко, но всё же они есть. После прошивки зуммер не издает звуков – возможно у Вас именно такая плата. В послендем обновлении исходника появилась и эта версия. В config.h строки 61…66 выбираем вариант 0 – (подходит большинство плат), вариант 1 – второй, более редкий тип плат.

############################### BOARD VARIANT ###############################/* Board Variant * 0 – Default board type * 1 – Alternate board type with different pin mapping for DCLINK, Buzzer and ON/OFF, Button and Charger*/

#define BOARD_VARIANT           0  

Примеры готовых прошивок

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

  • направление вращения моторов для самоката. Инвертирован правый мотор (оба мотора вращаются по часовой стрелке, если смотреть со стороны оси)
  • максимальный ток на мотор 15 А (общий максимальный ток 30 Ампер, для такой мощности необходимо минимум 2 гироскутерных батареи включенных параллельно)
  • ослабление поля 0
  • напряжение батареи на момент прошивки 36,00 В
  • без ограничения оборотов (при напряжении батареи 36 В большинство моторколес без нагрузки будет иметь около 450 об/мин)
  • направление вращения моторов для трайка
  • максимальный ток на мотор (детский вариант) 7 А (общий максимальный ток 14 Ампер, достаточно одной гироскутерной батареи)
  • ослабление поля 0
  • напряжение батареи на момент прошивки 36,00 В
  • без ограничения оборотов (при напряжении батареи 36 В большинство моторколес без нагрузки будет иметь около 450 об/мин)

Пароль 1234.

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

Программатор ST-Link V2 подключается выводами SWDIO, GND и SWCLK к соответствующим точкам на плате, как показано на рисунке ниже. Чип будет брать питание от родной гироскутерной батареи, поэтому вывод +3,3 V подключать не нужно. Убедитесь что батарея достаточно заряжена и питание не пропадет в момент прошивки.

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

  • батарея гироскутера
  • кнопка включения гироскутера
  • программатор

Процесс прошивки

  • Запускаем STM32 ST-LINK Utility
  • зажимаем и удерживаем кнопку включения гироскутера в течение всего процесса
  • для подключения к чипу жмем Target – Connect (альтернатива – иконка серой вилки на панели управления)

Появившееся предупреждение Can not read memory!… Означает, что чтение родной прошивки недоступно, так как она защищена от чтения.

Придется её стереть. Внимание!!! После стирания её невозможно будет восстановить.

  • жмем Target – Option Bytes…

Снимаем защиту от перезаписи

  • в поле Read Out Protection меняем Enabled на Disabled
  • жмём Apply

После завершения этой манипуляции получаем чистый чип

Теперь выбираем файл своей прошивки

  • жмем Open file

Напоминаю, что по умолчанию после настроек в Visual Studio файл прошивки будет находиться по пути hoverboard-firmware-hack-FOC-masterhoverboard / firmware-hack-FOC-master / .pio / buildVARIANT_HOVERCAR / firmware.BIN.

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

  • выбираем нужный файл и жмём Oткрыть
  • для запуска процесса прошивки жмем Target – Program & Verify…, в открывшемся окне – Start

После удачного завершения процесса в нижнем окне увидим Verifycation…OK и Programmed Memory Checksum: ******

  • теперь можно отпустить кнопку питания

Прошивка завершена.

Если у Вас что-то идет не так, проверьте внимательно по скриншотам наличие галочек, и прочих настроек, где они присутствуют на каждом этапе.

При последующих заливках прошивки обязательно предварительно стирайте чип кнопкой Full chip erase, иначе фрагменты старого кода будут мешать работе нового!

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

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

Всвязи с тем, что обычно ручки управления выносятся далеко от платы, в проводах могут наводиться помехи, что может вызывать нестабильную работу и ложные срабатывания. Для подавления этих помех следует повесить между сигнальными входами и GND конденсаторы ёмкостью 0,03…0,1 мкФ и резисторы сопротивлением 1…10 кОм, лучше сделать это как можно ближе к плате.

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

При срабатывании на скорости он начинает тормозить рекуперацией, отдавая энергию в батарею. Когда скорость падает до определенного значения, при которой рекуперация становится неэффективна для торможения, контроллер наоборот вкачивает в моторы энергию батареи продолжая активное торможение до полной остановки. На всём продолжении торможения полная блокировка колес исключена и получается некий эффект ABS. Усилие торможения развивается достаточное для того чтобы почти улететь через руль при полном резком нажатии. Поэтому реализовывать его с помощью одной только кнопки – плохая идея. Для плавного дозирования торможения годится аналогичная газульке ручка на датчике Холла. Вариант подешевле – кнопка с потенциометром. Потенциометром в этом случае устанавливается требуемое усилие торможения.

Калибровка ручек газа и тормоза

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

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

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

  • нажать и удерживать кнопку питания контроллера не менее 2 сек, в этот момент прозвучит многотональный звуковой сигнал
  • кратковременно отпустить (менее секунды) и снова зажать и удерживать кнопку питания, в этот момент прозвучит короткий гудок высокого тона
  • дождаться короткого гудка высокого тона
  • отпустить кнопку питания
  • дождаться длинного гудка низкого тона

Процесс калибровки:

  • нажать пару раз полностью на ручку газа и отпустить
  • нажать пару раз полностью на ручку тормоза и отпустить(если используется кнопка с потенциометром, то нажимать её при выкрученном потенциометре в минимальное сопротивление, чтобы показать максимальное напряжение на сигнальном проводе)
  • нажать кнопку выключения
  • перезагрузить контроллер и проверить реакцию на нажатия ручек управления

После успешной калибровки колёса должны соответственно реагировать на ручки газа и тормоза. Без нагрузки колёса могут в диапазоне высоких оборотов начинать вращаться рывками, если Вы применили в настройках ослабление поля. Это так называемая “отсечка” от превышения максимальных оборотов. При торможении колёса вращаются “туда – обратно” и не успокаиваются. В вывешенном состоянии колес это нормально, под нагрузкой такого не будет.

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

Звуковые информирующие и сигналы ошибок контроллера.

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

При проблемах стучите в группу, некоторые новости смотрите на канале.

Смотрите также о прошивке гироскутера под радиоуправление.


Не стесняйтесь поддержать автора этой статьи, если она оказалась полезной для Вас!


Заказать готовую прошитую плату с нужными настройками

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

.

Присоединяйтесь к обсуждению!