夏普SHARP 10-80cm红外测距传感器 GP2Y0A21YK0F 性能测试


夏普SHARP GP2Y0A21YK0F

传感器简介

品牌:夏普SHARP
型号:GP2Y0A21YK0F
产地:日本/Japan
类型:红外测距传感器 
距离测量范围:10~80CM
信号类型:模拟量输出型
包装尺寸:29.5×13×13.5mm
消耗电流:30mA(典型)
电源电压:4.5~5.5 V

常见应用

触摸开关(卫浴设备,照明控制等)
机器人清洁器
节能传感器(自动取款机、复印机、自动售货机)
游乐设备(街机游戏机机器人)
计数器(流水线、道闸)

测试前先贴一部分官方提供的DataSheet截图






根据上述技术手册可分析得知,该款传感器信号输出类型为电压模拟量,且与测量距离的输出关系呈类反比的非线性关系。
测量距离为6CM左右时输出电压值最大,大致为3.1V;
测量距离在80CM左右时,输出变化已经很小了,大致0.5V附近。


了解上述内容后,老套路,依旧是发烟测试,通过Arduino测试实际效果。
测试平台

根据时序关系编程如下:

//#include <LiquidCrystal.h>
//LiquidCrystal LCD1602(16,15,7,6,5,4);    //初始化LCD1602

void setup() {
  Serial.begin(9600);
  //LCD1602.begin(16,2);    //设置16*2显示
  pinMode(14,INPUT);
  //LCD1602.clear();   //清屏
  delay(45);
}

void loop() {
  int val;
  val = analogRead(14);
  // float i = val * (5.0 / 1023.0);
  Serial.print(val);
  Serial.print("*");
  //LCD1602.setCursor(0,0);   //0列0行
  //LCD1602.print(val); 
  //LCD1602.clear();   //清屏
}

串口输出值最大650左右

大家都知道,由于Arduino的模拟量输入测量实际上就是AVR单片机的ADC测量,基准电压:5VDC,分为了1024份显示罢了。
通过上述对数据手册的解读可知,理论应该显示的最大值为:

        int(1024 * 3.1 / 5) = 635

考虑实际环境中的偶然误差,官方数据还是相当准确的。
本打算通过Python将相关实测数据绘制出来的,但最近家里网络环境一直很一般,



想现装Python数据分析的相关库装不了,怎么办?
有办法,还有很好用的Processing嘛。

绘制界面如下:

Processing绘制显示界面

在5CM处:

        int((635 / 1024) * 10) = 6 
在5CM处实测值:显示6个立方体

30CM处:

         理论值: int(((1024 * 0.9 / 5)/ 1024) * 10) = 2
30CM处实测值

60CM处:

           理论值:int(((1024 * 0.5 / 5)/ 1024) * 10) = 1
60CM处实测值

结论

通过上述实测数据,官方提供的数据在实际环境中基本准确。
一开始做测距实验时我们一般会选择超声波传感器,而使用超声波传感器不光浪费单片机接口,环境条件也会对其测量结果造成较大干扰。
红外测距传感器在一定条件下几乎不受环境条件影响,因此应用于实际测距电路中效果更好、性能更稳定。


    感谢一直关注着禾灮成长进步的朋友们。你们的信任、支持和鼓励,鞭策着我们一路走到了今天。
    
    感谢所有的合作伙伴,我们相互促进,共同见证了彼此的成长。

    感谢所有曾经在禾灮彼此倚靠、相互鼓励、携手同心、砥砺同行的兄弟姐妹。这里承载了我们的青春与热血。

                禾灮,感谢有你。

    未来,我们将一如既往,砥砺前行。

                                        禾灮·小楊
                                       2018.08.12

推荐阅读更多精彩内容