Ajouté délai au LVD pour filtrer les glitchs

This commit is contained in:
jfmartel 2026-07-04 23:44:11 -04:00
parent bbfc4e10e2
commit 24d8155ca2
9 changed files with 3197 additions and 3157 deletions

View File

@ -16,6 +16,7 @@ void InitChaletPowerRelay()
POWER_RELAY_OFF_PIN = PIN_INACTIVE; POWER_RELAY_OFF_PIN = PIN_INACTIVE;
PowerRelayState = CHALET_POWER_RELAY_UNKNOWN_STATE; PowerRelayState = CHALET_POWER_RELAY_UNKNOWN_STATE;
TimerStop(CHALET_POWER_RELAY_COIL_TIMER); TimerStop(CHALET_POWER_RELAY_COIL_TIMER);
TimerStop(CHALET_POWER_RELAY_LVD_TIMER);
} }
void ChaletPowerRelayTick() void ChaletPowerRelayTick()
@ -37,7 +38,7 @@ void ChaletPowerRelayTick()
PowerRelayState = CHALET_POWER_RELAY_OFF_STATE; PowerRelayState = CHALET_POWER_RELAY_OFF_STATE;
} }
if(IsTimerRunning(CHALET_POWER_RELAY_COIL_TIMER) == true) if((CHALET_POWER_RELAY_COIL_TIMER) == true)
{ {
if(IsTimerExpired(CHALET_POWER_RELAY_COIL_TIMER)) if(IsTimerExpired(CHALET_POWER_RELAY_COIL_TIMER))
{ {
@ -46,11 +47,35 @@ void ChaletPowerRelayTick()
TimerStop(CHALET_POWER_RELAY_COIL_TIMER); TimerStop(CHALET_POWER_RELAY_COIL_TIMER);
} }
} }
if(IsTimerRunning(CHALET_POWER_RELAY_LVD_TIMER) == true)
//LVD: if battery voltage is too low, turn off the power relay
if(PowerRelayState == CHALET_POWER_RELAY_ON_STATE && GetBatteryVoltage(0) < POWER_RELAY_LVD_VOLTAGE_TRESHOLD)
{ {
ChaletPowerRelayTurnOff(); if(PowerRelayState != CHALET_POWER_RELAY_ON_STATE)
{
TimerStop(CHALET_POWER_RELAY_LVD_TIMER);
}
else if(IsTimerExpired(CHALET_POWER_RELAY_LVD_TIMER))
{
//Check if it was just a glitch
if(GetBatteryVoltage(0) >= POWER_RELAY_LVD_VOLTAGE_TRESHOLD)
{
TimerStop(CHALET_POWER_RELAY_LVD_TIMER);
}
else
{
TimerStop(CHALET_POWER_RELAY_LVD_TIMER);
ChaletPowerRelayTurnOff();
}
}
}
else
{
//LVD: if battery voltage is too low, turn off the power relay
if(PowerRelayState == CHALET_POWER_RELAY_ON_STATE && GetBatteryVoltage(0) < POWER_RELAY_LVD_VOLTAGE_TRESHOLD && GetBatteryVoltage(0) != 0.0)
{
//ChaletPowerRelayTurnOff();
TimerStart(CHALET_POWER_RELAY_LVD_TIMER,CHALET_POWER_RELAY_LVD_DEBOUNCE_TIMEOUT);
}
} }
if(IsTimerExpired(CHALET_POWER_RELAY_AUTOTURNOFF_TIMER)) if(IsTimerExpired(CHALET_POWER_RELAY_AUTOTURNOFF_TIMER))
@ -81,6 +106,7 @@ bool ChaletPowerRelayTurnOff()
{ {
POWER_RELAY_OFF_PIN = PIN_ACTIVE; POWER_RELAY_OFF_PIN = PIN_ACTIVE;
TimerStart(CHALET_POWER_RELAY_COIL_TIMER,CHALET_POWER_RELAY_COIL_TIMEOUT); TimerStart(CHALET_POWER_RELAY_COIL_TIMER,CHALET_POWER_RELAY_COIL_TIMEOUT);
TimerStop(CHALET_POWER_RELAY_LVD_TIMER);
// PowerRelayState = CHALET_POWER_RELAY_OFF_STATE; // PowerRelayState = CHALET_POWER_RELAY_OFF_STATE;
return true; return true;
} }

