搞過產品的朋友都有體會,一個設計看似簡單,硬件設計和代碼編寫很快就搞定,但在調試過程當中卻或多或少的意外,這些都是抗干擾能力不夠的體現。性能
下面討論一下如何讓你的設計避免走彎路:設計
抗干擾體如今2個方面,一是硬件設計上,二是軟件編寫上。調試
這裏重點提醒:在MCU設計中主要抗干擾設計是在硬件上,軟件爲輔。由於MCU的計算能力有限,因此要在硬件上花大工夫。產品
看看干擾的途徑:軟件
1:干擾信號干擾MCU的主要路徑是經過I/O口,一是影響了MCU的數據採集,二是影響內部其它寄存器。配置
解決方法:後面討論。硬件
2:電源干擾:MCU雖然適應電壓較寬(3-5.5V),但對於電源的波動卻很敏感,好比說MCU能夠在3V電壓下穩定工做,但卻不能在電壓在3V-5。5V波動的狀況下穩定工做。方法
解決方法:用電源穩壓塊,作好電源的濾波等工做,提示:必定要在電源旁路並上0。1UF的瓷片電容來濾除高頻干擾,由於電解電容對超過幾十KHZ的高頻干擾不起做用。數據採集
3:上下電干擾:但每一個MCU系統在上電時候都要通過這樣一個過程,因此要尤爲注意。數據
MCU雖然能夠在3V電壓下穩定工做,但並非說它不能在3V如下的電壓下工做,固然在如此低的電壓下MCU是超不穩定狀態的。在系統加電時候,系統電源電壓是從0V上升到額定電壓的,好比當電壓到2V時候,MCU開始工做了,但這時是超不穩定的工做,極容易跑飛。
解決方法:1讓MCU在電源穩定後纔開始工做。PIC在片內集成了POR(內部上電延時復位),這功能必定要在配置位中打開。
外部上電延時復位電路。有多種形式,低成本的就是在復位腳接個阻容電路。高成本的是用專用芯片。這方面的資料特多,處處均可以查找。
最難排除的就是上面第一種干擾,而且干擾信號隨時能夠發生,干擾信號的強度也不盡相同。
但它們也有相同點:干擾信號也遵循歐姆定律,干擾信號偶合路徑無非是電磁干擾,一是電火花,二是磁場。
其中干擾最厲害的是電火花干擾,其次是磁場干擾。電火花干擾表現場合主要是附近有大功率開關、繼電器、接觸器、有刷電機等。磁場干擾表現場合主要是附近有大功率的交流電機、變壓器等。
解決方法:第一點:也是最經典的,就是在PCB步線和元件位置安排上下工夫,這中間學問不少,說幾天都說不完^^。
二:綜合考慮各I/O口的輸入阻抗,採集速率等因素設計I/O口的外圍電路。
通常決定一個I/O口的輸入阻抗有3種狀況:
A:I/O口有上拉電阻,上拉電阻值就是I/O口的輸入阻抗。
通常你們都用4K-20K電阻作上拉,(PIC的B口內部上拉電阻約20K)。
因爲干擾信號也遵循歐姆定律,因此在越存在干擾的場合,選擇上拉電阻就要越小,由於干擾信號在電阻上產生的電壓就越小。
因爲上拉電阻越小就越耗電,因此在家用設計上,上拉電阻通常都是10-20K,而在強幹擾場合上拉電阻甚至能夠低到1K。
(若是在強幹擾場合要拋棄B口上拉功能,必定要用外部上拉。)
B:I/O口與其它數字電路輸出腳相連,此時I/O口輸入阻抗就是數字電路輸出口的阻抗,通常是幾十到幾百歐。
能夠看出用數字電路作中介能夠把阻抗減低到最理想,在許多工業控制板上能夠看見大量的數字電路就是爲了保證性能和保護MCU的。
C:I/O口並聯了小電容。
因爲電容是通交流阻直流的,而且干擾信號是瞬間產生,瞬間熄滅的,因此電容能夠把干擾信號濾除。但很差的是形成I/O口收集信號的速率降低,好比在串口上並電容是毫不可取的,由於電容會把數字信號當干擾信號濾掉。
對於一些檢測開關、幹簧管、霍爾元件之類的是能夠並電容的,由於這些開關量的變化是不可能有很高的速率的,並一個小電容對信號的採集是沒任何影響的