So I have 12V LED lightbulbs of different brands and models, connected to PWM outputs through mosfets (ESP32 so it uses the ledc platform, whose C++ class LEDCOutput inherits from FloatOutput).
The brightness is non-linearly related to the PWM duty cycle. Up to some value there’s no light coming out, from there the brightness increases at some rate and starting from say 85% duty cycle to 100% the brightness is again constant. With some models there’s even a slight peak around 80-90% after which the brightness goes down just very slightly to settle at the nominal brightness.
So I’d like to comensate for this and FloatOutput has
max_power settings for this. But I’d like the pwm pins to output constant 0V level (0%) before
min_power and constant logical 1 level (100%) after reaching
max_power, to avoid wearing out the mosfets and the lightbulbs. I only need PWM for the short fade in and fade out effects.
So I can implement that locally but I’d like it to be user selectable through some output setting so that it’s potentially upstreamable. Does anyone have suggestions on what setting logic to use? Just add a new boolean settings
on_at_max_power? Or maybe a full input interval to output interval mapping like the sensor output filter
Or, why not, a full fledged input filter setting that allows any of the existing filters, like
delta, etc. to be applied to the input value?
Or should this be a light setting, like
gamma? But you could argue it’s also useful for fan speeds etc. Thanks for reading until here