Стрелочный спидометр для велосипеда на Arduino

Хотите отследить скорость на велосипедной прогулке? Тогда эта инструкция для вас!

В проекте используется магнитный выключатель (геркон) для измерения скорости вращения колеса велосипеда. Arduino, в свою очередь, рассчитывает скорость перемещения в милях/час и передает эту информацию на LCD дисплей. Установить данную систему вы можете на любой велосипед/колесо. Для этого достаточно указать радиус колеса для правильного расчета.

Необходимые элементы

  • 1 плата Arduino
  • 1 геркон
  • 1 резистор на 10 кОм, 1/4 ватта
  • 1 Батарея на 9 вольт
  • 1 Провод
  • 1 Макетная плата для распайки
  • 1 LCD дисплей
  • 2 Переключателя
  • Дополнительные материалы:
  • Фанера, винты и т.п.
  • Программа для Arduino Arduino IDE

Электросхема

Электросхема проекта приведена ниже.

Она состоит из трех переключателей:

1. Один подключен к питанию 9 вольт

Установка Arduino и обвязки в бокс

Переключатели фиксируются в корпусе с помощью гаек. LCD экран садится на клей или с фиксируется с помощью винтов на передней панели бокса. Arduino и Protoboard устанавливаются рядом с бетарейкой. Опять-таки, можно использовать клей для фиксации или предусмотреть крепеж на винтах.

Велосипед со спидометром на дороге!

Не забывайте про правила поведения велосипедистов на дороге! Несмотря на ваш прекрасный Arduino спидометр, следите за транспортом и людьми!


Оставляйте Ваши комментарии, вопросы и делитесь личным опытом ниже. В дискуссии часто рождаются новые идеи и проекты!

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


Инструменты и комплектующие для сборки

Инструменты и комплектующие для установки

Коробочка от губки для обуви
Сверло, ножницы, паяльник
Плотный картон, Маркер
Зубочистка, краска
Термоусадочная трубка
Клеевой пистолет и суперклей


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


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


Сам спидометр нужно закрепить на рулевой трубке, провод датчика лучше всего пропустить вдоль тросика переднего тормоза. В нижней части вилки нужно установить датчика холла, а магнит - на спице.

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

Здесь описывается цифровой прибор, измеряющий скорость движения автомобиля и частоту вращения коленвала его двигателя. Индикатором служит ЖК-дисплей типа 1602А, он стандартный, на основе контроллера HD44780.

Обозначение 1602А фактически значит, что он на две строки по 16 символов в строке. Индикатор был куплен на «Aliexpress», найден по запросу «HD44780» (цены от 81 рубля). Как уже сказано, у данного индикатора есть две строки. Так вот, в верхней строке прибор показывает скорость движения автомобиля, а в нижней - частоту вращения коленвала двигателя.

В отличие от многих бортовых компьютеров, таких как «Орион-БК» и подобных, а так же, приборов со светодиодными семисегментными индикаторами, этот ЖК-дисплей при включенной подсветке дает очень четкое изображение, отлично видное как на свету, так и ночью в темноте, что особенно важно при автомобильной эксплуатации.

В основе схемы прибора лежит готовая плата ARDUINO UNO, на которой расположен микроконтроллер ATMEGA328, а так же вся его «обвязка», необходимая для его работы, включая USB-програм-матор и источник питания.

Стоимость ARDUINO UNO на том же «Aliexpress» начинается от 200 рублей. Описание платы ARDUINO UNO, а так же программного обеспечения для неё, и подключения к персональному компьютеру приводится автором в Л.1, так что, если кто не в курсе что такое ARDUINO и «с чем его едят», обязательно прочтите сначала статью в Л.1.

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

Принципиальная схема

Прибор может работать только в автомобиле с инжекторным двигателем (в карбюраторных датчика скорости нет, а датчик зажигания есть далеко не во всех). Схема прибора показана на рисунке 1. На этом рисунке плата ARDUINO UNO показана схематично как «вид сверху».

Рис. 1. Принципиальная схема спидометра и тахометра на базе Arduino.

