Спидометр и тахометр своими руками
В последнее время стала очень актуальна проблема контроля оборотов двигателя автомобиля. Ранее предложенные схемы имеют ряд недостатков, связанных с большим количеством элементов, большим потребляемым током и возможностью контроля оборотов двигателя только в цифровой форме.
2 0 [0]Тахометр-2 или Тахометр своими руками
Предлагаемый ниже тахометр вы можете собрать своими руками, прибор весьма прост по схеме, но обладает хорошими техническими характеристиками, собран на доступных компонентах. Тахометр может оказаться очень полезным при регулировочных операциях с электронными блоками зажигания двигателя автомобиля, при точной установке порогов срабатывания экономайзера и др.
Автор: Бирюков А.
0 0 [0]Тахометр-3
Предлагаю простой, но надежно работающий на моем автомобиле "Форд-Эскорт" электронный тахометр. Прибор имеет двухразрядный цифровой индикатор, показывающий число тысяч и .сотен оборотов в минуту. Питается тахометр от бортовой сети автомобиля и потребляет ток 0,45А.
2 0 [0]Электронный тахометр для автомобиля
Водителю иногда интересно знать, какое число оборотов развивает двигатель автомашины. Определить это можно с помощью несложного электронного тахометра (рис. 1), измерительного прибора, шкала которого градуирована в числах оборотов двигателя. Его удобно расположить поблизости от рулевого управления.
1 0 [0]Электронный тахометр для мотоцикла
Во многих мотоциклах, мопедах, мотонартах и другой мототехиике отсутствует такой важный прибор как тахометр. Предлагаю простой и надежный электронный тахометр. Он рассчитан на работу с одноцилиндровым двухтактным двигателем внутреннего сгорания с контактной или бесконтактной системой зажигания и позволяет измерять частоту вращения коленчатого вала до 10000 об/мин.
2 0 [0] 2012 г. />Тахометр на Arduino
Тахометр - это полезный инструмент для подсчета RPM (оборотов в минуту) колеса или всего, что крутится. Самый простой способ сделать тахометр - это использовать ИК передатчик и приемник. В этой статье мы рассмотрим, как использовать ИК-передатчик и приемник для изготовления тахометра с применением Arduino. Результат отображается на ЖК-дисплее 16х2.
Автор: Касьянов А.
17 0 [0] 28.02.2014 />Простой тахометр с большими цифрами на ATmega8 и LCD 16x2
Предлагаю вариант тахометра на AVR микроконтроллере с большими цифрами на символьном дисплее. Цифры выстраиваются из отдельных сегментов на всю высоту дисплея, что делает показания прибора более читабельными. Рассчитывался на диапазон измерения от 300 до 9999 оборотов в минуту. Но получилось так, что при более высоких (от 10000) об/мин, младший разряд сдвигается за пределы экрана и прибор показывает количество оборотов в минуту, делённое на 10.
Если дома есть Arduino, в гараже машина или мотоцикл, а то и хоть мотособака, в голове туманные представления о программировании — возникает желание измерить скорость движения или обороты двигателя, посчитать пробег и моточасы.
В данной статье я хочу поделиться своим опытом по изготовлению подобных поделок.
Немного физики
Для измерения частоты вращения нам понадобится датчик положения колеса/вала/круга/итп. Датчик ставится как правило один. Возможно, что он будет срабатывать не один раз на каждый оборот. Например, у вас датчик Холла и 4 магнита на колесе. Таким образом, для правильного вычисления частоты нужно знать:
- количество срабатываний датчика на один оборот К;
- минимальная ожидаемая частота Мин.
- максимальная ожидаемая частота Макс.
То есть, если частота меньше разумного минимума, то считаем, что она равна нулю, если больше максимума — игнорируем показания.
С количеством срабатываний понятно, но зачем ещё эти мины и максы? Давайте рассмотрим сначала варианты расчёта частоты.
Со скоростью всё проще, достаточно знать число π, диаметр колеса, а частоту вращения мы уже знаем.
Болванка для кода
Так как мы имеем дело с такими нежными величинами как время и пространство, то лучше сразу освоить прерывания.
Обратите внимание на модификатор volatile у переменной counter. Все переменные, которые будут изменяться в обработчике прерывания (ISR) должны быть volatile. Это слово говорит компилятору, что переменная может изменяться неожиданно и доступ к ней нельзя оптимизировать.
Функция ISR() вызывается каждый раз, когда появляется единица на ноге fqPin. Мы эту функцию не вызываем, это делает сам контроллер. Он это делает, даже когда основная программа стоит в ступоре на функции delay(). Считайте, что ISR() обслуживает событие, от вас не зависящее и данное вам свыше как setup() и loop(). Контроллер прерывает выполнение вашей программы, выполняет ISR() и возвращается обратно в ту же точку, где прерывал.
Обратите внимание, что в функции loop() мы отключаем прерывания вообще любые для того, чтобы прочитать переменную counter и сохранить её во временную переменную cnt. Потом, конечно же, включаем снова. Так мы можем потерять один вызов, конечно же, но с другой стороны, переменная unsigned long имеет 32 бита, а процессор ATMega32 8-битный, вряд ли он скопирует данные за один такт, а ведь в процессе копирования может случиться прерывание и часть данных изменится. По этой же причине мы копируем значение counter локально так как значение этой переменной при использовании в разных местах программы может быть разным опять же из-за изменения её в прерывании.
Тело функции ISR() должно быть максимально коротким, точнее, сама функция должна выполняться максимально быстро. Это важно, так как прерывается выполнение вашего кода, который может оказаться чувствительным к непредвиденным задержкам. Некоторые библиотеки отключают прерывания для выполнения чувствительных с задержкам операций, например для управления светодиодной лентой WS2812.
Считаем обороты за единицу времени.
Первое, что приходит в голову, это взять интервал времени и посчитать количество измерений.
Как и у многих простых решений, у этого есть неочевидные минусы. Для повышения точности измерений вам необходим довольно большой интервал времени. Принцип тот же, что и у Шума квантования. При времени оборота колеса сравнимом с временем подсчёта, существенные изменения скорости вращения не будут замечены. Показания такого частотомера будут различаться до двух раз на каждый отсчёт.
Для повышени точности на малой скорости можно увеличить число К, как это сделано, скажем, в автомобильной технике для датчика ABS. Можно увеличить время подсчёта. Делая и то и другое мы подходим ко второй проблеме — переполнению счётчика. Да, переполнение легко лечится увеличением количества бит, но арифметика процессора Arduino не умеет считать 64-битные числа столь быстро, как хотелось бы и как она это делает с 16-разрядными.
Увеличение времени расчёта тоже не очень хорошо тк нам надо знать частоту прямо сейчас, вот при нажатии на газ, а не через пару секунд. Да и через пару секунд мы получим скорее некое среднее значение. За это время можно несколько раз сделать врумм-врумм.
Есть другой метод. Он лишён вышеописанных недостатков, но, как водится, имеет свои.
Считаем интервал между отсчётами
Мы можем засечь время одного отсчёта и другого, вычислить разницу. Величина, обратная вычисленному интервалу и есть частота. Круто! Но есть минусы.
Что делать, если наше колесо крутится еле-еле и измеренный интервал превышает разумные пределы? Выше я предложил считать частоты ниже разумного минимума за ноль.
Определённым недостатком метода можно считать шумы квантования на высоких частотах, когда целочисленный интервал снижается до нескольких двоичных разрядов.
Так же хотелось бы некую статистику подсчётов для улучшения показаний, а мы берём лишь последнее значение.
Методом проб и ошибок я подобрал интервал отображения данных на дисплее в 250мс как оптимальный. Если чаще, то цифры размазываются, если реже — бесит тормознутость.
Комбинированный метод
Можно попробовать объединить достоинства обоих методов.
То есть, мы засекаем время не просто между отсчётами, а время между проверками данных и делим на количество отсчётов за это время. Получается усреднённый интервал между отсчётами, обратная величина от которого есть частота. Предоставим компилятору оптимизировать вычисления.
Обратите внимание, что за интервал считается не время опроса, как в первом примере, а время от последнего отсчёта до предыдущего последнего отсчёта в прошлом опросе. Это заметно поднимает точность вычисления.
Таким образом, мы можем получать вполне достоверные данные как на низких так и на высоких частотах.
Если использовать кооперативную многозадачнось, то можно сделать подсчёт, скажем раз 100мс, а вывод на дисплей раз в 250мс. Очень короткий интервал опроса снизит чувствительность к низким частотам.
Как говорят в рекламе, "но это ещё не всё".
Ошибки дребезга
Для устрашения вас предположу, что измеряем частоту вращения двигателя от индуктивного датчика зажигания. То есть, грубо говоря, на высоковольтный провод намотан кусок кабеля и мы измеряем индукцию в нём. Это довольно распространённый метод, не правда ли? Что же здесь сложного может быть? Самая главная проблема — современные системы зажигания, они дают не один импульс, а сразу пачку.
Но даже обычная система зажигания даёт переходные процессы:
Старинные же кулачковые контактные вообще показывают замечательные картинки.
Как с этим бороться? Частота вращения не может вырасти мгновенно, не даст инерция. Кроме того, в начале статьи я предложил ограничить частоту сверху разумными рамками. Отсчёты, что происходят слишком часто можно просто игнорировать.
Другой вид помех — это пропадание отсчётов. Из-за той же инерции у вас не может измениться частота в два раза за одну миллисекунду. Понятно, что это зависит от того, что вы собственно измеряете. Частота биения крыльев комара может, вероятно и за миллисекунду упасть до нуля.
Статистическая обработка в данном случае становится уже достаточно сложной для маленькой функции обработки прерывания и я готов обсудить варианты в комментариях.
Особенности измерения скорости движения и скорости вращения.
При измерении скорости вращения бензинового двигателя надо обязательно учесть величину К, которая совсем не очевидна. Например, вы намотали провод на кабель свечи и ожидаете, что там будет одна искра на один оборот. Это совсем не так. Во-первых, у 4-тактного двигателя вспышка происходит один раз на два оборота, у 2-тактного один раз на оборот коленвала. Во-вторых, для упрощения системы зажигания коммутатор подаёт искру на неработающие в данный момент цилиндры, типа на выпуске. Для получения правильного К надо почитать документацию на двигатель или подсмотреть показания эталонного тахометра.
При измерении скорости движения частота обновления дисплея не имеет большого значения, особенно, если вы рисуете цифры, а не двигаете стрелку. Даже обновление информации раз в секунду не вызовет отторжения. С оборотами двигателя всё наоборот, индикатор должен откликаться гораздо быстрее на изменение оборотов.
Вывод информации
Типичная обида начинающего разработчика автомобильной и мотоциклетной электроники "стрелки дёргаются, цифры нечитабельны" лечится простым способом — надо обманывать клиента. Вы что думаете, автомобильный тахометр всегда показывает вам правду? Конечно же нет! Хотя вам этот обман нравится и вы хотите, чтобы ваш прибор дурил голову так же.
Стрелки
Если включить зажигание на новом модном автомобиле или мотоцикле, стрелки приборов сделают красивый вжух до максимума и медленнее опадут до нуля. Вот! Вот это нам и надо сделать. Надо, чтобы при показе максимальной величины стрелка не метнулась к ней мгновенно и не упала как акции лохотрона в ноль.
Итак, нам надо учитывать максимальную скорость стрелки на увеличение и максимальную на уменьшение показаний. Совсем хорошо сделать эти скорости нелинейными, чтобы стрелка сначала двигалась быстрее, а потом чуть помедленнее приближалась к заданному значению.
Вот пример с нелинейным выводом показаний:
Вы можете поиграть с коэффициентами. Этот же принцип используется при выводе громкости сигнала, например, у любого аналогового индикатора: стрелки, полоски, яркость, цвет, размер итп. Приведённый пример самый простой, но и не самый красивый. Предлагайте ваши варианты в комментариях.
Цифры
С цифрами всё намного сложнее. Быстрые изменения показаний приводят к тому, что несколько порядков сливаются в мутное пятно. Для скорости, как и писал выше, можно задать интервал раз в секунду и глаз успеет прочитать три цифры.
В мототехнике не зря делают аналоговые индикаторы оборотов, точные цифры не нужны, важна относительная близость к оборотам максимального крутящего момента, к максимальным вообще и холостые.
Я предлагаю менять частоту вывода информации на дисплей в зависимости от степени изменения величины. Если обороты меняются, скажем, на 5% от последнего подсчёта, а не показа — можно затупить и показывать раз в 300-500мс. Если на 20%, то показывать раз в 100мс.
Можно огрубить шкалу и показывать только две значащие цифры
С учётом мототематики, можно довольно точно показывать обороты холостого хода как описано чуть выше и огрублять вывод на оборотах от двух холостых. На высоких оборотах для гонщиков важнее делать блинкеры типа "передачу вниз", "передачу вверх" и "ты спалишь движок". То есть держать двигатель около максимального крутящего момента и не дать ему крутиться выше максимальных разрешённых оборотов. Блинкеры замечательно делаются с помощью SmartDelay когда можно унаследовать от этого класса свой с заданной ногой контроллера и частотой мигания, там есть методы для переопределения и они вызываются раз в заданное время.
Наверное учитывая то что это уже восьмая часть и логично было бы ее назвать хотя бы "Большое продолжение…" но все же для поисковиков это словосочетание уже стало ключем для поиска, по нему легко можно найти серию моих статей о приборах на семисегментных индикаторах, пересмотреть и вспомнить, и даже повторить если найдутся желающие. Так что оставляем название в покое и смотрим на очередное творение Горского Игоря (М.A.M.E.D.)
На этот раз устройство немного сложнее. На большем и дорогом микроконтроллере.
Как вы могли прочитать в названии это цифровой спидометр. В сети много цифровых спидометров на более простом и дешевом контроллере таком как PIC16F628A или PIC16F84 хотя цена последнего на сегодняшний день не такая уже и дешевая по сравнению с первым. НО кроме измерения скорости в них нет больше ничего интересно. Такой спидометр я в будущем хочу переделать в зеркальную индикацию но не полностью а только цифры и использовать для зеркального отображения проекции скорости на лобовом стекле в ночное время суток. Но это все планы.
Вернемся к "Многофункциональному спидометру счетчику пробега" Игоря. Счетчик пробега на автомобильном языке это называется одометром выводит это устройство далеко в перед по сравнению с бюджетными устройствами. И этих одометров аж 3.
1 — это общий спидометр. Он на сленге автомобилистов Миллионник. То есть 6-ти значный одометр.
2 — это суточный пробег. И тут Игорь отскочил от стереотипов и сделал его интереснее. Отойдя от стереотипов он сделал 2 знака после запятой. И суточный одометр показывает не только 100 метров но и 10. Я уже второй день катаюсь и засекаю километраж по деревне.
3 — это сервисный пробег. Настроен он на 10 000 км если быть точным то на 9999. Этот считает пробег до замены масла. 9900 он о себе даже не напомнит. По пройдя этот пробег Спидометр будет напоминать сколько осталось до замены при каждом включении зажигания.
4 — А вот эта функция мне понравилась больше всего наверное. Благодаря ей я знаю что от гаража до дома вокруг улицы у меня 700 метров, к бабушке 1200, а к отцу на роботу обезжая парадный въезд 2600 метров. Дело в том что эта функция чем то напоминает суточный пробег но как бы считает пробег от включения до выключения зажигания, обновляясь каждый раз когда вы заглушили машину.
Представляете такую штуку в такси. Сел клиент вы завели автомобиль доехали до нужного места. Заглушили автомобиль и одометр вам вежливо показывает пройденный вами километраж в виде -025.6-. И вы быстро и эффектно умножаете 25.6 км на цену за 1 км/пробега. Или просто выключаете зажигание, сморите на циферки и говорите 25 км 600 м с Вас хх грн. Мечта просто а не одометр.
<cut title="По просьбе злого админа, остальное под КаТоМ">
Заинтриговал тогда идем дальше. Больше про устройство можно прочитать на официальном сайте автора Авторские электронные устройства
Я же опишу что и как сделал я.
Взяв схему у автора
Плату я разводил сам под свой размер индикаторов и габариты.
Плата получилась двусоставная.
Идея оснастить свой автомобиль дополнительным спидометром у меня возникла сразу, как у меня вышла из строя АБС. И мы весь отпуск проездили без АБС и спидометра. Сейчас у меня стоит новый блок АБС и спидометр тоже работает. На большинства новых машинах вся электроника типа АБС и всяких контролирующих движения завязана на один блок. У некоторых вообще при выходе из строя оного не точто спидометр не кажет, а вся панель не работает. И бывает даже и не заводится. Хорошо что у меня автомобиль не из таких.
Из найденных в интернете схем спидометров, мне понравилась схема на микроконтроллере PIC16F628A.
Спидометр выполнен на базе микроконтроллера PIC16F628A. В качестве устройств отображения информации подойдут любые светодиодные индикаторы с общим катодом. Я использовал маленький трёх сегментный индикатор. При использовании других индикаторов, возможно, придётся подбирать токоограничивающие резисторы в цепи анодов. Подключается устройство к сигнальному контакту штатного спидометра. Нажатием кнопки SB1 (дублируется звуком), можно изменять яркость свечения индикаторов «по кругу». При каждом включении яркость свечения индикаторов устанавливается такой, какой она была выставлена ранее. Звукоизлучатель HA1 любой со встроенным генератором, способным работать от источника питания напряжением 5 вольт. При неплотно закрытой двери автомобиля (сигнал низкого уровня относительно корпуса) и скорости движения более 9 км в час, раздаётся прерывистый сигнал, и показание скорости на индикаторе сменяется включенной на полную яркость аббревиатурой ‘dor’ (сокращённое от англ. «door» – дверь).
Используемая прошивка микроконтроллера универсальная позволяющая выбрать один из пяти вариантов работы спидометра в зависимости от кол-ва импульсов поступающих с датчика скорости автомобиля. Предлагаемый цифровой спидометр «понимает» датчики, выдающие: 2500 имп/км, 4000 имп/км, 6000 имп/км, 8000 имп/км и 10000 имп/км. Список можно расширить, внеся соответствующие изменения в программу. Допустим, если считывание скорости автомобиля берётся, интегрировано со всех четырёх колёс. И сигнал можно взять с одного из датчиков колёс.
А так для выбора нужного варианта необходимо установить перемычку S1 и затем подать питание на устройство. При установленной перемычке индикатор не горит. Теперь нажатием кнопки SB1 «Яркость» (на 1-2 с, с паузой между нажатиями 1-2 с) выбирается нужный вариант:
1 нажатие — 2500 имп/км;
2 нажатия — 4000 имп/км;
3 нажатия — 6000 имп/км;
4 нажатия — 8000 имп/км;
5 нажатий — 10000 имп/км.
Через 3 секунды после последнего нажатия, раздастся соответствующее количество коротких звуковых сигналов излучателя НА1, подтверждая запись в EEPROM микроконтроллера нужного варианта. По умолчанию установлен режим для датчика скорости 2500 имп/км. А при количестве нажатий более 5, будет также установлен японский стандарт (2500). Для выбора другого режима работы достаточно повторить выше описанные действия. После выбора нужного режима работы перемычку S1 необходимо убрать. Теперь спидометр готов к работе.
Погрешность показаний составляет для:
1 варианта (2500) +0,2 км;
2 варианта (4000) менее 0,1 км;
3 варианта (6000) +0,2 км;
4 варианта (8000) — 0,4 км;
5 варианта (10000) менее 0,1 км;
Если количество импульсов от датчика скорости неизвестно, необходимо выполнить следующие. На ровном участке дороги от колеса автомобиля отмерить 10 метров. Подключить стрелочный вольтметр (тестер) к сигнальному контакту аналогового спидометра и медленно двигаясь, подсчитать кол-во «дёрганий» стрелки вольтметра. Умножить полученный результат на 100.
Вместо PIC16F628A можно использовать PIC16F84A только уже перемычка S1 не используется. Выбор режима работы спидометра только выбирается соответствующей прошивкой.
Тахометр представляет собой устройство, предназначенное для измерения числа оборотов двигателя во время движения и демонстрации этой информации водителю. Полученные данные автомобилисту показываются на приборной панели или, если устройство было установлено дополнительно, на соответствующем экране в салоне. Этот материал позволит вам узнать, как соорудить тахометр в домашних условиях своими руками.
Самодельное устройство на микроконтроллере
Чтобы сделать самодельный тахометр на микроконтроллере в свой автомобиль для замера оборотов двигателя, вам потребуются такие запчасти:
- сама микроплата, в данном случае будет использоваться схема Arduino;
- резисторы;
- чтобы сделать светодиодный тахометр, потребуется LED-элемент;
- инфракрасный а также фото диоды;
- дисплей, в нашем случае это LCD;
- регистр сдвига 74HC595.
В данном случае будет использовать оптически регулятор вместо щелевого. Благодаря этому вам не придется переживать по поводу толщины ротора, число лопастей не будет менять показания. Кроме того, оптический контроллер позволяет считывать обороты барабана, в отличие от щелевого.
Чтобы приступить к выполнению задачи, подготовьте все элементы и можете начинать:
Простое устройство на базе микрокалькулятора
Есть еще один вариант, как сделать электронный цифровой тахометр для бензинового или электродвигателя, в данном случае в качестве основы будет применяться микрокалькулятор. Особенно такой вариант будет актуален для тех, у кого проблемы с элементной базой. Нужно отметить, что в конечном итоге устройство не сможет выдавать на 100% точные показатели, также такой девайс не будет показывать количество оборотов в минуту на экране. Однако сам по себе микрокалькулятор является отличным устройство для счета сигналов.
В нашем же случае контакты нужно попросту параллельно припаять к клавише сложения калькулятора.
Когда нужно произвести измерение скорости вращения оборотов, замер делается по следующей схеме:
Аналоговые и цифровые тахометры
Аналоговые варианты состоят из таких компонентов:
- микроплаты, предназначенной для преобразования аналогового импульса;
- проводов, которые соединяют все компоненты конструкции;
- шкалы, где будут демонстрироваться показатели и стрелки, которая демонстрирует нужное значение;
- для нормальной работоспособности стрелки необходима специальная катушка с установленной на ней осью;
- какой-либо считывающий элемент, к примеру, это может быть индуктивный контроллер.
Что касается цифровых устройств, то их предназначение такое же, однако в основе конструкции цифрового гаджета лежат другие компоненты:
Видео «Как соорудить тахометр из компьютерной мыши?»
Какие бывают тахометры: от механических до цифровых
Установка тахометра своими руками: доступная инструкция
Советы профессионалов, как самому проверить тахометр на работоспособность в домашних условиях
Читайте также: