搞過(guò)產(chǎn)品的朋友都有體會(huì),,一個(gè)設(shè)計(jì)看似簡(jiǎn)單,硬件設(shè)計(jì)和代碼編寫(xiě)很快就搞定,,但在調(diào)試過(guò)程中卻或多或少的意外,,這些都是抗干擾能力不夠的體現(xiàn)。
下面討論一下如何讓你的設(shè)計(jì)避免走彎路:
抗干擾體現(xiàn)在2個(gè)方面,,一是硬件設(shè)計(jì)上,,二是軟件編寫(xiě)上。
這里重點(diǎn)提醒:在MCU設(shè)計(jì)中主要抗干擾設(shè)計(jì)是在硬件上,,軟件為輔,。因?yàn)镸CU的計(jì)算能力有限,所以要在硬件上花大工夫,。
看看干擾的途徑:
1:干擾信號(hào)干擾MCU的主要路徑是通過(guò)I/O口,,一是影響了MCU的數(shù)據(jù)采集,二是影響內(nèi)部其它寄存器,。
解決方法:后面討論,。
2:電源干擾:MCU雖然適應(yīng)電壓較寬(3-5。5V),,但對(duì)于電源的波動(dòng)卻很敏感,,比如說(shuō)MCU可以在3V電壓下穩(wěn)定工作,但卻不能在電壓在3V-5,。5V波動(dòng)的情況下穩(wěn)定工作,。
解決方法:用電源穩(wěn)壓塊,做好電源的濾波等工作,,提示:一定要在電源旁路并上0,。1UF的瓷片電容來(lái)濾除高頻干擾,因?yàn)殡娊怆娙輰?duì)超過(guò)幾十KHZ的高頻干擾不起作用,。
3:上下電干擾:但每個(gè)MCU系統(tǒng)在上電時(shí)候都要經(jīng)過(guò)這樣一個(gè)過(guò)程,,所以要尤其注意。
MCU雖然可以在3V電壓下穩(wěn)定工作,,但并不是說(shuō)它不能在3V以下的電壓下工作,,當(dāng)然在如此低的電壓下MCU是超不穩(wěn)定狀態(tài)的。在系統(tǒng)加電時(shí)候,,系統(tǒng)電源電壓是從0V上升到額定電壓的,,比如當(dāng)電壓到2V時(shí)候,MCU開(kāi)始工作了,,但這時(shí)是超不穩(wěn)定的工作,,極容易跑飛。
解決方法:1讓MCU在電源穩(wěn)定后才開(kāi)始工作,。PIC在片內(nèi)集成了POR(內(nèi)部上電延時(shí)復(fù)位),,這功能一定要在配置位中打開(kāi)。
外部上電延時(shí)復(fù)位電路,。有多種形式,,低成本的就是在復(fù)位腳接個(gè)阻容電路。高成本的是用專用芯片,。這方面的資料特多,,到處都可以查找。
最難排除的就是上面第一種干擾,,并且干擾信號(hào)隨時(shí)可以發(fā)生,,干擾信號(hào)的強(qiáng)度也不盡相同。
但它們也有相同點(diǎn):干擾信號(hào)也遵循歐姆定律,,干擾信號(hào)偶合路徑無(wú)非是電磁干擾,,一是電火花,二是磁場(chǎng)。
其中干擾最厲害的是電火花干擾,,其次是磁場(chǎng)干擾,。電火花干擾表現(xiàn)場(chǎng)合主要是附近有大功率開(kāi)關(guān)、繼電器,、接觸器,、有刷電機(jī)等。磁場(chǎng)干擾表現(xiàn)場(chǎng)合主要是附近有大功率的交流電機(jī),、變壓器等,。
解決方法:第一點(diǎn):也是最經(jīng)典的,就是在PCB步線和元件位置安排上下工夫,,這中間學(xué)問(wèn)很多,,說(shuō)幾天都說(shuō)不完^^。
二:綜合考慮各I/O口的輸入阻抗,,采集速率等因素設(shè)計(jì)I/O口的外圍電路,。
一般決定一個(gè)I/O口的輸入阻抗有3種情況:
A:I/O口有上拉電阻,上拉電阻值就是I/O口的輸入阻抗,。
一般大家都用4K-20K電阻做上拉,,(PIC的B口內(nèi)部上拉電阻約20K)。
由于干擾信號(hào)也遵循歐姆定律,,所以在越存在干擾的場(chǎng)合,選擇上拉電阻就要越小,因?yàn)楦蓴_信號(hào)在電阻上產(chǎn)生的電壓就越小,。
由于上拉電阻越小就越耗電,所以在家用設(shè)計(jì)上,上拉電阻一般都是10-20K,,而在強(qiáng)干擾場(chǎng)合上拉電阻甚至可以低到1K,。
(如果在強(qiáng)干擾場(chǎng)合要拋棄B口上拉功能,一定要用外部上拉,。)
B:I/O口與其它數(shù)字電路輸出腳相連,,此時(shí)I/O口輸入阻抗就是數(shù)字電路輸出口的阻抗,一般是幾十到幾百歐,。
可以看出用數(shù)字電路做中介可以把阻抗減低到最理想,,在許多工業(yè)控制板上可以看見(jiàn)大量的數(shù)字電路就是為了保證性能和保護(hù)MCU的。
C:I/O口并聯(lián)了小電容,。
由于電容是通交流阻直流的,,并且干擾信號(hào)是瞬間產(chǎn)生,瞬間熄滅的,,所以電容可以把干擾信號(hào)濾除,。但不好的是造成I/O口收集信號(hào)的速率下降,比如在串口上并電容是絕不可取的,,因?yàn)殡娙輹?huì)把數(shù)字信號(hào)當(dāng)干擾信號(hào)濾掉,。
對(duì)于一些檢測(cè)開(kāi)關(guān),、干簧管、霍爾元件之類的是可以并電容的,,因?yàn)檫@些開(kāi)關(guān)量的變化是不可能有很高的速率的,,并一個(gè)小電容對(duì)信號(hào)的采集是沒(méi)任何影響的。