Для согласования портов с датчиками используются каскады на транзисторах VT1 и VT2. Так как питание поступает на прибор с выхода замка зажигания он работает только при включенном зажигании. Датчик скорости, равно как и датчик зажигания автомобиля представляют собой источники импульсов, частота которых зависит от вращения механических деталей автомобиля.

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

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

Программа

Программа на C++ с подробными комментариями приведена в таблице 1. Действие программы основано на измерении периода импульсов, поступающих с датчиков, и последующего расчета скорости и частоты вращения коленвала.

Таблица 1. Исходный код программы.

Для работы используется функция pulseln , которая измеряет в микросекундах длительность положительного либо отрицательного перепада входного импульса. Так что, для того чтобы узнать период нужно сложить длительность положительного и отрицательного полупериодов.

где Т - период в секундах, a F - скорость в км/час. Поскольку период измерен в микросекундах фактически формула:

Если датчик на 2500 импульсов на км (японский), то формула будет такой:

Соответственно, учитывая, что период измерен в микросекундах:

Для измерения частоты вращения коленчатого вала используется формула:

где Т - период в секундах, a F - частота вращения коленвала в оборотах в минуту. Поскольку период измерен в микросекундах фактически формула такая:

Затем, результаты выводятся в соответствующие строки ЖК-дисплея. Единицы измерения указаны как «km/h» и «оЬ/тіп» (если не нравится, можете изменить).

Если входного сигнала нет, например, включили зажигание, но двигатель не завели, не поехали, то в строках, где нет сигнала, будет надпись «inf».

В принципе, налаживания не требуется. Однако, если неизвестно сколько импульсов на километр дает датчик скорости конкретного автомобиля, это нужно предварительно выяснить.

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

Но лучше все же узнать параметры датчика скорости. А потом рассчитать число, которое в программе делится на период. Обозначим это число X, а количество импульсов на километр N. Тогда X можно рассчитать по такой формуле:

X = 3600000000 / N

Например, если датчик дает, допустим, 2500 импульсов на километр:

Х= 3600000000 / 2500 = 1440000

Или, если датчик дает 6000 импульсов на километр:

Х= 3600000000 / 6000 = 600000

В заключение

Если прибор дает сбои, может потребоваться оптимизация режима работы входных каскадов на транзисторах VT1 и VT2, соответственно, подбором сопротивлений резисторов R3 и R6, а так же емкостей конденсаторов С2 и СЗ.

Каравкин В. РК-12-16.

Литература:

1. Каравкин В. Ёлочная мигалка на ARDUINO как средство от боязни микроконтроллеров». РК-11-2016.

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

Для подсчета скорости вращения колеса используется бесконтактный магнитный выключатель (геркон). При прохождении мимо него постоянного магнита, сигнал поступает на Arduino , здесь то и происходит расчет скорости в милях или километрах в час, как результат на дисплее появляются цифры, они и показывают скорость. Установить такое устройство можно на любое колесо, причем даже не велосипедное. Главное - правильно указать радиус колеса, ведь именно на основе этих данных происходит расчет скорости.

Материалы и инструменты для изготовления:
- микроконтроллер Arduino;
- магнитный выключатель (геркон);
- резистор (10 кОм, 1/4 ватта);
- провод;
- батарея на 9В;
- LCD дисплей;
- макетная плата для распайки;
- два переключателя.

Еще понадобится фанера, винты, некоторое количество инструмента. Ну и само собой программное обеспечение Arduino IDE.

Процесс сборки:

Шаг первый. Электрическая схема спидометра
Всего в схеме используется три переключателя. Один переключатель управляет питанием 9В. Второй переключатель отвечает за работу LCD экрана, с помощью него его можно включать или выключать. Ну и наконец, магнитный выключатель геркон, он замыкает цепь в том случае, если колесо делает один полный оборот.
В проекте используется LCD монитор фирмы Parallax, он подключается к плате с помощью трех пинов. На один пин подается 5В, второй подключается к земле, ну а третий выход является цифровым, он отмечен цифрой 1.
Резисторы на 10 кОм играют в системе роль защиты, чтобы не произошло перегрузки. Нельзя подключать землю и плюс 5В к Arduino напрямую.


