代码之家  ›  专栏  ›  技术社区  ›  netzero

光传感器和菲利普斯色调

  •  1
  • netzero  · 技术社区  · 6 年前

    我正在设计一个系统,其中一个光传感器检测房间中的光线,并以此为基础调整几个灯泡的输出。目标是根据外部阳光等环境条件,保持房间内的标准光照水平。该代码是用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 回复  |  直到 6 年前
        1
  •  3
  •   Gerhard    6 年前

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

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

    看到这个了吗 example ,如果您搜索 pid控制器光传感器 .

    类似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
    

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