Электронная система управления подвеской горного велосипеда

в 20:35, , рубрики: android, arduino, automatic, bluetooth, c++, diy или сделай сам, велосипед, Программинг микроконтроллеров, программирование микроконтроллеров, электроника, Электроника для начинающих, метки: , , , , , , , ,

Уважаемое сообщество, представляю вашему вниманию отчет о проделанной работе по скрещиванию моих двух хобби: горный велосипед и микроэлектроника.

Итак, в этой статье речь пойдет об отечественной разработке электронной системы управления подвеской горного велосипеда. Не буду мучить длинным вступлением, сразу к фото и видео:

image

image

Теперь подробности.

Проблема:

При активном педалировании на двухподвесном байке затрачивается большая доля энергии ездока на раскачку подвески байка, это справедливо как для задней так и передней подвески. Задняя подвеска подвержена раскачки почти всегда, передняя подвеска в основном подвержена при педалировании «стоя». Чтобы было понятнее представьте что вы стоите рядом с горным велосипедом у которого есть амортизационная вилка и руками циклично вдавливаете/прижимаете вилку к земле. Для этого вы тратите свою энергию, таким же способом ваша энергия тратится совершенно бесполезно когда вы интенсивно педалируете (например в гору). То есть если бы не «раскачка» амортизаторов, то вся энергия уходила бы на полезное дело — кручение педалей.

Для решения данной проблемы были разработаны и внедрены различными производителями подвесок многочисленные механические системы для гашения колебаний раскачки. Такие как Motion Control от RockShox и Terralogic c ProPedal от FOX и др.
Нельзя не согласиться что такие механические системы конечно же улучшают эффективность педалирования, но всё же не устраняют полностью рассеивание энергии, поскольку все эти решения являются «пассивными».

Другими словами, механические системы не учитывают различные внешние условия, такие как:

  • Скорость движения
  • Каденс (частота педалирования)
  • Характер поверхности дороги

Поэтому, в последнее время крупными производителями велосипедов были разработаны «активные» системы управления подвеской, которые учитывают перечисленные выше внешние условия, благодаря различным датчикам:

  • Герконы скорости и каденса
  • Датчики ускорения

Идея:

Как обычно это было принято на нашей родине, задача была поставлена следующая: «Превзойти зарубежные аналоги по тактико-техническим характеристикам в несколько раз!». А именно, вот эти зарубежные поделия необходимо было технологически догнать и обогнать по следующим показателям:

  1. Эффективность
  2. Габариты
  3. Вес
  4. Возможность сопряжение системы с bluetooth устройствами
  5. Интеллектуальность
  6. Дешевизна
  7. Доступность
  8. Легкость установки на имеющиеся оборудование (вилку и аморт) с минимальной модификацией
  9. Ремонтопригодность
  10. Отказоустойчивость
  11. Возможность модификаций аппаратной части (апгрейд)
  12. Возможность модификации программной части (апгрейд)
  13. Время работы от одного заряда

Чего удалось достичь:

1. Эффективность

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

2. Габариты

Специально подобранные компоненты настолько малы, что позволяют разместить их в штоке вилки. То есть «мозг» и аккумулятор размещаются непосредственно в свободном пространстве штока вилки.
Таким образом размеры управляющего элемента не превышают 200мм по длине, и 22мм по ширине. Реальные размеры примерно такие: 150х19.
В итоге получается элегантное решение, которого даже не видно, и самое главное, ничего не торчит и не занимает нужного места как это сделано тут (громоздкий блок аккумуляторов прикрепленный вместо жизненно важной фляжки с водой):
image

3. Вес

Для тех кто мало знаком с велоспортом поясню, что вес является одним из основных критичных показателей для оборудования велосипеда использующегося в соревнованиях. По этой причине, данному критерию было выделено особое внимание. В итоге, вес получился около 120 грамм. В это входит:

Серво привода (2 по 19 грамм) 38
Плата микроконтроллера 10
Аккумулятор 30
Датчик ускорения (подрессоренный) 5
Датчик ускорения (неподрессоренный, вместе с герметичным корпусом) 15
Герконы и магниты (2 по ~10) 20
Модуль управления (кнопоки) 5
Проводка 5
Итого: 128 грамм

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

4. Интеллектуальность

Датчики и возможность программирования микроконтроллера позволяют реализовать любой алгоритм на высокоуровневом языке c++. В итоге следующие особенности реализованы на данный момент:

Ручной режим

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

Полуавтоматический режим

Главным образом, этот режим разрабатывался для новых амортизаторов от компании FOX, которые имеют рычажки CTD. Основной идеей для этого режима было задействование по-максимуму механических особенностей амортизаторов. То есть система в зависимости от датчиков должна выбирать один из трех режимов CTD (Climb-Trail-Descent), отдавая на откуп всю логику по оптимизации работы амортизаторов на сами амортизаторы. Режим выбирается путем поворота сервопривода на определенный угол, соответствующий конкретному режиму работы амортизатора.

На данный момент, режимы CTD выбираются на основании угла наклона байка. Другими словами работает это так:

  • Байк едет в гору — включается Climb режим.
  • Байк едет по прямой — Trail режим.
  • Байк едет с горы — Descent режим.

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

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

Вот как это работает:

Автоматический режим

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

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

Система используя датчики:

  • датчик ускорения подрессоренный (в штоке вилки)
  • датчик ускорения неподрессоренный (на штанах вилки)
  • датчик скорости
  • датчик каденса

Вычисляет следующие показатели:

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

И на основании этих показателей выбирает необходимое состояние, переходя с одного на другое:

Состояние системы (режим езды) Состояние блокировок амортизаторов
режим покоя полная блокировка
педалирование с раскачкой вилки полная блокировка
педалирование амортизатор вилки разблокирован, задний амортизатор заблокирован
режим свободного качения все разблокировано
режим абсорбированния кочек все разблокировано

К сожалению, пока ещё не снял ролик как этот режим работает в действии. Если найду видео регистратор то попробую снять.
А пока вот видео работы этого режима в статике:

5. Сопряжение системы с bluetooth устройствами

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

Ручной режим:

image

CTD режим:

image
Красная кривая — нефильтрованные данные угла наклона
Синяя кривая — угл наклона, полученный путем применения математического фильтра
Climb/Descend gradient threshold — предельные углы срабатывания режимов Climb/Trail/Descend (настраиваются ползунком или с кнопок на руле). Так же показываются на графике пунктирными линиями

Автоматический режим:

image
Красная кривая — показания датчика акселерометра подвешенного на штанах вилки (неподрессоренный датчик)
Синяя кривая — показания датчика акселерометра внутри штока вилки (подрессоренный датчик)
Sprung/Unsprung severity threshold — предельные значения датчиков для блокировки вилки и аморта (чувствительность), при пересечении unsprung значения — блокируется аморт, при пересечении sprung значения — блокируется вилка при условии что sprung значение не превышено, то есть нет кочек (настраиваются ползунком или с кнопок на руле). Так же показываются на графике пунктирными линиями

Редактирование настроек:

image
Первые два скрина — калибровка серв/режимов. При перетаскивании ползунков сервопривода в реальном времени поворачиваются. Это всего лишь малая часть доступных настроек, всего около 50сти различных параметров.

И вот несколько видео:

Ручной режим:

CTD режим:

Клибровка сервоприводов:

Конечно же в будущем можно будет портировать android приложение для iPhone и др. устройств с bluetooth.
Вскоре, получу вот такой девайс с андроидом, и портирую приложение на него. Я думаю, будет очень удобно:

image

5. Дешевизна

Все подобранные компоненты можно приобрести на ebay или dx.com по мизерным ценам. Но для создания этой системы приходилось покупать эти же компоненты по высоким ценам, ибо не хотелось ждать доставку. В итоге получилось примерно так:

