總網頁瀏覽量

顯示具有 電子電路 標籤的文章。 顯示所有文章
顯示具有 電子電路 標籤的文章。 顯示所有文章

2025年8月26日 星期二

台科大機械工程系學員 跨領域學習 韌體工程師所需的 嵌入式Linux系統建置 團體課程 專業

 



台科大機械工程系碩士班(一般生)畢業,目前在產業界擔任韌體工程師的學員(目前正在我開的團體課程學 嵌入式Linux系統建置)

----------

近期我在台北 自強基金會 開的 團體課:

1. [台北假日班]【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作

https://iws6645.pixnet.net/blog/post/347570356

2. [台北班]ARM Cortex-M based MCU嵌入式單晶片微控制器韌體開發(基礎)(自備NB)

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=14C066&fbclid=IwY2xjawMaOn5leHRuA2FlbQIxMABicmlkETF1VkszbjV4bVlwZWhwaFM5AR54cO77f0vpcPGkVxXXfJZQr3nNPIwgbYcNXRmyD1zyy0Kf9HKIyPuJFS19PQ_aem_zUcXH3T5HMFxf9iKs-bC3w

(這門有可能會延期到9月13開課,因前面有課程)



2025年7月28日 星期一

我於8月份開在 自強基金會(台北)的 基礎 電子電路 課程 (後面還會有另一門ARM Cortex-M4 based STM32 MCU韌體基礎課程)

 我於8月份開在 自強基金會(台北分部)的基礎電子電路課程  (後面還會有另一門ARM Cortex-M4 based STM32 MCU韌體基礎課程)

🎉🎉🎉熱烈招生中🎉🎉🎉

歡迎有興趣的朋友們踴躍報名~~

.

[台北假日班]【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作

✅報名連結➡️ https://edu.tcfst.org.tw/web/tw/class/show.asp?courseidori=14S026

✅課程代碼:

14S026

✅上課時間:

2025/8/16~9/6(六),每週六,9:00~17:00

✅上課時數:

28 小時

✅上課地點:

台北教育中心(台北市中正區博愛路80號3樓)

✅課程大綱:

1. Tinkercad軟體平台簡介、註冊與操作

2. 直流電與交流電簡介

3. 電壓與電流基本原理+實驗

4. 基本儀器(電表+示波器+電源供應器+訊號產生器)介紹+實驗

5. 電阻、電容、電感簡介+實驗

6. 歐姆定理+實驗

7. 串聯與並聯原理+實驗

8. KCL與KVL 定理 + 實驗

9. 基本分壓與分流定理 + 實驗

10.基本RC與RL電路原理+實驗

11. 二極體元件介紹+實驗

12. 電晶體(BJT、MOSFET)元件介紹 + 實驗

13. 運算放大器(OPA)簡介+實驗

14. 基本交流電路原理觀念簡介

15. 數位訊號與類比訊號之差異

16. 數位電路基本元件: 邏輯閘+實驗

17. 數位電路基本元件: 正反器+實驗

18. 組合邏輯電路與循序邏輯電路簡介

19. 基礎常見電子元件(如: 七段顯示器、Relay繼電器、直流馬達等元件)之基本應用原理+實驗

20. 單晶片微電腦/微控制器(MCU)之應用初探 : Arduino UNO開發板之簡介+實驗

✅報名連結➡️ https://edu.tcfst.org.tw/web/tw/class/show.asp?courseidori=14S026


 後面還會有另一門ARM Cortex-M4 based STM32 MCU韌體基礎課程

---------

適合:

1. 電機電子系畢業,但對於電子電路缺乏基礎的人士。

2. 不熟電路基礎 的 軟韌體工程師 ( MCU/SoC non-OS/RTOS/Linux/Android 底層軟韌體/驅動程式 相關的工程師 ) 。

3. 非電機電子電路背景但有興趣學習的人士。

4. 其餘對於電子電路基礎原理與實驗有興趣的人士。

--------

#嵌入式系統 #MCU #韌體工程師 #嵌入式系統課程 #微控制器 #韌體工程師課程 #Embedded_Linux #電子電路 #電路基礎 #電子學 

#非電機電子科系 ​ #SoC 

#基本電學

#電路學


-----

歡迎各方洽談合作,務實/踏實追求共好。歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。

孫文良 個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

2025年4月22日 星期二

【全新課程招生中】嵌入式物聯網課程~適合 電資 與 非電資 本科系背景之學員報名~跨領域

這兩門是由陳老師(同時也是本園區過去的學員)開在 清大自強工業基金會(台北分會)的課程,針對 #非本科系#跨領域 的學員所設計。陳老師過去從水產食品科學系跨領域至電機電子/資訊工程領域,轉到電資工程領域,曾擔任:

- 研究中心韌體研發工程師
- 業界的韌體研發工程師
- 明新科大資工系 講師

本課程會依照我過去的學習經驗及業界經驗,分享給同樣想跨領域但沒有切入點的學員們,透過這兩門入門的課程建立自信心與成就感。


🙋什麼人適合報名?
1.非工程科系,想跨領域到科技業的人(文科、社會科系、生物科系等,科系不拘)
2.想轉職到 電資工程 的 嵌入式系統 軟韌體開發/物聯網技術方向的人
3.對嵌入式系統、物聯網系統有興趣/想體驗的人
4.物聯網系統工程師
5.軟/韌體工程師
6.其它有興趣或有學習需求的學生、社會人士
歡迎各界有需求之學員報名參加~


