Alternator Health¶
Status: design / in development
This page describes the best-ever performance design that replaces the original Field Bucketer (a fixed 3-D RPM × temperature × field-voltage matrix). The new system is specced and being implemented; details below are the design intent and may shift slightly during the build.
The regulator learns what your alternator can produce when conditions are steady, builds a best-ever reference surface from real operating data, and rates present output against it. If the unit later makes less current under matched conditions — or needs more field to make the same current — it reads below its own best-ever and the drift is flagged. It's advisory: no safety logic depends on it.
This works because alternator output is near-deterministic given its inputs — at a fixed operating point the machine produces what physics dictates, so "best-ever ≈ expected." The reference auto-ratchets to the healthy peak; there is no freeze step and no staircase.
The output and its axes¶
The quantity being learned is output amps, as a function of four equal input axes:
| Axis | Notes |
|---|---|
| RPM | engine/alternator speed |
| Excitation | temp-normalized field-drive proxy, exc = (duty × Vbus) / (1 + α·(T_C − 25)), α = 0.00393 |
| Bus voltage | charging bus volts |
| Alternator temperature | from the digital temp sensor |
Output amps is valid in every charge mode (bulk/current-control, absorption/CV, manual) because the
physics amps = f(rpm, excitation, temp, Vbus) is the same regardless of why the regulator chose a
given field — the mode only decides where in (RPM, excitation) space it operates.
Temperature must be available
If the global ignore temperature setting is on, the entire alternator-health system is disabled — temperature is one of the four axes, so without it there is no valid surface.
How a data point is formed¶
A point is one steady episode, not a fixed time slice:
- Sample fast and mode-agnostically — once per control tick (gated on a fresh current sample, ~200 Hz), reading RPM, duty, Vbus, temperature and measured amps after the control loop has settled the field. Off / fault / shutdown states are excluded automatically.
- Steady = every axis within its band. Each axis has a user-tunable deviation bound and
steady time. A run is steady while, for every axis,
max − minover the run stays within its bound; it must hold for each axis's steady time. - One averaged point per episode. When any axis leaves its band the episode closes and its average becomes a single point. Sampling fast means a brief excursion on any axis can't hide inside a "steady" run.
Each stored point keeps the raw inputs and the derived axis — {RPM, duty, Vbus, temp, excitation,
amps} — so the excitation can be recomputed and a bad point diagnosed later.
The best-ever front¶
The reference is a best-ever surface over the four axes, stored as a sparse set of support points (the front) and interpolated between them — not a percentile, not an average, not a fixed-size buffer.
- Keep only new bests. A finished episode is kept only if its amps exceed the surface at its operating point; otherwise it's discarded.
- The cloud is authoritative and never throws data away. It keeps the full history of accepted points and derives the pruned front as a rebuildable view — so the reference ratchets up and never decays (the failure mode of older "rolling window" designs, which silently track recent rather than best performance).
- The device evaluates the held front locally, so rating works offline between cloud syncs.
What you see¶
- Live health % — present amps ÷ best-ever for the current conditions.
- Trend over engine-hours — average and worst "percent of best-ever," plotted against engine-hours since the baseline was last reset (a Start Over button, e.g. after replacing the alternator, belt, or regulator). The trend is the signal: a healthy unit reads high-but-not-perfect and roughly flat; a steady decline is the early warning.
See also the plain-English overview: Best-ever performance monitoring.