Load Загрузка

Тахометр на Ардуино с оптическим датчиком

Тахометр на Ардуино с оптическим датчиком

Для расчёта некоторых механизмов мне нужен тахометр. Например для расчёта скорости движения робота-пылесоса нужно знать скорость вращения электромотора и исходя из этого рассчитать передаточное число редуктора.

Тахометр я решил сделать на Ардуино, это конечно финансово и трудозатратно, но очень интересно, плюс свобода разработки. Быстрее и проще купить тахометр в Китае. Если вы всё же решитесь повторить мой проект, то вот вам список деталей для самодельного тахометра:

Arduino pro mini, или другие версии
Оптический инфракрасный датчик
OLED дисплей 0,96 дюйма или любой другой, что понравится
Кнопка питания (слайдер)
USB-разъём для зарядки аккумулятора
Li-ion аккумулятор, можно от старого мобильного телефона
Провода

Сначала я конечно же искал в Интернете самодельные тахометры на Ардуино, мне попался проект тахометра Алекса Гайвера. Загрузив прошивку я начал тестировать устройство, периодически в мониторе порта проскакивали отрицательные значения или показывало слишком завышенные обороты до миллиона единиц. Я думал что глюки связаны с моим датчиком, пробовал переписывать прошивку по своему, но результат всегда был один. Есть в Интернете проекты на этой прошивке, но у меня она почему-то не пошла.

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

Тахометр на Ардуино с оптическим датчиком

В качестве экранчика я использовал маленький OLED-дисплей, на нем можно вместить много цифр. Питается устройство от аккумулятора старого мобильного, заряжается как телефон через USB-разъём. Железо получилось компактное, для него я смоделировал корпус и распечатал на 3д принтере.

Тахометр на Ардуино с оптическим датчиком

Тахометр можно дополнить кнопками для задания количества лопастей на измеряемых вентиляторах, тогда не нужно будет вычислять на калькуляторе фактическое количество оборотов в минуту. Можно добавить кнопку для запоминания максимальных оборотов. На Ардуино используется всего несколько пинов, поэтому устройство можно дополнить множеством дополнительных функций. Также на экран можно выводить больше информации, установленный дисплей позволяет это делать. Вобщем тут есть пространство для творчества.

Наконец, я перемерил этим тахометром всё, что в доме вращается, моторчики, шуруповерт, миксер, колесо у заводной машинки, прибор очень интересный, игрушка для разработчика :)

Скачать скетч Тахометра и STL-файлы

Добавлю ещё чужое видео, которое мне помогло подключить экранчик к Ардуино.

Немного про подключение OLED LCD модуля к ардуино и работу с библиотекой OLED_I2C, вывод элементарной графики и текста.


shadow
Дмитрий ДА Опубликовал статью: Дмитрий ДА
Дата: 12.10.2020


shadow


shadow

Написать комментарий


КОММЕНТАРИИ

  • Андрей№1 | 11.03.2023 10:55

    Была такая же нужда - тахометр для измерения оборотов движков для моделей самолетов. Шел вашим путем, гайверовский тахометр тоже не пошёл с вашими же глюками. всё аналогично. Слепил ещё один на 1602, вообще не завелся, времени не было со скетчами разбираться, тоже начал своё лепить и тут ваш проект увидел и он пошел. Измеряет обороты до 32270, далее меняет знак на минус и начинает обороты уменьшать. Жаль нечем проверить точность тахометра, но вроде где-то более-менее правильно показывает. Налепил на свето-фото диоды густой красный светофильтр - работать стал намного лучше, внешняя засветка перестала мешать. Спасибо Вам за вашу приблуду - мне помогла.

    Ответить
  • Дмитрий ДА
    Дмитрий ДА№2 | 11.03.2023 11:40
    Ответ для Андрей на комментарий: Была такая же нужда - тахометр для измерения оборотов движков для моделей самолетов. Шел вашим путем

    Андрей, спасибо!
    Данные будут точнее, чем больше период измерения, например если поставим 5 сек, то прибор будет в течение 5 сек считать обороты, а потом сделает расчёты. Может не всегда удобно держать прибор 5 сек на моторе, но зато данные более точные. Можно дополнительную кнопку сделать для переключения времени измерения 1-3-5-10 сек.

    Ответить
  • Griny
    Griny№3 | 30.04.2023 12:22

    Дмитрий, подскажите чайнику, в какой строке скетча я должен изменить период измерения для повышения точности. Прошу привести эту строку целиком. Буду очень признателен!

    Ответить
  • Дмитрий ДА
    Дмитрий ДА№4 | 30.04.2023 12:36
    Ответ для Griny на комментарий: Дмитрий, подскажите чайнику, в какой строке скетча я должен изменить период измерения для повышения

    if(millis() - last_time > 1000) // обновлять раз в секунду

    В этой строке 1000 - это одна секунда, поставьте 2-3-5 секунд, тогда в течение этого времени прошивка будет считать обороты, а потом выдаст данные на экран.

    Ответить
  • Griny
    Griny№5 | 30.04.2023 21:01
    Ответ для Дмитрий ДА на комментарий: if(millis() - last_time > 1000) // обновлять раз в секунду В этой строке 1000 - это одна секун

    Дмитрий, огромное Вам спасибо за оперативность! Дай Бог Вам всего, что Вы желаете!

    Ответить
  • Владимир№6 | 26.02.2024 18:37

    Добрый день! А можно тахометр приспособить, чтобы не только измерял, но и поддерживал нужные обороты? Спасибо

    Ответить
  • Дмитрий ДА
    Дмитрий ДА№7 | 26.02.2024 19:03
    Ответ для Владимир на комментарий: Добрый день! А можно тахометр приспособить, чтобы не только измерял, но и поддерживал нужные обороты

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

    Ответить
  • Владимир№8 | 25.03.2024 11:29

    Добрый день! Как изменить скетч для олед 128*32 дисплея? для четырех циферок после двух-запятая? спасибо

    Ответить
  • Дмитрий ДА
    Дмитрий ДА№9 | 25.03.2024 12:00
    Ответ для Владимир на комментарий: Добрый день! Как изменить скетч для олед 128*32 дисплея? для четырех циферок после двух-запятая? спа

    Если я вас правильно понял, нужно количество цифр увеличить.
    Дисплей такой же, только размер больше?

    Ответить
  • Владимир
    Владимир№10 | 26.03.2024 09:01

    вот такой модуль https://aliexpress.ru/item/1005004572487969.html?spm=a2g2w.orderdetail.0.0.1f574aa6YNxfI5&sku_id=12000029674573174

    вид 33,35 об/мин или RPM
    еще вопрос - как добавить кнопку для достижения нужных оборотов?

    Ответить
  • Владимир
    Владимир№11 | 26.03.2024 09:08
    Ответ для Дмитрий ДА на комментарий: Если я вас правильно понял, нужно количество цифр увеличить. Дисплей такой же, только размер больше

    дисплей, наоборот, меньше. вид информации такой 33,35 об/мин
    "Можно конечно. Проверяете в скетче обороты и если они ниже какого-то заданного числа, то включаете некий пин, который управляет нагрузкой. Например, можно поставить транзистор и подавать на него ШИМ в зависимости от количества оборотов мотора, которым управляет этот транзистор.." можно схему и скетч? спасибо!

    Ответить



НАПИСАТЬ КОММЕНТАРИЙ

Ваше имя

Ваш e-mail



Shadow

Вверх ⇒