Перейти к содержимому

Что говорит датчик: датчики робота на осциллографе

pulseIn(), analogRead(), digitalRead() возвращают число. Откуда оно берётся, ученик обычно не видит: датчик для него — строка в программе. Осциллограф показывает, что датчик на самом деле отдаёт по проводу, а монитор порта — что из этого сделала программа. Урок построен на сравнении одного с другим.

Это не новый курс, а приём к урокам модуля «Робототехника»: дальномер, датчик линии, энкодер и сервопривод уже есть в технологических картах 5–6 классов. В 5–6 классе осциллограф показывает учитель или группа только считает импульсы и сравнивает с программой: график с осями и числами читать ещё рано. С 7 класса — полностью, по листу ниже.

Статус. Карточки собраны по паспортам датчиков и по опыту с датчиком НАУРА. На железе пока проверен только датчик с ESP32 и звуковая карта (урок «Прибор врёт»). В каждой карточке — строка «Проверено»; пустая значит «не проверено».

Урок «Что говорит датчик» (7–9 класс, 45 мин)

Одна схема на любой датчик. Группа берёт датчик из коробки — карточка ниже подсказывает подключение и настройки.

ЭтапМинЧто делают ученики
1. Прогноз5По карточке (без раздела «Что ожидать») рисуют, какой сигнал ждут: уровни, длительность, как он поменяется, если поднести руку, повернуть колесо, нажать кнопку пульта
2. Сигнал15Датчик на К1, настройки из карточки. Меняют условия и записывают, что меняется на экране: высота, ширина, частота, число импульсов
3. Число10Тот же датчик — к ESP32, короткий скетч печатает число в монитор порта. Сопоставляют: какое свойство сигнала стало числом
4. Проверка10Сравнивают с независимым измерением: рулеткой, поворотом колеса, транспортиром, паспортом датчика
5. Итог5Одно предложение: «датчик отдаёт ___, программа превращает это в ___»

Лист группы

  1. Датчик: ________ Что он, по-вашему, отдаёт? Нарисуйте сигнал.
  2. Что меняли | что поменялось на экране | число в мониторе порта
  3. Какое свойство сигнала программа превращает в число? ________
  4. Независимая проверка: чем проверили, совпало ли, на сколько разошлось.
  5. Вывод: датчик отдаёт ________, программа делает из этого ________.

Оценивание — те же три уровня объяснения, что во всех опытах (ROADMAP): «так получилось» → причина → причина и проверка.

Безопасность. Датчики питаются от 3,3 или 5 В — для щупов это безопасно. Начинать с предела ±25 В и уменьшать. Сигналы 5 В не подавать на выводы ESP32 без делителя — это касается дальномера (ниже).

Какой датчик чем смотреть

Датчик НАУРА делает до 100 000 точек в секунду. Этого хватает на импульсы шириной от ~50 мкс и на медленные изменения. Цифровые шины (I2C 100–400 кГц, I2S, SPI, UART 115200) для него слишком быстрые: на экране видно, что сигнал есть, но не что в нём. Их читает логический анализатор.

ДатчикЧто отдаётЧем смотретьКласс
Ультразвуковой дальномер HC-SR04импульс, ширина = время полёта звукаосциллограф6 (счёт), 7–9
Энкодер мотора платформыдва меандра со сдвигомосциллограф6 (счёт), 7–9
Сервопривод(на вход) импульс 0,5–2,5 мс каждые 20 мсосциллограф7–9
Датчик линиинапряжение от светаосциллограф, самописец6 (счёт), 7–9
ИК-приёмник пультапачки импульсов кода кнопкиосциллограф8–9
Датчик движения AM312«есть человек» на ~2 ссамописец7–9
Фототранзистор или светодиодпульсации светаосциллограф7–9
Геркон, кнопказамыкание с дребезгомосциллограф7–9
Шаговый моторгенератор: две синусоиды; от драйвера: 4 фазыосциллограф; анализатор8–9
GPS NEO-6/8текст NMEA по UART 9600 раз в секундуосциллограф (по битам), анализатор8–9
Цифровые датчики I2C, I2S, SPIбайты по шинеанализатор8–9

Дальномер HC-SR04

Датчик не меряет расстояние. Он выдаёт импульс Echo, длина которого равна времени, за которое звук долетел до препятствия и вернулся. Расстояние считает программа: pulseIn() даёт микросекунды, деление на 58 — сантиметры.

Подключение. Питание 5 В. Echo — 5 В: на ESP32 только через делитель (например, 1 кОм и 2 кОм), щуп К1 — до делителя, на сам вывод Echo; К2 — на Trig.

Настройки. Предел ±25 В на обоих каналах (5 В на ±5 В упрётся в край), точка 10 мкс (кадр 30 мс), синхронизация по К1 (Echo) на подъём, 1,5 В. Trig длится 10 мкс — одна точка: на экране он может мелькнуть или пропасть. Почему — хороший вопрос к правилу «5–10 точек на деталь».

