因其為非線性搜遍網絡都沒有對應的換算方式可循。
以下只是提供方法,方便大家對紅外測距模塊進行標定。
1、導出實際測距模擬量值
1)將以下程序代碼編譯后寫入arduino。
| [C++]?純文本查看?復制代碼
?
| 0102
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 |
char GP2D12;
void setup()
{
Serial.begin(9600);
}
void loop()
{
int val;
GP2D12=read_gp2d12_range();
delay(500);
}
float read_gp2d12_range()
{
int tmp;
tmp = analogRead(A0);?? //A0為紅外測距模塊數據輸入口
Serial.println(tmp);
} |
|
2)將紅外測距模塊分別進行各段距離的實際測距。距離精度為1厘米。

3)用具備保存接收數據功能的串口軟件接收并保存數據。從串口上獲取每段距離的模擬量數據后,將數據保存為TXT文檔,再導入EXCEL中。
4)在EXCEL表中,標示好數據值對應的距離值,直到完成約30厘米距離值。

5)對測得的模擬量數據值進行整理。整理前建議對每列數值進行排序處理。
(1)首先,對同距離值內相同模擬量值的統計。
可參考下圖輸入統計公式“=countif(A:A,A2)”,并復制到其他其他單元格,統計結果如下圖。
(2)然后,去除重復的數據(沒有好的方法,全手工操作)。
在重復數據的第一行數據后輸入統計出來的重復數,再去除多余的重復數據,僅保留一條數值,整理結果入下圖:
(3)其后,從每列中選取統計數據較多的數值,選取建議為2條,粘貼到另外表格中,整理完成后,再對模擬量數值進行電壓轉換,
后隱藏模擬量值列表。
 |
 |
| 換算模擬量電壓值 |
隱藏模擬量數據列表 |
實際值與型號產品圖譜對比還是有差距的。
6)獲取換算公式。
選擇相應的列表數據,再選擇“折線圖”并選擇“所有圖表類型”
選擇“XY(散點圖)”
產生了相應的曲線,是不是很像型號產品的圖譜!
再添加“趨勢線” |
在里面選擇“冪”趨勢線,同時勾選“公式”。
“冪”趨勢線與我們產生的曲線很接近,就選它了。
需要的公式也體現在界面上了:Y=8.7328x-0.912
6)實際演算測試
測試用代碼:
[C++]?純文本查看?復制代碼
| 0102
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 |
#include <math.h>
float val=0;
char GP2D12;
char a,b;
void setup()
{
Serial.begin(9600); //
}
void loop()
{
int val;
GP2D12=read_gp2d12_range();
delay(500);
}
float read_gp2d12_range()
{
float tmp;
tmp = analogRead(A0);
tmp=tmp*4/1024;?? //4為VREF基準:實際值
tmp=8.7328*pow(tmp,-0.912)+0.25;??? //0.25是調整值,根據測距情況自行添加相應的值
Serial.println(tmp);
return tmp;
} |

出來的結果比較接近實際距離,但還是有偏差,大誤差在2厘米。
這也許與電壓、基準、被測物體都有關系。 |
轉載請注明出處:傳感器應用_儀表儀器應用_電子元器件產品 – 工采資訊 http://www.iohhome.com/2969.html