Главная » Статьи » Общая тематика

Тахометр на 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 нетрудно переделать, проще будет




Категория: Общая тематика | Добавил: ADMIN (25.12.2013)
Просмотров: 6042 | Комментарии: 4 | Теги: приемник, PIC, ик, статьи | Рейтинг: 5.0/2
Всего комментариев: 4
1 PINCOD   (25.12.2013 19:14)
Всем привет и с наступающим!У меня просьба к автору статьи,а можно выложить код не в HEX файле ,а в Basic Proton.С уважением PINCOD

2 Andriy76   (25.12.2013 22:56)
Извините что здесь пишу . Интересен будет ответ Админа . Я сам на распутьи что и как . Также знакомому сделал зарядку с БП . И не знаю выкладывать исходник или нет . Вроде сделал - пока не жалуеться .
А так отлично , а то уже давно не было обновлений на сайте .

3 ADMIN   (26.12.2013 03:03)
Да вот с исходником беда. Не осталось его, один HEX. Но, в крайнем случае, написать заново не сложно. Создавайте тему на форуме, помогу уж, если что. Я поэтому статью в отдельную категорию выделил, потому что ни к одному языку не отнесешь. Но писал на протоне. Насчет обновлений статей - да, давно не было.

4 AlexSSE   (26.01.2015 10:18)
Вопрос к автору (и вообще к знающим) - пытаюсь переделать программу (тахометр) для измерения расхода жидкости (литры в минуту) - есть датчик расхода - на выходе 130 импульсов на 1 литр - необходимо считать импульсы и сравнив со временем (1 минута) посчитать и вывести результат (частота измерений - не менее 1 раза в сек, а результат показывать - литры в минуту), то есть динамически показывать расход (Литры в минуту) для того чтобы контролировать скорость подачи воды водяного насоса (контролируется вручную оператором (мной))  в Бейсике (да и вообще в программировании-начинающий)

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]