2012年4月11日 星期三

一個A/D 的系統應用問題--- 高解析度

這是一篇補之前關於一個A/D 的系統應用問題的延伸篇。

1. 一個A/D 的系統應用問題

2.一個A/D 的系統應用問題(續篇-實驗結果)

3.一個A/D 的系統應用問題(續篇-精進版)

4.一個A/D 的系統應用問題(續篇-範例版)

---

隨著現在MCU 的應用精準度的提升,所以我們常用的A/D 有時也會覺得 8 bits 不夠用,

但是現在MCU 隨隨便便送您個  10 bits ...12 bits 的A/D 也好像不是什麼大不了的事。

反而,沒有的~或是解析度不夠的...還會被客人打槍,要求降價以求取市場機會。

但實際系統應用上,是不是真的需要用到這麼高的解析度?!可能還見仁見智。

不管如何,有越好的A/D 在我們系統應用上,當然是可以提升量測的精準度。

但不一定完全是好事啊...因為我們在數學運算與處理上,也會變得比較複雜。

對於一般常用的 8 bits MCU 來說:更是額外的負擔。

譬如以我們之前所舉的例子來說,明明是電池 40 V的東西,如果我們用到

8 bits 的表示方式,就算外加求到小數點來說:頂多用到 16 bits 變數就偷笑了。

但如果您是超過 8 bits 來說:您又要求達到一樣小數點的話....您可能也不能用

24 bits 這麼奇怪的變數常數,您就非得要宣告成  32 bits 了。

然後您又要用 8 bits 運算能力的MCU來處理運算 32 bits 的變數...唉~系統應用上的

解析度能力還沒提升,當場MCU運算能力當場先變差了。

所以啦....您不要覺得您可以用那一種超過8 bits ADC 的MCU 就很偉大了,

如果您沒有搞清楚您系統應用上額外所帶來的負擔的話,您也沒多厲害啊。

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

所以啦,從此您應該更可以體會到我一直強調的 32 bits MCU 的未來重要性。

他所帶來的不只是一些高階IC 設計製造技術的提升,最重要的還有這一層的系統

應用的觀點...否則,像搞那些I2C 、SPI 或是這一種高解析度的 A/D ...他們所帶來

的便利性當然可以在IC 設計與規劃下,一直提升其性能...這是無容置疑的。

但是呢?您MCU 本身的處理能力夠嗎?...塞給您真正好的周邊,但您卻又處理不來?

那又何必強求呢?---- 但是可悲的是:您不做又不行。因為別人可以這樣子搞啊。

---

以我的觀點來看:現在您想玩 8bits MCU ?!沒有什麼好講的,您也只能從系統應用端

去強化自己的系統應用能力,否則,別無他途...您不想搞這麼累、辛苦的系統應用?!

那您就選擇 32 bits  MCU 產品本身的市場吧。

但真的...對國內許多傳統MCU 廠來說:他們就是想像以前一樣:賺Easy Money...

但您覺得可能嗎?就像我之前回答讀者問題說的:18 年前可以寫8051 韌體程式

養家活口,但現在行嗎?!...現在您想開雜貨店養家活口?!您怎麼不去觀察7-11

便利商店的經營模式呢?...哪有這好康的事呢?!

--------

所以啦...像我們這一種也沒啥能力可以玩得起   32 bits MCU 的LKK 工程師,

我們也只好回頭好好的搞好我們自己的系統應用價值了。

所以,我們也就不得不提昇自己的系統應用價值, 一樣拿 8 bits MCU ...

一樣要把超過 8 bits A/D 搞到可以輕鬆使用。

以下就是我們得搞定的系統應用結果:

我們舉一樣的例子:從目前簡單系統值,取得新的只差10 的量測值...來看如何處理吧。

當然我們底層的轉換運算副程式就得改寫...又不能佔太多程式或運算時間...也不能犧牲

運算準確值(如果犧牲了運算準確性...那幹嘛還要用高解析度的A/D 啊?!)。

以下是就運算結果: 從290 到 300 的結果...(290, 300 都是> 8 bits 值)。


一樣的隨著迭代運算可以往新值 300 逼近。

當然啊...當您隨著兩者之間誤差變大,您所需的時間就越長...您當然就得調整您

系統上的時間常數。(這是順便回答有某位讀者問我的問題...)這些都是跟您所專注

的系統應用條件所需要定義的...譬如:量電池,跟量無刷馬達感應電動勢是不一定的

特性的。....這個就是我說的:您自己本身的系統應用專業領域的分析能力。

(所以啦...您不要以為在學校念那些工程數學或是在自動控制理論上玩那些MATLab

是幹什麼用的?!...寫程式不是Try and Error ,上班也不是每天打完卡,就坐下來

用十根手指頭拼命寫程式的啦!)

譬如:我們舉另一個例子...兩者之間的誤差變化量較小一點。(就是他的濾波能力

不需要這麼大的時間常數...)我們也順便看一下同樣的程式來處理負方向的運算能力

...


我們就可以發現...他的迭代運算時間就變得比較短了。也達到我們在系統應用的要求。

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

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

從這些例子裡,我還是要一直強調一點...寫程式本身真的不是什麼大學問,現在這個時代

您會寫程式不是什麼多偉大的事。您自己不努力建立自己的系統整合分析能力...

您就不要怪人家老闆怎麼會虧待您呢?

當然啊...同理,您會搞一棵 8 bits MCU ,再給您外加一組 12 bits ADC...

您也不一定會賣得比較好,因為我說了:公司內請的就是庸庸碌碌的工程師,

每天為著無知的客戶疲於奔命...大家都一樣的啦。

如何要把一棵MCU 發揮的淋漓盡致,真的您要回頭想一想:您自己本身在學校裡,

有沒有真的努力用功唸書...不是叫您考試考一百分,而是您自己有沒有從學習研讀中,

瞭解這些理論基礎真正延伸到實際工程應用端?那是培養一種工程分析的靈敏度...

一種Sense...一種Feeling...

最後舉一個簡單的例子:上回有讀者提到他用 32 bits ARM MCU 之ADC ...搭配

硬體上的DMA,來做外部狀態量測,但總覺得量測數據不準,也不穩...甚至懷疑

此32 bits ARM MCU 不好用,懷疑此MCU有問題之疑慮。

當然啊...有合理的懷疑是沒錯啦...但您又能如何證明您是對的呢?!

我的座右銘:當您證明別人是錯的時,您自己本身也不一定對啊。

當我聽到這一個現象時,我就先質疑從量測到DMA 資料傳輸的資料匯流排的頻寬問題:

當您的ADC 是一般SAR ADC (串列轉換方式)...譬如他的轉換速率是 200 kpbs ...

(很厲害了啦...如果他還是 10 bits 或12 bits 的)他的一組資料Ready 好...也得要

200/10 或200/12 ...當場只剩下20 kbps 或更低...那覺得您的DMA 要跑多快啊?

超過100 kbps ,可能嗎?!那DMA 抓的是什麼資料?!第二點:那您要不要

加入這篇文章的簡單的 First order Lag filter ?!那自己估的系統應用上的

時間常數為何?自己的程式處理能力夠嗎?!(當然對32 bits ARM MCU 應該

輕鬆一點吧!)....這些總總的疑問,您有沒有真的從頭思考過一次?!

那您為何沒有如此思考?!很簡單...因為您以前沒有好好的唸過書,因為您心裡

根本沒有建立過這樣的系統分析觀念與能力,就像您叫一位小學畢業生,

要他用解聯立方程式的方式來求取一些未知數一樣。....

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

我還是要一直強調:真的有點擔心...12 年免試升學會讓許多學生不會努力用功唸書,

這些都是很基礎的數理解析能力的培養,美國的高中生最令人詬病的就是:數理能力

比東方國家差,...只是因為他們國家資源到處充沛,他們的學生可以在未來社會環境

或是企業中培養,但是我們國內企業的在職進修與教育訓練條件真的比較差...

一旦過了那個黃金學習時間...最後辛苦的還是您自己本身啊。

如果您是其中受害者的話,您就應該懂得這一種道理啊。

文章中的範例結果,就當作參考值看吧。...

 

 

 

2 則留言:

  1. DMA問題已避開,使產品可以動作了。
    因為我同時啟動SPI,UART,Timer,ADC皆以DMA運作,24Mhz單晶片要在10us內做完以上的動作,可能是連接到一個設計未出現的狀況。
    廠商回應,單獨使用皆未有問題,這點我相信。
    後來使用32 byte的ADC buffer可以動作。而128 Byte ADC Buffer卻有問題。
    程式就改為半自動,小Buffer完成用中斷自己搬。之後就沒有問題。
    我已經遇過工具設計的問題,指令的問題,這次是週邊的問題。
    看來一個MCU要完全沒有問題,也是要修正好幾版。問題是下一代又會出來。

    重點是老闆不會管這個事,能否解決才是重點,不管是用何種方法。

    回覆刪除
    回覆
    1. 謝謝您的經驗分享。
      若以MCU的系統應用來說:如果我是老闆的話,我也不太想管這些鳥事。
      因為很簡單的觀念:以現在MCU電子產品的開發,有什麼好大驚小怪的。
      做得好的是應該的;搞不定的~我還真會懷疑底下的工程師有沒有用心啊。
      ---
      所以啦~工程師們,有時自己也會換個角度想想事情,不要老是喜歡搞些
      東西之後,就自以為是,有辦法的話,要不然您自己開公司,把產品拿
      出來賣?! ---- 這是我昨天聽到數字台灣節目裡有個來賓說的話:
      台灣的軟體工程師,不管做得好或不好,也總喜歡躲在老闆背後,
      以上班領薪水為最大樂趣,也不像老美的工程師們那股創業精神,
      所以,就算您在台灣搞出像Facebook 的東西...您還不一定會遇到
      賞識您的老闆呢!
      所以啦,您還期望有多少老闆會管這些事啊?!唉~工程師。

      刪除