
做生物阻抗測量這塊的工程師多半繞不開ADI的AD5940。它是一顆高集成度電化學前端芯片里同時塞進了激勵DAC、24位ADC、可編程低噪聲放大器和一套叫Sequencer的片內(nèi)狀態(tài)機特別適合做阻抗譜EIS、體脂秤、汗液檢測這類信號弱、噪聲敏感、還要控制功耗和BOM成本的產(chǎn)品。AD5941則是去掉了部分通道的簡化版對兩線制生物阻抗測量來說性價比更直觀。我第一次用這顆料是從一臺兩線制體脂秤方案開始的。當時最讓我頭疼的不是原理圖恰恰是“兩線”這兩個字。四線制很好理解——兩根電流線、兩根電壓線開爾文接法把接觸電阻排除在測量路徑外。但兩線制是在同一對電極上既要注入激勵電流又要從同一對電極上讀出電壓響應電極夾持界面的接觸阻抗、人體極化電壓、共模干擾全都會混進信號里。這就需要從激勵幅度、頻率策略、測量通道的差分結(jié)構再到固件里的校準流程一整套配合起來才能壓住誤差。這篇文章會從生物阻抗與兩線制的基礎講到AD5940/AD5941的選型思路再展開硬件電路里激勵和測量的具體接法、寄存器配置與官方例程移植的關鍵步驟最后把我實際調(diào)板時踩過的坑做一輪排查總結(jié)。不管你是剛拿到EVAL-AD5940評估板的新手還是打算把體脂秤、身體成分模塊快速落地的老手都能找到可以直接抄作業(yè)的步驟和避坑清單。1. 方案選型與兩線制設計的核心思路1.1 生物阻抗測量到底在測什么生物阻抗測量的物理基礎其實很直白。活組織里的細胞膜是一層絕緣性非常好的脂質(zhì)雙分子層低頻下電流幾乎穿不過細胞膜只能繞行細胞外液頻率升高以后細胞膜的容抗下降電流開始穿膜進入細胞內(nèi)液。于是在不同頻率下測量同一段組織看到的總阻抗完全不同頻率越低總阻抗越高頻率越高總阻抗越低并且繪制成復數(shù)平面圖還會呈現(xiàn)出典型的Cole-Cole半圓弧特征。所以生物阻抗測量本質(zhì)上要做兩件事第一對被測對象施加一個精準可控的交流激勵通常是恒流正弦激勵第二同步采集通過對象后的電壓與電流的幅值和相位關系計算復阻抗的模|Z|和相位角θ。拿到多個頻點下的復阻抗后才能反推細胞外液電阻R0、細胞內(nèi)外液并聯(lián)電阻Rinf、特征頻率fc這些參數(shù)再結(jié)合身高、體重等基本信息估算體脂率、內(nèi)臟脂肪等級這些用戶關心的指標。在消費級產(chǎn)品里最常見的單頻體脂秤通常只取一個50kHz頻點用經(jīng)驗公式估算體脂占比。更專業(yè)的身體成分分析儀則用多頻掃描擬合完整阻抗譜。AD5940/AD5941這種前端能很好的覆蓋這兩種需求單頻測量時只需要配置一個激勵頻率多頻BIS時只需要讓序列發(fā)生器把多個頻點依次跑完。1.2 AD5940/AD5941在AFE芯片里是什么定位市面上可以用于生物阻抗測量的方案大概有三條路線。第一條線路是全分立器件方案一顆DDS或DAC生成激勵波一顆儀表放大器放大電極信號再用一顆24位ADC采樣從激勵、模擬前端到數(shù)字處理全部自己搭。好處是自由度高壞處也相當明顯——噪聲、增益、相位延遲很難做一致尤其到了量產(chǎn)階段每一片都要重新校準調(diào)試工程師會非常痛苦。第二條線路是專用阻抗轉(zhuǎn)換芯片比如AD5933/AD5934。這類芯片把DDS、ADC和離散傅里葉變換都做在內(nèi)部直接輸出阻抗實部虛部用起來非常簡單。但它的激勵頻率范圍、增益設置和系統(tǒng)靈活性都比較受限做高端多頻身體成分分析時力不從心再加上內(nèi)部沒有完整的可編程序列機制復雜的測量流程還是得靠外部MCU頻繁干預。第三條線路就是AD5940/AD5941這類電化學AFE。芯片內(nèi)部集成了高精度DAC作為激勵源有高壓、低噪聲的交流激勵環(huán)路有可編程增益的測量通道還有溫度傳感器和能夠執(zhí)行預置測量序列的Sequencer狀態(tài)機。做阻抗測量時你只需要配置好激勵波形、測量通道和序列芯片會自動把激勵、穩(wěn)定、采樣、平均、存儲FIFO這一整套流程執(zhí)行完MCU的負載非常低。AD5940與AD5941的寄存器級兼容度很高例程基本可以共用。區(qū)別主要在通道資源和芯片封裝上AD5940更全可以支持復雜的電化學測量組合AD5941面向精簡場景適合可穿戴、體脂秤這類固定功能的批量產(chǎn)品。如果項目后續(xù)有升級需求從AD5941換到AD5940屬于小工程NC腳對齊軟件只需要改很小一部分。1.3 兩線制為什么在便攜設備里繞不開從測量精度上說四線制是最好的。電流線和電壓線分開電壓測量回路幾乎不流過電流電極接觸電阻和引線電阻上的壓降不會進到測量結(jié)果里。但消費品講究的是用戶體驗和物料成本。體脂秤、智能手環(huán)要是多布一對電極結(jié)構設計、防水、用戶操作都會變得復雜BOM成本也會明顯上升。兩線制只需要一對電極“金屬電極踩上去”或者“手表背面兩個觸點貼皮膚”都能直接完成測量這樣帶來的結(jié)構和成本優(yōu)勢非常突出這是市面上大量消費級阻抗產(chǎn)品最終選擇兩線制的根本原因。兩線制付出的代價是測量路徑里多出幾個“拖油瓶”電極與皮膚之間的接觸阻抗、金屬電極表面與汗液形成的雙層電容、電極本身產(chǎn)生的極化電壓。這些寄生參數(shù)會與人體阻抗串在一起。如果不加處理低頻下測出的阻抗會顯著偏高相位角也會被雙層電容帶偏。但好消息是對于一個固定電極結(jié)構這些寄生量在短時間內(nèi)大致穩(wěn)定。工程上完全可以通過“開路校準、短路校準、已知電阻校準”三步把系統(tǒng)誤差壓到一個可接受范圍這是后面會重點展開的內(nèi)容。2. 激勵與測量鏈路兩線制方案的關鍵參數(shù)2.1 兩線制在AD5940上的典型拓撲在AD5940上做兩線制阻抗測量我推薦的典型接法是主DAC從SE0引腳輸出正弦激勵信號經(jīng)過一顆外置限流電阻Rload加到一對測量電極上電極上的電壓響應通過內(nèi)部MUX切到低噪聲測量通道也就是AIN2/AIN3差分輸入端由PGA和24位ADC完成放大與采樣。這里有兩個細節(jié)需要特別留意。第一激勵電流一般不直接靠芯片內(nèi)部跨阻放大器反推而是在激勵回路里串聯(lián)一顆精密參考電阻Rcal用它來既限制電流又充當校準的已知阻抗基準。第二兩線制下的電壓測量點必須覆蓋電極兩端的完整壓降所以應該使用差分輸入而不是單端對地測量。如果只測單端電極接觸阻抗上產(chǎn)生的壓差會被直接混入被測阻抗結(jié)果會偏差很大。AD5940的片內(nèi)MUX允許我們把兩個測量通道靈活配置成待測電極兩端再配合偏置DAC為整個信號鏈路提供直流工作點。這里建議把偏置電壓設置在ADC輸入量程的中部給電極極化電位留出余量避免交流信號被推到非線性區(qū)。2.2 激勵頻率、電流幅度與采樣率怎么定激勵頻率的選擇核心取決于你要提取哪一層的組織信息。推薦的做法是配置多頻掃描從1kHz到250kHz甚至1MHz逐步走一遍。低頻段主要反映細胞外液電阻R0高頻段才能把細胞內(nèi)液通路納入進來這樣才有足夠多頻點去做Cole-Cole方程擬合。如果產(chǎn)品只需要一個頻點工程上最常用的就是50kHz。這個頻點下細胞內(nèi)外液的分流比相對穩(wěn)定與人體總水量、去脂體重相關性比較好這也是很多體脂秤選擇單頻50kHz的原因。激勵幅度要同時考慮安全約束和AFE線性度。在大面積人體接觸的場景下恒流激勵一般控制在100μA到1mA RMS以內(nèi)這個范圍對腳掌、手背這類局部接觸完全夠用。實際工程中激勵電流由DAC輸出電壓與串聯(lián)電阻Rload共同決定I_peak約等于DAC峰值電壓除以Rload加上被測阻抗的模值。所以選Rload之前要先估算被測人體的典型阻抗范圍。比如體脂秤兩只腳之間的阻抗大概是300Ω到700ΩDAC峰值電壓取0.5V如果希望峰值電流不超過1mA選一個330Ω到510Ω的Rload就比較合適。阻抗更小的場景需要把電阻加大防止電流上限被突破。采樣率方面不用太激進AD5940內(nèi)部的ADC采樣率和數(shù)字濾波器都會由官方例程自動配置。如果你用的是EIS例程FFT計算也是片內(nèi)完成的MCU只要從FIFO里取幅值相位數(shù)據(jù)即可。2.3 硬件電路上容易忽略的幾件事電源去耦測量輸入是小信號激勵端又有一定的電流變化模擬電源和數(shù)字電源建議分開走線芯片每個電源引腳就近放0.1μF加1μF去耦電容。ESD與鉗位電極是直接接觸人體的靜電測試很容易擊穿AFE輸入需要有ESD防護。但鉗位二極管務必選低漏電型號高漏電會給測量輸入注入額外偏置電流直接影響精度。共模偏置生物電極會產(chǎn)生幾十到上百毫伏的極化電壓如果不在前端把共模電平抬到ADC量程中部微弱交流信號很可能被推到PGA共模范圍之外出現(xiàn)削波。AD5940內(nèi)部的偏置DAC就是干這個的合理設置偏置電壓能解決大半的波形失真問題。電阻選型Rload與Rcal都要選溫度系數(shù)低、初始精度高的電阻。普通5%貼片電阻做校準基準會導致批量一致性差建議用0.1%精度、25ppm/°C以內(nèi)的電阻。3. 移植與固件開發(fā)把官方例程跑成兩線制3.1 開發(fā)環(huán)境與工程準備ADI官方在GitHub上維護了ad5940-examples倉庫里面能找到EIS、Impedance、Amperometric等多種用例。第一次接觸可以先用官方EVAL-AD5940評估板和ADICUP3029開發(fā)板把例程燒進去通過串口觀察輸出曲線對芯片行為建立直觀認知。真正落地到自己的產(chǎn)品時通常移植到STM32或者國產(chǎn)ARM平臺。AD5940對外是一個SPI從設備所有復雜配置都在芯片內(nèi)部所以只要你的MCU有SPI主接口和幾個GPIO移植工作量其實不大。關鍵是理解官方例程里的“配置結(jié)構體”把里面的參數(shù)翻譯成自己項目的需求。3.2 核心配置流程與寄存器兩線制阻抗測量的固件流程可以歸納成四步。第一步是初始化調(diào)用AD5940_Initialize完成復位、時鐘、AFE寄存器基礎配置。第二步是配置激勵源設置DAC輸出頻率、幅度、直流偏置點。這里主要配置DAC的輸出波形、頻率和相位官方例程通常用AppIMPCfg_Type結(jié)構體承載這些參數(shù)。第三步是配置測量通路將內(nèi)部MUX切到兩線制測量模式選擇PGA增益和采樣率設定FIFO閾值和中斷模式。第四步是啟動序列調(diào)用AD5940_ExecuteSeq讓片內(nèi)Sequencer開始執(zhí)行預置的測量流程完成后讀取FIFO數(shù)據(jù)按校準公式換算成復阻抗。官方例程里核心結(jié)構體的賦值大致是這樣的代碼以官方頭文件為準不同版本字段名略有差異static AppIMPCfg_Type g_Impcfg; /* 設置激勵頻率1kHz到250kHz多頻掃描時循環(huán)修改該字段 */ g_Impcfg.ImpCfg.SeqPolarity 1; /* 正極性 */ g_Impcfg.ImpCfg.FreqStart 1000; g_Impcfg.ImpCfg.FreqStep 0; g_Impcfg.ImpCfg.FreqPoints 1; /* 單頻多頻時改為頻點數(shù)量 */ g_Impcfg.ImpCfg.AmpSweepEnable 0; g_Impcfg.ImpCfg.AmpStart 100; /* 激勵幅度單位mV */ g_Impcfg.SeqCfg.PDATCCfg ...; /* PGA增益等 */ g_Impcfg.SeqCfg.RcalVal 1000; /* Rcal標稱值單位Ω */需要注意AD5940內(nèi)部對PGA增益和SINC濾波器的配置會影響相位測量精度。增益越高幅值分辨率越好但可測電壓上限越低增益太低小信號會被量化噪聲淹沒。實際先用固定電阻測試觀察不同增益下的信噪比再確認最終設置。3.3 兩線制的三步校準法官方例程默認更偏向四線制EIS直接拿來測兩線制產(chǎn)品低頻段讀數(shù)偏大、相位異常的情況很常見。原因前面已經(jīng)解釋過了電極接觸阻抗進入了信號路徑。工程上最有效的解決辦法是增加三步校準開路校準電極不接觸任何被測物記錄系統(tǒng)殘余失調(diào)包括偏置電壓、ADC偏移。短路校準用低阻直連電極記錄系統(tǒng)在零阻抗時的幅值相位基準把電極引線和走線的寄生阻抗測出來。已知電阻校準把一顆1kΩ或10kΩ精密電阻接到電極兩端記錄真實已知阻抗下的幅值相位。校準完成之后測量未知阻抗時先用未知測量結(jié)果減去開路基準再按短路與已知電阻之間的線性插值換算就能在很大程度上把電極接觸阻抗帶來的偏置修正掉。我個人的建議是把這三步校準做成產(chǎn)品出廠自檢流程的一部分在每次上電后自動執(zhí)行一遍。特別是可穿戴設備電極材質(zhì)和佩戴松緊都會影響接觸阻抗有了出廠自檢校準批產(chǎn)品的一致性會好很多。4. 調(diào)試實戰(zhàn)兩線制測量踩過的坑4.1 讀數(shù)漂移和跳動的排查兩線制測量最常遇到的第一個問題就是讀數(shù)漂移。用手捏住電極屏幕上阻抗值上下跳動很難穩(wěn)定。這種情況我的排查順序是先看供電模擬電源是否干凈DC-DC開關噪聲是否串進測量鏈路再看人體狀態(tài)手是不是在輕微抖動電極是不是沒有壓緊貼合然后用示波器觀察電極兩端波形確認是否存在低頻噪聲被周期采樣混疊最后看FIFO數(shù)據(jù)是否對齊有沒有發(fā)生序列配置錯誤導致數(shù)據(jù)錯位。人體阻抗本身有呼吸、心率引起的生理性波動通常在幾十毫歐到幾百毫歐量級。如果跳動幅度達到幾十歐姆基本可以斷定是接觸不良或電源噪聲而不是生理信號。解決辦法是確保電極接觸穩(wěn)定測量時要求用戶保持靜止同時在固件里對多次測量結(jié)果做滑動平均。4.2 激勵幅度匹配不當導致的波形失真另一個高頻問題是PGA削波。正弦激勵信號經(jīng)過電極后如果PGA增益設置過高信號會超出ADC輸入范圍波形頂部被削平ADC計算出的幅值會偏小相位也會異常。反過來增益設低了小信號淹沒在噪聲里測量結(jié)果同樣不可信。處理辦法是先用示波器或ADC內(nèi)部監(jiān)測通道看一版實際波形幅度再逐個提高增益檔位觀察測量值是否穩(wěn)定。如果確認削波就把增益降一檔或者適當降低激勵電壓。批量生產(chǎn)時不要迷信固定的增益配置同一批電極接觸狀態(tài)不同信號幅度會有差異比較穩(wěn)妥的做法是在序列里加一個幅度檢測步驟動態(tài)調(diào)整增益。4.3 相位異常與電極雙層電容兩線制在低頻段相位角比四線制明顯偏大這是電極接觸面和汗液形成的雙層電容造成的。雙層電容在高頻下是低阻抗低頻下是高阻抗和人體電阻串聯(lián)后會讓阻抗軌跡向右上方偏移。單純從軟件上很難完全消除這個效應。最實用的辦法是盡量使用Ag/AgCl這種低極化電極或者使用表面處理良好的不銹鋼電極同時在算法上把電極寄生電容等效為一個并聯(lián)模型通過校準數(shù)據(jù)修正。如果產(chǎn)品主要工作頻率在10kHz以上雙層電容的影響會小很多這也是很多體脂秤避開超低頻的原因。4.4 常見問題速查表我在調(diào)試過程中整理了一張速查表遇到問題可以先對照看一下?,F(xiàn)象可能原因排查方向讀數(shù)漂移、跳動電極接觸不良、電源噪聲、運動偽跡檢查電極壓緊程度去耦電容靜置測試高頻幅值偏小PGA削波、激勵電流不足降低增益提高DAC幅度檢查Rload低頻相位偏大電極雙層電容、接觸阻抗換電極低頻做校準修正FIFO數(shù)據(jù)錯位序列配置錯誤、FIFO深度不足核對序列結(jié)束標記調(diào)整FIFO閾值批次一致性差Rcal/Rload精度不足、校準流程缺失換0.1%電阻補上電自校準功耗過高序列采樣點數(shù)太多、MCU喚醒頻率過高縮短測量窗口降低重復測量次數(shù)4.5 如何驗證兩線制測量結(jié)果是否可信調(diào)試到最后一定要做一次客觀的驗證而不是只看讀數(shù)自洽。我的做法是把人體替換成精密電阻網(wǎng)絡比如1kΩ電阻并聯(lián)一顆幾十nF電容模擬組織的容性特征然后用AD5940測量結(jié)果和同頻點下的LCR表讀數(shù)做對比。幅值和相位都應該在可接受誤差范圍內(nèi)通常幅值誤差小于1%相位誤差小于1度這個系統(tǒng)就算合格。多頻掃頻時可以畫一張阻抗模值隨頻率變化的曲線理想情況下應該是平滑下降不能出現(xiàn)跳變或明顯毛刺。最后再拿真實人體重復測試多次計算變異系數(shù)CV。如果CV小于3%說明系統(tǒng)穩(wěn)定性已經(jīng)足夠進入產(chǎn)品化階段。最后再說一點個人體會。AD5940這顆芯片能力很強但官方例程面對的是普適場景兩線制產(chǎn)品想要拿到好的測量結(jié)果一定要把校準流程放在和硬件設計一樣重要的位置。先固定電阻調(diào)通鏈路再上人體實測最后加上三步校準這條路走下來說實話并不輕松但走通之后后面做多頻BIS、身體成分算法這些功能就都是水到渠成的事了。