Скетч (Trig GPIO 5, Echo GPIO 18 через делитель):

const int TRIG = 5, ECHO = 18;
void setup() { Serial.begin(115200); pinMode(TRIG, OUTPUT); pinMode(ECHO, INPUT); }
void loop() {
  digitalWrite(TRIG, HIGH); delayMicroseconds(10); digitalWrite(TRIG, LOW);
  unsigned long t = pulseIn(ECHO, HIGH, 30000);   // мкс, 0 — нет эха
  Serial.printf("%lu мкс  %.1f см\n", t, t / 58.0);
  delay(100);
}

Что ожидать (по паспорту). Echo поднимается примерно через 0,5 мс после Trig. 20 см → Echo около 1,2 мс, 1 м → около 5,8 мс, нет препятствия → длинный импульс (до ~38 мс, в кадр 30 мс не влезет).

Вопросы. Двигаете руку — что меняется на экране? Почему Echo начинается не сразу после Trig? Скорость звука: рулеткой отмерить 50 см до стены, курсорами — ширину Echo, v = 2 · 0,5 м / t. Должно выйти около 340 м/с. Мягкая ткань вместо стены — что с импульсом?

Связь: урок 8 (6 класс), «Фильтр для дальномера» — откуда берутся выбросы, видно прямо на экране.

Проверено: —

Энкодер мотора платформы

Энкодер отдаёт два меандра, A и B, сдвинутых на четверть периода. По числу импульсов программа считает обороты, по тому, кто из двух каналов опережает, — направление.

Подключение. Выводы A и B энкодера — на К1 и К2, минус щупов — на GND платформы. Платформа включена, мотор от драйвера можно не запускать: крутить колесо рукой.

Настройки. Предел ±5 В, точка 100 мкс (кадр 0,3 с); для медленного поворота рукой — самописец 10 с. Синхронизация по К1 на подъём, 1,5 В.

Что ожидать. Два ряда прямоугольников 0 / 3,3 В. Поворот в одну сторону — фронт A раньше фронта B, в другую — позже. Быстрее крутить — импульсы чаще.

Вопросы. Сколько импульсов на один оборот колеса? Совпало со счётчиком в программе из урока 3 (6 класс)? Как программа узнаёт направление, если в каждом канале просто «0, 1, 0, 1»? Что будет со счётом, если программа опрашивает энкодер раз в 10 мс, а импульсы идут через 2 мс?

Проверено: —

Сервопривод

Сервопривод не получает угол. Он получает импульс каждые 20 мс, и угол задаёт ширина импульса. В паспорте обычно 1–2 мс, но библиотеки шлют шире: от ~0,5 до ~2,4–2,5 мс — точное значение зависит от библиотеки, его и меряем.

Подключение. К1 — на сигнальный провод сервопривода (оранжевый или жёлтый), минус щупа — на GND.

Настройки. Предел ±5 В, точка 10 мкс (кадр 30 мс — полтора периода), синхронизация по К1 на подъём, 1,5 В.

Скетч: servo.write(0), write(90), write(180) по очереди с паузой 2 с (библиотека Servo или ESP32Servo).

Что ожидать. Период 20 мс (50 Гц) при любом угле. Ширина импульса растёт с углом.

Вопросы. Какая ширина у 0°, 90°, 180°? Совпало с паспортом «1–2 мс»? Транспортиром: правда ли 180°? Что будет, если послать импульс шире, чем понимает сервопривод (по звуку и на ощупь — осторожно, он может упираться)?

Повышенный уровень: ток сервопривода через шунт 1 Ом на К2 — всплески в момент поворота.

Связь: урок 13 (6 класс), «Мотор с энкодером как сервопривод».

Проверено: —

Датчик линии

Оптический датчик: светодиод светит на пол, фототранзистор принимает отражение. Белое отражает больше — напряжение одно, чёрное меньше — другое. Какое из них выше, зависит от схемы модуля: это и выясняем.

Подключение. Аналоговый выход датчика — на К1. Если на модуле есть второй, цифровой выход (компаратор с подстроечным резистором) — на К2.

Настройки. Предел ±5 В, самописец 10 с.

Что ожидать. Водить датчик над белым и над чёрной изолентой: на К1 напряжение меняется ступенькой. На К2 (если есть) — 0 или 1; на краю линии цифровой выход может «дребезжать» — компаратор без гистерезиса.

Вопросы. Какое напряжение над белым, какое над чёрным? Совпадает с analogRead() после пересчёта (0–4095 → 0–3,3 В)? На какой высоте над полом разница самая большая? Что делает лампа над столом — видно ли на К1 пульсации 100 Гц (точка 100 мкс)?

Связь: урок 9 (6 класс), «Датчики линии».

Проверено: —

ИК-приёмник пульта

