Class Mycila::ThyristorDimmer¶
ClassList > Mycila > ThyristorDimmer
Thyristor (TRIAC) based dimmer implementation for TRIAC and Random SSR dimmers.
#include <MycilaDimmerThyristor.h>
Inherits the following classes: Mycila::PhaseControlDimmer
Public Functions¶
| Type | Name |
|---|---|
| virtual bool | begin () override Enable a dimmer on a specific GPIO pin. |
| virtual void | end () override Disable the dimmer. |
| 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. |
| gpio_num_t | getPin () const Get the GPIO pin used for the dimmer. |
| void | setPin (gpio_num_t pin) Set the GPIO pin to use for the dimmer. |
| virtual const char * | type () override const |
| virtual | ~ThyristorDimmer () |
Public Functions inherited from Mycila::PhaseControlDimmer¶
See Mycila::PhaseControlDimmer
| Type | Name |
|---|---|
| void | enablePowerLUT (bool enable) Enable or disable the use of power LUT for this phase-control dimmer 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. |
| virtual float | getPowerRatio () override const |
| virtual bool | isOnline () override const Returns true if the dimmer is online. |
| bool | isPowerLUTEnabled () const Check if the power LUT is enabled. |
| virtual bool | setDutyCycle (float dutyCycle) override Set the power duty, eventually remapped by the power LUT if enabled. |
| virtual | ~PhaseControlDimmer () |
Public Functions inherited from Mycila::Dimmer¶
See Mycila::Dimmer
| Type | Name |
|---|---|
| virtual bool | begin () |
| bool | calculateHarmonics (float * array, size_t n) const |
| bool | calculateMetrics (Metrics & metrics, float gridVoltage, float loadResistance) const |
| virtual void | end () |
| float | getDutyCycle () const Get the power duty cycle configured for the dimmer by the user. |
| float | getDutyCycleFire () const Get the real firing duty cycle (conduction duty cycle) applied to the dimmer in the range [0, 1]. |
| float | getDutyCycleLimit () const Get the power duty cycle limit of the dimmer. |
| float | getDutyCycleMapped () const Get the remapped power duty cycle from the currently user set duty cycle. |
| float | getDutyCycleMax () const Get the remapped "1" of the dimmer duty cycle. |
| float | getDutyCycleMin () const Get the remapped "0" of the dimmer duty cycle. |
| virtual float | getPowerRatio () const |
| bool | isEnabled () const Check if the dimmer is enabled (if it was able to initialize correctly) |
| 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. |
| virtual bool | isOnline () const Returns true if the dimmer is online. |
| void | off () Turn off the dimmer. |
| void | on () Turn on the dimmer at full power. |
| virtual bool | setDutyCycle (float dutyCycle) Set the power duty. |
| void | setDutyCycleLimit (float limit) Set the power duty cycle limit of the dimmer. The duty cycle will be clamped to this limit. |
| 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. |
| 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 | setOnline (bool online) Set the online status of the dimmer. |
| virtual const char * | type () const |
| virtual | ~Dimmer () |
Public Static Functions¶
| Type | Name |
|---|---|
| void | onZeroCross (int16_t delayUntilZero, void * args) |
Public Static Functions inherited from Mycila::Dimmer¶
See Mycila::Dimmer
| Type | Name |
|---|---|
| uint16_t | getSemiPeriod () Get the semi-period in us used for the power LUT calculations. If LUT is disabled, returns 0. |
| void | setSemiPeriod (uint16_t semiPeriod) Set the semi-period of the grid frequency in us for this dimmer. This is mandatory when using power LUT. |
Protected Attributes inherited from Mycila::PhaseControlDimmer¶
See Mycila::PhaseControlDimmer
| Type | Name |
|---|---|
| bool | _powerLUTEnabled = false |
Protected Attributes inherited from Mycila::Dimmer¶
See Mycila::Dimmer
| Type | Name |
|---|---|
| float | _dutyCycle = 0.0f |
| float | _dutyCycleFire = 0.0f |
| float | _dutyCycleLimit = 1.0f |
| float | _dutyCycleMax = 1.0f |
| float | _dutyCycleMin = 0.0f |
| bool | _enabled = false |
| bool | _online = false |
Protected Static Attributes inherited from Mycila::Dimmer¶
See Mycila::Dimmer
| Type | Name |
|---|---|
| uint16_t | _semiPeriod = 0 |
Protected Functions¶
| Type | Name |
|---|---|
| virtual bool | _apply () override |
Protected Functions inherited from Mycila::PhaseControlDimmer¶
See Mycila::PhaseControlDimmer
| Type | Name |
|---|---|
| virtual bool | _calculateDimmerHarmonics (float * array, size_t n) override const |
Protected Functions inherited from Mycila::Dimmer¶
See Mycila::Dimmer
| Type | Name |
|---|---|
| virtual bool | _apply () |
| virtual bool | _calculateDimmerHarmonics (float * array, size_t n) const |
Protected Static Functions inherited from Mycila::PhaseControlDimmer¶
See Mycila::PhaseControlDimmer
| Type | Name |
|---|---|
| uint16_t | _lookupFiringDelay (float dutyCycle) |
Protected Static Functions inherited from Mycila::Dimmer¶
See Mycila::Dimmer
| Type | Name |
|---|---|
| float | _contrain (float amt, float low, float high) |
Public Functions Documentation¶
function begin¶
Enable a dimmer on a specific GPIO pin.
Warning:
Dimmer won't be enabled if pin is invalid
Warning:
Dimmer won't be activated until the ZCD is enabled
Implements Mycila::Dimmer::begin
function end¶
Disable the dimmer.
Warning:
Dimmer won't be destroyed but won't turn on anymore even is a duty cycle is set.
Implements Mycila::Dimmer::end
function getFiringDelay¶
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.
function getPhaseAngle¶
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.
function getPin¶
Get the GPIO pin used for the dimmer.
function setPin¶
Set the GPIO pin to use for the dimmer.
function type¶
Implements Mycila::Dimmer::type
function ~ThyristorDimmer¶
Public Static Functions Documentation¶
function onZeroCross¶
Callback to be called when a zero-crossing event is detected.
- When using MycilaPulseAnalyzer library, this callback can be registered like this:
pulseAnalyzer.onZeroCross(Mycila::ThyristorDimmer::onZeroCross);
- When using your own ISR with the RobotDyn ZCD, you can call this method with delayUntilZero == 200 since the length of the ZCD pulse is about 400 us.
- When using your own ISR with the ZCd from Daniel S, you can call this method with delayUntilZero == 550 since the length of the ZCD pulse is about 1100 us.
Protected Functions Documentation¶
function _apply¶
Implements Mycila::Dimmer::_apply
The documentation for this class was generated from the following file src/MycilaDimmerThyristor.h