2024-09-01
售卖作品
00

目录

帮助、问询

效果:

在这里插入图片描述

得到载图,ID不太符合手册写的,估计芯片后来又改了些东西的。

读取的数值是稳定的就行,比GY-30模块读取的数值要低,但查了查光照强度的概念并做了实验后,发现TSL2561的光照强度结果可信度高一些。anyway 我只需要稳定的数值就代表读取成功了,别的也不是很关心。

在这里插入图片描述

c
u8 TSL2561ID; u16 Chanel0_Val; u16 Chanel1_Val; int main( void ) { WDTCTL = WDTPW + WDTHOLD; /* Stop WDT */ intclock_8mhz_32768(); /* 单片机时钟 */ TSL2561_Init( TIMING_402MS ); /* 设置引脚 IIC + 打开电源 + 设置 增益1X 积分时间402ms */ TSL2561_Write( TSL2561_REG_INTCTL, 0x10 ); /* 打开中断 */ TSL2561ID = TSL2561_read_byte( TSL2561_REG_ID ); /* 读取ID */ P2DIR &= ~BIT2; /* INT引脚输入+上拉 */ P2REN |= BIT2; /* INT引脚输入+上拉 */ P2OUT |= BIT2; /* INT引脚输入+上拉 */ while ( 1 ) { while ( P2IN & BIT2 ) ; /* INT低电平表示转换结束 */ Chanel0_Val = TSL2561_Chanel0Read(); /* 读取CH0 */ Chanel1_Val = TSL2561_Chanel1Read(); /* 读取CH1 */ if ( getLux( 0, 402, Chanel0_Val, Chanel1_Val ) == 1 ) /* gain=0就是不设置增益 402ms积分时间 CH0 CH1 */ { delay_ms( 1 ); /* 此处设置断点查看全局变量Lux的值就是光照强度的数值 */ } } }

买了个模块 GY2561:

红色圈那里就是设置IIC地址线的,焊接的时候就顺便把中间线连到了高电平。模块上带降压稳压。

在这里插入图片描述

芯片手册:

https://cdn-shop.adafruit.com/datasheets/TSL2561.pdf

手册解读:

常规模块,看了后面手册知道了INT作用,INT作用是可配置的,可以配置为每次ADC采集后都INT(不用轮询),也可以配置为去为了上下限报警服务。INT是低电平有效,平时最好接一个上拉电阻。

在这里插入图片描述

TSL256x包含两个集成模数转换器(ADC),用于集成来自通道0和通道1光电二极管的电流。两个通道的积分同时进行,转换周期完成后,转换结果分别传输至通道0和通道1数据寄存器。传输经过双重缓冲,以确保传输过程中不会读取无效数据。转移后,设备自动开始下一个集成周期。

地址如下。

在这里插入图片描述

内部所有寄存器如下:

在这里插入图片描述

命令寄存器。

在这里插入图片描述

控制寄存器,TSL2561上电后内部转换电源是关闭状态,依靠向控制寄存器写入0x03达到开启电源的目的。

在这里插入图片描述

积分时间和增益控制寄存器。

在这里插入图片描述

积分时间设置不同,那么scale不同,采集时间也不同。

在这里插入图片描述

中断控制寄存器。

要么设置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

ID寄存器,地址0x0A,读了之后是个固定值,可以用来判断IIC通信是否正常。

在这里插入图片描述

光强采集结果就是存下面四个寄存器,通道0和通道1,表格里先后顺序才能读。读出后怎么转换光强lux后面说。

在这里插入图片描述

读取过程,上电后把contorl寄存器写0x03之后,模块就默认方式(Timing)采集一次,400ms后有结果。如何读取见下图。

在这里插入图片描述

如何设置Timing:

在这里插入图片描述

手动积分控制,这东西用不上,不用看。我们都自动积分。

在这里插入图片描述

TSL256x旨在用于环境光检测应用,如显示器背光控制,根据人眼感知的环境光亮度调整显示器亮度或对比度。传统的硅探测器对红外光反应强烈,而人眼却看不见。由于硅检测器响应和人眼感知的亮度之间的差异,当环境光的红外含量高时,例如白炽灯照明,这可能导致显著的误差。通过使用两个光电二极管,TSL256x克服了这个问题。其中一个光电二极管(通道0)对可见光和红外光都敏感,而第二个光电二极管(通道1)主要对红外光敏感。积分模数转换器将光电二极管电流转换为数字输出。通道1数字输出用于补偿光的红外分量对通道0数字输出的影响。两个通道的模数转换器数字输出用于一个公式,以获得一个近似于人眼响应的值。

不同封装计算lux光强计算方式不一样。

在这里插入图片描述

一般都不会是CS封装。

得到CH0和CH1后直接计算光照强度即可,没啥好说的。不过网上那个简洁计算的程序好像有问题,谁有时间去移植一下芯片里面给出的参考才是最好的。我就比较懒了,直接按下图公式算就得了,因为MSP430F5529或者STM32单片机是支持pow乘方计算的。

在这里插入图片描述

帮助、问询

csharp
https://docs.qq.com/sheet/DUEdqZ2lmbmR6UVdU?tab=BB08J2
如果对你有用的话,可以打赏哦
打赏
ali pay
wechat pay

本文作者:Dong

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC。本作品采用《知识共享署名-非商业性使用 4.0 国际许可协议》进行许可。您可以在非商业用途下自由转载和修改,但必须注明出处并提供原作者链接。 许可协议。转载请注明出处!