|
MycilaJSY 13.0.0
Arduino / ESP32 library for the JSY1031, JSY-MK-163, JSY-MK-193, JSY-MK-194, JSY-MK-227, JSY-MK-229, JSY-MK-333 families single-phase and three-phase AC bidirectional meters from Shenzhen Jiansiyan Technologies Co, Ltd.
|
Thyristor (TRIAC) based dimmer implementation for TRIAC and Random SSR dimmers. More...
#include <MycilaDimmerThyristor.h>


Public Member Functions | |
| void | setPin (gpio_num_t pin) |
| Set the GPIO pin to use for the dimmer. | |
| gpio_num_t | getPin () const |
| Get the GPIO pin used for the dimmer. | |
| void | setSemiPeriod (uint16_t semiPeriod) |
| Set the semi-period of the grid frequency in us. It cannot be zero and it is required for proper dimmer operation. | |
| uint16_t | getSemiPeriod () const |
| Get the semi-period of the grid frequency in us. | |
| uint16_t | getFiringDelay () const |
| Get the firing delay in us of the dimmer in the range [0, semi-period] At 0% power, delay is equal to the semi-period: the dimmer is kept off At 100% power, the delay is 0 us: the dimmer is kept on This value is mostly used for TRIAC based dimmers but also in order to derive metrics based on the phase angle. | |
| float | getPhaseAngle () const |
| Get the phase angle in degrees (°) of the dimmer in the range [0, 180] At 0% power, the phase angle is equal to 180 At 100% power, the phase angle is equal to 0. | |
| void | begin () override |
| Enable a dimmer on a specific GPIO pin. | |
| void | end () override |
| Disable the dimmer. | |
| const char * | type () const override |
| bool | calculateMetrics (Metrics &metrics, float gridVoltage, float loadResistance) const override |
| Public Member Functions inherited from Mycila::Dimmer | |
| void | setDutyCycleLimit (float limit) |
| Set the power duty cycle limit of the dimmer. The duty cycle will be clamped to this limit. | |
| void | setDutyCycleMin (float min) |
| Duty remapping (equivalent to Shelly Dimmer remapping feature). Useful to calibrate the dimmer when using for example a PWM signal to 0-10V analog convertor connected to a voltage regulator which is only working in a specific voltage range like 1-8V. | |
| void | setDutyCycleMax (float max) |
| Duty remapping (equivalent to Shelly Dimmer remapping feature). Useful to calibrate the dimmer when using for example a PWM signal to 0-10V analog convertor connected to a voltage regulator which is only working in a specific voltage range like 1-8V. | |
| float | getDutyCycleLimit () const |
| Get the power duty cycle limit of the dimmer. | |
| float | getDutyCycleMin () const |
| Get the remapped "0" of the dimmer duty cycle. | |
| float | getDutyCycleMax () const |
| Get the remapped "1" of the dimmer duty cycle. | |
| void | enablePowerLUT (bool enable, uint16_t semiPeriod=0) |
| Enable or disable the use of power LUT for dimmer curve The power LUT provides a non-linear dimming curve that is more aligned with human perception of brightness. If disabled, a linear dimming curve will be used. | |
| bool | isPowerLUTEnabled () const |
| Check if the power LUT is enabled. | |
| uint16_t | getPowerLUTSemiPeriod () const |
| Get the semi-period in us used for the power LUT calculations. If LUT is disabled, returns 0. | |
| bool | isEnabled () const |
| Check if the dimmer is enabled (if it was able to initialize correctly). | |
| bool | isOnline () const |
| Returns true if the dimmer is marked online. | |
| void | setOnline (bool online) |
| Set the online status of the dimmer. | |
| void | on () |
| Turn on the dimmer at full power. | |
| void | off () |
| Turn off the dimmer. | |
| bool | isOff () const |
| Check if the dimmer is off. | |
| bool | isOn () const |
| Check if the dimmer is on. | |
| bool | isOnAtFullPower () const |
| Check if the dimmer is on at full power. | |
| bool | setDutyCycle (float dutyCycle) |
| Set the power duty. | |
| float | getDutyCycle () const |
| Get the power duty cycle configured for the dimmer by teh user. | |
| float | getDutyCycleMapped () const |
| Get the remapped power duty cycle from the currently user set duty cycle. | |
| float | getDutyCycleFire () const |
| Get the real firing duty cycle (conduction duty cycle) applied to the dimmer in the range [0, 1]. | |
| bool | calculateHarmonics (float *array, size_t n) const |
Static Public Member Functions | |
| static void | onZeroCross (int16_t delayUntilZero, void *args) |
Protected Member Functions | |
| bool | _apply () override |
| bool | _calculateHarmonics (float *array, size_t n) const override |
Additional Inherited Members | |
| Static Protected Member Functions inherited from Mycila::Dimmer | |
| static uint16_t | _lookupFiringDelay (float dutyCycle, uint16_t semiPeriod) |
| static float | _contrain (float amt, float low, float high) |
| static bool | _calculatePhaseControlHarmonics (float dutyCycleFire, float *array, size_t n) |
| static bool | _calculatePhaseControlMetrics (Metrics &metrics, float dutyCycleFire, float gridVoltage, float loadResistance) |
| Protected Attributes inherited from Mycila::Dimmer | |
| bool | _enabled = false |
| bool | _online = false |
| float | _dutyCycle = 0.0f |
| float | _dutyCycleFire = 0.0f |
| float | _dutyCycleLimit = 1.0f |
| float | _dutyCycleMin = 0.0f |
| float | _dutyCycleMax = 1.0f |
| bool | _powerLUTEnabled = false |
| uint16_t | _semiPeriod = 0 |
Thyristor (TRIAC) based dimmer implementation for TRIAC and Random SSR dimmers.
Definition at line 14 of file MycilaDimmerThyristor.h.
|
inlinevirtual |
Definition at line 16 of file MycilaDimmerThyristor.h.
|
inlineoverrideprotectedvirtual |
Reimplemented from Mycila::Dimmer.
Definition at line 108 of file MycilaDimmerThyristor.h.
|
inlineoverrideprotectedvirtual |
Reimplemented from Mycila::Dimmer.
Definition at line 121 of file MycilaDimmerThyristor.h.
|
overridevirtual |
Enable a dimmer on a specific GPIO pin.
Reimplemented from Mycila::Dimmer.
Definition at line 55 of file MycilaDimmerThyristor.cpp.
|
inlineoverridevirtual |
Reimplemented from Mycila::Dimmer.
Definition at line 76 of file MycilaDimmerThyristor.h.
|
overridevirtual |
Disable the dimmer.
Reimplemented from Mycila::Dimmer.
Definition at line 75 of file MycilaDimmerThyristor.cpp.
|
inline |
Get the firing delay in us of the dimmer in the range [0, semi-period] At 0% power, delay is equal to the semi-period: the dimmer is kept off At 100% power, the delay is 0 us: the dimmer is kept on This value is mostly used for TRIAC based dimmers but also in order to derive metrics based on the phase angle.
Definition at line 50 of file MycilaDimmerThyristor.h.
|
inline |
Get the phase angle in degrees (°) of the dimmer in the range [0, 180] At 0% power, the phase angle is equal to 180 At 100% power, the phase angle is equal to 0.
Definition at line 57 of file MycilaDimmerThyristor.h.
|
inline |
Get the GPIO pin used for the dimmer.
Definition at line 26 of file MycilaDimmerThyristor.h.
|
inline |
Get the semi-period of the grid frequency in us.
Definition at line 42 of file MycilaDimmerThyristor.h.
|
static |
Callback to be called when a zero-crossing event is detected.
pulseAnalyzer.onZeroCross(Mycila::Dimmer::onZeroCross);
Definition at line 86 of file MycilaDimmerThyristor.cpp.
|
inline |
Set the GPIO pin to use for the dimmer.
Definition at line 21 of file MycilaDimmerThyristor.h.
|
inline |
Set the semi-period of the grid frequency in us. It cannot be zero and it is required for proper dimmer operation.
Definition at line 31 of file MycilaDimmerThyristor.h.
|
inlineoverridevirtual |
Reimplemented from Mycila::Dimmer.
Definition at line 74 of file MycilaDimmerThyristor.h.