Тахометр своими руками на микроконтроллере – Тахометр на AVR микроконтроллере ATtiny2313 — Готовые устройства — Каталог статей — Микроконтроллеры

Цифровой тахометр на микроконтроллере PIC16F628

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

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

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

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

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

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

ПрошивкаСкачать

Автор: Вадим Корнелюк. Москва.


volt-index.ru

Цифровой тахометр на микроконтроллере — Поделки для авто

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

Первое нажатие выводит на табло текущий режим работы. Режимом работы по умолчанию является третий, когда датчик выдает два импульса за оборот маховика. Соответственно, на табло появится надпись Р-2,0.

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

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

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

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

Прошивка— СКАЧАТЬ…

Похожие статьи:


xn—-7sbgjfsnhxbk7a.xn--p1ai

Цифровой тахометр на микроконтроллере PIC16F628. Схема

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

Описание работы тахометра на  микроконтроллере PIC16F628

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

Первое нажатие «SELECT» вызовет показ текущего значения количества импульсов, которые выдает датчик за один оборот маховика. Изначально установлено 2 импульса за один оборот. Соответственно на индикаторе отобразится Р-2,0. Каждое последующее нажатие «SELECT» приведет к перебору всех имеющихся значений (0,5; 1; 2; 3; 4; 5; 6; 7; 8 имп./оборот)

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

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

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

Скачать прошивку (скачено: 625)

Источник

fornk.ru

Тахометр на AVR микроконтроллере с LED индикацией

Данное устройство представляет собой неплохой тахометр, предел его измерений составляет 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. Устройство работает уже более двух лет без каких либо проблем на моей машине, да и остальные не жалуются…

Скачать прошивку для индикатора с ОК(-) (2 Кб). Загрузок: 1207
Скачать прошивку для индикатора с ОА(+) (2 Кб). Загрузок: 1053
Скачать исходный код на С (CodeVisionAVR) (5 Кб). Загрузок: 2032

Автор статьи: Юрий E-mail: hardlock (пёсик) bk.ru
автора.

Просмотров: 26698

eldigi.ru

Бесконтактный тахометр на микроконтроллере AVR. Часть 1. Схема и принцип работы

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

Принцип работы

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

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

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

Таким образом, используя оптопару мы можем подсчитать время полного оборота вала, а далее, зная время (обозначим это время T в секундах), мы можем вычислит количество оборотов в минуту, используя простое выражение 60/T.

Получение данных от сенсора

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

На рисунке ниже изображена диаграмма аналогового сигнала от ИК сенсора (фотодиода)

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

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

Рисунок ниже поясняет работу такого алгоритма.

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

Принципиальная схема устройства

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

Как вы, наверное, заметили, отсутствует потенциометр регулировки контрастности дисплея (что также позволяет уменьшить размер устройства). Это возможно благодаря программной реализации алгоритма автоматической подстройки контрастности в зависимости от уровня напряжения питания с применением ШИМ и фильтра низких частот на элементах R3, R4 и C2. Пользователи могут ознакомиться с текстом алгоритма в исходном коде ПО микроконтроллера во второй части статьи.

Разъем JP1 предназначен для внутрисхемного программирования микроконтроллера. Разъем JP2 предназначен для подключения дополнительного пользовательского датчика.

Список примененных компонентов

Обозначение
в схеме

Наименование, номинал

IC1Микроконтроллер ATmega48
Q1, Q2Транзистор BCW66G
C1, C210 нФ
C4, C533 пФ
X1Кварцевый резонатор 20 МГц
R1, R2, R7470 Ом
R31 кОм
R41.5 кОм
R51 МОм
R6110 Ом
R870 Ом
LED3Светодиод
IR1Оптопара TCND-5000
B1Кнопка
B2Выключатель питания
JP1Разъем внутрисхемного программирования
JP2Разъем расширения

Демонстрация работы бесконтактного тахометра на микроконтроллере AVR можно посмотреть

 

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

meandr.org

DIY цифровой тахометр на AVR ATtiny2313, КР514ИД2 и оптопаре / Хабр

DIY цифровой тахометр на AVR ATtiny2313, КР514ИД2 и оптопаре

Добрый день.
Выношу на Ваше рассмотрение схему простенького цифрового тахометра на AVR ATtiny2313, КР514ИД2, и оптопаре спроектированного мною.
Сразу оговорюсь: аналогичных схем в интернете много. У каждой реализации свои плюсы и минусы. Возможно, кому-то мой вариант подойдет больше.

Начну, пожалуй, с тех. задания.
Задача: нужно сделать цифровой тахометр для контроля оборотов электрического двигателя станка.
Вводные условия: Есть готовый реперный диск на 20 отверстий от лазерного принтера. В наличии много оптопар от сломанных принтеров. Средние (рабочие) обороты 4 000-5 000 оборотов/минуту. Погрешность отображаемых результатов не должна превышать ± 100 оборотов.

