Вольтметр и тахометр для автомобиля на основе Arduino UNO

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

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

Здесь приводится описание очень несложного в изготовлении, благодаря применению готового модуля - ARDUINO UNO, прибора, который одновременно показывает и напряжение и частоту вращения коленвала. Причем, показывает это он на очень четком, подсвечиваемом ЖК-дисплее, который очень хорошо виден как днем, так и ночью. Следует заметить, что и себестоимость данного прибора относительно невысока, если покупать ARDUINO UNO и дисплей на радиорынке или на Aliexpress.

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

Индикатором служит ЖК-дисплей типа 1602А, он стандартный, на основе контроллера HD44780. Обозначение 1602А фактически значит, что он на две строки по 16 символов в строке. Основой прибора служит ARDUINO UNO это относительно недорогой готовый модуль, - небольшая печатная плата, на которой расположен микроконтроллер ATMEGA328, а так же вся его «обвязка», необходимая для его работы, включая USB-программатор и источник питания.

Принципиальная схема вольтметра с тахометром к автомобилю на основе Arduino UNO

Рис. 1. Принципиальная схема вольтметра с тахометром к автомобилю на основе Arduino UNO.

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

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

Для согласования цифрового порта с датчиком Холла используются каскад на транзисторе VТ1. Для измерения напряжения, простой делитель напряжения на резисторах R5 и R6. Он нужен потому, что максимальное напряжение, подаваемое на аналоговый вход не должно быть более 5V.

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

Здесь именно под четырехцилиндровый мотор.

Программа

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

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

Рис. 2. Исходный код программы.

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

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

F=30/T

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

F= 30000000/Т

Измерение длительности периода состоит из трех этапов, сначала измеряются длительности положительной и отрицательной полуволны в строках:

Htime=pulseln(10, HIGH);

Ltlme=pulseln(10, LOW);

Затем, происходит вычисление полного периода в строке:

Ttime=Htime+Ltime;

И потом, вычисление частоты вращения коленвала в строке:

frequency=30000000/Ttime;

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

Выход аналогового порта преобразуется АЦП микроконтроллера в цифровую форму. Для получения результата в единицах вольт, нужно его умножить на 5 (на опорное напряжение, то есть, на напряжение питания микроконтроллера) и разделить на 1024.

Для того чтобы можно было измерять напряжение более 5V, вернее, более напряжения питания микроконтроллера, потому что реальное напряжение на выходе 5-вольтового стабилизатора на плате ARDUINO UNO может отличаться от 5V, и обычно немного ниже, нужно на входе применить обычные резистивные делители. Здесь это делитель напряжения на резисторах R5 и R6.

При этом, для приведения показаний прибора к реальному значению входного напряжения, нужно в программе задать деление результата измерения на коэффициент деления резистивного делителя. А коэффициент деления, обозначим его «К», можно вычислить по такой формуле:

К = R6 / (R5+R6)

Очень любопытно то, что резисторы в делителях совсем не обязательно должны быть высокоточными. Можно взять обычные резисторы, затем измерить их фактическое сопротивление точным омметром, и уже в формулу подставить эти измеренные значения.Получится значение «К» для конкретного делителя, которое и нужно будет подставлять в формулу. Чтение данных с аналогового порта происходит в строке:

vout=analogRead(analogInput);

Затем, производится вычисление фактического напряжения с учетом коэффициента деления делителя входного напряжения:

volt=vout*5.0/1024.0/0.152;

В этой строке число 5.0 - это напряжение на выходе стабилизатора платы ARDUINO UNO. В идеале должно быть 5V, но для точной работы вольтметра это напряжение нужно предварительно измерить. Подключите источник питания напряжением 12V и измерьте достаточно точным вольтметром напряжение +5V на разъеме POWER платы. Что будет, то и вводите в эту строку вместо 5.0, например, если будет 4.85V, строка будет выглядеть так:

volt=vout*4.85/1024.0/0.152;

На следующем этапе нужно будет измерить фактические сопротивления резисторов R5 и R6 и определить коэффициент К (указан 0.152) для этой строки по формуле:

К1 = R6 / (R5+R6)

Допустим, получилось К = 0.159, так и пишем:

volt=vout*4.85/1024.0/0.159;

Таким образом, в текст программы нужно внести изменения соответственно фактическому напряжению на выходе 5-воль-тового стабилизатора платы ARDUINO UNO и согласно фактическому коэффициенту деления резистивного делителя.

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

Если входного сигнала с датчика Холла нет, например, включили зажигание, но двигатель не завели, то в строке, где индицируется частота вращения, будет надпись «inf». Если прибор дает сбои при измерении частоты вращения коленвала, может потребоваться оптимизация режима работы входного каскада на транзисторе VT1, соответственно, подбором сопротивления резистора R3, а так же емкости конденсатора С2.

Каравкин В. РК-2017-01.

Литература:

  1. Каравкин В. - Ёлочная мигалка на ARDUINO как средство от боязни микроконтроллеров. РК-11-2016.
  2. Каравкин В. - Частотомер на ARDUINO. РК-12-2016.
  3. Каравкин В. - Спидометр и тахометр на ARDUINO для автомобиля, РК-12-2016.
1 1975 На микроконтроллерах
вольтметр тахометр arduino
Написать комментарий:

cashback