简介:基于STM32F030C8T6与炜盛MRT311热电堆的额温枪设计方案,适用于医疗电子、便携测温设备开发人群,提供从温度传感器标定到软硬件联调的完整参考。压缩包共325个文件,约16.9MB,包含Altium Designer原理图与PCB工程(schdoc/pcbdoc)、C语言源码及编译产物(c/h/o/axf/hex)、RT阻值表与标定方法说明(xlsx/pdf/txt)等,各类文件按工程目录组织,便于对照查阅。内容覆盖传感器驱动、信号采集与温度换算逻辑,并给出实际标定手段和电阻-温度对照表,可帮助降低额温枪设计中的测温精度调校门槛。已有52人学习参考,适合具备一定单片机基础、希望快速入门热电堆测温方案或直接在此基础上二次开发的工程师与爱好者。
1. 为什么 STM32F030C8T6 + MRT311 是额温枪方案里最稳妥的一对
做额温枪方案,核心矛盾永远是「传感器信号太弱,而产品又要求便宜、快、准」。MRT311 这颗热电堆传感器把人体的红外辐射转成微伏级电压信号,普通 MCU 的 ADC 根本没法直接量化,必须靠前端放大和软件补偿共同把这个信号“撑”起来。而 STM32F030C8T6 恰好是这个成本区间里最有把握的选择:Cortex-M0 内核主频 48 MHz,内置 12 位 ADC,64 KB Flash 加 8 KB RAM,做单点测温、按键交互、LCD 显示绰绰有余,单颗芯片采购价压得住整机 BOM 成本。
这套方案真正值得动手的地方不在 MCU 本身,而在三件事:把 MRT311 的微弱信号链路调稳、把 PCB 布局做到不干扰模拟前端、把软件里的滤波和标定逻辑写对。这三件事做完,你手里就是一套可以直接打样、批量、送检的完整额温枪硬件加软件设计。本文按原理、PCB、源码、调试这条线逐步拆开讲,适合手上有基础单片机经验、想自己做一台能过 EMC 和临床精度测试的额温枪的工程师照着复现。
2. MRT311 的信号链路:从微伏级热电堆输出到 12 位 ADC
2.1 MRT311 的输出特性与等效模型
MRT311 是一颗集成式热电堆红外传感器,内部由数百对热电偶串联构成,感知端吸收人体红外辐射后产生温差,进而输出直流电压。它的输出量级非常小:体温 37 ℃ 附近,开路输出电压典型值在几十微伏到一百多微伏每摄氏度之间,具体数值随目标距离、窗口透过率和环境温度变化。这颗传感器还内置了一颗热敏电阻(NTC),用于测量传感器自身温度,测温算法要用它做环境温度补偿。
在 datasheet 中,MRT311 的电气模型可以简化成一个输出电压源串联一个几十千欧的内阻,再并联一个表征响应速度的电容。这个内阻和电容构成的 RC 时间常数决定了你后面运放输入阻抗必须足够高,否则信号会被分压吃掉。常见做法是选输入偏置电流在 pA 级的运放,并且前端电阻网络的总阻值不要超过 100 kΩ,否则热噪声会明显抬高 ADC 底噪。实际设计里我会在运放输入端并联一个 1 nF 到 10 nF 的电容,把红外传感器本身的宽带噪声先滤掉一圈。
MRT311 的 NTC 热敏电阻阻值通常标称 100 kΩ @ 25 ℃,B 值在 4250 附近。这个 NTC 的输出不要直接进 ADC 分压就完了,要单独做一个参考电压桥路,用精密电阻分压,再用软件查表。NTC 的精度直接决定环境温度补偿的准确性,所以分压电阻选 1% 精度起步,温度计算用 Steinhart-Hart 方程或查表插值,别用线性近似,冬天和夏天误差会差到 1 ℃ 以上。
2.2 前置放大电路:增益分配与运放选型
MRT311 的输出信号要先经过放大才能进 STM32F030 的 ADC。常见放大方案有两种:单级仪表放大器,或者两级同相放大。仪表放大器(如 AD623、INA128)共模抑制比高,适合电池供电、地线噪声大的场景,但价格偏高。额温枪产品里我更常用两级同相放大,成本能压到两块钱以内,而且增益分配更灵活。
两级放大的第一级固定在 20 到 50 倍,第二级做到 5 到 10 倍,总增益控制在 100 到 500 倍之间。STM32F030 的 ADC 参考电压通常用 3.3 V,12 位分辨率对应 0.8 mV 每 LSB。如果满量程 3.3 V 对应 100 ℃ 温差,总增益约 300 倍比较合适。此时 1 ℃ 对应 ADC 约 12 个 LSB,够用但不富余,所以放大器的噪声要控制在 10 µVpp 以内。低噪声运放如 LMV358、MCP6002 都能满足,关键是把反馈电阻用金属膜电阻,同时每级之间加一阶 RC 低通,截止频率设在 10 Hz 附近,因为人体测温信号本质上是直流缓变信号。
运放供电建议用 3.3 V 单电源,输出摆幅受限于轨到轨特性。选运放时注意看 datasheet 里的输出摆幅参数,轨到轨运放在接近 0 V 和 3.3 V 的地方会有几十毫伏的饱和区。设计增益时把输出工作点偏置在 1.2 V 到 2.2 V 之间,避免进入饱和区。我一般在第二级同相输入端用两个电阻分压把直流偏置抬到 1.0 V,这样传感器输出零信号时 ADC 读数不是 0,而是约 1.0 V,方便软件判断传感器是否断路或脱落。
2.3 ADC 采样参数与参考电压设计
STM32F030C8T6 内置 12 位 ADC 有 16 个外部通道,单次转换时间可配到 1 µs 级别,但测温场景不需要快,反而要把采样时间拉长,让内部采样电容充分充电。建议配置 ADC 时钟 14 MHz 左右,采样周期选 239.5 个周期,转换时间约 17 µs。连续采样 64 次取平均,等效采样率降到约 900 Hz,这个值配合软件滑动滤波非常合适。采样太快只会把运放的宽带噪声全采进来,滤波反而难做。
参考电压 VREF 直接关系到测温精度。STM32F030 的 VREF+ 默认接 VDDA,而 VDDA 如果不加 LC 滤波,会混入数字开关噪声。正确做法是 VDDA 和 VDD 分开走线,之间串一个 10 µH 磁珠再加 1 µF 和 10 nF 电容到地。如果对精度要求更高,可以外接一个基准源给 VREF+,但额温枪整机成本通常不允许,把 VDDA 滤干净后再用软件对 ADC 做两点校准就够了。校准方法是在产线上给两个标准温度黑体,记录 ADC 读数,拟合出线性系数存到 Flash 里。
软件端还要注意 STM32F030 的 ADC 在连续转换模式下有一个已知行为:每次转换完成后,如果立刻切换通道,下一次采样结果可能带上上一通道的残余电荷。所以多通道采集时不要靠 DMA 连续轮询,改成「切换通道后丢弃第一次结果,从第二次开始累加」。这个细节在额温枪环境温度补偿场景里很常见——环境温度 ADC 和传感器 ADC 来回切换时,如果没做丢弃处理,读数会有 5 到 8 个 LSB 的周期跳变。
提示:MRT311 的传感器响应时间约几十毫秒,软件采样周期做到 10 ms 到 20 ms 已经足够。不要用高采样率去做均值,那只会在噪声上叠加更多噪声,正确做法是低采样率加多级滤波。
3. 硬件原理图与 PCB 设计:把模拟前端守住的布局细节
3.1 STM32F030C8T6 最小系统:时钟、复位、SWD 与电源
STM32F030C8T6 是 LQFP48 封装,IO 资源很充裕,设计额温枪时 PA0 到 PA7 留给 ADC 输入和按键,PB0 到 PB15 驱动 LCD 段码屏或小尺寸 TFT,PC13 到 PC15 做蜂鸣器和 LED 指示灯。晶振用 8 MHz 无源晶振加两个 20 pF 负载电容,或者直接用内部 48 MHz HSI 时钟。额温枪对时间精度没有严格要求,用内部时钟能省两个电容和一个晶振位,但 HSI 的温漂在 -20 ℃ 到 50 ℃ 之间约 ±2%,如果产品要过低温环境测试,建议还是外接 8 MHz 晶振,PLL 倍频到 48 MHz。
复位电路用一个 100 nF 电容和一个 10 kΩ 上拉电阻即可,NRST 引脚对地加电容。SWD 调试接口必须留出来,建议引出 SWDIO、SWCLK、GND、3.3V 四个点做成 4 Pin 排针,调试完直接焊掉或作为产测接口保留。特别注意 STM32F030 的 BOOT0 引脚要按产品需求固定:量产固件从主 Flash 启动时 BOOT0 必须拉低,否则上电直接进系统存储器引导,程序跑不起来。很多翻车案例就是 BOOT0 悬空,上电后一半概率死在 bootloader 里。
电源管理部分,额温枪用两节 AA 电池或锂电池供电。两节干电池电压范围 2.0 V 到 3.2 V,直接给 MCU 供电不够稳,要加一颗 LDO(如 ME6211 或 HT7333),输出 3.3 V。锂电池方案则用 3.7 V 经过 LDO 降到 3.3 V,注意 LDO 的压差在电池电压掉到 3.4 V 时就开始进入 dropout 区,输出纹波变大,容易把 ADC 底噪抬起来。实际设计里我会在 LDO 输出端并联 10 µF 和 100 nF 电容,磁珠隔离模拟电源域,再给运放和传感器供电。电池电压检测用一个 100 kΩ 和 47 kΩ 分压接到 ADC 通道,软件每 5 秒检测一次,低于阈值就提示更换电池。
3.2 MRT311 传感器布局与模拟数字分区
MRT311 属于对热辐射敏感的器件,它本身不发热,但周围的 MCU、LDO、LCD 背光都会发热,这些热源会直接影响传感器读到的红外辐射。PCB 布局第一原则:MRT311 放在板子边缘,远离 MCU 和电源芯片,最好是板端开一个对应传感器窗口的开孔,让传感器的红外透镜直接暴露在外,不要被外壳塑料挡住。
第二原则是模拟信号路径最短。MRT311 输出到运放输入端的走线长度控制在 10 mm 以内,走线宽度 0.3 mm,两侧包地,地线上不要有其他数字信号穿过。运放反馈电阻放在运放附近,反馈路径形成的小环面积越小,感应噪声越低。传感器的 NTC 分压电路也要放在传感器附近,避免长走线引入的寄生电容改变分压比例。
模拟地和数字地怎么处理是额温枪 PCB 里最容易有争议的问题。我的做法是单点接地:模拟地(AGND)只在 MCU 的 GND 焊盘附近通过一个 0 Ω 电阻或直接覆铜连接点接到数字地(GND),其他位置全部用覆铜分开。不要做完整的模拟地平面和数字地平面分割,因为额温枪 PCB 面积小,分割后的地平面容易产生跨缝走线,反而把噪声耦合回来。小板上用大面积整地加局部开槽的效果比分割地平面好得多。
3.3 PCB 层叠、过孔与 M2 螺丝孔的工程细节
额温枪 PCB 通常是双面板,板厚 1.0 mm 或 1.2 mm。双面板的层叠设置里,顶层走信号,底层做完整地平面,地平面覆盖率要超过 90%。如果产品结构要求圆形 PCB(很多额温枪为了匹配外壳做圆形板),要注意 M2 螺丝孔的位置和过孔间距。M2 螺丝孔常规做法是外径 4.3 mm 的焊盘环加 2.2 mm 的孔径,如果机械强度要求更高,孔径不变,把外径扩到 4.6 mm 并加三个 0.6 mm 的过孔围绕螺丝孔做加强。螺丝孔周围 1 mm 范围内不要走信号线,防止螺丝拧紧时把走线压断。
四层板不是必须,但如果产品要做 ESD 认证且结构空间允许,四层板的优势很明显:顶层放信号,第二层整地,第三层电源,底层信号。四层板走线时要注意叠层厚度,「信号到地」的距离要小于「电源到地」的距离,这样顶层信号的回流路径更短,辐射更小。嘉立创 EDA 和 AD 里都能直接配置层叠结构,嘉立创 EDA 的专业版里可以设置每层铜厚和介质厚度并自动计算阻抗,但额温枪这种低速模拟板子不需要控阻抗,只要把层叠厚度写清楚给板厂即可。
走线宽度方面,电源线按 1 mm 以上走,地线能覆铜就覆铜,信号线 0.3 mm 到 0.5 mm。LCD 的段码信号线如果并行走 12 根以上,建议每根之间加地线隔离或者把间距拉开到 0.4 mm 以上,不然段码翻转瞬间的串扰会耦合到模拟前端。我见过一个案例,LCD 刷新时 ADC 读数同步跳动 20 个 LSB,排查到最后就是段码走线和传感器走线在底层平行走了 30 mm。把 LCD 走线重新布到另一侧并加地线隔离后问题消失。AD 和 Cadence 里查看走线长度和间距的功能很方便,布线完成后逐条检查一下传感器到运放这段走线的长度和过孔数量,过孔超过两个就要重新规划路径。
3.4 原理图到 PCB 的落地流程
用嘉立创 EDA 画这套原理图的流程是:先建好 STM32F030C8T6、MRT311、运放、LDO、LCD 等核心元件库,然后按功能模块摆放,电源电路放左上角,MCU 放中间,传感器和运放放右下角,LCD 接口放左下角。连线时注意把电源网络和地网络用不同颜色高亮,检查有没有漏连的电源引脚。原理图画完后生成网表,导入 PCB 时建议按网络分类显示飞线,先把电源和地网络规划好,再摆模拟前端元件。
PCB 布局的顺序也有讲究:第一步放 MRT311 和运放,确定模拟前端区域;第二步放 MCU 和晶振;第三步放电源;第四步放 LCD 和按键。元件放完后先别急着布线,把 MRT311 的位置、螺丝孔位置、外壳卡扣位置对照结构图确认一遍,PCB 板框和结构图有出入的话,打样回来装不进外壳才是最头疼的。布线顺序建议先布模拟前端,再布晶振和复位,最后布 LCD 和按键这种低速信号。用 AD 布线的朋友要注意,原理图生成 PCB 后默认的栅格是 25 mil,模拟前端走线间距要改到 8 mil 或更细,不然 0.3 mm 走线和包地距离根本画不出来。
4. 软件源码设计:从 ADC 原始值到稳定体温数字
4.1 工程结构与模块划分
软件按模块化思路组织,主循环里只做状态机调度,ADC 采集、滤波、温度计算、LCD 刷新、按键扫描分别放在独立文件里。我的工程结构大致是:main.c 负责初始化和主循环,adc.c 负责采样和滤波,sensor.c 负责 MRT311 的温度计算和环境补偿,lcd.c 负责显示驱动,key.c 负责按键和状态机,flash.c 负责标定参数的存取。这样每个文件职责单一,换代到 STM32G030 或其它 MCU 时移植成本低。
主循环建议跑一个 10 ms 定时节拍,用 SysTick 中断置标志位。温度测量不是每拍都做,传感器响应时间几十毫秒,所以每 5 拍(50 ms)采集一次完整的 ADC 数据并更新温度值。按键检测每拍做一次,带 20 ms 消抖。LCD 刷新每拍做一次,但只在测量值变化超过 0.05 ℃ 时才重绘,否则维持旧值,避免屏幕闪烁。
4.2 ADC 交替采样与滑动滤波的实现
ADC 需要采集两路信号:MRT311 经过放大后的输出电压,以及 NTC 分压后的环境温度电压。两路切换采样时先用伪代码写清逻辑:切换通道后触发一次转换但丢弃结果,再用 8 次连续转换取平均,得到一组原始值。这个平均后的值进入一个长度为 16 的环形缓冲区做滑动平均,输出才用于温度计算。
关于滤波器设计,只做滑动平均是不够的,因为人体呼吸和环境气流会造成红外信号的缓慢波动。我一般做两级滤波:第一级窗口中值滤波(长度为 5),剔除偶发的尖峰干扰;第二级滑动平均(长度为 16),平滑缓变波动。中值滤波对静态放电或按键抖动引起的单点跳变非常有效,滑动平均则把传感器本身的热噪声进一步压低。两级滤波之后,温度显示的稳定性可以达到 0.02 ℃ 以内。
滤波后的 ADC 值换算成电压,再反推出传感器输出电压。换算公式是 V_sensor = (V_adc - V_offset) / Gain,其中 V_offset 是第二级运放的直流偏置,Gain 是两级放大总增益。传感器输出电压与目标温度的关系不是完全线性的,但在一段窄区间内(35 ℃ 到 42 ℃)可以近似线性,所以在校准模块里保存两个系数:斜率 k 和截距 b,温度 = k * V_sensor + b。标定系数通过产线两点校准写入 Flash。
4.3 环境温度补偿与标定参数管理
环境温度对额温枪测量结果的影响非常显著。MRT311 的 NTC 测量的是传感器自身温度,但目标人体辐射与传感器之间的净热通量取决于目标温度和传感器温度的差值,所以补偿公式必须考虑这个温差。常见做法是把环境温度(传感器温度)作为一个独立的修正项加到线性公式里:温度_display = k * V_sensor + b + c * (T_env - 25)。系数 c 在不同环境温度点会有轻微变化,更精的做法是分段线性补偿:每 10 ℃ 环境温度一个区间,每个区间独立拟合一组 k、b、c。
校准参数的存储用 STM32F030 内部 Flash 最后一个扇区,容量 4 KB,足够放几十组参数。写 Flash 前先擦除整个扇区,再按固定结构写入,结构体里要带 CRC32 校验。程序启动时读 Flash 并做 CRC 校验,校验失败就加载默认参数并进入校准模式,避免参数区损坏后设备变砖。Flash 写寿命约 10 万次,产线校准写入的次数不会超过几十次,不用担心寿命问题,但软件里要加写保护防止意外改写。量产时这个参数区还要放序列号和产测日期,便于售后追溯。
加温补偿逻辑还需要考虑测量模式差异:额温枪通常有额头模式和耳温模式,两种模式的传感器距离和发射率有差别。MRT311 的响应曲线在两种模式下要分别校准,软件里通过一个配置字节控制当前模式,测量时调用对应的系数表。不要试图用一个通用公式覆盖两种模式,误差会大到你无法接受。
4.4 按键状态机与 LCD 显示逻辑
额温枪的按键通常只有两个:测量键和模式/设置键。测量键按下后,软件进入测量流程:打开传感器信号通路,等待 500 ms 让运放输出稳定,然后连续采集 20 组数据,取平均值作为最终测量结果,蜂鸣器响一声,LCD 显示读数。注意测量过程中要屏蔽按键的重复触发,否则连续按下时会重新点击测量导致读数被覆盖。
LCD 部分是 4 位或 8 位并口的段码屏,驱动代码不复杂,但要注意段码屏的刷新频率。段码屏刷新用 60 Hz 以上比较稳,低于 50 Hz 会肉眼可见闪烁。LCD 背光如果是 LED 直下式,启动时要用 PWM 软启动,防止冲击电流把模拟电源拉低。软件里背光亮度要在测量完成后自动降低到 30%,节省电池电量,这个功能对便携产品的续航提升非常明显。
状态机的核心逻辑是四个状态:待机、测量中、显示结果、关机。待机状态下 ADC 定期采样环境温度,用于唤醒后的快速测量。待机超过 30 秒无操作自动关机,关机时所有外设包括运放和 LCD 全部断电,MCU 进入 STOP 模式,唤醒通过测量键的外部中断实现。STOP 模式下电流可以做到 10 µA 以下,两节电池能撑半年以上。
5. 额温枪开发避坑指南:5 个高频问题的现象与解法
5.1 现象:ADC 读数大范围跳动,滤波后仍不稳定
环境温度读数或传感器读数每隔几百毫秒跳一下,幅度有几十个 LSB。原因通常是数字信号干扰模拟前端:LCD 刷新、按键扫描或蜂鸣器驱动产生的电流脉冲通过地线耦合到传感器回路。排查方法是用示波器同时观察运放输出和数字信号,看跳变是否和时间相关。
解决措施分硬件和软件两步。硬件上把 LCD 走线和传感器走线彻底分开,传感器走线包地,地线覆铜尽量连续;软件上把 LCD 刷新改成不变化就不重绘,蜂鸣器驱动加 RC 滤波或直接使用带内部 RC 的有源蜂鸣器。多数情况下硬件改完问题就消失,软件滤波只是兜底。
5.2 现象:显示温度与实际体温相差 1 ℃ 以上
传感器读数在目标距离不同时差异很大,或冬天室外测 35.5 ℃、室内测 36.8 ℃,同一个人的额头温度显示不一致。原因有两个:一是没有做环境温度补偿,或补偿公式只在单个温度点校准;二是测量距离没有约束,用户握持姿势导致目标不在传感器视场内。
解决:要么做多点环境温度校准(至少 15 ℃、25 ℃、35 ℃ 三个点),要么在结构上增加定位挡圈让额头位置固定。产线校准时务必用黑体辐射源,不要拿人测,人体温度波动本身就超过 0.5 ℃,无法作为校准基准。校准系数的存储和读取再多验证几遍,我之前就遇到过产线写入参数时 Flash 擦除失败,导致一批货测出来的温度全是常温 25 ℃,排查半天发现是擦除操作前没有关闭中断,Flash 操作被打断。
5.3 现象:首次上电死机或反复复位
程序下载后无法启动,Debug 模式下能看到 PC 指针跑飞,或者上电后蜂鸣器反复响。排查顺序是:先量 VDD 电压是否稳定到 3.3 V,再看复位引脚电平,再检查晶振是否起振,最后看 BOOT0 状态。最常见的原因是复位电路的上拉电阻没接,NRST 悬空导致系统在上电时落入不确定状态;以及 BOOT0 悬空被环境噪声拉高,MCU 进入系统 bootloader 而不是用户程序。
量产前把 BOOT0 通过下拉电阻固定接 GND,复位引脚加一个 100 nF 电容,同时软件里开启独立看门狗,死机时自动复位。还有一个冷门坑:STM32F030 的 HSI 在 3.3 V 供电下启动时间比数据手册标称更长,如果代码在启动后立刻读 Flash 参数,可能读到一半 Flash 还没准备好。在系统时钟配置完成后加一个 10 ms 延时再访问 Flash,能规避这类偶发失效。
5.4 现象:环境温度变化时读数漂移严重
设备从室内拿到室外后,最初几分钟内温度显示和实际偏差越来越大,放到室内后又慢慢恢复。原因有两个:一是 PCB 上的 MCU 和 LDO 热量传导到 MRT311,导致传感器自身温度升高,NTC 读到的温度不代表真实环境温度;二是传感器窗口结露或结霜,改变了红外透过率。
解决:结构上让 MRT311 尽量远离 LDO,中间加隔热泡棉阻断热传导路径;软件端增加上电预热逻辑,开机后等待 2 分钟再进入测量模式,让整个板子的热平衡建立起来。预热期间显示“---”或环境温度,不显示测量结果。如果要在低温环境快速测量,可以临时做一版强制的软件补偿表,但这只是临时方案,长远还是要在结构上增加热隔离。
5.5 现象:产线批量不良率偏高,个别板子精度不达标
同一批板子,模拟前端的增益偏差超过 ±10%,部分板子满量程偏差达到 0.5 ℃。原因是运放反馈电阻精度不够,或者 PCB 板材间距不一致导致传感器和外壳之间的距离偏差。运放反馈电阻用 1% 精度的电阻是基础,但 1% 电阻的温漂也有 ±100 ppm/℃,如果环境温度变化大,增益也会漂。
解决:反馈电阻升级到 0.1% 精度、温漂 25 ppm/℃ 的金属膜电阻,单个电阻的 BOM 成本增加几分钱,但整机精度一致性大幅提升。传感器安装高度通过结构件公差控制,PCB 到外壳的距离在设计中给出明确公差要求,装配时用治具压合保证一致性。另外注意 MRT311 的焊接方式,热电堆传感器对热冲击敏感,过回流焊时峰值温度不要超过 245 ℃,冷却速率也不要太快,否则内部的应力平衡被破坏,输出会永久偏移。建议传感器在 PCB 过完主回流焊后再手工焊接或用低温焊锡二次焊接,这条血泪经验能帮你省掉一大批精度不良的板子。
6. 最后再排查一遍这三点,方案就可以放心投板
6.1 用最小测量流程验证各模块
板子回来后第一件事不是看程序,而是先量硬件:万用表测 3.3 V 对地阻抗,确认没有短路;示波器看晶振波形;用 SWD 连上 STM32CubeProgrammer 读芯片 ID,能读到就说明最小系统正常。接着用串口或 SWD 调试口跑一段最简单的 ADC 采样代码,手摸传感器探头看 ADC 值有没有变化,确认传感器到 MCU 的整条链路是通的。
6.2 参数清单与验证检查点
投板前把这几处过一遍:MRT311 的封装方向是否和原理图一致,传感器对准窗口方向要朝外;运放反馈电阻精度是否达到 0.1%;VCAP 引脚上的电容不能漏放,STM32F030 内部 LDO 需要外接 2.2 µF 电容;BOOT0 确定下拉;NTC 分压电阻用 1% 精度;电池供电的 LDO 压差在最低工作电压下还剩多少余量。最后用黑体炉做一次 35 ℃、38 ℃、41 ℃ 三点测试,记录每块板子的误差,误差超过 ±0.2 ℃ 的板子优先排查传感器安装高度和运放增益。
这个方案前前后后我调过三版才稳定。第一版死在传感器离 MCU 太近,热漂移到没法用;第二版死在 Flash 参数区被误擦,产线报废了一批;第三版才把环境补偿和温度滤波配合好,批量出货的精度良率稳定在 99% 以上。每一步的教训都写在这篇里了,希望帮到你。
本文还有配套的精品资源,点击获取