Цифровой тахометр на AVR микроконтроллере (ATtiny2313). Бесконтактный тахометр-стробоскоп на Atmega8

Что такое вообще тахометр ? Тахометр - это устройство, используемое для измерения об/мин (обороты в минуту) любого вращающегося тела. Тахометры делают на основе контактных или безконтактных. Бесконтактные оптические тахометры обычно используют лазерный или инфракрасный луч для контроля вращения любого тела. Это делается путем вычисления времени, затраченного на одно вращение. В этом материале, взятом на одном английском сайте, мы покажем вам, как сделать портативный цифровой оптический тахометр с помощью Arduino Uno . Рассмотрим расширенную версию прибора с ЖК-дисплеем и модифицированным кодом.

Схема тахометра на микроконтроллере

Список деталей для схемы

  • Микросхема - Arduino
  • Резисторы - 33k, 270 Ом, 10k потенциометр
  • LED элемент - синий
  • ИК-светодиод и фотодиод
  • 16 x 2 LCD экран
  • 74HC595 регистр сдвига

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

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

  • 1. Для начала нужно зашкурить светодиод и фотодиод, чтобы сделать их плоскими.
  • 2. Затем сложите полоску бумаги лист, как показано на рисунке. Сделайте две такие структуры так, чтобы светодиод и фотодиод плотно сесть в него. Соедините их вместе клеем и покрасьте в черный цвет.
  • 3. Вставить светодиод и фотодиод.
  • 4. Склеить их с помощью суперклея и припаять провода.

Номиналы резисторов могут различаться в зависимости от того, какой фотодиод вы используете. Потенциометр помогает уменьшить или увеличить чувствительность датчика. Припаяйте провода датчика как показано на рисунке.

Схема тахометра использует 8-разрядный регистр сдвига 74HC595 с LCD дисплеем 16х2. Сделайте в корпусе небольшое отверстие, чтобы зафиксировать LED индикатор.

Припаяйте 270-омный резистор на светодиод и вставьте в контакт 12 Arduino. Датчик введён в кубическую трубку, чтобы дать дополнительную механическую прочность.

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

Видео работы самодельного тахометра

Простой универсальный тахометр на микроконтроллере 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.

0

Ibrahim Kamal (IKALOGIC) Рассматриваемый бесконтактный тахометр - это компактное устройство на микроконтроллере ATMega48 производства компании Atmel, позволяющее измерять высокие скорости вращения бесконтактным способом. Для измерения используется ИК сенсор (оптопара, ИК светодиод и ИК фотодиод в одном корпусе). Вывод данных осуществляется на двухстрочный символьный ЖК дисплей на базе контроллера HD44780.

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

Благодаря этой наклейке, каждый оборот вала вызывает появление отраженного импульса ИК излучения. Используемый сенсор производства компании Vishay Semiconductor имеет маркировку TCND-5000.

Данный сенсор был выбран после тестирования эквивалентных продуктов, так как его корпус обеспечивал оптическую изоляцию передающей и приемной части, а ИК светодиод выдерживает большие токи, что позволяет проводить измерения на больших расстояниях. Таким образом, используя оптопару мы можем подсчитать время полного оборота вала, а далее, зная время (обозначим это время T в секундах), мы можем вычислит количество оборотов в минуту, используя простое выражение 60/T. Получение данных от сенсора Для снижения стоимости устройства и сложности сборки, а также для повышения гибкости системы, мы непосредственно подключим ИК сенсор к микроконтроллеру и программно реализуем всю обработку получаемого сигнала. Сразу стоит заметить, что это не так просто, так как получаемый с ИК фотодиода сигнал содержит шумы, а внешнее освещение постоянно оказывает на него влияние. Таким образом, проблема состоит в том, чтобы разработать устройство с автоматической адаптацией к внешней освещенности и расстоянию до объекта измерения. На рисунке ниже изображена диаграмма аналогового сигнала от ИК сенсора (фотодиода)

Так как сигнал имеет шумы, при каждом определении наличия и отсутствия импульса (наличие импульса говорит о том, что вал вращается и сенсор «видит» отражающую наклейку), большое количество колебаний «вводит в заблуждение» микроконтроллер. Кроме того, эти факторы не позволяют использовать встроенный в микроконтроллер аналоговый компаратор, и нам необходимо ввести обработку аналогового сигнала перед каждой процедурой подсчета циклов. Решение было найдено в оценке средней интенсивности, основанную на максимальном и минимальном значении интенсивности сигнала от сенсора, и включением гистерезиса в районе средней интенсивности. Гистерезис используется для предотвращения многократного счета циклов зашумленных импульсов. Рисунок ниже поясняет работу такого алгоритма.

Когда сигнал нарастает от низкого состояния (отсутствует отражение от наклейки на валу) к высокому (отражение ИК импульса), алгоритм возьмет в расчет этот импульс высокого уровня лишь после того, как он пересечет «возрастающий уровень» гистерезиса, и примет в расчет низкий уровень лишь после того, как сигнал пересечет «спадающий уровень» гистерезиса. Такой алгоритм позволяет избежать ошибок вычислений, вызываемых шумным сигналом. Принципиальная схема устройства