ebay или dx локальные магазины
Микроконтроллер 300р 1500р
Датчик ускорения (x2) ~300р 2000р
Аккумулятор (хороший 18650) 200р 500р
Модуль кнопок ~30р 50р
Герконы неизвестно неизвестно, использовал от старых велокомпьютеров
Провода ~100р 400р
Серво привод (хороший, с металлическим редуктором, самый быстрый, x2) 600р 1300р
Шарниры (авиамоделирование) 50р 250р
Bluetooth модуль 200р ~500р
Твердотельные реле, микроконтроллер заряда Li-Ion аккумуляторов, мелочевка ~300р ~700р
Итого: ~2180р ~7200р

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

6. Доступность

Все компоненты можно найти в локальных магазинах, но по высоким ценам. Если время есть, то можно купить на ebay и dx.com. Кроме того, сомневаюсь что аналогичные зарубежные системы будут у нас доступны даже через год.

7. Легкость установки на имеющиеся оборудование (вилку и аморт) с минимальной модификацией

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

8. Ремонтопригодность

Как видно, система состоит из множества компонент/модулей каждый из которых легко доступен и заменяем. Можно представить что будет если сломается заводской амортизатор, скорее всего починить будет невозможно, спасет только замена полностью амортизатора. А если полетит каретка (куда производители аналогичной системы поместили датчик каденса)? Похоже что каретка пойдет на выброс.

9. Отказоустойчивость

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

10. Возможность модификаций аппаратной части (апргрейд)

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

11. Возможность модификации программной части (апгрейд)

Микроконтроллер в любое время можно перепрошить новой микропрограммой написанной на c++ через USB шнурок. Можно представить насколько это здорово когда можно реализовать любые капризы.

В планах реализовать следующее:

  • Все возможные функции велокомпьютера (любые какие вздумается и в том числе те что доступны в топовых моделях велокомпьютерах).
  • Более глубокий анализ характера поверхности дороги (асфальт, грейдер, корни) чтобы более точно калибровать/высчитывать характеристики блокировки.
  • Много другое (хоть сигнализацию)...

12. Время работы от одного заряда

Sleep режим

Во время простоя система потребляет 1mA, благодаря вживленным трем твердотельным реле, которые отключают сервопривода, bluetooth и порт i2c (для LCD экранчика, сейчас не используется) в sleep режиме. Поэтому можно сказать что в неактивном состоянии система может простаивать месяцами (все зависит от внутреннего сопротивления аккумулятора, т.е. насколько аккум может находится в заряженном состоянии без нагрузки).
В sleep режим переходит автоматически по таймауту. Время таймаута можно изменять, либо вовсе выключить использование sleep режима. Из sleep режима система выходит по событию датчика каденса либо по кнопке на руле.

Активный режим

Опять же, благодаря твердотельным реле все сервопривода отключаются сразу после того как были задействованы. Таким образом, ~80% времени сервопривода вообще не подключены в цепь (не используется режим удержания что очень сильно позволяет экономить заряд).
Кроме того, bluetooth модуль отключается независимым реле, соответственно время работы увеличивается без использования bluetooth. Bluetooth отключается с кнопок на руле или по таймауту. Время таймаута настраивается.

Потребляемый ток Срок службы от отдного заряда (расчетный)
Sleep режим 1mA 4 месяца (без учета внутреннего сопротивления аккумулятора)
Активный режим 20mA 6 дней непрерывно
Активный режим + bluetooth 40mA 2.5 дня непрерывно
Активный режим + сервопривода 150mA 20 часов непрерывно, то есть если сервопривода работали непрерывно туда-сюда

13. Заряд аккумулятора от обычного USB порта

Благодаря встроенному микрочипу зарядки Li-Ion аккумуляторов, система может заряжаться от обычного USB шнурка. Время до полного заряда ~10 часов. Зарядка автоматически отключается если аккумулятор заряжен полностью, таким образом исключается «перезаряд» аккумулятора, тем самым срок службы аккумулятора увеличивается.

Вот так примерно выглядит плата микроконтроллера:
image
image

Да, как многие наверное поняли, это обычный ардуино микроконтроллер.

Вместо заключения:

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

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

  • работа с акселерометрами
  • алгоритмы фильтрации сигналов
  • модель состояний системы
  • максимально эффективный способ взаимодействия с bluetooth устройством
  • электрические схемы
  • и многое другое

Автор: vkolotov

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js