Шаг второй. Распаиваем шилд для спидометра
На макетной плате нужно установить три ряда коннекторов, они должны сесть на плату таким образом, как это видно на картинке.




Шаг третий. Установка и подключение геркона
Геркон представляет собой два элемента, это переключатель и постоянный магнит. С геркона выходит два провода, когда на него действует магнитное поле, то небольшой магнитный элемент внутри переключателя перемещается и замыкает цепь.
Между пином A0 и землей на макетной плате нужно установить резистор 1 кОм. Концы провода подключаются к выходам A0 и 5V.
















Что касается механической части, то геркон устанавливается следующим образом. На спицу колеса крепится постоянный магнит. Сам же геркон устанавливается на вилку колеса напротив магнита. Между герконом и магнитом должно быть небольшое расстояние, иначе он не будет работать. Далее провода подключаются к выходам распаянной платы, и происходит проверка работоспособности. Когда магнит будет проходить возле геркона, Arduino должна выдать ~ 1023. Если система не работает, будет отображаться 0.






В оболочке Arduino IDE нужно открыть серийный монитор (Tools - Serial Monitor) и запустить проверку. Если сигнала при вращении колеса нет, нужно заменить магнит на более мощный или же сократить расстояние между датчиком и магнитом.
Если сигнал есть, можно загружать код для проверки. Когда колесо не крутится, должно отображаться значение 0.00. При вращении колеса скорость должна отображаться в милях в час.





Шаг четвертый. Проверка и установка LCD

Чтобы установить дисплей, нужно взять дополнительный шилд. Рельсу нужно припаять к контактам «мама» на выходе protoshield. Для подключения экрана используется три контакта, он должен быть плотно установлен на рельсах.










На задней стороне LCD экрана можно найти два переключателя, а также потенциометр. Переключатели нужно перевести в такое положение, как указано на картинке. Потенциометр же используется для ручной регулировки контраста экрана.








После установки дисплей можно проверить. Если все сделано правильно, то на экране появится надпись «Hello World». Вполне возможно, что с первого раза это не получится и придется заново «перезалить» скетч.

Шаг пятый. Подсветка спидометра
Теперь нужно подсоединить тумблер подсветки. Это делается так, как указано на картинках. Нужно не забыть соединить резистор на 10 кОм с зелеными и черными проводами. Далее эти провода подключаются к одному контакту выключателя, а ко второму подключается красный провод.
Красный провод является питанием, он подключается к Arduino 5V. Зеленый провод подключается к D2, а другая сторона резистора к земле.






Шаг шестой. Питание спидометра
В цепи с питанием нужно использовать переключатель. Черный контакт от батареи подключается к земле, а плюсовой через переключатель подключается к выходу Vin.




Шаг седьмой. Заключительный этап сборки и установка спидометра
В качестве корпуса используется бокс, который вырезается из фанеры. Элементы корпуса вырезаются с помощью лазерной резки по спроектированным шаблонам. Далее все элементы соединяются между собой с помощью клея. В заключении фанеру красят или покрывают лаком для защиты и придания внешнего вида.

Представляю проект велоспидометра, который позволяет следить за скоростью езды на велосипеде при помощи Arduino. Для измерения скорости вращения одного колеса используется магнитный выключатель (также называемый геркон). Контроллер Arduino рассчитывает скорость и выводит эту информацию на ЖК-дисплей, закрепленный на руле. Устройство совместимо с любым велосипедом/колесом, необходимо только ввести радиус колеса в прошивку для калибровки.

Список деталей:
(1x) Arduino Uno REV 3.
(1x) Геркон.
(1x) 10КОм 0.25Вт резистор.
(1x) Батарея 9В.
(1x) Разъемы для 9В батареи.
(1x) Макетная плата.
(1x) ЖК-дисплей с подсветкой Parallax 27977-RT.
(x2) Тумблер.
(2x) BLS штырьки.
(1x) BLS разъемы.

Дополнительные материалы:
Провод №22.
Припой.
Наждак.
Фанера.
Столярный клей.
Термоклей.
Винты.
Кабельные стяжки.

Принципиальная схема

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

