1. Датчики в робототехнике: понятие и функции
Датчик (сенсор) — это устройство, которое преобразует физическое воздействие (свет, звук, давление, расстояние) в электрический сигнал, понятный микроконтроллеру -9. Если представить робота как живой организм, то датчики — это его органы чувств. Без них робот слеп и глух к окружающему миру. Датчики обеспечивают обратную связь, позволяя машине адаптировать своё поведение под изменяющиеся условия, а не просто выполнять жестко заданную программу -1-6.
Основные функции датчиков:
Обнаружение препятствий и взаимодействие с объектами (тактильные сенсоры) -8.
Определение положения в пространстве (гироскопы, акселерометры) -4-9.
Распознавание визуальной информации (камеры, датчики цвета) -9.
Измерение расстояния (ультразвуковые, лазерные дальномеры) -9.
2. Датчик нажатия: устройство и принцип работы
Датчик нажатия (тактильный сенсор, кнопка) — это один из простейших и одновременно важнейших типов сенсоров в учебной робототехнике -8-10. Его задача — зафиксировать факт механического контакта робота с препятствием или нажатие оператора.
Принцип действия:
Конструктивно датчик представляет собой кнопочный переключатель. В обычном состоянии электрическая цепь разомкнута. При нажатии на кнопку контакты замыкаются, и через датчик начинает течь электрический ток -9.
Состояние HIGH (1): Сигнал «Нажато» — цепь замкнута.
Состояние LOW (0): Сигнал «Отпущено» — цепь разомкнута.
Современные промышленные тактильные датчики могут быть более сложными (пьезоэлектрические, ёмкостные), измеряя не только факт нажатия, но и силу давления -1-4-6. Однако в учебных моделях (LEGO EV3, Arduino-совместимые конструкторы) чаще всего используется именно дискретный (цифровой) датчик касания -5-9.
3. Применение датчиков нажатия
В робототехнике датчики нажатия решают широкий спектр задач -8-10:
Обнаружение препятствий: На бампере робота. При столкновении с препятствием датчик срабатывает, и контроллер подает команду на объезд или остановку -8.
Ориентация в пространстве: Как конечные выключатели на манипуляторах, ограничивающие ход руки -8.
Управление движением: Кнопки используются как пульт управления для запуска/остановки мотора или смены режима работы (например, реверс) -5-8.
Навигация в лабиринте: Робот с двумя датчиками касания на «усах» может двигаться вдоль стены, касаясь её для коррекции курса.
4. Сборка и программирование модели робота с датчиками
4.1. Сборка базовой модели робота
Перед началом программирования необходимо собрать мобильную платформу.
Выбор модели: Соберите стандартную двухколёсную тележку (дифференциальный привод) с передним или задним свободным колесом -3.
Установка датчиков: Закрепите два датчика нажатия на передней части робота. Их можно расположить как «усы» (слева и справа) для объезда препятствий, либо как кнопки на корпусе для ручного управления -3-8.
Подключение: Подключите датчики к соответствующим портам контроллера (например, Порт 1 — Левый датчик, Порт 2 — Правый датчик) -3-5.
4.2. Программирование одного датчика нажатия
Рассмотрим базовый алгоритм: робот движется до тех пор, пока не наткнётся на препятствие.
Логика работы:
Шаг 1: Робот едет вперед.
Шаг 2: Проверка датчика.
Шаг 3: Если датчик нажат (есть препятствие) — остановка. Если нет — продолжать движение.
Пример кода (C++ / Arduino / Робототехнические конструкторы):
// Псевдокод для одного датчика #define BUTTON_PIN 8 // Датчик нажатия на 8 пине #define MOTOR_PIN 9 // Мотор на 9 пине void setup() { pinMode(BUTTON_PIN, INPUT); pinMode(MOTOR_PIN, OUTPUT); } void loop() { if (digitalRead(BUTTON_PIN) == HIGH) { // Если датчик нажат digitalWrite(MOTOR_PIN, LOW); // Остановить мотор } else { digitalWrite(MOTOR_PIN, HIGH); // Ехать вперед } }
4.3. Создание кодов программ для двух датчиков
Использование двух датчиков позволяет реализовать ветвление логики в зависимости от того, с какой стороны произошло касание. Это делает поведение робота более умным: он не просто останавливается, а объезжает препятствие -3-8.
Задача: Объезд препятствия с помощью двух датчиков-«усов».
Левый датчик нажат: Препятствие слева. Нужно отъехать назад, повернуть направо и продолжить путь -3.
Правый датчик нажат: Препятствие справа. Отъехать назад, повернуть налево.
Оба нажаты: Тупик (стена). Отъехать назад и развернуться на 180 градусов.
Реализация логики в коде (Пример для LEGO EV3 / RobotC):
Ниже приведён фрагмент кода, демонстрирующий управление скоростью мотора с помощью двух датчиков касания. Первая кнопка увеличивает скорость, вторая — уменьшает -5.
// Конфигурация портов (LEGO EV3 RobotC) #pragma config(Sensor, S1, touchLeft, sensorEV3_Touch) #pragma config(Sensor, S2, touchRight, sensorEV3_Touch) #pragma config(Motor, motorB, rightMotor, tmotorEV3_Large, PIDControl) #pragma config(Motor, motorC, leftMotor, tmotorEV3_Large, PIDControl) task main() { int speed = 0; while (true) { // Реакция на левый датчик (увеличение скорости) if (getTouchValue(touchLeft) == 1) { if (speed < 100) speed += 10; while (getTouchValue(touchLeft) == 1) { sleep(10); } setMotorSpeed(motorB, speed); setMotorSpeed(motorC, speed); } // Реакция на правый датчик (уменьшение скорости) if (getTouchValue(touchRight) == 1) { if (speed > -100) speed -= 10; while (getTouchValue(touchRight) == 1) { sleep(10); } setMotorSpeed(motorB, speed); setMotorSpeed(motorC, speed); } } }
В данном примере робот не движется сам, а ждёт команд от оператора, меняя скорость вращения моторов при нажатии на соответствующие кнопки -5.
5. Антидребезг контактов
При работе с механическими кнопками возникает физический эффект дребезга (bouncing). При замыкании пластины кнопки не соприкасаются мгновенно, а многократно «вибрируют» в течение нескольких миллисекунд. Контроллер воспринимает это как несколько десятков нажатий вместо одного -2.
Методы борьбы с дребезгом:
Аппаратный: Добавление конденсатора в схему.
Программный: Введение временной задержки (тайм-аута) после первого срабатывания.
Пример программной защиты (Антидребезг):
const int debounceDelay = 50; // Задержка 50 мс unsigned long lastDebounceTime = 0; void loop() { int reading = digitalRead(BUTTON_PIN); if (reading != lastButtonState) { lastDebounceTime = millis(); // Сброс таймера при изменении состояния } if ((millis() - lastDebounceTime) > debounceDelay) { // Если состояние стабильно дольше 50 мс — обрабатываем нажатие if (reading == HIGH && lastButtonState == LOW) { pressCount++; // Считаем нажатие } } lastButtonState = reading; }
Этот алгоритм игнорирует хаотичные переключения сигнала, учитывая только стабильное состояние -2.
6. Практическая работа
Цель: Собрать модель робота и создать программу, управляющую его движением с использованием двух датчиков нажатия -8-10.
Ход работы:
Конструирование:
Соберите колёсную платформу -3.
Установите два датчика нажатия на переднем бампере или по бокам.
Подключите датчики к контроллеру.
Программирование:
Создайте программу, реализующую алгоритм движения «вдоль стены» (рука-датчик постоянно касается стены).
Создайте программу, в которой робот движется по комнате и объезжает препятствия при касании любого из датчиков -10.
Тестирование:
Загрузите программу в контроллер.
Протестируйте поведение робота. Если реакции нет, проверьте подключение портов и настройки в коде -3.
Вывод: Датчики нажатия — это базовые элементы «тактильной» системы робота. В ходе данной работы мы изучили их устройство, научились считывать показания и программировать логику ветвления на основе сигналов с двух датчиков. Использование двух сенсоров позволяет роботу не просто констатировать факт столкновения, а принимать решение о направлении объезда в зависимости от того, какая сторона робота встретила препятствие -8.
Список использованных источников
Труби Р.Л. и др. Мягкие роборуки с сенсорами нажатия и внутреннего давления / Advanced Materials, 2018 -1-6.
Пример программы с антидребезгом для Arduino / Wokwi Simulator, 2025 -2.
Ошаева С.Д. Программирование модели робота с двумя датчиками / Инфоурок, 2026 -3.
Зудин В.Л., Боровков В.Д., Федотов В.С. Датчики промышленных роботов. Ч. 1: Датчики механических величин / ЯГТУ, 2022 -4.
Пример кода управления моторами через два датчика касания (LEGO EV3 RobotC) / Lego Education -5.
Силеёнкова В.В. Создание кодов программ для двух датчиков нажатия. Практическая работа / Инфоурок, 2025 -8-10.
Датчики в робототехнике. 6 класс. Презентация / Инфоурок, 2024 -9.
Мельник Д.П. Изучение, применение и программирование датчика нажатия / Инфоурок, 2025 -10.