小弟去年給外面公司設(shè)計了一臺智能型閥門伺服控制器,在本地幾個小站現(xiàn)場工作都沒問題,今年開始投入生產(chǎn)。上個月,突然接到公司電話,第一批發(fā)給煙臺、青島等外地十幾臺全部不能正常工作! 嚇出一身冷汗,這一批要是都有問題,損失可是將近10萬阿! 現(xiàn)場的工程師反映回來的問題是:在實驗室測試沒有任何問題,一接到現(xiàn)場的控制線上,立刻死機,無任何動作,復(fù)位后程序正常運行,卻無法接收控制信號的變化。因為實驗都沒問題,我懷疑是抗干擾的問題,但是不能很肯定,因為現(xiàn)場人員說只要出過一次死機問題的控制器,即使回到實驗室也無法正常工作,這應(yīng)該是又元器件損壞的表現(xiàn),當(dāng)然也有可能是程序跑飛后將EEPROM里面存儲的校準(zhǔn)參數(shù)沖掉了造成故障。
焦急的等待了一個星期,等到報廢的一批產(chǎn)品寄回西安。
控制信號是4-20mA信號,用于控制閥門從全關(guān)到全開。CPU用的是C8051F005。因為內(nèi)帶了12bit ADC,外圍的電路十分簡單。見圖1:
4-20mA信號通過R1(100歐),變成0.4-2V信號,可以被ADC直接采樣。C1的作用是濾波。實驗中采樣非常穩(wěn)定,加上我做了一個具有50Hz零點的數(shù)字濾波算法,對工頻干擾抑制效果相當(dāng)好。
樣品終于回來了,立刻拆開檢查,把仿真機接上,重新下載代碼,故障依舊,讀取EEPROM數(shù)據(jù),正常。松了一口氣,不像干擾造成死機。
加10mA信號測量100歐姆兩端電壓,只有0.13V!拆下R1,測得100.1歐姆正常。
再測ADC輸入引腳,居然對地短路??!
因為有100歐姆電阻接地,不可能是靜電或者串電燒壞的,猜測必然有大電流灌入。而100歐姆電阻是一個貼片,大電流應(yīng)該燒毀阿!十幾臺設(shè)備的R1不僅都沒有燒毀,連發(fā)黑的痕跡都沒有?,F(xiàn)場工程師反復(fù)測量過現(xiàn)場控制信號,完全正常,而且接入老式設(shè)備可以正常工作。
想了很久,終于想起來一個被忽略的細節(jié)! 因為許多設(shè)備不能停機,現(xiàn)場的控制信號是不允許斷電的,也就是說,4-20mA控制信號在接入控制器的插座之前就是一直帶電的。
我想到了電流信號開路,將會有比較高的電壓,(一般會限制在24V)而現(xiàn)場控制線有200~500米長,上面的電容也不小了。插頭相當(dāng)于一個開關(guān),接入前斷開R1回路,接入后接通R1回路。見圖2的等效電路
那么,在現(xiàn)場信號接入控制器的瞬間,相當(dāng)于一個充滿24V電壓的電容通過100歐姆電阻放電!波形如圖3,必然存在24V的瞬間尖峰。這個電壓將被直接加在MCU的ADC輸入口上。這么高的電壓會引起IO口內(nèi)部的瀉放回路得導(dǎo)通。而瀉放回路只能承受幾十毫安的電流,于是這個尖峰電壓將IO口的瀉放電路燒毀,對地呈現(xiàn)短路。這一次沖擊,引起MCU內(nèi)部錯誤,所以表現(xiàn)出第一次加信號死機。ADC輸入口燒毀,所以以后無法正確讀取控制信號的值。
雖然濾波電容C1能起到一定的緩沖作用,但畢竟是一個獨石電容,高頻內(nèi)阻很大,對尖峰削弱作用不是很明顯。
在西安做實驗為了方便,現(xiàn)場選的離控制室很近,十米不到,所以這個問題沒有被發(fā)現(xiàn)。而發(fā)往外地的一批設(shè)備都離控制室很遠。所以無一例外的全部燒毀。
改進后的電路如圖4,增加了一個47K的電阻R2,即使存在尖峰,也被R2C2吸收了。即使仍有殘留電壓,有R2限流,單片機IO口的瀉放回路也是完全可以承受的
因為少加了一只1分錢的電阻,造成了數(shù)萬元的損失。雖然公司沒有追究我的責(zé)任,但是,這一教訓(xùn)卻讓我感受深刻:作為一個電子工程師,嚴(yán)謹(jǐn)?shù)脑O(shè)計思路和豐富的現(xiàn)場經(jīng)驗都是必不可少的。很多決定設(shè)計成敗的地方并不是技術(shù)含量,而是細節(jié)!