GP2Y0A21YK0F距离传感器输出特性分析及其使用(IIC总线与PCF8591AD转换)+Proteus仿真(附源码)

本文深入解析了GP2Y0A21YK0F距离传感器的工作原理及PCF8591 AD转换器的使用方法,包括传感器的输出特性分析、IIC总线模拟以及具体实例代码,旨在为电子爱好者和工程师提供实用的参考。

一、GP2Y0A21YK0F距离传感器分析

1.1 传感器介绍

GP2Y0A21YK0F是一款距离测量传感模块。它由PSD(position sensitive detector)和IRED(infrared emitting diode)以及信号处理电路三部分组成。由于采用了三角测量的方式,被测物体的材质、环境温度以及测量时间都不会影响测量精度。传感器输出电压值对应探测距离。通过测量电压值就可以得出所测物体的距离,所以这款传感器可以用于距离测量、避障等场合。

1.2 传感器参数

1.3 时序图

由上述时序图可知,传感器在上电之后要花费(38.3±9.6)ms进行第一次测量,在第一次测量期间,传感器的输出是不稳定的。在第一次测量结束之后,传感器还要花费最多5ms来建立稳定输出。因此,保险起见,我选择在上电55ms后再进行测量。

1.4 输出特性分析

通过上述传感器输出特性曲线我们看到,该传感器最令人遗憾的一点大概就是输出特性并非是简单的一元一次函数,而是曲线,这就给传感器的使用带来的不便。对此,我采用分段函数对该曲线进行近似。由于在每一段分段函数内部,测量距离与输出电压为线性关系,而输出电压又与AD采样值之间为线性关系。因此,我跳过对输出电压的计算过程,在每一段内直接找测量距离与AD采样值之间的线性关系。下图是我对测量距离为10cm和15cm时AD值得测量:

通过上述图同门可以看出,当距离为10cm时AD值为115,当距离为15cm时AD值为82,通过“两点法”公式可以得出当测量距离在10-15cm之间时,距离=(-5/33)*AD值+905/33。以此类推,可以得到以下分段函数

/***temp为距离,x为AD值***/
if(x>=82&&x<=115)
{
	temp=(-5*x+905)/33.0;
}
else if(x>=65&&x<82)
{
	temp=(-5*x+665)/17.0;
}
else if(x>=46&&x<65)
{
	temp=(-10*x+1030)/19.0;
}
else if(x>=36&&x<46)
{
	temp=76.0-x;
}
else if(x>=30&&x<36)
{
	temp=(-5/3.0)*x+100.0;
}
else if(x>=26&&x<30)
{
	temp=(-5/2.0)*x+125.0;
}
else if(x>=23&&x<26)
{
	temp=(-10*x+440)/3;
}
else if(x>=21&&x<23)
{
	temp=-5.0*x+185.0;
}

 

二、PCF8591AD转换器

2.1 模块介绍

PCF8591 是单电源,低功耗8 位CMOS 数据采集器件,具有4 个模

评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值