Электронный тахометр на микроконтроллере pic. Простой универсальный тахометр на микроконтроллере ATtiny2313

Оценка 1 Оценка 2 Оценка 3 Оценка 4 Оценка 5

Данное устройство предназначено для измерения частоты вращения электродвигателей и главным преимуществом является бесконтактный метод измерения, основанный на стробоскопическом эффекте, где яркие световые импульсы производит светодиод высокой мощности. Для измерения необходимо установить частоту вспышек в соответствии с частотой вращения (при освещении стробоскопом объект кажется неподвижным), используя энкодер. Измерение может быть сделано без остановки вращающегося механизма. Тахометр построен на микроконтроллере ATmega8, а результат измерения отображается на ЖК-дисплее. Кроме того, система также показывает ошибку, которая появляется в результате некоторых временных процессов в программе. Управление осуществляется с помощью поворотного энкодера и небольшой клавиатуры. Все устройство может питаться от батарей, так как из-за импульсного характера генерации потребление энергии является незначительным. Весь прибор успешно уместился в популярном корпусе KM35 , где также есть место для 9В батареи.

Схема устройства

Сердцем прибора и ее наиболее важной частью является микроконтроллер U1 (ATMEGA8-16AU), который работает от кварцевого резонатора частотой 16 МГц (X1). Дополнительные конденсаторы С1(22pF) и С2(22pF) необходимы для правильной работы резонатора. Предусмотрен интерфейсный разъем программирования Prog, который содержит набор контактов для последовательного программирования. Разъем требуется, поскольку микроконтроллер выполнен в SMD корпусе. С5 (100 нФ) фильтры питания микроконтроллера. Конденсаторы С6(100 nF) и С7(100 nF) смягчают крутизну сигнала, генерируемого энкодером, что облегчает его бесперебойную работу в программе. Кнопки S1 - S6 (uSwitch) являются дополнительным клавиатурным блоком. Светодиод мощностью 0,5 W излучает вспышки света, рабочий ток ограничен резистором R4(30R / 2W) и управляется с помощью транзистора Т2(BC337) и резистора R3(330R). Светодиод подключается непосредственно к источнику питания без стабилизатора, чтобы минимизировать воздействие импульсов тока на микроконтроллер и уменьшить нагрузку на стабилизатор U2(78L05). Конденсаторы С3(220uF) и С4(47uf) необходимы для правильной работы стабилизатора. Индикация результатов измерения осуществляется на ЖК-дисплее (W1, 16x2). Контраст устанавливается потенциометром P1(10k), подсветка включается программно с помощью T1(BC556), R1(47R) и R2(3,3k).

Сборка

Прибор может быть успешно построен на основе печатной платы, которая доступна в архиве внизу страницы. Также доступа плата в зеркальном отображении. Плата проста в сборке, но включает в себя компоненты для пайки SMD, которые могут вызвать проблемы для начинающих радиолюбителей. Сборка должна быть начата с пайки двух перемычек. Далее должны быть установлены SMD конденсаторы и резисторы, они используются в популярных корпусах 0805(2x1.2mm). Далее, припаивается на место микроконтроллер U1, обратите внимание на правильность установки ключа. Кнопки должны иметь длину 15 мм и слегка выступать над ЖК дисплеем, это будет важно при установке платы в корпус. Точно так же и в случае с энкодером. Потенциометр Р1 установлен таким образом, чтобы его можно было регулировать через отверстие в боковой стенке корпуса. Плата разработана таким образом, что она легко помещается в популярном корпусе KM35.

Калибровка и измерение

После того как был написан первоначальный вариант кода и произведен расчет таймера делителя, измерения показали отклонение частоты генерируемых вспышек по отношению к теоретическим расчетам. Эта погрешность появляется из-за работы делителя таймера, равного 1, времени, которое необходимо для обслуживания прерывания, а иногда из-за перезагрузки значения таймера в регистрах. В приведенной ниже таблице, включены измерения частот, генерируемых на выходе (F_p) по отношению к частоте, которая должна быть теоретически (f_i) и соответствующие значения оборотов (умножаются на 10, чтобы получить точность установки в 0,1 об/мин).

Данные из таблицы делятся на два диапазона, первый от 60 до 480 об/мин и второй диапазон 480-42000 об/мин. Это разделение результат программы, в которой работают два диапазона измерения. Графики ниже показывают зависимость измеренных и теоретических данных:



В качестве калибровочной кривой была принята квадратичная зависимость:

y = a \cdot x^2 + b \cdot x +c

где у - обороты теоретические, х - измеренные обороты, а, b, c - коэффициенты в результате регрессии. Графики были выполнены в программе Gnuplot, и поправочные коэффициенты постоянные для двух областей работы системы представлены ниже:

