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

news/2024/11/23 1:48:39/

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

型号选择

  • GP2Y0A21YK0F 10-80cm
  • GP2Y0A02YK0F 20-150cm
  • GP2Y0A710K0F 100-550cm
  • GP2Y0A51SK0F 2-15cm
  • GP2Y0A41SK0F 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  A0void 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);
}

问题:

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


http://www.ppmy.cn/news/251375.html

相关文章

夏普红外测距传感器

红外测距传感器&#xff0c;具备10-100cm厘米测距&#xff0c;5v供电&#xff0c;led屏&#xff0c;指定距离灯光语音报警 红外测距传感器利用ADC获取指定电压变化 void GetVolt() {u8 i;for(i0;i<160;i) {tempRegularConvData_Tab[i]; }temptemp/160;Volt1temp*3300/4096…

监视器(monitor)

在了解这两种锁之前&#xff0c;先要知道一个概念&#xff0c;"监视器"。 监视器是操作系统实现同步的概念&#xff0c;一个监视器往往一个对象引用相关联&#xff0c;当一个监视器开始监视某一段代码时&#xff0c;其他的线程就需要拥有这个监视器对应的对象&#…

JavaMonitor 监视器

为什么wait(), notify()和notifyAll()必须在同步方法或者同步块中被调用&#xff1f; 当一个线程需要调用对象的wait()方法的时候&#xff0c;这个线程必须拥有该对象的锁&#xff0c;接着它就会释放这个对象锁并进入等待状态直到其他线程调用这个对象上的notify()方法。同样的…

Monitor监视器对象

在分析完对象头以后&#xff0c;我们知道对象头里其实是有一个重量级锁的指针&#xff0c;而重量级锁的指针指向的就是monitor监视器对象。 synchronized无论是修饰代码块还是修饰普通方法和静态方法&#xff0c;本质上还都是作用在对象上 为什么说本质上synchronized还是作用…

推荐 10 个不错的网络监视工具,建议收藏!

关注 逆锋起笔 学习 资源、工具不用愁 ☞ 程序员进阶必备资源免费送「各种技术&#xff01;」 ☜ 有几个网络监视工具可以用于不同的操作系统。在这篇文章中&#xff0c;我们将讨论从 Linux 终端中运行的 10 个网络监视工具。 它对不使用 GUI 而希望通过 SSH 来保持对网络管理的…

智觉模具监视器,好用的模具监视器

作为工业生产上用以注塑、吹塑、挤出、压铸或锻压成型、冶炼、冲压等方法得到所需产品的重要道具&#xff0c;模具一直以来都是工业生产中不可或缺的组成部分&#xff0c;有着“工业之母”的称号&#xff01;模具通过所成型材料物理状态的改变来实现物品外形的加工从而满足工业…

监控工具

监控工具 常用的Linux性能监控工具&#xff1a;top,uptime,ps,pstree,free,mpstat,vmstat,iostat,netstat,ss ,sar,pmap,iptraf,tcpdump,ltrace,strace,numastat. 今天在这里介绍三个常用的&#xff0c;top&#xff0c;free&#xff0c;uptime 1 top:可以显示系统摘要信息&…

1562_AURIX_TC275_电源监控

全部学习汇总&#xff1a; GreyZhang/g_TC275: happy hacking for TC275! (github.com) 这一次的学习笔记内容比较少&#xff0c;因为有几页的文档内容跟之前看过的DataSheet内容雷同。因此&#xff0c;相应的学习笔记不再整理。 之前的学习笔记&#xff1a; (56条消息) 1451_…