APDS9930

最近弄了2个APDS9930模块,本来想精准的测试一下距离,但是最终经过测试,发现测出来的距离其实不是很准。

一、硬件以及连接方式


其中,出了INT可以不连,其他的必须连。
注:VL连3.3V,我最开始没有连,导致读不到距离,浪费了一段时间。 想想自己也挺二的,APDS9930毕竟是个模-数转换设备,肯定要有个参考电压呀。

二、程序

用STC的单片机写了个51程序。
http://download.csdn.net/download/j524265813/9931749

用openwrt也写了一份

http://download.csdn.net/download/j524265813/9931758

结果会写到rst1.csv里,注意每次运行前清理之前的rst1.csv


三、尝试模拟出计算距离的公式

但是距离都测不准。文档中也没有给出具体公式,就简单画了个图:


我自己亲自测试了下,曲线是比较类似:(ATIME=PTIME=0XF7,PPLUSE=0X8):

测试过程比较简单粗暴,就是把APDS9930固定到一个位置后,移动前面的遮挡物(速度靠感觉)



C1和C1.1是第一个APDS9930的连续两次测试。

C2是另外一个APDS9930的一次测试。


那么我想有可能两次手速不一样,导致测的结果存在较大差异吧,因此我把两个APDS9930固定到了一起,然后把程序改成控制2个I2C设备(由于地址都是0x39,无法用1个I2C接口来驱动),得到的结果是这样的:


我又试了很多次,也交换了两个APDS9930的位置,得到的结果永远是Prox_data先衰减,因此我觉得,可以确认不同的设备,具体距离曲线是有差异的。(我是在两个淘宝店买的)
两者分别进行拟合,得到的函数也看不到什么关联:
Prox_data:


Pro_data1:


从测试情况来看,APDS9930是没有一个准确公式来计算出距离的。哪位有什么好的办法,还请赐教。

四、一点总结

ATIME,PTIME:设置越小,意味着采样时间越长,得到的计数值越大。

比如设置为0xff时,实际是一个采样周期(256-0xff=1),那么采样时间为2.73ms。
另外还发现一点:设置成0xff时,测量到的范围很小,但是精度很高;设置成0x00时,测量范围很大,但是精度会降低。拿距离来举例,设置成.0xff时,可能量程只有5cm,设置成0x00时,量程能到15cm+。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值