🟥【適合非本科系】嵌入式/物聯網裝置開發平台Arduino MCU實作入門(自備NB) 熱烈招生中
https://jimsun-embedded.blogspot.com/2025/04/20255-arduino-mcu32.html

🟥【適合非本科系】32位元物聯網MCU/SoC平台ESP32基礎實作(自備NB) 熱烈招生中
https://jimsun-embedded.blogspot.com/2025/04/20255-arduino-mcu32.html


🌟講師個人簡歷:
https://sites.google.com/view/chenyingru/

🌟個人轉職成功心得文:
https://jimsun-embedded.blogspot.com/2021/07/22k.html?fbclid=IwAR11pdM9nWJ2m-EDDV2MQPE0x_Gpino1hIEM18xBEFbjV6poMFLpM7pbw_4

🌟其它軟韌體/嵌入式系統/物聯網/程式語言/基礎電子電路 等相關課程,詳情可參考:
https://jimsun-embedded.blogspot.com/2020/08/blog-post_24.html

#線下課程 #韌體入門 #韌體工程師 #轉職 #一技之長 #嵌入式 #MCU #微控制器 #物聯網 #小班制 #台北課程

-----

歡迎各方洽談合作,務實/踏實追求共好。歡迎各方洽談合作,務實/踏實追求共好。歡迎電機電子資工本科系學員,也很歡迎非電機電子資工本科系的學員加入學習嵌入式系統技術/尋求轉職成為研發工程師的行列。

孫文良 個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

2024年6月24日 星期一

針對 非電機電子背景學員 的 基礎硬體電路課程 (開設於清大自強基金會之台北分會)

 

近期我將開在 清華大學財團法人自強工業基金會 台北分會 開設:  【適合非電機電子科系背景學員的電子電路入門】使用Tinkercad平台學習電子電路原理與實作 課程

很適合沒有電機電子電路背景(如非電資工程本科系出身的朋友,或者是出身於電資工程本科系但背景是偏向純軟體、但又需要用到基礎硬體電路觀念的朋友,例如需要從事韌體程式與軟硬體系統整合之開發者)來學習。

上課時間:2024/8/13(二),8/14(三),8/20(二),8/21(三)共四天 9:00~17:00共28小時

課程課綱詳細資訊與報名網址如下:

https://edu.tcfst.org.tw/web/tw/class/show.asp?tcfst=yes&courseidori=13S085



-----

歡迎各方洽談合作,務實/踏實追求共好。

個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章


2023年5月24日 星期三

嵌入式「系統」不是純軟體,包含軟體與硬體(亦包含電路)。推薦全華科技出版的一本電子電路相關書籍


多年前還在讀碩士班時,覺得這本電子電路的書籍(如下圖,來源連結)很不錯(並非刻意幫該書籍打廣告)。雖然後來是以嵌入式系統軟硬體整合開發為主(包含沒有作業系統以及有作業系統的系統軟韌體開發以及周邊電路整合設計),但從高職開始接觸這些始終覺得很有親切感。


來源連結


不過印象深刻的是,當時在成功大學工程科學系資訊組(資訊工程與應用組)的研究所讀碩士班時,該組的所有師生,除了自己之外,幾乎完全沒有其他任何人對於類比電子電路有基礎及興趣....(甚至對數位電路有興趣的也不多),只有一位大學部專題生跟著我做一些相關方面。

其實對於物聯網(IoT)之中的感測單元/嵌入式系統來說,上述的方面絕對是重要的,否則如果一個IoT系統之中的感測電路子系統所產生的訊號是錯的,導致raw data是錯的,如果這些基本的輸入內容本身就是有問題的,根本不能期望用了(輸入到)什麼酷炫神奇AI演算法並以上層軟體整合執行之後,系統的結果就會正常,就好比人吃白飯,不可能會拉出金銀珠寶;又好比不可能用純語音訓練出來的語音model去做影像辨識、不可能沒有任何硬體單元之下就可以拿到感測資料(精確來說,世界上沒有甚麼「純軟體」這種事情,只是藉由可程式化的方式(分層)操控電腦這個「硬體系統」去完成功能)。但坦白說從碩士班許多同儕、業界的同事發甚至主管的狀況來看,「以為數據資料處理辨識演算法可以取代感測訊號處理電路」是某些純軟體的人有些觀念錯誤的地方(包含業界一些老闆和主管),但是成大工程科學系其實在大學部有一些電路相關的必修學科課程,也有微控制器系統相關的必選課程,但顯然對於許多人來說,修課的效果可能是極為有限,許多人其實有修過課,但就幾乎好像是沒修過一樣。而其實我在一些選擇走資訊軟體方向的電機系畢業學生身上也有看到一樣的狀況,並不是工程科學系的學生才有如此的狀況。

此外,也有一些具備電路、MCU韌體開發相關背景的資深業界主管,誤以為自己所做的系統不是嵌入式系統。換句話說,很多方面都問題來自於自身不擅長的跨領域問題(雖然以學校科系來說,工程科學系號稱是主打跨領域的系所)。

嵌入式系統是具備特定功能的電腦「系統」,包含硬體與軟體,絕對 不是 只有作業系統或者只有上層應用程式,很多人常誤以為嵌入式系統就是有跑作業系統軟體的系統,這也是常見的錯誤認知。事實上,多去查詢基本定義即可得知,歐美的專業領域課本也常列出,例如Muhammad Ali Mazidi等人所著作的「The 8051 Microcontroller and Embedded Systems (2nd Edition)」,從書名就可理解我上述所說,該原文書的進一步詳情可參考留言處,而這類原文書通常會將這些基本名詞的定義做出說明。

又要講實話了,台灣有很多人很愛嘴上談「學術」兩字,但是實際上似乎大多不太會想去把基本名詞定義給弄清楚,這是蠻奇怪的事情,如果重視學術就該有基本的嚴謹度,而不是只是把「學術」兩字掛在嘴巴上好像很高尚,但卻缺乏實質的內涵,偉大的工程開發貴在對細節的用心,包含這些名詞基本定義和用語。


-----

歡迎各方洽談合作,務實/踏實追求共好。

個人簡歷: https://sites.google.com/view/wenliangsun/


‼本園區開設之技術課程進一步詳情請參見下方blog網頁的課程介紹👇:
本學習區之Facebook粉絲頁如下:

--------------------------

孫文良 (阿良的嵌入式系統技術學習區)

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章


2021年7月15日 星期四

多次參加外商IC設計公司所舉辦之技術研討會的感想

參加許多次外商IC設計公司的研討會 以及 使用過這些廠商的IC的經驗,覺得ST以及ADI這類廠商真的完全不只是IC design house ,又或者應該說,IC design house應該就要像這樣。

從許多角度可感受到他們的系統設計能力很強 (從硬體角度就是IC外的那些電路設計相關議題,包含很多類比領域的電路,例如電源電路),也包含到軟韌體和開發工具鍊,且涵蓋的應用方向領域極廣,相當完整,而且在推廣方面也蠻積極的。

並不是說外國的月亮就一定比較圓,但覺得許多台廠公司真的還有著許多可加強的空間,也希望台廠公司能多重視 系統設計&整合 的能力和人才,否則在大部分的狀況下,真的只能繼續跟在人家後面賺辛苦錢。

從另一方面來說,這或許也反映了不同國家之間的學用落差 & 大學/學術界 狀況的差異。

而目前我個人開設一些嵌入式系統軟韌硬體課程,其目的也是希望能減少台灣的學用落差

 

孫文良 (阿良的嵌入式系統技術學習區)

個人簡介: https://sites.google.com/view/wenliangsun/

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

2021年2月17日 星期三

這個學習區開設的課程目標是什麼? 要找科技業軟體開發相關的工程師工作,不是靠名校碩士學歷或者刷Leetcode比較快嗎?

【這個學習區開設的課程目標是什麼? 要找科技業軟體開發相關工程師工作不是靠名校碩士學歷或者刷Leetcode比較快嗎?】

有些人可能會聽說自己有同學或朋友出身於純軟體背景,在大公司當工程師,也沒有曾經透過架構相對較簡易的MCU去學習嵌入式軟硬體的基本基礎和原理,但也是能去大公司任職工程師的工作。

沒錯,很多大公司主要只看學歷文憑或者工作資歷。但事實上,基礎不紮實的工程師甚多,不少人只了解自身所被分配到的工作範疇,而不一定清楚整個系統的架構,也沒有紮實的理論基礎觀念。

這個園區的課程,沒辦法給你那些大公司喜歡看的表面學歷文憑學位或;也不是教你刷較偏向軟體職務的公司可能考的Leetcode性質白板題的那種課程;也不會教你死背死記資料結構的常見面試題目,然後只為了應付面試時的白板題(那個看ptt科技版的面試考題比較快)。

另外我個人認為,如果是做純韌體或一些嵌入式系統相關的部分,刷Leetcode並不一定很切合實際工作內容(嵌入式系統軟韌體開發的工作也有很多種,例如如果負責周邊裝置驅動程式或韌體,假設有個bug實際上其實是因為電路上的某個零件沒焊上,這種看一下板子和電路圖就能快速解決的問題,但不少純軟體背景又缺乏經驗的工程師總是去查軟體程式碼。或者只是因為不夠懂軟硬體整合而產生的bug,請問刷Leetcode的文化適用於所有軟韌體工作嗎? 有很多嵌入式系統工作,例如一些MCU based的嵌入式系統韌體開發,是韌體和一些電路觀念都必須懂的,不少公司會要求韌體開發人員同時要會設計一些介面電路並與韌體作系統整合性的設計,其實作嵌入式系統軟韌體開發,很大機率時常要去整合硬體系統架構,這些基礎都不是刷Leetcode能得到的,當然也不一定是去讀碩士班洗學歷就能得到,所以建議實際客觀去看實際的職缺所需)

但是這園區的課程可以給你踏實的嵌入式系統軟韌硬體專業相關基礎內容與知識,讓自己知道自己在公司做嵌入式系統軟韌體開發工作到底是在做什麼,以利於視野和長遠發展。這些課程內容主要是想補足大多數學校甚至是產業公司可能都沒辦法仔細教你的那一塊(在嵌入式系統軟韌體開發的方向上)。

如果想去那種只要文憑的公司上班就已經覺得滿足,那確實不一定適合這些課程,建議直接去洗個公司喜歡看的學歷然後死硬的準備傳統面試考題比較快。

這個園區開課不只是想賺錢(以一對一教授專業課程且又可以客製化調整課程內容的狀況來說,目前的收費是真的偏低,重點也是想要真正協助到學員能在產業有長期受用的專業基礎),能協助到學員實際且長遠的發展(就專業基礎面向來說),是這個學習區的設立初衷。

註: 再次強調上面提過的內容,嵌入式系統軟韌體的職務也有種類之分。如果是MCU韌體類的職務大多是希望工程師除了具備MCU基礎架構與韌體撰寫能力外,同時也懂一些周邊介面電路甚至有基礎設計能力,這類職務面試時可能會考些基本的電子電路原理,而非leetcode性質的這種較偏向純軟體職務的考法;而如果是較偏向純軟體的Embedded Linux系統(On 網路多媒體類的SoC平台)的軟韌體工程師的職務職缺,因為很多部門主管也是較偏向軟體背景,就有可能會考leetcode性質的東西或者偏向資料結構的考題。但不論哪一種工作職缺,只要是嵌入式系統,學習基礎、有系統軟硬體觀念,我個人認為才是最重要的,過去也曾經看過許多表面上是Embedded Linux系統的bug其實只是基本的硬體電路問題,但是因軟體工程師沒有相關專業知識背景而只知道要去不斷地往軟體程式碼的方向去找問題,導致時間的浪費(就算主管也未必會知道要去懷疑電路)。整體來說,不一定所有公司/單位/職務的面試就會完全符合/切合該職務的工作內容需求。

某些業界公司的軟韌體單位主管通常因為自身比較缺乏稍微跨領域的背景,尤其是有跑OS的產品的軟韌體單位的許多純軟體背景的主管和工程師對於基礎類比和數位電子電路的觀念是完全陌生的,許多這樣的單位的主管只喜歡用自己比較知道的資料結構和OS觀念來考面試者,而聽說現在某些公司的軟韌體單位流行用leetcode題目去面試/篩選應徵者。

但是,這樣的方式真的客觀嗎? 真的符合所有嵌入式軟韌體職缺工作內容之所需嗎?

再舉個例子,以嵌入式系統平台而言,GPIO是再常見不過的周邊(peripheral)單元,如果只是靠leetcode來學習/檢驗面試者,請問下面這張MCU的AP note中的GPIO等校結構圖,有多少純刷leetcode的人能理解其基本原理呢? 其實光是要對GPIO基本應用所作的初始化配置的韌體就需要理解這些了,否則難免會有Bug。而純軟體背景又只刷leetcode的人有辦法理解何謂push pull/open drain/floating這些屬於周邊內部基本常見名詞的基本含意嗎? 如果只刷leetcode而導致不能理解這些,軟韌體工程師如何能在不完全依靠硬體工程師的協助下獨力發現並解決問題呢? 所以嵌入式系統軟韌體工程師的面試來說,只用純軟體或者只用資料結構、OS等資訊工程系所的傳統學科觀念的角度去學習和篩選面試應徵者,是完全客觀、都符合工作內容所需的嗎? 主管可以都不懂電子電路嗎(包含類比與數位的基本觀念)? 如果周邊的初始配置或者外部電路有小問題時(當硬體工程師也不知道硬體有問題的時候),例如I2C的pull-up resistor沒接、而內部也沒配置啟用,只有軟體背景有能力解決嗎? 有辦法釐清是軟韌體還是硬體的問題嗎? 需要浪費多少無謂的時間? 大家可以自行思考看看。


 STM32 AN4899 Application note


而反過來說,也有不少公司是只有懂上層純軟體(應用程式)和最底層的電路的人,而完全沒有OS觀念。


相關文章:  【課程介紹】本學習區已開設 & 未來即將開設之嵌入式系統軟韌體技術課程 & 課程特色!

2020年12月3日 星期四

從電機電子工程專業的一個小小議題來看台灣的大學學術界 與 研究所碩博士

