Корректор показаний спидометра ардуино

Добавил пользователь Валентин П.
Обновлено: 19.09.2024

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

Корректор электронного (стрелочного) спидометра на ARDUINO

Корректор электронного (стрелочного) спидометра на ARDUINO

Добрый день!
Я тут пытался найти исходники корректора спидометра в интернете. В итоге сделал все сам, ибо нету. Нашел только исходник спидометра и применил его в своём проекте.

Транзистор я применил какой валялся в ящике - kc238b, кажется это аналог обычного кт315, точно не помню.
3 цифровой pin на ARDUINO это сигнал с датчика скорости (у меня на бусе применен датчик фаз от 8 клапанного ВАЗ)
4 цифровой pin на ARDUINO это выход на стрелочный спидометр.
Спидометр я применил от УАЗ. Он дешевый и его легко встроить в нашу приборку вместо родного тросового.
A0 - аналоговый вход, сюда подключается потенциометр для регулировки. Можно любой.
Я применил 3,3kOm (контакты слева направо GND/СИГНАЛ/+5V)

Корректор электронного (стрелочного) спидометра на ARDUINO

То есть это электронный редуктор.
Правильно?
Можно сопрячь любой датчик скорости с любым спидометром?
Электронным естественно.

Корректор электронного (стрелочного) спидометра на ARDUINO

Корректор электронного (стрелочного) спидометра на ARDUINO

Хорошая штука, эта плата способна ещё и корректировать тахометр, в случае изменений количества цилиндров. Вещь!

Корректор электронного (стрелочного) спидометра на ARDUINO

У меня в планах сделать в итоге, повесить ардуину (arduino pro mini) в приборку, чтобы она не только мерила скорость, но и мерила количество бензина в баке от ВАЗ датчика и согласовывала со стрелкой в нашей приборке.
А также хочу на её основе климат-контроль в бусе сделать. Пинов свободных много - пусть замеряет температуру в салоне и заслонками рулит.
Если хватит её ресурсов, чтобы это все одна плата делала.

Можно хоть на сигнал от датчика ABS повесить (а там много зубов на оборот, около 60 шт). Только коэффициент правильно подобрать.
Любой репер можно, с любым количеством зубов. Главное чтобы датчик давал квадратный сигнал от 0 до 5 вольт и подобрать коэффициент умножения.

A0 pin ардуино - вход от потенциометра регулятора спидометра (у меня применен 3,3кОм)
2pin ардуино - вход - сигнал тахометра от ЭБУ двигателя
3pin ардуино - вход - сигнал от датчика скорости
4pin ардуино - выход - на спидометр в приборку (соединять только через транзистор как по схеме выше)
7pin ардуино - выход - на тахометр в приборку (соединять только через транзистор как по схеме выше)

Корректор электронного (стрелочного) спидометра на ARDUINO

Артур писал(а): ↑ 19 фев 2020, 00:09 А также хочу на её основе климат-контроль в бусе сделать. Пинов свободных много - пусть замеряет температуру в салоне и заслонками рулит.
Если хватит её ресурсов, чтобы это все одна плата делала.

должно хватить. Люди "умные" дома собирают на Ардуино и где-то я видел в инете проект человек делал что-то вроде Января для управления двиглом.

Я не сильно силен в электронике (сын помогает), но как Ардуина на помехи будет устойчива в авто? Делал как-то управление потенциометром скоростью маленького движка и оказалось, что ее может изрядно глючить, даже если движок сравнительно далеко от платы (около 1,5м)

п.с. мысль в голову: если планируешь решать много задач на Ардуино, то может быть имеет смысл поставить где-то TFT панельку сенсорную? сейчас можно сравнительно недорого взять 10-12". Причем программа для создания визуалиции прилагается и там уже много заготовленных кнопок, индикаторов и т.п. с досточно простой привязкой к контроллеру

________________________________________________________

Корректор электронного (стрелочного) спидометра на ARDUINO

Корректор электронного (стрелочного) спидометра на ARDUINO

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

Корректор электронного (стрелочного) спидометра на ARDUINO

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

Корректор электронного (стрелочного) спидометра на ARDUINO

Да. Задействованные в работе ноги не должны висеть в воздухе никогда. Иначе на них может появляться потенциал, который Ардуина может интерпретировать как полезный сигнал и что-то включить-выключить не по плану.
Сам когда на ворота автоматику делал столкнулся с этим.
Сидишь себе такой дома, а ворота взяли и открылись.
Это при том что даже внутренний "виртуальный" подтяжечный резистор был включен на этой ноге.
Пришлось отключить и повесить настоящую подтяжку.


Всем привет!
Уже прошло достаточно много времени, как сделал первый вариант адаптера. Показал он себя с самой лучшей стороны, разошлось их много. Как мне скромно кажется — одна из лучших моих поделок ;)) Но нужно двигаться дальше.Да и конкуренты не дремлют, вон сколько находится без особых заморочек.


Отставать нельзя ))
Представляю версию — 2.

Вверху, актуальная на данный момент- первая, внизу — вторая. Пока еще на дешевом, "макетном" гетинаксе.
Что это вообще за-зверь и для чего он нужен, подробно рассказал в описании первого варианта.
При всех достоинствах первого варианта, был один недостаток который снижал область его применения. Работал он только с "цифровым" сигналом от датчиков Холла, в виде обычного прямоугольника.
Новый вариант исправляет этот недостаток. Теперь можно подключать как цифровые датчики Холла, так и индуктивные, с аналоговым синус-сигналом: индуктивные датчики скорости, абс, датчик вала и т.п. которые связаны со-скоростью движения автомобиля. Этот сигнал можно "привязать" к приборке или ЭБУ, при этом скорректировать, чтобы показания были верные. Немного расскажу, для тех кто не особо "в теме".

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


Пусть сам адаптер настроен с коэффициентом 1.00, то есть он не вносит никаких правок в сигнал (про настройку расскажу ниже).
Вначале датчик Холла (почти все отечественные авто).


Работать (корректировать) с таким сигналом может и первый вариант.
Теперь вместо цифрового Холла, подключаем индуктивный датчик, например ABS. Тут уже нужен вариант-2, он умеет "переваривать" аналог и выдавать нормальный цифровой сигнал.
Автомобиль начинает двигаться, скорость небольшая. Амплитуда и частота сигнала небольшая. Но адаптер его прекрасно видит и обрабатывает, чего первый вариант, увы, не умеет.


Автомобиль разгоняется — амплитуда и частота сигнала растет.


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


Но на выходе адаптера все тот же "красивый" сигнал. Меняется только частота в зависимости от скорости.
Теперь, предположим, спидометр сильно завышает показания — нужно скорректировать. Настраиваем адаптер на уменьшающий частоту коэффициент.


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

Теперь как настроить адаптер. В принципе, оно почти не отличается от настройки первого варианта, но все же есть "моменты" )


И т.д. до 78, что будет означать – коэффициент 8.0


Таким образом установить значение коэффициента с точностью до 0.1 и 0.01, порядок установки значения не имеет – во время работы корректора они суммируются, например: 0.9 + 0.03 = 0.93
Для этого необходимо:
отключить питание корректора (выключить зажигание) – нажать и удерживать нужную кнопку – включить питание (зажигание), светодиод начнет мигать – отсчитать сколько нужно и отпустить кнопку. Светодиод мигнет несколько раз быстро – значение сохранено в энерго-независимой памяти, корректор перейдет в нормальный режим работы.

А как рассчитать изначально, какой коэффициент нужен?
Расчет коэффициента.
Чтобы рассчитать требуемый коэффициент есть не сложная формула:
К=Vd/Vk
где К-коэффициент коррекции; Vd — скорость до коррекции; Vk-скорость после коррекции.

2) спидометр показывает 80км\ч, а должен 60км\ч; K=(80/60)=1.33 Значит нужно установить коэффициент 1.33

Может показаться что это сложновато… но в реальности все делается легко и быстро. Ради интереса, приведу небольшой кусочек из инструкции одного устройства-конкурента, оцените )

"Пункт меню №5 . По аналогии с предыдущими пунктами, после пяти раз мигания светодиода, повторить, нажав кнопку выбора пять раз, после чего нажать кнопку подтверждения. Устройство подтвердит выбор, загоревшись на 3 секунды. При выборе пятого пункта меню переходим к установке коэффициента. Это происходит следующим образом: Через две секунды после выбора пятого пункта меню светодиод загорится один раз. При этом в течение пяти секунд, нажатием кнопки выбора от нуля (не нажата) до девяти и последующим нажатием кнопки подтверждения, вводится старшая (целое значение) цифра коэффициента. Например, при установке коэффициента 4.060 необходимо нажать четыре раза кнопку выбора и один раз кнопку подтверждения. При понижающем коэффициенте 0.578 нужно сразу, без нажатия кнопки выбора, нажать кнопку подтверждения, т.е. записать НОЛЬ."

и т.д на пару листов! Как говорится: без стакана, процедуру — не начинать! :)

В этом варианте есть еще пара "сервисных" настроек.
Доп. Настройки:
-до подачи питания, нажать и удерживать две кнопки одновременно – будет установлен коэффициент 1.0, светодиод мигнет трижды, кнопки отпустить;
— если продолжать удерживать две кнопки, через 2сек. начнется установка скорости отсчета, начнет мигать светодиод, чем больше вспышек – медленнее отсчет коэффициента (по умолчанию – 2).

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

Немного о "железе". Вот так выглядит начинка устройства.


Вверху, с наклейкой — первый вариант, внизу — практически готовый прототип вар.-2.
Платы я все делаю сам, на ЧПУ, в этом деле руку набил, станок "затюнил" (это другая история, как нибудь покажу) и считаю качество на должном уровне. И заказывать у китайцев нужды не испытываю. Да у них красивая зеленая маска, надписи… Получается — "устройство заводского изготовления". Можно самому и маску — сейчас это не проблема. Но я обычно покрываю защитным лаком, работает он на отлично и жалоб не было. Устройства у меня простые, платы не сложные, на "мега-проекты" я не претендую — мне хватает своей "ниши".
Не, ну если разве кто закажет партию в пару-тройку сотен — закажем у китайцев и "будет заводское изготовление" :) А так, заявления о "заводских" устройствах, лично меня, умиляют )))) в моем понимании "заводское" — это нечто другое… Не удержусь, приведу пример. Картинка-реклама аналогичного устройства с известного сайта объявлений:


Вроде все красиво…
Но кто "в теме" прекрасно увидят "ардуино-стайл" :) О питании устройств для авто-применения автор еще ничего не слышал, компоновка элементов, трассировка…нет ее… но блин гордое — "заводское" )))
Ну да ладно, занесло меня на повороте, извиняюсь… Давно не писал и вот прорвало ))
Не судите строго, всем добра!

p\s снял небольшой ролик о работе и настройке девайса.

Сразу отмечу, что с программированием на Вы, так что сильно не пинайте если не правильно преподнёс информацию.

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

Вопрос в следующем.

Я установил датчик холла, подключил на мекетной плате к Arduino Nano спидометр.


Собрал из кусков кода на просторах интернета скетч для вывода показаний спидометра, положения селектора АКПП и тахометра на Oled диспей. Код для вывода показаний спидометра на дисплей такой:

Но хотелось запустить стрелочный указатель спидометра. Нашёл схему подключения


выяснил при помощи данного кода:

, что при частоте 18 Гц показания спидометра равны 10 км/ч.

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

Буду признателен за подсказкку.

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

Если 18Гц это 10км/ч то 360Гц-200км/ч край шкалы спидометра.

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

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

Спасибо. Направление понятно.

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

Ну как собрал спидометр для индейца? расскажи что сделал, как запустил, тоже есть необходимость для дизеля сделать одометр, только обратный, чтобы считал когда менять масло/расходники по пробегу

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

Собрал. Считывает обороты с ТНВД, скорость с РК, и положение селектора АКПП, ещё добавил сенсор окружающей t. Микросхему на которой собирал не помню, она с двумя входами для считывания импульсов с датчиков холла. Сейчас у меня РК отГаз 66, надо делать зубчатое колесо для датчика считывающего обороты кардана, на этом месте остановился. Я сейчас далеко от дома, буду к середине октября, могу точно сказать марку микросхемы и скинуть скетч.

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

Я не программист и Jeep это не основная машина, а больше хобби по этому проект затянулся. Если кто укажет на косяки в коде, буду признателен.

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

Для считывания оборотов двигателя с ТНВД и скорости пришлось сделать плату на микросхеме MAX9924

на РК установил датчик с ABS для считывания оборотов с карданного вала.

А что , абс датчик (Индейский) дайет 5в? я не пробовал с ним ничего вообще

Но на карданный вал необходимо устанавливать зубчатый венец, вот на изготовлении зубчатого венца пока работа остановилась

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

импульсы с датчика скорости решил подать прямо на пин (он воспринимает 5V импульсы) стрелочного указателя скорости

Так и не понял от куда взял импульсы?

Я не программист и Jeep это не основная машина, а больше хобби по этому проект затянулся. Если кто укажет на косяки в коде, буду признателен.

да тоже самое, связался потому что было куда что впихнуть и скучно, а тут батя говорит "ну раз можешь, то давай делай обратный счетчик километрожа" чтобы замену масла не прое.. не проглядеть и вот думаю, у нас родной датчик скорости на РК от 8в питается, как преобразовать так чтобы не потерять импульс ХЗ

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

Микросхема MAX9924 преобразует синусоидальные импульсы от датчиков холла (датчиков ABS и ТНВД) с выходом 0,3-0,5В в прямоугольные импульсы 5В понятные микроконтроллеру.

Про установку на кардан не правильно выразился, на флянец карданного вала. Импульсы с установленного датчика ABS (в моём случае это уже датчик скорости) на флянце кардана, поступают на микросхему MAX9924 и уже усиленный сигнал можно подавать на стрелочный указатель скорости Jeep минуя микроконтроллер, но при этом надо рассчитать количество импульсов (зубцов на венце) для правильного отображения скорости.

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

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

Сразу отмечу, что с программированием на Вы, так что сильно не пинайте если не правильно преподнёс информацию.

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

Вопрос в следующем.

Я установил датчик холла, подключил на мекетной плате к Arduino Nano спидометр.


Собрал из кусков кода на просторах интернета скетч для вывода показаний спидометра, положения селектора АКПП и тахометра на Oled диспей. Код для вывода показаний спидометра на дисплей такой:

Но хотелось запустить стрелочный указатель спидометра. Нашёл схему подключения


выяснил при помощи данного кода:

, что при частоте 18 Гц показания спидометра равны 10 км/ч.

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

Буду признателен за подсказкку.

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

Если 18Гц это 10км/ч то 360Гц-200км/ч край шкалы спидометра.

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

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

Спасибо. Направление понятно.

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

Ну как собрал спидометр для индейца? расскажи что сделал, как запустил, тоже есть необходимость для дизеля сделать одометр, только обратный, чтобы считал когда менять масло/расходники по пробегу

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

Собрал. Считывает обороты с ТНВД, скорость с РК, и положение селектора АКПП, ещё добавил сенсор окружающей t. Микросхему на которой собирал не помню, она с двумя входами для считывания импульсов с датчиков холла. Сейчас у меня РК отГаз 66, надо делать зубчатое колесо для датчика считывающего обороты кардана, на этом месте остановился. Я сейчас далеко от дома, буду к середине октября, могу точно сказать марку микросхемы и скинуть скетч.

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

Я не программист и Jeep это не основная машина, а больше хобби по этому проект затянулся. Если кто укажет на косяки в коде, буду признателен.

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

Для считывания оборотов двигателя с ТНВД и скорости пришлось сделать плату на микросхеме MAX9924

на РК установил датчик с ABS для считывания оборотов с карданного вала.

А что , абс датчик (Индейский) дайет 5в? я не пробовал с ним ничего вообще

Но на карданный вал необходимо устанавливать зубчатый венец, вот на изготовлении зубчатого венца пока работа остановилась

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

импульсы с датчика скорости решил подать прямо на пин (он воспринимает 5V импульсы) стрелочного указателя скорости

Так и не понял от куда взял импульсы?

Я не программист и Jeep это не основная машина, а больше хобби по этому проект затянулся. Если кто укажет на косяки в коде, буду признателен.

да тоже самое, связался потому что было куда что впихнуть и скучно, а тут батя говорит "ну раз можешь, то давай делай обратный счетчик километрожа" чтобы замену масла не прое.. не проглядеть и вот думаю, у нас родной датчик скорости на РК от 8в питается, как преобразовать так чтобы не потерять импульс ХЗ

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

Микросхема MAX9924 преобразует синусоидальные импульсы от датчиков холла (датчиков ABS и ТНВД) с выходом 0,3-0,5В в прямоугольные импульсы 5В понятные микроконтроллеру.

Про установку на кардан не правильно выразился, на флянец карданного вала. Импульсы с установленного датчика ABS (в моём случае это уже датчик скорости) на флянце кардана, поступают на микросхему MAX9924 и уже усиленный сигнал можно подавать на стрелочный указатель скорости Jeep минуя микроконтроллер, но при этом надо рассчитать количество импульсов (зубцов на венце) для правильного отображения скорости.

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

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

В этой статье мы рассмотрим создание спидометра на основе платы Arduino, способного измерять скорость движения велосипеда или любого другого транспортного средства и передавать значение этой скорости с помощью технологии Bluetooth на Android приложение на смартфоне. Приложение на Android мы разработали с использованием программной среды Processing. Устройство питается от литиевой батарейки (аккумулятора) 18650, поэтому легко устанавливается и транспортируется на любом движущемся средстве. Также в качестве бонуса в данное мобильное приложение мы добавили функцию зарядки мобильного телефона. Поэтому данное устройство также можно использовать как внешний аккумулятор (power bank) для вашего мобильного телефона во время движения транспортного средства поскольку 18650 имеет высокую плотность заряда и его можно легко заряжать и разряжать.

Внешний вид спидометра на основе платы Arduino

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

Необходимые компоненты

Аппаратное обеспечение

  1. Плата Arduino Pro Mini (5V 16MHz) (купить на AliExpress).
  2. FTDI плата (также для программирования Arduino Pro Mini можно использовать плату Arduino UNO).
  3. Повышающий конвертер с 3V до 5V (DC-DC) с выходом для USB зарядки.
  4. Модуль заряда литиевой батареи (аккумулятора) TP4056 (купить на AliExpress).
  5. Bluetooth модуль (HC-05/HC-06) (купить на AliExpress).
  6. Датчик Холла (Hall effect sensor) US1881/04E (купить на AliExpress).
  7. Литиевая батарея (аккумулятор) 18650 (купить на AliExpress).
  8. Небольшой кусок магнита.
  9. Перфорированная плата (Perf Board).
  10. Соединительные колодки (папа и мама).
  11. Набор для пайки.
  12. Небольшая закрытая коробка чтобы разместить в ней наше устройство

Программное обеспечение

Arduino IDE
Processing IDE с android ADK (только если вы самостоятельно хотите разрабатывать мобильное приложение для этого проекта)
Windows/Mac PC
Мобильный телефон (смартфон) на Android

Принцип измерения скорости с использованием датчика Холла и платы Arduino

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

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

Каждый раз, когда рядом с датчиком Холла будет обнаруживаться магнит будет генерироваться прерывание в плате Arduino. В нашем проекте мы будем использовать непрерывный таймер на основе функции millis() и вычислять время необходимое для совершения колесом двух полных оборотов (для минимизации ошибки) с помощью следующей формулы:

Timetaken = millis() – pevtime;

Поскольку мы теперь знаем это время мы можем рассчитать число оборотов в минуту (rpm, rotations/revolutions per minute) по следующей формуле:

rpm = (1000/timetaken) * 60;

где 1000/timetaken – это число оборотов в секунду (rps, Revolutions per second), мы его умножаем на 60 чтобы конвертировать число оборотов в секунду в число оборотов в минуту (rpm).

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

v= radius_of_wheel * rpm * 0.37699;

После расчета скорости Arduino передает ее значение к нам на смартфон при помощи Bluetooth модуля.

Работа схемы

Схема устройства представлена на следующем рисунке.

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

Последовательность сборки главной платы спидометра на основе Arduino

Вид основной платы спидометра с подключенными соединительными проводами

Когда все соединения на ней сделаны ее можно протестировать с использованием литиевой батареи (аккумулятора) 18650. По своей сущности литиевые батареи в некоторой степени взрывоопасны, поэтому их следует устанавливать, соблюдая меры предосторожности. По этой причине мы и используем в нашем проекте модуль заряда литиевых аккумуляторов TP4056, который обеспечивает защиту при заряде и разряде аккумулятора, а также защиту от смены полярности. Поэтому теперь наш аккумулятор можно будет без проблем заряжать с использованием обычной micro USB зарядки и безопасно разряжать. Некоторые важные характеристики модуля TP4056 приведены в следующей таблице.

Параметр Значение (на одну ячейку)
Under Voltage cut-off 2.4V
Over voltage Cut-off 4.2V
Ток заряда 1A
Защита от превышения напряжения и смены полярности
Микросхемы TP4056 (charger IC) и DW01 Protection IC
Светодиодные индикаторы красный - идет заряд, зеленый - зарядка окончена

Теперь займемся платой с датчиком Холла, которая будет содержать всего два компонента – сам датчик Холла и резистор на 10 кОм. Соединения на ней показаны на схеме устройства, приведенной выше. После подключения к ней соединительных проводов мы должны получить примерный вид устройства, показанный на следующем рисунке:

Внешний вид платы с датчиком Холла для спидометра

