Что говорит датчик: датчики робота на осциллографе
pulseIn(), analogRead(), digitalRead() возвращают число. Откуда оно
берётся, ученик обычно не видит: датчик для него — строка в программе.
Осциллограф показывает, что датчик на самом деле отдаёт по проводу, а
монитор порта — что из этого сделала программа. Урок построен на сравнении
одного с другим.
Это не новый курс, а приём к урокам модуля «Робототехника»: дальномер, датчик линии, энкодер и сервопривод уже есть в технологических картах 5–6 классов. В 5–6 классе осциллограф показывает учитель или группа только считает импульсы и сравнивает с программой: график с осями и числами читать ещё рано. С 7 класса — полностью, по листу ниже.
Статус. Карточки собраны по паспортам датчиков и по опыту с датчиком НАУРА. На железе пока проверен только датчик с ESP32 и звуковая карта (урок «Прибор врёт»). В каждой карточке — строка «Проверено»; пустая значит «не проверено».
Урок «Что говорит датчик» (7–9 класс, 45 мин)
Одна схема на любой датчик. Группа берёт датчик из коробки — карточка ниже подсказывает подключение и настройки.
| Этап | Мин | Что делают ученики |
|---|---|---|
| 1. Прогноз | 5 | По карточке (без раздела «Что ожидать») рисуют, какой сигнал ждут: уровни, длительность, как он поменяется, если поднести руку, повернуть колесо, нажать кнопку пульта |
| 2. Сигнал | 15 | Датчик на К1, настройки из карточки. Меняют условия и записывают, что меняется на экране: высота, ширина, частота, число импульсов |
| 3. Число | 10 | Тот же датчик — к ESP32, короткий скетч печатает число в монитор порта. Сопоставляют: какое свойство сигнала стало числом |
| 4. Проверка | 10 | Сравнивают с независимым измерением: рулеткой, поворотом колеса, транспортиром, паспортом датчика |
| 5. Итог | 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 кГц? Сколько точек приходится на один такт?