Для диапазона 60-480 об/мин: a= 1.88622104239405e-006 b= 0.999905059864626 c= 0.189869882714651 Для диапазона 480-42000 об/мин: a= 2.54573967680295e-007 b= 0.996905226980814 c= 1.00037985789872

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

Печатные платы и внешний вид прибора

Программирование fuse-битов микроконтроллера

Простой универсальный тахометр на микроконтроллере ATtiny2313

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

Схема тахометра очень простая - один микроконтроллер ATtiny2313 и четырёхсимвольный светодиодный индикатор. Транзисторные ключи в целях упрощения отсутствуют. Индикатор можно использовать как с общим катодом, так и с общим анодом - это выбирается в исходнике. Тахометр может подсчитывать обороты как в секунду, так и в минуту, что делает его полностью универсальным.

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


Нажмите для увеличения
Перейдём непосредственно к схеме. Если устройство подключается непосредственно к контроллеру двигателя с TTL-уровнями, то импульсы можно подавать просто на вывод 6 микроконтроллера. В противном случае следует выполнить простейший преобразователь уровня на транзисторе.

Для получения и стабилизации напряжения питания +5 вольт применён линейный стабилизатор 1117 с низким падением напряжения для большей экономичности.

В качестве светодиодного индикатора применён индикатор от микроволновки с общим анодом. Так как он уже содержит в себе резисторы на 220 Ом, то на печатной плате они не предусмотрены.


На верхней стороне печатной платы имеются аж 10 перемычек, но они весьма легко устанавливаются.


С обратной стороны установлены SMD-компоненты: это два конденсатора по 22 пФ для кварцевого резонатора, микросхема стабилизатора и фильтрующие конденсаторы.

Кварцевый резонатор для микроконтроллера ATtiny2313 можно устанавливать на 8 или 4МГц, это задаётся в исходнике и управляет прескалером.

Режим отображения оборотов - в секунду или в минуту - задаётся аналогично, в исходнике. Для отображения количества оборотов в минуту рассчитанное количество оборотов в секунду просто программно умножается на 60. Имеется возможность программного округления расчитаных значений. Эти нюансы прокомментированы в исходном коде.

При прошивке микроконтроллера необходимо установить фьюзы:

CKSEL1=0
BODLEVEL0=0
BODLEVER1=0
SPMEN=0

Исходник написан на языке C в Codevision AVR. Он был позаимствован из другого проекта - тахометра для трёхлопастного вертолёта.

Коротко о настройке: необходимо заранее определить, какое количество импульсов за 1 оборот будет подаваться на вход тахометра. Например, если их источником будет контроллер трёхфазного мотора на LB11880 , то он выдаёт по три импульса на каждый оборот шпинделя. Поэтому в исходном коде следует указать это значение.

Выбор индикатора - с общим анодом или с общим катодом (ненужное значение - закомментировать):

//#define Anode
#define Cathode

Количество тахометрических импульсов на 1 оборот вала:

#define byBladeCnt 2

Выбор частоты кварцевого резонатора - 0x00 для 4МГц, 0x01 - для 8МГц:

#define Prescaler 0x01

Выбор отображения оборотов в минуту:

lTmp = (62500L * 60L * (long)wFlashCnt);

Для отображения количества оборотов в секунду необходимо убрать умножение на 60:

lTmp = (62500L * (long)wFlashCnt);

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

If (byDisplay > 4)
{
wRpm++;
R += 10;
}

Так как в этой конкретной конструкции применён весьма специфический индикатор, то разводка печатной платы не прикладывается.

Данное устройство представляет из себя неплохой тахометр. Предел измерений 100 — 9990 об/мин. Точность измерения — ± 3 об/мин. Но для лучшего восприятия данные округляются. Данный прибор стоит у меня на авто — Таврия. Также устанавливалась на Chevrolet Cavalier, ВАЗ-2109, мотоцикл ЯВА-350 12-ти вольтовый, скутер Honda Lead 90.

Присутствуют две входных цепи:

  • вывод 6 (PD2) — вход прерывания INT0. Этот вход используется для измерения количества оборотов двигателя.
  • вывод 11 (PD6). Этот вход используется для уменьшения яркости индикаторов при включении габаритов на авто.

В схеме применён кварцевый резонатор на частоту 8MHz для большей точности и стабильности измерений.

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

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

Печатная плата:

В собранном виде это выглядит вот так:

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

FUSES выставлены в проекте, но если кто-то шьёт не из CodeVisionAVR, то повторю их тут:

В проекте в 17-й строке есть следующее определение:

#define byBladeCnt 2 //1- две катушки, 2 — одна катушка, 4 — мотоцикл…

Для советских автомобилей и авто с распределительной системой зажигания этот параметр будет 2. Для систем зажигания с двумя катушками (как в ВАЗ-2110) — 1. На мотоцикле и мопеде (2-х тактная система зажигания) этот параметр равен 4.

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

