Подключаем мотор-колесо от гироскутера к ESP32 (среда программирования Arduino ide)
Разбираем его. К сожалению, воспользоваться драйверами самого скутера у меня не получилось, они ушли на запчасти, а вот мотор-колеса и батарея пригодится в нашем проекте.
В гироскутере пара таких драйверов

Мотор-колесо имеет три силовых фазы (это бесколлекторный трехфазный двигатель) и энкодер в виде трех датчиков Холла (с питанием датчиков это 5 контактов) . Контакты по краям разъема – питание, внутренние сигналы от датчиков Холла.

Как я уже заметил, подключить к контроллеру имеющийся в комплекте гироскутера драйвер у меня не получилось.
На помощь пришел знаменитый китайский магазин.
По итогу был выбран драйвер BLD-300B. Особенностью драйвера можно считать «заточенность» на управление через подстроечный резистор (внутренний либо внешний). Такой драйвер можно использовать для регулировки вращения шпинделя фрезерного станка. Но мне нужно использовать его для управления вращением колеса. При этом должна адекватно работать обратная связь по скорости. Т.е. если сопротивление вращению увеличивается драйвер должен это компенсировать, добавив мощности мотору доведя скорость до заданной.

Если требуется, чтобы драйвер держал заданную скорость, переключите тумблер в положение ON
Если SW2 в положении OFF , при малых оборотах мотор колесо можно остановить рукой. После включения SW2, это сделать затруднительно.
Самая элементарная схема подключения изображена ниже. Нужно заземлить EN и BRK. После этого можно управлять мотором посредством внутреннего подстроечного резистора. 
В качестве источника питания для мотора я буду использовать батарею от разобранного гироскутера на 36V емкостью 4 амперчаса.
Входы драйвера EN, BRK, F/R через резистор подтянуты к 5 вольтам питания, как следствие, если их не подключать никуда, они будут находиться в состоянии высокого сигнала (на них будет 5 вольт).

Я протестировал вращение с использованием внутреннего потенциометра. Единственное, что мне не понравилось, это отсутствие полной блокировки вращения колеса, даже при использовании функции тормоза (колесо можно провернуть). При этом я не тестировал вращения в разные стороны.
Следующая схема позволяет изменять направление вращения и подключать тормоз. Но мне она не интересна, мне требуется научиться управлять при помощи микроконтроллера. 
Подключаем микроконтроллер
Первое, что я попробовал сделать, это научить микроконтроллер управлять скоростью мотора. Для этого я подключил вывод контроллера к SV входу драйвера. Но согласно документации частота PWM управления должна быть не менее 1Кгц. Стандартный ШИМ от Arduino Nano генерируется на частоте 500Гц. Решено использовать контроллер на базе ESP32
Для согласования уровня сигнала я использовал преобразователь уровней сигнала вроде того, что показан в центре схемы ниже. 
Программа содержит два файла, один описывает класс мотора motor_init.h, а второй — главная программа, работающая в цикле testmk1.ino .
Испытания прошли успешно.
Управляю направлением и тормозом
Следующим этапом я подключил контакты направления вращения и тормоза по схеме ниже. В программу также включил возможность управления мотором. Но, к сожалению, схема оказалась не рабочей. Преобразователь уровня стал работать в обратном направлении и передавал напряжение со входов DIR и BREAK драйвера на контроллер. Контроллер зависал, перезагружался – «паниковал».


Поразмыслив, и используя элементарную логику, я составил еще пару схем, первую с использованием полевых транзисторов, а вторую с использование оптопары. Обе они приводили к замыканию/размыканию через полупроводниковый элемент DIR и BREAK на землю. Обе они оказались работоспособными.
Последняя схема мне нравится больше, т.к. оптопара еще является защитой от высокого потенциала для контроллера. Возможно ШИМ (контакт SV) нужно выполнить в таком же «стиле».
Тестовые программы прикреплены к статье.
Arduino.ru
Получив сегодня утром быстрые и оч.полезные советы относительно выбора типов ультразвуковых и лазерных датчиков, воодушевился и решил еще один живо трепещущий вопрос задать.
А именно — управлениие и опробованное железо для управления мотор колесами от гироскутеров с помощью ардуино.
Мотор колеса от скутеров сейчас активно использоваться начали не только для именно самокатов или тележек на их базе, но и компактные мощные приводы для других устройств (в первую очередь всяких переносных) и для работы в тяжелых и вспеогодных условиях.
Цена колес невысока, разные диаметры и типы покрышек, ломаться почти нечему, их можно приобрести как по отдельностти так и раздербанив б\у гироскутер (заодно получив и батарею).
Короче, штука переспективная.
Управлять прямо гироскопом по датчикам Холла, собюдая баланс — таких проектов у меня в проекте пока нет. А вот просто навострится управлять этим колесом вперед-назад а также разгон и т.д. — это было бы нужно очень.
А главное — какие мосты и драйверы стоит для этого использовать.
Нашлось достаточно много инфы (да и продавцы гироскутерных запчатей подтверждают, что роботостроители потянулись за покупками). Но она достатчно «сырая» на мой взгляд. И весьма недавняя ( а хотелось бы еще и статистику уже понимать по применению в реальных условиях и проектах). И от этого не совсем ясно однозначное направление, что и как лучше использовать:
сразу здесь эта тема мне не попалась (хотя не может быть, чтобы не обсуждалась уже).
Если уже идет гдето обсуждение — плиз, ткните носом.
P\S Интересует именно управление гироскутерными колесами (хотя по идее наверно и вело и тому подобные — похожи). Посткольку важна не столько скорость, сколько сочетание вес\компактность\мощностьи ( на будущее) возможность точного позиционирования.
- Войдите на сайт для отправки комментариев

Так мы уже год как управляем вот таким колесом при помощи вот такой платы.
Могу цвета проводов рассказать. Или чего Вам собственно нужно-то?
- Войдите на сайт для отправки комментариев
Так мы уже год как управляем вот таким колесом при помощи вот такой платы.
Могу цвета проводов рассказать. Или чего Вам собственно нужно-то?
отлично! такое примерно колесо я и предполагаю использовать. 10 дюймовые с камерной покрышкой. Еще вроде по такойже цене и 14 дюймовые сегвейные нашол, но 14 слишком здоровенные.
по плате — огромное спасибо за инфу! вот уже нашол тут про нее (но мало)
а также видимо ее вживую я в стране врядли найду. Придется заказывать?
А нужно мне — вот то что вы и написали))) Большое спаисбо. А именно — какую плату взять для управления чтобы не городить огорода и понять, в какую строну копать)))
Кстати, если управляете уже достаточно давно — наверняка и опыт есть и какието косяки пойманы. Я бы с удовольствием воспользовался инфой и опытом НА ВОЗМЕЗДНОЙ основе в благоразумных пределах))) Сэкономленное время — сэкономленные деньги)))
Мне щас надо просто управлять этим колесом (точнее — двумя) в режиме вперед\назад , разгон\замедление\остановка ( до 5 -6 км\ч, не более). Это такая тележка с ящиком для перевозки взад вперед (без поворотов, по прямой) деталей. Режимы разгона и замедления и отсутсвие резких остановок и рывков — чтобы чегонить не упало с нее от рывка.
- Войдите на сайт для отправки комментариев

Ну, во-первых, если Вы ещё не купили колесо (или купили), Вы должны понимать есть ли у него датчики Холла. Та, плата, что у меня — для колеса с датчиками. Если колесо без датчиков, то плата вот такая.
На плате контакты подписаны буквами. А у колеса провода «подписаны» цветом. У моего колеса и моей платы соответсвие такое:
А — зелёный
B — жёлтый
C — синий
Из особенносте. Вперёд -назад управляется как описано, а вот со скоростью . в принципе тоже как описано, но имейте в виду, вход у платы управления низкоомный и жрёт заметный ток. Я подключал так:
Ну, пин не обязательно D3 — любой с ШИМом. Напряжение питания усилителя — любое от 7В до 20В. У меня реально — 9В. OUTPUT — к соответсвующему входу платы-контроллера колеса.
Так вот, при таком подключении усилитель сгорел! У него выходной ток не более 10мА, а там при резком разгоне оказалось больше! Выручил резистор 1К в цепи OUTPUT (между выходом усилителя и входом платы контроллера).
Других граблей вроде не было, работает нормально.
Для меня было проблемой запитать колесо, чтобы напряжение было стабильным и току хватало. Родной аккумулятор гироскутерв не понравился. Емкось у моего была 14Ah, напряжение — 36В (как раз напряжение колеса). Но при небольшом разряде, напряжение проседало, что нормально, а мне это не нравилось. Хотелось стабильного напряжения.
Выручили лодочные аккуьуляторы на 12В / 90Ah (можно автомобильные, но они стартовые, а лодочные — тяговые — это лучше). Соединил два штуки последовательно и поднял напряжение до 36 вольт вот такой DC-DC. Пара аккумуляторов одна, а DC-DC своя на каждый двигатель. В итоге на двигателе всегда стабильные 36В до тех пор, пока аккумуляторы не сядут до 12 (на двоих). Тогда вырубается повышалка (там можно настраивать напряжение вырубания) Повышалка легко даёт 10А, так что всё работает на ура.
- Войдите на сайт для отправки комментариев
Ну, во-первых, если Вы ещё не купили колесо (или купили), Вы должны понимать есть ли у него датчики Холла. Та, плата, что у меня — для колеса с датчиками. Если колесо без датчиков, то плата вот такая.
На плате контакты подписаны буквами. А у колеса провода «подписаны» цветом. У моего колеса и моей платы соответсвие такое:
А — зелёный
B — жёлтый
C — синий
Из особенносте. Вперёд -назад управляется как описано, а вот со скоростью . в принципе тоже как описано, но имейте в виду, вход у платы управления низкоомный и жрёт заметный ток. Я подключал так:
Ну, пин не обязательно D3 — любой с ШИМом. Напряжение питания усилителя — любое от 7В до 20В. У меня реально — 9В. OUTPUT — к соответсвующему входу платы-контроллера колеса.
Так вот, при таком подключении усилитель сгорел! У него выходной ток не более 10мА, а там при резком разгоне оказалось больше! Выручил резистор 1К в цепи OUTPUT (между выходом усилителя и входом платы контроллера).
Других граблей вроде не было, работает нормально.
Для меня было проблемой запитать колесо, чтобы напряжение было стабильным и току хватало. Родной аккумулятор гироскутерв не понравился. Емкось у моего была 14Ah, напряжение — 36В (как раз напряжение колеса). Но при небольшом разряде, напряжение проседало, что нормально, а мне это не нравилось. Хотелось стабильного напряжения.
Выручили лодочные аккуьуляторы на 12В / 90Ah (можно автомобильные, но они стартовые, а лодочные — тяговые — это лучше). Соединил два штуки последовательно и поднял напряжение до 36 вольт вот такой DC-DC. Пара аккумуляторов одна, а DC-DC своя на каждый двигатель. В итоге на двигателе всегда стабильные 36В до тех пор, пока аккумуляторы не сядут до 12 (на двоих). Тогда вырубается повышалка (там можно настраивать напряжение вырубания) Повышалка легко даёт 10А, так что всё работает на ура.
ну, ответ начну с благодарности. Инфа ценнейшая!
теперь по существу.
Колеса еще не покупались — ясность есть толлько по диаметру (10), а вот по покрышке даже по пневмо-непневмо уже есть варианты. Т.к. этот робот человека не возит. Сама тележка 4-х колесная. 2 других колеса — просто обычные недорогие от садовой тачки или дет.коляски.
По источнику приобретения — тоже рассматриваю варианты. Толи брать готовый скутер, раздербанивать а лишние детали отдавать всяким ремонтникам, либо брать колеса как запчасти. Но их ценник не особо мал (я находил варианты по 2500, а ваше колесо — 2900 даже).
Тут важен вопрос по аккуумулятору. Разбирая готовый — получаешь и аккумулятор ( отдельно — 2500) и 2 колеса (даже если тоже по 2500*2=5000) итого 7500. Такчто готовый скутер на разборку — неплохой вариант.
Вопрос же №2 тоже по типу аккумулятора. Я также как и вы смотрел в строну свинцовых необслуживаемых ( т.е. не юзать литийнеоны от скутера). Правда еще пока даелеко не залезал в выборе, но мысля про тяговые лодочные -прекрасная. Вот тутже сразу стала куча выпадать: http://bigteh.ru/product/akkumuljator-deka-evu1-31-ach-glubokogo-razrjada/ . Характеристики также суперские у них.
Одна проблема (хотяи не особая) — вес. Батареи по 8.5*2 = 17 кг, + колеса ( их вес по 3.4 кг) итого — 24 кг (ну и + корпус 6 кг, пластик и алюминий). Итого 30 кг. В принципе вес в относительно норме, но изначально была мысля делать очень легкой конструкцию. Ее задача — возить саму себя + нагрузку до 30 кг. с невысокой скоростью (до 5-6 км\ч). Пробег до 20 км.в рабочую смену, подзарядка возможна каждой ночью. Дли литийиона вроде походящая задача, там вопрос тока циклов заряда и сохранности при длительном хранении без работы.
Грубо говоря, если сам робот был бы совсем легким ( в пределах 10-12 кг) и еще и складным, то его удобно былобы увозить с объекта чтобы заночь не сперли ( эта фиговина работает на улице).
Сами же свинцовые батареи хороши даже своей тяжестью ( они бы создали низкий центр внизу между колкесными парами по бокам), я тоже так и думал делать (просто чото не сомтрел пока в район тяговых а думал прототим просто на обычных компактных свинцовых сделать). Они и дешевле — по 1200 гдето. И даже если не особо долговечны — проще чаще на новые менять ? Но конеччто надо или литий оставлять или идти в строну предложенных Вами тяговых батарей. Их характеристики впечатляют. Наверно пусть лучше рабочие покорячутся с 30 кг.))))) зато мощща.
Прошивка гироскутера для управления ручкой газа
Всем привет! Для своего проекта “ Электроскутер 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 с официального сайта , чтобы скачать утилиту потребуется принять действующее соглашение и указать ваш адрес электронной почты. Можете скачать эту утилиту по моей ссылке (с Яндекс Диска) – скачать 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В, который нельзя использовать для питания ручки газа.

