PCB設計過程中工程師幾乎必做的事就是給每個電源管腳(Vcc、Vdd等)加上一個0.1uF的陶瓷電容,並在某些地方加上更大容量的極性電容,幾乎成了每天吃飯必定要吃碗米一樣的事情了,但Why呢?
為什麼要加這些電容?
為什麼要加0.1uF的?
為什麼有時還要加其它值的電容?
在PCB上這些電容放在哪裡?
這些我們習以為常的事情細究起來困擾著很多硬體工程師,即便做了很多項目的老司機也未必能給你講清楚這裡面的關係,不信你問問你們實驗室的大哥?
還有一個讓很多人抓狂的問題 - Decoupling Cap(去耦電容)和Bypass Cap(旁路電容)的區別,看到很多文章的作者把這倆概念的區別講得貌似斬釘截鐵,但讀下來卻發現其實作者也並不真正清楚,當然也不排除我自己的閱讀能力出現了問題,不信你從網上搜幾篇文章讀讀,越發的糊塗。
作為一個實用主義者,我從來不在乎概念如何叫,只是從功能上來理解為什麼。
很多文章都從電晶體級別深入分析了為什麼要加去偶電容,既有圖又有公式,貌似揭示了真相,但這些分析看半天你未必看懂,看懂了未必能記住,蘇老師今天不講高深的理論,從宏觀上讓大家清楚為什麼就可以了。
本質上我們設計的所有電路可以像下圖一樣抽象一下:
每個負載要正常工作,前提就是負載上的供電電壓要穩,如果是5V,就得是儘可能乾淨的5V,如下圖:
(手畫的,有點不平,意思到了)
但該負載內的器件們工作起來,都要動態地吸收電流,供電電壓就變成了下面的鳥樣子:
也就是在5V的DC上疊加了各種高頻率的噪聲,這些噪聲是由於器件對供電電流的需求導致的電壓波動,可以看成是在DC 5V上「耦和」了由於器件工作帶來的AC噪聲。
這樣耦和了AC的DC供電電壓不僅會影響本負載區域內的電路的工作,也會影響到其它連接在同一個VCC上的其它負載的工作,有可能導致那些負載的電路工作出現問題。
怎麼辦呢?當然就是把每個地區的問題控制在該地區範圍內嘍:
電源供電取決於變換的方式,其供電本身在DC上就有紋波,因此我們需要在電源輸出Vout端要有電容C1(我們可以看成是國家糧倉)負責將供電電壓上的噪聲降到儘可能的低,完全為零是不可能的,因為完美的世界從來都不存在,只要不影響後面負載的正常工作即可。
既然每個負載工作起來會導致其電源出現額外的波動,那就讓波動在本地儘可能降低,且不影響到其它負載的工作。降低負載供應波動影響的方式就是加強能即時響應的供給(本地糧庫) - 通過備用的供給平滑掉主供給快速反應方面的不足。電容的本性就是儲能,用電容來做備用電能提供供給也就能平滑掉負載瞬間的需求帶來的波動(不同的電容響應速度也不同,且聽下文分解),保證該負載的電壓儘可能穩定,也就是將有可能耦和到DC上的AC給去除掉(去耦的含義1),同時由於讓本地的DC穩定,降低了對其它負載的波及(去耦的含義2)
從電源上看,沒有去耦電容的時候如左側的波形,加上了去耦電容之後變成了右側的樣子,供電電壓的波形變得乾淨了,我們稱該電容的作用是去掉了耦和在乾淨的DC上的噪聲,所以該電容被稱之為去耦電容,當然也可以被稱之為旁路(Bypass)電容,因為該電容將DC上耦和的噪聲給旁路到地上去了,只留下乾淨的DC給後續的電路供電。
舉一個慄子🌰:每個負載的工作就像我們平日吃「糧食」,每家的用量是動態的、不確定的,所有家庭用的「糧食」加在一起平均下來就相當於在本地區的供糧量(穩定的),但由於每家每天的糧食消耗量很隨機,導致供糧的渠道上會有波動,如果沒有本地區的糧庫(每家也都有儲備糧),每個地區的糧食供應就會出現波動,而且A地區的波動就會影響到B地區,我們當然不希望這種情況發生,所以在每個地區都會有本地糧庫儲存糧食,這樣每個地區內部用糧得到保障,地區和地區之間不會產生幹擾。
當然如果給所有地區供糧的上遊出現了波動,而這種波動超過了本地糧庫的平滑能力,那該地區的家庭用糧自然也會出現問題。
就是如此簡單。
對硬體設計感興趣的朋友,可以通過掃描下面的二維碼加入我們的歡迎群,標註自己的信息(城市+單位+職務+姓名),主動加群主的微信,待身份確認後由群主邀請你加入正式的嵌入式系統設計技術交流群,已經加入過嵌入式系統交流群的或者已經是群主的好友的,就不要再加入了。