Aquarium Cooling Controller
ESP32 firmware for aquarium cooling fan control, monitoring, telemetry, and fault handling.
Loading...
Searching...
No Matches
fault_monitor.h
Go to the documentation of this file.
1#pragma once
2
12#include <Arduino.h>
13
26
48
53 3,
54 3,
55 5000,
56};
57
66 public:
72 explicit FaultMonitor(
74
78 void reset();
79
88 FaultMonitorSnapshot evaluate(uint8_t commandedPwmPercent,
89 uint16_t measuredRpm,
90 uint32_t nowMs);
91
92 private:
99 void updateCommandedPwm(uint8_t commandedPwmPercent, uint32_t nowMs);
100
101 FaultMonitorConfig config_;
102 uint8_t lastCommandedPwmPercent_;
103 uint32_t lastPwmChangeMs_;
104 uint8_t mismatchCount_;
105 uint8_t matchCount_;
106 bool faultLatched_;
107 bool hasSeenPwmCommand_;
108};
Tracks fan RPM plausibility and latches persistent fan faults.
Definition fault_monitor.h:65
FaultMonitorSnapshot evaluate(uint8_t commandedPwmPercent, uint16_t measuredRpm, uint32_t nowMs)
Evaluates fan RPM plausibility for the current PWM command.
Definition fault_monitor.cpp:34
void reset()
Clears counters and any latched fan fault.
Definition fault_monitor.cpp:14
constexpr FaultMonitorConfig kDefaultFaultMonitorConfig
Default fault-monitor timing and debounce thresholds.
Definition fault_monitor.h:52
Fault detection thresholds for fan RPM plausibility.
Definition fault_monitor.h:21
uint8_t matchCyclesRequiredForRecovery
Consecutive good samples required to clear a latched fault.
Definition fault_monitor.h:23
uint8_t mismatchCyclesRequired
Consecutive bad samples required to latch a fault.
Definition fault_monitor.h:22
uint32_t settlingTimeMs
Delay after PWM changes before plausibility is evaluated.
Definition fault_monitor.h:24
Diagnostic result from one fan fault-monitor evaluation.
Definition fault_monitor.h:35
uint8_t matchCount
Consecutive plausible sample count while recovering.
Definition fault_monitor.h:45
uint16_t toleranceRpm
Allowed absolute RPM deviation.
Definition fault_monitor.h:39
uint8_t commandedPwmPercent
Current fan PWM command in percent.
Definition fault_monitor.h:36
bool plausible
True when measured RPM is inside tolerance.
Definition fault_monitor.h:42
int16_t rpmError
Measured RPM minus expected RPM.
Definition fault_monitor.h:40
uint16_t measuredRpm
Latest measured fan speed.
Definition fault_monitor.h:37
uint32_t elapsedSincePwmChangeMs
Elapsed time since the PWM command changed.
Definition fault_monitor.h:46
uint8_t mismatchCount
Consecutive implausible sample count.
Definition fault_monitor.h:44
uint16_t expectedRpm
Expected RPM from the fan curve.
Definition fault_monitor.h:38
bool plausibilityActive
True when the PWM and settling delay allow checking.
Definition fault_monitor.h:41
bool faultLatched
True while the monitor has latched a fan fault.
Definition fault_monitor.h:43