2013-12-5 15:00:21 [显示全部楼层]
8308浏览
查看: 8308|回复: 0

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

[复制链接]
这是夏普GP2D12红外测距传感器,这次来说说它在Arduino上怎么应用!

浏览过国内外各大机器人网站后,才发现这款夏普GP2D12红外测距传感器是多么的受欢迎,可谓是机器人爱好者不可缺少的一款经典传感器哦,今天我也来研究一下。

来看一下它的外形尺寸

下面是它的接线简图

GP2D12产品规格参数:
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电压与距离的对应关系

Arduino自带有6路10位ADC,所以我们可以直接将GP2D12接入Arduino的模拟接口,读出传感器的反馈值。从官方手册上可知,GP2D12的输出为0.4V~2.4V模拟信号,对应80~10cm距离,输出与距离间的关系成反比,且为非线性。我用Arduino不经过换算直接读出的值为从100左右到500左右。

这里是我的连线图

为了把这距离与电压非线性的反比关系搞清楚,还真是费了我不少的功夫,这里要特别感谢一下机器人基地的GG给我提供用于GP2D12计算的表格,此表格的作用是将不同环境及条件下GP2D12传感器输出电压值转化为实际距离值,而且还提供了编程的计算公式。

表格里填的是我实际测量的参数值,我连接的是+5V电源(也可是+3.3V),还需要填入10cm到80cm,每10cm采集一个点的8个电压值,填好以后表格就会自动生成线性化公式的参数值,表格还提供了整形和浮点两种格式,还附有产生的结果与实际值的偏差表,不得不承认这表还真挺实用!

下面是程序代码:

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);
}
现在下载完毕,在监视窗里就可以看到测量的距离值了


您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail