ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

快速测温体温计方案开发:主控芯片、ADC与MCU选型及量产校准

快速测温体温计方案开发:主控芯片、ADC与MCU选型及量产校准 体温计这个品类看起来简单真要做一款能过医疗注册检、能量产、成本还压得住的方案里面的门道比大多数人想象的多得多。我前后参与过三款电子体温计的方案开发从最早期用分立运放搭仪表放大器到后来用集成式AFE再到最近用通用MCU加外部ADC做低成本方案每一代都踩过不同的坑。这篇内容主要面向做小家电、医疗电子硬件的工程师以及正在选型体温计方案的方案商和品牌方把快速测温体温计从主控芯片选型、ADC采样链路设计、温度算法到量产校准的完整思路拆开讲一遍。核心关键词就几个芯片方案、方案开发、主控芯片、ADC、MCU但每一个词背后都有一堆需要权衡的细节。1. 快速测温到底快在哪里先搞清楚需求边界1.1 传统体温计的响应瓶颈不在算法在热传导很多人第一次做体温计会下意识觉得快速测温是个软件算法问题认为只要算法够聪明采样几毫秒就能算出体温。这个认知偏差会导致整个方案方向跑偏。电子体温计的测量对象是人体探头贴到腋下或额头热量从人体传到传感器敏感元件本身就需要时间。传统腋下电子体温计要等三到五分钟根本原因不是MCU算得慢而是热平衡没建立起来——传感器温度还没追上人体温度你采到的电压值反映的是正在升温中的探头不是体温。所以快速测温方案的核心矛盾是如何在热平衡尚未完全建立时就通过有限的温度采样点预测出最终稳定温度。这就把问题从提高采样速度变成了建立热传导模型加预测算法。理解这一点后面所有的芯片选型和电路设计才有正确的出发点。1.2 不同测量部位的快标准完全不同腋下、口腔、额头、耳道这四个部位的快速测温实现难度是递增的。腋下测量接触面积大、环境相对封闭热传导模型最稳定用预测算法做到十到十五秒出结果是比较现实的。口腔测量受舌下位置和口腔开合影响大需要更鲁棒的算法。额头和耳道属于红外非接触测量那是另一套完全不同的技术路线涉及红外热电堆传感器和发射率补偿和接触式NTC方案不是一回事。这篇内容聚焦接触式NTC方案因为这是目前出货量最大、成本最敏感、也是主控芯片加ADC加MCU这套组合最能发挥价值的方向。红外方案虽然也用到ADC和MCU但传感器前端差异太大需要单独展开。1.3 精度要求决定了ADC的有效位数下限医疗体温计的精度要求通常是正负0.1摄氏度部分标准要求正负0.05摄氏度。NTC热敏电阻在37摄氏度附近的温度系数大约是负的百分之四到百分之五每摄氏度配合分压电路后每摄氏度对应的电压变化量取决于电路参数。假设我们用一颗10千欧的NTC在37度时阻值约6千欧配合10千欧上拉电阻和3.0伏参考电压每摄氏度对应的电压变化大约在30到50毫伏之间。要分辨0.05摄氏度就需要分辨大约1.5到2.5毫伏的电压变化。如果参考电压是3.0伏那么ADC的有效分辨率至少要达到12位3.0伏除以4096约等于0.73毫伏考虑到噪声和有效位数损失实际选型时14位到16位是比较稳妥的。这就是为什么很多低成本方案用12位ADC勉强能过但一致性差、校准工作量大而稍微好一点的方案都会上16位ADC或者用外部高精度ADC芯片。2. 主控芯片选型通用MCU还是专用AFE2.1 通用MCU加外部ADC的性价比账用通用MCU做主控外挂一颗16位ADC这是目前中低成本体温计方案里最常见的组合。MCU负责按键、LCD显示、蜂鸣器、定时、算法运算和电源管理ADC专门负责NTC电压采集。这种方案的好处是灵活MCU可以选国产的通用型号ADC也可以根据精度需求灵活搭配整体BOM成本可以压得比较低。但这里有个容易被忽略的问题MCU和ADC之间的通信会引入噪声和时序开销。如果ADC通过SPI接口和MCU通信SPI时钟频率、走线长度、地线处理都会影响采样结果的稳定性。我见过一个方案ADC本身信噪比很好但因为SPI走线从DC-DC电感旁边穿过采样值跳动达到正负3个LSB直接导致温度显示末位乱跳。后来把SPI走线改到板子另一面中间加地线隔离问题才解决。2.2 集成AFE的方案省事但不够灵活市面上有一些集成了NTC激励、放大、ADC和温度换算的专用AFE芯片MCU只需要通过I2C读取温度值就行。这种方案开发周期短算法由芯片厂商保证适合快速出产品。缺点是灵活性差你想改采样率、改滤波参数、改预测算法都得看芯片支不支持。而且这类芯片往往单价偏高在价格战激烈的体温计市场成本压力很大。我的经验是如果产品定位是走量款、对成本极度敏感通用MCU加外部ADC更合适如果是中高端款、强调测量一致性和开发速度集成AFE可以接受。但无论哪种MCU本身的低功耗特性和LCD驱动能力都是必须重点考察的。2.3 MCU选型时必须确认的几个硬指标选MCU不能只看主频和Flash大小体温计方案有几个特殊要求。第一是低功耗体温计通常用纽扣电池供电待机电流要控制在微安级别测量时也不能超过几毫安。第二是内置LCD驱动段码屏是体温计的主流显示方案如果MCU不带LCD驱动就得外挂驱动芯片成本和板面积都上去了。第三是ADC触发方式如果MCU自带ADC要确认是否支持定时器硬件触发采样软件触发在低功耗场景下会频繁唤醒CPU增加功耗。还有一个容易踩的坑是MCU的复位电压和电池电压的关系。纽扣电池用到后期电压会降到2.0伏左右如果MCU的最低工作电压是2.2伏那电池还剩不少电的时候设备就罢工了。选型时要确认MCU在2.0伏甚至1.8伏下能否正常工作这直接影响用户体验和电池寿命标称值。3. ADC采样链路从NTC到数字值的每一个环节3.1 NTC分压电路的设计取舍NTC的阻值随温度变化要把它变成电压信号最简单的方式是和一个固定电阻串联分压。上拉电阻的选值很关键选得太大低温区灵敏度高但高温区电压变化小选得太小高温区灵敏度高但低温区分辨率不够。体温计的关注区间是35到42摄氏度所以上拉电阻的阻值应该选在NTC在这个区间中点的阻值附近。以10千欧的NTC为例37度时阻值约6千欧那么上拉电阻选6.2千欧或6.8千欧比较合适。这样在35到42度区间内分压点的电压变化比较均匀ADC的每一位都能得到充分利用。如果随手选个10千欧上拉在高温区电压变化会明显变缓有效分辨率下降。另外NTC的供电不能直接用电池电压因为电池电压会随电量下降。必须用LDO或者基准电压源给分压电路供电否则测出来的温度会随电池电量漂移。这是新手最容易犯的错误之一用电池直接供电结果电量一低温度就偏。3.2 ADC参考电压的选择与噪声抑制ADC的参考电压决定了转换的绝对精度。如果用MCU的电源电压做参考那电源上的任何波动都会直接反映到采样结果上。体温计方案里建议用独立的基准电压源比如2.5伏或3.0伏的基准芯片给ADC提供参考。基准源的初始精度和温漂要重点关注初始精度影响绝对精度温漂影响不同环境温度下的一致性。参考电压的噪声抑制也很关键。基准源输出端要加去耦电容通常是一大一小并联比如10微法和0.1微法。大电容滤低频噪声小电容滤高频噪声。如果基准源和ADC之间的走线较长还要考虑加RC滤波。我实测过一个方案基准源输出没加去耦ADC采样值的峰峰值噪声比加了去耦的情况大了将近一倍。3.3 采样时序与NTC自热效应NTC是有自热效应的电流流过NTC会产生热量导致测到的温度比实际温度偏高。自热误差和流过NTC的电流平方成正比。要减小自热就要减小激励电流但电流太小又会导致ADC采样时信号太弱、容易被噪声淹没。这是一个需要平衡的问题。常见的做法是间歇式激励只在采样瞬间给NTC供电采样完成后立刻断开。这样平均功耗和自热都很小。但间歇激励会带来另一个问题NTC和分压电容需要建立时间。如果激励时间太短分压点的电压还没稳定就采样结果会偏低。我的经验是激励时间至少要是RC时间常数的五到十倍。假设分压点等效电容是0.1微法等效电阻是3千欧时间常数是0.3毫秒那么激励时间至少要1.5到3毫秒。采样时序上建议用定时器硬件触发ADC在激励稳定后延迟一小段时间再启动转换。这个延迟可以用定时器的比较通道或者MCU内部的触发延迟功能实现。软件延时在低功耗场景下不现实因为CPU要一直醒着等。3.4 采样数据的滤波处理ADC采到的原始值一定是有噪声的直接用来算温度会导致显示末位跳动。滤波是必须的但滤波方式要选对。最简单的均值滤波会引入滞后对于快速测温场景不合适因为温度本身在快速变化均值滤波会把变化也滤掉。我比较推荐的是中值滤波加滑动平均的组合。先连续采比如八个点去掉最大和最小剩下的取平均。这样既能抑制突发噪声又不会引入太大滞后。如果MCU资源允许还可以加一个一阶低通滤波系数根据采样率调整。但要注意滤波会引入相位滞后如果后面还要做温度预测算法滤波太狠会影响预测的准确性。提示滤波参数不要照搬别人的方案因为采样率、NTC型号、电路参数都不同。建议在实测中用示波器或者串口打印原始数据观察噪声特性后再定滤波参数。4. 温度计算与快速预测算法4.1 从ADC值到温度的换算路径ADC值先要换算成NTC阻值再通过阻值换算成温度。阻值换算用分压公式温度换算用Steinhart-Hart方程或者查表加插值。Steinhart-Hart方程精度高但计算量大需要浮点运算或者定点模拟。查表加线性插值计算量小但需要存储表格精度取决于表格密度。对于体温计这种关注区间窄的应用我倾向于用分段线性插值。在35到42度区间内每隔0.5度存一个ADC值实际测量时找到相邻两个点做线性插值。这样表格不大计算也简单精度足够。如果MCU有硬件除法器或者浮点单元用Steinhart-Hart也可以但要注意浮点运算的功耗和代码空间。4.2 快速预测算法的核心思路快速预测的本质是用前几秒的温度上升曲线外推最终稳定温度。人体体温计的热传导过程可以近似用一阶或二阶系统描述。一阶系统下温度随时间的变化是指数逼近理论上只要知道初始温度、目标温度和当前温度就能算出任意时刻的温度。但实际上目标温度是未知的需要从曲线形状反推。常用的方法是采集前若干秒的温度序列拟合出一条指数曲线然后取曲线的渐近值作为预测体温。拟合可以用最小二乘法也可以用简化的两点法或三点法。两点法是取两个时间点的温度值根据经验公式直接算。三点法类似但用三个点提高鲁棒性。这些方法在MCU上都能实现计算量不大。但预测算法有个前提被测部位的热接触必须良好且稳定。如果探头没贴紧或者测量过程中移动了曲线就会畸变预测结果会严重偏离。所以算法里通常要加一个接触检测判断温度上升速率是否在合理范围内如果异常就提示重新测量或者切换到慢速模式。4.3 预测算法的参数标定预测算法里的系数不是拍脑袋定的需要用实测数据标定。标定方法是用标准温度源比如恒温水浴模拟人体温度记录体温计从室温放入水浴后的完整温度曲线然后用这条曲线去拟合算法参数。不同体温计的热设计不同参数也不同所以每款产品都要单独标定。标定时要注意水浴的温度要覆盖35到42度每个温度点至少测十次取平均曲线。还要考虑环境温度的影响因为热传导速率和环境温度有关。如果产品要在不同环境温度下使用标定数据要覆盖比如10度到40度的环境温度范围算法里可能需要根据环境温度做补偿。5. 量产校准与一致性控制5.1 为什么每台体温计都需要校准NTC本身有阻值公差通常是正负百分之一到正负百分之三。分压电阻也有公差基准电压源也有初始精度。这些误差叠加起来如果不校准每台体温计测同一温度可能差0.3度以上完全达不到医疗标准。所以量产时必须逐台校准。校准的原理很简单把体温计放在已知温度的标准环境中读取ADC值和理论值比较算出一个修正系数写入MCU的Flash或者EEPROM。实际测量时用这个系数修正计算结果。校准点通常选在37度附近因为这是体温计最关注的温度。如果精度要求高可以在35度和41度各校准一个点做两点校准。5.2 校准工装的设计要点校准工装的核心是一个温度稳定的环境通常是恒温槽或者恒温箱。恒温槽的温控精度要达到正负0.02度以上否则校准本身就不准。工装还要能同时夹持多台体温计保证每台的探头都浸入到相同深度的恒温介质中。探头插入深度不一致会导致热传导条件不同校准结果就不一致。工装和体温计之间的通信也要设计好。校准系数需要写入体温计通常通过预留的通信接口比如UART或者单总线。如果体温计没有预留接口也可以通过按键组合进入校准模式用显示值来反馈。但这种方式效率低不适合大批量生产。5.3 校准数据的存储与读取校准系数存在MCU的Flash里要注意Flash的擦写寿命。如果每台只写一次那没问题。但如果设计成可重复校准就要考虑磨损均衡。更稳妥的做法是存在EEPROM里擦写寿命长但成本略高。有些MCU有专门的配置区也可以利用。读取校准系数时要注意校验。Flash存储可能因为掉电或者干扰导致数据损坏所以存储时要加校验和或者CRC。启动时先校验校验失败就用默认系数或者提示校准。这个细节很多方案会忽略导致偶发的温度异常排查起来很麻烦。6. 实测中容易翻车的几个细节6.1 电池内阻导致的电压跌落体温计用纽扣电池电池内阻在低温或者电量低时会明显增大。当LCD背光或者蜂鸣器工作时瞬间电流可能达到几十毫安电池电压会瞬间跌落。如果ADC参考电压或者NTC激励电压是从电池直接取的这个跌落会直接导致采样值跳变。解决办法是给模拟部分加独立的LDO并且在LDO输出端加足够的储能电容。另外采样要避开大电流负载工作的时刻比如不要在蜂鸣器响的时候采样。如果MCU支持可以在采样前先关闭背光和蜂鸣器采样完成后再恢复。6.2 探头接触不良导致的预测失败快速预测算法最怕的就是接触不良。用户把体温计夹到腋下如果没夹紧或者腋下有汗热传导就会变差温度上升曲线会变缓。算法如果按正常曲线去预测结果会偏低。所以算法里要有接触质量判断比如检测温度上升速率如果低于某个阈值就判定接触不良提示用户重新夹紧或者延长测量时间。这个阈值的设定需要大量实测数据。不同人的腋下结构不同夹紧力也不同阈值设得太严会频繁误报设得太松又起不到保护作用。我的经验是用温度上升的前三秒斜率来判断斜率低于每秒0.1度就认为接触不良。但这个值要根据探头热设计调整。6.3 LCD显示刷新与采样时序的冲突段码LCD的刷新通常需要交流驱动刷新频率在几十到几百赫兹。如果LCD刷新和ADC采样共用同一个时钟源或者电源刷新时的电流波动可能耦合到模拟部分。我遇到过一个问题体温计显示正常但采样值每隔固定时间就跳一下后来发现是LCD刷新和ADC采样同步了刷新电流干扰了采样。解决办法是让LCD刷新和ADC采样错开或者给模拟部分加独立的电源滤波。如果MCU支持可以把ADC采样安排在LCD刷新的间隙。这个细节在方案设计初期就要考虑后期改起来很麻烦。6.4 环境温度突变的影响从室外冷环境进入室内暖环境体温计本身温度还没平衡这时候测量会不准。好的方案会检测环境温度如果和环境温度差异太大提示用户等待或者自动延长测量时间。环境温度检测可以用MCU内部温度传感器也可以用外部NTC。内部传感器精度差但够用外部NTC精度高但增加成本。这个功能在北方冬天特别有用用户从外面回来马上测体温如果不做补偿测出来会偏低。补偿算法可以根据环境温度和体温计自身温度的差值对预测结果做修正。修正系数同样需要实测标定。7. 方案扩展与选型建议7.1 从体温计扩展到其他快速测温场景这套主控芯片加ADC加MCU的架构稍作修改就能用到其他快速测温场景比如额温枪的接触式版本、奶温计、水温计。区别主要在温度区间和精度要求。奶温计关注40到60度水温计关注0到100度NTC选型和分压电阻要相应调整。算法框架可以复用但预测参数要重新标定。如果要做多通道测温比如同时测多个点的温度可以在ADC前面加模拟开关轮流采集。但要注意模拟开关的导通电阻会影响分压比选型时要选导通电阻小且一致的。另外多通道切换后要有足够的建立时间否则通道间会串扰。7.2 主控芯片的国产替代考量现在很多方案在考虑国产MCU替代成本能降不少。但替换时要注意几个点ADC的性能是否一致特别是有效位数和噪声LCD驱动的对比度是否够低功耗模式下的唤醒时间和功耗开发工具链是否成熟。我建议替换前先做小批量对比测试用同一批NTC和校准工装看温度一致性是否达标。还有一点是供货稳定性。体温计是季节性产品旺季需求量可能突然翻几倍如果MCU供货跟不上产线就要停。选型时要考虑厂商的产能和备货周期不要只看价格。7.3 方案开发的时间节点把控一个完整的体温计方案开发从选型到量产通常需要三到六个月。前一个月做选型和原理图设计第二个月做PCB和基础驱动第三个月做算法和校准第四个月做注册检和量产准备。如果算法需要大量实测数据标定时间还要拉长。时间上最容易失控的是算法标定和注册检。算法标定依赖实测数据数据不够就得反复测。注册检要看标准的要求提前把标准吃透按标准设计测试用例能省不少时间。我的建议是原理图设计阶段就把注册检的要求考虑进去比如电气安全、电磁兼容不要等到最后再补。注意体温计属于医疗设备不同地区的注册要求不同。方案开发前一定要确认目标市场的法规要求包括精度标准、临床评估要求、电磁兼容等级等。这些要求会直接影响芯片选型和电路设计。8. 写在最后的几点实操体会做体温计方案这些年最大的体会是这个产品的技术难点不在单点而在系统一致性。ADC选得再好NTC再准如果电源设计有缺陷、校准工装不一致、算法参数没标定好最终产品的一致性就是不行。我见过太多方案实验室里测几台都很准一上量产就出问题根源都是系统级的细节没抠到位。另一个体会是不要迷信高精度器件。16位ADC不一定比12位ADC做出来的产品准关键看整个信号链的信噪比和校准。我做过一个方案用12位ADC加精心设计的滤波和校准一致性反而比另一个用16位ADC但电源没处理好的方案更好。器件的精度是上限系统设计决定你能不能达到这个上限。最后说一个容易被忽略的点用户的使用习惯。体温计是给普通人用的不是给工程师用的。如果操作太复杂或者测量时间太长用户就会用错。快速测温的价值不仅在于技术指标更在于让用户愿意按照正确的方式去测。方案设计时多从用户角度想一步很多问题在设计阶段就能避免。
返回列表