|
本帖最後由 Chamberplus 於 2010-5-6 10:24 AM 編輯 % n+ k# \) p6 I
; D3 o7 i7 x; n4 P$ O大家在系統應用上會常用到A/D 的問題,但也常常是用十根手指頭的觀念在寫程式。
" |/ m% i9 C* s- [. t% f
1 | s: I1 U# _5 q( V' \/ J來講一個系統應用的觀念,如果您也是常寫一些MCU 韌體程式的話,或許,會有一些幫助吧。+ a7 a9 X# Q; ~4 b A
3 n+ o+ l2 q6 x) M
尤其是作一些機電整合的韌體程式,
1 d; ?1 Z9 Z2 E: B. w8 U( R2 x- U( ` d% W7 `8 Q
寫這種程式,您就不要把那一般寫LED 跑馬燈的程式觀念拿來湊合。
, c4 f% \4 I0 N. w6 ]' J$ @6 G% Q- [% G3 ~4 v
我個人覺得:如果,只是要您寫個簡單的I/O 控制程式,或是一個簡單的步進馬達控制程式,
4 _5 k7 z. `+ I* `6 E$ E3 M4 I1 a/ y7 z, \; T, q
您可能就是把我們手指頭上的十個手指拿出來湊合的寫。反正是程式嘛,就是幫我們人腦做事的嘛!
& K8 N- Z, z! E+ C, ]3 h1 \5 P; o. [( Z& h. d% P" @
...(略)' C$ o9 O) ~# L0 u2 K8 S9 M
/ f6 K- I5 B6 [2 s7 H. B+ ~
今天我們來講一個一般系統輸入參數的處理問題,譬如說是一個類比輸入參數(A/D Parameter)。. @) ?; J( |; a, Q- [
2 L h( v- i# S% z& _/ I; O7 C我們都知道:雖然是類比輸入,但是我們在韌體程式的讀取過程,* u; N# V$ L" \! W
7 n, Z# {$ ]5 r卻仍然是數位分時處理方式(Discrete)。還是得一個、一個值慢慢讀進來。9 `* C" c" p, P, O' B7 X6 m
6 N! q9 T# ]8 i
難免就會發生所謂多久取一個值?!(連續性)...還有一個很重要的觀念:軟體濾波處理。(Filter)7 Q9 w# V" j. n9 U, F* m) o) ], \
; a6 Z- G7 K. K1 D5 ~0 d; f
硬體電路上的濾波電路是鐵定有的(一般都只是低通濾波),+ S9 @+ P! c; n, j) U9 m! y
- b7 o, i# I! ?
但您怎麼知道輸入的值會不會有波動峰值呢?瞬間的變化時合理嗎?!
" k# j1 p/ K0 n1 z8 F( n. r+ k0 g- P$ d I k
尤其是一些屬於比較機械特性的參數,譬如環境溫度、電瓶電壓等...
) S- x' j7 _0 c" @) \9 J* a0 Z* u
4 \, z7 X3 Y% C! A- S1 m這些東西都是屬於自然現象的參數。(廢話...這種東西才需要A/D啊), Z! R6 g6 @) j, O# F9 k. q: ]- @
+ {: ?% r9 W3 g! a) @4 v所以,在軟體上也必須有一些軟體濾波作法,,,我相信如果您幸運一點的話,
6 |" M( v9 E) o% k) P% N5 ~
1 r l: ?+ F0 F( d, ]剛好有個老鳥工程師願意帶您,而也願意傾囊相授教您...! W8 k$ n$ W5 Y7 n
3 p/ |! Y3 k" v1 ~
您可能就知道這個東西就是:讀個十遍或二十遍,然後取平均就好了!????????3 |) z d; o2 r/ J+ \
: S& |3 n* f4 V4 s; [
是嗎?!( }1 l" s* ?5 b
+ Z; k( W0 X" j' J
---
. r7 u6 ?: \3 _$ t& Ktw.myblog.yahoo.com/chamberplus-taiwan/article?mid=1905&prev=1925&next=1901 |
|