事情的起因是我做了一個(gè)小玩意用到了INA226這個(gè)芯片,這個(gè)芯片是一個(gè)經(jīng)典電流檢測(cè)芯片,有I2C接口直接讀取電流。按道理來說這個(gè)很簡單,電路一畫,代碼一讀就可以了,但是我調(diào)試的時(shí)候發(fā)現(xiàn)讀出來的電流始終比實(shí)際大大約10%。
1. 原理圖
原理圖如下:一個(gè)10mR的采樣電阻+INA226外圍電路。
2. PCB布局
PCB布局如下,采用開爾文接法減小誤差。
3. 調(diào)試過程
發(fā)現(xiàn)電流偏大后,在輸入1A的電流條件下,測(cè)量采樣電阻兩端的壓差,發(fā)現(xiàn)是10.1mV,稍微偏大,但是不至于大10%。此時(shí)懷疑是否是芯片自身問題或者I2C代碼有問題導(dǎo)致數(shù)據(jù)轉(zhuǎn)換出現(xiàn)誤差。 手里有一個(gè)某寶買的INA226模塊,使用同樣的代碼來驅(qū)動(dòng),發(fā)現(xiàn)也是偏大10%左右,這就很奇怪了,這個(gè)芯片是很常用的芯片,網(wǎng)上也沒有相關(guān)的采樣偏大的說法,現(xiàn)在只能懷疑是我I2C代碼有問題了,因此使用一個(gè)I2C調(diào)試模塊驅(qū)動(dòng)INA226,發(fā)現(xiàn)無論是我自己板子還是某寶的INA226模塊,都還是偏大10%左右。排除了I2C代碼的問題,現(xiàn)在一時(shí)不知道問題在哪了。
4. 問題轉(zhuǎn)機(jī)
本來已經(jīng)放棄這個(gè)問題了,因?yàn)橐蟛桓撸浖?zhǔn)一下也能用,但是在看PCB時(shí)發(fā)現(xiàn)了一個(gè)細(xì)節(jié),INA226的IN+引腳還連接了其它地方!!!
這個(gè)地方連接上后,等效電路如下圖,此時(shí)INA+和INA-之間的電壓相當(dāng)于采樣電阻Rs+線路阻抗r之和的壓降,因此理論上采樣電壓就是偏大。再通入1A電流,直接測(cè)INA226的IN+和IN-之間的壓差,發(fā)現(xiàn)是11mV,確實(shí)偏大了10%。
后割掉這個(gè)不應(yīng)該有的連線,再次復(fù)測(cè),電流就正常了,問題解決。
5. 某寶模塊問題在哪?
某寶模塊如下圖,電流輸入端子直接連在采樣電阻兩端,沒有采用開爾文連接,這個(gè)誤差倒是也沒那么大,但是它離譜的地方是INA226的IN+和IN-引腳直接接在輸入端子兩端,那么很顯然等效電阻相當(dāng)于采樣電阻Rs+r1+r2的總阻抗,這是導(dǎo)致其電流偏大的原因,而直接將輸入電流加在采樣電阻兩端時(shí),電流就正常了。
6. 總結(jié)
這次問題出現(xiàn)在PCB布局順手拉的一根線,而造成調(diào)試過程曲折的原因一是測(cè)試壓差的時(shí)候只測(cè)采樣電阻兩端壓差,沒有直接測(cè)INA226的兩個(gè)輸入引腳的壓差,造成誤判,另外還有某寶買的模塊同樣的走線問題導(dǎo)致的誤判,因此PCB布局與調(diào)試還是要細(xì)心,不能想當(dāng)然。