首页 / 资讯中心 / 文章详情

AD5940两线制生物阻抗测量方案:从选型到校准全解析

AD5940两线制生物阻抗测量方案:从选型到校准全解析 ★ FEATURED ARTICLE
做生物阻抗测量这块的工程师多半绕不开ADI的AD5940。它是一颗高集成度电化学前端芯片里同时塞进了激励DAC、24位ADC、可编程低噪声放大器和一套叫Sequencer的片内状态机特别适合做阻抗谱EIS、体脂秤、汗液检测这类信号弱、噪声敏感、还要控制功耗和BOM成本的产品。AD5941则是去掉了部分通道的简化版对两线制生物阻抗测量来说性价比更直观。我第一次用这颗料是从一台两线制体脂秤方案开始的。当时最让我头疼的不是原理图恰恰是“两线”这两个字。四线制很好理解——两根电流线、两根电压线开尔文接法把接触电阻排除在测量路径外。但两线制是在同一对电极上既要注入激励电流又要从同一对电极上读出电压响应电极夹持界面的接触阻抗、人体极化电压、共模干扰全都会混进信号里。这就需要从激励幅度、频率策略、测量通道的差分结构再到固件里的校准流程一整套配合起来才能压住误差。这篇文章会从生物阻抗与两线制的基础讲到AD5940/AD5941的选型思路再展开硬件电路里激励和测量的具体接法、寄存器配置与官方例程移植的关键步骤最后把我实际调板时踩过的坑做一轮排查总结。不管你是刚拿到EVAL-AD5940评估板的新手还是打算把体脂秤、身体成分模块快速落地的老手都能找到可以直接抄作业的步骤和避坑清单。1. 方案选型与两线制设计的核心思路1.1 生物阻抗测量到底在测什么生物阻抗测量的物理基础其实很直白。活组织里的细胞膜是一层绝缘性非常好的脂质双分子层低频下电流几乎穿不过细胞膜只能绕行细胞外液频率升高以后细胞膜的容抗下降电流开始穿膜进入细胞内液。于是在不同频率下测量同一段组织看到的总阻抗完全不同频率越低总阻抗越高频率越高总阻抗越低并且绘制成复数平面图还会呈现出典型的Cole-Cole半圆弧特征。所以生物阻抗测量本质上要做两件事第一对被测对象施加一个精准可控的交流激励通常是恒流正弦激励第二同步采集通过对象后的电压与电流的幅值和相位关系计算复阻抗的模|Z|和相位角θ。拿到多个频点下的复阻抗后才能反推细胞外液电阻R0、细胞内外液并联电阻Rinf、特征频率fc这些参数再结合身高、体重等基本信息估算体脂率、内脏脂肪等级这些用户关心的指标。在消费级产品里最常见的单频体脂秤通常只取一个50kHz频点用经验公式估算体脂占比。更专业的身体成分分析仪则用多频扫描拟合完整阻抗谱。AD5940/AD5941这种前端能很好的覆盖这两种需求单频测量时只需要配置一个激励频率多频BIS时只需要让序列发生器把多个频点依次跑完。1.2 AD5940/AD5941在AFE芯片里是什么定位市面上可以用于生物阻抗测量的方案大概有三条路线。第一条线路是全分立器件方案一颗DDS或DAC生成激励波一颗仪表放大器放大电极信号再用一颗24位ADC采样从激励、模拟前端到数字处理全部自己搭。好处是自由度高坏处也相当明显——噪声、增益、相位延迟很难做一致尤其到了量产阶段每一片都要重新校准调试工程师会非常痛苦。第二条线路是专用阻抗转换芯片比如AD5933/AD5934。这类芯片把DDS、ADC和离散傅里叶变换都做在内部直接输出阻抗实部虚部用起来非常简单。但它的激励频率范围、增益设置和系统灵活性都比较受限做高端多频身体成分分析时力不从心再加上内部没有完整的可编程序列机制复杂的测量流程还是得靠外部MCU频繁干预。第三条线路就是AD5940/AD5941这类电化学AFE。芯片内部集成了高精度DAC作为激励源有高压、低噪声的交流激励环路有可编程增益的测量通道还有温度传感器和能够执行预置测量序列的Sequencer状态机。做阻抗测量时你只需要配置好激励波形、测量通道和序列芯片会自动把激励、稳定、采样、平均、存储FIFO这一整套流程执行完MCU的负载非常低。AD5940与AD5941的寄存器级兼容度很高例程基本可以共用。区别主要在通道资源和芯片封装上AD5940更全可以支持复杂的电化学测量组合AD5941面向精简场景适合可穿戴、体脂秤这类固定功能的批量产品。如果项目后续有升级需求从AD5941换到AD5940属于小工程NC脚对齐软件只需要改很小一部分。1.3 两线制为什么在便携设备里绕不开从测量精度上说四线制是最好的。电流线和电压线分开电压测量回路几乎不流过电流电极接触电阻和引线电阻上的压降不会进到测量结果里。但消费品讲究的是用户体验和物料成本。体脂秤、智能手环要是多布一对电极结构设计、防水、用户操作都会变得复杂BOM成本也会明显上升。两线制只需要一对电极“金属电极踩上去”或者“手表背面两个触点贴皮肤”都能直接完成测量这样带来的结构和成本优势非常突出这是市面上大量消费级阻抗产品最终选择两线制的根本原因。两线制付出的代价是测量路径里多出几个“拖油瓶”电极与皮肤之间的接触阻抗、金属电极表面与汗液形成的双层电容、电极本身产生的极化电压。这些寄生参数会与人体阻抗串在一起。如果不加处理低频下测出的阻抗会显著偏高相位角也会被双层电容带偏。但好消息是对于一个固定电极结构这些寄生量在短时间内大致稳定。工程上完全可以通过“开路校准、短路校准、已知电阻校准”三步把系统误差压到一个可接受范围这是后面会重点展开的内容。2. 激励与测量链路两线制方案的关键参数2.1 两线制在AD5940上的典型拓扑在AD5940上做两线制阻抗测量我推荐的典型接法是主DAC从SE0引脚输出正弦激励信号经过一颗外置限流电阻Rload加到一对测量电极上电极上的电压响应通过内部MUX切到低噪声测量通道也就是AIN2/AIN3差分输入端由PGA和24位ADC完成放大与采样。这里有两个细节需要特别留意。第一激励电流一般不直接靠芯片内部跨阻放大器反推而是在激励回路里串联一颗精密参考电阻Rcal用它来既限制电流又充当校准的已知阻抗基准。第二两线制下的电压测量点必须覆盖电极两端的完整压降所以应该使用差分输入而不是单端对地测量。如果只测单端电极接触阻抗上产生的压差会被直接混入被测阻抗结果会偏差很大。AD5940的片内MUX允许我们把两个测量通道灵活配置成待测电极两端再配合偏置DAC为整个信号链路提供直流工作点。这里建议把偏置电压设置在ADC输入量程的中部给电极极化电位留出余量避免交流信号被推到非线性区。2.2 激励频率、电流幅度与采样率怎么定激励频率的选择核心取决于你要提取哪一层的组织信息。推荐的做法是配置多频扫描从1kHz到250kHz甚至1MHz逐步走一遍。低频段主要反映细胞外液电阻R0高频段才能把细胞内液通路纳入进来这样才有足够多频点去做Cole-Cole方程拟合。如果产品只需要一个频点工程上最常用的就是50kHz。这个频点下细胞内外液的分流比相对稳定与人体总水量、去脂体重相关性比较好这也是很多体脂秤选择单频50kHz的原因。激励幅度要同时考虑安全约束和AFE线性度。在大面积人体接触的场景下恒流激励一般控制在100μA到1mA RMS以内这个范围对脚掌、手背这类局部接触完全够用。实际工程中激励电流由DAC输出电压与串联电阻Rload共同决定I_peak约等于DAC峰值电压除以Rload加上被测阻抗的模值。所以选Rload之前要先估算被测人体的典型阻抗范围。比如体脂秤两只脚之间的阻抗大概是300Ω到700ΩDAC峰值电压取0.5V如果希望峰值电流不超过1mA选一个330Ω到510Ω的Rload就比较合适。阻抗更小的场景需要把电阻加大防止电流上限被突破。采样率方面不用太激进AD5940内部的ADC采样率和数字滤波器都会由官方例程自动配置。如果你用的是EIS例程FFT计算也是片内完成的MCU只要从FIFO里取幅值相位数据即可。2.3 硬件电路上容易忽略的几件事电源去耦测量输入是小信号激励端又有一定的电流变化模拟电源和数字电源建议分开走线芯片每个电源引脚就近放0.1μF加1μF去耦电容。ESD与钳位电极是直接接触人体的静电测试很容易击穿AFE输入需要有ESD防护。但钳位二极管务必选低漏电型号高漏电会给测量输入注入额外偏置电流直接影响精度。共模偏置生物电极会产生几十到上百毫伏的极化电压如果不在前端把共模电平抬到ADC量程中部微弱交流信号很可能被推到PGA共模范围之外出现削波。AD5940内部的偏置DAC就是干这个的合理设置偏置电压能解决大半的波形失真问题。电阻选型Rload与Rcal都要选温度系数低、初始精度高的电阻。普通5%贴片电阻做校准基准会导致批量一致性差建议用0.1%精度、25ppm/°C以内的电阻。3. 移植与固件开发把官方例程跑成两线制3.1 开发环境与工程准备ADI官方在GitHub上维护了ad5940-examples仓库里面能找到EIS、Impedance、Amperometric等多种用例。第一次接触可以先用官方EVAL-AD5940评估板和ADICUP3029开发板把例程烧进去通过串口观察输出曲线对芯片行为建立直观认知。真正落地到自己的产品时通常移植到STM32或者国产ARM平台。AD5940对外是一个SPI从设备所有复杂配置都在芯片内部所以只要你的MCU有SPI主接口和几个GPIO移植工作量其实不大。关键是理解官方例程里的“配置结构体”把里面的参数翻译成自己项目的需求。3.2 核心配置流程与寄存器两线制阻抗测量的固件流程可以归纳成四步。第一步是初始化调用AD5940_Initialize完成复位、时钟、AFE寄存器基础配置。第二步是配置激励源设置DAC输出频率、幅度、直流偏置点。这里主要配置DAC的输出波形、频率和相位官方例程通常用AppIMPCfg_Type结构体承载这些参数。第三步是配置测量通路将内部MUX切到两线制测量模式选择PGA增益和采样率设定FIFO阈值和中断模式。第四步是启动序列调用AD5940_ExecuteSeq让片内Sequencer开始执行预置的测量流程完成后读取FIFO数据按校准公式换算成复阻抗。官方例程里核心结构体的赋值大致是这样的代码以官方头文件为准不同版本字段名略有差异static AppIMPCfg_Type g_Impcfg; /* 设置激励频率1kHz到250kHz多频扫描时循环修改该字段 */ g_Impcfg.ImpCfg.SeqPolarity 1; /* 正极性 */ g_Impcfg.ImpCfg.FreqStart 1000; g_Impcfg.ImpCfg.FreqStep 0; g_Impcfg.ImpCfg.FreqPoints 1; /* 单频多频时改为频点数量 */ g_Impcfg.ImpCfg.AmpSweepEnable 0; g_Impcfg.ImpCfg.AmpStart 100; /* 激励幅度单位mV */ g_Impcfg.SeqCfg.PDATCCfg ...; /* PGA增益等 */ g_Impcfg.SeqCfg.RcalVal 1000; /* Rcal标称值单位Ω */需要注意AD5940内部对PGA增益和SINC滤波器的配置会影响相位测量精度。增益越高幅值分辨率越好但可测电压上限越低增益太低小信号会被量化噪声淹没。实际先用固定电阻测试观察不同增益下的信噪比再确认最终设置。3.3 两线制的三步校准法官方例程默认更偏向四线制EIS直接拿来测两线制产品低频段读数偏大、相位异常的情况很常见。原因前面已经解释过了电极接触阻抗进入了信号路径。工程上最有效的解决办法是增加三步校准开路校准电极不接触任何被测物记录系统残余失调包括偏置电压、ADC偏移。短路校准用低阻直连电极记录系统在零阻抗时的幅值相位基准把电极引线和走线的寄生阻抗测出来。已知电阻校准把一颗1kΩ或10kΩ精密电阻接到电极两端记录真实已知阻抗下的幅值相位。校准完成之后测量未知阻抗时先用未知测量结果减去开路基准再按短路与已知电阻之间的线性插值换算就能在很大程度上把电极接触阻抗带来的偏置修正掉。我个人的建议是把这三步校准做成产品出厂自检流程的一部分在每次上电后自动执行一遍。特别是可穿戴设备电极材质和佩戴松紧都会影响接触阻抗有了出厂自检校准批产品的一致性会好很多。4. 调试实战两线制测量踩过的坑4.1 读数漂移和跳动的排查两线制测量最常遇到的第一个问题就是读数漂移。用手捏住电极屏幕上阻抗值上下跳动很难稳定。这种情况我的排查顺序是先看供电模拟电源是否干净DC-DC开关噪声是否串进测量链路再看人体状态手是不是在轻微抖动电极是不是没有压紧贴合然后用示波器观察电极两端波形确认是否存在低频噪声被周期采样混叠最后看FIFO数据是否对齐有没有发生序列配置错误导致数据错位。人体阻抗本身有呼吸、心率引起的生理性波动通常在几十毫欧到几百毫欧量级。如果跳动幅度达到几十欧姆基本可以断定是接触不良或电源噪声而不是生理信号。解决办法是确保电极接触稳定测量时要求用户保持静止同时在固件里对多次测量结果做滑动平均。4.2 激励幅度匹配不当导致的波形失真另一个高频问题是PGA削波。正弦激励信号经过电极后如果PGA增益设置过高信号会超出ADC输入范围波形顶部被削平ADC计算出的幅值会偏小相位也会异常。反过来增益设低了小信号淹没在噪声里测量结果同样不可信。处理办法是先用示波器或ADC内部监测通道看一版实际波形幅度再逐个提高增益档位观察测量值是否稳定。如果确认削波就把增益降一档或者适当降低激励电压。批量生产时不要迷信固定的增益配置同一批电极接触状态不同信号幅度会有差异比较稳妥的做法是在序列里加一个幅度检测步骤动态调整增益。4.3 相位异常与电极双层电容两线制在低频段相位角比四线制明显偏大这是电极接触面和汗液形成的双层电容造成的。双层电容在高频下是低阻抗低频下是高阻抗和人体电阻串联后会让阻抗轨迹向右上方偏移。单纯从软件上很难完全消除这个效应。最实用的办法是尽量使用Ag/AgCl这种低极化电极或者使用表面处理良好的不锈钢电极同时在算法上把电极寄生电容等效为一个并联模型通过校准数据修正。如果产品主要工作频率在10kHz以上双层电容的影响会小很多这也是很多体脂秤避开超低频的原因。4.4 常见问题速查表我在调试过程中整理了一张速查表遇到问题可以先对照看一下。现象可能原因排查方向读数漂移、跳动电极接触不良、电源噪声、运动伪迹检查电极压紧程度去耦电容静置测试高频幅值偏小PGA削波、激励电流不足降低增益提高DAC幅度检查Rload低频相位偏大电极双层电容、接触阻抗换电极低频做校准修正FIFO数据错位序列配置错误、FIFO深度不足核对序列结束标记调整FIFO阈值批次一致性差Rcal/Rload精度不足、校准流程缺失换0.1%电阻补上电自校准功耗过高序列采样点数太多、MCU唤醒频率过高缩短测量窗口降低重复测量次数4.5 如何验证两线制测量结果是否可信调试到最后一定要做一次客观的验证而不是只看读数自洽。我的做法是把人体替换成精密电阻网络比如1kΩ电阻并联一颗几十nF电容模拟组织的容性特征然后用AD5940测量结果和同频点下的LCR表读数做对比。幅值和相位都应该在可接受误差范围内通常幅值误差小于1%相位误差小于1度这个系统就算合格。多频扫频时可以画一张阻抗模值随频率变化的曲线理想情况下应该是平滑下降不能出现跳变或明显毛刺。最后再拿真实人体重复测试多次计算变异系数CV。如果CV小于3%说明系统稳定性已经足够进入产品化阶段。最后再说一点个人体会。AD5940这颗芯片能力很强但官方例程面对的是普适场景两线制产品想要拿到好的测量结果一定要把校准流程放在和硬件设计一样重要的位置。先固定电阻调通链路再上人体实测最后加上三步校准这条路走下来说实话并不轻松但走通之后后面做多频BIS、身体成分算法这些功能就都是水到渠成的事了。
阅读完成 · 觉得有帮助?
咨询建站