Neuer Helligkeitssensor OPT3001 in AskSin

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

Antworten
Horbi
Beiträge: 199
Registriert: 29.05.2019, 12:51
Hat sich bedankt: 19 Mal
Danksagung erhalten: 65 Mal

Neuer Helligkeitssensor OPT3001 in AskSin

Beitrag von Horbi » 24.05.2021, 16:57

Ich habe in den letzten Tagen einen neuen Helligkeitssensor in AskSin implementiert - den OPT3001.
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:

Grafik.png
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
PIR-Addon.xlsm
(161.56 KiB) 32-mal heruntergeladen
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
Die MDIR Konvertierung ist bereits im Modul motion.h hinterlegt und aktiviert.

Im LUX Sensor kann das Modul genauso eingebunden werden und zeigt dann natürlich den Lux Wert an.

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“