mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 20:56:35 +00:00
Add relay switch time to zero-cross detection
This commit is contained in:
parent
75308ee1e0
commit
3174056eea
@ -171,11 +171,10 @@ void ZeroCrossMomentStart(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
uint32_t trigger_moment = TasmotaGlobal.zc_time + TasmotaGlobal.zc_interval - TasmotaGlobal.zc_offset - TasmotaGlobal.zc_code_offset;
|
uint32_t trigger_moment = TasmotaGlobal.zc_time + TasmotaGlobal.zc_interval - TasmotaGlobal.zc_offset - TasmotaGlobal.zc_code_offset;
|
||||||
if (TimeReachedUsec(trigger_moment)) { // Trigger moment already passed so try next
|
while (TimeReachedUsec(trigger_moment)) { // Trigger moment already passed so try next
|
||||||
trigger_moment += TasmotaGlobal.zc_interval;
|
trigger_moment += TasmotaGlobal.zc_interval;
|
||||||
}
|
}
|
||||||
uint32_t timeout = millis() +22; // Catch at most 2 * 50Hz pulses
|
while (!TimeReachedUsec(trigger_moment)) {} // Wait for trigger moment
|
||||||
while (!TimeReached(timeout) && !TimeReachedUsec(trigger_moment)) {} // Wait for trigger moment
|
|
||||||
|
|
||||||
#ifdef DEBUG_ZEROCROSS
|
#ifdef DEBUG_ZEROCROSS
|
||||||
uint32_t dbg_endtime = micros();
|
uint32_t dbg_endtime = micros();
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
*
|
*
|
||||||
* Based on datasheet from ChipSea and analysing serial data
|
* Based on datasheet from ChipSea and analysing serial data
|
||||||
* See https://github.com/arendst/Tasmota/discussions/10793
|
* See https://github.com/arendst/Tasmota/discussions/10793
|
||||||
|
* https://goldenrelay.en.alibaba.com/product/62119012875-811845870/GOLDEN_GI_1A_5LH_SPST_5V_5A_10A_250VAC_NO_18_5_10_5_15_3mm_sealed_type_all_certificate_compliances_class_F_SPDT_Form_available.html
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
#define XNRG_19 19
|
#define XNRG_19 19
|
||||||
@ -38,6 +39,7 @@
|
|||||||
#define CSE7761_FREQUENCY // Add support for frequency monitoring
|
#define CSE7761_FREQUENCY // Add support for frequency monitoring
|
||||||
#define CSE7761_ZEROCROSS // Add zero cross detection
|
#define CSE7761_ZEROCROSS // Add zero cross detection
|
||||||
#define CSE7761_ZEROCROSS_OFFSET 2200 // Zero cross offset due to chip calculation (microseconds)
|
#define CSE7761_ZEROCROSS_OFFSET 2200 // Zero cross offset due to chip calculation (microseconds)
|
||||||
|
#define CSE7761_RELAY_SWITCHTIME 15000 // Relay (Golden GI-1A-5LH 15ms max) switch time (microseconds)
|
||||||
|
|
||||||
#define CSE7761_UREF 42563 // RmsUc
|
#define CSE7761_UREF 42563 // RmsUc
|
||||||
#define CSE7761_IREF 52241 // RmsIAC
|
#define CSE7761_IREF 52241 // RmsIAC
|
||||||
@ -580,7 +582,7 @@ void Cse7761SnsInit(void) {
|
|||||||
|
|
||||||
#ifdef CSE7761_FREQUENCY
|
#ifdef CSE7761_FREQUENCY
|
||||||
#ifdef CSE7761_ZEROCROSS
|
#ifdef CSE7761_ZEROCROSS
|
||||||
ZeroCrossInit(CSE7761_ZEROCROSS_OFFSET);
|
ZeroCrossInit(CSE7761_ZEROCROSS_OFFSET + CSE7761_RELAY_SWITCHTIME);
|
||||||
#endif // CSE7761_ZEROCROSS
|
#endif // CSE7761_ZEROCROSS
|
||||||
#endif // CSE7761_FREQUENCY
|
#endif // CSE7761_FREQUENCY
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user