3、硬件测试系统设计:主控芯片选型(STM32/国产替代)、温度传感器接口电路(ADC/运放)、通信接口(USB/UART/蓝牙)、电源管理模块。

好,咱们进入正题。体温计这东西,看着简单,但量产测试时,硬件设计上的坑一个接一个。我这些年踩过的雷,今天全给你抖出来。

硬件测试系统,说白了就是给体温计搭一个「体检台」。你得能控制它、读取它、供电给它,还得保证数据准。这四块——主控、传感器接口、通信、电源——一个都不能掉链子。

3.1 主控芯片选型:STM32 还是国产替代?

主控是大脑。选错了,后面全白干。

我个人习惯,量产测试的主控,首选 STM32F103 系列。为什么?生态太成熟了。库函数、例程、调试工具,网上随便一搜一大把。你团队里随便拉个工程师,上手就能干。

但这两年情况变了。ST 的芯片价格涨得离谱,交期还长。所以国产替代方案必须考虑。我推荐几款我用过的:

  • GD32F103:和 STM32F103 引脚兼容,性能还略高。直接替换,代码基本不用改。我在一条产线上用过,跑了两年没出过问题。
  • AT32F403:雅特力的,主频能到 240MHz,比 ST 快一倍。适合需要高速采样的场景。
  • APM32F103:极海半导体的,也是 pin-to-pin 兼容。价格比 GD 还便宜一点。

选型核心指标:

  • ADC 位数:至少 12 位,体温计精度要求 0.01℃,12 位是底线。
  • 采样率:不用太高,10kHz 足够。但要注意多通道切换时的建立时间。
  • 工作温度:工业级 -40℃~85℃。别选商业级,产线环境有时候很恶劣。
  • 供货稳定:这个最重要。再好的芯片,买不到就是废铁。

避坑指南: 我曾经在一个项目里选了某国产芯片,便宜是真便宜,但 ADC 的 INL(积分非线性)差得一塌糊涂。测出来的温度跳来跳去,最后不得不换回 STM32。所以,国产替代可以,但 ADC 性能一定要实测验证。

3.2 温度传感器接口电路:ADC 与运放的配合

体温计的核心传感器,主流是 NTC 热敏电阻或者数字温度传感器(比如 DS18B20)。但量产测试时,我建议用 NTC + ADC 的方案。为什么?因为数字传感器有延迟,而且一致性差。

接口电路设计要点:

  1. 分压电阻选择:NTC 和精密电阻组成分压网络。电阻精度至少 0.1%,温漂 25ppm 以下。我习惯用 10kΩ 的精密电阻,和 10kΩ 的 NTC 匹配。
  2. 运放缓冲:NTC 输出阻抗高,直接进 ADC 会拉低电压。加一个运放做电压跟随器。推荐 OPA333 或 SGM8551,都是零漂移运放,温漂极小。
  3. 滤波电容:在 ADC 输入端加一个 100nF 的电容,滤掉高频噪声。但注意,电容太大会影响建立时间。我一般用 10nF,够用。
// 典型 NTC 分压电路计算示例
// 假设 Vref = 3.3V, R_fixed = 10kΩ, R_ntc = 10kΩ (25℃时)
// 则 Vout = Vref * R_ntc / (R_fixed + R_ntc)
// 25℃时: Vout = 3.3 * 10 / (10 + 10) = 1.65V

// ADC 转换代码 (STM32 HAL 库)
uint16_t adc_value;
float voltage, temperature;

HAL_ADC_Start(&hadc1);
HAL_ADC_PollForConversion(&hadc1, 100);
adc_value = HAL_ADC_GetValue(&hadc1);

voltage = (float)adc_value / 4095 * 3.3;  // 12位ADC
// 然后通过查表或 Steinhart-Hart 公式计算温度

注意: 运放的供电电压要和 ADC 的参考电压一致。否则会引入额外的误差。我见过有人用 5V 给运放供电,但 ADC 参考是 3.3V,结果输出直接饱和了。

3.3 通信接口:USB、UART、蓝牙怎么选?

量产测试,通信接口决定了你的测试效率。三种接口各有用途,我分别说说。

接口类型 速率 适用场景 我的建议
USB 12Mbps (全速) 批量下载固件、高速数据采集 必选。产线测试主力接口。
UART 115200bps 典型 调试、日志输出、简单指令交互 保留。调试时离不开它。
蓝牙 1Mbps (BLE) 无线测试、多设备并行测试 按需。如果产线需要无线,加一个 HC-08 模块。

USB 设计要点:

  • STM32 的 USB 需要外部晶振,精度要求 0.25% 以内。别用内部 RC,会丢包。
  • USB 接口要加 ESD 保护芯片,比如 NUP2105L。产线上静电多,不加的话,烧一个 USB 口就停产了。
  • 我习惯用 USB 虚拟串口(CDC),这样上位机直接用串口工具就能通信,省去装驱动的麻烦。

个人经验: 蓝牙测试有个坑——信号干扰。产线上几十台设备同时开蓝牙,信道全挤在一起。我后来强制每台设备用不同的 MAC 地址,并且测试时只连一台,才解决。

3.4 电源管理模块:稳定是第一要务

体温计测试,电源纹波直接影响 ADC 精度。你想想看,ADC 参考电压上如果有个 10mV 的纹波,对应温度误差可能就 0.1℃了。这绝对不行。

电源设计原则:

  1. LDO 稳压:别用 DC-DC。DC-DC 的开关噪声太大。用 AMS1117-3.3 或 RT9013,纹波能控制在 1mV 以内。
  2. 模拟/数字分开供电:ADC 和运放用独立的 LDO 供电,和数字电路隔离开。我一般用两个 AMS1117,一个给数字,一个给模拟。
  3. 去耦电容:每个芯片的电源引脚旁边放一个 100nF 的陶瓷电容,再加一个 10μF 的钽电容。位置要靠近引脚,越近越好。
  4. USB 供电保护:USB 口进来先过自恢复保险丝(500mA),再加 TVS 管防浪涌。产线上插拔频繁,保护不能省。
// 电源管理代码示例:进入低功耗模式
// 测试完成后,让主控进入 STOP 模式省电
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
// 唤醒后重新配置时钟
SystemClock_Config();

警告: 我曾经遇到过一个问题:产线上 10 台测试设备同时工作,电源线太长导致压降,最远那台设备的电压掉到了 3.0V,ADC 结果全偏了。后来我在每台设备端加了独立的 LDO,才解决。记住,电源线越短越好,线径越粗越好。

好了,硬件测试系统设计这块,核心就是这四部分。主控选型要兼顾性能和供货,传感器接口要抠精度,通信接口要匹配产线流程,电源管理要稳如磐石。下一章咱们聊软件架构,到时候再细说。