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

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

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

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

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

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

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

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

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

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

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

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

Прошивка гироскутера с чипом 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. После завершения установки и автоматических обновлений (это может занять немало времени и она подгузит еще несколько нужных дополнений сама) программа готова к работе.

,

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

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

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

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

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

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

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

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

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

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

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

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

#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 Ампера больше как рекомендует автор исходника, либо если колеса “пищат” при резком старте – добавляем экспериментально по 1.

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

Ослабление поля

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

(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] – Нижний порог оборотов при котором включается ослабления поля

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

(502-503)

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

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

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

Мультимод (три режима мощности)

Для включения возможности настройки режимов мощности нужно раскомментировать #define MULTI_MODE_DRIVE.

MULTI_MODE_DRIVE_M_MAX – часть от максимальной мощности (1000=100%)

MULTI_MODE_DRIVE_M_RATE – точно не разобрался, что то вроде интенсивности отклика на курки, если его делать менее 200, появляется задержка в управлении, при увеличении более резкая реакция.

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

После завершения настройки нужно нажать галочку внизу. Программа проверит код на ошибки и при их отсутствии создаст файл прошивки в папке с исходником по адресу 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  

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

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

Батарею НЕ ПОДКЛЮЧАЕМ и для дополнительного обесточивания платы нажимаем кнопку включения. При попытке запуститься произойдет разряд электролитических конденсаторов на плате. Теперь можно подключить программатор.

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

  • Запускаем 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 / build / VARIANT_HOVERCAR / firmware.bin.

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

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

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

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

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

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

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

В процессе доработки платы соблюдайте осторожность и не допускайте случайных замыканий выводов компонентов токопроводящими предметами, так как даже после отключения батареи в электролитических конденсаторах сохраняется заряд!

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

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

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

Для плавного дозирования торможения годится аналогичная газульке ручка на датчике Холла.

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

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

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

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

//старые версии исходника:

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

//новые версии исходника:

  • включить контроллер
  • через несколько секунд зажать кнопку включения и держать до гудка
  • отпустить кнопку

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

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

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

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

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

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

1-курки не нажаты

2-тормоз нажат, газ не нажат

3-тормоз не нажат, газ нажат

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

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

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

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



.

40 комментариев к “Прошивка гироскутера под ручку газа”

  1. Сергей Костюченко

    Lj,hsq день, при попытке компилляции в Визуал студио такая проблема:

    Executing task: C:\Users\skostiuchenko.platformio\penv\Scripts\platformio.exe run <

    Processing VARIANT_HOVERCAR (platform: ststm32; framework: stm32cube; board: genericSTM32F103RC)
    ———————————————————————————————————————————————————————————————————————————Platform Manager: Installing ststm32
    Error: HTTPSConnectionPool(host=’api.registry.nm1.platformio.org’, port=443): Max retries exceeded with url: /v3/search?query=type%3A%22platform%22+name%3A%22ststm32%22 (Caused by SSLError(SSLCertVerificationError(1, ‘[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1123)’)))
    The terminal process “C:\Users\skostiuchenko.platformio\penv\Scripts\platformio.exe ‘run'” terminated with exit code: 1.

    Terminal will be reused by tasks, press any key to close it.

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

  2. Александр Ильин

    Друзья, а куда делась глава с готовыми прошивками с разной мощностью? Раньше точно была, и в оглавлении о ней указано…

  3. Петрович

    К плате указано как прицепить ручку. А от гироскопа эти провода (фишку) нужно отсоединить?

  4. Александр

    Как настроить на торможение по сбросу газа не используя педаль тормоза?

  5. Александр

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

  6. Александр

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

  7. Михаил

    Добрый день!
    Есть ли здесь, кто возьмется перепрошить гироскутер за достойное вознаграждение – Москва, или Моск. облать (Север)!?
    Ребенок инвалид очень хочет, а я с этим делом, не в зуб ногой. Сварить чего, или сострогать, это пожалуйста, а вот электроника, темный лес для меня..

  8. I was suggested this web site via my cousin. I am no longer certain whether this submit is written by him as no one else recognise such certain approximately my difficulty. You are wonderful! Thank you!

Оставьте комментарий

Ваш адрес email не будет опубликован.