Главная / Без рубрики / Датчики и их подключение к микроконтроллерам: температурные, давления, движения

Датчики и их подключение к микроконтроллерам: температурные, давления, движения

1. Введение: роль датчиков в встраиваемых системах

Датчики — «органы чувств» микроконтроллерных систем. Они преобразуют физические величины (температуру, давление, ускорение и др.) в электрические сигналы, доступные для обработки МК.

Ключевые задачи:

  • мониторинг окружающей среды;
  • обратная связь в системах управления;
  • сбор данных для аналитики и прогнозирования;
  • обеспечение безопасности (аварийные срабатывания).

Основные типы выходных сигналов датчиков:

  • аналоговый (напряжение, ток);
  • цифровой (I²C, SPI, UART);
  • дискретный (логический уровень).

2. Температурные датчики

2.1. Типы и принципы работы

  1. Терморезисторы (NTC/PTC)
    • Принцип: изменение сопротивления от температуры.
    • NTC: сопротивление падает при нагреве.
    • PTC: сопротивление растёт при нагреве.
    • Плюсы: низкая стоимость, высокая чувствительность.
    • Минусы: нелинейность, необходимость калибровки.
  2. Термопары
    • Принцип: термоЭДС на стыке двух металлов.
    • Диапазоны: от −200 °C до +1700 °C (в зависимости от типа).
    • Плюсы: широкий диапазон, прочность.
    • Минусы: малый выходной сигнал, нужна компенсация холодного спая.
  3. Цифровые датчики (DS18B20, TMP102)
    • Выходной сигнал: I²C, 1‑Wire.
    • Плюсы: высокая точность, встроенная обработка, многоточечность.
    • Минусы: задержка измерения, стоимость.
  4. Аналоговые датчики (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. Типы и области применения

  1. Пьезорезистивные
    • Принцип: деформация мембраны изменяет сопротивление.
    • Применение: автомобильные системы, медицинская техника.
  2. Ёмкостные
    • Принцип: изменение ёмкости между обкладками при деформации.
    • Плюсы: высокая стабильность, низкое энергопотребление.
  3. Тензометрические
    • Принцип: изменение сопротивления проволочной/фольговой решётки.
    • Применение: промышленные весы, силомеры.
  4. Цифровые (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. Типы

  1. Акселерометры (ADXL345, MPU‑6050)
    • Измеряют ускорение по осям X/Y/Z.
    • Единицы: g (9,81 м/с²).
    • Применение: шагомеры, ориентация экрана, вибродиагностика.
  2. Гироскопы (MPU‑6050, L3GD20)
    • Измеряют угловую скорость (градусы/сек).
    • Применение: стабилизация дронов, игровые контроллеры.
  3. Магнитометры (HMC5883L, LIS3MDL)
    • Измеряют магнитное поле Земли.
    • Применение: электронные компасы.
  4. PIR‑датчики (движения)
    • Принцип: обнаружение ИК‑излучения движущихся объектов.
    • Выход: логический уровень (HIGH при движении).
  5. Ультразвуковые (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

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *