文章程式碼顯示

2017年11月24日 星期五

《進階※電子電路篇》寫程式Arduino教學 - 04:為 Arduino 供電的各種方法



截至目前為止,我們都是用電腦的 USB 為 Arduino 供電,但一個實際的成品當然不會要用戶一直將 Arduino 與電腦進行連結,就只為了供電而已

在 Arduino Uno 板上有四個途徑可以對板子進行供電

1. USB口 ,也就是你平常連接到電腦的那個傳輸口 (其它型號的板子亦同)
2. 板子上的 5V 腳位
3. 外部電源口(只有 Arduino Uno 有做出 DC2.1 接頭出來)
4. 板子上的 Vin 腳位 (所有型號的板子皆有)

1 跟 2 對 Arduino 供電的途徑是等效的;3 跟 4 對 Arduino 供電的途徑是等效的

只要四擇一即可

接下來我們提一下使用各種途徑進行供電時,幾種可行的方法

1. USB口 
除了電腦的 USB 口以外,我們可以運用手機的充電器(豆腐頭),來代替電腦以對版子進行供電,這是一個可行性很不錯的點子

手機的充電器裡面就是一個整流器,將 AC 110V 的電壓轉換為 DC 5V 並且外接出 USB 的母頭以供我們連接

2. 版子上的 5V 腳位
若不想用手機充電器或是 USB 線的話,還可以自己去購買人家做好的"整流器",事實上它就是把手機充電器的外殼拆開,並且沒有 USB 母頭而已

拍賣網搜尋關鍵字 " AC110 DC5V 電源模組 " 就會有很多選擇了

在選購的時候主要是依據自己應用時所需要的電流大小來做選擇。電流輸出能力 500mA 尚可,考量到市面上很多灌水的可能性,若能選擇 1000 mA 的尤佳

PS: 若你想使用便當盒那種的工業用電源供應器也可以,只是體積大了些

3. 外部電源口
針對 DC2.1 接頭的輸入電源口,最簡單的方式是使用 DC 9V 的 "方型電池" ,但這樣的電池並不便宜,且在日常生活的其它電器用品上已經很少被使用

我們亦可以在拍賣網搜尋關鍵字 " AC110 內2.1 "

通常這樣子搜尋出來的結果就會有很多 " AC110V  to DC 的變壓器、電源供應器、電源穩壓器 ... 等等" 的產品出來

選購的重點在於它的接口必須是 "內徑2.1、輸出電壓選擇 DC 7~12V 的,如  9V, 12V 等" (因 Arduino 的外部供電建議電壓約為 7 ~ 12 V (極限 20V) )

同樣的,在選購的時候也要考慮自己應用時所需要的電流大小

電流輸出能力 500mA 尚可,考量到市面上很多灌水的可能性,若能選擇 1000 mA 的尤佳

若你想使用便當盒那種的工業用電源供應器也可以,只是體積大了些

4. 版子上的 Vin 腳位
外部電源口與板子上的 Vin 腳位相連接(所以才說是等效的),也就是一個沒有 DC2.1 接頭的電源輸入腳位

而取得 DC 7~12 V 的方法最簡單就是在拍賣網搜尋關鍵字 " AC110 DC9V 電源模組 " ( 12V亦可,只要在範圍內都可以,但這兩個是較好的選擇) 即可,這個關鍵字搜出來的,很多都會屬於先將110交流電降壓後再經過整流濾波,再經過開關型穩壓的方式來組合而成
上述這種方式,其體積較大,主要都被交流變壓器以及大電容所佔據。

除了上述這種形式之外,亦有整合型的110交流轉低壓dc的玩意兒,長相會有點像是繼電器那個模樣。但這種東西,其輸出電流的能力會較弱一些,大約在數百mA左右

典型型號為 HLK-PM01 (5v, 600mA)

同樣的,若你想使用便當盒那種的工業用電源供應器也可以,只是體積大了些

以上我們提到的方法,都是藉由家中的 AC110V 插座來間接轉換供電,但如果我是想帶著走呢?

使用電池功電

常見的電池如三號電池單顆輸出電壓為 1.5 V ;鋰電池如 18650 約為 3.7 ~ 4.2V 左右 ;也有單顆 9V, 12V 的電池,外形胖胖短短的,並不是很常見