Теперь нужно подключить все устройства для проверки работоспособности: мотор-колеса, ручку газа и аккумуляторную батарею.
Сразу после прошивки не будет никакой реакции от поворота ручек газа и нажатия тормоза. Чтобы контроллер определил элементы управления и смог реагировать на них, сначала нужно его этому обучить. Для этого нужно провести калибровку.
Вход в режим калибровки и процесс определения элементов управления:
- Нажимаем и отпускаем кнопку питания контроллера;
- Сразу после звукового сигнала зажимаем кнопку и ждём многотональный звуковой сигнал;
- Теперь отпускаем кнопку и дожидаемся короткого гудка высокого тона (входим в режим калибровки);
- Крутим пару раз полностью ручку газа и отпускаем;
- Нажимаем пару раз на кнопку тормоза и отпускаем;
- Нажимаем и отпускаем кнопку выключения контроллера (выходим из режима калибровки);
- Перезагружаем контроллер и проверяем работу ручки газа и электронного тормоза.
Если все прошло успешно, то после калибровки мотор-колёса должны реагировать на ручки газа и тормоза. Если контроллер издает звуковые сигналы ошибки, то необходимо проверить правильность подключения фазных проводов и сигнальных проводов с датчиков Холла.
На этом процесс прошивки гироскутерной платы для управления ручкой газа завершён. Дальнейшее описание проекта по ссылке “ Электроскутер Honda Tact AF16 из деталей от гироскутера “.
Подписывайтесь на наши сообщества, чтобы не пропустить новые статьи и видео о самоделках:
Прошивка гироскутера под ручку газа
Прошивка платы надоевшего гироскутера под ручку (педаль) газа открывает новые возможности для самодельщиков электротранспорта. Гироскутер (ховерборд) является отличным недорогим донором для изготовления электротранспорта своими руками. На основе запчастей гироскутера можно собрать электросамокат, трайк, детский четырехколесный автомобиль, багги, самоходную тележку и другие двух (и более) колесные полезные и интересные самоделки.
Некоторые самоделки Вы можете посмотреть в этом видео.
В этой статье рассказано именно о прошивке под управление с ручки газа, но применяя другие настройки плата может управляться с проводного джойстика, пульта дистанционного управления. Это ещё больше расширяет область её применения!
Прошивка, о которой здесь пойдет речь абсолютно бесплатная. Исходник периодически обновляется и дорабатывается, свежую версию всегда можно скачать с официальной страницы разработчиков на GitHub. Там же есть ссылка для пожертвований за их немалый труд по созданию этой прошивки. Поддержите их по возможности!
Содержание статьи
- На что нужно обратить внимание при выборе донора
- Что понадобится для прошивки
- Настройка прошивки
- Формирование файла прошивки
- Подключение программатора к плате
- Процесс прошивки
- Подключение ручки газа и тормоза
- Калибровка ручек газа и тормоза
- Звуковые сигналы ошибок
Контроллер от гироскутера с такой прошивкой не уступает обычным велосипедным/самокатным контроллерам средней мощности. Кратко о возможностях и особенностях:
- один контроллер управляет двумя моторами (возможна прошивка на один мотор)
- три режима мощности
- управление с обычных ручек или педалей для электротранспорта на датчиках Холла или потенциометрах
- любая плата выдерживает пиковый батарейный ток на каждый мотор до 25 А, при 36 В это более 900 Вт (более 20 А потребуется улучшение теплоотвода). Более высокий ток на Ваш страх и риск.
- активный электронный тормоз с курка (аналог ручки газа) с плавным дозированием усилия. В некоторых случаях позволяет отказаться от механических тормозов
- свободный накат при сбросе газа
- задний ход активируется ручкой тормоза при условии, что колеса остановлены (два коротких полных нажатия)
- ослабление поля (задается в настройках прошивки) позволяет добиться более высоких оборотов без поднятия напряжения батареи.
- безопасный верхний предел напряжения питания по рассказам испытателей, без переделки до 60 В. Это батарея из литий ионных элементов до 14S.
На что нужно обратить внимание при выборе донора
Первое условие – для такой прошивки подойдет гироскутер с тремя платами на борту. Это большинство первых версий гироскутеров. Одна из них – плата контроллера (она самая большая) и две платы поменьше (гироскопы). В одной половине корпуса размещается первый гироскоп и контроллер, в другой – батарея и второй гироскоп. Еще встречаются гироскутеры с двумя платами, такие для прошивки не подойдут.
Форма главной платы может отличаться, но на ней всегда есть 12 мощных транзисторов на алюминиевом радиаторе и многоногая микросхема (чип, процессор), на название которой нужно обязательно обратить внимание.
Второе условие – плата контроллера обязательно должна быть с чипом STM32F103RCT6, GD32F103RCT6.

