光传感器和菲利普斯色调

时间:2018-03-26 02:22:28

标签: arduino raspberry-pi3 sensor philips-hue

我正在设计一个系统,其中光传感器检测房间内的光线,并根据它调整几个灯泡的输出。目标是根据外部阳光等环境条件保持房间内的标准光线水平。代码是用Python编写的,并使用Phillips色调灯泡来运行。伪代码如下:

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来检测灯光,灯泡是菲利普斯色调。

1 个答案:

答案 0 :(得分:2)

在这些情况下,传感器的放置是关键。您也可以尝试光学滤镜,但这不是完整的解决方案。

您的算法是粗略的,以补偿动态环境。真正的解决方案是使用PID算法随时间对光输出进行微调,以保持接近理想的总(环境+ LED)光照水平。

如果您搜索 pid控制器光传感器,请参阅此example,其中有许多相似的内容。

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

循环并重复。循环和/或增量大小的时间增量应随着与理想值的距离而变化。