КОРЗИНА
магазина
8 (499) 500-14-56 | ПН. - ПТ. 12:00-18:00
ЛЕСНОРЯДСКИЙ ПЕРЕУЛОК, 18С2, БЦ "ДМ-ПРЕСС"

Урок 29. Тахометр. Определяем скорость вращения при помощи датчика линии

Тахометр собранный с использованием датчика линии прост в подключении. Вам не нужно вносить конструктивные изменения в деталь, скорость вращения которой требуется измерить: сверлить отверстия, делать прорези, устанавливать дополнительные элементы и т.д. Достаточно нанести на неё контрастную линию (чёрную на светлой поверхности или белую на тёмной) и поднести датчик линии, Вы сразу получите точный результат, количество оборотов в минуту. Скетч не нуждается в корректировке, независимо от того, какого цвета будет линия.

Нам понадобится:

Для реализации проекта нам необходимо установить библиотеку:

  • Библиотека iarduino_4LED (для работы с четырёхразрядным LED индикатором).

О том как устанавливать библиотеки, Вы можете ознакомиться на странице Wiki - Установка библиотек в Arduino IDE.

Видео:

Схема подключения:

LED индикатор подключается к любым двум выводам Arduino (как цифровым, так и аналоговым), номера указываются в скетче. Датчик линии подключается к любому аналоговому входу, номер указывается в скетче.

Схема тахометра на Arduino Uno

В данном уроке, 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"
}

скачать

Ссылки:




Обсуждение

Гарантии и возврат Используя сайт Вы соглашаетесь с условями