Ограничение: питание для блока управление составляет 36В (тахометр будет установлен в один корпус с блоком управления – об этом ниже).

Маленькое лирическое отступление. Это станок моего друга. На станке установлен электромотор PIK-8, обороты которого контролируются согласно найденной в интернете и модифицированной схеме. По просьбе друга и был разработан простенький тахометр для станка.

Изначально в схеме планировалось применить ATMega16, но рассмотрев условия, решено было ограничиться ATtiny2313, работающего от внутреннего (RC) генератора на частоте 4 Мгц.

Общая схема выглядит следующим образом:

Как видно, ничего сложного. Для преобразования двоичного кода в семисегментный, я применил дешифратор КР514ИД2, это дает сразу три плюса.

  • Во первых – экономия места в памяти ATtiny2313 за счет уменьшения рабочего кода (т.к. процедура программного преобразования двоичного кода в семисегментный отсутствует в прошивке за ненадобностью).
  • Во вторых: уменьшение нагрузки на выходы ATtiny2313, т.к. светодиоды «засвечивает» КР514ИД2 (при высвечивании цифры 8 максимальное потребление составит 20-30 мА (типичное для одного светодиода) * 7 = 140-210 мА что «много» для ATtini2313 с её полным паспортным максимальным (нагруженным) потреблением 200 мА).
  • В третьих – уменьшено число «занятых» ног микроконтроллера, что дает нам возможность в будущем (при необходимости) модернизировать схему путём добавления новых возможностей.

Сборка устройства осуществлена на макетной плате. Для этого была разобрана завалявшаяся в закромах плата от нерабочей микроволновой печи. Цифровой светодиодный индикатор, ключевые транзисторы (VT1-VT4) и ограничительные резисторы (R1 – R12) были взяты комплектом и перенесены на новую плату. Все устройство собирается, при наличии необходимых компонентов, с перекурами за пол часа. Обращаю внимание: у микросхемы КР514ИД2 плюсовая ножка питания — 14, а минус — 6 (отмечены на схеме). Вместо КР514ИД2 можно применить любой другой дешифратор двоичного кода в семисегментный с питанием от 5В. Я взял то, что было под рукой.

Выводы «h» и «i» цифрового светодиодного индикатора отвечают за две точки по центру между цифрами, не подключены за ненадобностью.

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

При необходимости внесения изменений в прошивку тахометра на плате предусмотрен разъем ISP.

На схеме подтягивающий резистор R12, номиналом 30 кОм, подобран опытным путём для конкретной оптопары. Как показывает практика – для разных оптопар он может отличаться, но среднее значение в 30 кОм должно обеспечить устойчивую работу для большинства принтерных оптопар. Согласно документации к ATtiny2313, величина внутреннего подтягивающего резистора составляет от 20 до 50 кОм в зависимости от реализации конкретной партии микроконтроллеров, (стр. 177 паспорта к ATtiny2313), что не совсем подходит. Если кто захочет повторить схему, может для начала включать внутренний подтягивающий резистор, возможно у Вас, для Вашей оптопары и вашего МК работать будет. У меня, для моего набора не заработало.

Так выглядит типичная оптопара от принтера.

Светодиод оптопары запитан через ограничивающий резистор на 1К, который я разместил непосредственно на плате с оптопарой.

Для фильтрации пульсаций напряжения на схеме два конденсатора, электролитический на 220 мкФ х 25В (что было под рукой) и керамический на 0,1 мкФ, (общая схема включения микроконтроллера взята из паспорта ATtiny2313).

Для защиты от пыли и грязи плата тахометра покрыта толстым слоем автомобильного лака.

Замена компонентов.

Можно применить любой светодиодный индикатор на четыре цифры, либо два сдвоенных, либо четыре поодиночных. На худой конец, собрать индикатор на отдельных светодиодах.

Вместо КР514ИД2 можно применить КР514ИД1 (которая содержит внутри токоограничивающие резисторы), либо 564ИД5, К155ПП5, К155ИД9 (при параллельном соединении между собой ножек одного сегмента), или любой другой преобразователь двоичного в семисегментный (при соответствующих изменениях подключения выводов микросхем).

При условии правильного переноса монтажа на МК ATMega8/ATMega16 данная прошивка будет работать, как и на ATtiny2313, но нужно подправить код (изменить названия констант) и перекомпилировать. Для других МК AVR сравнение не проводилось.

Транзисторы VT1-VT4 – любые слаботочные, работающие в режиме ключа.

Принцип работы основан на подсчете количества импульсов полученных от оптопары за одну секунду и пересчет их для отображения количества оборотов в минуту. Для этого использован внутренний счетчик Timer/Counter1 работающий в режиме подсчета импульсов поступающих на вход Т1 (вывод PD5 ножка 9 МК). Для обеспечения стабильности работы, включен режим программного подавления дребезга. Отсчет секунд выполняет Timer/Counter0 плюс одна переменная.

