Датчики являются «органами чувств» робота, позволяя ему получать информацию об окружающем мире и принимать решения на основе этих данных. Среди множества типов сенсоров особое место занимают датчики расстояния и датчики линии, так как именно они обеспечивают способность робота ориентироваться в пространстве и перемещаться по заданной траектории. Понимание принципов их работы и навыки программирования являются базовыми в робототехнике.
1. Датчики расстояния: назначение и функции
1.1. Общее назначение
Датчики расстояния предназначены для определения расстояния от робота до объектов в окружающей среде. Они позволяют роботу «видеть» препятствия, оценивать свободное пространство и принимать решения о движении . Основные функции датчиков расстояния в робототехнических системах:
Обнаружение препятствий — предотвращение столкновений с объектами ;
Навигация и построение маршрута — определение свободного пространства для движения;
Оценка размеров объектов — измерение габаритов препятствий;
Автономное движение — объезд препятствий, остановка перед ними .
1.2. Ультразвуковой датчик расстояния HC-SR04
Наиболее распространённым в учебной робототехнике является ультразвуковой дальномер HC-SR04. Его принцип работы основан на эхолокации .
Принцип действия:
Датчик посылает короткий ультразвуковой импульс (8 импульсов на частоте 40 кГц) .
Звуковая волна распространяется в воздухе, отражается от препятствия и возвращается к датчику .
Датчик измеряет время между отправкой сигнала и получением эха.
Расстояние вычисляется по формуле: L = V × t / 2, где V — скорость звука (около 340 м/с), t — время прохождения сигнала туда и обратно .
Технические характеристики HC-SR04 :
Диапазон измерений: от 2 до 400 см
Рабочее напряжение: 5 В
Угол обнаружения: около 15 градусов
Частота: 40 кГц
Структура подключения:
| Контакт датчика | Назначение | Подключение к Arduino |
|---|---|---|
| VCC | Питание | 5V |
| GND | Земля | GND |
| TRIG | Запуск ультразвукового импульса | Цифровой пин |
| ECHO | Приём отражённого сигнала | Цифровой пин (с поддержкой прерываний) |
1.3. Инфракрасные датчики расстояния
Альтернативой ультразвуковым датчикам являются инфракрасные (ИК) дальномеры. Они работают на принципе измерения угла отражения инфракрасного луча или триангуляции . Преимущества ИК-датчиков: более узкий луч, лучшее разрешение на малых расстояниях. Недостатки: чувствительность к яркому освещению и цвету поверхности.
1.4. Калибровка датчиков расстояния
Перед использованием датчиков расстояния может потребоваться их калибровка — определение реальных показаний сенсора на известных расстояниях . Это позволяет скомпенсировать индивидуальные особенности конкретного датчика и условия эксплуатации.
2. Практическая работа «Программирование работы датчика расстояния»
Цель работы: научиться подключать ультразвуковой датчик расстояния к микроконтроллеру и программировать алгоритмы определения расстояния до препятствия.
2.1. Необходимые компоненты
Микроконтроллер Arduino Uno (или аналогичный)
Ультразвуковой датчик HC-SR04
Соединительные провода
Макетная плата (при необходимости)
2.2. Схема подключения
Подключение HC-SR04 к Arduino осуществляется по следующей схеме :
| HC-SR04 | Arduino |
|---|---|
| VCC | 5V |
| GND | GND |
| TRIG | Цифровой пин (например, 9) |
| ECHO | Цифровой пин (например, 10) |
2.3. Пример программы
// Определение пинов датчика const int trigPin = 9; // пин TRIG const int echoPin = 10; // пин ECHO // Переменные для хранения времени и расстояния unsigned long duration; float distance; void setup() { Serial.begin(9600); // инициализация Serial-порта pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT); } void loop() { // Отправка ультразвукового импульса digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); // длительность импульса 10 мкс [citation:3] digitalWrite(trigPin, LOW); // Измерение времени получения эха duration = pulseIn(echoPin, HIGH); // Расчёт расстояния в сантиметрах (скорость звука 340 м/с = 0.034 см/мкс) distance = duration * 0.034 / 2; // [citation:8] // Вывод результата в Serial-порт Serial.print("Distance: "); Serial.print(distance); Serial.println(" cm"); delay(500); // задержка между измерениями }
Пояснение кода:
pulseIn(echoPin, HIGH)— функция, измеряющая длительность импульса HIGH на выводе ECHO ;Расчётное расстояние учитывает, что звук проходит путь до объекта и обратно (деление на 2);
2.4. Усложнение программы: реакция на препятствие
Добавим в программу логику, при которой робот реагирует на расстояние до препятствия:
if (distance < 20) { // Если расстояние меньше 20 см — остановка stopRobot(); Serial.println("Obstacle detected! Stopping."); } else if (distance < 50) { // Если расстояние 20-50 см — снижение скорости slowDown(); Serial.println("Obstacle ahead! Slowing down."); } else { // Если расстояние больше 50 см — нормальное движение moveForward(); Serial.println("Clear path."); }
2.5. Карта контроля выполнения
| Операция | Критерий оценки | Выполнение |
|---|---|---|
| Сборка схемы | Правильность подключения, отсутствие КЗ | +/– |
| Загрузка кода | Отсутствие ошибок компиляции | +/– |
| Вывод в Serial-порт | Отображение корректных значений расстояния | +/– |
| Реакция на препятствие | Правильное срабатывание при заданных порогах | +/– |
3. Датчики линии: назначение и функции
3.1. Общее назначение
Датчики линии предназначены для распознавания контрастных границ и движения по заданной траектории, обозначенной линией . Они позволяют роботу «видеть» разметку на полу и корректировать своё движение.
Основные функции датчиков линии :
Следование по траектории — движение по нарисованной линии;
Обнаружение границ — предотвращение выезда за пределы рабочей области;
Распознавание оттенков — различение чёрного, белого и серого цветов ;
Обнаружение пропасти — предотвращение падения со стола или лестницы .
3.2. Принцип работы датчика линии
Датчик линии выполнен на оптопаре (например, TCRT5000), которая объединяет в одном корпусе инфракрасный светодиод и фототранзистор .
ИК-светодиод излучает инфракрасный свет в направлении поверхности.
Свет отражается от поверхности и попадает на фототранзистор.
Интенсивность отражения зависит от цвета поверхности:
При наличии пропасти (например, обрыв стола) отражённый свет практически отсутствует, что эквивалентно чёрной поверхности .
Рабочее расстояние до поверхности: 3–12 мм (оптимально 5–10 мм)
Напряжение питания: 3,3–5 В
Выходной сигнал: аналоговый (0–Vcc) или цифровой (с пороговой схемой)
3.3. Аналоговые и цифровые датчики линии
3.4. Многоканальные датчики линии
Для более точного следования по линии используются сборки из нескольких датчиков. Например, восьмиканальный датчик Octoliner позволяет:
Определять положение линии относительно центра робота с высокой точностью ;
Получать значение позиции линии в диапазоне от –1 (край слева) до +1 (край справа) .
4. Практическая работа «Программирование работы датчика линии»
Цель работы: научиться подключать датчик линии к микроконтроллеру и программировать алгоритмы определения положения линии .
4.1. Необходимые компоненты
Микроконтроллер Arduino Uno
Аналоговый датчик линии TCRT5000 (или модуль Octoliner)
Соединительные провода
Макетная плата
4.2. Схема подключения аналогового датчика
4.3. Пример программы для аналогового датчика
// Определение пина датчика const int sensorPin = A0; // аналоговый пин // Переменные для хранения показаний int sensorValue; float voltage; void setup() { Serial.begin(9600); // инициализация Serial-порта } void loop() { // Считывание данных с датчика (0-1023) sensorValue = analogRead(sensorPin); // Перевод в напряжение (0-5 В) [citation:4] voltage = sensorValue * 5.0 / 1024.0; // Вывод результатов Serial.print("Sensor value: "); Serial.print(sensorValue); Serial.print(" | Voltage: "); Serial.print(voltage); Serial.println(" V"); // Определение цвета по порогу (калибровка) if (sensorValue > 800) { Serial.println("→ White surface"); } else if (sensorValue < 200) { Serial.println("→ Black surface"); } else { Serial.println("→ Gray surface"); } delay(500); }
4.4. Пример программы для двух датчиков (следование по линии)
При использовании двух датчиков, установленных по бокам от линии, можно реализовать простое следование:
const int leftSensor = A0; const int rightSensor = A1; int leftValue, rightValue; void setup() { Serial.begin(9600); } void loop() { leftValue = analogRead(leftSensor); rightValue = analogRead(rightSensor); // Оба датчика видят чёрное — перекрёсток if (leftValue < 200 && rightValue < 200) { moveForward(); // продолжать движение или остановиться } // Левый датчик видит белую линию — нужно повернуть налево else if (leftValue > 800) { turnLeft(); } // Правый датчик видит белую линию — нужно повернуть направо else if (rightValue > 800) { turnRight(); } // Оба видят чёрное — движение прямо else { moveForward(); } delay(50); }
4.5. Программирование с калибровкой
Для работы в различных условиях освещения может потребоваться калибровка датчиков . Калибровка позволяет определить максимальное и минимальное значение сигнала для белого и чёрного цвета в текущих условиях:
int minBlack = 1023; int maxWhite = 0; void calibrate() { for (int i = 0; i < 100; i++) { int val = analogRead(sensorPin); if (val > maxWhite) maxWhite = val; if (val < minBlack) minBlack = val; delay(10); } int threshold = (maxWhite + minBlack) / 2; // порог для принятия решения }
4.6. Пример работы с многоканальным датчиком Octoliner
При использовании восьмиканального датчика Octoliner с библиотекой :
#include <Wire.h> #include <Octoliner.h> Octoliner octoliner(42); // адрес модуля 0x42 void setup() { Serial.begin(115200); Wire.begin(); octoliner.begin(); octoliner.setSensitivity(200); // установка чувствительности } void loop() { // Получение позиции линии (-1..1) int dataSensors[8]; for (int i = 0; i < 8; i++) { dataSensors[i] = octoliner.analogRead(i); } float linePosition = octoliner.mapLine(dataSensors); Serial.println(linePosition); // Коррекция движения на основе позиции линии if (linePosition < -0.5) turnLeft(); else if (linePosition > 0.5) turnRight(); else moveForward(); delay(50); }
4.7. Карта контроля выполнения
| Операция | Критерий оценки | Выполнение |
|---|---|---|
| Сборка схемы | Правильность подключения датчиков | +/– |
| Считывание показаний | Корректный вывод значений в Serial-порт | +/– |
| Определение цвета | Правильное распознавание чёрного и белого | +/– |
| Следование по линии | Удержание робота на траектории | +/– |
| Калибровка | Устойчивость к изменению освещения | +/– |
Вывод: Датчики расстояния и датчики линии являются важнейшими сенсорными системами, обеспечивающими автономное поведение мобильных роботов. Ультразвуковые дальномеры HC-SR04 позволяют роботу «видеть» препятствия на расстоянии до 4 метров, работая по принципу эхолокации . Оптические датчики линии на базе TCRT5000 дают возможность роботу различать цвета поверхностей и следовать по заданной траектории . Освоение практических навыков подключения и программирования этих датчиков является фундаментом для создания более сложных робототехнических систем, способных к навигации, объезду препятствий и автономному движению по сложным маршрутам .
Комментариев нет:
Отправить комментарий