avatar_MultiMote

Ещё один бортовой компьютер для S3, на BluePill

Автор MultiMote, 28 Июнь 2021 в 22:06

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

MultiMote

Доброго времени суток, уважаемые форумчане. Нашёл я всё же в себе смелости выложить свой проект бортового компьютера для Kugoo S3. Так как проект я временно откладываю, релиз мог бы затянуться  :-D

Итак, немного предыстории. Мною был куплен самокат с убитой электроникой. Контроллер мотор-колеса кое-как получилось восстановить, но бортовой компьютер умер совсем. Было решено наверстать упущенное и вспомнить программирование под STM32. Огромное спасибо всем, кто разобрал протокол передачи данных. Без вас проект бы не существовал, так как оригинального бортового компьютера у меня не было, и функционала его не знаю.

Создавался проект практически из того, что было. Отладочный модуль с stm32f103c8t6 впаивается прямо на плату. На профессионализм не претендую. Насчёт дисплея - увы, был только только ssd1306. Да, маленький. Да, ничего не видно. Но ничего другого не было. При желании, для тестов всё можно собрать даже на макетной плате.

Проект полностью открыт. Код, инструкции и актуальную информацию можно найти на GitHub.

Будет здорово, если что-то окажется кому-то полезным.

Поехали.




На текущий момент (28.07.2021), с этим бортовых компьютером проехал 300 км.







Что умеет

Список примерный.


  • Подавление неотключаемой автоматической фиксации ускорения ("круиз-контроль"). Осуществляется за счёт подачи нулевого ускорения, затем плавного возврата в режим.
  • Поддержание заданной скорости (П-регулятор, почти).
  • Настоящий круиз-контроль (с поддержанием скорости, а не ускорения) с включением по кнопке. Это значит что устройство будет поддерживать заданную скорость независимо от уклона дороги.
  • Переключение максимальной скорости в км/ч.
  • Отображение ошибок: неподключенная ручка тормоза, неподключенная ручка газа, перегрузка по току, проблема с двигателем, нет ответа от контроллера мотор-колеса.
  • Программное ограничение тока.
  • Плавный старт.
  • История поездок ( последние 8 ).
  • Экранная заставка для предотвращения выгорания пикселей.
  • Защита от зависаний при помощи сторожевого таймера.
  • Внешняя EEPROM память. Настройки не сбрасываются при перепрошивке.
  • Многое (в том числе и коэффициенты) настраивается из меню.
  • Печатная плата совместима с оригинальной.

Планы

  • ⚠ Довести до ума механизм подавления штатного круиз-контроля.
  • ⚠ Разобраться с редким зависанием c последующей перезагрузкой. Кажется, это связано с дисплеем. Серьёзно?
  • Реализовать "расстояние с последней зарядки". То, что самокат был на зарядке, определять по разнице напряжения между включениями.
  • Редактирование конфигурации по USART/Bluetooth.
  • Последовательности звуков.
  • Моргание фары, шаблоны мигания.
  • Как-нибудь применить стоп-сигнал.
  • Немного зарефакторить код, не всё находится в логичных местах.
  • Провести тесты на другом контроллере мотор-колеса. Возможно, мой контроллер - источник проблем.
  • Изменение шаблонов значений ограничения скорости.
  • Поддержка трёхпозиционного переключателя скоростей.

Информация

Схема:



Проект DipTrace (печатная плата, схема)

Руководство пользователя

Загрузки

Руководство пользователя (PDF)

Прошивка (v0.1): kugoo-s3-bluepill-0.1-MinSizeRel.hex
Актуальный список прошивок всегда тут.

Sonar

[user]MultiMote[/user], Отлично, что вы начали сразу с использования графического дисплея. Если всё это разовьётся до дисплея по размерам как стоковое стекло самоката - то это будет весьма интересная замена штатному контроллеру. При разработке своего контроллера мне постоянно приходится ломать голову, как то или иное отобразить на штатном куговском стекле. У вас же - полная свобода :)
Интересно, как себя покажет в реальных условиях ваш круиз-контроль с поддержанием скорости. Я пытался применить несколько простеньких алгоритмов поддержания скорости, но все они давали разные побочные эффекты. То медленные, то скорость толком не держат, то уходят в самовозбуд. В итоге оставил штатный вариант, когда просто фиксируется уровень газа. Использую его и прям наслаждаюсь :)
А как у вас реализован сброс штатного круиза, который срабатывает в контроллере мотор-колеса? Понял, что вы тоже сбрасываете значение курка газа в ноль и снова его поднимаете, но это делается постоянно или есть какие-то дополнительные условия? Я в своём проекте добавил лишь одно условие - если значение курка газа уменьшается.
Kugoo S2 blue, 36v, 20,8A/h, 2WD, 1,9kW max, Prog disp v3.8, Prog drive v1.9, odo: 30434km.
Все материалы по альтернативным контроллерам для Kugoo S2/S3: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

MultiMote

Цитата: Sonar от 28 Июнь 2021 в 22:43Интересно, как себя покажет в реальных условиях ваш круиз-контроль с поддержанием скорости
Уже показал, причём хорошо :)
Постоянно езжу в режиме стабилизации скорости + плавное ускорение.
Из того, что стоит заметить - есть небольшое перерегулирование. Это когда самокат уже достиг нужной скорости, но регулятор не успел отреагировать, и из-за этого самокат несколько секунд едет быстрее, чем нужно. Но я этого особо не замечаю, меня устраивает.

