From 9d4314f7c7657630e884216efc35861d19378dad Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Thu, 15 Nov 2018 22:10:27 +0100 Subject: [PATCH 1/7] Update Dimmer.cpp --- src/Dimmer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Dimmer.cpp b/src/Dimmer.cpp index c2ca3ce..535463c 100644 --- a/src/Dimmer.cpp +++ b/src/Dimmer.cpp @@ -113,7 +113,7 @@ ISR(TIMER_COMPA_VECTOR(DIMMER_TIMER)) { } // Constructor -Dimmer::Dimmer(uint8_t pin, uint8_t mode, double rampTime, uint8_t freq) : +Dimmer::Dimmer(uint8_t pin, uint8_t mode, double rampTime, uint8_t freq,bool zero_crossed_triac) : triacPin(pin), operatingMode(mode), lampState(false), @@ -157,7 +157,7 @@ void Dimmer::begin(uint8_t value, bool on) { TCCRxA(DIMMER_TIMER) = TCCRxA_VALUE; // Timer config byte A TCCRxB(DIMMER_TIMER) = TCCRxB_VALUE; // Timer config byte B TIMSKx(DIMMER_TIMER) = 0x02; // Timer Compare Match Interrupt Enable - OCRxA(DIMMER_TIMER) = 100 * 60 / acFreq - 1; // Compare value (frequency adjusted) + OCRxA(DIMMER_TIMER) = 100 * freq / acFreq - 1; // Compare value (frequency adjusted) started = true; } From d5522c7c6a6dab44e4229126a75cb893eab11f27 Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Thu, 15 Nov 2018 22:10:57 +0100 Subject: [PATCH 2/7] Update Dimmer.h --- src/Dimmer.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Dimmer.h b/src/Dimmer.h index 1e7f9c1..1d8f2b3 100644 --- a/src/Dimmer.h +++ b/src/Dimmer.h @@ -65,7 +65,7 @@ class Dimmer { * * @see begin() */ - Dimmer(uint8_t pin, uint8_t mode = DIMMER_NORMAL, double rampTime = 1.5, uint8_t freq = 60); + Dimmer(uint8_t pin, uint8_t mode = DIMMER_NORMAL, double rampTime = 1.5, uint8_t freq = 60, bool zero_crossed_triac = false); /** * Initializes the module. From dc0e0f4bdcfb3bacaa65b713d8380e6a35c4ff15 Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Thu, 15 Nov 2018 22:16:12 +0100 Subject: [PATCH 3/7] Update Dimmer.cpp --- src/Dimmer.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Dimmer.cpp b/src/Dimmer.cpp index 535463c..5be0e21 100644 --- a/src/Dimmer.cpp +++ b/src/Dimmer.cpp @@ -125,7 +125,8 @@ Dimmer::Dimmer(uint8_t pin, uint8_t mode, double rampTime, uint8_t freq,bool zer pulsesLow(0), pulseCount(0), pulsesUsed(0), - acFreq(freq) { + acFreq(freq), + zeroCrossedTriac(zero_crossed_triac) { if (dimmerCount < DIMMER_MAX_TRIAC) { // Register dimmer object being created dimmerIndex = dimmerCount; @@ -157,7 +158,7 @@ void Dimmer::begin(uint8_t value, bool on) { TCCRxA(DIMMER_TIMER) = TCCRxA_VALUE; // Timer config byte A TCCRxB(DIMMER_TIMER) = TCCRxB_VALUE; // Timer config byte B TIMSKx(DIMMER_TIMER) = 0x02; // Timer Compare Match Interrupt Enable - OCRxA(DIMMER_TIMER) = 100 * freq / acFreq - 1; // Compare value (frequency adjusted) + OCRxA(DIMMER_TIMER) = 100 * 50 / acFreq - 1; // Compare value (frequency adjusted) started = true; } From 1718610568e262a3820dd2db97efe157ca185478 Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Thu, 15 Nov 2018 22:17:06 +0100 Subject: [PATCH 4/7] Update Dimmer.h --- src/Dimmer.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Dimmer.h b/src/Dimmer.h index 1d8f2b3..b4a3257 100644 --- a/src/Dimmer.h +++ b/src/Dimmer.h @@ -152,6 +152,7 @@ class Dimmer { uint8_t pulsesUsed; uint64_t pulsesHigh; uint64_t pulsesLow; + bool zeroCrossedTriac; void zeroCross(); From e019c6e2ce0afd2e3814a199b429352b43c956e6 Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Thu, 15 Nov 2018 22:19:43 +0100 Subject: [PATCH 5/7] Update Dimmer.cpp --- src/Dimmer.cpp | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Dimmer.cpp b/src/Dimmer.cpp index 5be0e21..b6a5aab 100644 --- a/src/Dimmer.cpp +++ b/src/Dimmer.cpp @@ -110,7 +110,14 @@ ISR(TIMER_COMPA_VECTOR(DIMMER_TIMER)) { *triacPinPorts[i] |= triacPinMasks[i]; } } -} + if (zeroCrossedTriac) { + delayMicroseconds(10); + // Turn off all triacs + for (uint8_t i = 0; i < dimmerCount; i++) { + *triacPinPorts[i] &= ~triacPinMasks[i]; + } + } + } // Constructor Dimmer::Dimmer(uint8_t pin, uint8_t mode, double rampTime, uint8_t freq,bool zero_crossed_triac) : From a0d9829ec9ecd20abe7260084a400edbd61214c5 Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Tue, 24 Dec 2019 08:22:55 +0100 Subject: [PATCH 6/7] Update README.rst --- README.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/README.rst b/README.rst index 954065f..f062071 100644 --- a/README.rst +++ b/README.rst @@ -1,14 +1,12 @@ Dimmer Library for Arduino ============== -This is an Arduino software library to control AC loads using triacs and a zero cross detector circuit. The library methods can be used to control the AC load power for multiple triacs independently, using a single shared zero-cross circuit. +This is an Arduino software library to control AC loads using triacs and a zero and non zero cross detector circuit. The library methods can be used to control the AC load power for multiple triacs independently, using a single shared zero-cross circuit. * Source code: https://github.com/circuitar/Dimmer * Documentation: http://dimmer.readthedocs.org/ * Reference Board: `Triac Nanoshield`_ and `Zero Cross Nanoshield`_ from Circuitar_ -There are different ways to implement zero cross detector circuits. This library is based on the implementation above, but it can be easily adapted to use any type of zero cross detector circuit. - To install, just click **Download ZIP** and install it using **Sketch > Include Library... > Add .ZIP Library** in the Arduino IDE. The following examples_ are provided: From b253783d411916dade07486592153f0ae1705660 Mon Sep 17 00:00:00 2001 From: bilbolodz Date: Tue, 24 Dec 2019 08:26:43 +0100 Subject: [PATCH 7/7] Update Dimmer.h --- src/Dimmer.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Dimmer.h b/src/Dimmer.h index b4a3257..3527392 100644 --- a/src/Dimmer.h +++ b/src/Dimmer.h @@ -62,6 +62,7 @@ class Dimmer { * COUNT_MODE: Counts AC waves and applies full half cycles from time to time. * @param rampTime time it takes for the value to rise from 0% to 100% in RAMP_MODE, in seconds. Default 1.5. @see setRampTime(). * @param freq AC frequency, in Hz. Supported values are 60Hz and 50Hz, use others at your own risk. + * @param zero_crossed_triac Zero crossing triac (true), non zero crossing track (false) * * @see begin() */