有熱心網友覺得上一篇和硬體電路基礎相關的技術教學探討文章的內容太硬(https://jimsun-embedded.blogspot.com/2020/12/arduino.html),並非每個人都具備相關基礎知識,所以他建議可以先列舉出重點。

我完全可以理解他所說的,也很感謝這位熱心網友的反饋(真心感謝),這是很好的建議。

其實我一開始也有想到這個方面,曾考慮過要不要講這麼細,要不要直接歸納結論讓初學者比較能吸收

但其實,嚴格來說,同時也是坦白跟大家說,這文章內容可能是還不到高職電子學基礎理論難度的內容 (或者差不多。當然實際上能在實務上掌握的學生很少,不管是高職生、大學生或研究生,我相信即便連許多電機博士都不一定熟悉,除非他本身長期是做很直接相關的方向且有實際動手參與開發)...我本身是讀高職上來的,到後來讀所謂名校碩士班,其實發現許多人事物方面沒有比較專業

而現在多數人都至少有讀到大學甚至碩士以上

所以這樣反差比較襯托之下,大家就能知道我們的大學、研究所在實際上有多麼虛有其表...也應該比較能理解我平常為何要講這麼多關於大學/學術界務虛不實在的事情

這是希望大家能多務實、多重視實際面,而不要只看表面學歷、頭銜、職務甚至當下的薪水高低來評斷一切,如果要找到好的人,一定要透過一些用心的方式實際去看一個人的實際專業經驗水準、對專業的熱忱、對事情負責任的態度等等。因為就算是一位電機博士,即便學位很高,也早就都修過學校相關課程,甚至發表了很多學術論文,但也未必就懂高職生所懂的專業。我也曾在許多名校碩博士學位論文甚至等級某些工程應用領域蠻高的SCI期刊論文中看到一些很基本的錯誤

而這篇文章嚴格來說也不能算(按照我自己對自己的標準不敢稱作)是教學,可能只能算是探討,我自己覺得自己也不是做這方面的專家。還有一個目的就是為了呈現上一段文字所說的學歷經常只是表面的事實 (除非我們的大學的教學和研究內容相當紮實,但實際上是充滿著一堆大外行)

二來,這些文章如果只有講重點結果,就變得跟原本許多人只想拿Arduino來做淺層應用差不多,知其然卻不知其所以然,也有可能會變得和一些表面上是工程實務應用但是實際內容卻很空虛的學術界論文類似。

畢竟,魔鬼藏在細節裡,從細節內容處即可見真章

【你所不知道的Arduino】Arduino UNO電源選擇電路之設計機制與動作原理分析 & 實際進行實驗量測結果之差異探討

【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章

歡迎透過合法的方式分享此文內容,若要轉載/轉貼,請明確貼出此原始連結並標示作者基本資訊請勿抄襲及非法轉貼(例如擷取內文同時並未註明出處)

有鑑於近年來許多學校師生、maker技術愛好者甚至產業公司都有許多人在拿開源的Arduino板子去作工程應用,但是卻比較少人(尤其是學校師生)藉由這個軟硬體都開源的平台去探討與學習一些軟硬體技術細節。許多人只拿板子來做應用,相當可惜。事實上,因為這是一款軟硬體開源的平台,所以可以從其函數庫的程式碼以及電路設計中去找到很多可以學習專業知識和技術觀念的地方。

小弟不才,希望分享一些內容供讀者們參考

這篇文章來針對板子上的進行簡單的分析/探討/說明/拿手上有的UNO板子進行量測實驗,以一個韌體開發人員對於嵌入式系統發所需的基本硬體觀念來闡述(或許不會太深入講解硬體細節,自己也不是專攻硬體電路的電路專家,過去幾年主要的工作是偏向嵌入式系統軟韌體,對硬體方面比較常接觸的就是一些基本的介面電路),希望藉由文章讓初學者不會太害怕了解較簡單的硬體電路原理。

P.S. 因為有時候整理校正這種字數很多的文章到想睡覺時會整理到腦子不清楚,有時會導致誤將自己在記事本寫好的某段文字貼到不對的段落,往往事後自己重複檢查時才會發現Orz...已經盡量檢查校正,若有明顯錯誤還請大家熱心提醒,感謝

--------------------------------

如文章標題,這偏要探討Arduino UNO板子的電源選擇電路之動作原理分析 & 實際以手上的Arduino UNO板子(可能與官方版本UNO有差異)量測實驗,先從原理面來分析。

Arduino官方的Arduino UNO開發板的電路圖[1],請將此電路圖開啟並參照比對,為了方便說明,內文中的電路圖會截取[1]部分電路,並加上一些框線來配合說明。

如果要從Arduino UNO官方版本板子上面所提供的電源線接孔去輸入電源(當然是DC直流,這個應該不必多贅述),有兩種選擇

() USB供電,如下圖

圖1


(
) 7~12V DC電源輸入孔(DC5.5*2.1mm電源插座母座接頭,也被稱DC Power JackDC Jack,以下簡稱DC Jack),雖然這種供電給Arduino板子的方式現在應該比較少人用。

圖2

市面上其他一些進階版本/簡化版本可能有些不同,這裡以Arduino官方的版本的UNO電路圖為主來說明。

有些電學背景或經驗的讀者就會好奇,Arduino板子是如何藉由電路設計去決定哪一種電源作為ATMEGA328P MCU系統的電源

由圖3可看出 7~12V電源孔(DC Jack)母座的第2(PWRIN)即為電源正極輸出端,在經由編號為D1的二極體之後(可防止逆向電壓輸入以免導致板子上面元件因此毀損,因為當二極體於加上逆向偏壓時PN兩端是開路,也就是不導通狀態),會接到電路上標示為VIN端之處,並輸入NCP1117 LDO穩壓IC穩壓出5V,並且這5V然也有輸入另一顆LDO去穩壓輸出3.3V(如圖4LP2985-33DBVR穩壓IC)


圖3 ([1])


再來看到圖4,如果VIN7~12V,經由兩個10K的電阻(RN1ARN1B)分壓後,假設分到大約3.5V~6V(對應接到DC5.5VIN的電壓大小,分一半,也就是VIN/2)的壓降在編號為RN1B的電阻(下方的電阻)上面 (也就是TP_CMP點。可能有人會疑問中間不是也有接到LMV358嗎,但OPA的輸入阻抗極大,所以這邊可先這樣看)

圖4 ([1])


FDN340P是一顆PMOS(PMOSFET,不清楚的讀者可自行google參考相關基礎)[2],在這裡將其作為開關用圖(D極與S極的導通on與截止off)

圖5 ([2])


LMV358IDGKR是一款內含兩組OPA(Operational Amplifier)IC [3],如果我沒看錯或漏看的話,LMV358IDGKR這顆IC本身所吃的電源VCC+接點與板子電源的連接狀況主要是被標示在[1]電路圖的最左上角上(之前我眼花漏看了,經網友提醒後更正)。

圖6 ([3])

7~12V電源透過DC Jack接到VINRN1B分壓到3.5V~6V(對應7~12V)的電壓,而LMV358 OPA元件(U5A)在這裡是被用來作為類比電壓比較器,當第一組OPA的非反向輸入端(+端,也就是這顆OPA的腳位3),這個電壓如果大於加在反向輸入端(-端,也就是這顆OPA的腳位2)3.3V時,LMV358 OPA(U5A)作為比較器會輸出一個類似我們數位電路的邏輯1的電壓(high level voltage)FDN340P這顆PMOSGate(閘極),也就是TP_GATE點,這邊的設計原意和目的應該是希望VGS(也就是VG-VS) > Vth,讓這顆PMOSDrain(汲極)Source(源極)不導通(開路)但實際用手上的UNO板子進行量測的結果與此有落差(後續實驗結果與內容會敘述,如#1)

另外,因為這顆PMOSD極和S極之間還有一個二極體,所以我們要來分析看看這顆二極體是否會順向導通。從圖3可看出當7~12V電源如果有接上(DC Jack)NCP1117ST50T3G這顆LDO穩壓IC會穩壓並輸出5V,而這5V與上述PMOSS極,同時也是PMOS上面內藏的二極體(body diode)N極有相連,所以此時不論有無接上USBVCC時,該二極體都會因為無法得到足夠的順向偏壓而不會導通(矽二極體的順向偏壓所需導通的電壓也就是障壁電壓理論值是0.7V。FDN340P Datasheet內容來看,經過這個PMOS內藏二極體body diode的電流與順向偏壓的關係可參考圖7第一張的IV特性曲線圖)

7 ([2])

所以這狀況下(邏輯1的電壓(high level voltage)FDN340P這顆PMOSGate)FDN340P這顆PMOSDrain極和Source之間極仍為開路(不導通,所以來自USB的電壓源USBVCC不會連接到+5V(這應該是設計的用意,但實際用手上的UNO板子實際量測的結果與此有落差,後面內容會提及如#1。細心的讀者應該有注意到,穩壓IC輸出的5V同樣也會接到PMOSS)

圖8 UNO電路設計目的原意  (截取並修改自[1])


而板子上主要ICVCC都是接到這個+5V端,無論是拿來作為USB/UART轉換器的ATMEGA16U2(在某些UNO板子被替換成專用ICCH340而不是用ATMEGA16U2 MCU、或是讓使用者編寫程式進行控制的ATMEGA328 MCUVCC都是以這個+5V端的電壓做為電源),所以可看出在這種狀況下,Arduino UNO板子是選擇來自DC Jack7~12V電源並經穩壓後的5V作為電源。

而另一種狀況,也就是如果在沒有7~12V電源到DC Jack,而是接上USB電源線(USBVCC端有5V)的狀況下,RN1B電阻上面(TP_CMP端點)沒有壓降,LMV358 OPA的非反向輸入端被RN1B電阻pulled downGND,所以LMV358 OPA作為比較器輸出一個觀念上類似我們數位電路的邏輯0的電壓(low level voltage)0V去輸出到FDN340P PMOS的閘極(也是TP_GATE),按照一些書籍和網路資料的輔助說明,該處設計的原意目的似乎是希望這樣的狀況下讓VGS < Vth(但是實際上狀況也有落差,因為板子剛上電時,PMOSS極與D極還沒導通,此時VS應該是0V。所以實際上須要靠PMOS上面D極與S極之間的二極體協助完成目的,後面會有較詳細的相關說明如#1),按照PMOS特性,當VGS < Vth的時候,S極和D極導通,所以USBVCC可以藉由PMOS連接到+5V端做為UNO板子的系統電源(當然也有輸入另一顆LDO去穩壓輸出3.3V)

圖9 UNO電路設計目的原意  (截取並修改自[1])

: 包含上述提到的OPA元件作為比較器輸出的邏輯0與邏輯1的部分,其實實際上這仍然是屬於類比電壓,因為OPA是類比式的電子元件,所以這樣的敘述方式,就硬體電路設計而言可能沒有很嚴謹,但希望讓一些純軟體背景、頂多只懂數位硬體觀念的讀者有個基本的了解(許多相關文章也是這麼描述)。

以上是原理面的分析探討,某些國內外書籍和網路文章也有類似部分的教學(如[6]與[7])

--------------------------------

重頭戲來了,實際以手邊Arduino UNO進行實驗量測狀況

我手上的幾塊Arduino UNO板子的FDN340P PMOS的部分是被HM2301B(IC標號A1SHB) PMOS所取代(如圖11[5]),不確定是否還有一些電路的部分與官方的UNO版本有差異(畢竟這些板子就算被改過也未必都方便拿得到修改細節後的確切電路圖),另外也曾經看過某塊UNO板子的RN1B(12照片中的R14)的部分,似乎直接被一顆電容器取代。

圖10

圖11 ([5])


圖12

@實驗1: 只接DC  Jack電源(DC 12V輸入或者USB電源以及DC Jack電源(DC 12V輸入)都接上

(註解: 因我手上應該的UNO板子應該不是官方版本的UNO,所以下面講的LMV358可能根本不是LMV358而是LM358,導致電路行為異常,下面會有#1針對[8]進行相關說明)

類比電壓比較器的反向輸入(LM358[和官方電路指定IC款式不同] 裡面第一組OPAPIN 2) = 3.3V

類比電壓比較器的非反向輸入(LM358 裡面第一組OPAPIN3) = 5.65V

類比電壓比較器輸出(LM358 裡面第一組OPA的輸出PIN 1) = 3.77V

HM2301B PMOSG極電壓VG = 3.77V

HM2301B PMOSS極電壓VS = 5V

HM2301B PMOSD極電壓VD = 5V

LMV358 裡面作為比較器的OPA的反向輸入端(PIN2)為板子上原先設計的給入電壓3.3V,而量測來自非反向輸入端(PIN3)RN1B的壓降為5.65V(也就是12V扣掉二極體D1的順向偏壓0.7V之後大約是11.3V的一半),所以理所當然的,LM358(和官方電路指定的LMV358是不同的款式) 裡面第一組OPA的輸出(PIN 1)約為3.77V(作為類比電比較器來應用),也就是TP_GATE,同時這個輸出也接到HM2301B PMOSG極,所以VG也約為3.77VVS5V(來自DC Jack再經過AMS1117穩壓IC輸出的5V,如圖13),因為VGS (-1.23V) < Vth,至於Vth是多少可參考HM2301B Datasheet[5]內Page 3左下方的IV特性曲線圖(如圖14,但要看懂這些需要一點經驗與思考)VGS如果是-1.23V其實已經足以讓這顆PMOS處於一定程度的導通狀態(若要讓PMOS截止,則VGS在相關條件下的合理範圍內要盡量大一些,以這邊的狀況來說就是希望讓OPA作為比較器輸出5V到PMOS的G極,所以比較器輸出電壓同時也就是VG,但現在該電壓的大小只有3.77V)所以此時HM2301B PMOSD極和S極是導通的,VSVD都是5V。
圖13 (截取並修改自[1])



圖14 ([5])

而在只接DC  Jack電源(DC 12V輸入而沒接USB電源線的狀況下是這樣的結果,這就是和上述原理所設計的目的不太一樣的地方了(後續內容#1之處會提及主因)照理說在有接DC  Jack電源(DC 12V輸入)的狀況下,設計原意應該是希望PMOSG極有高電壓(數位邏輯1)之下的D極和S極之間不導通(開路),以隔絕來自USB的電源(USBVCC)灌入+5V端。不確定這是否是接上PMOSG極之後才拖下來的電壓(3.77V)? 但從量測結果看起來,D極和S極確實沒截止(沒斷開)而是導通的。

不確定是否是因為有一些非官方版本的UNO電路設計的差異造成這些狀況(後續內容#1之處會提及主因),個人覺得關鍵是如果OPA 輸出(TP_GATE)PMOSG極的電壓夠大,這樣VGSVG -VS)就不會小於Vth PMOS導通條件是VGS < Vth,與NMOS的狀況相反),如此就會讓有接DC Jack電源的狀況下,PMOSD極與S極不導通(截止)。

(: 按照LMV358 Datasheet,這顆IC的最大Supply voltage5.5V,通常輸出電壓會有個Swing範圍,看是比VCC低多少)

否則本來就會因為OPA輸出3.77V而導致VGS (-1.23V) < Vth進而導致PMOSD極和S極導通,而失去了原本希望此時PMOSD極和S極應該是不導通(截止)的設計用意。

曾經想過,不知會不會是官方為了區分官方與非官方版本的UNO所故意留下的伏筆?但如果看官方給的UNOlayout應該也會得知才對

#1: 2020/12/04凌晨更新:

按照對岸網友的討論與實驗[8](和我上述遇到的狀況一樣,看起來也是一篇原創文章),似乎是因為我們手上的UNO板子上面的LMV358根本都被換成了LM358 ,所以在比較器高電位輸出時的電壓才會只有3.77V左右而導致VGS (-1.23V) < Vth進而導致PMOS沒辦法進入截止狀態,而網友將UNO板子上的OPA IC(原先官方指定的LMV358的位置)明確換成LMV358 IC,結果就正常了。

從外觀包裝表面上來看,LMV358和LM358是 Pin to Pin compatible(IC腳位兼容)。但在實際使用上,當然須去了解這兩顆IC之間的特性差異

這邊針對這部分做了一些基本的調查,LMV358有Rail to Rail軌對軌輸出特性(輸出的電壓範圍可和工作電壓的範圍相同),能輸出接近5V的電壓,能使得VGS > Vth,進而讓PMOS處於截止狀態,USBVCC端不會與S極的+5V端導通。

不過因為現在較少人會使用DC Jack供電給Arduino UNO,所以這件事情(LMV358經常被換成了LM358)就也沒那麼明顯(應該是因為比較不妨礙常用到的主要Arduino UNO應用功能),所以才會沒有經常被拿出來討論

(Ref[8]: 【原創】為什麼你的Arduino會漏電, https://www.arduino.cn/thread-90169-1-1.html )

而實際上,過去較舊版本的Arduino UNO官方版本電路圖[9]似乎也曾經拿LM358來做一樣的事情(當然當時的狀況可能也還會有些其他差異,或許當時這樣是OK的,詳情我不清楚),如圖15,可參照: https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf

整體來說大概是Arduino官方後來也逐漸改進了電路設計

圖15 ([9])


@實驗2: 只接USB電源

類比電壓比較器的反向輸入(LM358[和官方電路指定的LMV358不同款式] 裡面第一組OPAPIN 2) = 3.3V

類比電壓比較器的非反向輸入(LM358 裡面第一組OPAPIN3) = 2V

類比電壓比較器輸出(LM358 裡面第一組OPA的輸出PIN 1) = 0V

HM2301B PMOSG極電壓VG = 0V

HM2301B PMOSS極電壓VS = 5V

HM2301B PMOSD極電壓VD = 5V

這個情況之下的量測結果看起來就比較符合原先的設計目的。不過實際上,因為現在沒有了來自DC Jack(7~12V)電源電壓到+5V端點,而+5V端點是連接到PMOSS極,所以在電路剛上電的時刻,VS應該是0V,而VG也是0V,所以VGS(0V) > Vth所以PMOS的應該不會導通。但是PMOS上面的二極體的N極在電路剛上電的時刻如同VS0V(同一點),而二極體的P極是USBVCC5V(因為這時USB電源有接上),所以剛好在PMOS的body diode(內藏二極體)順向偏壓的狀況下讓這個二極體導通 (P極與N極導通,但這時這二極體的兩極前後的電壓會有落差,落差值就是順向偏壓)。這時候,S極有電壓了(此時VS電壓大小為USBVCC5V扣掉內藏二極體的順向篇壓),而G極依然0V,就使得VGS < Vth條件成立,導致PMOSD極和S極導通,所以這時候量測到的VSVD都一樣是5V而這時PMOS上面D極與S極之間的二極體變回不導通,因為這時候二極體的P和N這兩端的電壓就也都是5V(VSVD),所以VSVD之間也不會有因二極體須要克服障壁電壓所需之順向偏壓的壓差。

值得注意的是,若對照官方UNO電路圖的VIN(PC147uF電容器+極那一點的電壓),在這個沒有接電源到DC Jack的狀況下,量測到VIN仍有4.2V的電壓(還沒研究其原因),所以RN1B分到大約2.1V,並且連接到LM358裡面的第一組OPA比較器的非反向輸入端,這個2.1V小於反向輸入端的3.3V所以OPA作為比較器輸出0VPMOSG極,所以VG0V,按照PMOS特性,此時D極和S極導通,USBVCC灌入+5V端,作為UNO板子的系統電源。

也因為有做實際實驗量測,把UNO版子這些電源相關的部分的一些元件的位置都弄清楚了(沒看Layout),這邊標示出來給讀者們參考,如圖16 (PMOS左邊的那顆綠色的扁扁的元件是接在USB VCC電源端的保險絲,當然這類元件也不一定都是綠色的,當時標註照片時我沒標註到所以就在這裡用文字補充說明)

圖16

另外關於一些與官方UNO板子的IC型號的差異,官方UNO板子電路圖上的U1也就是NCP1117 穩壓IC,我手上的UNO板子是被替換為AMS1117,在一些細節之外,在Arduino UNO板子上面的基本應用方式大致上應該差不多(細節我沒去仔細深入比較)而再次如前述內容強調LMV358 IC在許多非Arduino官方的UNO板子是被用LM358 IC取代(這就是關鍵了,我手上的UNO板子應該都是如此,才導致上述的實驗結果,與[8]遇到的狀況一樣。但這狀況在大多數人的應用情況和使用習慣下,大概是因為不太妨礙到主要常用的功能,所以沒有經常被提出來討論)。


Ref:

[1] Arduino(TM) UNO Rev3 schematic, https://content.arduino.cc/assets/UNO-TH_Rev3e_sch.pdf

[2] FDN340P, http://www.farnell.com/datasheets/82023.pdf

[3] LM321, LMV324, LMV358 LMV3xx Low-Voltage Rail-to-Rail Output Operational Amplifier, https://www.ti.com/lit/ds/symlink/lmv358.pdf?ts=1606682102563&ref_url=https%253A%252F%252Fwww.ti.com%252Fproduct%252FLMV358

[4] LMx58-N Low-Power, Dual-Operational Amplifiers, https://www.ti.com/lit/ds/symlink/lm158-n.pdf?fbclid=IwAR15LRas0SHAu_YLQ9BR_aURSs-LwSzO1-I6Ve3ihWZ0pwZmxKUEq3sQVU4

[5] HM2301B(A1SHB), https://datasheetspdf.com/pdf-file/1088456/H&MSemiconductor/A1SHB/1

[6] Understanding Arduino UNO Hardware Design(The Power part), https://www.allaboutcircuits.com/technical-articles/understanding-arduino-uno-hardware-design/

[7] answer-id.com(Jagat’s Question), https://answer-id.com/zh/50803415?fbclid=IwAR0Nbi0MwuorBLD3KbWaVrH4u-M9-qS7dT34JDJM-i7YI3Q1veN9liwGtIE

[8] 【原創】為什麼你的Arduino會漏電, https://www.arduino.cn/thread-90169-1-1.html

[9] Arduino UNO Reference Design, https://www.arduino.cc/en/uploads/Main/arduino-uno-schematic.pdf

感謝各路網友交流分享經驗 與 內文筆誤內容提醒 (謝謝幾位網友/朋友)

如果有相關實驗經驗的朋友也歡迎分享交流,謝謝

孫文良 (阿良的嵌入式系統技術學習區)


【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章