Кликните для увеличения Схемотехническое решение очень простое и компактное (благодаря использованию миниатюрного сенсора), не содержит дорогостоящих компонентов. Питание устройства осуществляется от трех батарей типа AAA. Как вы, наверное, заметили, отсутствует потенциометр регулировки контрастности дисплея (что также позволяет уменьшить размер устройства). Это возможно благодаря программной реализации алгоритма автоматической подстройки контрастности в зависимости от уровня напряжения питания с применением ШИМ и фильтра низких частот на элементах R3, R4 и C2. Пользователи могут ознакомиться с текстом алгоритма в исходном коде ПО микроконтроллера во второй части статьи. Разъем JP1 предназначен для внутрисхемного программирования микроконтроллера. Разъем JP2 предназначен для подключения дополнительного пользовательского датчика. Список примененных компонентов Обозначение в схеме Наименование, номинал IC1 Микроконтроллер ATmega48 Q1, Q2 Транзистор BCW66G C1, C2 10 нФ C4, C5 33 пФ X1 Кварцевый резонатор 20 МГц R1, R2, R7 470 Ом R3 1 кОм R4 1.5 кОм R5 1 МОм R6 110 Ом R8 70 Ом LED3 Светодиод IR1 Оптопара TCND-5000 B1 Кнопка B2 Выключатель питания JP1 Разъем внутрисхемного программирования JP2 Разъем расширения Демонстрация работы бесконтактного тахометра на микроконтроллере AVR Во второй части статьи рассмотрим конструкцию прибора и основные моменты в программном обеспечении микроконтроллера, включая аналого-цифровое преобразование и организацию обмена данными с ЖК дисплеем.На английском языке: Contactless Tachometer on AVR. Part 1. SchematicПеревод: Vadim по заказу РадиоЛоцман

По материалам сайта

Предлагаю вариант тахометра на AVR микроконтроллере с большими цифрами на символьном дисплее. Цифры выстраиваются из отдельных сегментов на всю высоту дисплея, что делает показания прибора более читабельными. Рассчитывался на диапазон измерения от 300 до 9999 оборотов в минуту. Но получилось так, что при более высоких (от 10000) об/мин, младший разряд сдвигается за пределы экрана и прибор показывает количество оборотов в минуту, делённое на 10, что тоже неплохо.

Схема построена на микроконтроллере ATmega8. Для вывода показаний тахометра используется распространённый дисплей WH1602 на базе контроллера HD44780 (KS0066).

Для более точного подсчета частоты вращения коленчатого вала, микроконтроллер тактируется от внешнего кварцевого резонатора на 8 MHz. Фьюзы выставляются соответствующие:

Если высокая точность измерения не сильно важна, то можно обойтись без внешнего кварца, при этом фьюзы нужно будет выставить на тактирование от внутреннего RC генератора на 8 МГц. Так как печатная плата разведена для МК в корпусе TQFP-32, на ней, для удобства, предусмотрен ISP разъём для внутрисхемного программирования. В прикрепленном архиве находятся несколько прошивок с различными временными интервалами обновления показаний тахометра на дисплее: 50, 100, 150, 200, 250, 333 и 500 мс (период указан в имени файла прошивки), а также для сигналов входа 1 импульс на оборот и 2 импульса на оборот. Также в архиве находятся файл печатной платы и проект Proteus. После сборки схемы и прошивки микроконтроллера получается такое вот устройство:

На видео показана работа тахометра с прошивкой 1 импульс на оборот и периодом обновления показаний дисплея 50 мс

Список радиоэлементов

Обозначение Тип Номинал Количество Примечание Магазин Мой блокнот
U1 МК AVR 8-бит

ATmega8A-AU

1 В блокнот
U2 Линейный регулятор

L7805AB

1 L7805AB2T В блокнот
D1 Стабилитрон

BZV55C4V7

1 BZV55C5V1 В блокнот
D2 Выпрямительный диод

1N4001

1 В блокнот
LCD1 LCD-дисплей WH1602 1 С подсветкой В блокнот
X1 Кварцевый резонатор 8МГц 1 В блокнот
RV1 Подстроечный резистор

10 кОм

1 В блокнот
R1 Резистор

20 кОм

1 SMD 1206 В блокнот
R2 Резистор

100 кОм

1 SMD 1206 В блокнот
R3 Резистор

10 кОм

1 SMD 1206 В блокнот
R4 Резистор

47 Ом

1 SMD 1206 (47-100 Ом) В блокнот
C1-C2 Конденсатор 22 пФ 2 SMD 0805 В блокнот
C3-C5 Конденсатор 0.1 мкФ 3 SMD 0805 В блокнот
C6 470мкФ x 16В 1 В блокнот
C7 Электролитический конденсатор 100мкФ x 10B 1