Parallex LCD подключается к Arduino при помощи только трех контактов: 5В, GND и последовательного цифрового выхода (TX) – 1 контакт Arduino.

Резисторы 10 кОм подключены к геркону и выключателю подсветки во избежание избыточного тока между 5В и GND Arduino.

Припаяйте на макетную плату три линии BLS штырьков как показано на фотографии для подключения Arduino.

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

Припаяйте токоограничительный 10кОм резистор между A0 и GND на макетной плате. Припаяйте длинные провода к А0 и 5В – они будут проведены по велосипеду и подключены к геркону.

Установка геркона на колесо

Установите магнит и геркон на ваш велосипед при помощи изоленты (подходит любое колесо). Как видно на фотографии, магнит установлен на одну из спиц колеса, геркон на раму велосипеда. То есть каждый раз, когда колесо делает полный оборот, магнит проходит мимо геркона, замыкая его. Подключите к геркону провода, ранее припаянные к плате. Геркон неполярный, поэтому как его подключать - не имеет значения.

Используйте код приведенный ниже для проверки. Когда магнит на колесе будет проходит мимо геркона, Arduino будет выдавать значение ~1023, в противном случае значение будет ~0. Откройте Serial Monitor (монитор последовательного порта) (Tools >> Serial Monitor) в Arduino IDE, чтобы проверить это. Если магнит не влияет на геркон, попробуйте переставить его или использовать более мощный.

#define reed A0 //Номер пина к которому подключен геркон int reedVal; void setup(){ Serial.begin(9600); } void loop(){ reedVal = analogRead(reed); // считываем знаение A0 Serial.println(reedVal); // выводим в Serial Monitor delay(10); // пауза 10 мс }

Прошейте Arduino. Включите Serial Monitor (монитор последовательного порта). Он должен показывать 0.00. Начните крутить колесо, и вы увидите скорость миль/ч, изменяющуюся каждую секунду.

Я использовал ЖК-дисплей с последовательным интерфейсом.
Припаяйте линию BLS разъемов на обратную сторону (с контактами) макетной платы. Три разъема будут использоваться для подключения ЖК-дисплея. ЖК-дисплей хорошо в станет в эти разъемы.

Подключите 5В, GND, и TX (1 цифровой вывод Arduino) от Arduino к разъему дисплея. Смотрите на подпись выводов ЖК-дисплея, чтобы сделать всё правильно.

В нижней части ЖК-дисплея Parallax есть два переключателя и потенциометр. Потенциометром контролируется контрастность дисплея. Для правильной работы переключатели должны быть установлены как на фотографии.

Для тестирования ЖК-дисплея используйте следующий код. Почему-то на моем ЖК-дисплее начинают появляться случайные символы во время прошивки, но они исчезают после того, как я пере подключаю USB-кабель. Я думаю, что это является помехой при связи Arduino с компьютером через 1 цифровой контактный (TX) во время прошивки.

При включении на ЖК-дисплее должна отображаться надпись "Hello World".

Void setup() { Serial.begin(9600); pinMode(1,OUTPUT); // TX-линия Serial.write(12); // Очищаем Serial.write("Hello World"); // Вывод надписи } void loop() { }

Подключите тумблер как показано на фотографии. Припаяйте резистор 10 кОм и зеленый провод к одному контакту, а красный провод к другому.

Подключите красный провод к 5В Arduino и к GND через резистор, а зеленый провод к D2.

Программа

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

Измерьте радиус колес (в дюймах) и вставить его в строку: float radius = """;

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

Батарея

Соедините разъем для батареи и тумблер последовательно, как показано на фотографии. Подключите красный провод от выключателя к Vin Arduino, а черный провод от разъема для батареи к GND Arduino.

Корпус

Я вырезал корпус для своего проекта при помощи 1/4" лазерного резака 120 Вт. Размеры корпуса 3,5"x4"x2". Я смоделировал корпус в AutoCAD и сделал файлы для лазерной резки (с шиповым соединением) в Autodesk 123D Make. Затем я добавил два отверстия для тумблеров и прямоугольное отверстие для ЖК-дисплея. Также добавил несколько отверстий в нижней части корпуса для облегчения крепления к велосипеду.