1. 传感器系统概述:传感器定义、分类、性能指标、选型原则

大家好,我是老张。做嵌入式这行快十五年了,从最早的51单片机玩到现在的多核异构处理器,传感器始终是绕不开的核心。今天咱们聊聊传感器系统的基础,这些东西看着简单,但真到项目里,坑可不少。

1.1 传感器的定义

传感器是什么?说白了,就是把物理世界的信号变成电信号的装置。温度、压力、光线、声音、加速度……这些我们感知不到或者难以精确量化的东西,传感器能帮我们搞定。

我个人习惯把传感器理解成一个“翻译官”。它把物理量翻译成电压、电流、频率这些电信号,然后MCU或者DSP才能读懂。举个例子,你用手摸一下热水杯,知道烫,但不知道具体多少度。一个NTC热敏电阻或者DS18B20数字温度传感器,就能告诉你“85.3℃”。

核心定义:传感器是一种检测装置,能感受被测量的信息,并按一定规律将其转换成可用输出信号(通常是电信号)。

1.2 传感器的分类

传感器的分类方式很多,我一般按下面这几种维度来分,项目里够用了。

按被测物理量分类

  • 热工量:温度、热量、热流。比如热电偶、热敏电阻、红外测温。
  • 机械量:位移、力、速度、加速度、振动。比如加速度计、压力传感器、应变片。
  • 光学量:光强、色度、图像。比如光电二极管、CCD/CMOS图像传感器。
  • 磁学量:磁场强度、方向。比如霍尔传感器、磁阻传感器。
  • 声学量:声压、声强、超声波。比如麦克风、超声波换能器。
  • 化学量:气体浓度、pH值、湿度。比如MQ系列气体传感器、电化学传感器。

按输出信号类型分类

类型 特点 典型例子
模拟输出 连续电压/电流信号,需ADC采样 LM35温度传感器、电位器
数字输出 直接输出数字量,抗干扰强 DS18B20、MPU6050(I2C)
频率/脉冲输出 频率变化代表物理量变化 霍尔流量计、超声波测距
开关量输出 只有0和1,简单粗暴 红外避障传感器、干簧管

我记得刚入行那会儿,选传感器只看精度和价格,结果在一个工业项目里选了模拟输出的温度传感器,布线长了信号衰减严重,折腾了两周才搞定。后来学乖了,长距离传输优先选数字接口或者4-20mA电流环。

1.3 传感器的性能指标

这部分是选型的硬功夫。我见过不少工程师拿着数据手册只看精度,其他参数一概不管,结果项目翻车。下面这几个指标,你选型时必须过一遍。

1. 量程(Range)

传感器能测量的最大最小值范围。比如一个压力传感器量程0-10MPa,你非要测12MPa,那结果就是烧掉或者非线性失真。我曾经在一个液压系统里吃过这个亏,传感器直接爆了,还好没伤到人。

2. 精度(Accuracy)

测量值与真实值的偏差。注意,精度和分辨率是两码事。分辨率是能分辨的最小变化,精度是准不准。一个16位ADC分辨率很高,但参考电压漂了,精度照样差。

3. 灵敏度(Sensitivity)

输出变化量与输入变化量的比值。比如加速度计,灵敏度单位是mV/g。灵敏度越高,信号越容易处理,但也越容易受噪声干扰。

4. 线性度(Linearity)

实际输出曲线与理想直线的偏离程度。非线性误差大的传感器,需要做软件校准。我习惯在批量生产前抽测10%的样品,看看线性度一致性怎么样。

5. 响应时间(Response Time)

从输入变化到输出稳定所需的时间。比如气体传感器,有些电化学传感器响应时间长达几十秒,做快速检测项目根本不能用。

6. 重复性(Repeatability)

相同条件下多次测量的一致性。这个指标很关键,尤其是在工业自动化里。重复性差的传感器,数据根本没法用。

避坑指南:我曾经在一个环境监测项目里,选了某款便宜的气体传感器,精度标称±5%,但重复性实测超过±15%。同一瓶标气,上午测和下午测能差20%。后来换了Sensirion的传感器,虽然贵了三倍,但数据稳定多了。选型时,重复性比精度更值得关注。

1.4 传感器的选型原则

选传感器不是越贵越好,也不是精度越高越好。我总结了一套选型流程,分享给大家。

第一步:明确需求

  • 测什么物理量?量程范围是多少?
  • 精度要求多少?响应时间要求多快?
  • 工作环境:温度、湿度、振动、电磁干扰?
  • 接口类型:模拟、I2C、SPI、UART、CAN?
  • 成本预算:单颗传感器多少钱?

第二步:筛选候选型号

根据需求,从主流厂商(如Bosch、ST、TI、Honeywell、Sensirion)中筛选3-5款。别只看一家,不同厂商的传感器各有优劣。

第三步:对比关键参数

把候选型号的量程、精度、灵敏度、功耗、封装、价格列成表格,逐项对比。我一般会重点关注功耗和封装,尤其是做电池供电的产品。

第四步:做实物测试

数据手册是理想情况,实际表现得自己测。我习惯先买10片样品,搭个测试板,跑一下全温度范围、全量程范围,看看实际表现。这一步不能省,省了就是给自己挖坑。

重要提醒:选型时一定要考虑供应链。我曾经选了一款非常合适的传感器,结果量产时发现交期要16周,差点导致项目延期。现在我会优先选有现货、有替代料的型号。

1.5 传感器系统知识体系

下面这张图是我自己整理的传感器系统知识框架,涵盖了从基础概念到实际应用的完整链路。你把它理解了,后面章节的内容就顺了。

传感器系统知识体系 传感器定义:物理量 → 电信号 传感器分类 按被测物理量 按输出信号类型 按工作原理 核心性能指标 量程 精度 灵敏度 线性度 响应时间 重复性 选型原则:需求分析 → 筛选 → 对比 → 实测

这张图把传感器系统的核心内容串起来了。从定义出发,理解分类,掌握性能指标,最后落到选型原则。后面的章节,我们会逐一深入每个环节。

1.6 一个简单的传感器数据读取示例

光说不练假把式。下面是一个用STM32读取DHT11温湿度传感器的代码片段,模拟接口,单总线协议。这个传感器便宜、简单,适合入门。

// DHT11 温湿度传感器读取示例(STM32 HAL库)
#include "dht11.h"

#define DHT11_PIN GPIO_PIN_0
#define DHT11_PORT GPIOA

// 读取DHT11数据
uint8_t DHT11_ReadData(float *temperature, float *humidity)
{
    uint8_t data[5] = {0};
    uint8_t i, j;
    
    // 主机发送起始信号
    HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_RESET);
    HAL_Delay(18);  // 拉低至少18ms
    HAL_GPIO_WritePin(DHT11_PORT, DHT11_PIN, GPIO_PIN_SET);
    delay_us(30);   // 拉高20-40us
    
    // 等待DHT11响应
    if (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN) == GPIO_PIN_RESET)
    {
        while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN) == GPIO_PIN_RESET);  // 等待拉高
        while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN) == GPIO_PIN_SET);    // 等待拉低
        
        // 读取40位数据
        for (j = 0; j < 5; j++)
        {
            for (i = 0; i < 8; i++)
            {
                while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN) == GPIO_PIN_RESET);
                delay_us(40);
                if (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN) == GPIO_PIN_SET)
                {
                    data[j] |= (1 << (7 - i));
                }
                while (HAL_GPIO_ReadPin(DHT11_PORT, DHT11_PIN) == GPIO_PIN_SET);
            }
        }
        
        // 校验:前4字节之和等于第5字节
        if ((data[0] + data[1] + data[2] + data[3]) == data[4])
        {
            *humidity = (float)data[0];
            *temperature = (float)data[2];
            return 1;  // 成功
        }
    }
    return 0;  // 失败
}

经验之谈:DHT11的时序要求比较严格,尤其是那个40us的延时。我刚开始用HAL_Delay()做微秒级延时,结果死活读不到数据。后来改用定时器或者空循环做微秒延时,问题就解决了。记住,HAL_Delay()最小单位是1ms,做不了微秒级操作。

好了,第一章的内容就到这里。传感器系统的基础概念、分类、性能指标和选型原则,都是后面实战的基石。你把这些吃透了,后面学各种传感器接口、数据融合、系统设计,就会轻松很多。

可可精品资料库