Самодельный спидометр и тахометр на базе Arduino с дисплеем 1602А

Содержание

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

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

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

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

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

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

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

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

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

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

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

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

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

Программа

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

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

Самодельный спидометр и тахометр на базе Arduino - программа

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

Далее, скорость движения (при датчике на 6000 импульсов на км) вычисляется по формуле:

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

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

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

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

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

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

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

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

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

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

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

X = 3600000000 / N

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

Х= 3600000000 / 2500 = 1440000

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

Х= 3600000000 / 6000 = 600000

В заключение

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

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

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


Источник: radiostorage.net