|
本帖最後由 Chamberplus 於 2010-5-6 10:24 AM 編輯
q8 ~1 k" k4 i5 b4 G5 ^; ^/ L
_+ Z. r% ^6 r3 x大家在系統應用上會常用到A/D 的問題,但也常常是用十根手指頭的觀念在寫程式。8 j9 C$ \8 _% ~
3 V+ r' s' i ^8 y* ?
來講一個系統應用的觀念,如果您也是常寫一些MCU 韌體程式的話,或許,會有一些幫助吧。
5 g. {2 [ r* ?3 l
- q9 v, y( W) m3 k尤其是作一些機電整合的韌體程式,
3 L. P/ j/ \2 J3 Q9 s( @+ U& o0 B: @( T. i& J+ i6 i+ c
寫這種程式,您就不要把那一般寫LED 跑馬燈的程式觀念拿來湊合。
c! I0 K7 L8 G i* G7 R; p, M4 q2 \' B5 |$ s6 c" J$ N
我個人覺得:如果,只是要您寫個簡單的I/O 控制程式,或是一個簡單的步進馬達控制程式,- X6 R, a8 q3 S/ S7 \
& @' Y% E9 y' T6 W
您可能就是把我們手指頭上的十個手指拿出來湊合的寫。反正是程式嘛,就是幫我們人腦做事的嘛!
. r: B' ]* C2 {0 \/ j
, W2 P8 q- j3 m" w% B$ ~/ \1 s...(略)3 y+ Q/ J3 L! e9 Y' }7 f* ?
. a. J. ?3 Q$ e2 S- B
今天我們來講一個一般系統輸入參數的處理問題,譬如說是一個類比輸入參數(A/D Parameter)。
' Y. g: d& }: M5 `: u' T6 M9 H$ ^2 C* K. r
& ]1 n: E- v% H* Q: ^% f! q5 G我們都知道:雖然是類比輸入,但是我們在韌體程式的讀取過程,7 x X$ `, k2 p1 K; {% ^; M+ j+ L- w3 S
! l# }+ m) Q( B" n. C! E2 m3 z, ?. o+ `
卻仍然是數位分時處理方式(Discrete)。還是得一個、一個值慢慢讀進來。% y$ @' r- p- |5 c' G5 a
4 d9 {3 m1 |$ W- L2 |1 Z' E
難免就會發生所謂多久取一個值?!(連續性)...還有一個很重要的觀念:軟體濾波處理。(Filter)7 |4 ~8 s( M# k6 @- e0 N
2 p) U- u# X' n3 Y硬體電路上的濾波電路是鐵定有的(一般都只是低通濾波),
$ C5 }9 z1 e3 w) t" @& \6 X( G5 _! v1 z S; g
但您怎麼知道輸入的值會不會有波動峰值呢?瞬間的變化時合理嗎?!
6 Q3 [" i. B9 ~ K2 B n# p+ P
/ K( S& _3 O3 I! g/ i' g, n5 |, o尤其是一些屬於比較機械特性的參數,譬如環境溫度、電瓶電壓等...
' G' l W% N: i; ~1 Y# F0 s
* x2 w, D9 X: V) g' E% D這些東西都是屬於自然現象的參數。(廢話...這種東西才需要A/D啊)( |5 k" ^6 W' G: N/ |' c& u
2 _6 ^" U, X& W, O
所以,在軟體上也必須有一些軟體濾波作法,,,我相信如果您幸運一點的話,
& e) f; d* }8 U: P2 |. }1 F. D
; P! m9 d& S" F: ?剛好有個老鳥工程師願意帶您,而也願意傾囊相授教您...
3 x, d) D" B* b! ?* \, V
5 B4 n1 c2 x7 @' o, Q4 g& c您可能就知道這個東西就是:讀個十遍或二十遍,然後取平均就好了!????????5 M6 Z. B a+ w, ?9 O% A, @! w
7 R& F& W) L) }5 ~% R
是嗎?!& v7 {. |4 ^* C- h8 }) E8 h
7 D3 m$ S0 }( k1 e---
5 `& x3 t9 q; y* y( j4 etw.myblog.yahoo.com/chamberplus-taiwan/article?mid=1905&prev=1925&next=1901 |
|