今天收到一個專門刊載科技業經驗文章的網路社群媒體來信洽談合作,
我們這裡是專業的韌體教學社群,很歡迎&感謝 各界單位 若有合適機會來合作!
-------
個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
分享嵌入式系統技術文章,開設嵌入式系統相關教學課程,可洽談: iws6645@gmail.com 簡歷: https://sites.google.com/view/wenliangsun/
今天收到一個專門刊載科技業經驗文章的網路社群媒體來信洽談合作,
我們這裡是專業的韌體教學社群,很歡迎&感謝 各界單位 若有合適機會來合作!
-------
個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
近期很榮幸能收到 勞動部&工研院的「韌體設計工程師」技術課程綱要 專家諮詢會議 邀請,希望能貢獻自己的所知所學以幫助到更多人!
主辦單位是 勞動部勞動力發展署,執行單位是 財團法人工業技術研究院 (工研院)
---
孫文良 (阿良的嵌入式系統技術學習區)
--------------------------
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
即便你只要隨便看一下 維基百科(Wikipedia)上面有關8051 MCU的介紹,就會馬上看到:
The Intel MCS-51 (commonly termed 8051, typically pronounced eight-oh-five-one) is a single chip microcontroller (MCU) series developed by Intel in 1980 for use in embedded systems [1].
或者隨便查一下嵌入式系統(embedded systems)的介紹,同時也會知道MCU(微控制器)與傳統所稱「微處理機」(ordinary/general microprocessors)的差異:
Modern embedded systems are often based on microcontrollers (i.e. microprocessors with integrated memory and peripheral interfaces), but ordinary microprocessors (using external chips for memory and peripheral interface circuits) are also common, especially in more complex systems[2].
即便上述資料是如此的詳細且易於查詢,但還是會有許多人會誤以為有跑Linux之類的OS的系統才算是嵌入式系統(embedded systems)、誤以為許多跑Non-OS firmware的MCU based的系統就不是嵌入式系統;還有很多大專院校的電機電子資訊相關系所教授和許多業界主管/老闆們還是一天到晚「微處理機」、「微處理機」的去稱呼MCU。這些就是所謂的以訛傳訛,而這些以訛傳訛呢,可能幾十年來皆存在於許多學生、大學教授、業界工程師、業界高階主管之間。
很多人就是不喜歡去把一些基本的工程名詞定義給查清楚,看來...稍微用心思考+查一下資料真的是太難了。
Ref:
[1] Intel 8051, Wikipedia, https://en.wikipedia.org/wiki/Intel_8051
[2] Embedded system, Wikipedia, https://en.wikipedia.org/wiki/Embedded_system
-----
個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
延續上一篇的【DFROBOT SKU:SEN0165 ORP氧化還原度感測器之訊號處理電路設計分析】文章,這邊主要來延續介紹這款感測器套件之官方sample code重點部分分析記錄,某些較容易看出的部分就先暫時省略過。
註解: 這裡是隨意拿紙來寫的簡單計算過程,下標符號大小寫並不嚴謹,請見諒~
![]() |
上篇文章主要介紹 的簡易電路分析計算過程 (使用克希荷夫電流定律) |
註解: ORP是Oxidation-Reduction Potential的縮寫,表示溶液的氧化還原電位
該感測器套件的MCU端的軟韌體sample code於該DFROBOT SKU:SEN0165 ORP氧化還原度感測器感測器套件之官方說明網頁
(...省略部份)
#define VOLTAGE 5.00 //system voltage
(...省略部份)
orpValue = ((30*(double)VOLTAGE*1000)-(75*avergearray(orpArray, ArrayLenth)*VOLTAGE*1000/1024))/75-OFFSET;
//convert the analog value to orp according the circuit
注意上面的code的VOLTAGE我故意用兩個不同的顏色標記(紅色、藍色)是有原因的,看完下面內容就會知道。
其實可由下圖推導整理看出,上述code的orpValue就是如同其變數名稱,就是要還原出sensor端子輸出電壓訊號 (未經訊號處理電路模組處理的原始感測器輸出電壓訊號值) 的值,並且透過UART印出該值的字串形式以便觀看。
眼尖的看倌一定會發現其實主要是這款感測器套件的官方sample code寫得太長,其實不需要寫這麼長 |
sample code之中的1000就是K (1K);
sample code之中VOLTAGE/1024的部分,基本上就是ADC step voltage,而avergearray(orpArray, ArrayLenth)就是經過一些平均處理後的Vout
那為何上面的code的VOLTAGE故意用兩個不同的顏色標記?
要注意這個sample code可能比較是針對是Atmage328p(或其它ADC的類比輸入範圍電壓Vref預設為5V的) MCU based 的Arduino,所以sample code是把 提供給感測器輸出訊號處理電路模組的電壓 以及 你使用的ADC step voltage的Vref看成是一樣的。但實際上這兩者在實際應用上可能不同,例如你的嵌入式處理器晶片如果是用吃3.3V的,而卻又供5V給感測器輸出訊號處理電路模組,那麼情況就與sample code去define同一個VOLTAGE的狀況不同了。
舉例來說,從電路分析式子可以看出,假設你所使用的MCU/SoC內的ADC(或者外接的獨立的ADC IC)的Vref是3.3V,而若提供給感測器輸出訊號處理模組的電源則是5V的話,其實上面兩個VOLTAGE可能必須是不同的值,
第一個(30*(double)VOLTAGE*1000)的VOLTAGE是你提供給感測器訊號模組的電源電壓;
而後面的(75*avergearray(orpArray,ArrayLenth)*VOLTAGE*1000/1024)裡面的VOLTAGE/1024這個部分就是就是你所使用的MCU/SoC內的ADC(或者外接的獨立的ADC IC)的step voltage,所以其實這個(第二個)VOLTAGE就是ADC的類比輸入範圍電壓(Vref)。而1024就是精度10 bits的ADC的狀況 (如果你用的ADC的精度不同就要改)。
但如果 你所使用的MCU/SoC內的ADC(或者外接獨立的ADC IC)的類比輸入範圍電壓Vref就 等同提供給感測器輸出訊號處理模組的電源的話 (就如同sample code預設的情況),那就如同sample code一樣去定義VOLTAGE是同一個值即可。
如果這兩篇文章你有看懂,就會發現,說穿了,上述sample code中的((30*(double)VOLTAGE*1000)-(75*avergearray(orpArray, ArrayLenth)*VOLTAGE*1000/1024))/75-OFFSET; 如果理解電路以及sample code的目的、原理和計算,其實sample code的這行code是可以簡化成另一種寫法,不一定要寫成這麼長,看倌們看懂了嗎?
(hint: 重點在上一篇文章的計算結果和這篇文章的計算結果,根本就是一樣的嘛,根本沒必要把這行code寫得如此落落長)。
此外,補充一下,這感測器套件的感測器輸出訊號處理電路模組中的LM2662M是一顆Switched Capacitor Voltage Converter IC(可參見TI的官方Datasheet ,部分如下圖)
TI LM2662M Datasheet |
-----
個人簡歷: https://sites.google.com/view/wenliangsun/
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
如下圖,近期因朋友李博士的介紹,所以有 台灣大學 電機工程學系 的 教授 來討論合作。
--------------------------
孫文良 (阿良的嵌入式系統技術學習區)
【若需要嵌入式系統技術輔導課程 可來信洽談合作方式: iws6645@gmail.com,亦可先點擊參考這篇介紹文章】
在當年,人生第一次看這些IC Datasheet(技術資料手冊)的時間點,是在14年前 讀高職電子科二年級的課堂上,
https://www.keil.com/dd/docs/datashts/atmel/at89s51_ds.pdf |
除了MCU之外,當時還會參考許多TTL系列邏輯閘IC的資料手冊內容。
大學開始之後,基本上就不會有(或者極少有)這種課程會實際帶你看這種專業手冊了,因為許多專任教授自己一輩子也沒看過。
個人簡歷: https://sites.google.com/view/wenliangsun/
當年在成大做碩士論文的研究內容時,在系統的設計上,應用到了幾個演算法,當時分別將其實作開發在穿戴式裝置(以單晶片微電腦/微控制器MCU為核心) 與 智慧型手機上。
其中使用到的一個演算法是一階RC Low Pass filter演算法 用在將訊號作data smoothing處理(因為這個步驟是實作在MCU上作為處理感測器訊號的資料前處理步驟,所以是數位離散化版本,基本上就是一次指數平均法Exponential Averaging),
在當時過程中有將這些式子做些簡單的推導以便複習和理解其用途效果,如圖片所示,這是當時寫下的推導筆記(寫在某張餐廳菜單紙的背面,因為這張紙是黃色比較顯眼就拿來寫推導),如下圖。
其實這些也是用到個人當年就讀高職修讀基本電學與在科技大學大一修讀電路學時期的相關基礎,無論是理論還是實作開發基礎,這大多是我在技職教育體系之中的累積。
上述這些是大多數從電機電子系出身的資訊工程(計算機)領域的人所極度不熟悉的東西。
所以,誰說技職體系沒有理論基礎?
雖然因為個人當年碩士畢業後到公司服務是負責Embedded Linux on SoC的系統的公版軟韌體開發和維護,因方向性質不同,所以沒啥機會直接用到上述那些內容。
個人簡歷: https://sites.google.com/view/wenliangsun/