Тахометр необходим для подсчета значения RPM (Rotations per minute) — количества оборотов вентилятора, колеса или иного вращающегося оборудования. В простейшем случае это система из инфракрасного приемника, передающего устройства и контроллера: когда, например, ИК-луч прерывается, значит, вращающийся элемент его перекрыл. Информацию получает контроллер и вычисляет на ее основе частоту вращения. В продаже есть множество образцов заводских приборов, но счетчик оборотов можно сделать и самостоятельно с помощью программируемой платы. Далее мы рассмотрим, как собрать несложный тахометр на Ардуино.
Принцип работы
Как уже указывалось, простой тахометр состоит из трех основных модулей:
- передатчик луча (инфракрасного или видимого спектра);
- приемник;
- плата управления.
Вращаясь, контролируемый объект перекрывает луч. Контроллер фиксирует этот сигнал и далее, на основе продолжающих поступать данных, подсчитывает обороты детали в минуту (или иную заданную настройками единицу времени).
Прибор может выводить RPM в виде сигналов на другие устройства в составе цепи. В нашем случае это будет цифровой LCD-дисплей, где станет отображаться уровень оборотов. В результате получится система на один выход и один вход, которая:
- генерирует на входе постоянный сигнал 5 В;
- при обрыве связи понижает таковой до 0 В;
- после этого увеличивает показатель счетчика вращений на 1;
- выполняет дополнительные вычисления и по триггеру выводит RPM на дисплей.
Компоненты
Для сборки понадобятся:
- плата Arduino Uno. Ключевой управляющий и логический элемент, принимающий сообщения о прерывании светового луча и делающий вывод о нахождении на участке «приемник-передатчик» вращающегося объекта. Импульсные команды и встроенный таймер позволят системе вычислить обороты вентилятора;
- макетная плата;
- ЖК-экран 16×2. Служит для понятного отображения счетчика RPM;
- резистор подстроечный на 5 кОм. С его помощью регулируется контрастность упомянутого выше дисплея. Резистор позволяет менять напряжение от 0 до +5 вольт и настраивать удобный контраст экрана;
- SIP-разъемы;
- перемычки;
- транзисторы — 2 штуки (2N3904 и 2N3906). Они преобразуют уровень сигнала с фототранзистора до «понятного» плате Ардуино уровня 0 или 5 В;
- фототранзистор — 1 шт. При падении на этот модуль сильного света транзистор перекрывается. Пока ИК-диод горит, фотодатчик остается «открытым», но при перекрытии он, разумеется, перейдет в закрытое состояние;
- ИК-светодиод — 1 шт. Основная часть передающего модуля;
- резисторы на 10 Ом, 100 и 15–16 кОм — по одной штуке;
- небольшой пятивольтовый ПК-вентилятор.
Для связи будет служить подсоединенный через низкоомный резистор ИК-светодиод: так луч выйдет ярче. Сигнал с диода пойдет на фототранзистор, «закрывающийся» при отключении светового потока. В качестве подконтрольного объекта используется компьютерный вентилятор, частоту вращения которого и станет считать прибор. Он будет висеть между передатчиком и приемником.
Подключенный по транзисторной схеме ИК-приемник создает прерывания и отправляет их на контроллер Ардуино. Плата обрабатывает их через процедуры из программной библиотеки для работы с дисплеями Arduino LCD и выводит данные на экран.
Принципиальная схема будущего устройства:
Особенности схемы тахометра
Приведенная раскладка имеет некоторые нюансы:
- на интерфейсе ЖК-дисплея к экрану подключены 4 контакта передачи данных и 2 управляющих;
- сигнал перекрытия инфракрасного луча поступает на цифровой вход 2 контроллера Arduino. По этому прерыванию плата зафиксирует импульс и увеличит внутренний счетчик тахометра.
Код программы
Для создания тахометра на плате Ардуино нужна не только аппаратная часть, но и программная — загружаемый в систему скетч. Рассматриваемый пример строится на упомянутой выше библиотеке функций Arduino LCD (LiquidCrystal.h). Для упрощения понимания работы последней можно привести пример простого скетча: он выводит на экран стандартную фразу «Hello, World!». Код удобно использовать для тестирования оборудования.
В нашем приборе будет интенсивно применяться метод lcd.print(millis()/1000).
Полный листинг программы (доступен по ссылке): https://cloud.mail.ru/public/F5Xc/styi6qGmt
Считаем RPM вентилятора
Подсчет ведется по прерываниям луча инфракрасного передатчика. Метод удобный, но тестовым объектом выступает вентилятор с семью лопастями. Значит, на один полный оборот придется семь прерываний луча, и только завершение этого цикла будет означать увеличение счетчика RPM на единицу.
Итак, каждое седьмое прерывание равно одному обороту. Зная необходимое для такового время, можно вычислить и значение RPM. Вычисления выполняются по формулам:
- время на полный оборот вентилятора — P×(µS/об.);
- RPM = обороты в минуту = 60 000 000 × (µS/мин) × (1/P) = (60 000 000 / P) × (об/мин).
Скетч выполняет две задачи:
- работа основного цикла;
- обновление штампа времени зафиксированных прерываний ИК-потока.
В главном цикле наш контроллер считает количество RPM и обновляет информацию на экране.
Учитывая особенности кода, последнее станет происходить несколько раз в секунду. RPM тоже считается в основном цикле, поскольку прерывания обрабатываются отдельной функцией программы.
Важно: в рассматриваемом примере использован семилопастный вентилятор. С другими, например, на 4 лопасти (и в принципе для устройств с некоторым известным заранее количеством прерываний) в коде необходимо поменять конструкцию time×7 на time×4 (или иное требуемое число).
Точность работы составляет около 96%, что вполне достаточно для бытового применения.
Сборка схемы
Когда все детали подготовлены, можно приступать к монтажу.
Первыми подсоединяются +5 В питание и линии управления/поступления данных экрана. Затем собственно жидкокристаллический мини-дисплей, регулятор контрастности и светодиод. Тахометр на Arduino в собранном виде:
Необходимо выдержать некоторое расстояние между транзистором и диодом — для возможности свободно поместить там контролируемый объект. Чем он больше, тем выше должно быть и это расстояние.
Применение тахометра
В результате получается способный с достаточно высокой точностью измерять RPM нужного объекта прибор. Это основное предназначение тахометра.
Но датчики обрыва луча (а тахометр и есть датчик) пригодны не только для этих целей. Так, их удобно использовать как сенсор открытия-закрытия дверей, как элемент простой сигнализации (фиксация движения), и в иных задачах.
Еще один пример тахометра
Рассмотрим другой образец схемы — на основе датчика присутствия линии и библиотеки 4Led. Измерение проводится по нанесенной на объект контрастной черте.
Важно: цвет черты не имеет значения.
Понадобятся:
- плата микрокомпьютера Arduino Uno;
- аналоговый детектор линии Trema — 1 шт.;
- четырехразрядный LED-индикатор Trema — 1 шт.;
- Trema Shield (блок расширения) — 1 шт.
Сборка
Индикатор можно подключить к аналоговым или цифровым выходам контроллера. Используется два вывода, номера которых указываются в скетче. Контакт датчика линии также задается в коде и «цепляется» на соответствующий аналоговый вход микрокомпьютера.
Механизм действия
Такой вариант тахометра действует следующим образом:
- информация на ЖК-панель идет при переходе сенсора линии со «светлой» области на «темную»;
- программа проверяет цвет поля под датчиком. Если темный, выполняется переход к следующему шагу;
- на нем контроллер отображает на экране число RPM и сохраняет время обновления информации;
- если темное/светлое фиксируется датчиком больше 6 секунд, код считает это остановкой и выводит на дисплей надпись STOP.
Скетч для загрузки (также есть по ссылке): https://cloud.mail.ru/public/QQe7/Di8RmxRnf
Заключение
Как видно, собрать несложный и функциональный тахометр на Ардуино довольно просто. При этом можно уложиться в сумму около 10–20 USD и получить на выходе компактное, удобное и функциональное устройство с достаточно высокой для бытовых задач точностью. А благодаря модульности Ардуино и богатой экосистеме схему можно дорабатывать и дополнять новой функциональностью.