Расчет оборотов, на чем хотелось бы остановиться, происходит по следующей формуле:
M = (N / 20) *60,

где M – расчетные обороты в минуту (60 секунд), N – количество импульсов от оптопары за одну секунду, 20 – число отверстий в реперном диске.

Итого, упростив формулу получаем:
M = N*3.

Но! В микроконтроллере ATtiny2313 отсутствует функция аппаратного умножения. Поэтому, было применено суммирование со смещением.

Для тех, кто не знает суть метода:

Число 3 можно разложить как

3 = 2+1 = 21 + 20.

Если мы возьмем наше число N сдвинем его влево на 1 байт и приплюсуем еще одно N сдвинутое влево на 0 байт – получим наше число N умноженное на 3.

В прошивке код на AVR ASM для двухбайтной операции умножения выглядит следующим образом:

Mul2bytes3:
CLR LoCalcByte //очищаем рабочие регистры
CLR HiCalcByte
mov LoCalcByte,LoInByte //грузим значения полученные из Timer/Counter1
mov HiCalcByte,HiInByte
CLC //чистим быт переноса
ROL LoCalcByte //сдвигаем через бит переноса
ROL HiCalcByte
CLC
ADD LoCalcByte,LoInByte //суммируем с учетом бита переноса
ADC HiCalcByte,HiInByte
ret

Проверка работоспособности и замер точности проводился следующим образом. К вентилятору компьютерного куллера был приклеен картонный диск с двадцатью отверстиями. Обороты куллера мониторились через BIOS материнской платы и сравнивались с показателями тахометра. Отклонение составило порядка 20 оборотов на частоте 3200 оборотов/минуту, что составляет 0,6%.

Вполне возможно, что реальное расхождение составляет меньше 20 оборотов, т.к. измерения материнской платы округляются в пределах 5 оборотов (по личным наблюдениям для одной конкретной платы).

Верхний предел измерения 9 999 оборотов в минуту. Нижний предел измерения, теоретически от ±10 оборотов, но на практике не замерялся (один импульс от оптопары в секунду дает 3 оборота в минуту, что, учитывая погрешность, теоретически должно правильно измерять скорость от 4 оборотов в минуту и выше, но на практике данный показатель необходимо завысить как минимум вдвое).

Отдельно остановлюсь на вопросе питания.

Вся схема питается от источника 5В, расчетное потребление всего устройства не превышает 300 мА. Но, по условиям ТЗ, тахометр конструктивно должен находится внутри блока управления оборотами двигателя, а к блоку от ЛАТРа поступает постоянное напряжение 36В., чтобы не тянуть отдельный провод питания, внутри блока установлена LM317 в паспортном включении, в режиме понижения питания до 5В (с ограничивающим резистором и стабилитроном для защиты от случайного перенапряжения). Логичнее было бы использовать ШИМ-контроллер в режиме step-down конвертера, на подобии МС34063, но у нас в городе купить такие вещи проблематично, поэтому, применяли то, что смогли найти.

Фотографии платы тахометра и готового устройства.

Еще фотографии
К сожалению, сейчас нет возможности сфотографировать на станке.

После компоновки плат и первой пробной сборки, коробка с устройством отправилась на покраску.

Исходный код, на AVR ASM, файлы проекта AVR Studio4 и скомпилированный .HEX файл находятся здесь:http://djkiridza.org.ua/ldd/taho-v029.zip.

Зеркало здесь:http://fileobmen.org.ua/DJ_Kiridza/taho-v029.zip

В случае, если у Вас тахометр не заработал сразу после включения, при заведомо верном монтаже:

1) Проверить работу микроконтроллера, убедится, что он работает от внутреннего генератора. Если схема собранна правильно – на циферблате должно отображаться четыре нуля.

2) Проверить уровень импульсов от оптопары, при необходимости подобрать номинал резистора R12 или заменить схему подключения оптопары. Возможен вариант обратного подключения оптотранзистора с подтяжкой к минусу, с включенным или нет внутренним подтягивающим резистором МК. Также возможно применить транзистор в ключевом (инвертирующем) режиме работы.

P.S. по желанию заказчика тахометр отображает не один ноль, а четыре при отсутствии импульсов от оптопары.

P.P.S. Тахометр оказался очень чувствителен к перепадам оборотов двигателя. Незначительные пульсации напряжения вызывают отклонение частоты вращения, что незамедлительно отображается на экране тахометра. В будущем планирую сделать обработку для округления отображаемых результатов в пределах ±50 оборотов, если это будет нужно заказчику.

habr.com

Тахометр на PIC микроконтроллере — Общая тематика

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

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

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

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

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

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

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

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

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

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

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

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

 
  

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

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

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

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

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

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

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

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

www.picbasic.ru