При езде на шоссейном велосипеде особенно важно минимизировать изменения в необходимом усилии и скорости вращения педалей, для этого в зависимости от рельефа необходимо часто переключать скорости велосипеда. На бюджетных шоссейных велосипедах, естественно, стоит бюджетная система переключения, с ней лишний раз подумаешь, менять скорость или нет. Под катом то, как я это исправил.
Предыстория
Меня зовут Вячеслав. В коронокризис было скучно, поэтому я начал бегать. За 3 месяца пробежал 350 км и 02.08.2020 пробежал Московский полумарафон.
После бега решил попробовать шоссейный велосипед. Я, еще контактные педали в глаза не видевший, уже слоты на спринты к айронмэну на 2021 присматривал, такое бывает. Велосипед и оборудование выбирал самые бюджетные, поэтому простор для фантазии и доработок открыт.
Электронное переключение скоростей
В моем шоссейном велосипеде скорости переключаются на середине руля, поэтому для постоянного переключения нужно отпускать барана, это очень неудобно. В более дорогих системах переключения на самом баране, но там одна система стоит дороже, чем весь мой велосипед.
Моей задачей было с минимальными доработками и сохранением существующего варианта переключения сделать удобное и быстрое электрическое переключение параллельно.
Для прототипа использовалось то, что было под рукой. Измерив ход движения тросика(22мм) и необходимое усилие от родной системы, выбрал сервопривод ds3115mg.
Конструкция элементарная: батарея+Arduino nano+две кнопки+серво.
Кнопки подтянул к 5V через внутренний резистор.
Код Arduino
#include <Servo.h> Servo myservo; int speedg = 1; int up = 1; int p = 0; void setup() { myservo.attach(9); pinMode(8, INPUT_PULLUP); pinMode(7, INPUT_PULLUP); } void loop() { if (digitalRead(7) == 0) { if (speedg > 1) { speedg--; up = 0; } p = 1; } if (digitalRead(8) == 0) { if (speedg < 7) { speedg++; up = 1; } p = 1; } if (speedg == 1) { myservo.write(0); } if (speedg == 2) { if (up == 1) { myservo.write(75); } else { myservo.write(60); } } if (speedg == 3) { if (up == 1) { myservo.write(85); } else { myservo.write(80); } } if (speedg == 4) { if (up == 1) { myservo.write(97); } else { myservo.write(90); } } if (speedg == 5) { if (up == 1) { myservo.write(110); } else { myservo.write(103); } } if (speedg == 6) { myservo.write(120); } if (speedg == 7) { myservo.write(140); } if ( p == 1) { delay(300); p = 0; } }
Параметры подбирал. причем некоторые скорости для переключения вверх и вниз требовали разного угла поворота сервопривода.
Распечатал на 3D-принтере корпус для Arduino, серво и батареи. Прикрепил корпус к раме, тросик от серво соединил с тросом штатной системы(фото КДПВ, смотри выше).
Первые испытания показали живучесть системы, поэтому решил добавить фичи.
Добавив датчик Холла и магнит на ведущей звезде, получил датчик каденса, теперь могу менять передачи автоматически в зависимости от падения каденса.
Добавив 3-осевой гироскоп и акселерометр MPU6050, пришлось повозиться с калибровкой. Зная угол велосипеда, можем переключать передачи автоматически в горку и с горки.
В целом, автоматизация скорее отвлекает, имея две кнопки с моментальным переключением всегда удобнее самому менять скорость.
В планах
-
Поменять микроконтроллер.
-
Добавить датчик скорости вращения колеса.
-
Добавить BTLE для синхронизации и передачи данных в STRAVA.
-
Сделать корпус устройства в виде фонаря с дисплеем отображения текущей скорости и серво-приводом внутри.
-
Заменить сервопривод на актуатор с обратной связью.
Внимание, вопрос
Как Вы считаете стоит ли попробовать это решение для выхода на краудфандинг?
Велокомпьютер с подключением к Strava+электронное переключение скоростей и все в корпусе фонаря с функцией фонаря+ автоматическое переключение от каденса или уклона. И все это за сумму менее $100
ссылка на оригинал статьи https://habr.com/ru/post/517236/
Добавить комментарий