Учебник Сенсорика для начинающих
Любая «умная» система начинается с датчика — куска физики, который превращает температуру, давление, свет или ускорение в число. Но сырое число с датчика почти всегда врёт: оно нелинейно, зашумлено, смещено и квантовано. Этот курс — про то, как превратить грязный сигнал в надёжную оценку измеряемой величины. Мы разберём, как устроены реальные датчики (термопары, терморезисторы, ИК и ультразвук, IMU), как работает аналого-цифровое преобразование, как калибровать и линеаризовать показания, как давить шум скользящим, экспоненциальным и медианным фильтром, как сливать несколько датчиков комплементарным фильтром и фильтром Калмана, и как из чистого сигнала делать события и пороги. Рядом с каждой формулой — короткая программа на стандартной библиотеке Python, которая её считает прямо в браузере. Курс не дублирует теорию ЦОС и Фурье — упор на физику измерения, калибровку, фильтрацию и слияние.
Курс «Сенсорика: датчики и обработка сигналов» состоит из 8 разделов и 25 уроков: Что такое датчик, Типы датчиков, Аналого-цифровое преобразование, Калибровка и линеаризация, Шум и фильтрация, Слияние датчиков, Пороги, события и интерфейсы и Применение: сквозные расчёты. Уроки идут по порядку — от основ к более сложным темам, в каждом есть объяснение с примерами, а в конце — вопросы для самопроверки. К урокам привязаны задачи с автоматической проверкой: прочитали тему — сразу закрепили её кодом.
Программа курса
1 Что такое датчик
- Измеряемая величина и передаточная функция
Что измеряет датчик, как устроена его передаточная функция и почему выходной сигнал — это не сама величина, а её модель.
- Чувствительность, диапазон и разрешение
Чувствительность как наклон характеристики, диапазон измерений, разрешение и их связь с пригодностью датчика для задачи.
- Нелинейность и гистерезис
Что такое нелинейность в % FSO и гистерезис датчика, как их измеряют и почему они ограничивают точность.
- Измеряемая величина и передаточная функция
2 Типы датчиков
- Датчики температуры: термопара и терморезистор
Термопара (эффект Зеебека) и терморезистор (NTC, уравнение Бета): как из напряжения и сопротивления получить температуру.
- Датчики давления и света
Пьезорезистивные датчики давления и фотодиоды/фоторезисторы: линейный пересчёт давления и логарифмический отклик на свет.
- Датчики расстояния: ИК и ультразвук
Как ИК-триангуляция и ультразвуковой дальномер измеряют расстояние: время полёта, скорость звука и обратная зависимость ИК.
- Инерциальные датчики: IMU
Акселерометр и гироскоп в IMU: как из ускорения получить угол наклона, что измеряет гироскоп и зачем их объединять.
- Датчики температуры: термопара и терморезистор
3 Аналого-цифровое преобразование
- Дискретизация и теорема Котельникова
Частота дискретизации, теорема Котельникова (Найквиста) и эффект наложения (алиасинг): почему нужно мерить вдвое чаще максимальной частоты.
- Разрядность АЦП и шаг квантования
Сколько уровней даёт N-битный АЦП, как считать шаг квантования (LSB) и максимальную ошибку квантования.
- Шум квантования и эффективное разрешение
Ошибка квантования ±0.5 LSB, отношение сигнал/шум SNR ≈ 6.02N+1.76 дБ и эффективное число бит (ENOB).
- Дискретизация и теорема Котельникова
4 Калибровка и линеаризация
- Двухточечная калибровка
Линейная двухточечная калибровка датчика: расчёт наклона и смещения по двум эталонным точкам, коррекция нуля и масштаба.
- Аппроксимация многочленом
Линеаризация нелинейного датчика многочленом: метод наименьших квадратов для прямой и квадратичная аппроксимация на Python stdlib.
- Единицы измерения и перевод
Работа с единицами в показаниях датчиков: SI-приставки, перевод величин, температурные шкалы и контроль размерностей.
- Двухточечная калибровка
5 Шум и фильтрация
- Природа шума и скользящее среднее
Откуда берётся шум датчика, как скользящее среднее усредняет окно отсчётов и почему оно снижает шум в корень из N раз.
- Экспоненциальный фильтр (EMA)
Экспоненциальное скользящее среднее: рекуррентная формула, параметр alpha, компромисс скорость/сглаживание и память в один отсчёт.
- Медианный фильтр против выбросов
Медианный фильтр: почему медиана устойчива к выбросам, чем отличается от среднего и как давить импульсный шум датчика.
- Природа шума и скользящее среднее
6 Слияние датчиков
- Зачем сливать датчики
Идея слияния датчиков: один датчик быстрый, но дрейфует, другой стабильный, но медленный — вместе они дают лучшую оценку.
- Комплементарный фильтр
Комплементарный фильтр для IMU: смесь интеграла гироскопа и угла акселерометра, формула с alpha и 1D-симуляция оценки угла.
- Фильтр Калмана на пальцах (1D)
Идея фильтра Калмана на простом 1D-примере: предсказание, обновление, коэффициент усиления Калмана и симуляция на Python stdlib.
- Зачем сливать датчики
7 Пороги, события и интерфейсы
- Пороги и гистерезис событий
Пороговое срабатывание с гистерезисом (триггер Шмитта): два порога вместо одного, чтобы убрать дребезг на границе.
- Антидребезг сигналов и кнопок
Антидребезг (debounce) кнопок и дискретных датчиков: подавление ложных переключений требованием стабильности N отсчётов.
- Интерфейсы: аналоговый, I2C, SPI
Как датчики передают данные: аналоговый выход через АЦП и цифровые шины I2C (адресная, два провода) и SPI (быстрая, отдельный выбор).
- Пороги и гистерезис событий
8 Применение: сквозные расчёты
- Метеостанция: от давления к погоде
Сквозной пример метеостанции: приведение давления к уровню моря и расчёт точки росы по температуре и влажности.
- Система ориентации: цепочка обработки IMU
Сквозной расчёт угла из IMU: фильтрация акселерометра, наклон через arctan и слияние с гироскопом комплементарным фильтром.
- Обнаружение движения по дисперсии
Детектор движения: сравнение стандартного отклонения окна сигнала с порогом, скользящая дисперсия и устойчивость к шуму.
- Метеостанция: от давления к погоде