传感器APDS9930为具有两种传感功能的芯片,一方面能够反映周围环境的亮度,另一方面能根据红外测距的原理能够感应物体的靠近。其广泛应用于手机,帮助手机做到根据环境光照强度调节屏幕背光亮度以及接听电话自动锁屏等功能。

阅读手册

APDS9930封装有8个脚,电和地各一个脚,I2C通信一个数据脚一个时钟脚,还有一个中断脚,可以根据用户设置的光照强度或者接近阈值来触发中断,还有脚LEDA和LEDK分别为芯片内部红外发光二极管的阳极和阴极,阴极一般直接连接芯片的最后一个脚:LDR。这个脚会根据用户的设置来产生不同频率的驱动信号来驱动发光二极管。

使用这个芯片获取环境光照强度手册说的比较清楚了,我们就简单说一下接近传感这一部分,芯片使用I2C与MCU通信,我这边的实现考虑移植性以及功能需求,决定采用IO口模拟的方式来实现与传感器通信。NXP 半导体(原 Philips半导体)于 30 多年前发明了一种简单的双向二线制串行通信总线,这个总线被称为现在被称为I2C 总线。关于I2C总线的详细介绍详见https://www.nxp.com/docs/en/user-guide/UM10204.pdf?fsrch=1&sr=1&pageNum=1。

I2C通信举个配置 APDS9930的例子简单说明。首先控制SLC和SDA发送I2C开始标志,然后发送从机地址(0x39)以及写入标志,然后等待一个数据位的ACK。然后发送8位数据COMMAND.这8位数据表明写入的寄存器地址以及操作方式(自增地址模式等),等待ack。然后发送要写入的8位数据以及等待ack,最后发送结束标志。

我们需要用I2C总线,去配置寄存器Enable Register,使能接近传感功能,Proximity Time Control Register寄存器以及Wait Time Register,配置积分转换时间以及状态机轮转等待时间,以及Proximity Pulse Count Register和Control Register寄存器,配置红外二极管的驱动脉冲数及电流等。下面列出跟接近传感功能相关的参数的意义。

参数含义

PTIME:接近传感器ADC的积分转化时间,以2.73为一个单位时间。他决定了AD输出的最大Count值,虽然固定积分时间越高,在有效量程的基础上分辨率会有所提高,但是鉴于其会提升累计误差的副作用,建议还是将这个参数设置为最低的时间2.73ms,对应的AD输出MAX_Count为1023。它并不能使有效量程改变。
    PGAIN: 传感器ADC的积分转化比例。他决定了AD输出与距离之间的比例,转化比例越大,距离的变化对AD输出的Count值影响会越明显红外的有效量程的起点和终端都会增大,对起点与终点在别的参数为手册推荐的时候,增大的比较明显。有效的量程会有些许增大。但是受干扰的可能性也会变大。
    PDRIVE:接近红外LED驱动电流大小,分为100mA到12.5mA四个档位,推荐参数为100mA,当调整为此参数更小的时候,有效量程的起点和重点都会明显的缩短,并且量程会减小。在区分离传感器极近距离的mm级别距离变化的时候用到电流值较小。

PPULSE: 在Prox Accum状态时,驱动接近红外传感的脉冲数,其对起点与终点有明显的更改,有效的量程会有些许增大。但是受干扰的可能性也会变大。手册做的调整这个参数的实验数据截图如下:

实际表现

由上图可以看出,传感器会根据所射向物体的不同灰度有不同的表现。

我们的接近功能的实现就利用AD输出满量程的这段距离。举个例子,如上图的8P的配置,灰度在18%~90%之间,其AD从满量程往下衰减的距离为4cm~8cm,及当物品在4cm~8cm之间的距离时,将会从寄存器Proximity DATA Register读出的AD值为满量程,用来区分物体是否接近。

