|
本帖最後由 Chamberplus 於 2010-5-6 10:24 AM 編輯 2 o% C& U z& n, u6 T
/ @8 P5 ?" {4 E9 ~2 L0 Z
大家在系統應用上會常用到A/D 的問題,但也常常是用十根手指頭的觀念在寫程式。$ ]$ z$ A4 K1 a, ^
& w# g: w- q* c% F5 i9 U
來講一個系統應用的觀念,如果您也是常寫一些MCU 韌體程式的話,或許,會有一些幫助吧。
/ B( j2 \6 e3 J d7 j8 F
4 N, R; a" b" Q; i5 P% z尤其是作一些機電整合的韌體程式,6 `2 T3 v. O* b! l0 N/ L
4 s2 U! f W3 E& [! p' K
寫這種程式,您就不要把那一般寫LED 跑馬燈的程式觀念拿來湊合。
( n9 P5 x4 ~2 I9 k3 g/ [+ I& m/ Z/ @- ^" F: f
我個人覺得:如果,只是要您寫個簡單的I/O 控制程式,或是一個簡單的步進馬達控制程式,
% I, p) W' b5 b% x) M; J
$ h: n E+ }8 n- W6 h8 v; }' o您可能就是把我們手指頭上的十個手指拿出來湊合的寫。反正是程式嘛,就是幫我們人腦做事的嘛!8 j ?: p1 U* K3 c! o/ k
e+ A: H8 }0 V6 u& U6 P7 g
...(略)% w' X! h' R, m$ W7 x5 n1 X
* Z# ?0 Q, }. R! R
今天我們來講一個一般系統輸入參數的處理問題,譬如說是一個類比輸入參數(A/D Parameter)。9 {# l' p, x7 k; y! N r
# ~' t E) t( ^6 Z7 X7 U- }+ L0 n8 U
我們都知道:雖然是類比輸入,但是我們在韌體程式的讀取過程,
- u8 G' }- N5 t$ t+ b$ t8 a; [" B! U* q/ X
卻仍然是數位分時處理方式(Discrete)。還是得一個、一個值慢慢讀進來。' M2 \6 U3 C2 j& J7 R
8 Q) ?$ t! @' A) {) d) N
難免就會發生所謂多久取一個值?!(連續性)...還有一個很重要的觀念:軟體濾波處理。(Filter)0 u0 M/ Y' S4 K
2 l7 {, W$ q/ ]! d4 g$ p0 G硬體電路上的濾波電路是鐵定有的(一般都只是低通濾波),
( M; {# W* }% x5 P4 ~6 ?+ A6 l
* ?- i4 m# `8 R但您怎麼知道輸入的值會不會有波動峰值呢?瞬間的變化時合理嗎?!+ W$ X. ` W U$ z- A# g
1 K& [- X$ l+ G u& b" |
尤其是一些屬於比較機械特性的參數,譬如環境溫度、電瓶電壓等...) g" M3 p0 G9 G7 y0 q9 \; f- q
+ F8 c7 I2 }5 e$ p3 Z: }這些東西都是屬於自然現象的參數。(廢話...這種東西才需要A/D啊)
0 f3 Q/ Q1 |3 b, k9 `4 F' d5 C) w$ |; U Z2 ~: q
所以,在軟體上也必須有一些軟體濾波作法,,,我相信如果您幸運一點的話,
2 z; [2 T; S7 B4 M% w+ V: g/ e9 j* ~8 ~8 @2 x
剛好有個老鳥工程師願意帶您,而也願意傾囊相授教您... I6 U+ N3 s3 E4 T8 k1 W- v( m
5 B K- I) V2 s, v' H3 ` O, A* D2 ]
您可能就知道這個東西就是:讀個十遍或二十遍,然後取平均就好了!????????+ S: D: S) @) ]
! T1 ~+ G& t7 d是嗎?!, ]3 Q3 j" y! c; v. ?9 ?6 l
2 p% P+ T" X4 r3 ^+ b# E
---
M4 O6 q6 K, F; Otw.myblog.yahoo.com/chamberplus-taiwan/article?mid=1905&prev=1925&next=1901 |
|