1. Введение: роль датчиков в встраиваемых системах
Датчики — «органы чувств» микроконтроллерных систем. Они преобразуют физические величины (температуру, давление, ускорение и др.) в электрические сигналы, доступные для обработки МК.
Ключевые задачи:
- мониторинг окружающей среды;
- обратная связь в системах управления;
- сбор данных для аналитики и прогнозирования;
- обеспечение безопасности (аварийные срабатывания).
Основные типы выходных сигналов датчиков:
- аналоговый (напряжение, ток);
- цифровой (I²C, SPI, UART);
- дискретный (логический уровень).
2. Температурные датчики
2.1. Типы и принципы работы
- Терморезисторы (NTC/PTC)
- Принцип: изменение сопротивления от температуры.
- NTC: сопротивление падает при нагреве.
- PTC: сопротивление растёт при нагреве.
- Плюсы: низкая стоимость, высокая чувствительность.
- Минусы: нелинейность, необходимость калибровки.
- Термопары
- Принцип: термоЭДС на стыке двух металлов.
- Диапазоны: от −200 °C до +1700 °C (в зависимости от типа).
- Плюсы: широкий диапазон, прочность.
- Минусы: малый выходной сигнал, нужна компенсация холодного спая.
- Цифровые датчики (DS18B20, TMP102)
- Выходной сигнал: I²C, 1‑Wire.
- Плюсы: высокая точность, встроенная обработка, многоточечность.
- Минусы: задержка измерения, стоимость.
- Аналоговые датчики (LM35, TMP36)
- Выходной сигнал: напряжение (например, 10 мВ/°C).
- Плюсы: простота подключения, низкая задержка.
- Минусы: влияние помех, необходимость АЦП.
2.2. Схемы подключения
Терморезистор (с делителем напряжения):
Vcc → [R_опор] → средний вывод терморезистора → GND
Средний вывод → вход АЦП МК
- Расчёт температуры:Rтерм=Rопор⋅Vcc−UАЦПUАЦП, затем по таблице/формуле Стейнхарта‑Харта.
DS18B20 (1‑Wire):
- VDD → 3,3/5 В;
- GND → GND;
- DQ → GPIO МК (с подтягивающим резистором 4,7 кОм);
- Требуется библиотека для 1‑Wire.
LM35 (аналоговый):
- Выход → вход АЦП МК;
- Формула: T (°C)=10 мВ/°CUвых.
2.3. Примеры кода
DS18B20 (Arduino):
#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(2); // Пин D2
DallasTemperature sensors(&oneWire);
void setup() {
sensors.begin();
}
void loop() {
sensors.requestTemperatures();
float temp = sensors.getTempCByIndex(0);
Serial.println(temp);
}
LM35 (STM32 HAL):
float readTemp_LM35() {
uint32_t adc_value = HAL_ADC_GetValue(&hadc1);
float voltage = adc_value * (3.3f / 4095.0f);
return voltage / 0.01f; // 10 мВ/°C
}
3. Датчики давления
3.1. Типы и области применения
- Пьезорезистивные
- Принцип: деформация мембраны изменяет сопротивление.
- Применение: автомобильные системы, медицинская техника.
- Ёмкостные
- Принцип: изменение ёмкости между обкладками при деформации.
- Плюсы: высокая стабильность, низкое энергопотребление.
- Тензометрические
- Принцип: изменение сопротивления проволочной/фольговой решётки.
- Применение: промышленные весы, силомеры.
- Цифровые (BMP280, MPL3115A2)
- Интерфейс: I²C/SPI.
- Дополнительно: измерение температуры, высоты (барометр).
3.2. Параметры выбора
- Диапазон давлений (от долей Па до сотен МПа).
- Точность (0,1–5 %).
- Температурная компенсация.
- Время отклика.
3.3. Схемы подключения
BMP280 (I²C):
- VIN → 3,3 В;
- GND → GND;
- SCL → линия I²C МК;
- SDA → линия I²C МК;
- ADDR (если есть) → для выбора адреса на шине.
Аналоговый датчик (4–20 мА):
- Датчик → [R_нагрузки] (250 Ом) → GND;
- Напряжение на R_нагрузки → АЦП МК;
- Расчёт: P=16 мА⋅Rн(UR−4 мА⋅Rн)⋅Pmax.
3.4. Примеры кода
BMP280 (Arduino + Adafruit_BMP280):
#include <Adafruit_BMP280.h>
Adafruit_BMP280 bmp;
void setup() {
if (!bmp.begin(0x76)) {
Serial.println("BMP280 not found!");
while (1);
}
}
void loop() {
float pressure = bmp.readPressure() / 100.0f; // гПа
float temp = bmp.readTemperature();
Serial.print("P: "); Serial.println(pressure);
Serial.print("T: "); Serial.println(temp);
}
4. Датчики движения
4.1. Типы
- Акселерометры (ADXL345, MPU‑6050)
- Измеряют ускорение по осям X/Y/Z.
- Единицы: g (9,81 м/с²).
- Применение: шагомеры, ориентация экрана, вибродиагностика.
- Гироскопы (MPU‑6050, L3GD20)
- Измеряют угловую скорость (градусы/сек).
- Применение: стабилизация дронов, игровые контроллеры.
- Магнитометры (HMC5883L, LIS3MDL)
- Измеряют магнитное поле Земли.
- Применение: электронные компасы.
- PIR‑датчики (движения)
- Принцип: обнаружение ИК‑излучения движущихся объектов.
- Выход: логический уровень (HIGH при движении).
- Ультразвуковые (HC‑SR04)
- Принцип: эхо‑локация (время полёта звука).
- Расстояние: 2–400 см.
4.2. Схемы подключения
MPU‑6050 (I²C):
- VCC → 3,3 В (с конденсатором 0,1 мкФ);
- GND → GND;
- SCL/SDA → линии I²C МК;
- INT → GPIO (для прерываний).
HC‑SR04 (ультразвуковой):
- VCC → 5 В;
- GND → GND;
- TRIG → GPIO МК (выход);
- ECHO → GPIO МК (вход с подтяжкой).
PIR‑датчик:
- VCC → 5 В;
- OUT → GPIO МК;
- GND → GND.
4.3. Алгоритмы обработки
Акселерометр (определение наклона):\theta_X = \arctan\left(\frac{a_X}{\sqrt{a_Y^2 + a_Z^2}}\right), \quad \theta_Y = \arctan\left(\frac{a_Y}{\sqrt{a