Посидев и поразмышляв, придумал следующее:

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

В общем, не буду тянуть кота за..... :)

Был у меня микроконтроллер на тот момент такой - PIC16F88. Вот что получилось.

Схема устройства:

Я не стал заморачиваться с датчиком ИК сигнала. Хотя при желании можно было (и это для любознательных может послужить стимулом для усовершенствования J) воткнуть вместо фотодиода датчик TSOP1736 (который, собственно, был у меня в наличии на тот момент). Подавать на него 36 кГц можно, в принципе, с генератора, собранного на 555 таймере. Запускать генератор можно как раз сигналом, включающим ИК светодиод. Вот так как то… Причем, эксперименты такие я проводил. При подаче света с частотой 36 кГц на TSOP, его выход давал 5 вольт. При закрытии луча света, выход TSOP сбрасывался в ноль. Но, так как стояла задача собрать автономное устройство с минимальным потреблением, то тратить энергию на датчик и генератор я счел расточительным. К тому же, расстояние до измеряемого объекта было не особо критично. Устраивало расстояние даже в сантиметр. В общем, получилось так.

Питание ЖКИ - прямо с порта PIC, так же, как и питание LM358, для уменьшения энергопотребления в режиме sleep.

Живой платы первого опытного образца, к сожалению не осталось:(. Это была плата без усиления сигнала с фотоприемника. Сигнал поступал сразу в МК.

Выглядела плата так:

Так как уровня сигнала с фотоприемника не всегда хватало микроконтроллеру, то пришлось дополнять схему. Я собрал усилитель на LM358. Теперь схема выглядит именно так, как выглядит.

Подобрав корпус, и адаптировав под него плату, было собрано такое симпатичное устройство:


Принцип работы такой:

На исследуемый объект наносится метка обычным канцелярским корректором. Около 5-7 мм в диаметре. Либо приклеивается метка из белой бумаги.

При включении питания в первый раз, PIC начинает считать длительность периода между импульсами, которые, отражаясь от метки, приходят на фотоприемник. Если импульсов нет в течение примерно 4 секунд, показания сбрасываются на ноль. Если импульсы отсутствуют примерно 20 секунд, прибор переходит в режим пониженного потребления. Выключается индикатор. Для следующего измерения нужно нажать кнопку, подключенную к порту RB0. и прибор "просыпается". Цикл начинается сначала.

Точность показаний - отличная, но не на всем диапазоне. На высоких оборотах показания "плавают”, но незначительно, не критично.

Единственный минус этого прибора - не очень большая дальность. Около сантиметра. Но это решаемо, как я писал выше, с помощью фотоприемника типа TSOP1736 или TSOP1738 и генератора на 555 таймере. Надобность в LM358 в этом случае отпадает.

Еще одно уточнение - материал исследуемого объекта должен быть темным.

Архив с файлом протеуса и исходник лежит .

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

Этот цифровой тахометр пригоден для подсчета количества оборотов практически любого типа двигателя внутреннего сгорания. Погрешность измерения тахометра составляет всего 50 оборотов/минуту. Для показа результата используется четырехразрядное светодиодное табло.
Для настройки режима работы необходимо использовать кнопку «Select». Первое нажатие выводит на табло текущий режим работы. Режимом работы по умолчанию является третий, когда датчик выдает два импульса за оборот маховика. Соответственно, на табло появится надпись Р-2,0.

Каждое последующее нажатие кнопки переключает режим работы тахометра на следующий. Всего их девять: 0.5, 1, 2, 3, 4, 5, 6, 7, 8 имп./оборот соответственно, они устанавливают количество импульсов выдаваемых датчиком за один оборот маховика. Чем выше количество импульсов, тем точнее производится измерение.

После выбора режима работы необходимо подождать 5-10 секунд. За это время тахометр произведет запись режима работы в память микроконтроллера и перейдет в рабочий режим. В дальнейшее тахометр будет сразу при подаче питания переходить в рабочий режим. Если возникает необходимость перенастроить тахометр, то надо нажать кнопку «Select» и произвести настройку тахометра еще раз.

Стоит обратить внимание на параметры и устройство входной цепи. Для конкретного типа зажигания возможны некоторые корректировки номиналов, из-за разных устройств зажигания в различных видах авто. Это необходимо, чтобы тахометр хорошо работал с основными гармониками и не реагировал на высшие гармоники. Без такой корректировки точная работа тахометра невозможна.

Обновленная версия прошивки включает в себя функцию проверки индикаторов. Это необходимо для проведения двухсекундного теста выявления неисправности датчиков.

Прикрепленные файлы:

Прошивка

Простой автоусилитель моноблок на TDA1560Q Автомобильный бездроссельный БП на IRS2153 для ноутбуков и мобильников Внешний USB-разъем в автомагнитоле



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: