Адаптер тахометра своими руками
Тема начата 5 лет назад, когда впервые столкнулся с проблемой на своей машине: тогда там был 1JZ-GE VVTi, датчик в хвостовике АКПП — единственный и идёт только на блок управления, а сигнал никак не совместим с волговской панелью приборов. www.drive2.ru/l/288230376152556666/
С тех пор оказалось, что тема довольно насущная при свапе тойотовских моторов, прибор пережил некоторое количество обновлений и в нынешнем виде (начиная с января 2016 года) выглядит так
На момент июня 2018 информация частично устарела. Теперь одна и та же модель может работать либо со спидометром, причем от любого датчика, либо с тахометром
Такой прибор позволяет корректировать показания либо спидометра, либо тахометра. Имеется индикация наличия сигнала от датчика, переключение между датчиками с высоким и низким числом импульсов на оборот вала КПП, точная корректировка показаний "на лету", выбор типа приборной панели — также "на лету". В дополнение к этому есть режим генератора сигнала для поиска входа спидометра, если распиновка приборной панели неизвестна.
Сигнал для спидометра можно брать практически отовсюду, но обычно используется датчик на выходном валу АКПП, подключенный штатно к блоку управления. Работа блока управления при этом не нарушается. Также можно использовать колёсный датчик АБС, или 3-выводной датчик Холла, который иногда встречается в МКПП.
Это же самое устройство годится и для корректировки сигнала тахометра — хоть в большую, хоть в меньшую сторону. Для старых тахометров, которые брали входной сигнал с первичной цепи системы зажигания (и рассчитаны на амплитуду сигнала выше 12В) предусмотрен вариант с усилителем сигнала. Плавная регулировка позволяет работать со старыми дизельными двигателями, выход тахометра у которых берётся с генератора и как правило не связан "правильным" соотношением с оборотами двигателя.
Также оказалось, что эти же самые адаптеры могут использоваться в нестандартных случаях, например для оживления блока АБС, для подачи правильного сигнала скорости в блок управления Toyota, если двигатель брался от автомобиля с 4WD, однажды даже брали его для установки блока круиз-контроля от опеля на гольф 4.
В последнее время стала очень актуальна проблема контроля оборотов двигателя автомобиля. Ранее предложенные схемы имеют ряд недостатков, связанных с большим количеством элементов, большим потребляемым током и возможностью контроля оборотов двигателя только в цифровой форме.
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;
- резисторы;
- чтобы сделать светодиодный тахометр, потребуется LED-элемент;
- инфракрасный а также фото диоды;
- дисплей, в нашем случае это LCD;
- регистр сдвига 74HC595.
В данном случае будет использовать оптически регулятор вместо щелевого. Благодаря этому вам не придется переживать по поводу толщины ротора, число лопастей не будет менять показания. Кроме того, оптический контроллер позволяет считывать обороты барабана, в отличие от щелевого.
Чтобы приступить к выполнению задачи, подготовьте все элементы и можете начинать:
Простое устройство на базе микрокалькулятора
Есть еще один вариант, как сделать электронный цифровой тахометр для бензинового или электродвигателя, в данном случае в качестве основы будет применяться микрокалькулятор. Особенно такой вариант будет актуален для тех, у кого проблемы с элементной базой. Нужно отметить, что в конечном итоге устройство не сможет выдавать на 100% точные показатели, также такой девайс не будет показывать количество оборотов в минуту на экране. Однако сам по себе микрокалькулятор является отличным устройство для счета сигналов.
В нашем же случае контакты нужно попросту параллельно припаять к клавише сложения калькулятора.
Когда нужно произвести измерение скорости вращения оборотов, замер делается по следующей схеме:
Аналоговые и цифровые тахометры
Аналоговые варианты состоят из таких компонентов:
- микроплаты, предназначенной для преобразования аналогового импульса;
- проводов, которые соединяют все компоненты конструкции;
- шкалы, где будут демонстрироваться показатели и стрелки, которая демонстрирует нужное значение;
- для нормальной работоспособности стрелки необходима специальная катушка с установленной на ней осью;
- какой-либо считывающий элемент, к примеру, это может быть индуктивный контроллер.
Что касается цифровых устройств, то их предназначение такое же, однако в основе конструкции цифрового гаджета лежат другие компоненты:
Видео «Как соорудить тахометр из компьютерной мыши?»
Какие бывают тахометры: от механических до цифровых
Установка тахометра своими руками: доступная инструкция
Советы профессионалов, как самому проверить тахометр на работоспособность в домашних условиях
Какое -то время назад ко мне пришел заказчик, который устанавливал, в тот момент, на Газель контрактный японский движок. Проблема, с которой он ко мне пришел, была следующая: Неправильная работа тахометра и спидометра. Дело в том, что датчики на новом движке вырабатывают совсем другое количество импульсов на оборот. Передо мной была поставлена задача сделать настраиваемый конвертер.
Была опробована присутствующая в инете схема на двух мелкосхемах преобразователя частоты в напряжение и, потом, напряжения в частоту. Вот отсюда https://www.drive2.ru/l/3271460/ . Был собран опытный вариант. А так же сделан псевдодатчик с плавной регулировкой оборотов.
Опыты показали, что этому варианту требуется формирователь импульсов ибо с катушки датчика идут слабые по амплитуде импульсы. Необходимо ставить впереди устройства компаратор, ну, например, на LM393. Более того, датчики совсем не идеальны и могут формировать, особенно при малых оборотах, пачку импульсов вместо одного. Такое схемное решение никак не может избавиться от таких помех. Далее, более широкие исследования выявили очень маленький диапазон преобразования частот, как по входной частоте так и по диапазону сдвига. Пришлось изучать даташиты и выискивать формулы расчета необходимых элементов обвязки микросхем. В конечном итоге такая схемотехника была забракована. По совокупности причин. Необходимости подбирать детали, малом диапазоне и нелинейности, отсутствия входного формирователя импульсов. Короче — никакой универсальности.
Поэтому было решено собрать преобразователь с гораздо более широким диапазоном входных и выходных частот. С формирователем импульсов на борту. После долгих экспериментов родилось вот такое устройство. Формирователь импульсов на базе LM393 позволяет подключать любые электромагнитные датчики. Сформированные импуль c ы подаются на цифровой программируемый делитель, который позволяет умножать или делить входную частоту до коэффициента 8,9 с шагом 0,1. На выходе формируется меандр со скважностью 50% и амплитудой 12 V. Многочисленные опыты показали стабильную работу устройства на входных частотах от 300 Герц до 4х герц. Верхняя граница определялась скоростью вращения имеющегося у меня двигателя. Нижняя граница парой датчик — движущийся магнит. Применяемая мною пара просто не давала нужного напряжения для срабатывания компаратора.
Всем привет! Хотелось бы поделиться с сообществом своей историей модернизации тахометра ТХ-193
Неделю назад обратился ко мне один человек с довольно нестандартным заданием — нужно было обеспечить работу древнего тахометра ТХ-193(ВАЗ 2106) с современным двигателем ВАЗ21126(Приора), имеющем систему зажигания с индивидуальными катушками на каждый цилиндр, а значит просто подключить ТХ-193 к катушке зажигания уже не получится. К тому-же заказчик хотел повысить эксплуатационные качества прибора, оставив не тронутым его внешний вид и дизайн. В общем дело кончилось тем, что я взялся выпотрошить электронную начинку прибора и разработать свою, с блэкджеком и шлюхами. Информацию о частоте вращения коленчатого вала тахометр теперь будет получать от ЭБУ Январь 7.2, для чего в последнем имеется специальный вывод.
Под катом фото, видео, схема, исходники и много текста, повествующего о логарифмах и о том как правильно масштабировать данные и отделаться от запятой.
Хард
Начнем с устройства ТХ-193. Механическая часть прибора представляет из себя миллиамперметр классической конструкции, с постоянным магнитом и подвижной катушкой, приводящей в движение стрелку.
Для разработки схемы по сути достаточно было знать о миллиамперметре лишь то, что при токе порядка 10мА стрелка отклоняется до предела, а сопротивление обмотки равно примерно 180Ом. В качестве мозга был выбрал контроллер ATtiny2313A славной фирмы Atmel, тактируемый от внешнего кварцевого резонатора на 16МГц. Питание прибора осуществляется от бортовой сети автомобиля, а значит по ГОСТу он должен выдерживать «бороду» до 100В и стабильно работать в диапазоне от 9-15В. Ввиду незначительного потребления(несколько десятков миллиампер) было принято решение использовать линейный стабилизатор 7805 с индуктивным фильтром и сапрессором для защиты от импульсных помех. Прибор собирался из того, что было под рукой, поэтому в готовом изделии применяется мощная версия 7805, хотя вполне хватило бы и 78L05 на 100мА.
Миллиамперметром контроллер управляет, естественно, используя ШИМ. Для чего был задействован 16ти разрядный таймер в режиме Phase and Frequency Correct PWM.
Информация о частоте вращения коленчатого вала передается от ЭБУ в виде импульсов от 0 — 12В. Активный уровень низкий. 2 импульса за 1 оборот коленчатого вала. Для захвата этих импульсов используется внешнее прерывание INT0 и соответствующая цепочка из RC фильтра, подтяжек и защитных диодов. В общем и целом схемотехника устройства довольно типична и я с удивлением обнаружил, что только что так много написал о ней. Но да не судите строго, первая статья всё-таки.
Собранный прибор без циферблата теперь выглядит так:
Софт
На самом деле ещё до вычерчивания схемы я оперативно собрал всё это дело на макетке, взяв контроллер в DIP корпусе и сразу же принялся махать стрелкой))
В общем то софт оказался немного интереснее харда.
Начнем с общей архитектуры:
Таймер 0 тикает с частотой 250кГц, а значит период тика = 4мкс прерывание по переполнению происходит с частотой 250кГц / 256 = 0.976кГц
а значит прерывание происходит один раз в 1024мкс. Можно было заморочиться и подогнать это дело ближе к одной миллисекунде путем обновления счетчика таймера в прерывании, но в данной задаче это не к чему. Т.е. мы можем измерять время с точностью 4мкс, что вполне достаточно для заданной точности прибора.
Таймер 0 у нас не только отсчитывает время, но ещё и выставляет флажки для запуска тех или иных задач с определенной периодичностью.
Задачи у нас две. Давать отмашку прерыванию INT0 на измерение периода импульсов на входе и изменять положение стрелки.
Таймер 1 тикает с частотой 16мГц, но т.к. он 16ти битный и используется режим Phase and Frequency Correct PWM — итоговая частота ШИМ оказывается очень небольшой и составляет что-то около 122Гц. Это потому, что таймер тикает сначала вверх, а потом вниз. Зато имеем тру 16битный ШИМ и можем очень точно рулить стрелкой! В даташите найдутся все подробности.
Механика, к слову сказать, оказалась отвратительного качества, плавно двигать стрелку было не реально из-за повышенного трения в механизме, который пришлось для начала хотя-бы смазать трансмиссионным маслом. Но это уже детали.
Была составлена таблица соответствия показаний прибора с соответствующим значением регистра таймера в ШИМ попугаях.
В исходниках это дело называется GAUGE_TABLE и вынесено по привычке в отдельный файл.
Далее было обнаружено, что если просто одним махом изменить ток в цепи амперметра для того, чтобы к примеру передвинуть стрелку на 1000 вперед, то она совершит два-три-четыре колебания в районе целевой отметки, что было совершенно неприемлемо и на что заказчик обращал особое внимание. Дело в том, что эти тахометры изначально имеют такую проблему и несколько раз газанув в такт колебаниям можно заставить стрелку раскачиваться со значительной амплитудой(более половины шкалы!).
С этим нужно было что-то делать. Идея моя заключалась в том, чтобы подводить стрелку к отметке серией более мелких шагов, постепенно приближаясь к цели. Собственно говоря эта часть и является самой интересной и полезной для новичков, т.к. требует некоторой сноровки. Ведь имея дело с микроконтроллером вызов log2() в цикле является, мягко говоря, не самой удачной идеей. К тому-же 8битная архитектура накладывает ещё больше ограничений. Ну а про «плавучку» (floating point) и вовсе нужно забыть. Но все эти трудности, как всегда, приводят лишь к более глубокому пониманию процессов и расчётов, производимых процессором.
Текста почему-то получается всё больше, но не остановиться более подробно на этом моменте я просто не могу!
Итак, понятно, что нам нужна логарифмическая прогрессия. Шаг изменения тока в цепи миллиамперметра должен уменьшаться по мере приближения к целевой отметке. Ресурсы на вес золота, а значит только табличный метод. Точек тоже по возможности минимум.
Начнем с построения логарифмической таблицы.
Всё очень просто: запускаем excel и несколькими взмахами мыши получаем 50 значений логарифма по основанию 2 для последовательности от 1 до 50. Для наглядности строим красивый график.
Прекрасно! То, что нужно! Но во-первых — точек аж 50, а во вторых все числа с плавающей точкой. Это нам никак не подходит!
Поэтому отбираем из имеющегося массива 5 точек с шагом 10. Получаем что-то вроде этого:
Уже лучше. Последовательное приближение к цели всё ещё сохраняется, но точек в 10 раз меньше.
Дальше нужно нормировать полученный набор. Т.е. сделать так, чтобы все значения находились в диапазоне от 0 до 1. Для этого просто разделим каждый элемент на 5,64385618977472 (максимальное значение нашего массива).
Таким образом получаем всё ту-же логарифмическую зависимость, но уже в на много более удобном для дальнейших вычислений виде. Такую таблицу уже можно довольно легко применять, если бы не точка после нуля. Но с этим мы тоже довольно легко разберемся.
Теперь я хочу, чтобы мы приняли красивое значение 1024 за единицу и снова пересчитали нашу таблицу. Получаем
Как видим, форма графика не изменилась, но цифры теперь укладываются в 16битный диапазон и нет никаких дробей.
В исходниках полученный массив называется logtable[]
Масштабирующий коэффициент(если можно его так назвать) 1024 появился здесь не случайно и нужно очень хорошо понимать почему именно 1024.
Во-первых это степень двойки и выбрана она потому, что дорогие операции деления и умножения на степень двойки можно заменить дешевым сдвигом влево/вправо и было-бы глупо не использовать такую возможность.
Во-вторых коэффициент должен выбираться и исходя из масштабов тех данных, к которым он будет применяться. В нашем случае это значения регистра 16ти разрядного таймера, который управляет заполнением ШИМа. Экспериментально было выявлено, что неудовлетворительные колебания стрелки обнаруживаются даже при её резком смещении на 200 об/мин. Т.е. если нужно двинуть стрелку на более чем
200 об/мин — потребуется сглаживание. Из таблицы GAUGE_TABLE видно, что соседние ячейки в среднем отличаются на 4000 ШИМ попугаев, что соответствует примерно 500 об/мин на шкале прибора. Не трудно прикинуть, что в цифрах смещение стрелки на 200об будет 4000 / 2,5 = 1600 ШИМ попугаев.
Следовательно масштабирующий коэффициент нужно выбрать таким образом, чтобы во-первых он был как можно бОльшим, потому что иначе мы теряем разряды и точность, а во-вторых как можно меньшим, чтобы не заставлять нас переходить от 16ти разрядных переменных к 32х разрядным и не расходовать ресурсы понапрасну. В итоге выбираем наименьшую степень двойки, которая меньше 1600 и обеспечивает достаточную точность. Это и будет 1024.
Этот момент очень важен. Я сам до сих пор порою испытываю трудности с выбором правильных коэффициентов и размеров переменных.
Ну а дальше уж пошло-поехало. Находим в коде реализацию display_rpm() и видим, что для определения конкретного значения в ШИМ попугаях используется таблица GAUGE_TABLE[] и предположение, что между соседними отметками шкала линейна. Для организации изменения тока по логарифмическому закону введен массив на 5 точек pwm_cuve[] в котором содержится набор значений, который нужно последовательно отнять или прибавить(в зависимости от направления движения стрелки) от pwm_ocr1a_cur_val чтобы заставить стрелку двигаться плавно и чётко.
каждый шаг формируется путем умножения значения pwm_delta на коэффициент из нашей таблицы logtable[];
Перед умножением значение предварительно масштабируется путем деления на 1024.
Конечный расчётный пункт назначения стрелки target_pwm записывается в pwm_cuve[] как есть, потому что из-за проблем с округлением и из-за ограничения размерности переменных 16битами точное значение в результате расчётов будет там образовываться весьма не часто, поэтому приходится обеспечить гарантию того, что стрелка окончит свой путь в заданной точке.
В общем то всё вышесказанное по сути заключено в одной строке
pwm_cuve[ table_i ] = pwm_ocr1a_cur_val + (pwm_delta / LOG_TABLE_MAX * logtable[ table_i ]);
Далее главный цикл по сигналу от таймера0 раз в PWM_UPD_PERIOD выгребает значения из pwm_cuve и присваивает их переменной pwm_ocr1a_cur_val, значение которой в прерывании будет присвоено регистру OCR1A, что немедленно приведет к изменению заполнения ШИМа и изменению тока в цепи миллиамперметра.
Вот, собственно и почти все хитрости, за исключением перевода периода, представленного в тиках таймера в частоту вращения коленчатого вала, которая измеряется в об/мин.
Сократилось всё это до engine_rpm = (uint16_t)(15000000UL / (uint32_t)rot_time);
О том как получилась эта цифра мы можем поговорить или не поговорить в следующий раз, потому что и без того текста получилось не мало и явно не многие дочитают даже до этого места.
Честно гвооря в коде применено ещё несколько «хитростей», которые могут показаться новичкам не совсем очевидными. Если кому-то захочется подробнее разобраться — вэлкам в каменты и лс.
Немного видео, как и обещал
На точность показаний не обращайте внимание, стрелка нормально не одета + циферблат не закручен.
Движение стрелки с шагом 1000об/мин одним скачком.
Плавное изменение тока
Дело ясное, что в реальности скачков в 1000об/мин не будет и те незначительные перелеты стрелки, которые всё-же можно наблюдать на видео не станут проблемой. Просто если устранить и их — то можно здорово потерять в быстродействии прибора и его показания будут отставать от реальности.
P.S. Не сказать, что в архиве совсем говнокод, но да, местами можно было сделать красивее. Да, я знаю, что магические числа это плохо и да, я мог бы лучше. С другой стороны потеряться в исходнике в 200строк довольно сложно, поэтому кое-где я позволил себе немного на халтурить.
Просто зарегаться на хабре хотелось уже давно, а написать сколько-нибудь подробную статью по прошествии времени после реализации проекта становится всё сложнее, поэтому я решил, что сегодня будут «вести с полей».
Так что реальный код с реального устройства, собранного за реальный срок в 7 вечеров, которое завтра будет установлено на славный автомобиль ВАЗ 2108 с двигателем 21126 и надеюсь будет ещё долго радовать владельца, согласившегося выложить за мои труды аж 100 вечнозеленых.
Но мы то с вами знаем, что проделал я весь этот путь не только и не столько ради денег. Ведь так приятно, когда ты создал что-то и оно даже работает!
В архиве проект Atmel studio и схема+плата в Altium designer. Изготавливалась плата методом ЛУТ.
UPD: Архив был выложен на бесплатный файлообменник и потому скоропостижно скончался. Для хранения архива на habrastorage я встроил его в фото тахометра без циферблата(оно в верхней части статьи). В общем jpg нужно сохранить себе и открыть винраром. Можно ещё просто изменить расширение на zip.
UPD2: Схема и плата переработаны, картинки обновлены, архив по прежнему в картинке.
UPD3 Архив в картинки теперь не вставляется. Пишите в ЛС тут или найдете меня vk.com/trotskyi
До новых встреч!
Проверка прибора на автомобиле
Клиент очень доволен!
А когда увидел эту статью и все исходники, включая некоторые фото самого процесса изготовления платы — сказал, что его мозг взорван!
Читайте также: