光传感器和飞利浦色调
Light sensors and Phillips hue
我正在设计一个系统,其中光传感器检测房间内的光线,并根据光线传感器调整几个灯泡的输出。目标是根据外部阳光等环境条件,使房间内的光线保持在标准水平。代码是用 Python 编写的,并使用 Phillips hue 灯泡来运行。伪代码如下:
if (read light is in between 10 - 50 lumins) {
set bulb to 100 lumins
}
if (read light is in between 51-100 lumins) {
set bulb to 50 lumins
}
等
然而,最终发生的情况是,在每次迭代后,当灯光设置为特定值时,传感器会检测到灯泡自身的灯光,并在下一次迭代时调暗灯光。灯光最终每秒从高到低闪烁。有没有人有处理这种事情的算法的经验?本质上,问题在于光传感器正在检测灯泡自身的光,然后撤销其先前的决定。我正在使用标准 TSL2561 sensor 来检测光线,灯泡是菲利普斯色调。
在这些情况下,传感器的放置很关键。您也可以尝试滤光片,但这不是完整的解决方案。
您的算法过于粗糙以补偿动态环境。真正的解决方案是使用 PID 算法随着时间的推移对光输出进行小的调整,以保持接近理想的总(环境 + LED)光水平。
看到这个 example,如果您搜索 pid controller light sensor。
,那里有很多类似的东西
类似 PID 的控制系统的简化伪代码表示为:
read in_lumins
if (in_lumins is in between 10 - 50 lumins) {
increment out_lumins
}
if (in_lumins is in between 51-100 lumins) {
decrement out_lumins
}
set bulb to out_lumins
循环并重复。循环上的时间增量 and/or 增量大小应随与理想值的距离而变化。
我正在设计一个系统,其中光传感器检测房间内的光线,并根据光线传感器调整几个灯泡的输出。目标是根据外部阳光等环境条件,使房间内的光线保持在标准水平。代码是用 Python 编写的,并使用 Phillips hue 灯泡来运行。伪代码如下:
if (read light is in between 10 - 50 lumins) {
set bulb to 100 lumins
}
if (read light is in between 51-100 lumins) {
set bulb to 50 lumins
}
等
然而,最终发生的情况是,在每次迭代后,当灯光设置为特定值时,传感器会检测到灯泡自身的灯光,并在下一次迭代时调暗灯光。灯光最终每秒从高到低闪烁。有没有人有处理这种事情的算法的经验?本质上,问题在于光传感器正在检测灯泡自身的光,然后撤销其先前的决定。我正在使用标准 TSL2561 sensor 来检测光线,灯泡是菲利普斯色调。
在这些情况下,传感器的放置很关键。您也可以尝试滤光片,但这不是完整的解决方案。
您的算法过于粗糙以补偿动态环境。真正的解决方案是使用 PID 算法随着时间的推移对光输出进行小的调整,以保持接近理想的总(环境 + LED)光水平。
看到这个 example,如果您搜索 pid controller light sensor。
,那里有很多类似的东西类似 PID 的控制系统的简化伪代码表示为:
read in_lumins
if (in_lumins is in between 10 - 50 lumins) {
increment out_lumins
}
if (in_lumins is in between 51-100 lumins) {
decrement out_lumins
}
set bulb to out_lumins
循环并重复。循环上的时间增量 and/or 增量大小应随与理想值的距离而变化。