Электросамокат из гироскутера с учётом прошлых ошибок. Часть 2
Эта часть наверное больше всего вас интересует, постараюсь максимально понятно все объяснить. Как умею.
Итак, для прошивки понадобится:
Купить программатор Stlink v2, оригинальный или китайский без разницы, шьется одинаково.
Скачать и установить с официальных сайтов:
Visual Studio Code (далее вск)
Stm32 Stlink Utility.
В процессе установки стлинк утилиты согласиться на установку драйверов программатора.
Далее открываем Visual Studio Code и устанавливаем дополнения:
Russian Language Pack for Visual Studio Code
Vscode-pdf - понадобится для просмотра файлов пдф
PlatformIO IDE (далее пио).
На начальном этапе этого достаточно, что будет необходимо вск скачает и установит самостоятельно.
Качаем исходник прошивки, он в открытом доступе и бесплатный, https://github.com/EFeru/hoverboard-firmware-hack-FOC . Ссылка вроде не содержит ничего противоправного, прошу прощения, если что не так. Распаковываем.
Там же есть подробное описание от автора прошивки
Берём гирик, разбираем. Должна остаться голая рама с колёсами, АКБ и плата управления с кнопкой включения. Остальное не нужно, вытаскиваем чтоб не мешало. Следует понимать, что после прошивки обратно гириком он уже не станет. Берём паяльник и припаиваем управление согласно схемы. Самокатные курки с датчиками холла можно заменить обычными переменными резисторами на 10 кОм. Подтягивающие резисторы и конденсаторы паяем непосредственно на плату. Если не планируете использовать круиз-контроль то кнопку на него можно не паять.
Внимание!!! На разъёмах левого и правого уартов присутствует напряжение 15 вольт! Чтоб случайно не спалить проц неверным подключением рекомендую сразу перерезать дорожку, идущую от стабилизатора 15 вольт на разъёмы. После этого можно подать на разъёмы 3,3 вольта перемычкой. Так будет удобнее подключать курки, можно будет использовать штатные разъемы. Также припаиваем разъём программирования, 4 пина SWD programming рядом с процом. Распиновка платы гирика, полное описание со схемами также есть в исходнике в папке docs.
Платы могут отличаться по форме и по маркировке процессора - stm32f103rct6 и gd32f103rct6. Второй - китайский клон стмки, но шьётся и работает также. С другими процессорами прошивка работать не будет.
Спаяли? Отлично, проверьте ещё пару раз, чтоб всё было верно!
Шьём плату не подключая АКБ. Питание от программатора!!!
Подключаем стлинк, открываем стлинк утилиту, выбираем Connect, после успешного подключения Target - Options Byte и снимаем защиту от чтения, нажимаем Apply... Все, гироскутером эта плата больше не станет, чип стёрт. Жмём Disconnect, закрываем утилиту.
Открываем вск - пио - открыть проект и указываем в папке с исходником файл platformio.ini . В открывшемся файле выбираем нужный вариант прошивки - VARIANT HOVERCAR
Понадобится некоторое время, чтоб программа докачала нужные файлы, после чего в нижнем левом углу появятся кнопки сборки и загрузки
Далее выбираем в папке Inc файл config.h
Я не буду описывать все настройки, которые есть в этом файле, тут и десятка постов не хватит. Опишу только самые необходимые сейчас.
Листаем вниз до раздела MOTOR SETTINGS
Тут можно включить или выключить мотор и настроить
I_MOT_MAX - максимальный общий ток одного колеса, соответственно на 2 колеса будет х2
I_DC_MAX - максимальный ток фазы, выставляем на 2 ампера больше общего тока
N_MOT_MAX - максимальные обороты колеса, соответственно максимальная скорость.
FIEL WAKE ENABLE - ослабление поля, для любителей погонять. Даёт хороший прирост скорости, но и батарею жрёт. На штатном АКБ гирика включать совсем не рекомендую, она сдохнет, да и токи больше 10 ампер на ней ставить не стоит.
Идём в раздел HOVERCAR SETTINGS
Тут настраивается режим работы моторов TRQ, SPD или VLT_MODE, для самоката лучший вариант TRQ, так как тут присутствует накат.
Неиспользуемые в самокате функции нужно закомментировать:
//#define SIDEBOARD_SERIAL_USART_3
//#define FEEDBACK_SERIAL_USART_3
//#define DUAL_INPUTS
#define AUX_INPUT1 и #define AUX_INPUT2 ставим в значения первую цифру 0, отключено.
#define PRI_INPUT_1 и #define PRI_INPUT_2 ставим в значения первую цифру 3, автоопределение типа ручек газа и тормоза
Тут же можно изменить направление вращения моторов, достаточно раскомментировать #define INVERT_L_DIRECTION или #define INVERT_R_DIRECTION. В принципе, тут все.
Круиз-контроль включается в разделе CRUISE CONTROL SETTINGS, если используем, раскомментировать строки #define CRUISE CONTROL SUPPORT и #define SUPPORT BUTTONS RIGHT.
Нажимаем в левом нижнем углу галку build, вск скомпилирует прошивку и если всё сделано верно выдаст SUCCESS!
Подключаем программатор, нажимаем стрелку upload. В первый раз нужен интернет, вск будет скачивать нужные для работы с программатором файлы. Потом будет проще.
Перед каждой прошивкой нужно стирать чип полностью, стираем через стлинк утилиту.
После прошивки отсоединяем программатор, подключаем АКБ, ставим ручки газа и тормоза в минимальное положение. Для того, чтоб всё заработало, нужно сделать калибровку ручек, для этого:
кратковременно нажимаем кнопку вкл, сразу после пиликанья мелодии включения нажимаем опять и удерживаем 5-7 секунд, пока плата не пискнет высоким и низким тоном, отпускаем вкл, 3-4 раза дергаем курки от мин до макс и опять кратковременно нажимаем вкл. Калибровка окончена.
Также не всегда моторы запускаются сразу, это связано с тем, что связь сигналов датчиков холла в колесе и фаз обмоток двигателя в родной прошивке гирика и в этой не совпадают. Если после нажатия газа моторы не закрутились и плата начала пищать короткими писками - нужно подобрать верную фазировку, для этого отключаем питание, меняем местами любые 2 силовых провода мотора и пробуем запустить. Потом следующие 2, пока не поедет.
Ещё бывает так, что после нажатия и отпускания газа колёса не останавливаются, а при нажатии на тормоз начинают крутиться взад-вперед. Это нормальное явление, если колёса вывешены. Когда поставите на землю всё будет ок.
Прошивка поддерживает несколько методов управления, самые популярные это курки и PWM и PPM, эти два режима позволяют подключить радиоаппаратуру от RC моделей. Также позволяет управлять с двух входов с выбором приоритета, это полезно для детских машин, когда ребёнок управляет машиной сам, но радиопульт с приоритетом у папы.
Вроде всё рассказал. Если остались вопросы - пишите в комментарии, отвечу всем, может не сразу, но отвечу.