Что понадобится для прошивки
Программатор ST-Link

Программатор ST-Link V2 доставка из Китая / доставка из РФ. Все необходимые провода для подключения будут в комплекте.
Утилита для программатора 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 – для отключения правого мотора закомментировать
Типы управления и методы контроля
Для самокатов, машинок и других проектов с водителем хорошо подходит FOC_CTRL в сочетании с TRQ_MODE (управление моментом). При этом управление наиболее мягкое, высокая энергоэффективность, свободный накат при сбросе газа.
Также в разделе ховеркар (ищите ниже)
выставляем в #define CTRL_MOD_REQ значение TRQ_MODE
Ограничение тока и оборотов
В зависимости от требуемой пиковой мощности в моторах и токоотдачи аккумулятора можно отрегулировать максимальный вливаемый в моторы ток. Для своих 250 Вт моторов я оставил ток по умолчанию 15А. На практике любая плата выдерживает пиковый непродолжительный ток до 25 А (потребуется улучшить охлаждение). Более высокий ток на ваш страх и риск.
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.
// 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] – Нижний порог оборотов при котором включается ослабления поля
Направление вращения моторов
Раскомментировать для активации. По умолчанию моторы вращаются как если бы они стояли на гироскутере и он катился вперед. На скриншоте инвертирован правый мотор, при этом оба мотора (если смотреть со стороны оси) вращаются по часовой стрелке.
//#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-тормоз не нажат, газ нажат
Это не все возможные настройки, а только основные которым обязательно нужно уделить внимание.
























