Тахометр собранный с использованием датчика линии прост в подключении. Вам не нужно вносить конструктивные изменения в деталь, скорость вращения которой требуется измерить: сверлить отверстия, делать прорези, устанавливать дополнительные элементы и т.д. Достаточно нанести на неё контрастную линию (чёрную на светлой поверхности или белую на тёмной) и поднести датчик линии, Вы сразу получите точный результат, количество оборотов в минуту. Скетч не нуждается в корректировке, независимо от того, какого цвета будет линия.
Нам понадобится:
- Arduino х 1шт.
- Trema-модуль Аналоговый датчик линии х 1шт.
- Trema-модуль Четырехразрядный LED индикатор х 1шт.
- Trema Shield х 1шт.
Для реализации проекта нам необходимо установить библиотеку:
- Библиотека iarduino_4LED (для работы с четырёхразрядным LED индикатором).
О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki - Установка библиотек в Arduino IDE.
Видео:
Схема подключения:
LED индикатор подключается к любым двум выводам Arduino (как цифровым, так и аналоговым), номера указываются в скетче. Датчик линии подключается к любому аналоговому входу, номер указывается в скетче.
В данном уроке, LED индикатор подключён к цифровым выводам 2 и 3, а датчик линии подключён к аналоговому входу A0.
Алгоритм работы:
- Вывод информации на LED индикатор осуществляется только в момент перехода датчика линии со светлого на тёмное поле.
- Первой строкой функции loop, проверяем не находится ли датчик линии на тёмном поле, если это так, то ...
- Выводим количество оборотов в минуту на LED индикатор (если не зафиксировано переполнение millis) и сохраняем время перехода
- Выполняем цикл while до тех пор, пока датчик линии не покинет тёмное поле. Благодаря чему предыдущая операция выполняется только 1 раз, за всё время нахождения датчика на тёмном поле.
- Если датчик находится на тёмном или светлом поле, дольше 6 секунд, то выводим надпись «STOP» (эти строки можно убрать, если количество оборотов Вашего устройства ниже 10 в минуту).
Код программы:
#include <iarduino_4LED.h> // подключаем библиотеку для работы с четырёхразрядным LED индикатором iarduino_4LED dispLED(2,3); // объявляем объект для работы с функциями библиотеки iarduino_4LED, с указанием выводов индикатора ( CLK , DIO ) const uint8_t pinLine = A0; // объявляем константу с указанием номера аналогового входа, к которому подключен датчик линии uint32_t strLine = 0; // время перехода датчика со светлого на тёмное поле void setup(){ dispLED.begin(); // инициируем LED индикатор } void loop(){ if(analogRead(pinLine)>400){ // если показания датчика линии больше 400 (тёмное поле) if(strLine<millis()){ // если нет переполнения millis(), то ... dispLED.print(60000/(millis()-strLine)); // выводим количество оборотов в минуту на LED индикатор } strLine = millis(); // присваиваем переменной strLine текущее значение millis(); while(analogRead(pinLine)>350){ // ждём пока датчик линии не выйдет из тёмного поля if((millis()-strLine)>6000){dispLED.print("STOP");} // если датчик находится на тёмном поле дольше 6 секунд, то выводим на индикатор надпись "STOP" } } if((millis()-strLine)>6000){dispLED.print("STOP");} // если датчик находится на светлом поле дольше 6 секунд, то выводим на индикатор надпись "STOP" }
Обсуждение