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

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

Для точного измерения пройденного пути я сразу подумал использовать GPS. Наивно полагая, что все получится, я установил в свой смартфон HTC Desire HD программу-логгер маршрута GPS и поехал.

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

Поразмышляв немного на эту тему, я пришел к выводу, что соберу-ка я сам GPS спидометр-одометр (далее девайс).

Это позволит убить массу зайцев одним выстрелом: откалибровать бортовик, познать азы работы с GPS приемниками, координатами и сопутствующими расчетами, ну и наконец, пощупать вживую известную платформу Arduino – именно на ней планировалось построить девайс.

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

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

Ну, вернемся к нашим баранам. Сердцем прибора стал борт Arduino Uno :

В качестве приемника GPS я использовал борд SparkFun основанный на чипе :

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

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

Для индикации измерений использовался обычный экран :

Кроме того, раз уж пошла такая пьянка, в систему был добавлен Bluetooth передатчик ():

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

Сам модуль HC-05 доступен по цене 5-7 долларов за штуку и продается везде. К сожалению, работа с ним полна геморроя, потому как выпускает эти модули нынче каждый третий китаец, и делают они их все немного по разному, так, что найти 100%-но соответствующий даташит нереально. В итоге Bluetooth передатчик получается нормально запустить и настроить после нескольких циклов проб и ошибок.

Важно отметить, что для работы передатчика важно подтянуть к питанию ноги reset и wake-up, а также подсоединить к земле все GND.

Ну и наконец – антенна, первая, что попалась под руку:

Все вышеназванные детали были соединены вот таким образом (надеюсь, я не ошибся – девайс строился на лету, так что схему я рисовал по памяти):

В итоге из рассыпухи break-up бордов получилась вот такая лапша:

После того, как девайс был готов, была написана прошивка, последнюю версию которой можно сказать .

Кратенько о прошивке.

При включении, после заставки, на экране высвечивается сообщение No fix detected . Оно будет продолжать высвечиваться, пока девайс не сможет определить собственные координаты.

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

Левой кнопкой можно менять режим отображения данных на экране. Возможности:

    Координаты и азимут движения

    Пробег, текущая и максимальная скорости

    Время и дата

    Напряжение на батарейке

Длительным нажатием на правую кнопку можно обнулить одометр.

Девайс постоянно мониторит напряжение батареи, и как только оно упадет ниже 3.2 вольт, девайс перейдет в режим отображения напряжения на экране. При этом перейти на другой экран станет невозможно.

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

Кроме того, если в процессе работы ухудшится прием GPS и девайс начнет терять сигнал, высветиться сообщение DATA LOSS .

Подсчет пройденного расстояния производится по методу Great Circle distance calculation – HAVERSINE . В силу специфики гражданского GPS, измерения пробега получаются наиболее точными при движении по трассе. Хотя с хорошей антенной и в городе точность получается довольно точными. При контрольной проверке по карте, погрешность составила пару сотен метров на 50 километров пути.

Передача данных по Bluetooth осуществляется параллельно основной работе девайса, и может быть полезна, к примеру, пользователям смартфонов на Android. Точность и чувствительность девайса в разы лучше оных на встроенном в смартфон GPS модуле, и потому, при помощи бесплатной программы Bluetooth GPS можно заставить все остальные программы, пользующиеся GPS для работы использовать данные приходящие по Bluetooth, вместо данных со встроенной антенны.

Кроме того, вместо телефона к Bluetooth можно подключить компьютер и пользоваться им в качестве инструмента для записи и анализа маршрута, в том числе в реальном времени.

После окончательной сборки и проверка девайса, я смог, наконец, с большой точностью откалибровать свой Multitronics.

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

Ну вот пожалуй и все. Буду рад ответить на вопросы.

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

В проекте используется магнитный выключатель (геркон) для измерения скорости вращения колеса велосипеда. 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 Nano, а что касается стрелки, то она будет приводиться в движение небольшим серводвигателем. Данные о скорости движения считываются с колеса с помощью геркона - бесконтактного переключателя. Впрочем, подобным образом можно сделать спидометр и для любого другого транспорта. Самоделка , по словам автора очень простая и требует минимальное количество материалов.

Материалы и инструменты для самоделки:
- микроконтроллер Arduino Nano;
- серводвигатель;
- геркон;
- пластиковые хомуты;
- постоянный магнит (автор использовал от компьютерного жесткого диска);
- светодиод красного цвета;
- один резистор на 1 кОм;
- один резистор на 22 Ом;
- пластиковая коробка для создания корпуса;
- провода;
- паяльник;
- материалы для создания механической части спидометра, винтики, ножницы, горячий клей и прочее.













Процесс изготовления велосипедного спидометра:

Шаг первый. Электронная схема самоделки
Электронная схема устройства очень простая и понятна даже интуитивно. Все, что нужно сделать, это подключить все элементы так, как указано на картинке. На схеме есть резистор на 220 Ом, он используется для подключения светодиода. Что касается резистора на 10 кОм, то через него подключается переключатель.

Сервопривод здесь будет вращаться стрелку спидометра, а когда будет достигаться определенная (по словам автора максимальная) скорость, то на спидометре будет загораться красная лампочка.




Шаг второй. Устанавливаем элементы в корпус
Все компоненты размещены в одном корпусе, здесь установлен и серводвигатель и контроллер. Корпус можно подобрать любой, самое главное, чтобы в него все поместилось. Далее нужно просверлить с наружной стороны два отверстия. Через одно будет выходить вал серводвигателя, а в другое будет установлен красный светодиод, сигнализирующий о максимальной скорости движения. С другой стороны надо не забыть сделать отверстия для того чтобы вывести кабель USB, а также провод от геркона. Когда все сделано, все элементы внутри нужно зафиксировать горячим клеем, особенно это касается серводвигателя. Собирается корпус также горячим клеем, его нужно тщательно загерметизировать от попадания воды.
































Шаг третий. Делаем циферблат
Циферблат можно сделать из листа картона или пластика. Автор не стал рисовать на нем цифры, а просто сделал черточки. В контроллере можно задать любые значения для каждой из этих черточек. К примеру, если стрелка будет на первой, это может означать скорость 5 км/ч, на второй 10 км/ч и так далее. Циферблат приклеивается к пластиковому корпусу. Что касается стрелки, то она устанавливается на вал серводвигателя. Стрелку можно сделать как с картона, так и с пластика или жести.




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


Шаг пятый. Прошивка и настройка устройства

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

Первая отметка у автора означает скорость движения в 8 км/ч, вторая 19 км/ч, а третья 24 км/ч. Что же касается максимальной скорости движения, то она составляет 36 км/ч. При достижении этой величины на спидометре загорается светодиод красного цвета. Но каждый может сам для себя настроить устройство под любую скорость.


Вот и все, устройство готово. Теперь можно кататься и наслаждаться работой интересного стрелочного, но в то же время точнейшего электронного спидометра на базе 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.




Top