Как сделать спидометр для велосипеда
Точность штатных велокомпьютеров на электровелосипедах часто страдает из-за электромагнитных помех от мотора и контроллера. Погрешность в 10–15 км/ч — не редкость, что критично при настройке PAS (педалей ассистента) или контроле лимитов скорости. Самодельный спидометр на базе Arduino или ESP32 позволяет не только получить эталонные данные, но и интегрировать телеметрию прямо в бортовую систему, минуя «чёрный ящик» готовых решений.
Коротко по теме: Самый надёжный способ — использовать геркон или датчик Холла, считывающий обороты колеса, и микроконтроллер для расчёта скорости по формуле V = (Длина окружности * Количество импульсов) / Время. Главное — правильно экранировать проводку от высоковольтных линий электромотора.
- Главный вывод: Датчик Холла предпочтительнее геркона для электротранспорта благодаря отсутствию механического износа и лучшей защите от вибраций.
- Что сделать: Измерьте реальную длину окружности колеса рулеткой, натянув её по протектору, а не берите значение из таблиц.
- Чего избегать: Прокладки сигнальных проводов параллельно фазным кабелям мотора без экранирования — это гарантированные скачки показаний.
Дальше разберём подробно: почему готовые решения часто врут, как выбрать между магнитом и霍尔-сенсором (да, тут будет русский термин — датчик Холла), и как написать код, который не зависнет на кочках.
Физика процесса: почему важно считать обороты, а не брать данные с контроллера
Многие новички пытаются снять сигнал скорости напрямую с контроллера электромотора, рассчитывая, что там всё точно. Это ошибка. Контроллер знает ШИМ-сигнал (широтно-импульсную модуляцию), который он подаёт на обмотки, но он не учитывает проскальзывание шины, давление в покрышке и реальную нагрузку. Если колесо буксует на грязи или льду, контроллер будет показывать скорость вращения вала, а не движение велосипеда относительно земли.
Самодельный спидометр работает по принципу тахометра. Мы ставим метку на спицу или обод, и каждый раз, когда она проходит мимо сенсора, контроллер фиксирует событие. Зная длину окружности колеса (L) и время между двумя импульсами (t), мы вычисляем мгновенную скорость. Формула проста: V = L / t. Но дьявол кроется в деталях обработки сигнала.
Проблема готовых велокомпьютеров в том, что они усредняют данные. При резком ускорении электробайка инерционный лаг дешёвых процессоров даёт задержку в 1–2 секунды. В городе, где нужно резко перестроиться или затормозить, эта задержка мешает адекватной оценке ситуации. Самодельное устройство на базе быстрого микроконтроллера (например, STM32 или даже оптимизированный код на Arduino Nano) может обновлять данные 10–20 раз в секунду, обеспечивая почти нулевую задержку.
- Влияние диаметра колеса: Даже небольшое изменение давления в шине меняет эффективный радиус качения. На электровелосипеде с тяжёлой батареей просадка покрышки под весом райдера может достигать 1–2 см, что даёт погрешность до 3%.
- Электромагнитная совместимость: Силовые кабели от батареи к контроллеру и от контроллера к мотору создают мощное переменное магнитное поле. Если ваш датчик скорости не экранирован, он будет ловить «наводки», интерпретируя их как лишние обороты колеса. Спидометр начнёт показывать 999 км/ч или, наоборот, зависнет.
Выбор сенсора: Геркон против Датчика Холла
Это вечный спор в сообществах самодельщиков. Геркон — это механический контакт, замыкаемый магнитным полем. Датчик Холла — полупроводниковый прибор, реагирующий на изменение магнитной индукции. Для обычного велосипеда разница невелика, но для электротранспорта выбор однозначен.
Геркон стоит копейки, но у него есть контакты. При частой вибрации, характерной для езды по асфальту и грунтовке, контакты могут дребезжать. Это явление называется «дребезг контактов». Микроконтроллер может посчитать одно прохождение магнита как десять. Программно это лечится фильтрацией, но физический износ остаётся. Кроме того, герконы имеют ограниченное быстродействие. На колесах большого диаметра при скорости 40–50 км/ч геркон может не успеть корректно разомкнуться/замкнуться, если магнит слабый.
Датчик Холла (например, популярный A3144 или SS41) лишён механических частей. Он переключается мгновенно, не боится пыли, грязи и воды (если залит компаундом). Его выходной сигнал — чистая цифровая логика (0 или 1), которую легко читать любым микроконтроллером. Единственный минус — ему нужно питание (обычно 3.3–5 В), тогда как геркон пассивен. Но в контексте электровелосипеда, где есть бортовая сеть 5 В для дисплея или USB, это не проблема.
| Характеристика | Геркон | Датчик Холла |
|---|---|---|
| Износостойкость | Низкая (механический контакт) | Высокая (полупроводник) |
| Защита от дребезга | Требует программной фильтрации | Чистый сигнал |
| Потребление энергии | 0 мА (пассивный) | 5–10 мА (активный) |
| Устойчивость к помехам | Средняя (длинная проводка как антенна) | Высокая (при правильном монтаже) |
| Стоимость | Минимальная | Низкая |
Для серьёзного проекта берите датчик Холла. Он обеспечит стабильность показаний на скоростях выше 30 км/ч, что актуально для мощных электробайков.
Электронная начинка: от Arduino до специализированных чипов
Сердце вашего спидометра — микроконтроллер. Вариантов масса, но давайте отсеем лишнее. Raspberry Pi Zero избыточен: долго грузится, потребляет много тока, сложен в программировании реального времени. Обычный Arduino Uno тоже не идеален из-за габаритов и отсутствия встроенного стабилизатора низкого напряжения без лишних деталей.
Оптимальный выбор — Arduino Nano или Pro Mini. Они компактны, дёшевы и имеют достаточную производительность для расчёта скорости и вывода данных на дисплей. Если хотите добавить Wi-Fi или Bluetooth для передачи данных на смартфон, смотрите в сторону ESP8266 (Wemos D1 Mini) или ESP32. Однако учтите: ESP32 требует тщательной настройки энергосбережения, иначе он высаживает аккумулятор быстрее, чем вы доедете до работы.
Для отображения информации лучше всего подходят OLED-дисплеи на драйвере SSD1306 (диагональ 0.96 дюйма). Они яркие, контрастные, читаются на солнце и потребляют мизерный ток. LCD-экраны с подсветкой (как 1602) хуже: на солнце выцветают, а подсветка жрёт батарею. Жидкокристаллические индикаторы без подсветки (как в старых калькуляторах) хороши, но требуют специального мультиплексирования пинов, что усложняет код.
Важный момент: питание. Электровелосипед имеет бортовое напряжение от 36 до 72 В. Подключать микроконтроллер напрямую нельзя. Используйте понижающий DC-DC преобразователь (step-down converter) на базе LM2596 или более эффективный синхронный преобразователь. Настройте его на выход 5 В. Не питайте Arduino через вход VIN от 12 В, если у вас нет уверенности в качестве стабилизации — линейный регулятор внутри платы сильно греется и может уйти в защиту.
Программная часть: борьба с дребезгом и точность расчётов
Написать код, который просто считает импульсы, легко. Написать код, который делает это точно и не виснет, сложнее. Главная проблема — обработка прерываний. Нельзя использовать функцию delay() в основном цикле, иначе вы пропустите импульсы от колеса. Нужно использовать аппаратные прерывания (attachInterrupt в среде Arduino).
Алгоритм работы должен быть таким:
1. При срабатывании датчика (передний фронт сигнала) фиксируем текущее время в микросекундах (micros()).
2. Вычисляем разницу между текущим и предыдущим временем. Это период одного оборота.
3. Если период слишком мал (например, меньше 10 мс), игнорируем сигнал — это помеха или дребезг.
4. Если период слишком велик (велосипед стоит), обнуляем скорость.
5. Рассчитываем скорость: 3.6 * (Длина_окружности_в_метрах / Период_в_секундах). Множитель 3.6 нужен для перевода м/с в км/ч.
Для сглаживания показаний используйте скользящее среднее. Не выводите каждое мгновенное значение, иначе цифры будут скакать. Берите последние 5–10 измерений, суммируйте и делите на количество. Это добавит небольшую инерционность, но сделает картинку на дисплее приятной для глаз.
Пример логики фильтрации: если новое значение скорости отличается от предыдущего более чем на 20%, проверьте, не является ли это ошибкой. Резкое изменение скорости физически невозможно из-за инерции велосипеда и райдера. Такой подход отсекает случайные электромагнитные всплески.
Чек-лист по сборке и отладке
- Измерьте длину окружности колеса: поставьте метку на покрышке, прокатите велосипед один полный оборот по земле, измерьте расстояние между отметками. Повторите 3 раза и возьмите среднее.
- Установите магнит на спицу. Для датчика Холла расстояние срабатывания обычно 5–10 мм. Проверьте мультиметром или светодиодом, срабатывает ли сенсор при прохождении магнита.
- Закрепите сенсор на вилке или заднем пере. Используйте термоусадку и силиконовый герметик для защиты от влаги. Вибрация электромотора сильнее, чем у обычного велосипеда.
- Проложите провода вдоль рамы, закрепив стяжками. Избегайте подвижных частей (руль, подвеска). Экранируйте провод от сенсора до контроллера, если длина больше 30 см.
- Загрузите тестовый скетч, выводящий сырые данные периода оборота в Serial-порт. Покрутите колесо рукой, убедитесь, что значения стабильны и нет ложных срабатываний.
- Подключите дисплей, настройте контрастность. Откалибруйте коэффициент длины окружности, сравнив показания с GPS-трекером на смартфоне (приложение Strava или MapMyRide).
Интеграция с системой электровелосипеда: безопасность и удобство
Самодельный спидометр может стать частью большой системы. Например, вы можете реализовать ограничение скорости программно. Если скорость превышает 25 км/ч (лимит для пешеходных зон в ряде стран), микроконтроллер может подавать сигнал на контроллер мотора на снижение мощности. Это делается через аналоговый вход или UART-интерфейс, если протокол контроллера открыт.
Также можно добавить функцию одометра (счётчика пробега). Записывайте общее расстояние в энергонезависимую память EEPROM микроконтроллера каждые 100 метров. Это позволит вести статистику износа цепи и покрышек. Для электровелосипеда особенно важен учёт циклов заряда-разряда, но это уже тема для отдельного блока BMS.
Безопасность монтажа критична. Провода не должны попадать в спицы. Магнит должен быть закреплён так, чтобы центробежная сила на скорости 50 км/ч не оторвала его. Используйте суперклей с активатором или эпоксидную смолу. Обычный двусторонний скотч на электровелосипеде живёт одну поездку.
Питание устройства лучше организовать от основной батареи через замок зажигания или отдельный тумблер. Не оставляйте спидометр включённым постоянно, даже если он в спящем режиме. Токи утечки могут со временем разрядить балансировочную плату BMS, что приведёт к глубокому разряду ячеек.
Разбор от практикующего инженера: При установке датчика Холла на электровелосипед обязательно проверяйте полярность магнита. У сенсоров типа A3144 срабатывание идёт только на один полюс (обычно южный). Если перепутаете, работать не будет. Также рекомендую залить место пайки проводов к сензору силиконовым герметиком — вибрация от мотор-колеса разрушает пайку быстрее, чем коррозия. На стендовых тестах мы наблюдали отказ неизолированных соединений уже через 200 км пробега по гравийке.
Частые вопросы новичков
Можно ли использовать смартфон вместо самодельного спидометра? Можно, но GPS имеет задержку 2–5 секунд и плохо работает в туннелях или среди высоток. Для точного контроля скорости электромотора GPS не подходит. Кроме того, телефон разряжается на морозе и может отключиться в самый неподходящий момент.
Как защитить электронику от дождя и грязи? Используйте корпус из распечатанного на 3D-принтере пластика или подходящую пластиковую коробку. Все вводы проводов уплотняйте резиновыми вводными сальниками. Плату можно покрыть лаком Plastik-71 или аналогичным конформным покрытием. Это защитит от коротких замыканий из-за конденсата.
Что делать, если показания скачут на высокой скорости? Скорее всего, проблема в дребезге контактов (если геркон) или электромагнитных наводках. Попробуйте добавить конденсатор 0.1 мкФ параллельно выходу сенсора. Если используете геркон, замените его на датчик Холла. Проверьте, не проходит ли провод сигнала рядом с фазными проводами мотора.
Хватит ли мощности Arduino для одновременного вывода скорости, пробега и заряда батареи? Да, Arduino Nano легко справляется с этими задачами. Основная нагрузка лежит на библиотеке дисплея. Если вы добавите сложные вычисления или Bluetooth-модуль, убедитесь, что используете эффективный код без лишних задержек. Для мониторинга батареи потребуется делитель напряжения на резисторах.
Как откалибровать спидометр без специальных инструментов? Разметьте на ровной дороге расстояние ровно 100 метров. Проедьте этот участок, считая обороты колеса вручную или посмотрев на сырые данные в мониторе порта. Разделите 100 метров на количество оборотов — получите точную длину окружности. Внесите это число в код.
Создание собственного спидометра для электровелосипеда — это не просто экономия денег, а путь к полному пониманию того, как работает ваш транспорт. Вы перестаёте быть просто пользователем «чёрного ящика» и становитесь инженером своей поездки. Начните с малого: купите датчик Холла и Arduino, соберите макет на столе. Когда увидите первые точные цифры на дисплее, желание довести проект до конца станет непреодолимым. Не бойтесь ошибаться в коде, правьте, тестируйте, катайтесь. И помните: безопасность на дороге зависит не только от тормозов, но и от того, насколько хорошо вы контролируете свою скорость. Удачи в гараже!