Модуль приёмника (TSOP или VS1838) сам убирает несущую 38 кГц и отдаёт код: в покое высокий уровень, пока светит пульт — низкий. Пачки разной длины — нули и единицы.

Подключение. Выход приёмника — на К1, питание 3,3 или 5 В.

Настройки. Предел ±5 В, точка 50 мкс (кадр 150 мс), синхронизация по К1 на спад, уровень 1,5 В. «Один кадр» — нажать кнопку пульта.

Что ожидать (протокол NEC — у многих дешёвых пультов). Длинный низкий импульс 9 мс, пауза 4,5 мс, затем 32 бита: каждый — низкий импульс 0,56 мс и пауза 0,56 мс (0) или 1,69 мс (1). Пульты телевизоров часто используют другие протоколы (RC5, Sony) — картинка будет другой, это тоже ответ.

Вопросы. Чем отличаются две кнопки? Прочитать первый байт по паузам (младший бит первым, как в UART). Что будет, если держать кнопку?

Проверено: —

Датчик движения AM312

Выход — 3,3 В на ~2 с после движения в поле зрения, затем снова 0. Новое движение продлевает импульс. Подробно о датчике — страница AM312.

Настройки. Предел ±5 В, самописец 30 с.

Что ожидать. Махнуть рукой — ступенька вверх на ~2 с. Ходить без остановки — выход не опускается.

Вопросы. Сколько держится сигнал — совпало с паспортом? Сидеть неподвижно в метре — датчик видит? (Нет: PIR реагирует на изменение тепла.) Что из этого следует для автоматического света в классе?

Проверено: —

Фототранзистор: мерцание ламп и экранов

Фототранзистор с резистором 10 кОм (или обычный светодиод прямо на щупы — слабее) превращает свет в напряжение.

Настройки. Предел ±2 В или ±5 В, точка 100 мкс.

Что ожидать. Лампа накаливания или дешёвая светодиодная — пульсации 100 Гц (сеть 50 Гц, два полупериода). Хорошая светодиодная лампа — почти прямая. Экран телефона на минимальной яркости: у многих — прямоугольные импульсы ШИМ, у других — прямая.

Вопросы. Чья лампа мерцает? Чей телефон мигает? Если ШИМ экрана быстрее нескольких кГц, датчик покажет неверную частоту — почему (урок «Прибор врёт»)?

Проверено: —

Геркон и кнопка

Контакт замыкается не один раз, а с дребезгом — опыт «Дребезг кнопки» в Lesson.md. Геркон с магнитом — тот же опыт, плюс датчик оборотов: магнит на колесе, импульс на каждый оборот.

Вопросы. У кого дребезг длиннее — у кнопки или у геркона? С какой скоростью можно крутить колесо, пока геркон успевает?

Проверено: —

Шаговый мотор

Два опыта.

Генератор. Обмотки (две пары выводов) — на К1 и К2, крутить вал рукой. Предел ±5 В (у маленького 28BYJ-48 — ±2 В), самописец 10 с. Ожидать две синусоиды со сдвигом на четверть периода — как у энкодера, только плавные. Быстрее крутить — выше и чаще.

Фазы драйвера. Шаговый мотор от драйвера ULN2003 — четыре выхода IN1–IN4 на каналы D0–D3 логического анализатора. Видна очерёдность включения обмоток; в полушаговом режиме обмотки включаются по одной и по две.

Вопросы. Почему сдвиг на четверть периода, как у энкодера? Что изменится в очерёдности, если поменять направление?

Проверено: —

GPS NEO-6/8

Модуль раз в секунду отдаёт по UART 9600 текст NMEA: строки вроде $GPRMC,…. Это та же шина, что в уроке «UART и I2C», только данные настоящие. О модуле — страница NEO-6/8.

Подключение. TX модуля — на К1. Предел ±5 В.

Что ожидать. Точка 1 мс, кадр 3 с: раз в секунду пачка байтов. Точка 10 мкс — первый символ $ = 0x24 читается по битам, как в уроке 9.

Вопросы. Как часто модуль говорит? Сколько длится пачка — сколько в ней символов при 9600 бод? Потом — то же в PulseView с декодером UART.

Проверено: —

Цифровые датчики: I2C, I2S, SPI

AHT20 и BMP280, MPU6050, GY-271, APDS9960 говорят по I2C на 100–400 кГц, микрофоны INMP441 и ICS-43434 — по I2S на мегагерцах.

На осциллографе видно только, что шина живая: пачки раз в опрос, уровни 0 и 3,3 В. Это тоже ответ — «датчик отвечает или молчит». Содержимое читает логический анализатор с декодером I2C. Медленную шину вручную ученики уже читали в уроке 9 — здесь та же шина на настоящей скорости.

Вопрос. Почему датчик НАУРА не может прочитать I2C на 400 кГц? Сколько точек приходится на один такт?