Это старая версия документа.


Инфракрасный датчик контроля KB874

Описание

Создаете беспроводную сигнализацию или просто хотите знать сколько человек за день проходит через определенную дверь? Воспользуйтесь инфракрасным датчиком контроля.

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

Комплект состоит из передатчика и приёмника. Передатчик постоянно излучает инфракрасный сигнал с длиной волны 850 нм, а приемник, устанавливаемый напротив передатчика принимает его и выдает на выходе логическую 1. В обычном состоянии сигнал от передатчика к приемнику поступает непрерывно. Как только происходит прерывание сигнала (кто-то или что-то пересекли невидимый луч) - контроллер выдает логический 0. Подсчет количества прерываний за определенный промежуток времени позволит сделать выводы о том, сколько человек прошло в помещение.

Передатчик и приемник снабжены удобными отверстиями для крепления диаметром 3,2 мм.

Для работы передатчика достаточно обеспечить постоянную подачу тока. Это можно сделать как от независимого источника тока, так и от контроллера. Передатчик подключается с помощью двух проводов:

  • красный (питание) - соединяется с выводом питания («+») источника тока или с выводом 5 V контроллера; также допускается подключение вывода к цифровому пину контроллера, установленного в режим OUT с установкой на выводе логической 1;
  • черный («земля») - соединяется с выводом «-» источника тока или выводом GND контроллера.

Приемник подключается к контроллеру с помощью трех проводов:

  • белый (сигнал) - соединяется с цифровым выводом контроллера;
  • красный (питание) - соединяется с выводом питания контроллера 5 V;
  • черный («земля») - соединяется с выводом GND контроллера.

Технические характеристики

  • Напряжение питания: 5 В
  • Максимальный потребляемый ток: 20 мА
  • Эффективное рабочее расстояние: до 1 м
  • Максимальный эффективный угол приемника: 10°
  • Время отклика: 2 мс
  • Длина волны передатчика: 850 нм
  • Рабочая температура: от -25 до +60 °С
  • Длина проводов: 30 см

Физические размеры

  • Габаритные размеры приемника (Д х Ш х В) : 18 х 11 х 7 мм
  • Габаритные размеры передатчика (Д х Ш х В) : 18 х 11 х 7 мм

Примеры подключения и использования

Вывод значений на экран

Задача: Подсчёт количества пересечений датчика (например, посетителей магазина) и вывод значения в монитор Serial-порта.

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

Скетч для загрузки:

const int OP = 11;            //вывод подключения белого провода приёмника
 
int quant = 0;                //счётчик для подсчёта количества посетителей
boolean lastState = LOW;      //последнее состояние оптопары
 
void setup() {
  pinMode(OP, INPUT);         //установка режима вывода
  Serial.begin(9600);         //инициализация монитора порта
}
 
void loop() {
  boolean curState = digitalRead(OP); //текущее состояние оптопары
 
  if (curState == HIGH && lastState == LOW) { //если датчик сработал
    quant++; //увеличить количество посетителей
    Serial.print("Customers: "); //вывести надпись на дисплей
    Serial.println(quant); //вывести значение на дисплей
  }  
 
  delay(50); //добавление небольшой задержки
  lastState = curState; //запомнить последнее состояние оптопары
}

Вывод значений на дисплей

Задача: Подсчёт количества пересечений датчика (например, посетителей магазина) и вывод значения на четырёхзначный индикатор. При каждом срабатывании датчика будет воспроизводиться звуковой сигнал.

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

Скетч для загрузки:

#include "SevenSegmentTM1637.h" //подключение библиотеки для работы с дисплеем
 
const byte PIN_CLK = 4;       //вывод контакта CLK дисплея
const byte PIN_DIO = 5;       //вывод контакта DIO дисплея
const int OP = 11;            //вывод подключения белого провода приёмника
const int BUZ = 3;            //вывод подключения модуля зуммера 
 
SevenSegmentTM1637    display(PIN_CLK, PIN_DIO); //создание объекта дисплея
int quant = 0;                //счётчик для подсчёта количества посетителей
boolean lastState = LOW;      //последнее состояние оптопары
 
void setup() {
  pinMode(OP, INPUT);         //установка режима вывода
  pinMode(BUZ, OUTPUT);       //установка режима вывода
 
  display.begin();            //инициализация дисплея
  display.setBacklight(100);  //установка яркости в 100%
  display.print("INIT");      //отображение надписи INIT (инициализация) на дисплее
  delay(1000);                //задержка в 1 секунду
  display.clear();            //очистка дисплея
}
 
void loop() {
  boolean curState = digitalRead(OP); //текущее состояние оптопары
  if (curState == HIGH && lastState == LOW) { //если датчик сработал
    quant++; //увеличить количество посетителей
    display.print(quant); //вывести значение на дисплей
    tone(BUZ, 294, 300); //подать звук
  }  
  delay(50); //добавление небольшой задержки
  lastState = curState; //запомнить последнее состояние оптопары
}