考量成本以及續航力的情況下,現在最多產品使用 18650 鋰電池進行供電

有關 18650 可參考此篇

我們可以很簡單的藉由電池的組合得到 9V 上下的電壓,並從 Vin 腳位供電進去

如 : 6 顆 3號電池串聯 或 2~3顆鋰電池串聯 或 單顆 9V 的電池 。


在使用電池的組合進行直接供電時,不建議僅湊到 5V 上下,從 5V 腳位進行供電

為什麼?

這就要先提一下使用 Vin 供電時(或使用 DC2.1 接頭供電時)會發生什麼事

無論我們藉由 DC2.1 或 Vin 腳位將電源灌入,都會連接到降壓晶片




因降壓晶片(上圖藍框)的目的在於 "將輸入電壓降到 5V 後輸出"

但因其名為降壓,所以不得輸入一個低於 5V 的電壓。事實上,過於靠近 5V 就不行了

輸入電壓過於接近 5V 會導致降壓晶片失效,而使得板子無法得到穩定的 5V ;若輸入電壓太高則會消耗太多的功率在降壓晶片上,導致該降壓晶片發熱

很顯然的,Arduino 輸入供電電壓的範圍與該降壓晶片的能力有關
降壓晶片也就是為什麼 Arduino 的外部供電建議電壓約為 7 ~ 12 V 的原因


在此我們要牢記一個原則 

"無論你怎樣供電,最後 Arduino 的核心晶片(Atmega328P)就是需要 5V 就對了"


回到電池,如果我們湊到 5V 多一些些的電壓就直接從 5V 腳位灌進去會怎麼樣?

受限於電池本身的特性 : 當我們讓電池瞬間供給較大的電流時,電池的電壓將會瞬間下降

這時很有可能會讓電壓非常接近 5V  (ex: 5.1V),甚至 5V 以下

使得降壓晶片無法得到一個合適的輸入電壓,也就會造成降壓失敗

Arduino 得不到穩定的 5V ,結果就是自己重開機 or 工作不正常


既然這樣我就把電池串到 9V 左右或直接使用 12V 的電池就好了阿 !

這樣的作法確實可行,但也不是一個太好的方法

較好的方法是 "將電池串到 5V 以上,再藉由其它方法降回 5V 後直接從 5V 腳位供電"

為什麼要這麼麻煩? 其原因在於我們前面提到的降壓晶片

記得我前面說的嗎?

若輸入電壓過於接近 5V 會導致降壓晶片失效,而使得板子無法得到穩定的 5V ;若輸入電壓太高則會消耗太多的功率在降壓晶片上,導致該降壓晶片發熱

受限於體積以及成本, Arduino 版上的降壓晶片使用的是"低壓差線性穩壓晶片(LDO)"

工作原理就不談了,基本上就是將 MOSFET 操作在線性區(或稱歐姆區)來將其當作一個可變電阻使用;

我們可以在 datasheet 中看到壓差(dropout voltage)兩字,其指的是 "輸出電壓與輸入電壓之間的最小容許差值"

含義為,在應用時我們的 (輸出電壓 - 輸入電壓) 不得低於 dropout voltage,否則 LDO 會開始不能維持其穩定。也就是

輸入電壓的最低容許值 = 輸出電壓 + dropout voltage + (一些使用經驗上的裕量)

低壓差(Low dropout voltage) 意味著可以接受輸入電壓特別接近輸出電壓,舉例來說你或許可以將 5.3V 降到 5V 


LDO 可以視為 線性穩壓晶片(Linear regulator)的特別版,差別在於 Linear regulator 的壓差沒有辦法壓到太低,著名的 LM7805 就只能稱為線性穩壓晶片 ,其輸出入之間的壓差必須達到 2.5V

無論是 Linear regulator 或是 LDO ,其特性為

"當輸出入電壓差距過大時,效率會大幅降低"

它會在電壓轉換的過程中會耗費很多的能量在降壓晶片上面,也就是發熱

我們可以簡易的計算一個 LDO 的轉換效率,假設輸出電流大約是 0.5A

