Тахометр на ардуино для авто скетч
Тахометр на Arduino
Тахометр представляет собой счетчик числа оборотов в минуту (RPM counter). Существует два типа тахометров: механические и цифровые.
Общие принципы работы проектируемого тахометра
В этом проекте мы будем создавать цифровой тахометр на основе платы Arduino и модуля инфракрасного датчика для обнаружения вращения и подсчета числа оборотов любого вращающегося объекта. Принцип его действия основан на том, что инфракрасный передатчик излучает инфракрасные лучи которые затем отражаются обратно к инфракрасному приемнику и затем инфракрасный модуль генерирует импульс на своем выходе который обнаруживается контроллером Arduino когда мы нажимаем кнопку start. Он осуществляет счет в течение 5 секунд.
После этих 5 секунд плата Arduino рассчитывает число оборотов в минуту по следующей формуле:
RPM= Count x 12 для одиночного вращающегося объекта.
Но поскольку в этом проекте для демонстрации работы схемы мы используем потолочный вентилятор, то мы должны внести некоторые изменения в приведенную формулу:
RPM=count x 12 / objects
где
objects – число лопастей в вентиляторе.
Обобщенная структурная схема работы устройства представлена на следующем рисунке.
Необходимые компоненты
Работа схемы
Схема тахометра на основе платы Arduino представлена на следующем рисунке.
Схема содержит плату Arduino Pro Mini, модуль инфракрасного датчика и ЖК дисплей. Плата Arduino управляет всем процессом функционирования устройства: считывание импульса с выхода модуля инфракрасного датчика, вычисление частоты вращения (в оборотах в минуту) и передача значения этой частоты на ЖК дисплей. Инфракрасный датчик используется для обнаружения объекта. Мы можем регулировать чувствительность данного датчика с помощью встроенного в него потенциометра. Модуль инфракрасного датчика состоит из инфракрасного передатчика и фотодиода, который обнаруживает инфракрасные лучи. Инфракрасный передатчик излучает инфракрасные лучи, когда эти лучи падают на поверхность, они отражаются от нее и улавливаются фотодиодом (более подробно об этих процессах можно прочитать в статье про робота, движущегося вдоль линии). Выход фотодиода подключен к компаратору, который сравнивает значение с выхода фотодиода с опорным напряжением и результат сравнения выдает на плату Arduino.
Выход модуля инфракрасного датчика напрямую подключен ко контакту 18 (A4) Arduino. Vcc и GND подсоединены к контактам Vcc и GND arduino. ЖК дсиплей подключен к плате Arduino в 4-битном режиме. Его управляющие контакты RS, RW и En напрямую подсоединены к контактам 2, GND и 3 Arduino. Контакты данных D4-D7 подключены к контактам 4, 5, 6 и 7 Arduino. В схеме также присутствует кнопка, которую необходимо нажать для подсчета числа оборотов. Наш тахометр на основе платы Arduino подсчитывает число оборотов в течение 5 секунд а потом по вышеприведенной формуле осуществляет пересчет этого значения в число оборотов в минуту. Кнопка подключена к контакту 10 Arduino.
Исходный код программы
В программе мы будем использовать функцию чтения значения с цифрового контакта Arduino чтобы считать значение с выхода модуля инфракрасного датчика. На основе этого считанного значения мы затем будем осуществлять расчет числа оборотов в минуту.
Тахометр-спидометр на Arduino
С помощью датчика Холла и платы Ардуино можно измерять скорость вращения к примеру колеса велосипеда или самоката, в общем в любых механизмах и машинах, которым необходимы измерения скорости.
В этом проекте мы делали спидометр из кольца адресных светодиодов под управлением компактной платы Ардуино Нано версии с CH340.
1. Аппаратная часть
Для реализации тахометра с применением адресных светодиодов на понадобится:
2. Схема и программная часть
После подбора компонентов для сборки, собираем небольшую схему
Кольцо можно временно отключить, чтобы просто не мешалось.
Проверяем схему еще раз и загружаем в Arduino следующий скетч
После загрузки скетча можно проверить работу датчика холла, для этого подключаем осциллограф на выход тахометра и смотрим что выдает датчик холла при вращении диска с магнитом рядом с датчиком. Если сигнал отсутствуем проверяем правильность подключения датчика и при необходимости делаем подтяжку сигнала резистором 10 кОм на плюс питания.
После проверки работоспособности подключаем кольцо на светодиодах WS2812 и вращая рядом с датчиком диском с магнитом получаем частоту вращения диска.
Перед установкой в какие либо механизмы необходимо откалибровать данный тахометр, используя заведомо исправный тахометр заводского исполнения.
Смотрим что получилось.
Заключение.
Применение данной схемы масса.Например сделать спидометр для велосипеда закрепив магнит на колесе, а датчик на вилке или сделать модернизацию приборной панели автомобиля. В общем везде, где необходимо измерение частоты или скорости вращения механизма.
Как сделать тахометр на Ардуино
Тахометр необходим для подсчета значения RPM (Rotations per minute) — количества оборотов вентилятора, колеса или иного вращающегося оборудования. В простейшем случае это система из инфракрасного приемника, передающего устройства и контроллера: когда, например, ИК-луч прерывается, значит, вращающийся элемент его перекрыл. Информацию получает контроллер и вычисляет на ее основе частоту вращения. В продаже есть множество образцов заводских приборов, но счетчик оборотов можно сделать и самостоятельно с помощью программируемой платы. Далее мы рассмотрим, как собрать несложный тахометр на Ардуино.
Принцип работы
Как уже указывалось, простой тахометр состоит из трех основных модулей:
Вращаясь, контролируемый объект перекрывает луч. Контроллер фиксирует этот сигнал и далее, на основе продолжающих поступать данных, подсчитывает обороты детали в минуту (или иную заданную настройками единицу времени).
Прибор может выводить RPM в виде сигналов на другие устройства в составе цепи. В нашем случае это будет цифровой LCD-дисплей, где станет отображаться уровень оборотов. В результате получится система на один выход и один вход, которая:
Компоненты
Для сборки понадобятся:
Для связи будет служить подсоединенный через низкоомный резистор ИК-светодиод: так луч выйдет ярче. Сигнал с диода пойдет на фототранзистор, «закрывающийся» при отключении светового потока. В качестве подконтрольного объекта используется компьютерный вентилятор, частоту вращения которого и станет считать прибор. Он будет висеть между передатчиком и приемником.
Подключенный по транзисторной схеме ИК-приемник создает прерывания и отправляет их на контроллер Ардуино. Плата обрабатывает их через процедуры из программной библиотеки для работы с дисплеями Arduino LCD и выводит данные на экран.
Принципиальная схема будущего устройства:
Особенности схемы тахометра
Приведенная раскладка имеет некоторые нюансы:
Код программы
Для создания тахометра на плате Ардуино нужна не только аппаратная часть, но и программная — загружаемый в систему скетч. Рассматриваемый пример строится на упомянутой выше библиотеке функций Arduino LCD (LiquidCrystal.h). Для упрощения понимания работы последней можно привести пример простого скетча: он выводит на экран стандартную фразу «Hello, World!». Код удобно использовать для тестирования оборудования.
В нашем приборе будет интенсивно применяться метод lcd.print(millis()/1000).
Считаем RPM вентилятора
Подсчет ведется по прерываниям луча инфракрасного передатчика. Метод удобный, но тестовым объектом выступает вентилятор с семью лопастями. Значит, на один полный оборот придется семь прерываний луча, и только завершение этого цикла будет означать увеличение счетчика RPM на единицу.
Итак, каждое седьмое прерывание равно одному обороту. Зная необходимое для такового время, можно вычислить и значение RPM. Вычисления выполняются по формулам:
Скетч выполняет две задачи:
В главном цикле наш контроллер считает количество RPM и обновляет информацию на экране.
Учитывая особенности кода, последнее станет происходить несколько раз в секунду. RPM тоже считается в основном цикле, поскольку прерывания обрабатываются отдельной функцией программы.
Важно: в рассматриваемом примере использован семилопастный вентилятор. С другими, например, на 4 лопасти (и в принципе для устройств с некоторым известным заранее количеством прерываний) в коде необходимо поменять конструкцию time×7 на time×4 (или иное требуемое число).
Точность работы составляет около 96%, что вполне достаточно для бытового применения.
Сборка схемы
Когда все детали подготовлены, можно приступать к монтажу.
Первыми подсоединяются +5 В питание и линии управления/поступления данных экрана. Затем собственно жидкокристаллический мини-дисплей, регулятор контрастности и светодиод. Тахометр на Arduino в собранном виде:
Необходимо выдержать некоторое расстояние между транзистором и диодом — для возможности свободно поместить там контролируемый объект. Чем он больше, тем выше должно быть и это расстояние.
Применение тахометра
В результате получается способный с достаточно высокой точностью измерять RPM нужного объекта прибор. Это основное предназначение тахометра.
Но датчики обрыва луча (а тахометр и есть датчик) пригодны не только для этих целей. Так, их удобно использовать как сенсор открытия-закрытия дверей, как элемент простой сигнализации (фиксация движения), и в иных задачах.
Еще один пример тахометра
Рассмотрим другой образец схемы — на основе датчика присутствия линии и библиотеки 4Led. Измерение проводится по нанесенной на объект контрастной черте.
Важно: цвет черты не имеет значения.
Сборка
Индикатор можно подключить к аналоговым или цифровым выходам контроллера. Используется два вывода, номера которых указываются в скетче. Контакт датчика линии также задается в коде и «цепляется» на соответствующий аналоговый вход микрокомпьютера.
Механизм действия
Такой вариант тахометра действует следующим образом:
Заключение
Как видно, собрать несложный и функциональный тахометр на Ардуино довольно просто. При этом можно уложиться в сумму около 10–20 USD и получить на выходе компактное, удобное и функциональное устройство с достаточно высокой для бытовых задач точностью. А благодаря модульности Ардуино и богатой экосистеме схему можно дорабатывать и дополнять новой функциональностью.
Видео по теме
Измерение частоты с помощью Arduino (спидометр и тахометр)
Во многих проектах использования Arduino в автомобиле, существует необходимость считывать показания датчика скорости или обороты двигателя.
В общем случае задача сводится к измерению частоты импульсов и перевода в км/ч или об./мин. Ниже приведен код для спидометра, использующий внешнее прерывание.
//********************************************************************
unsigned long micros_sp;
volatile int sz; //счетчик обнуления
volatile int sp; //скорость
//********************************************************************
void setup()<
Serial.begin(115200); //инициализация ком порта
attachInterrupt(1, speedometr, RISING); //прерывание спидометра по фронту импульса
>
//********************************************************************
void loop()<
Serial.print (sp);
sz = sz — 1;
if (sz == 0)<
sp = 0;
>
delay(50);
>
//********************************************************************
void speedometr()< //измеряем частоту на входе спидометра по прерыванию
sp=(600000.0/(micros() — micros_sp));
micros_sp= micros();
sz = 30;
>
Код работает следующим образом:
При получении фронта импульса на входе с прерыванием, срабатывает обработчик прерывания void speedometr(). В обработчике из текущего значения системного таймера «micros()» отнимается предыдущее значение этого таймера, записанное в переменную micros_sp. Таким образом мы получаем время между импульсами, то бишь период, в микросекундах. Зная период вычисляем частоту «f = 1000000/(micros() — micros_sp) Гц». Переводим Гц в км/ч «sp = 0.6 *1000000/(micros() — micros_sp)» (для 6-ти импульсного датчика скорости). Запоминаем текущее значение таймера «micros_sp= micros()» для использования в обработке следующего импульса. Переменная
«sz» служит для обнуления значения скорости, если с момента прихода последнего импульса блок «void loop()» выполнился 30 раз, то есть если скорость равна нулю и новые импульсы не приходят. Для некоторых датчиков прерывание по фронту (RISING) может не корректно обрабатываться. В этом случае следует использовать прерывание по спаду(FALLING). Аналогичным образом обрабатывается сигнал зажигания. При переводе Гц в об/мин. следует помнить что в 4-х цилиндровых 4-х тактных двигателях за один оборот коленвала приходит два импульса зажигания.
Комментарии 55
Спидометр вижу тахометр нет …
Ребята помогите собрать на ардуине делитель импюльсов. Чтобы при установке япона моторов на газели и тд скорость и тахо работали правильно
Приветствую.
К какому пину ардуино подключается сенсор (в моём случае датчик холла)? В примере кода я не вижу знакомых букв (я не умею программировать, пытаюсь слепливать готовые скетчи), извините.
Нашел подобный по функциям код, но для тахометра, там функция не micros a millis с данными 60 импульсов на оборот, какой множитель нужен, если на редукторе 6 магнитов? Спасибо, и еще раз простите за такие лёгкие и глупые для вас вопросы. Я пол часа только пытался скомпилировать и исправлял ошибки, т.к. простое копирование текста привело к замене символов ))
А как сделать наоборот что бы аналоговый сигнал тахометра поступал в какую-то схему а из этой схемы выходили два провода типо кан шины и поступали по этим проводам в панель приборов уже цифровой сигнал и заставил работать стрелку тахометра. Вот задача так задача. Вот немцы до этого додумались но ценник бешеный
Прошу прощения, но! я так понимаю что используется 20 порт ардуино мега или Уно? или 21 у леонардо… Я прав? если нет то подскажите пожалуйста порт… и с чего конкретно можно взять датчик?
не могли бы подсказать как сделать так чтобы конвертировать импульсы? для свапа обычно делают коректор спидометра
Интересная идея, спасибо!
Если ардуино будет видеть (понимать) обороты двигателя — то я смогу настроить заранее запрограммированные обороты двигателя на круизе.
То есть сделать «память круиза»
-разогнался на пятой передаче до 80-90 км/час
-включил кнопку «ПАМЯТИ КРУИЗА», = цель достижение 3тыс. оборотов двигателя и Ардуино сама будет плюсовать «кнопкой круиза» пока не увидит с датчика тахометра эти обороты (надо найти как подлючиться к нему)
===============================
В планах это, покритикуйте!
Безопасность управления круизом:
— Нажатие на педаль ТОРМОЗА отключает (обесточивает) питание АРДУИНО управления круизом.
— Линия управления круизом ДОПОЛНИТЕЛЬНО разрывается от Ардуино механическим переключателем на торпеде
— Перед началом каждого действия АРДУИНО зажигает на 70 мС красный 0,5вт светодиод на панели проборов — предупреждая о начале работы автоматизиции.
Алгоритмы управления круизом:
1) Быстрый разгон — нажать за 1 секунда 5-6 раз кнопку «ПЛЮС» круиза.
2) Плавный (экономичный) разгон — нажимать кнопку «ПЛЮС» круиза 1 раз каждую секунду, пока не достигнута нужная скорость
3) Быстрое торможение двигателем — нажать кнопку «МИНУС» круиза 5-6 раз
4) Плавное торможение двигателем — нажимать кнопку «МИНУС» круиза 1 каждую секунду, пока не достигнута нужная скорость.
5) Снижение скорости круиза в горку и восстановление скорости на прежний уровень после горки:
— для начала работы снижения скорости круизом авто должно быть на ровном (угол наклона менее 5 градусов) участке дороги не менее 60 секунд. Этим мы отключаем работу автоматики при езде в горку на ручном режиме — автоматика должна работать ТОЛЬКО если мы с ровного места начинаем ехать в горку.
— нажать один раз кнопку «МИНУС» круиза через 20 секунд после того, как угол наклона составляят более 15 градусов. — продолжать нажимать кнопку «МИНУС» ещё три раза, по одному разу каждые 10 секунд если угол наклона не уменьшается.
— если угол наклона (горка) стала меньше 5 градусов — начать нажимать «ПЛЮС» круиза четыре раза с интервалом 10 секунд между нажатиями.
Пункт 5
— подобрать уровень наклона, количество коррекций круиза и интервалы между коррекциями опытным путём.
— сделать 2-3 варианта в зависимости от угла наклона горки (пологая, средняя, крутая).
Тахометр на Ардуино и датчике Холла
П ривет. В этой статье расскажу, как я сделал цифровой тахометр на Ардуино (Arduino) и датчике Холла для китайского шпинделя 0,5кВт диаметром 52 мм.
Комплектующие для сборки тахометра
Итак, тебе понадобятся:
И установи библиотеку tm1637 в свою Arduino IDE. Как это сделать? Просто добавь папку из архива в папку куда установлена Arduino. Например С > Program Files (x86) > Arduino > Libraries
Библиотека TM1637 скачать
Схема подключения тахометра на Ардуино
Сборка тахометра не представляет особых трудностей. Просто собирай по схеме, заливай скетч и проверяй работоспособность. После включения на индикаторе должен появится 0, а при мелькании магнитом перед одной из сторон датчика должен загораться светодиод и на индикаторе изменяться показания. Если что-то не так — пиши в комментариях — разберемся.
Скетч для тахометра на Ардуино
Сборка тахометра
Итак, начнем по порядку:
Индикатор
При изготовлении тахометра мне хотелось, чтобы индикатор был аккуратно и красиво установлен в корпус блока управления станком. В качестве корпуса я использовал корпус-рамку от вышедшего из строя вольт/ампер метра. Плата индикатора TM1637 практически идеально подходила в этот корпус. Только нужно было обработать напильником — снять по 1 мм с каждой стороны.
Также заменил стандартные пины на разъем XH2.54 4 pin. Получилось практически как заводское изделие.
Индикатор тахометра TM1637
Плата датчика Холла
Для аккуратного крепления датчика Холла на шпиндель пришлось сделать новую печатную плату. Кому интересно как я делаю печатные платы читай в этой статье. После изготовления платы, я перенес все детали с KY-003, а так же добавил разъем XH2.54 3 pin. И еще вырезал изоляционную прокладку из какого-то пластика толщиной 3 мм и просверлил в ней небольшие отверстия, чтобы плата ложилась на прокладку всей плоскостью.
Печатная плата тахометра на Ардуино
Также на плате предусмотрено место под SMD конденсатор, для устранения помех от шпинделя. Но пока он мне не понадобился — экранированный кабель справляется со своей задачей.
Установка платы датчика Холла
Во-первых, для реализации тахометра, мне нужен был небольшой неодимовый магнит, который нужно было прикрепить на вал шпинделя. Перерыл все ящики — я ничего подходящего не нашел. Зато нашел старый, нерабочий cd-rom от ноутбука. Вот в нем, в катушке электромагнита открывания, как раз и нашел, то, что нужно — небольшой, прямоугольный неодимовый магнит!
Определив высоту и полярность, я приклеил магнит к валу на «суперклей» и обтянул вал с магнитом термоусадкой. На копус шпинделя приклеил прокладку, а уже на прокладку — плату. Как видите — получилось довольно аккуратно. Защитный колпачек в процессе обдумывания, так что, пока без него 🙂
Установка платы на шпиндель
Датчик Холла 3144 реагирует каждой своей стороной либо на северный, либо на южный полюс магнита, так что перед установкой магнита — определи его положение!
Как протянуть провода от датчика, я расскажу в статье посвященной прокладке кабелей, а пока небольшое видео о работе тахометра на Arduino Nano и индикаторе TM1637
На этом всё. Если понравилось — ставьте лайки, делитесь с друзьями в соцсетях и подписывайтесь на уведомления о новых статьях!