Aquarium Cooling Controller
ESP32 firmware for aquarium cooling fan control, monitoring, telemetry, and fault handling.
Loading...
Searching...
No Matches
rpm_monitor.h
Go to the documentation of this file.
1#pragma once
2
12#include <Arduino.h>
13
22 uint8_t tachPin;
24 uint32_t sampleWindowMs;
25};
26
31 26,
32 2,
33 1000,
34};
35
49 public:
56
62 bool begin();
63
71 void update(uint32_t nowMs);
72
78 uint16_t rpm() const;
79
85 uint32_t pulseCount() const;
86
93 uint32_t sampleAgeMs(uint32_t nowMs) const;
94
95 private:
99 static void IRAM_ATTR handleInterrupt();
100
104 void onPulse();
105
111 uint32_t takePulseCountSnapshot();
112
113 static RpmMonitor* activeInstance_;
114
115 RpmMonitorConfig config_;
116 volatile uint32_t pulseCountSinceSample_;
117 uint16_t lastMeasuredRpm_;
118 uint32_t lastSampleMs_;
119 bool initialized_;
120};
Measures fan speed from tachometer pulses.
Definition rpm_monitor.h:48
uint32_t pulseCount() const
Returns the number of pulses accumulated in the current sample.
Definition rpm_monitor.cpp:56
bool begin()
Initializes the tachometer pin and attaches the interrupt handler.
Definition rpm_monitor.cpp:17
uint32_t sampleAgeMs(uint32_t nowMs) const
Calculates the age of the current RPM sample.
Definition rpm_monitor.cpp:60
uint16_t rpm() const
Returns the most recently calculated fan speed.
Definition rpm_monitor.cpp:52
void update(uint32_t nowMs)
Updates the measured RPM after the configured sample window elapses.
Definition rpm_monitor.cpp:28
constexpr RpmMonitorConfig kDefaultRpmMonitorConfig
Default tachometer settings for the configured cooling fan.
Definition rpm_monitor.h:30
Configuration for fan tachometer sampling.
Definition rpm_monitor.h:21
uint8_t tachPin
GPIO connected to the fan tachometer output.
Definition rpm_monitor.h:22
uint32_t sampleWindowMs
Minimum sampling window in milliseconds.
Definition rpm_monitor.h:24
uint8_t pulsesPerRevolution
Tachometer pulses emitted per full fan revolution.
Definition rpm_monitor.h:23