Следующий ключевой шаг в сборке нашего проекта – это соединение аккумулятора 18650 к контактам B+ и B- модуля TP4056 с использованием провода. Поскольку литиевые аккумуляторы взрывоопасны, то крайне не рекомендуется использовать здесь паяное соединение. Хотя ряд радиолюбителей все же делают это, помните о том, что в этом случае вы подвергаете ваше устройство риску повреждения. Простой способ преодолеть это – использовать магниты как показано на следующем рисунке.

Правильное подключение соединительных проводов к литиевому аккумулятору

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

Программирование Arduino

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

Каждый раз когда датчик Холла обнаруживает вблизи себя магнит, он генерирует прерывание. Функция magnet_detect() будет вызываться для обработки этого прерывания. В этой функции производится расчет числа оборотов колеса в минуту.

Когда число оборотов колеса в минуту известно в функции loop () можно вычислить скорость движения транспортного средства.

Мобильное приложение на Android для работы спидометра

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

  1. Скачайте APK file приложения по следующей ссылке - Android Application for Speedometer. Работает для версии Android 4.4.2 и выше. Извлеките APK файл из zip файла.
  2. Передайте этот .Apk файл с компьютера на ваш смартфон.
  3. Разрешите установку приложения из неизвестного источника в настройках вашего смартфона.
  4. Установите приложение.

Если установка приложения прошла успешно, то вы на экране своего смартфона увидите установленное приложение под именем “Processing_code” как показано на следующем рисунке:

Разработка своего собственного Android приложения для работы спидометра

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

Также можете посмотреть другие проекты на нашем сайте, использующие программы, написанные в программной среде Processing:
- игра в Ping Pong с помощью Arduino;
- радар на Arduino, управляемый с помощью мобильного приложения.

Установка спидометра на транспортное средство

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


Установка платы с датчиком Холла на колесе

Мы использовали 3D принтер для изготовления всех необходимых коробочек и креплений, поэтому мы не были ограничены в дизайне этих вещей. Если у вас нет доступа к 3D принтеру пропустите эту часть статьи и используйте свою собственную фантазию для закрепления спидометра на вашем транспортном средстве.

Если у вас есть доступ к 3D принтеру и вы хотите использовать наши файлы для работы 3D принтера, то убедитесь что размеры вашей платы примерно такие же, как и у нас на приведенном рисунке.

Необходимые размеры перфорированной платы

Полный комплект файлов дизайна и STL файлов для 3D печати можно скачать по следующей ссылке. Если размеры вашей платы совпадают с нашими то вы можете использовать скачанные STL файлы для печати корпусов устройства. Если же размеры не совпадают, то вы можете самостоятельно их подкорректировать, используя скачанные файлы.

Сначала напечатайте на 3D принтере корпус для нашей вспомогательной платы, содержащей датчик Холла и резистор, и разместите их на вашем транспортном средстве как показано на следующих рисунках.

Корпус для платы с датчиком Холла
Установка платы с датчиком Холла на колесе

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

Внешний вид основной платы спидометра в сборе

3D модель основной платы спидометра

Теперь можно приступать к дизайну корпуса для нашей основной платы. Мы разбили дизайн этого корпуса на два файла, на одной части будет смонтирована вся электроника, а вторая будет неподвижно закреплена на велосипеде с помощью гаек и болтов. Эти две части в любой момент можно будет легко соединять и разъединять. После размещения в корпусе электроники мы получим следующий вид нашего устройства:


Размещенная основная плата спидометра в корпусе

Как вы можете видеть, в передней части корпуса имеются два отверстия. Одно будет использоваться для вывода USB, через который мы будем заряжать наш мобильный телефон. А второе будет использоваться для micro USB, через которое мы сможем заряжать наш литиевый аккумулятор.

После этого печатаем вторую часть корпуса для главной платы и проверяем насколько хорошо они стыкуются друг с другом.



Если вы удовлетворены качеством стыковки этих двух частей, то вы можете установить неподвижную часть корпуса на велосипед.

Приспособления для крепления основной платы
Крепление неподвижной части корпуса основной платы спидометра

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

Обматываем аккумулятор герметичной лентой

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

Теперь наше устройство готово к окончательному монтажу. Просто соедините модуль датчика Холла с основной платой и устройство будет готово к работе.

Внешний вид установленного спидометра на велосипеде
Соединение основной платы с дополнительной

Исходный код программы

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

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

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

Читайте также: