|
本帖最後由 Chamberplus 於 2010-5-6 10:24 AM 編輯
: z4 l3 q5 u+ B( V2 ^! s4 |* S+ A, U4 q }. f- ]: Q- b
大家在系統應用上會常用到A/D 的問題,但也常常是用十根手指頭的觀念在寫程式。
! c8 W4 i6 f8 p8 k: Y+ n+ S! H$ g- T
來講一個系統應用的觀念,如果您也是常寫一些MCU 韌體程式的話,或許,會有一些幫助吧。# b! L% _3 e- Q0 u
; H% P5 E/ v2 R9 \. G4 O; H: J
尤其是作一些機電整合的韌體程式,
. \9 s+ g! P. _$ \) v3 c
1 a) v8 C& W6 o6 I- y/ ~% Y E寫這種程式,您就不要把那一般寫LED 跑馬燈的程式觀念拿來湊合。
# p- \" x, d+ O& ]
9 M4 a+ E" e1 u1 q% b" Y& g我個人覺得:如果,只是要您寫個簡單的I/O 控制程式,或是一個簡單的步進馬達控制程式,
+ Q) f7 X8 s. M) w( y3 Y$ r6 L' F! H. X: l2 z1 B- K" _
您可能就是把我們手指頭上的十個手指拿出來湊合的寫。反正是程式嘛,就是幫我們人腦做事的嘛!0 ]8 h0 ~" _8 ?
3 u4 L( k. N+ r, x( S4 F, n...(略). r z3 S1 B' a! `
1 l$ _4 g3 l2 u5 Z+ s
今天我們來講一個一般系統輸入參數的處理問題,譬如說是一個類比輸入參數(A/D Parameter)。; X" e* E B- P; H
, {% [+ `- _. A% j9 I( f我們都知道:雖然是類比輸入,但是我們在韌體程式的讀取過程,! j3 Y; d8 V1 B+ M% U9 z3 l M' K
. d# X3 _ m% V- D) ]0 t3 t
卻仍然是數位分時處理方式(Discrete)。還是得一個、一個值慢慢讀進來。
0 _4 `* j3 M a) c: r
/ n9 \: D! L, G$ w( `* ^1 A$ i難免就會發生所謂多久取一個值?!(連續性)...還有一個很重要的觀念:軟體濾波處理。(Filter)7 ?* l1 u/ P: M I% t* q# B
& ]/ Y' V% Z) A: t$ t6 x) d& a9 J3 z硬體電路上的濾波電路是鐵定有的(一般都只是低通濾波),
. P( N% }: m9 Z8 M1 W; E Q& J8 r O7 k7 p2 y* W. F0 R
但您怎麼知道輸入的值會不會有波動峰值呢?瞬間的變化時合理嗎?!
& i7 Z5 ? b5 w( G6 z7 Y' a6 N; g% h2 ^' u" }
尤其是一些屬於比較機械特性的參數,譬如環境溫度、電瓶電壓等...
: e, I! m* a+ U ~6 u+ B4 s. p$ o# e' H4 D6 Z7 j" D z
這些東西都是屬於自然現象的參數。(廢話...這種東西才需要A/D啊)
( m8 ^, W$ n& n- ?
0 l& U2 A- T& f& k所以,在軟體上也必須有一些軟體濾波作法,,,我相信如果您幸運一點的話,/ G8 e, B/ M) ~1 W
|, @$ _& p7 k/ `( n
剛好有個老鳥工程師願意帶您,而也願意傾囊相授教您...0 V# ~; c V5 g
8 Z8 n4 n, ?) `( K; }
您可能就知道這個東西就是:讀個十遍或二十遍,然後取平均就好了!????????. {7 ^. I/ o- v; _ `
. m9 E7 z7 v& I, |! R8 G' K是嗎?!
# E: J6 q3 x- q+ v1 I% m9 g5 h0 d: @" a. ?0 k* k5 [. ?0 \5 a
---
: q5 S+ r- i" p: R0 ?8 d* [tw.myblog.yahoo.com/chamberplus-taiwan/article?mid=1905&prev=1925&next=1901 |
|