作者:實作派
不知各位是否有訊號被干擾的經驗?這幾天我發現我的記憶體有時會讀寫錯誤,接上示波器一看,哎呀!怎麼這麼熱鬧,好多不知打哪來的突波出現,經過了解原來是繼電器的 EMI 作怪。雖然這個電路是實驗性質的東西,但龜毛的我還是需要了解一下原因,並嘗試找到答案,畢竟在實際做產品時,這種現象一定會被客戶打槍。
被干擾的訊號
我的記憶體使用的是 I2C(以下寫作 I2C)介面,它是一種 IC 間的通訊協定,發射與接收端之間使用兩條訊號線做傳輸,一個是 Data、另一個是 Clock,傳輸細節請看這篇 I2C-協定用法原理簡介-晶片溝通的橋樑。把示波器接上之後,竟然看到訊號線上有非常多的突波,真是傷腦筋,萬一突波剛好出現在 I2C 資料的取樣點上,那豈不是就發生資料讀寫錯誤了,而且 I2C 的發射端 master 可能也不會發現資料有問題,因為接收端 slave 都有回應 ACK。當然,若被干擾的是 ACK 本身,就要看 master 是否有重送的機制,但通訊協定不是我這次關心的重點。
我的重點是,能否將干擾消除?這要兩方面來思考,一個是電路本身的設計要能夠抗干擾,一個是想辦法降低干擾源。

遭受電磁干擾的 I2C 訊號(圖片來源:實作派提供)
繼電器是干擾源
我的應用電路需要與繼電器搭配,雖然繼電器與應用電路是兩個獨立的個體,但是擺放位置卻因為實際需求而擺在一起,才爆出這個問題。由於繼電器切換的時候,會發出很大的撞擊聲,讓人很難不注意到它的動作。每當雜訊出現時,我都會聽到繼電器發出的滴答聲響,如此的時間巧合,讓我推測元凶就是繼電器。
如下圖,繼電器是利用電磁鐵來切換電流路徑的裝置,而電磁鐵是線圈繞的,所以它同時也是一顆電感,當電流啟動或切斷的那一瞬間,電感會產生非常高的感應電動勢來對抗這樣的改變,這個感應電動勢便會形成電磁波干擾其他裝置,稱為電磁干擾(EMI,Electromagnetic Interference)。
而波形內有這麼多的突波,並不是我按了很多次按鈕喔,而是我每按一次按鈕,裡面的簧片彼此接觸那瞬間會有局部微小的反彈現象,因此電流會產生劇烈的變化,造成電壓快速的上下彈跳 Bounce,直到簧片接觸穩定為止。
圖中的繼電器內寫著 12 VDC 的橫向柱狀體就是電磁鐵,根據規格它需要吃 75 mA 的電流來驅動 switch,與一般只吃不到 1 mA 的元件來相比,真的是個龐然大物。

繼電器-已打開外蓋(圖片來源:實作派提供)
EMI 干擾訊號
把受干擾的 I2C 訊號沿時間軸放大來看,你會看到這些干擾的震幅相當大,這裡一格是 5 V 喔!SDA 與 SCL 都是 3.3 V,光是干擾就可以超過 3.3 V 很多,實在是太可怕了。

遭受 EMI 電磁干擾的訊號(圖片來源:實作派提供)
加電容為何無效
每當遇到這種突波、雜訊等問題,大家的第一反應都是加電容,但是真的加上去之後,你會發現是無效的,為什麼?課本不是都教我們要利用電容來濾波嗎?
其實課本教得沒錯(如下圖),只是它講的是用來克服從電源端 V1 過來的雜訊,可以透過 R1、C1 將雜訊濾掉。同樣的,從繼電器來的干擾磁場 B1,所形成的感應電流 i1 也可以透過 R1、C1 濾掉,因為電容在高頻訊號上形同短路,下面是電容阻抗的公式,頻率越高阻抗越低。
但我們加進去的電容 C1 與 OP(下圖的放大器OA3)之間的導線好歹是有長度的,因此它還是會形成一個迴圈,從繼電器來的電磁干擾波 B2 會在迴圈內形成 i2,而 OP 的輸入端是高阻抗,因此雜訊無法經由 C1 消除,於是雜訊就被 OP 吃進去了。

EMI 干擾是在 C1 電容的後級出現(圖片來源:實作派提供)
所以加上電容會無效是因為雜訊的切入點根本就在電容之後,而 OP 的輸入端並沒有任何外部電容存在,所以電容要越靠近 IC 的輸入端越好,這種電容稱為 bypass 電容或稱旁路電容,一般在 IC 電源接腳上的旁路電容都用 0.1 uF。既然導線一定有長度,所以干擾一定會有,我們只能盡力改善而已。
另外如果在 I2C 的銅線上加旁路電容可以嗎?當然可以,但不能加太大,以我的電路來說大概只能加上 300 pF 以下的電容,否則 I2C 自身的訊號會從方波變成三角波或鋸齒波,因為方波被積分了。
下圖是我加了電容看到的波形,從 50 p 到 1000 p 我都試過了,除了電容變大可能會把 I2C 的波形搞爛之外,如各位所看到,EMI 的干擾波完全不受影響,依舊如此的尖銳。因為印刷電路板的 layout 是固定的,電容與 I2C chip 之間的空隙就是這麼大,除非再改一板 layout,不然無解,但這工程浩大我還真不想這麼做,所以各位就知道要在設計初期就需要把干擾考慮進來,不然到了後期才要解問題,你的處理空間會變很小。

加電容並無助於減少 EMI 電磁干擾(圖片來源:實作派提供)
你看到的雜訊非實際的雜訊
如果想親自看看 EMI 干擾的威力,不一定需要繼電器,只需要如下圖把示波器的探棒勾住它自己的 GND,然後配上一只檯燈就行。探棒勾住 GND 的目的是作為天線使用,因為 Ground lead 與探針之間所形成的迴路就是磁場感應電流的迴路,而探針本身的輸入阻抗是 10 MΩ,阻抗非常的高,因此感應電動勢幾乎可以完整地被觀察到。
此時只要將檯燈的開關打開或關閉,示波器上就會出現探棒迴路收到的電磁干擾。那問題來了,當我們使用探棒測量電路時,如何知道示波器顯示的雜訊到底是電路貢獻的,還是探棒迴路貢獻的?
若你用的是帶 GND 尾巴的探棒,那還真的是分不出來誰是誰,我不確定坊間是否有 Ground loop 面積超級小的被動探棒,但我知道主動探棒有這樣的設計,只是那一支超級貴,若真的有需要也是得買。

只要有電流迴圈,就會受到電磁干擾訊號,探棒也不例外(圖片來源:實作派提供)
加上「二極體」就能解決干擾源
既然電路板 layout 沒法改,加電容也沒效果,探棒不管怎麼接都會有 loop,那不妨將焦點放在改善干擾源。Relay 的電磁鐵是個大電感,在斷電的那一瞬間,儲存於線圈內的能量必須要讓它有個去處,否則會形成非常大的電壓在線圈兩端,因此只需要在線圈的兩端反向跨接一個二極體,就能有效將剩餘的能量消耗掉。
這個二極體只在反向電流產生時會發生作用,這種接法的二極體稱為 flyback diode,用來防止繼電器跳火,對我們來說它可以有效降低發射出去的電磁波。

Relay with Flyback diode(圖片來源:實作派提供)
實際接線如下圖,我將二極體 1N4001 鎖在繼電器的插座上,很醜但是很有用。如果你仔細看會發現我把繼電器的外殼給拔了,因為繼電器實在太吵了,所以只好將它拆開,用一個杜邦頭塞在開關的縫隙中,讓開關不會移動,就不會產生噪音。

線圈端加了二極體的繼電器(圖片來源:實作派提供)
改善成效
加了二極體之後,I2C 的波形如下圖,你可以發現突波減少很多,高能量的突波已經看不到了,螢幕內只有中間的觸發點才是 EMI 的突波位置,其他位置的突波是 I2C 自身的串音干擾 cross talk,而且剛才有提到光是示波器探棒的 ground lead 形成的迴圈就足以貢獻很多雜訊了,因此真正進入 I2C 的雜訊是少很多的。

已降低電磁干擾的I2C訊號(圖片來源:實作派提供)
為了避免 I2C 的串音干擾示波器的觸發,我停止傳送 I2C 訊號,這樣就能直接觀察到 EMI 的訊號,結果如下圖,干擾真的小了非常多。如果你的電路會偶爾發生誤動作的情況,就需要往干擾的方向思考,EMI 只是其中一個環節,而且它是一門專業,真正要做產品時是需要經過 EMI 與 EMC 驗證的,否則消費者該不會希望誤動作發生在十萬火急的時候。
這裡有一篇 Analog Device 的文章 Power Bypass Decoupling of SHARC Processors,裡面對於 bypass 電容有非常深入的探討,各位可以參考。
另外還有一個別人做的影片 Inductive spiking, and how to fix it!,實際驗證了電阻性與電感性的負載,我想對各位會非常有幫助。

處理後的電磁干擾明顯下降(圖片來源:實作派提供)
(本文經同意轉載自實作派電子實驗室、原文連結;責任編輯:賴佩萱)
- 【實作實驗室】分配器效能測試 - 2024/12/30
- 【實作實驗室】頻道功率怎麼測?有線電視頻譜長這樣! - 2024/12/12
- 【實作實驗室】無線滑鼠游標定格,電源開關更換 DIY - 2024/11/12
訂閱MakerPRO知識充電報
與40000位開發者一同掌握科技創新的技術資訊!