在上一篇中我們講到利用 BJT 的飽和截止特性當作開關來使用,在作為開關應用上還有另一個常使用的元件稱為 "光耦合器" ,而這個元件更大的用處是作為 "隔離器" 使用。
在一般不進行隔離的電路中必須將所有的 GND 相連,如此一來控制器的弱電壓將與驅動電路的高電壓(或大電流)形成一個共同的網路造成耦合干擾,容易對 MCU 產生不良的影響,所以我們在迴路中最好是可以將驅動迴路跟控制迴路(MCU)進行隔離,而這個隔離的中繼元件,就是使用這種光耦合元件來進行 電-光-電 轉換。
在講光耦合器做為隔離作用前,我們先講講光耦合器的另外一種作用:"電位轉換"。由於 Arduino 的輸出電位為 5V ,而外部的元件如 IC, 繼電器, 通信 ... 等等 有些元件並不是操作於 5V(例如3.3V, 10V) ,所以我們在這之間可以利用光耦合器來進行電位的轉換。
由 PC817 的元件示意圖可以看出,內部是一個光電二極體(類似於LED燈),藉由光來驅動右方的 BJT,代替了原本的 IB 水龍頭的角色。
我們將左側(發光二極體)做為控制端,右側的電晶體做為輸出端,來進行電位轉換的應用。
首先我們必須先計算要讓這個元件正常動作該如何配置 Rin,我們可以把光耦內的發亮二極體當作 LED 來使用。由 datasheet 中可以得知該發光二極體的 Forward voltage = 1.2V , Forward current 最大可承受 50mA 。由右側的測試Condition If = 20mA 推測,使用 20mA來當做驅動電流應該是很合理的,所以我們就可以計算出 Rin 大略為 (5-1.2)/20mA = 190ohm 為了導通完全我們可以選擇 150 ohm左右的電阻。
(後記 : PC817 為線性光耦合元件,非一般的開關型光耦合元件。這意謂著在設計後端的電路時,要考慮到輸出端 BJT 會不會落入工作區)
將電路設計為如上圖所示,就可以將 Vout 做 0~10V 的變換,也就實現了 0~5V -> 0~10V 電位轉換。因為 PC817 為線性光耦合器 CTR > 50 % ,故也會有 BJT 落在工作區或是飽合區的問題,詳細設計方法見上一章。
註 : CTR 為輸出/輸入電流比值,以 PC817 來說保證大於50%,亦即若設計輸出端電流需要 1mA 則輸入端電流最好有 2mA 較為保險。在我們上述的例子中,設計 Rin 為 150 ohm ,可推得輸入端電流為 25.3mA ,則輸出電流保證大於 25.3mA * 50% = 12.65mA
上面給出幾張不同 Rout 對應的模擬結果,大家可以嘗試自己推導看看,過程在此略過。
考量 CTR 保證 >= 50% ,也就是說映射到輸出端的相依電流 IC 實際值可能會比理論値在大。以此結果來說在實際應用時選擇 1k ohm較為合適。
考量 CTR 保證 >= 50% ,也就是說映射到輸出端的相依電流 IC 實際值可能會比理論値在大。以此結果來說在實際應用時選擇 1k ohm較為合適。
再者電路可以接成如上圖的左側或右側,差別在於驅動的邏輯不同。
以左圖為例,我們直接用 pin13 來驅動光電二極體,當指定為 HIGH 時會連帶使得右側的 BJT 導通;
而以右圖來說,則需要指定為 LOW 才能使光電二極體連帶右側的 BJT 導通。同時這樣的設計可以減輕 MCU 電源上的 Load
而以右圖來說,則需要指定為 LOW 才能使光電二極體連帶右側的 BJT 導通。同時這樣的設計可以減輕 MCU 電源上的 Load
此部分在設計上除了這樣的邏輯差異外,還牽扯到 source current 與 sink current 的能力,待後續章節介紹。
而光電耦合器最主要的功能是用來當做隔離器使用
例如上圖電路中左側的電流流經 Arduino 內部形成迴路;而右側則是經由外部的 10V 電源供應器自成一個迴路。這樣的好處在於當 10V 的電流迴路具有大電流流經時,其因為沒有共地的關係( Arduino 的 GND 不與 10V 電源供應器的地相連),雜訊就不會經由此迴路進行干擾耦合,提升了板子的穩定。
PC817此光耦合器在驅動的能力方面比較弱,舉例來說上一章我們用 BJT 進行開關應用,其可接受的最大電流 IC 為 1.5A ,但 PC817 僅能接受 50mA 的輸出電流。故在應用上若我們需要進行隔離,又需要驅動大電流則我們可以結合前一章的 BJT 電路來使用。
補充:
補充:
以上一章的電路架構(Fig.2 右半部)來說,若是要驅動繼電器可以將原本 RL 的位置替換成繼電器的線圈(如上圖,源自光耦與繼電器的問題)。
多數的繼電器都是以 5V、12V、24V 等電壓準位來進行驅動(上圖為6V),除了電壓準位要正確外,電流需求大約在50~200mA左右(小型繼電器),RB 可以適當的加大用以降低 IB 以及 IC 的大小以滿足繼電器的吸合需求即可(吸合電流 = 工作電壓/Coil resistance)繼電器_datsheet。
由於線圈本身就具有內阻(約100ohm),所以不會有 VCC 與 GND 直接短路的疑慮發生,若繼電器本身沒有二極體的保護電路,需在集極與 VCC 之間接上一個二極體(D1)提供自消耗的電流路徑,否則可能會發生電流回灌到 VCC 的情形。
補充(20181026 繼電器電路):
補充(20181026 繼電器電路):
光耦合 & 地的隔離
光耦合器也常用來做地的隔離,例如微控制器與馬達之間的電源隔離。
有人說光耦合的隔離分為 半隔離 以及 全隔離。基本上半隔離還是讓兩邊的系統共地,其作用大多是做為電位轉換,對於抗干擾的效益不大。
而全隔離是指兩邊的系統不共地(微控制器&馬達),但這樣子通常需要兩個 "獨立的電源"(不共地)例如 5V , 12V 。要得到兩個不共地的獨立電源在實務上是挺麻煩的一件事情,所以有些廠商有出電源隔離的轉換模組。
可參考此網頁 光耦隔离电路到底该如何应用
補充:
1.
Rbe 作用為避免 Q1 floating 造成繼電器誤動作吸合,並且可以抑制 Iceo 。一般取 4.7k ohm 或 10k ohm。假如 Rb 直接連接於 MCU I/O 口且沒有加入 Rbe ,可能會讓繼電器因為開發板在 "剛上電的瞬間" 產生 的 spike 而造成誤動作。
2.
datasheet 中的 " isolation voltage between input and output 5kV " 指的是 "絕緣電壓" 5kV 的意思,且此參數主要是用來描述這個元件的安全係數,當輸出端有突波產生時(例如雷擊、觸摸產生的靜電、電感性負載造成的高壓),若輸出端與輸入端的 "電壓差" 小於 5kV 則可以保障光耦合元件內部不會被擊穿
1.
Rbe 作用為避免 Q1 floating 造成繼電器誤動作吸合,並且可以抑制 Iceo 。一般取 4.7k ohm 或 10k ohm。假如 Rb 直接連接於 MCU I/O 口且沒有加入 Rbe ,可能會讓繼電器因為開發板在 "剛上電的瞬間" 產生 的 spike 而造成誤動作。
2.
datasheet 中的 " isolation voltage between input and output 5kV " 指的是 "絕緣電壓" 5kV 的意思,且此參數主要是用來描述這個元件的安全係數,當輸出端有突波產生時(例如雷擊、觸摸產生的靜電、電感性負載造成的高壓),若輸出端與輸入端的 "電壓差" 小於 5kV 則可以保障光耦合元件內部不會被擊穿
延伸可參考
如何利用PC817光耦合元件去推動Relay
如何利用PC817光耦合元件去推動Relay