夏普红外测距模块使用笔记

您所在的位置:网站首页 夏普r2使用感受 夏普红外测距模块使用笔记

夏普红外测距模块使用笔记

2023-11-09 21:11| 来源: 网络整理| 查看: 265

外形图: 在这里插入图片描述 接线图: 在这里插入图片描述

型号选择 GP2Y0A21YK0F 10-80cmGP2Y0A02YK0F 20-150cmGP2Y0A710K0F 100-550cmGP2Y0A51SK0F 2-15cmGP2Y0A41SK0F 4-30cm 使用

从数据手册可以明显的发现,测量距离和模拟电压是非线性关系。这给我们的实际使用造成了很多不便。实际上数据手册中还提供了一个模拟电压和距离倒数的曲线图,该曲线可以近似为直线,可以根据该关系算出不同电压对应的距离值。

今天在调试的时候发现Arduino平台上有一个专门用于夏普红外模块测距的库ZSharpIR。 在这里插入图片描述

https://github.com/zoubworldArduino/ZSharpIR为该代码的具体仓库,其中的README.md文件中也介绍的使用方法 。该库中提供了另一种建立模拟电压和距离关系的方法:通过散点来拟合曲线函数的方式来建立模拟电压和距离的公式关系。这时候便需要用到了 https://mycurvefit.com/ 网站来建立散点对应的公式。

在这里插入图片描述

实例

这里以GP2Y0A41SK0F型号的红外测距模块为例:

打开 https://mycurvefit.com/网址,选择Fit Method --> Nonlinear --> Power,然后在下面的XY栏中输入XY的坐标输入完成后,选择Export后会生成相应的excel文件,该文件中包含了拟合曲线的函数。实际计算中便可以根据该函数进行距离的计算。 在这里插入图片描述 注意:这里上面的函数曲线并不是该模块的曲线实际是GP2Y0A02YK0F模块的函数曲线,这里只是为了说明。

该模块对应的实际函数关系:Distance = 12.08 X POW(Volt , -1.058)

Arduino平台下的测试代码(基于arduino uno)

Arduino uno 的ADC精度为10位

#define SIGNAL_PIN A0 void setup() { // put your setup code here, to run once: Serial.begin(115200); pinMode(SIGNAL_PIN, INPUT); } int get_distance(uint16_t value) { return (int)(120.8*pow(map(value, 0, 1023, 0, 5000)/1000.0, -1.058)); } void loop() { // put your main code here, to run repeatedly: uint16_t value = analogRead(SIGNAL_PIN); int distance = get_distance(value); Serial.print("ADC: "); Serial.print(value); Serial.print(" Distance(mm): "); Serial.print(distance); Serial.println(); delay(500); } 问题:

使用该模块在测距的过程中,遇到黑色障碍时,测量的距离会明显不准确。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3