Закрепите пару аналоговых датчиков линии на днище робоплатформы и ваш робот утрёт нос любому игроку в соревнованиях езды по линии или робосумо. Сенсор также позволит роботу увидеть пропасть перед собой и спасет от падения со стола.
Общие сведения
Датчик линии выполнен на оптопаре QRD1114. Установите два аналоговых сенсора линии на днище мобильной платформы, чтобы заставить робота не выезжать за пределы территории обозначенной контуром или следовать за нарисованной линией.
Сенсор способен не только отличать чёрную поверхность от белой, но и фиксировать все оттенки серого. Это дает вам возможность точно контролировать процесс перехода границы от черного к белому и поможет роботу не сбиться с пути.
Все подробности работы сенсора читайте в разделе на оптопару QRD1114.
Примеры работы
Датчик общается с микроконтроллером через аналоговый сигнал. На роль контроллера для работы с датчиком линии рассмотрим платформу Arduino Uno.
Что понадобится
- 1× Arduino Uno
- 1× Датчик линии QRD1114 / Аналоговый (Trema-модуль)
- 1× Соединительные провода «папа-мама»
- 1× Кабель USB (A — B)
Схема устройства
Для быстрой сборки и отладки устройства рекомендуем взять плату расширения Trema Shield, которая надевается сверху на Uno R3 методом бутерброда.
Программная настройка
Настройте плату Arduino Uno в среде Arduino IDE.
Исходный код
Выведем показания аналогового датчика линии в консоль. Для наглядного теста сенсора мы приготовили шкалу от чёрного к белому со всеми оттенками серого, которую можно распечатать на обычном принтере.
// Определяем ядро платы Arduino // для установки рабочего напряжения #if defined(__AVR__) #define OPERATING_VOLTAGE 5.0 #else #define OPERATING_VOLTAGE 3.3 #endif // GPIO пин с поддержкой АЦП constexpr auto PIN_SENSOR = A0; void setup() { // Открываем Serial-порт Serial.begin(9600); } void loop() { // Считываем данные с датчика линии int valueSensor = analogRead(PIN_SENSOR); // Переводим данные с датчика в напряжение float voltageSensor = valueSensor * OPERATING_VOLTAGE / 1024.0; // Выводим выходное напряжение в Serial-порт Serial.print("Value = "); Serial.print(voltageSensor); Serial.println(" Volts"); // Ждём 100 мс delay(100); }
Элементы платы
Оптопара QRD1114
Датчик линии выполнен на оптопаре QRD1114, которая состоит из двух элементов — ИК-светодиода (излучателя) и фототранзистора (приемника). Когда светодиод излучает инфракрасный свет, световой поток отражается от поверхности и попадает на фототранзистор, где преобразуется в электрический сигнал. Темный цвет отражает меньше света, светлый — больше.
Показания датчика линии зависит от цвета объекта и расстояния сенсора до детектируемой поверхности.
- Цвет объекта. Чем белее отражающая поверхность, тем выше уровень напряжение на выходе «S». Чем чернее отражающая поверхность, тем ниже уровень сигнала на выходе «S». Пропасть над столом равносильно максимально черной поверхности.
- Расстояние сенсора до детектируемой поверхности. Датчик способен выдавать «адекватные» показания при расстоянии между сенсором и детектируемой поверхностью в диапазоне от 3 до 12 мм. При расстоянии менее 3 миллиметров — перегородка между ИК-излучателем и приемником мешает сенсору принимать отраженный свет. А при расстоянии более 12 миллиметров — отраженный свет рассеивается и не доходит до приемника.
Trema-контакты
Датчик линии подключается к управляющей электронике через группу из трёх контактов.
Контакт | Функция | Подключение |
---|---|---|
S | Выходной сигнал сенсора | Подключите к пину ввода-вывода микроконтроллера с поддержкой АЦП. |
V | Питание | Подключите к питанию микроконтроллера. |
G | Земля | Подключите к земле микроконтроллера. |
Габаритный чертёж
Комплектация
- 1× Плата-модуль
- 1× Трёхпроводной шлейф
Характеристики
- Модель: Датчик линии QRD1114 / Аналоговый (Trema-модуль)
- Оптопара: QRD1114
- Область видимости сенсора: 1–12 мм
- Напряжение питания Vcc: 3,3–5 В
- Аппаратный интерфейс: контакты S-V-G
- Программный интерфейс: аналоговый сигнал
- Выходное напряжение: 0–Vcc В
- Диаметр монтажного отверстия: 3,2 мм
- Размеры: 40,5×10,5×14,6 мм
Обсуждение