nemon 发表于 2013-12-5 15:00:21

【转】Arduino应用之夏普GP2D12红外测距传感器

这是夏普GP2D12红外测距传感器,这次来说说它在Arduino上怎么应用!
http://arduino123.net/uploads/allimg/120408/10303K061-0.jpghttp://arduino123.net/uploads/allimg/120408/10303LF4-1.jpg浏览过国内外各大机器人网站后,才发现这款夏普GP2D12红外测距传感器是多么的受欢迎,可谓是机器人爱好者不可缺少的一款经典传感器哦,今天我也来研究一下。来看一下它的外形尺寸http://arduino123.net/uploads/allimg/120408/10303L912-2.jpg下面是它的接线简图http://arduino123.net/uploads/allimg/120408/10303Mb5-3.jpgGP2D12产品规格参数:
1.测量射程范围:10 to 80 cm
2.最大允许角度:>40°
3.电源电压:4.5 to 5.5V
4.平均功耗:35mA
5.峰值功耗:约200mA
6.更新频率/周期:25Hz/40ms
7.模拟输出噪声:<200mV
8.测量距离与输出模拟电压关系:2.4V~0.4V模拟信号对应10cm~80cm,输出与距离成反比非线性关系。这是GP2D12电压与距离的对应关系http://arduino123.net/uploads/allimg/120408/10303KL9-4.jpgArduino自带有6路10位ADC,所以我们可以直接将GP2D12接入Arduino的模拟接口,读出传感器的反馈值。从官方手册上可知,GP2D12的输出为0.4V~2.4V模拟信号,对应80~10cm距离,输出与距离间的关系成反比,且为非线性。我用Arduino不经过换算直接读出的值为从100左右到500左右。这里是我的连线图http://arduino123.net/uploads/allimg/120408/10303HD6-5.jpg为了把这距离与电压非线性的反比关系搞清楚,还真是费了我不少的功夫,这里要特别感谢一下机器人基地的GG给我提供用于GP2D12计算的表格,此表格的作用是将不同环境及条件下GP2D12传感器输出电压值转化为实际距离值,而且还提供了编程的计算公式。http://arduino123.net/uploads/allimg/120408/10303H200-6.jpg表格里填的是我实际测量的参数值,我连接的是+5V电源(也可是+3.3V),还需要填入10cm到80cm,每10cm采集一个点的8个电压值,填好以后表格就会自动生成线性化公式的参数值,表格还提供了整形和浮点两种格式,还附有产生的结果与实际值的偏差表,不得不承认这表还真挺实用!/uploads/allimg/120408/10303K045-7.gif下面是程序代码:int i;
int val;
int redpin=0;
void setup()
{
pinMode(redpin,OUTPUT);
Serial.begin(9600);
}
void loop()
{
i=analogRead(redpin);
val=(6762/(i-9))-4;
Serial.println(val);
}
现在下载完毕,在监视窗里就可以看到测量的距离值了/uploads/allimg/120408/10303JF6-9.gif。http://arduino123.net/uploads/allimg/120408/10303G234-11.jpg
页: [1]
查看完整版本: 【转】Arduino应用之夏普GP2D12红外测距传感器