且基於 LDO 特性,輸入電流 近似等於 輸出電流

輸入電壓 9V 輸入電流 0.5A  輸入端功率 = 4.5W
輸出電壓 5V 輸出電流 0.5A 輸出端功率 = 2.5W

可以得到,有 1.5W 都消耗在 LDO 上面,又假如

輸入電壓 12V 輸入電流 0.5A  輸入端功率 = 6W
輸出電壓 5V 輸出電流 0.5A 輸出端功率 = 2.5W

可以得到,有 3.5W 都消耗在 LDO 上面

由上面的舉例我們知道,輸入電壓與輸出電壓差的越大,則消耗在 LDO 上面的功率將會越大

輸出功率我們只用了 2.5W ,結果 LDO 本身額外消耗了 3.5W  (總共6W)

這種事你能接受 !?

那麼  LDO 的長處在哪裡呢?

1. 輸出入電壓差距可以很小,仍然能夠保持輸出電壓的穩定
2. LDO輸出電壓品質好,電壓漣波通常為uV等級。適合需要非常乾淨的電源,或是對雜訊比較敏感的實際應用
3. 輸出入電壓之間的壓差不大,否則效率差( ex : 5V 以內)
4. 不需要大電流輸出的應用(ex : 1A 以內)
5. 落在 LDO 上的功耗是有限的,例如少於 0.8W
6. 頻寬特別寬,意謂響應速度快
7. 接地電流(又稱靜態電流)小,約數 uA。此電流意謂著 LDO 沒有輸出電流的情況下(有些 LDO 甚至支持睡眠模式,有 En 腳位),LDO 本身工作所需的電流。此性質使得 LDO 適用於特別計較長時間運作的電池供電應用

Ps: 在 datasheet 中還會看到 ground current ,此指的是 LDO 有輸出電流時,LDO自己本身所需要的電流

針對低電壓差應用時,我們稍為計算一下 LDO 的效率

輸入電壓 5.6V 輸入電流 0.5A  輸入端功率 = 2.8W
輸出電壓 5V 輸出電流 0.5A 輸出端功率 = 2.5W
可以得到,有 0.3W 消耗在 LDO 上面
輸出端功率 / 輸入端功率 = 效率 = 約為 90%

所以輸出入壓差越小的時候,越是 LDO 發揮的場合。
當 LDO 用在較高的電壓差時(如 >3V) ,就跟一般的 Linear regulator 一樣,效率低易發燙

當 LDO 上的功耗超過 0.8W 時,最聰明的做法就是以 Buck 架構的 DC-DC Converter 予以取代,但缺點是電路的體積會變大

LDO 常用的 IC 型號 : 7805(Linear regulator), LM317, LM2940, AMS1117-5, LM1117-5, LM1086 

註:其中 LM317 是一個可調整輸出電壓的線性穩壓器。神奇的是,他還可以經過特殊的回授接線方式成為一個定電流源!或許配合數位電位器就能實現 4-20mA的標準電流輸出訊號了

可參考這連結這連結

LDO 常用的 IC 型號(3.3v) : TLV74133PDBVR, TPS76733, LP2985, LDK320ADU33R, MCP1825S33

三种典型的基于AMS1117稳压IC的5v转3.3v电路

那麼多種降壓 IC ,該如何選擇呢?
在這邊提出幾個步驟

1. 先決定你的降壓 IC 需要多少伏特的輸出電壓(5V? 3.3V)

2. 你能提供多少的輸入電壓給降壓 IC ?
(For example : 使用 LM1117-5 時,輸入到 LM1117 的電壓必須大於 7V。若你沒有這麼大的輸入電壓,你可能要選擇其它 LDO)

3. 你需要降壓 IC 提供多少的輸出電流給負載?

以上三點基本上就可以淘汰到只剩下 5 種以內的選擇

4. 查看 LDO 的靜態電流(Quiescent Current)、地電流(Ground Current)以及 待機電流(Standby Current)


靜態電流 : 代表不論 LDO 有沒有負載,LDO 內部電路工作所需的基本電流
地電流 : 輸入電流減去輸出電流(包含了靜態電流)
待機電流 : 當 LDO 進入"非致能模式"(如果該 LDO 有支持的話)時,所需要的電流