接近与环境光强度数字传感器-APDS9930相关推荐

  1. BH1750环境光强度传感器FPGA驱动

    BH1750环境光强度传感器FPGA驱动 1. BH1750介绍        BH1750是一种用于两线式串行总线接口的数字型光强度传感器集成电路.这种集成电路可以根据收集的光线强度数据来调整液晶或 ...

  2. bme280 环境传感器开发板_STM32Cube14 | 使用硬件I2C读写环境光强度传感器

    更多精彩~点击上面蓝字关注我们呀!   寻求更好的阅读体验,请点击阅读原文移步:Mculover666的个人博客. 本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件I ...

  3. 基于STM32单片机环境光强度检测系统光敏电阻LCD1602

    实践制作DIY- GC0011-环境光强度检测系统光敏电阻 一.功能说明: 基于STM32单片机设计-环境光强度检测系统光敏电阻 功能介绍: 1.基于STM32F103C系列,LCD1602,使用光敏 ...

  4. STM32F103—有关BH1750(GY-302)环境光强度传感器模块的代码

    VCC(供电电压源正极,3.3~5v的电压) GND(供电电压源负极) SCL(IIC时钟线,时钟输入引脚,由MCU输出时钟)GPIO_Pin_6 SDA(IIC数据线,双向IO口,用来传输数据)GP ...

  5. Unity学习-熟悉环境

    Unity引擎基础 Unity环境搭建 C#基础 Unity API 物理引擎1 3D数学基础 UGUI Unity环境 设置 layout–2 by 3 Project – 1 column 面板 ...

  6. 基于环境光照度和物体距离的数据采集系统设计

    视频演示链接:labview上位机和FPGA下位机的心得_哔哩哔哩_bilibili 目录 基于环境光照度和物体距离的数据采集系统设计 第1章 绪论 1.1课题目的与现状 第2章 硬件平台基本概述及编 ...

  7. Openstack组件部署 — Overview和前期环境准备

    目录 目录 前言 软件环境 Openstack 简介 Openstack 架构 Openstack Install Overview 创建Node虚拟机 环境准备 基础设置 Install OpenS ...

  8. javaScript执行环境、作用域链与闭包

    一.执行环境 执行环境定义了变量和函数有权访问的其他数据,决定了他们各自的行为:每个执行环境都有一个与之关联的变量对象,环境中定义的所有变量和函数都保存在这个对象中.虽然我们编写的代码无法访问这个对象 ...

  9. Uber提出有创造力的POET:自行开发更困难环境和解决方案

    近日,Uber 发文介绍了一种开放式方法 POET(Paired Open-Ended Trailblazer),可自行开发难度递增的环境及其解决方案,还可以实现不同环境中的智能体迁移,促进进化. U ...

最新文章

  1. 【爬虫】Scrapy爬取腾讯社招信息
  2. Mac OS X 10.10.3对SSD开启Trim功能
  3. Java的直接量——2017.08.01
  4. 笨方法使用Kubernetes实现持续交付
  5. cache控制器取值从TCM/CACHE/FLASH
  6. 【java虚拟机序列】java中的垃圾回收与内存分配策略
  7. Linux修改的文件“修改时间”
  8. LDA(latent dirichlet allocation)的应用
  9. 史上最完整基于Springboot实现进销存管理系统
  10. 帝国cms插件-百度收录api模式插件
  11. [摘]研究方法 - 实证研究
  12. 媒体访谈| 知道创宇邓金城: DDoS攻势愈烈,抗D服务需不断优化
  13. c语言如何多核运行程序,对于多线程程序,单核cpu和多核cpu如何工作?
  14. 笔记 :AVS2背景建模
  15. python:实现9×9二维数组数独算法(附完整源码)
  16. 一些RJS资源和演示入门教程
  17. Verilog状态机常见三种写法
  18. NSIS Error错误解决方法
  19. Java实现 LeetCode 309 最佳买卖股票时机含冷冻期
  20. swift for 循环

热门文章

  1. 计算机科学与技术的未来发展前景
  2. 分享一款超级好用的Windows清理软件
  3. team网卡绑定以及模式切换
  4. 关于720全景视频在移动端播放的兼容问题汇总,截止2017年11月29日
  5. 读书是在丰富你,读你自己
  6. ICLR 2020 VL-BERT: PRE-TRAINING OF GENERIC VISUAL- LINGUISTIC REPRESENTATIONS
  7. 2021计算机考研时间表,2021计算机考研备考:时间复杂度计算
  8. 庄懂的技术美术入门课(美术向)——学习笔记01
  9. 很抱歉遇到一些临时服务器问题
  10. 清零实验,拆字实验,8255并行口实验(硬件),继电器控制实验(硬件)