大部分的感測器接的方法就是下列這三種:
(1) 分壓接法
(2) 橋式接法
橋式接法op另外一端接的是一個固定的分壓,兩者相減後輸出,由上一篇運算放大器(OP)一次就上手得知,這裡的op指的是儀表放大器,這似乎是個好辦法,但是儀表放大器本身有3個op你老闆要cost down,可能有時候不同意就要你不要用這麼多op,所以要具有訊號放大再加上op數量少你可能會做以下的接法。
(3)正向放大接法
這個接法跟反相放大一樣,只差在一個負號,看你的需求,這樣就可以達到將sensor抓取電壓放大的目的,但是最重要的是,假設你要感測的環境變量(溫度 濕度....等)與你的電阻成正比,可是你實際去算以上三個電路,你才知道,你輸出的電壓跟環境變量根本就是個曲線!
這個應該不用算給大家看了,接下來curve fitting才是挑戰的開始,曲線的擬合你可以用二次方程式,三次方程式,做到R^2=0.999,可是還是不準,sensor本身有再現性的問題,狀況一樣嗎? 到頭來才知道實際上輸出是 V(濕度,溫度,壓力,頻寬,氣體慣性),用一些濾波器的方式降低頻寬讓它穩定下來,變異係數控制在3%,最後發現,每個sensor都有差,那豈不是每個sensor你都要在出廠前給它做一次curve fitting,請問你怎麼量產,工廠的產線不容許你這樣做的。
我也試過用初始值當做校正的依據,但是後來發現初始值相同的兩個sensor表現不一樣,那這不能拿來當校正依據,fuzzy似乎在這上面變得很好用,但是要怎麼運用..怎麼校,才可以大量生產?在學校你只要會接,隨便校正一下,一個準了就好,請問1000個你怎麼做,原來,這才是最難的東西,現在的做法是你要做出測試波形,接著只要跑一次,就可以將sensor做分類,再套用到那一類sensor的公式,要分幾類就只能做實驗才知道了。
不過 fuzzy Table 不太好建 大部分應該都依賴實驗
回覆刪除跟經驗~~~
不過 曲線擬合 除了文中所呈現的問題外,還有另外
一個討厭的問題就是 演算法,知道怎麼算是一回事
怎麼算的快又是另外一回事~~~~~ ; 真是罩 你
Run 曲線擬合演算法時,可能要考慮速度問題;
例如 將程式要用的數據完全用 Fixed-point 處理
Fixed-point就是說 把小數點隱藏在整數裡面
例如說 你用 20 30 代表 2.0 3.0 這樣表示 你的
小數點後面一定只有一位 這就稱為 定點
這樣的好處就是 (20 + 30) >> 1 = 25 表示 2.5
可以用 >> 1 取代 除以 2
我印象最深刻的就是 以前我用 AT89C51 產生 1K PWM
程式裡面來個 開平方,程式當場掛掉 只剩 330Hz
當然假如你的晶片有內建 浮點運算硬體
(像 x86 DSP ARM or 一些高級的單晶片)
恩 就可以忽略這個問題~~~
還有寫程式上有一點要注意的事情在於
假如你正在對你的 data 作忙碌的運算處理時
像 你文中講的 要 curve fitting 等等
作之前 一定先把 AD 中斷 Disable 在 Run 演算法
才不會做到一半 結果 AD 中斷發生程式跑去做其他事情
這樣往往會發生算出一些奇怪的錯誤結果
等算完 又 Enable AD 中斷
這些給你參考看看囉 ~~~ 也許你目前也沒這些問題 :)
哈哈 這個讓我想起 地獄輪椅的主人 以前搞這個被 Boss 罵的很慘 ~~~ 0.0
假如我到地獄,我要確認兩件事:
要有 那台輪椅 跟 輪椅的主人 要不然就是走錯地方了