tag 标签: opt101,max187,时序

相关博文
  • 热度 15
    2014-8-7 20:53
    3271 次阅读|
    2 个评论
    之前用过MAXIM的光传感器。那个芯片的的对流明度的感光能力很强,但是就是有个缺点。太不同意焊接了。才6个脚。底下那个裸露的焊盘还要求接地,当时搞了好久才把那芯片给弄上去。叫做MAX44009。   MAX44009环境光传感器 ,可理想用于 智能手机、笔记本电脑、工业传感器等便携产品。器件工作 电流小于1μA,是业内功耗最低的环境光传感器,具有22 位超宽动态范围(0.045流明至188,000流明)。 由于能够检测极其微弱的光线,可理想工作在深色玻璃环 境下。 片上光电二极管的光谱响应针对人眼对环境光的响应进行优 化,集成红外及紫外线屏蔽。自适应增益电路可自动选择正 确的流明范围优化测试(计数值/流明)。   44009的结构框图如下。     对光灵敏度有高要求的可以考虑试试MAX44009。对于美信,用它的IC还算比较多。这个也算推荐吧。但是今天他不是重点。重点是介绍德州仪器的唯一一款模拟的光传感器OPT101。为了做一个智能家居的方案。为了能感知环境温度以及对家居内部的灯光效应做出反应,选型方案的时候找过好多关于光的传感器。最后考虑了下用德州仪器这个光传感器来做。   单电源供电+2.7 to +36V。带宽14kHz at RF= 1MΩ。   结构式这样的。   对波长的反应曲线图如下。   但是接的时候是根据经典的接法连接的,另外也可利用内部的光二极管自己设定相关的电路。测量时候。跟光的强弱以及倾斜的角度都有关系,以及远近的距离。说白了其实就是内部接收的光转换为电流的大小的能力决定了输出。     输出端直接用万用表测量可以看到明显的变化。后期用的MAX187这个12位自带4096基准的AD芯片。这个也比较好用。一般单通道的AD自己基本就是用的这个。SPI通信。最关键的就是自带的那个2的12次方4096的基准。   MAX187 用采样 / 保持电路和逐位比较寄存器将输入的模拟信号转换为 12 位的数字信号,其采样 / 保持电路不需要外接电容。 MAX187 有 2 种操作模式:正常模式和休眠模式,将置为低电平进入休眠模式,这时的电流消耗降到 10μA 以下。置为高电平或悬空进入正常操作模式。   完整的操作时序如图 所示。使用内参考时,在电源开启后,经过 20 ms 后参考引脚的 4 . 7μF 电容充电完成,可进行正常的转换操作。 A/D 转换的工作过程是:当为低电平时,在下降沿 MAX187 的 T/H 电路进入保持状态,并开始转换, 8 . 5μs 后 DOUT 输出为高电平作为转换完成标志。这时可在 SCLK 端输入一串脉冲将结果从 DOUT 端移出,读入单片机中处理。数据读取完成后将置为高电平。要注意的是:在置为低电平启动 A/D 转换后,检测到 DOUT 有效(或者延时 8.5μs 以上),才能发 SCLK 移位脉冲读数据, SCLK 至少为 13 个。发完脉冲后应将置为高电平。     结果还比较理想。这款也对光的感知能力比较强。后期又用它来感测光源也能得到输出的变化不同。   简易拍照实物如下图。   程序如下,用的MSP430单片机。   #include"msp430x14x.h" #define MAX187_SK_H P2OUT|=BIT0 #define MAX187_SK_L P2OUT=~BIT0 #define MAX187_CS_H P2OUT|=BIT1 #define MAX187_CS_L P2OUT=~BIT1 #define MAX187_DO P2INBIT2 #define MAX187_CMDOut P2DIR=0xc3 //延迟I*8 US void delays(uint i) {    uint j;    for(j=i;j0;j--)   _NOP(); } unsigned int MAX187read(void) {    MAX187_CMDOut;    uchar i;    int s;   //16位变量    MAX187_CS_L;  //低电平有效,开始转换    delays(2);    //延时8.5μ等待转换结束    MAX187_SK_H;    MAX187_SK_L;        s=0;         //全位变量清零    for(i=12;i0;i--)    {      MAX187_SK_H;      if(MAX187_DO) s++;      MAX187_SK_L;      delays(1);      if(i1) s=1;    }    delays(1);    MAX187_CS_H;    return s; }