View File

@ -11,6 +11,7 @@
#define CHALET_OFFLINE_POWER_RELAY_RESET_TIMEOUT 43200 //43,200 = 12 hours in seconds #define CHALET_OFFLINE_POWER_RELAY_RESET_TIMEOUT 43200 //43,200 = 12 hours in seconds
#define POWER_RELAY_LVD_VOLTAGE_TRESHOLD (float)12.00 #define POWER_RELAY_LVD_VOLTAGE_TRESHOLD (float)12.00
#define CHALET_POWER_RELAY_LVD_DEBOUNCE_TIMEOUT 1000 //ms
enum eChaletPowerRelayState enum eChaletPowerRelayState
{ {

View File

@ -54,6 +54,7 @@ typedef enum
LTE_MODULE_TIMER, LTE_MODULE_TIMER,
LTE_COMM_TIMER, LTE_COMM_TIMER,
LTE_NWI_TIMER, LTE_NWI_TIMER,
CHALET_POWER_RELAY_LVD_TIMER,
TIMER_MAX_ID TIMER_MAX_ID
}eTimerID; }eTimerID;

View File

@ -1,4 +1,4 @@
#define VERSIONNUMBER "CHALET_V01.02.5" //shall be 15 chars... #define VERSIONNUMBER "CHALET_V01.02.6" //shall be 15 chars...
//Force DHCP instead of static IP. //Force DHCP instead of static IP.
//#define VERSIONNUMBER "CHALET_V01.00.1" //shall be 15 chars... //#define VERSIONNUMBER "CHALET_V01.00.1" //shall be 15 chars...

View File

@ -1,5 +1,5 @@
# #
#Sun Jan 04 10:46:07 EST 2026 #Sat Jul 04 11:51:56 EDT 2026
ChaletDuinoV2_795F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin ChaletDuinoV2_795F512H_.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin default.languagetoolchain.dir=C\:\\Program Files\\Microchip\\xc32\\v1.33\\bin
proj.dir=D\:\\Main\\PicDev\\Projets\\ChaletLora\\ChaletLora.X proj.dir=D\:\\Main\\PicDev\\Projets\\ChaletLora\\ChaletLora.X

View File

@ -1,19 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<project-private xmlns="http://www.netbeans.org/ns/project-private/1"> <project-private xmlns="http://www.netbeans.org/ns/project-private/1">
<editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="12"> <editor-bookmarks xmlns="http://www.netbeans.org/ns/editor-bookmarks/2" lastBookmarkId="12">
<file>
<url>Source/BootloaderInterface.c</url>
<bookmark id="5">
<name/>
<line>387</line>
<key/>
</bookmark>
<bookmark id="4">
<name/>
<line>437</line>
<key/>
</bookmark>
</file>
<file> <file>
<url>Source/hd44780.c</url> <url>Source/hd44780.c</url>
<bookmark id="7"> <bookmark id="7">
@ -22,14 +9,6 @@
<key/> <key/>
</bookmark> </bookmark>
</file> </file>
<file>
<url>Source/WiFiCtrl.c</url>
<bookmark id="12">
<name/>
<line>407</line>
<key/>
</bookmark>
</file>
<file> <file>
<url>Source/SIM7080GInterface.c</url> <url>Source/SIM7080GInterface.c</url>
<bookmark id="11"> <bookmark id="11">
@ -53,12 +32,31 @@
<key/> <key/>
</bookmark> </bookmark>
</file> </file>
<file>
<url>Source/BootloaderInterface.c</url>
<bookmark id="5">
<name/>
<line>387</line>
<key/>
</bookmark>
<bookmark id="4">
<name/>
<line>437</line>
<key/>
</bookmark>
</file>
<file>
<url>Source/WiFiCtrl.c</url>
<bookmark id="12">
<name/>
<line>407</line>
<key/>
</bookmark>
</file>
</editor-bookmarks> </editor-bookmarks>
<open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2"> <open-files xmlns="http://www.netbeans.org/ns/projectui-open-files/2">
<group> <group>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/ChaletPowerRelay.c</file> <file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/WiFiCtrl.c</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/ChaletPowerRelay.h</file>
<file>file:/D:/Main/PicDev/Projets/ChaletLora/ChaletLora.X/Source/versionbuild.h</file>
</group> </group>
</open-files> </open-files>
</project-private> </project-private>