[Arduino] 開放硬體試讀,從線路圖學習Arduino的硬體電路設計 - MEGA 2560電路圖之電源設計
Arduino提供一套完整的硬體開發版以及方便快速使用的軟體套件庫,讓剛接觸微處理器編程新手可以快速上手,進行各式各樣專題的開發。在使用的Arduino的時候,最大的優勢是,可以省去處理器硬體的電路設計與製作,加速的整個硬體開發的過程,且能夠減少初期硬體發生問題的機率,這是他非常值得稱揚的一項功績。
當我初次使用Arduino時也是對電路抱持著懵懵懂懂的心情,只關心他提供的外接Pin功能、輸入、輸出的電器規格,對其中開發版上的設計不求甚解。雖然我們沒有必要從無到有的製作出他的開發版,但Arduino的各種型號標準電路設計都已經公布在官方網站上,這次就是針對官方網站所提供的電路,來了解他電路設計的架構與精隨所在。
這次要來了解的主要是我曾經使用過的Arduino MEGA 2560其中的電源電路,電源電路是一塊電路板重要的部分,要輸入輸出多少電壓以及提供電力給微控制器是很重要。在MEGA 2560開發版上,可以從外部電源輸入7V~12V的直流電或是用USB輸入的5V電壓,經過轉換提供給Arduino板上各種元件、功能所需的5V、3.3V。在使用上最直覺方式的就是我們常在一個專題作品上使用9V方形電池或是2~3cell的鋰電池來提供整個Arduino電力。
1.電路圖概觀
在MEGA 2560的電路上主要有二個最重要的微控制器晶片-ATmega2560、ATmega16U2。如下圖,晶片的電源供應是以5V為主,但有些特殊介面是需要使用3.3V的電位,因此在電路圖中同時存在著5V與3.3V的電源供應。這兩組電壓不僅是提供電路板本身的供電,在可容許的負載下,也可以從對應的針腳拉出,供應外接設備。
Arduino的電路資訊在官方頁面上可以取得:
https://www.arduino.cc/en/Main/ArduinoBoardMega2560
2.電源電路
接著來看到與電源有關的電路設計,如下標示的三個部分是Power In(外部直流電輸入)、USB In(USB電源輸入)、5V→3.3V電源切換電路。以下會說明這三個部分所具有的功能。
3.外部電源輸入
4.USB電源輸入
使用過Arduino的人都知道,若將USB接上電腦,未接上外部電源時Arduino也是可以運作的,在這裡就是透過USB中所提供的5V直流電來提供電路板上的電源。不過從USB接口這端的電路是看不出來他與板子上的5V電源有什麼關係,先記下USBVCC這個名字,在下一個區塊中會看見他與5V電源的關係。
在此USB接口到ATmega16U2,是直接接到晶片的UVCC Pin,而非VCC、AVCC pin。這裡的USBVCC主要是提供晶片內部USB相關功能的電源所需,以供USB可以正常運作,只有在接上USB時才會需要,這邊的輸入應該是與晶片工作所需的VCC、AVCC pin輸入無關。
在這裡還有一個需要注意的地方是在USB電源的輸入端這裡有裝了一個保險絲(MF-MSMF050-2)屬於自復式保線絲(PTC fuse),限制了USB電流輸入最大500mA,所以使用USB供電的情況下,也是不能夠使用大電流的裝置,以免無法運作。
5.電源切換/轉換電路5V→3.3V
在這個電路可以分為兩個區塊,以下圖的虛線為分界:右側是關於5V轉3.3V的電路,與前面提到的LDO作用相似,但這裡的LDO IC(LP2985)是5V的輸入電壓、固定3.3V的輸出。左側就比較具有可看性了,這個部分可以針對幾種使用情形做一個開關的切換動作。
(1).未接外部電源
(2).有接外部電源
單看左邊的部分,主要有二個輸入源(1)VIN:這是外部電源輸入的7~12V、(2)USBVCC: 這是USB接口的5V輸入電壓。透過電阻分壓、OP放大器、PMOS進行這個電源的選擇工作。
下面分別說明在不同的兩種使用情境下,左邊的電路是如何達到電源的切換動作。
(1).未接外部電源
在外接電源沒有接上時,VIN應該為0V,接至放大器的正極(IN+)。放大器的負極(IN-)為3.3V的輸入。
對於一個OP放大器來說,輸出應該會等於正負兩極的差值乘上增益(A):
假設增益很大,使得理論上的放大器輸出電壓(紅線)超過了這個系統的電壓範圍(0~5V),則會看到這個放大器的輸出都是位於電壓的臨界值上,剛好就是0V或是5V的位置(藍線)。這個放大器在此可以作為比較兩個輸入大小的邏輯比較器。另外有一個需要注意的地方是電路上畫的OP放大器LMV358IDGKR,其實並沒有完整的畫完,少畫了他的電源供應VDD(pin8)與GND(pin4),不過以在這裡的功能來看,VCC應該是接到5V的電源。
在此沒接上電源的情境中,由於IN-比較大,放大器的輸出就會得到0V這個低電壓。下方的PMOS閘極(Gate)在此時電壓為0V(Vgs=0V),為導通狀態。「接外部電源---5V由電源提供;沒接外部電源---5V由USB提供」。
在此可以注意到這個PMOS的方向,由於這個PMOS的Source端是接在右側,以PMOS電流方向由Source流向Drain(右至左)的常理推斷看起來不太合理,與常見將PMOS作為開關時的用法不太相同。然而,一個MOSFET通常是對稱結構,可以將源極(Source)與汲極(Drain)交換使用的,在這裡PMOS兩端對調使用即是這個用法,電流方向是從PMOS硬體上標註的Drain流向Source(左至右),能正常地做為電流開關。雖然DS通道在結構與功能上是可以相反的,但是注意到PMOS的圖示上有一個小小的二極體符號,這個寄生二極體就是固定方向的存在,這在使用上也是需要特別留意的部分。
接來則說明為何要將PMOS反過來用?有一個理由是在FDN340P(PMOS)在規格上是具有一個固定存在的寄生二極體,將此二極體的方向指向負載端,使得這個PMOS在導通或截止的情況下只能從USBVCC流到負載。此舉可以防止電流在任何時刻回灌到電腦的USB中,避免電流回流到電腦的USB Port,輕則沒事或是電腦當機,重則可能衝壞USB Port。
(2).有接外部電源
當接上外部電源後,VIN是外部電源的輸入電壓,在這裡會先偵測輸入電壓是否足夠。外部電源轉5V的轉換IC NCP1117必須輸入6.5~12V的電壓才能工作。在這裡輸入電壓會先透過兩個相同大小的電阻做分壓設計,取1/2的電壓大小與3.3V進行大小的比較,若大於3.3V才能夠透過外部電源對整個系統進行供電。
正常來說我們在電源接口應該要輸入7~12V的電源,也就是分壓後應該要在3.5~6V的範圍間,如果在此區間,這個OP放大器應該會輸出為5V,並接至PMOS的閘極(Gate)。由於PMOS閘極為5V,使得PMOS處於截止的狀態(Vgs=5V),源極(Source)與汲極(Drain)間沒有電流存在。這時主要的5V電源是從外部電源由NCP1117轉換而來,並再透過電壓轉換IC(LP2985)輸出3.3V的電壓源。
PMOS(T1)功能補充說明:
乍看之下,PMOS在此的功能較難以理解,這個PMOS在這裡扮演著一個二極體的角色,有防止USB短路或是接到關機的電腦時的而外電流回衝,造成非預期的電力輸出或是危險,如果僅是避免電流反向的功能,為何不使用一個二極體就好了?
以電流的觀點來看,寄生二極體的最大電流只有0.42A,與PMOS的導通電流5A比起來可說是小巫見大巫,且寄生二極體在流導通後會存在一個電壓降(Typ: 0.7V),電壓、電流的效果不及PMOS的導通電流。然而,一旦PMOS導通,因通道Vds壓降小(Rds小),電流主要會走PMOS的通道,寄生二極體不會有顯著的作用。
以電壓的觀點來看,當一個PMOS時當Vgs增大時,通道導通所造成的電壓降(voltage drop)小,PMOS在這裡不僅可以做到開關、整流,而且兩端電壓差異亦不會太大,會比單用整流二極體來的好,這還是取決於零件的特性。一般的二極體的導通Vf大約落在0.6~0.7V左右,若是使用Vf較低的Schottky Diodes,Vf也會落在0.3~0.4V左右,對於電源的轉換效率來說,都沒有大功率的PMOS來的優秀。
關於這個電路FDN340P的問題,以可參考以下網站:
http://forum.arduino.cc/index.php?topic=148541.15
https://read01.com/5Qo8eL.html
當我初次使用Arduino時也是對電路抱持著懵懵懂懂的心情,只關心他提供的外接Pin功能、輸入、輸出的電器規格,對其中開發版上的設計不求甚解。雖然我們沒有必要從無到有的製作出他的開發版,但Arduino的各種型號標準電路設計都已經公布在官方網站上,這次就是針對官方網站所提供的電路,來了解他電路設計的架構與精隨所在。
這次要來了解的主要是我曾經使用過的Arduino MEGA 2560其中的電源電路,電源電路是一塊電路板重要的部分,要輸入輸出多少電壓以及提供電力給微控制器是很重要。在MEGA 2560開發版上,可以從外部電源輸入7V~12V的直流電或是用USB輸入的5V電壓,經過轉換提供給Arduino板上各種元件、功能所需的5V、3.3V。在使用上最直覺方式的就是我們常在一個專題作品上使用9V方形電池或是2~3cell的鋰電池來提供整個Arduino電力。
1.電路圖概觀
在MEGA 2560的電路上主要有二個最重要的微控制器晶片-ATmega2560、ATmega16U2。如下圖,晶片的電源供應是以5V為主,但有些特殊介面是需要使用3.3V的電位,因此在電路圖中同時存在著5V與3.3V的電源供應。這兩組電壓不僅是提供電路板本身的供電,在可容許的負載下,也可以從對應的針腳拉出,供應外接設備。
Arduino MEGA 2560電路圖 |
https://www.arduino.cc/en/Main/ArduinoBoardMega2560
2.電源電路
接著來看到與電源有關的電路設計,如下標示的三個部分是Power In(外部直流電輸入)、USB In(USB電源輸入)、5V→3.3V電源切換電路。以下會說明這三個部分所具有的功能。
電源線路 |
3.外部電源輸入
在外部輸入的電源部分主要有一個Low dropout positive voltage regulators IC(常稱作LDO): NCP1117,這個LDO可以穩定的輸出5V,其輸入範圍為6.5V~12V,因此Arduino外接電源的電壓規格通常會寫7~12V,主要就是因為這個LDO使用。
另外此NCP1117在正常的工作情況下,可以輸出最大約800mA(5V)的電流,相當於是4W的功率。值得注意的是,最大電流800mA的情況下,若使用在馬達控制相關的應用,Arduino板上所提供的5V電源是不足夠提供DC直流馬達足夠的電流的。在製作馬達、驅動器相關的應用時一定要額外提供穩定的大電流。
5V LDO |
使用過Arduino的人都知道,若將USB接上電腦,未接上外部電源時Arduino也是可以運作的,在這裡就是透過USB中所提供的5V直流電來提供電路板上的電源。不過從USB接口這端的電路是看不出來他與板子上的5V電源有什麼關係,先記下USBVCC這個名字,在下一個區塊中會看見他與5V電源的關係。
在此USB接口到ATmega16U2,是直接接到晶片的UVCC Pin,而非VCC、AVCC pin。這裡的USBVCC主要是提供晶片內部USB相關功能的電源所需,以供USB可以正常運作,只有在接上USB時才會需要,這邊的輸入應該是與晶片工作所需的VCC、AVCC pin輸入無關。
在這裡還有一個需要注意的地方是在USB電源的輸入端這裡有裝了一個保險絲(MF-MSMF050-2)屬於自復式保線絲(PTC fuse),限制了USB電流輸入最大500mA,所以使用USB供電的情況下,也是不能夠使用大電流的裝置,以免無法運作。
USBVCC |
5.電源切換/轉換電路5V→3.3V
在這個電路可以分為兩個區塊,以下圖的虛線為分界:右側是關於5V轉3.3V的電路,與前面提到的LDO作用相似,但這裡的LDO IC(LP2985)是5V的輸入電壓、固定3.3V的輸出。左側就比較具有可看性了,這個部分可以針對幾種使用情形做一個開關的切換動作。
(1).未接外部電源
(2).有接外部電源
單看左邊的部分,主要有二個輸入源(1)VIN:這是外部電源輸入的7~12V、(2)USBVCC: 這是USB接口的5V輸入電壓。透過電阻分壓、OP放大器、PMOS進行這個電源的選擇工作。
USB電源與外部電源路徑選擇架構 |
(1).未接外部電源
在外接電源沒有接上時,VIN應該為0V,接至放大器的正極(IN+)。放大器的負極(IN-)為3.3V的輸入。
對於一個OP放大器來說,輸出應該會等於正負兩極的差值乘上增益(A):
Vout = A* [(IN+) - (IN-)]
假設增益很大,使得理論上的放大器輸出電壓(紅線)超過了這個系統的電壓範圍(0~5V),則會看到這個放大器的輸出都是位於電壓的臨界值上,剛好就是0V或是5V的位置(藍線)。這個放大器在此可以作為比較兩個輸入大小的邏輯比較器。另外有一個需要注意的地方是電路上畫的OP放大器LMV358IDGKR,其實並沒有完整的畫完,少畫了他的電源供應VDD(pin8)與GND(pin4),不過以在這裡的功能來看,VCC應該是接到5V的電源。
比較器輸出示意圖 |
在此沒接上電源的情境中,由於IN-比較大,放大器的輸出就會得到0V這個低電壓。下方的PMOS閘極(Gate)在此時電壓為0V(Vgs=0V),為導通狀態。「接外部電源---5V由電源提供;沒接外部電源---5V由USB提供」。
在此可以注意到這個PMOS的方向,由於這個PMOS的Source端是接在右側,以PMOS電流方向由Source流向Drain(右至左)的常理推斷看起來不太合理,與常見將PMOS作為開關時的用法不太相同。然而,一個MOSFET通常是對稱結構,可以將源極(Source)與汲極(Drain)交換使用的,在這裡PMOS兩端對調使用即是這個用法,電流方向是從PMOS硬體上標註的Drain流向Source(左至右),能正常地做為電流開關。雖然DS通道在結構與功能上是可以相反的,但是注意到PMOS的圖示上有一個小小的二極體符號,這個寄生二極體就是固定方向的存在,這在使用上也是需要特別留意的部分。
接來則說明為何要將PMOS反過來用?有一個理由是在FDN340P(PMOS)在規格上是具有一個固定存在的寄生二極體,將此二極體的方向指向負載端,使得這個PMOS在導通或截止的情況下只能從USBVCC流到負載。此舉可以防止電流在任何時刻回灌到電腦的USB中,避免電流回流到電腦的USB Port,輕則沒事或是電腦當機,重則可能衝壞USB Port。
使用USB供電 |
當接上外部電源後,VIN是外部電源的輸入電壓,在這裡會先偵測輸入電壓是否足夠。外部電源轉5V的轉換IC NCP1117必須輸入6.5~12V的電壓才能工作。在這裡輸入電壓會先透過兩個相同大小的電阻做分壓設計,取1/2的電壓大小與3.3V進行大小的比較,若大於3.3V才能夠透過外部電源對整個系統進行供電。
正常來說我們在電源接口應該要輸入7~12V的電源,也就是分壓後應該要在3.5~6V的範圍間,如果在此區間,這個OP放大器應該會輸出為5V,並接至PMOS的閘極(Gate)。由於PMOS閘極為5V,使得PMOS處於截止的狀態(Vgs=5V),源極(Source)與汲極(Drain)間沒有電流存在。這時主要的5V電源是從外部電源由NCP1117轉換而來,並再透過電壓轉換IC(LP2985)輸出3.3V的電壓源。
使用外部電源供電 |
PMOS(T1)功能補充說明:
乍看之下,PMOS在此的功能較難以理解,這個PMOS在這裡扮演著一個二極體的角色,有防止USB短路或是接到關機的電腦時的而外電流回衝,造成非預期的電力輸出或是危險,如果僅是避免電流反向的功能,為何不使用一個二極體就好了?
以電流的觀點來看,寄生二極體的最大電流只有0.42A,與PMOS的導通電流5A比起來可說是小巫見大巫,且寄生二極體在流導通後會存在一個電壓降(Typ: 0.7V),電壓、電流的效果不及PMOS的導通電流。然而,一旦PMOS導通,因通道Vds壓降小(Rds小),電流主要會走PMOS的通道,寄生二極體不會有顯著的作用。
以電壓的觀點來看,當一個PMOS時當Vgs增大時,通道導通所造成的電壓降(voltage drop)小,PMOS在這裡不僅可以做到開關、整流,而且兩端電壓差異亦不會太大,會比單用整流二極體來的好,這還是取決於零件的特性。一般的二極體的導通Vf大約落在0.6~0.7V左右,若是使用Vf較低的Schottky Diodes,Vf也會落在0.3~0.4V左右,對於電源的轉換效率來說,都沒有大功率的PMOS來的優秀。
關於這個電路FDN340P的問題,以可參考以下網站:
http://forum.arduino.cc/index.php?topic=148541.15
https://read01.com/5Qo8eL.html