本次與大家分享的是世健和ADI聯(lián)合舉辦的《世健·ADI工業(yè)趴:放飛思路,解封你的超能力》主題活動的一等獎文章:《LTC2991在嚴(yán)苛環(huán)境電源控制領(lǐng)域的應(yīng)用與問題分享》。
作者:qinyunti
01
前言
1.1背景
在各類工業(yè)控制等應(yīng)用領(lǐng)域,ADC模擬量采集是重要的一環(huán),尤其是嚴(yán)苛環(huán)境下的ADC采集非常重要。一般模擬量采集與應(yīng)用涉及信號采集-信號處理-執(zhí)行決策等幾個方面。
在本人參與的某個項目中,就涉及模擬量的采集與應(yīng)用。信號采集是整個系統(tǒng)的基本保障,只有可靠、穩(wěn)定、準(zhǔn)確的采集信號,才能為后續(xù)模塊提供正確的輸入信息,才能執(zhí)行后續(xù)正確的信號處理,執(zhí)行決策過程。本文在此分享LTC2991在嚴(yán)苛環(huán)境電源控制領(lǐng)域的案例。
在該系統(tǒng)中信號采集主要包括模擬量、數(shù)字量、其他通訊協(xié)議的信息量等。其中某些應(yīng)用模擬量甚至幾乎占了整個輸入的90%。而模擬量采集,全部使用了LTC2991進(jìn)行,包括溫度、電壓、電流等信號的采集。每個電源管理單元,都需要采集幾十路模擬信號,整個系統(tǒng)使用了二十多片LTC2991采集了100多路模擬信號。
如此重要的信號采集部分,得益于LTC2991本身的性能和可靠性,和我們系統(tǒng)平臺的可靠性設(shè)計,雖然過程有一些問題,但是都解決了,最終結(jié)果是完美的。
可以說LTC2991可靠的、高精度的信號采集為整個能源管理系統(tǒng)的可靠運行打下了重要的基礎(chǔ),而能源管理系統(tǒng)是整個系統(tǒng)的生命保障系統(tǒng),所以LTC2991也可以說是重中之重,為整個系統(tǒng)的可靠運行立下了汗馬功勞。
所以本文也分享下該過程,尤其是LTC2991在嚴(yán)苛環(huán)境平臺上的應(yīng)用,以及其亮眼的表現(xiàn)。當(dāng)然也分享發(fā)現(xiàn)的問題和解決的過程。
1.2LTC2991簡介
LTC2991是一款8通道,用于電壓,電流,溫度測量等應(yīng)用場景的ADC芯片,具備以下特征:
? 測量四個遠(yuǎn)程二極管溫度
?0.7℃(典型)精度,0.06°C分辨率
?1℃(類型)內(nèi)部溫度傳感器
?無需串聯(lián)電阻
?14位ADC測量電壓/電流
?PWM溫度輸出
?3V至5.5V電源工作電壓
?八個可選地址
?內(nèi)部10ppm/℃參考電壓
?V1至V8輸入ESD額定為6kV HBM
?16-Lead MSOP封裝
?適用于亞毫伏電壓分辨率、1%電流測量和1℃溫度精度或三者任意組合的系統(tǒng)
?支持單端和差分輸入
?IIC接口,8個可配地址,可以一個IIC接口掛多個LTC2991.
?LTC2991I工業(yè)級工作溫度范圍–40°C to 85°C
從上可以看出,LTC2991具備高溫度穩(wěn)定性,和靜電防護(hù)能力,這都是高可靠性的保證。同時精度性能也非常好。
典型應(yīng)用圖和PIN如下,更詳細(xì)的參數(shù)和應(yīng)用可以參考手冊。
02
LTC2991在嚴(yán)苛環(huán)境領(lǐng)域的應(yīng)用
在我們的系統(tǒng)中,LTC2991主要用于電壓,電流,溫度等模擬量信號的采集。
使用了多片LTC2991,配置為不同的地址,使用單端模式。
得益于LTC2991的高集成度,外圍器件電路也比較簡單,模擬前端使用電壓跟隨器做阻抗匹配,然后單端接入LTC2991進(jìn)行采集即可,ADDR配置為不同的地址,一條IIC總線最多可接8片LTC2991,電源增加一個濾波電容即可。
簡單的電路,節(jié)省了BOM成本,遵循“簡單即是美”的設(shè)計哲學(xué),少的器件,少的電路,相對的也減少了出問題的可能性。我們可以使用低成本的冗余來提高可靠性,來替代復(fù)雜的設(shè)計實現(xiàn)的高可靠性,這也是選用LTC2991等經(jīng)過驗證可靠的器件的原因。其典型應(yīng)用原理圖參考上圖和手冊說明。
03
應(yīng)用中問題與解決過程分享
LTC2991的操作很簡單,就是通過IIC接口,配置寄存器,讀寄存器值。但是在嚴(yán)苛環(huán)境應(yīng)用領(lǐng)域不僅僅是功能正確即可,更重要的是高可靠性。所以我們進(jìn)行了大量的環(huán)境試驗,性能測試,壓力測試等。當(dāng)然這個過程是持久的,也不是完全沒有問題的,本文主要篇幅其實也希望是在這一部分,即問題的發(fā)現(xiàn)與解決上,只有發(fā)現(xiàn)每一個可能存在問題的點才能保證可靠性。
分享一個問題比不分享問題更具備價值,告訴別人怎么避免一個坑,比告訴別人怎么做無問題更重要。這也是本文分享的一個重要意義。
以下就是偶爾出現(xiàn)采集錯誤的問題的整個處理過程的分享。
3.1現(xiàn)象與初步分析
某塊板的LT2991的某些通道采集偶爾出現(xiàn)異常值。高低溫測試時數(shù)據(jù)統(tǒng)計如下現(xiàn)象:
在高低溫的幾天,對測試數(shù)據(jù)進(jìn)行分析,統(tǒng)計出了錯誤信息,錯誤值總共出現(xiàn)了12次,其中11次是在輸入電壓,1次是預(yù)留的電流采集。分別對應(yīng)是地址為0x90 的LTC2991第1路采集,以及地址為0x90的L2991第1路采集(本次的程序是一次性采集8路值)。該兩路都無輸入正確值應(yīng)該是0。
對數(shù)據(jù)進(jìn)行統(tǒng)計分析,可以看出,出現(xiàn)問題不限定于某一塊芯片,但是出現(xiàn)問題的都是第一路。(對于隨機(jī)問題,大量的統(tǒng)計數(shù)進(jìn)行分析,尋找規(guī)律是一個通常的定位方法,后續(xù)也會驗證該現(xiàn)象,該現(xiàn)象也會成為問題的佐證)。
另外,在之前其他板測試時現(xiàn)象與上述現(xiàn)象一致,但是出現(xiàn)問題的不都是第一路,也有其他路的。
但是之前的程序是一次讀取1路值,與本次程序一次讀取8路值不一樣(該不同操作方式導(dǎo)致的不同現(xiàn)象也會成為問題的佐證)。
這里的不同作為后面詳細(xì)分析的一個線索,后續(xù)詳細(xì)描述(見3.1)。
3.2問題復(fù)現(xiàn)分析
3.2.1 問題初步分析
從現(xiàn)象倒推,考慮了幾種可能存在的原因(考慮傳遞路徑:源錯誤-處理錯誤-中間傳輸過程錯誤)。畫出錯誤路徑魚骨圖倒推,懷疑到以下路徑:
1. IIC通訊問題,通訊錯誤導(dǎo)致采集錯誤。
2. ADC對應(yīng)通道電壓本身存在干擾,所以采集的是干擾異常值。
3. LTC2991本身的某些原因輸出異常值。
對于1和2可以通過邏輯分析儀和示波器抓取信號進(jìn)行直接驗證,對于3不能直接驗證,我們通過一些其他線索和信息進(jìn)行交叉驗證。
從現(xiàn)象倒推原因是分析問題的通常思路,原理上存在的可能都不能放過,都需要去驗證排除。錯誤魚骨圖原理分析也是常用的方法。
3.2.2 設(shè)計測試環(huán)境
有了初步的分析和懷疑,如何設(shè)計驗證測試環(huán)境是重要的一環(huán),如何設(shè)計軟件、硬件,去發(fā)現(xiàn)錯誤、捕獲錯誤、記錄錯誤、加快錯誤出現(xiàn)的概率等等都是重要考慮點。我們從軟硬件兩個角度去考慮。
3.2.2.1硬件測試環(huán)境設(shè)計
對于3.2.1提到的1.和2.可以通過示波器和邏輯分析儀進(jìn)行直接的驗證。
對于1)使用示波器直接監(jiān)控對應(yīng)的電壓采集點(即一.現(xiàn)象中,分壓點輸入電壓),為了保證能直接和LTC2991的采集值對比,所以直接監(jiān)控了LTC2991芯片對應(yīng)的引腳,同時也監(jiān)控了前段分壓之前的電壓點。
對于2)用邏輯分析儀監(jiān)控IIC的SCL和SDA。為了排除線上傳輸?shù)膯栴}(因為中間有緩沖芯片),我們將LT2991芯片引腳端和控制芯片引腳端的SCL SDA都引出。
對于3)沒有直接驗證手段只能通過其他信息分析,后面再詳敘。
3.2.2.2軟件測試環(huán)境設(shè)計
方式1:按照正常運行程序,一次讀取一個芯片的8路,循環(huán)采集4個芯片,遇到異常值時停止打印,這樣邏輯分析儀最后監(jiān)控到的數(shù)據(jù)就是異常時的IIC數(shù)據(jù)。采集間隔約200mS。
打印如下(第一列為運行時間,grp[x]代表第x塊芯片,后面是8個通道數(shù)據(jù),每個通道2字節(jié)):
邏輯分析儀監(jiān)控如下:
方式2:只采集出錯較多的分壓點輸入電壓對應(yīng)的芯片,也是一次讀取8路。打印如下:采集間隔約1.75mS。
邏輯分析儀記錄如下:
3.2.3 測試分析過程
根據(jù)前面的測試環(huán)境設(shè)計分別驗證。
3.2.3.1 確認(rèn)信號質(zhì)量
示波器查看IIC和電壓監(jiān)控點波形正常。
IIC波形
電壓監(jiān)控點 0V
邏輯分析儀記錄IIC總線數(shù)據(jù)正常。控制芯片端和LT2991端時序一樣,說明中間電路沒影響,正常。
控制芯片和LT2991端IIC數(shù)據(jù) 時序一致無相位差
3.2.3.2 排除ADC對應(yīng)通道電壓本身存在干擾的問題
測試過程:用示波器對分壓點輸入電壓對應(yīng)LT2991芯片引腳端進(jìn)行監(jiān)控。設(shè)置上升沿約100mV觸發(fā)。
實際采集到異常值,打印停止時,示波器并沒有觸發(fā)。說明采集到異常值時對應(yīng)通道電壓本身沒有干擾,可以排除該問題。平常用示波器監(jiān)控也沒發(fā)現(xiàn)波形有異常,但是偶爾會出現(xiàn)異常干擾(見后面附圖)該現(xiàn)象與本次問題無關(guān)需要硬件去分析是否有問題)。
在監(jiān)控過程中有出現(xiàn)示波器觸發(fā)的情況,但是此時采集沒有異常。波形如下:
另外發(fā)現(xiàn)在設(shè)備所在實驗桌附近的插座插拔設(shè)備,開關(guān)插排都有干擾,如下:
3.2.3.3 排除IIC通訊問題
總共測試了兩天,抓取到了5次異常采樣值。
每一次的打印值和邏輯分析儀的記錄值都是一樣的說明,控制器和LT2991的通訊本身沒問題??偩€上的數(shù)據(jù)和控制器采集的確實是一樣的,異常值確實就是LT2991輸出的值。
如下是五次中的一次采集到異常時的記錄(另外四次也是一樣控制器采集值和邏輯分析儀一致)。
(控制器采集值 80 ff 80 2e ff ff ff ff ff ff 80 08 ff ff ff ff)
(邏輯分析儀記錄值80 ff 80 2e ff ff ff ff ff ff 80 08 ff ff ff ff (注邏輯分析最后一個字節(jié)顯示R實際手動解析也是0xFF)
另外從軟件上考慮,由于此時是讀數(shù)據(jù),SDA為讀狀態(tài),所以也不可能對總線產(chǎn)生干擾,另一方面LTC2991的采集是在一個線程運行不存在其他地方操作該引腳,資源也嚴(yán)格檢查不存在引腳誤操作的情況。
綜上異常值只可能是LTC2991確實輸出的值就是這個異常值。
3.2.3.3 分析LTC2991為什么會輸出異常值
根據(jù)前面的五次測試記錄(每一次都是2h內(nèi)出現(xiàn)),統(tǒng)計如下:
注: 采樣值為16位,bit15=1表示數(shù)據(jù)有效否則表示數(shù)據(jù)無效。bit14表示符號位,實際上bit0-bit14即補(bǔ)碼形式數(shù)值。由于沒有接外部輸入,所以采樣值應(yīng)該為0。即80 00(0),ff fe(-2) ff ff(-1)都是有效的(實際采樣會在0左右波動)。
而ff 00(-255) 80 ff(255) 80 fe(254)是異常值,而7f ff bit15=0為無效值。
根據(jù)以上異常值反推是否和記錄對應(yīng):
-255 255 254(程序中負(fù)數(shù)會轉(zhuǎn)為正數(shù)處理),即按照255計算。
根據(jù)程序中的換算公式:
預(yù)留的采集電流:255*0.778-15=183.39/20 + 0.5 取整=9
由于遞減放大了20倍所以顯示20*9=180
分壓點輸入電壓:255*6.7984=1733.592 /200 + 0.5取整=9
由于遞減放大了200倍所以顯示20*9=1800
上述和一.現(xiàn)象看到的數(shù)據(jù)是對應(yīng)的。
從以上可以總結(jié)幾點規(guī)律:
1.間隔時間長200mS間隔采樣時,基本無無效數(shù)據(jù),間隔時間長1.75mS采樣時,無效數(shù)據(jù)變多,這可能和LTC2991的轉(zhuǎn)換時間和讀間隔有關(guān),根據(jù)LTC2991手冊描述,轉(zhuǎn)換時間約1.5mS 最大1.8mS。
2. 在1.75mS間隔采集時,異常值前都是無效值,而200mS采集無異常值。
3. 異常值不是隨機(jī)值,而是有效值的高低字節(jié)的組合。
通過上面整理分析猜測如下:
對第五次異常值進(jìn)行分析,上一次讀取到的是無效值7f ff。本次讀到的是異常值80 fe。
猜測:7f ff讀到無效值時應(yīng)該是LTC2991正在更新數(shù)據(jù)ff fe,由于這個沖突所以返回了無效值7f ff。
而下一次新的數(shù)據(jù)0x8000 正好在更新時,又進(jìn)行了讀,但是本次是在更新高字節(jié)0x80后鎖定數(shù)據(jù),沒有返回?zé)o效值,而是返回了本次的高字節(jié)和上一次的低字節(jié).0x80 fe。
第一次到第4次異常值也可以按照該猜測合理解釋。
按照手冊描述,在讀操作時,LTC2991會鎖定數(shù)據(jù)寄存器,直到讀完成。并且高低字節(jié)是同步同時更新的。對于具體什么時候鎖定數(shù)據(jù)寄存器,比如是接收到讀命令后的第一個CLK邊沿,還是要等下一個字節(jié)(比如我們猜測的,下一個字節(jié)后鎖定),手冊沒有描述,不得而知。什么時候會返回?zé)o效值手冊也沒有描述,但是從上述記錄讀周期和更新周期差不多時,也就是讀時正在更新數(shù)據(jù)可能出現(xiàn)概率很大。
另外對于高低字節(jié)同時更新,我們根據(jù)實際的測試懷疑也可能并不是的,這些都是猜測,但是從測試現(xiàn)象和后面的修改驗證都能很好的解釋這個猜測。
根據(jù)上述分析,猜測出現(xiàn)異常的情況如下:
3.3 現(xiàn)象與實際測試的相互印證
3.3.1 連續(xù)讀8路時,為什么只有第一路出現(xiàn)問題;而每次讀一路時,其他路也有問題
根據(jù)2.3.3的分析,一次讀8通道時問題只會出現(xiàn)在讀命令后的第一個數(shù)據(jù),因為鎖定延遲最多只會出現(xiàn)一個字節(jié),讀完第一個通道后,后面的通道數(shù)據(jù)寄存器肯定已經(jīng)完成了鎖定。
而每次讀一路時,每次都是一次新的讀,每一次都是讀命令后的第一個數(shù)據(jù),所以都有可能出現(xiàn)。
3.3.2 為什么沒接輸入源時有異常值,而接入輸入源的沒有發(fā)現(xiàn)有異常值
根據(jù)前面的測試,我們發(fā)現(xiàn)有異常值的都是實際沒接輸入源的,也就是理論上應(yīng)該是0的。
由于輸入為0,實際采集值在0附近可能是-1(ff ff)也可能是0 (80 00),如果上一次是ffff本次是8000,按照上述分析的異常,讀取到本次的高字節(jié)80。上次的低字節(jié)ff就是80ff(255)。這種概率是比較高的,因為0的左右差1都是突變。
255和正常值0就差別比較大一眼就能發(fā)現(xiàn)了。
如果接了輸入源,那么就會是一個離0比較遠(yuǎn)的正數(shù),那么獲取的本次的高字節(jié)和上次的低字節(jié)組合成突變的值概率會小一些(但是也會存在比如01ff和0200這種在低字節(jié)進(jìn)位的情況下,組合可能是0100或02ff也會差255)。但是較0的左右,0不管左或者右都容易突變,正數(shù)只在低字節(jié)為0xff左右會突變,概率小很多。并且采樣值的抖動一般都只有幾個數(shù)值。
所以只有在值的低字節(jié)接近0xFF時才容易突變,比如0xfe,0x00等在0xff左右變化。概率會小很多。
另一方面實際也沒具體去統(tǒng)計其他有輸入源的數(shù)據(jù)的異常值,因為相對于0值的異常不是一眼就能看到,只是初略看遙測數(shù)據(jù)沒有看到明顯異常值。
所以這個現(xiàn)象其實也和猜測相符。
3.3.3 為什么每次值都是1800 或180
根據(jù)2.3.3的分析和實際計算,顯示值1800和180實際對應(yīng)的LTC2991的采樣值就是255左右。
而對于實際無輸入0v的正常值為0左右,比如ff ff(-1) 和08 00(0),如果按照前一次值和本次值的高低字節(jié)取,出現(xiàn)的錯誤值就是ff 00 (-255)或者80 ff(255)由于程序取了絕對值所以都是255所有,換算就是180(放大20倍)或1800(放大200倍)了。實際我們統(tǒng)計的也都是實際值是0值的異常值,根據(jù)3.2的分析,異常突變就是255左右所以換算出來就是1800或者180。
3.3.4 為什么間隔200mS采集沒有無效值,間隔1.75mS 無效值較多
因為LTC2991轉(zhuǎn)換時間約為1.5mS,而間隔1.75mS去讀,很可能讀的時候LTC2991正在更新新的數(shù)據(jù)。由于LTC2991轉(zhuǎn)換周期和讀間隔周期差不多,碰上的概率就會大很多。而間隔200mS去讀這種概率會小很多。
無效數(shù)據(jù)的出現(xiàn)和LTC2991正在更新數(shù)據(jù)時單片機(jī)去讀數(shù)據(jù)有無關(guān)系,手冊上沒有明確說明,但是從測試各方看應(yīng)該是有關(guān)系的,比如四.修改后的驗證應(yīng)該也能說明有這種關(guān)聯(lián)。
3.4 修改驗證
根據(jù)2.3.3的分析,如果修改讀的邏輯,即在第一個通道數(shù)據(jù)前多讀幾個字節(jié),讓LTC2991在讀第一個通道數(shù)據(jù)前就確保鎖定數(shù)據(jù)寄存器,那么就可以避免該問題。
如下圖所示,在8通道數(shù)據(jù)前讀其他字節(jié),這樣LTC2991在接收到讀命令0x91之后一個字節(jié)就會完成鎖定,后面讀8通道數(shù)據(jù)時肯定是鎖定的數(shù)據(jù)。避免了讀數(shù)據(jù)時數(shù)據(jù)寄存器正在更新導(dǎo)致讀錯的問題。
連續(xù)測試兩次,一次連續(xù)運行5小時,一次連續(xù)運行了40多個小時均無錯誤,按照之前的五次測試,都是2個小時內(nèi)就出現(xiàn)了錯誤:可以確定問題得到解決。
修改后同時也發(fā)現(xiàn)沒有了無效值,說明無效值的出現(xiàn)應(yīng)該與讀數(shù)據(jù)時正在更新數(shù)據(jù)有關(guān)或者跟鎖存數(shù)據(jù)邏輯有關(guān),與之前的現(xiàn)象印證。
3.5 總結(jié)與結(jié)論
1.對比邏輯分析儀抓取到的實際數(shù)據(jù)與采集到的數(shù)據(jù),完全一致;抓取到的實際數(shù)據(jù)換算后與看到的值一致,說明問題得到復(fù)現(xiàn),并且和LTC2991的IIC通訊無問題。通過示波器確認(rèn)異常值也不是由于電壓有干擾導(dǎo)致的。
2. 根據(jù)前面的分析,猜測很大概率是讀數(shù)據(jù)時LTC2991的數(shù)據(jù)寄存器高低字節(jié)鎖定邏輯有缺陷導(dǎo)致的,即存在讀數(shù)據(jù)時讀到本次結(jié)果的高字節(jié)和上次結(jié)果的低字節(jié)的情況,導(dǎo)致值異常。
3.針對2.的原因,修改采集方法(一次性讀出所有寄存器,使得讀數(shù)據(jù)寄存器之前有足夠時間鎖定數(shù)據(jù)寄存器),修改后通過長時間驗證(連續(xù)運行40h以上),問題沒有再現(xiàn)(修改前每次都是2h就出現(xiàn)問題),可以確認(rèn)問題得到解決。
04
總結(jié)
對于嚴(yán)苛環(huán)境領(lǐng)域應(yīng)用,對問題要零容忍的,必須解決所有的問題,并且是找到根本原因徹底解決,而不是消除現(xiàn)象,所以本文重點放在了解決問題上。而前面的應(yīng)用實際不涉及太復(fù)雜的技術(shù),一切用結(jié)果說話,從上述應(yīng)用結(jié)果來說,LTC2991展現(xiàn)了其性能和可靠性,這也是ADI在模擬領(lǐng)域絕對的權(quán)威的展現(xiàn)。
1. LTC2991完全滿足在嚴(yán)苛環(huán)境應(yīng)用平臺上的可靠應(yīng)用,通過上述案例已經(jīng)得到了非常好的驗證。
2. LTC2991的除了上述分享的問題外,沒有發(fā)現(xiàn)其他問題,瑕不掩瑜,確定問題原因后可以簡單的方式避免,同時知道了原理也可以比較放心的使用了。
-
信號
+關(guān)注
關(guān)注
11文章
2780瀏覽量
76626 -
電源控制
+關(guān)注
關(guān)注
2文章
135瀏覽量
26589 -
工業(yè)控制
+關(guān)注
關(guān)注
37文章
1442瀏覽量
85784
發(fā)布評論請先 登錄
相關(guān)推薦
評論