世界上最常用的開發板,Arduino Uno,支持多種供電方式,大致分爲兩類:5V直接供電與更高電壓經LDO(Low Dropout Regulator,低壓差線性穩壓器)後供電。神奇的是,當兩種電源都連接時,開發板會自動選擇後者,而不會讓兩者衝突。
完整的原理圖可以在<a href="https://www.arduino.cc/en/uploads/Main/Arduino_Uno_Rev3-schematic.pdf" target="_blank">這裏</a>查看。由於整張圖比較大,我把電源部分抽出來自己畫了一遍。
V1
和VBUS
分別是外接電源和USB供電;S1
和S2
用於控制兩個電源的連接狀態;D1
是防反接保護二極管;U1
和U2
分別是5V和3.3V LDO;U3
是LMV358低壓軌至軌運放,起到比較器的作用;R1
和R2
構成分壓電路,把外接輸入電壓減去二極管壓降的一半作爲運放同相輸入;Q1
是一個P溝道MOS管;VCC
是輸出的5V電源。(以上名詞不懂的請自行百度。)
簡單分析一下:如果S1
閉合,U1
給VCC
5V輸出,運放有供電,反相輸入爲U2
輸出的3.3V,正相電壓高於反相,運放輸出5V,Q1
柵極與源極電壓相等,不導通,無論S2
是否閉合,VBUS
都不會輸出電流。
如果S1
斷開,且電路已經通過VBUS
電源供應正常工作,那麼類似分析可得運放輸出0V,Q1
柵極電壓比源極電壓低5V,MOS管導通,VBUS
通過Q1
給VCC
5V輸出,電路繼續正常工作。
但是在只有USB供電的情況下,電路上電時會怎樣?有網友也提出了<a href="https://forum.arduino.cc/index.php?topic=114296.0" target="_blank">這樣的疑問</a>。
I half understand the Arduino Uno power select circuit that uses as p-FET to disconnect the USBVCC when an external Vin is supplied, but one bit baffles me. If no external supply is connected then at startup what state is the p-FET in? If the p-FET is ON (Vgs -ve) then USBVCC powers the LMV358 op-amp which compares 3v3 to 0V and drags the p-FET gate voltage down and it all works (although the initial p-FET source voltage is floating). But if the p-FET is OFF then the LMV358 has no power, so the p-FET gate voltage is indeterminate, so what happens to the p-FET? It all seems a bit chicken and egg to me.
我不是很理解Arduino Uno的電源選擇電路。當有外接電源連接時,它用P溝道MOS管斷開USB電源,但有一點我不理解。如果沒有外接電源,啓動時MOS的狀態是什麼?如果是導通的,USB電源給LMV358供電,比較3.3V與0V,把MOS的柵極拉低,電路正常工作(儘管初始時MOS的源極電壓是浮空的)。但是如果MOS是關斷的,LMV358就沒有電源,所以MOS的柵極電壓是未定的,所以MOS會怎麼樣?這就像先有雞還是先有蛋一樣。
答案是電路依然能正常工作,原因是MOS管中有一個寄生二極管。注意,只有分立MOS管纔有寄生二極管。寄生二極管方向是:N溝道管由S極向D極,P溝道管由D極向S極。可以這樣記:襯底連接S極,兩個箭頭的方向相同。
因爲有這個寄生二極管的存在,無論上電時MOS處於什麼狀態,VCC
總有4.3V電壓,可以讓U2
輸出3.3V,也可以讓運放工作,於是運放就會輸出0V,MOS導通,VCC
輸出5V。這個過程在一瞬間完成。
一般來說,高邊P溝道MOS管都是源極連接電源,漏極輸出。而這個電路爲了利用寄生二極管把兩者顛倒了過來,仍能正常工作,十分巧妙。