以上這三個電流都是越小越好(約數 uA 甚 nA)




使用 集成型 DC-DC Converter ( buck-type )

DC-DC Converter ( buck-type ) ,此文中指的是"切換式"降壓器的 IC 集成型

" 切換式降壓 IC " (或稱開關式降壓 IC ),效率可達 90% 以上。其使用的方法跟 LDO 差不多,也是需要一個比輸出電壓還要高的電壓,然後進行降壓處理,但通常這種切換式電源的輸入電壓範圍可以比較寬。

開關型的降壓方法,其最大的缺點在於體積會比LDO大上十倍左右。其原因在於除了買切換式降壓IC本體以外,因為 IC 本身的工作需求,往往還需要外部的電容以及電感等等的元件輔助,不像 LDO 只要一個 IC 就能解決一切

輸出電壓基本上都是 5V, 9V, 12V 的規格,可以提供較大的輸出電流達到數安培等級

但缺點是 : 與 LDO 相比,切換式降壓 IC 的輸出電壓品質較差(漣波較大),所以在應用上可以在後級加上一個 LDO 來提升電源品質

在計算開關式電源的效率時,有幾個要點

1. 輸入電流不等於輸出電流
2. 可由 (輸出所需功率/輸出電壓) 大略的往回推出輸入電流的最小值
3. 在計算效率時採用 "平均功率" 的算法

集成型 DC-DC Converter ( buck-type ) 常用的 IC 型號 :  LM2596, LM2576, Mp1584, LT1765

PS : 對這種方式有興趣的人可以 google 看看 "UBEC"

UBEC 這詞主要盛行於航空玩具界,其本質上就是 DC-DC Converter ( buck-type ) 。因為航空玩具(如空拍機)的應用場和,通常其體積較小、重量較輕、輸出電流數安培、輸出電壓的品質也有一定水準

使用 DC-DC Converter ( boost-type )

boost converter 為升壓型的切換式電源轉換器

升壓型的轉換器可以允許輸入電壓低於輸出電壓,如此一來我們就可以用低於 5V 的輸入電壓來得到 5V 的輸出電壓(所以就可以用一顆鋰電池 3.7 V 來達成 5V 輸出)

行動電源基本上就都是這麼幹的,其內部大多都是用 18650 鋰電池來進行並聯組合,輸出直接是 DC 5V 。且行動電源已經內建充電電路、保護裝置等,很適合拿來直接供電使用

在拍賣網搜尋 "鋰電池升壓板"就會有很多款式了

集成型 DC-DC Converter ( boost-type ) 常用的 IC 型號 : mc34063, LM2577, XL6009

順帶一提,網上也有人在賣 LM2577 + LM2596 組合而成的 “升降壓開關型” ,可以一次解決兩個煩惱

最後,提醒大家。當我們用開關式電源的方法來進行供電時,因為我們已經進行了電壓的轉換,所以在估算電池的使用時間應該用 W-h 來進行估計,而不是使用 mAh (在計算時,可以假設轉換效率為 90 % ,這數字基本上可以滿足大多的開關式電源)

舉例來說我們的板子其輸出功率需求為 5V * 100mA = 0.5W

假設電池輸出電壓 3.7 V 且安時為 1000mA-h

簡單的相乘我們可以得到電池可提供的電能為 3.7W-h ,乘上 昇壓型開關電源轉換效率 90% 之後為 3.33W-h

所以電池可以讓版子工作大約 3.33W-h/0.5W = 6.66 小時 。

順代一提,經由國外網站中的資料所述。

整體價格:多電芯行動電源最高;多電芯行動電源次之;boost converter最低
體積重量:行動電源最高;UBEC次之;boost converter最低
可供電容量:多電芯行動電源最高;boost converter最低
價格除以可供電容量(越高表示成本越貴):單電芯行動電源最高;boost converter次之;UBEC最低

補充

說到電源就不得不說起 Arduino 的省電模式,可參考
如何让Arduino用2颗5号电池运行1年以上--Arduino低功耗

↓↓↓ 連結到部落格方針與索引 ↓↓↓

Blog 使用方針與索引