Dieser Sensor wird auch von Homematic im HM-Sen-MDIR-WM55 verwendet.
Er ist stromsparend und hat zusätzlich eine recht gute Auflösung speziell im dunkleren Bereich, er kann von 0,01 bis 83865,60 LUX messen.
Zusätzlich habe ich eine Umsetzungsfunktion von LUX100 nach MDIR Helligkeit eingebaut.
Mich hat beim Nachbau MDIR immer gestört, das der Messbereich der Helligkeit sich so sehr von den Originalgeräten unterschieden hat, das eine Mischbestückung und Vereinheitlichung der Helligkeitswerte unmöglich war.
Zum besseren Verständnis des Messbereichs habe ich über Tage einen LUX Sensor und einen HM-Sen-MDIR-WM55 nebeneinander gelegt und deren Messwerte aufgezeichnet. Herausgekommen ist dabei folgende Grafik:
In der Grafik kann man recht gut sehen dass der LUX Wert nicht proportional zum MDIR Helligkeitswert ist. Da ich in Mathe auch nicht besonders gut bin und der Arduino sich Grundsätzlich mit Quadratfunktionen und Kommawerten schwer tut, bzw verdammt viel Speicher braucht, habe ich die Umrechnung mit einem LookupTable realisiert.
Die Excel Tapete mit den Rohdaten und der Modellierung des Lookuptables findet ihr auf meinem Github und im Anhang Einbinden funktioniert recht einfach - im MDIR Sketch ergänzen:
Code: Alles auswählen
#if defined(_TSL2561_H_)
typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0,Tsl2561<TSL2561_ADDR_LOW> > MChannel;
#elif defined(__SENSORS_BH1750_h__)
typedef MyMotionChannel<Hal, PEERS_PER_CHANNEL, List0, Bh1750<> > MChannel;
#elif defined(__SENSORS_OPT3001_h__)
typedef MotionChannel<Hal, PEERS_PER_CHANNEL, List0, Opt3001<> > MChannel;
#else
typedef MotionChannel<Hal,PEERS_PER_CHANNEL,List0> MChannel;
#endif
Im LUX Sensor kann das Modul genauso eingebunden werden und zeigt dann natürlich den Lux Wert an.