|
本帖最後由 Chamberplus 於 2010-5-6 10:24 AM 編輯 ! n2 u' r! m. f- c2 C* B, \2 N$ O
. Q- M! E4 y, `1 Y8 ^' r# y* ?) `& D
大家在系統應用上會常用到A/D 的問題,但也常常是用十根手指頭的觀念在寫程式。
, u: f { o( q
' @& s( U, u- P t: }0 k' Z+ y! K來講一個系統應用的觀念,如果您也是常寫一些MCU 韌體程式的話,或許,會有一些幫助吧。
6 t2 \3 R6 h! Z8 M/ g; P& ~" d- ?
尤其是作一些機電整合的韌體程式,$ ]& y+ Z8 V9 x- i3 b3 c
8 S4 ?4 }7 e0 z0 h( a5 `1 r4 q! J5 U寫這種程式,您就不要把那一般寫LED 跑馬燈的程式觀念拿來湊合。7 Z- {) i0 b6 h# C w( P2 Y. d
# P9 q2 K4 \6 A
我個人覺得:如果,只是要您寫個簡單的I/O 控制程式,或是一個簡單的步進馬達控制程式,# \- C* t# G. ^0 ?5 I" n
( O- j9 \$ H8 a/ g" }
您可能就是把我們手指頭上的十個手指拿出來湊合的寫。反正是程式嘛,就是幫我們人腦做事的嘛!
: M5 X \! f$ A* K/ W- T, A. u7 o
; c3 Z7 `6 w9 z x4 r2 S...(略)8 E/ y4 ?) O2 D' b2 ]( F+ T
1 ?0 @% Q' ?% Q2 a今天我們來講一個一般系統輸入參數的處理問題,譬如說是一個類比輸入參數(A/D Parameter)。
, {) A/ j% P% G) D" S( O+ e$ F) S, D0 Y' E) h9 G
我們都知道:雖然是類比輸入,但是我們在韌體程式的讀取過程,
" p$ M4 A7 R/ D% r7 m# t& W& O4 @
! v8 x' S' G8 U6 ~/ H卻仍然是數位分時處理方式(Discrete)。還是得一個、一個值慢慢讀進來。
' F- N/ Q+ N2 U v: K. P; C/ w9 I; U4 n/ o7 w% J. Q# z
難免就會發生所謂多久取一個值?!(連續性)...還有一個很重要的觀念:軟體濾波處理。(Filter)+ Y5 D7 j6 m/ P7 h
1 V' W% b! E. y: l
硬體電路上的濾波電路是鐵定有的(一般都只是低通濾波),
7 X. u. Y& l# j0 I: q& Z( y/ X6 O8 b7 U
但您怎麼知道輸入的值會不會有波動峰值呢?瞬間的變化時合理嗎?!
0 D' ?+ K8 E) P$ J: P% g- `# g' g* y7 z# Y _. C' q9 x. l1 V
尤其是一些屬於比較機械特性的參數,譬如環境溫度、電瓶電壓等...4 \* `! A$ t) L s. j
$ d g. \3 x/ ^" e7 P) n0 ^1 `這些東西都是屬於自然現象的參數。(廢話...這種東西才需要A/D啊)
- P' u" i, M! i4 o8 Y1 T6 t
U% |7 x3 X- T2 V8 c! V: a7 i7 B1 @所以,在軟體上也必須有一些軟體濾波作法,,,我相信如果您幸運一點的話,
4 e7 E0 Q& q$ v5 I- N0 m i) f) ^" {3 ]0 Y. x3 B8 V
剛好有個老鳥工程師願意帶您,而也願意傾囊相授教您...
! f x6 @. F6 Q8 Z
5 G% m7 x* m+ b; {2 s6 p- Y您可能就知道這個東西就是:讀個十遍或二十遍,然後取平均就好了!????????
; d8 O7 K) P, x2 t6 h) c) ~6 P) D! B* f
是嗎?!+ U' S3 K3 W. D. t/ p. D. G2 t
J0 m* I4 o: H$ _/ {6 J" f9 T ^- a C/ ?---/ k3 N3 C, s6 q6 J: [6 K
tw.myblog.yahoo.com/chamberplus-taiwan/article?mid=1905&prev=1925&next=1901 |
|