|
本帖最後由 Chamberplus 於 2010-5-6 10:24 AM 編輯
6 ]( z, I7 P# s) U& p: i3 d% v+ t3 L
大家在系統應用上會常用到A/D 的問題,但也常常是用十根手指頭的觀念在寫程式。
3 G% C( K% k( ~" i' f
) i* h' Q% Z0 e# D! s" O來講一個系統應用的觀念,如果您也是常寫一些MCU 韌體程式的話,或許,會有一些幫助吧。
* k7 X% n& s& _$ w8 g% x/ u2 w0 @% A# m$ Q- V- l) M0 i8 ]* a) v
尤其是作一些機電整合的韌體程式,
( G: F, [5 G) z( `4 K/ ]7 t7 | |2 T" M
寫這種程式,您就不要把那一般寫LED 跑馬燈的程式觀念拿來湊合。& I: l/ h+ G& m" V! X
% _. f; L( P& h7 H& M我個人覺得:如果,只是要您寫個簡單的I/O 控制程式,或是一個簡單的步進馬達控制程式,
5 ?1 \& `& K8 e5 a9 r/ }* `0 F/ j f4 C' W" ?: b
您可能就是把我們手指頭上的十個手指拿出來湊合的寫。反正是程式嘛,就是幫我們人腦做事的嘛!
2 J1 ?- n k6 ]9 l1 C& }9 h7 q/ z h, h5 B' e) b" ~+ Z
...(略)
* H% r) r) \$ F* B! ~
, |# f4 ]4 Z; R# p! J4 B/ v3 t今天我們來講一個一般系統輸入參數的處理問題,譬如說是一個類比輸入參數(A/D Parameter)。
4 K$ X7 r% C( s& B7 h& x4 m/ i' J7 r, ~) g% t$ B
我們都知道:雖然是類比輸入,但是我們在韌體程式的讀取過程," _& K8 d9 N3 ~; U" p3 H5 r1 K* [
& B1 Y- y; ]: d' g+ ]% a5 o& Y卻仍然是數位分時處理方式(Discrete)。還是得一個、一個值慢慢讀進來。4 i0 {, V3 ]( ^% k! q* }( z
; S# ?2 \! x- G4 a( z/ k& `; v6 ]難免就會發生所謂多久取一個值?!(連續性)...還有一個很重要的觀念:軟體濾波處理。(Filter)+ Q. |3 Y, G' H+ w: u
& V6 y1 A; w( f+ _2 F硬體電路上的濾波電路是鐵定有的(一般都只是低通濾波),
; I8 l' |& I( N% }" m: P2 J2 u7 t/ Q1 ^# Y! y8 }& r! j$ j' _+ I
但您怎麼知道輸入的值會不會有波動峰值呢?瞬間的變化時合理嗎?!
/ K v8 r/ N; A: X' h+ q, \
/ L! L4 X6 p! k# G尤其是一些屬於比較機械特性的參數,譬如環境溫度、電瓶電壓等...
0 Z/ M Z7 n. H! l
9 ~, } T% w6 @- K e這些東西都是屬於自然現象的參數。(廢話...這種東西才需要A/D啊)/ T% S2 ]( s: R
! z: T1 r5 z* W所以,在軟體上也必須有一些軟體濾波作法,,,我相信如果您幸運一點的話,
% j( M( S1 P( e
$ e5 ? R, I% `, w剛好有個老鳥工程師願意帶您,而也願意傾囊相授教您...
2 e! Z% D/ p3 F- I: H) k: L/ d8 r: a$ }
您可能就知道這個東西就是:讀個十遍或二十遍,然後取平均就好了!????????( j' J$ ]/ f% J3 J0 x* N; i+ ]! p
' l! v1 \( J5 K' ]7 _
是嗎?!
4 X; G% f c# ~- V5 z7 A+ b% ]' n# B# R
---
% O2 T1 z; U6 V1 c2 ?3 b+ `tw.myblog.yahoo.com/chamberplus-taiwan/article?mid=1905&prev=1925&next=1901 |
|