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 的方案。为什么?因为数字传感器有延迟,而且一致性差。
接口电路设计要点:
- 分压电阻选择:NTC 和精密电阻组成分压网络。电阻精度至少 0.1%,温漂 25ppm 以下。我习惯用 10kΩ 的精密电阻,和 10kΩ 的 NTC 匹配。
- 运放缓冲:NTC 输出阻抗高,直接进 ADC 会拉低电压。加一个运放做电压跟随器。推荐 OPA333 或 SGM8551,都是零漂移运放,温漂极小。
- 滤波电容:在 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℃了。这绝对不行。
电源设计原则:
- LDO 稳压:别用 DC-DC。DC-DC 的开关噪声太大。用 AMS1117-3.3 或 RT9013,纹波能控制在 1mV 以内。
- 模拟/数字分开供电:ADC 和运放用独立的 LDO 供电,和数字电路隔离开。我一般用两个 AMS1117,一个给数字,一个给模拟。
- 去耦电容:每个芯片的电源引脚旁边放一个 100nF 的陶瓷电容,再加一个 10μF 的钽电容。位置要靠近引脚,越近越好。
- USB 供电保护:USB 口进来先过自恢复保险丝(500mA),再加 TVS 管防浪涌。产线上插拔频繁,保护不能省。
// 电源管理代码示例:进入低功耗模式
// 测试完成后,让主控进入 STOP 模式省电
HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI);
// 唤醒后重新配置时钟
SystemClock_Config();
警告: 我曾经遇到过一个问题:产线上 10 台测试设备同时工作,电源线太长导致压降,最远那台设备的电压掉到了 3.0V,ADC 结果全偏了。后来我在每台设备端加了独立的 LDO,才解决。记住,电源线越短越好,线径越粗越好。
好了,硬件测试系统设计这块,核心就是这四部分。主控选型要兼顾性能和供货,传感器接口要抠精度,通信接口要匹配产线流程,电源管理要稳如磐石。下一章咱们聊软件架构,到时候再细说。