1. 快速测温体温计芯片方案的整体设计思路
1.1 为什么“快速”是这类方案的第一优先级
做快速测温体温计芯片方案,最先要搞清楚的不是选哪颗主控,而是“快”到底快在哪。传统体温计测一次要等三到五分钟,靠的是让感温头与人体达到热平衡,再用热敏电阻慢慢读。这个方案的核心思路完全不同:用红外热电堆传感器在毫秒级捕捉耳道或额头的热辐射,再用主控芯片内置ADC把微弱的模拟信号数字化,最后通过算法在1到3秒内推算出体温。整个链路里,真正决定“快不快”的环节有三个:传感器的响应时间常数、ADC的采样速率与分辨率、以及主控从采样到出结果的计算延迟。
我见过不少团队一上来就盯着主控主频,觉得跑得越快测温就越快,结果传感器选了个响应时间200ms以上的型号,主控再快也没用。所以方案设计的第一步,是先把传感器的响应时间、ADC的采样周期、算法收敛所需样本数这三个参数拉出来算一笔账。举个例子,如果传感器时间常数为50ms,理论上3个时间常数就能达到95%的稳态值,也就是150ms;ADC每通道采样周期设为1ms,采32个点做平均滤波,耗时32ms;算法用查表加线性插值,主控跑一遍不到5ms。这样算下来,从按下测量键到出结果,200ms以内就能完成,留足余量给显示和蜂鸣器提示。
1.2 主控芯片选型的三个硬指标
主控芯片在这个方案里扮演的是“总指挥”角色,它要同时干几件事:驱动红外传感器、控制ADC采样、跑温度换算算法、管理按键和显示、还要兼顾低功耗。选型时我一般看三个硬指标。
第一是ADC的有效位数和采样速率。体温计要分辨0.1℃的变化,红外热电堆输出信号通常在微伏级别,经过运放放大后送到ADC,满量程可能只有几百毫伏。如果ADC只有10位有效位,在3.3V参考电压下,1LSB约等于3.2mV,折算到温度上可能超过0.1℃,精度就不够了。所以至少要选12位有效位以上的ADC,最好带PGA(可编程增益放大器),能把小信号放大后再采样,信噪比会好很多。
第二是内置温度传感器或支持外部冷端补偿。红外测温的原理是测目标与传感器自身的温差,所以环境温度必须同步测准。很多主控自带高精度温度传感器,精度能到±0.5℃,但体温计要求冷端补偿精度至少±0.2℃,这时候就得外挂一颗高精度数字温度芯片,或者用主控ADC去采一颗精密热敏电阻。我个人的经验是,如果主控自带温度传感器精度不够,不要硬扛,外挂一颗I2C接口的低温漂温度芯片,成本增加不多,但省下来的调试时间非常值。
第三是低功耗模式下的唤醒速度。体温计是电池供电,待机电流要压到微安级,但按键按下后必须在几十毫秒内唤醒并开始采样。有些主控从深度睡眠唤醒要几百毫秒,这就把“快速测温”的体验毁掉了。选型时要重点看数据手册里“唤醒时间”这一项,最好在50ms以内。
1.3 信号链的完整构成与各环节职责
一个完整的快速测温信号链是这样的:红外热电堆传感器输出微伏级电压,经过低噪声运放做一级放大,再经过抗混叠滤波器去掉高频噪声,然后进入主控ADC采样,主控内部做数字滤波和温度换算,最后输出到LCD或OLED显示。每个环节都有坑。
传感器输出阻抗通常很高,有的型号能到几十千欧,这就要求运放的输入偏置电流必须极小,否则会在输出阻抗上产生额外压降,导致读数漂移。我一般选输入偏置电流在皮安级别的CMOS运放,比如TI的LMP系列或ADI的ADA系列。抗混叠滤波器的截止频率要跟ADC采样率匹配,如果采样率是1kHz,截止频率设在500Hz以下,用简单的RC滤波就能搞定,但电阻电容的温漂要小,否则不同温度下滤波特性变了,读数也会跟着变。
ADC采样这块,很多人忽略了一个细节:采样保持电路的电荷注入。当ADC从采样模式切换到保持模式时,内部采样电容上的电荷会反向注入到输入端,如果前端驱动能力不够,就会产生一个电压尖峰,影响下一次采样。解决办法是在ADC输入端加一个小电容做电荷缓冲,或者选带输入缓冲器的ADC。这个坑我在早期项目里踩过,表现为读数偶尔跳变,后来用示波器抓ADC输入引脚才看到尖峰,加了10nF电容后就稳了。
2. 核心细节解析与实操要点
2.1 红外热电堆传感器的驱动与信号调理
红外热电堆传感器本质上是一个微型热电偶堆,它输出的是与目标温度和环境温度之差成正比的电压。以常见的TO-46封装传感器为例,灵敏度可能在10到50μV/℃之间,测量人体温度时输出信号只有几百微伏到几毫伏。这么小的信号,直接送ADC肯定不行,必须放大。
放大电路的设计有几个关键点。第一是共模电压设置。热电堆输出是差分信号,但通常有一端接地,所以运放要接成同相放大或反相放大。我一般用同相放大,因为输入阻抗高,对传感器负载小。第二是增益分配。如果总增益需要1000倍,不要用一级运放搞定,带宽和噪声都会有问题。我通常分两级,第一级增益50倍,第二级增益20倍,中间加高通滤波去掉直流偏置。第三是噪声控制。运放的电压噪声密度要低,最好在10nV/√Hz以下,电阻的热噪声也要算进去。如果增益是1000倍,输入端的噪声会被放大1000倍,所以第一级运放的噪声性能决定了整个系统的信噪比。
实际布板时,传感器到运放的走线要尽可能短,最好在同层用保护环包围,减少漏电流。运放的电源要加去耦电容,100nF和10μF并联,放在运放电源引脚旁边。这些细节看起来琐碎,但体温计这种小信号系统,成败就在这些地方。
2.2 ADC采样电路的设计与参数计算
ADC采样电路是连接模拟世界和数字世界的桥梁,设计不好,前面放大得再干净也白搭。先算分辨率需求:体温计要分辨0.1℃,假设传感器灵敏度是20μV/℃,放大1000倍后,0.1℃对应2mV。如果ADC参考电压是3.3V,12位ADC的1LSB是0.8mV,理论上够用,但实际有效位可能只有10到11位,所以12位是底线,14位或16位更稳妥。
采样率怎么定?体温计不需要高速采样,但也不能太慢。我一般设成1kHz,也就是每1ms采一个点。这样采32个点做平均滤波,耗时32ms,对“快速测温”来说完全可以接受。采样周期要跟传感器信号带宽匹配,热电堆的时间常数通常在10到100ms,信号带宽不到20Hz,所以1kHz采样率远远过采样了,好处是可以用数字滤波进一步压低噪声。
ADC输入端要加RC抗混叠滤波,截止频率设在采样率的一半以下。比如采样率1kHz,截止频率设400Hz,用1kΩ电阻和0.1μF电容,计算下来截止频率约1.6kHz,有点高,改成1kΩ和0.22μF,截止频率约723Hz,还是偏高。实际用2.2kΩ和0.1μF,截止频率约723Hz,再配合数字滤波,效果就不错了。注意电容要选C0G或X7R材质,温漂小。
提示:ADC参考电压的稳定性直接影响测温精度。如果主控内置参考电压温漂较大,建议外挂一颗低温漂基准芯片,比如初始精度0.1%、温漂20ppm/℃的型号,成本增加一两块钱,但精度提升明显。
2.3 主控芯片的ADC配置与DMA传输
主控ADC配置有几个关键参数:采样时间、转换模式、触发源、数据对齐方式。采样时间要足够长,让采样保持电容充分充电。如果前端驱动能力弱,采样时间设长一点,比如239.5个ADC时钟周期。转换模式用连续转换或扫描模式,如果有多路信号要采,比如热电堆信号和冷端补偿信号,就用扫描模式轮流采。
DMA传输是必须的,否则CPU频繁中断会影响实时性。配置DMA时要注意:外设地址设为ADC数据寄存器,内存地址设为数组,传输方向外设到内存,循环模式开启,这样ADC每转换完一个数据,DMA自动搬走,CPU只需要在DMA传输完成中断里处理数据。我一般设DMA传输一半和传输完成两个中断,传输一半时处理前半段数据,传输完成时处理后半段,这样数据处理和采样可以并行,效率更高。
有个细节容易忽略:ADC的校准。很多主控ADC在上电后需要执行一次校准,去掉内部失调。校准前要确保ADC时钟使能、ADC使能,然后置位校准位,等待校准完成。不校准的话,零输入时读数可能不是零,而是几十个LSB的偏移,对体温计这种要求绝对精度的应用是致命的。
2.4 数字滤波与温度换算算法
ADC采回来的原始数据带有噪声,必须做数字滤波。最简单的办法是算术平均,采32个点求平均,噪声能降到原来的1/√32,约1/5.6。但算术平均对脉冲噪声抑制不好,如果有一个点被干扰,平均值会被拉偏。改进办法是中值滤波加算术平均:先采32个点,去掉最大和最小的几个,剩下的求平均。这样既能抑制脉冲噪声,又能平滑随机噪声。
温度换算算法是核心。红外测温的基本公式是:目标温度的四次方等于传感器输出加上环境温度的四次方,再乘以一个系数。实际工程中不会直接解这个四次方程,而是用查表加线性插值。具体做法是:在恒温箱里标定多个温度点,比如25℃到45℃每隔1℃测一组数据,把传感器输出和环境温度存成表格。测量时根据当前环境温度和传感器输出,在表格里找最近的两个点做线性插值,算出目标温度。这样计算量小,精度也能做到±0.2℃以内。
标定是个体力活,但偷懒不得。我一般至少标定20个温度点,每个点稳定5分钟后采100组数据取平均,确保标定数据可靠。标定完还要做验证,用另一台高精度体温计做对比,偏差超过0.2℃就要检查是哪个环节出了问题。
3. 实操过程与核心环节实现
3.1 硬件原理图设计与关键器件选型
原理图设计从传感器接口开始。红外热电堆传感器通常有四个引脚:两个是热电堆输出,一个是热敏电阻或环境温度输出,一个是地。热电堆输出接运放的同相和反相输入端,中间加差分滤波电容。环境温度输出接主控ADC的另一路通道,或者接外部温度芯片。
运放选型我常用TI的LMP2012或ADI的ADA4522,前者是双运放,输入偏置电流3pA,电压噪声35nV/√Hz,增益带宽积3MHz,做两级放大绰绰有余。后者是零漂移运放,失调电压只有5μV,温漂0.02μV/℃,适合对精度要求极高的场合,但价格贵一些。如果成本敏感,可以用一颗双运放搞定两级放大,省一颗芯片。
主控芯片选型要看资源。我最近做的一个方案用的是某国产32位MCU,内置12位ADC,采样率1Msps,带PGA,有DMA,低功耗模式唤醒时间30μs,价格不到十块钱,性价比很高。如果要做更高端的,可以选带24位Σ-Δ ADC的主控,比如某些用于电子秤的芯片,精度更高,但采样率低,适合对速度要求不极致的场合。
电源部分,体温计一般用两节AAA电池或一颗CR2032纽扣电池。如果主控和运放都支持宽电压,可以直接电池供电,省掉LDO。但ADC参考电压需要稳定,所以要么用主控内部基准,要么外挂基准芯片。我一般外挂一颗SOT-23封装的基准,输出2.5V,初始精度0.1%,温漂50ppm/℃,价格一两块钱,对精度提升很值。
3.2 PCB布局与抗干扰实战经验
PCB布局对体温计这种小信号系统至关重要。我总结了几条实战经验。
第一,模拟地和数字地分开,最后在ADC下方单点连接。模拟部分包括传感器、运放、基准,数字部分包括主控、显示、按键。如果混在一起,数字开关噪声会串到模拟端,表现为读数跳动。
第二,传感器走线要短且对称。热电堆输出是差分信号,两根线要等长、平行、靠近,最好用地线包围。如果走线太长,容易引入共模干扰,运放的共模抑制比再高也扛不住。
第三,电源去耦要到位。每个芯片的电源引脚旁边放100nF电容,再在电源入口放10μF钽电容。运放的电源抑制比有限,电源上的纹波会直接调制到输出端。我试过用示波器看运放输出,电源纹波大的时候,输出上能看到明显的周期性波动,加了去耦电容后就干净了。
第四,晶振和高速信号远离模拟区。如果主控用外部晶振,晶振走线要短,下方挖空,周围包地。高速信号线比如SPI、I2C,不要从模拟区穿过,实在避不开就垂直交叉,减少耦合。
第五,热设计要考虑。体温计要测人体温度,但主控和运放自身会发热,如果热量传到传感器,读数会偏高。所以传感器要远离发热元件,最好在传感器下方开槽,减少热传导。我见过一个设计,主控放在传感器正下方,结果测出来的温度比实际高0.5℃,后来把主控挪到板子另一端就好了。
3.3 固件流程与关键代码实现
固件的主流程是这样的:上电初始化,包括时钟、GPIO、ADC、DMA、定时器、显示;然后进入低功耗待机,等待按键唤醒;按键按下后,启动ADC采样,采够32个点后停止,做数字滤波,读环境温度,查表插值算目标温度,显示结果,蜂鸣器提示,然后回到待机。
ADC采样用定时器触发,比如定时器每1ms产生一次触发信号,ADC在触发信号作用下启动一次转换,转换完成后DMA自动搬走数据。这样采样周期精确,不受CPU干预。DMA传输完成中断里置一个标志位,主循环检测到标志位后处理数据。
数字滤波的代码很简单,但要注意数据类型。ADC原始数据是12位,存在uint16_t数组里。求平均时先累加,累加变量要用uint32_t,否则32个12位数据加起来会溢出。累加完除以32,得到平均值。中值滤波可以用简单的冒泡排序,32个数据排序后取中间几个求平均,计算量不大,主控完全扛得住。
温度换算的查表插值代码也不复杂。假设标定表有两个数组,一个是环境温度数组,一个是传感器输出数组,还有一个是目标温度数组。测量时先根据当前环境温度在环境温度数组里找到区间,然后在这个区间内根据传感器输出做线性插值,算出目标温度。注意插值时要用浮点数,否则精度不够。如果主控没有浮点单元,可以用定点数运算,把温度放大100倍用整数表示,最后再除以100。
// 简化的温度换算示例 float calculate_temperature(uint16_t adc_value, float ambient_temp) { // 在标定表中查找ambient_temp所在区间 int idx = find_ambient_index(ambient_temp); // 获取该区间两个标定点的参数 float adc_low = calib_table[idx].adc_value; float adc_high = calib_table[idx+1].adc_value; float temp_low = calib_table[idx].target_temp; float temp_high = calib_table[idx+1].target_temp; // 线性插值 float ratio = (adc_value - adc_low) / (adc_high - adc_low); return temp_low + ratio * (temp_high - temp_low); }3.4 标定流程与精度验证方法
标定是体温计方案里最耗时间但最不能省的环节。我一般用恒温槽做标定,温度范围设25℃到45℃,每隔1℃一个点,共21个点。每个点稳定10分钟后开始采集,采100组数据取平均,记录传感器输出和环境温度。标定完把数据拟合成表格,烧录到主控Flash里。
标定时有几个细节要注意。第一,恒温槽的温度均匀性要好,传感器要完全浸入,不能有气泡。第二,等待时间要足够,传感器和恒温槽达到热平衡需要时间,10分钟是底线,有些传感器要15分钟。第三,环境温度也要记录,因为红外测温依赖环境温度补偿,标定时环境温度要稳定,最好在25℃±1℃的房间里做。
精度验证用另一台经过校准的高精度体温计做对比,测同一目标,比如用黑体炉设定37℃,分别用标定好的方案和参考体温计测,偏差在±0.2℃以内算合格。如果偏差大,先检查是环境温度补偿不准还是传感器输出漂移。我遇到过一次偏差0.3℃的情况,后来发现是运放增益电阻的温漂太大,换成低温漂电阻后就解决了。
4. 常见问题与排查技巧实录
4.1 读数跳动大、重复性差的排查思路
读数跳动是体温计方案最常见的毛病。表现是同一目标连续测几次,结果差0.3℃甚至更多。排查时按信号链从后往前查。
先看ADC输入端。用示波器交流耦合档测ADC输入引脚,如果看到明显的噪声或尖峰,说明前端有问题。噪声可能来自运放自激、电源纹波、数字干扰。运放自激的话,输出会有高频振荡,在运放输出和反相输入之间加一个小电容做相位补偿就能解决。电源纹波的话,加强去耦,或者给运放单独供电。数字干扰的话,检查地线布局,模拟地和数字地是否单点连接。
如果ADC输入端干净,再看数字滤波。采样点数够不够?32个点平均后噪声应该很小了,如果还跳,可能是采样周期不稳定。检查定时器触发是否准确,DMA是否丢数据。我遇到过一次DMA配置错误,传输一半中断和传输完成中断搞反了,导致数据处理错位,读数乱跳。后来仔细看参考手册,把中断标志位搞对就好了。
还有一个容易被忽略的原因:传感器自身噪声。热电堆传感器有热噪声和1/f噪声,这是物理限制,没法完全消除。如果传感器噪声本身就大,只能换型号,或者增加采样点数,用更长的平均时间来压噪声。但采样时间长了,测温就慢了,需要在速度和精度之间折中。
4.2 测温偏差大、线性度不好的原因分析
测温偏差大,先分清是固定偏差还是随温度变化的偏差。固定偏差好办,在算法里加一个偏移量补偿就行。随温度变化的偏差,通常是环境温度补偿没做好。
红外测温的核心是:传感器输出正比于目标温度的四次方减去环境温度的四次方。如果环境温度测不准,目标温度就会偏。检查环境温度传感器是否靠近热源,是否被主控发热影响。我一般把环境温度传感器放在传感器附近但远离主控,最好在PCB上开槽隔离。
线性度不好,可能是运放增益非线性,或者ADC非线性。运放增益非线性通常出现在输出接近电源轨的时候,所以要把运放输出控制在电源轨以内,留至少0.5V余量。ADC非线性要看数据手册的INL和DNL参数,如果INL超过±2LSB,对精度影响就大了,得换ADC或者做软件校准。
标定表本身也可能有问题。如果标定点太少,插值误差就大。我一般至少21个点,如果温度范围宽,比如0℃到50℃,就标51个点。标定数据要检查,如果某个点明显偏离趋势,可能是标定时恒温槽没稳定,重新标那个点。
4.3 低功耗待机与唤醒异常的调试记录
低功耗待机电流大,先查各个外设是否真的关掉了。主控进入低功耗前,要把ADC、DMA、定时器、显示都关掉,GPIO设成模拟输入或输出低,避免悬空引脚漏电。我见过一个设计,待机电流有200μA,后来发现是一个LED限流电阻另一端接在GPIO上,GPIO输出高电平,LED虽然不亮但漏电流有几十微安。把GPIO设成低电平后,待机电流降到5μA以下。
唤醒异常表现为按键按下后没反应,或者反应很慢。先检查按键中断是否使能,唤醒源是否配置正确。有些主控的低功耗模式只支持特定引脚唤醒,比如只有EXTI0到EXTI15中的某几个能唤醒,按键要接在支持唤醒的引脚上。唤醒时间也要看数据手册,如果从深度睡眠唤醒要几百毫秒,那就别用深度睡眠,用浅睡眠,待机电流大一点但唤醒快。
还有一个坑:唤醒后外设初始化。从低功耗唤醒后,主控时钟可能切回了内部低速时钟,ADC时钟也没了,需要重新配置时钟和ADC。如果忘了这一步,唤醒后ADC不工作,读数一直是零。我一般在唤醒中断里重新初始化时钟和外设,确保状态正确。
4.4 常见问题速查表
| 问题现象 | 可能原因 | 排查方法 | 解决措施 |
|---|---|---|---|
| 读数跳动大 | 电源纹波大 | 示波器测电源 | 加强去耦,加LDO |
| 读数跳动大 | 运放自激 | 示波器测运放输出 | 加相位补偿电容 |
| 读数跳动大 | DMA配置错误 | 检查DMA中断标志 | 修正DMA配置 |
| 测温偏差大 | 环境温度补偿不准 | 对比环境温度读数 | 外挂高精度温度芯片 |
| 测温偏差大 | 运放非线性 | 测运放输入输出曲线 | 控制输出在电源轨内 |
| 线性度不好 | 标定点太少 | 检查标定表 | 增加标定点 |
| 待机电流大 | 外设未关 | 逐个关外设测电流 | 关闭所有外设 |
| 待机电流大 | GPIO漏电 | 测GPIO电压 | 设GPIO为低或模拟输入 |
| 唤醒慢 | 低功耗模式太深 | 查数据手册唤醒时间 | 改用浅睡眠 |
| 唤醒后不工作 | 时钟未重配 | 查时钟寄存器 | 唤醒后重新初始化 |
注意:排查问题时一定要用示波器和万用表实测,不要凭感觉猜。我见过太多人对着代码改了半天,结果问题是硬件上的一个虚焊。
5. 方案优化与扩展方向
5.1 从单点测温到连续监测的升级路径
快速测温体温计做完单点测量后,很自然的一个扩展方向是连续监测。比如做成耳温贴或额温贴,贴在身上每隔几秒测一次,通过蓝牙把数据传到手机,画出体温曲线。这个升级对芯片方案的要求就变了:功耗要更低,因为要连续工作几小时甚至几天;ADC采样可以慢一点,但算法要能处理连续数据流;主控要支持蓝牙或低功耗无线协议。
我试过用一颗带BLE的主控做连续监测方案,主控在低功耗模式下定时唤醒,采一次温度,通过BLE广播出去,然后继续睡。平均电流做到几十微安,一颗纽扣电池能用好几天。关键是把BLE广播间隔设长一点,比如10秒一次,广播时间尽量短,减少射频功耗。
连续监测的算法也要调整。单点测量可以用查表插值,连续监测更适合用卡尔曼滤波或滑动平均,把历史数据利用起来,平滑噪声,同时能检测体温突变。卡尔曼滤波的计算量稍大,但现代主控跑起来毫无压力。
5.2 多传感器融合提升环境适应性
单靠红外热电堆,在环境温度剧烈变化时精度会下降。比如从空调房走到室外,传感器自身温度还没稳定,读数就会偏。解决办法是加一颗环境温度传感器,再加一颗湿度传感器,用多传感器融合算法做补偿。
具体做法是:主控同时采热电堆输出、环境温度、湿度,用环境温度和湿度查表得到补偿系数,对热电堆读数做修正。湿度影响不大,但在极端干燥或潮湿环境下,空气对红外辐射的吸收会有变化,补偿一下更稳。我做过对比实验,加了湿度补偿后,从干燥环境到潮湿环境的读数偏差从0.3℃降到0.1℃以内。
多传感器融合的代价是标定工作量增加。原来只标温度,现在要标温度加湿度,标定点数翻倍。但为了适应更多场景,这个投入是值得的。标定时可以用恒温恒湿箱,设定不同的温度和湿度组合,每个组合采一组数据,最后拟合成二维补偿表。
5.3 产线校准与批量一致性保障
实验室里调好的方案,到了产线上可能因为器件批次差异导致一致性不好。比如运放失调电压的批次分布、传感器灵敏度的批次分布,都会影响最终精度。解决办法是产线校准。
产线校准一般用两个温度点,比如35℃和42℃,用黑体炉提供标准温度,每个体温计测这两个点,把读数与标准值的偏差存到Flash里,测量时用这个偏差做补偿。这样每台体温计都有自己独立的校准参数,批次一致性就能保证。
校准工装要设计好,黑体炉的温度稳定性要在±0.05℃以内,校准时间要短,否则产线节拍跟不上。我见过一个产线,校准一个体温计要3分钟,一天只能做几百台,后来优化流程,把预热和测量并行,缩短到30秒一台,产能就上来了。
校准数据存储要可靠,Flash写入次数有限,不能频繁写。一般校准一次就固定了,除非返修才重新校准。Flash里要留一个区域存校准参数,加校验和,防止数据损坏。如果校验和不对,就报警提示重新校准。
5.4 成本控制与国产化替代的取舍
体温计芯片方案的成本大头在传感器和主控。传感器目前进口品牌占主导,但国产传感器这几年进步很快,精度和一致性都能做到接近进口水平,价格却便宜不少。我试过几款国产热电堆传感器,标定后精度能到±0.2℃,完全满足体温计要求,成本能降30%以上。
主控方面,国产32位MCU的ADC性能和低功耗表现已经不错,12位ADC、1Msps采样率、DMA、低功耗唤醒这些功能都有,价格只有进口品牌的几分之一。运放也有国产替代,输入偏置电流和噪声指标接近进口型号,价格更低。
但国产化替代不能只看价格,要实测。我一般先小批量试产,做高低温循环测试和长期稳定性测试,确认没问题再批量切换。测试项目包括:-10℃到50℃温度循环100次,读数偏差不超过0.2℃;连续工作24小时,读数漂移不超过0.1℃;跌落测试后功能正常。这些测试做完,心里就有底了。
成本控制还有一个思路是简化设计。比如如果主控自带高精度温度传感器,就不外挂温度芯片;如果ADC精度够,就不外挂基准;如果运放噪声够低,就不加二级放大。每省一颗芯片,成本降一点,但前提是精度不能降。我一般先做加法,把性能做上去,再做减法,把成本降下来,最后在性能和成本之间找平衡点。
这个方案后续还可以往AI方向扩展,比如用主控跑一个轻量级神经网络,把环境温度、湿度、传感器输出、历史数据一起输入,直接输出体温,省掉查表插值的标定工作。不过神经网络需要大量数据训练,前期投入大,适合有数据积累的团队尝试。我个人在实际操作中的体会是,先把传统方案做扎实,再考虑新技术的引入,步子迈太大容易扯着。