Датчик линии на базе TCRT5000

Материал из MIK32 микроконтроллер
Датчик отражения TCRT5000

Цифровой датчик линии – это излучатель и приёмник, разделённые перегородкой, находящиеся в одном корпусе. Светодиод излучает инфракрасный сигнал. В зависимости от цвета поверхности, отраженный сигнал имеет разную силу, которая улавливается приемником-фоторанзистором.

Результатом работы данного модуля является цифровой сигнал, в зависимости от цвета. При отсутствии поверхности, или в случае, если поверхность светлая, датчик выдает логический 0, при появлении черной поверхности выдает логическую единицу. Логический ноль сопровождается загоранием светодиода, расположенного на плате. Это позволяет контролировать работу датчика. Датчик может использоваться для ориентации роботов (для перемещения по темной линии).

Датчик линии на базе TCRT5000

Особенности и характеристики

  • Обнаружение расстояния отражения: 1 мм ~ 25 мм
  • Напряжение питания: 3.3-5В
  • Потребляемый ток: 10мА
  • Форма вывода: цифровые сигналы (0 и 1)
  • Рабочая температура: 0°C ~ + 50°C
  • Размер печатной платы небольшой платы: 3,5 см x 1 см
  • одиночный вес: 4,5 г
  • С фиксированным отверстием для болта.

Подключение

  • VCC: плюс питания 5.0 В
  • GND: общ.
  • OUT: цифровой выход (0 или 1)

Пример кода с двумя датчиками для движения по черной линии

#define A 7 //left motor
#define B 8 //left motor
#define C 10 //left motor PWM
#define D 2 //right motor
#define E 4 //right motor
#define G 11 //right motor PWM
#define H 9 //left line sensor
#define I 13 //central line sensor
#define J 12 // right line sensor
void setup() {
  pinMode(A,OUTPUT);    // Устанавливаем режим для портов. 
  pinMode(B, OUTPUT);   // Функция состоит из двух параметров. 
  pinMode(C, OUTPUT);   // В первом параметре указывается порт, 
  pinMode(D, OUTPUT);   // с которым мы собираемся работать.  
  pinMode(E, OUTPUT);   // Во втором параметре мы сообщаем,    
  pinMode(G, OUTPUT);   // как должен работать указанный
  pinMode(H, INPUT);    // порт: работать на
  pinMode(I, INPUT);    // выход (OUTPUT)
  pinMode(J, INPUT);    // или вход (INPUT)
}

void go(){
  digitalWrite(A, LOW);  // digitalWrite() - функция включает светодиод.
  digitalWrite(B, HIGH); // В первом параметре мы указываем номер
  analogWrite(C, 50);    // порта, с котоорым собираемся работать,
  digitalWrite(D, LOW);  // а во второй указываем константу HIGH т.е.
  digitalWrite(E, HIGH); // логическая 1, значение константы LOW равно
  analogWrite(G, 50);    // логическому 0 (отключаем светодиод)
  }

void loop() {
  if (digitalRead(H) == 0){
    digitalWrite(A, LOW);   // digitalRead() - считывает
    digitalWrite(B, HIGH);  // значение заданного входа -
    analogWrite(C, 0);      // 1 или 0. (Смотрим, равно ли 
    digitalWrite(D, LOW);   // значение датчика 0. В зависи-
    digitalWrite(E, HIGH);  // мости от значения датчика
    analogWrite(G, 50);     // поворачиваем колёса.)
    }

  else if (digitalRead(J) == 0){
    digitalWrite(A, LOW);
    digitalWrite(B, HIGH);  
    analogWrite(C, 50);       
    digitalWrite(D, LOW);  
    digitalWrite(E, HIGH); 
    analogWrite(G, 0);
    }
  
  else{
    go();
    }
}