Этот же алгоритм используется и для ручки акселератора. Если выставлена скорость (ограничение скорости), допустим, 15 км/ч, то при режиме "ручка на максимум" самокат будет поддерживать эти самые 15 км/ч. А включение круиза - это просто запомнить значение ручки.

Цитата: Sonar от 28 Июнь 2021 в 22:43А как у вас реализован сброс штатного круиза, который срабатывает в контроллере мотор-колеса?
В пакете от мотор-колеса есть бит статуса в первом байте после заголовка. Определяется по маске 0x02.



Когда бортовой компьютер видит этот бит, то сбрасывает значение ускорения в ноль, затем за несколько шагов поднимает это значение обратно до значения ручки. Без этого у меня были довольно сильные рывки при езде, а сейчас практически незаметно.



Sonar

Цитата: MultiMote от 28 Июнь 2021 в 23:17В пакете от мотор-колеса есть бит статуса в первом байте после заголовка. Определяется по маске 0x02
Спасибо. Этот момент завтра посмотрю, благо есть стоковый комплект как рас на изучение. Видимо я этот бит упустил из виду.
Kugoo S2 blue, 36v, 20,8A/h, 2WD, 1,9kW max, Prog disp v3.8, Prog drive v1.9, odo: 30434km.
Все материалы по альтернативным контроллерам для Kugoo S2/S3: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

MultiMote

Цитата: Sonar от 28 Июнь 2021 в 22:43Я пытался применить несколько простеньких алгоритмов поддержания скорости, но все они давали разные побочные эффекты. То медленные, то скорость толком не держат, то уходят в самовозбуд

Да, и насчёт алгоритма. Вся магия происходит вот тут. Тут несколько хитростей. Регулятор оперирует со значениями в км/ч. И есть функция (kugoo_s3_set_speed_approx), которая конвертирует километры в час в примерное ускорение. Точность конвертации не сильно важна, регулятор сам подгонит значение до нужного.
В самом конце тут значение регулятора передаётся на контроллер мотор-колеса. Причём складывается с требуемым, за счёт чего достигается быстрая реакция.

В двух словах - мы сначала подаём требуемую скорость, а потом по ситуации отклоняем её в нужную сторону.


Sonar

[user]MultiMote[/user], спасибо. Есть над чем подумать :) Сегодня проверил бит статуса круиз-контроля - он действительно есть. Наверное будет сложнее с золотистыми контроллерами мотор-колеса. Там, в протоколе, такой бит не предусмотрен.
Kugoo S2 blue, 36v, 20,8A/h, 2WD, 1,9kW max, Prog disp v3.8, Prog drive v1.9, odo: 30434km.
Все материалы по альтернативным контроллерам для Kugoo S2/S3: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

Magic David

Цитата: Sonar от 28 Июнь 2021 в 22:43Если всё это разовьётся до дисплея по размерам как стоковое стекло самоката - то это будет весьма интересная замена штатному контроллеру. При разработке своего контроллера мне постоянно приходится ломать голову, как то или иное отобразить на штатном куговском стекле.
Графический дисплей такого размера будет стоить недешево. Может лучше рассмотреть возможность подключения вместо дисплея обычного смартфона через web-интерфейс?
Это касается и данного проекта и Вашего. Получилось бы  хорошее универсальное решение. При этом требования к смартфону минимальны, значит вполне можно использовать старенький, который на руль вешать не жалко.

Night Fury

Kugoo s3, 43 км/ч, 2 мотора 8.5',  18/22 ампера (перед/зад),  18650 LG MJ1 13s3p + 13s3p 48 вольт 20 А•ч | пробег 15000 км

Sonar

[user]Magic David[/user], в моем проекте однозначно не будет поддержки управления со смартфона. Пока экрана хватает. Да и надежнее так. Смартфон ещё попробуй разгляди на солнце.
Kugoo S2 blue, 36v, 20,8A/h, 2WD, 1,9kW max, Prog disp v3.8, Prog drive v1.9, odo: 30434km.
Все материалы по альтернативным контроллерам для Kugoo S2/S3: http://213.21.12.200/kugoo_project/
Тема на форуме по этим контроллерам https://electrotransport.ru/index.php?topic=61126.0

Magic David

Цитата: Night Fury от 11 Июль 2021 в 15:42А использовать смартфон для индикации, по-моему, жуткий оверхед. Придется поднимать вебсервер, беспроводной интерфейс. Обеспечивать  прожорливый смартфон питанием итд
Веб-сервер не проблема, например, если использовать ESP8266. Ей и цена рублей 100 и связь в другим контроллером простейшая, хоть с STM32, хоть с Атмегой.  Думаю, что по сравнению с  самокатом, прожорливость смартфона не проблема.   

Magic David

Цитата: Sonar от 11 Июль 2021 в 15:49в моем проекте однозначно не будет поддержки управления со смартфона. Пока экрана хватает. Да и надежнее так. Смартфон ещё попробуй разгляди на солнце.
Ну, не обязательно управление. В-основном настройки и просмотр. Не думаю, что это будет  угрозой для надежности. Зато очень универсальное решение и почти не ограниченные возможности для отображения информации.