Wheellog/Wheellog.Android

inmotion v12: abnormal voltage sag when wheel is shutting down

pokanoka opened this issue · 5 comments

When wheel is shutting down (actually shutting down normally, e.g. after 10 minutes with screen off), it reports abnormally low voltage values, which wheellog then remembers as voltage sag, overwriting previous - meaningful - voltage sag value.
Reported voltage values are on the order of 12v, 13v, or the like.
I believe workaround should be implemented: if voltage rapidly drops to lower than 24v (1v per cell), voltage sag recorded in the preceeding 3 seconds should be discarded and it's previous value restored.

wheel: v12 ht, firmware 1.6.12
wheellog version: 2.5.5

It's worth considering to apply similar "fix" not only to voltage sag, but also to voltage itself, because it's useful to know what the actual voltage was, w/o having to turn on wheel. Last voltage value can be a bit higher than sag value.

Previously suggested value of 24v as cutoff is too low, because I've already seen values on the order of 18v, 21v, and 28v (see screenshot). May be value of 36v or 40v (1.5v or 1.67v per cell) should be used instead, or even higher (with additional heuristics).

Good additional heuristics:

  1. Quick voltage fall (on the order of 1.5-2.5s).
  2. No more data for N seconds from the wheel after the voltage fall (since it's turned off).
  3. Speed is [very close to] 0 at the time of voltage sag.

IMG_20220802_131359

We can think about voltage sag, but I don't see any way to keep usual "voltage" to be relevant to the last metric.
BTW, what is the need to see last voltage? You can check battery percentage, because for V11/V12 it is not related to Voltage, and will show correct data even during shutdown

Well, from my point of view voltage value is "the absolute truth", and the battery percentage is just a derivative for human convenience, which can be calculated differently.

And since Wheellog has Voltage info field, it would be nice if it always showed actual values which one can trust. In my opinion bogus values dreamed up by energy-starved shutting down controller ought to be discarded.

I mean, it's not such a big deal if Voltage value is incorrect, but if you're gonna add a workaround for the Sag, it would be nice to have actual Voltage value fixed too. (I was assuming Sag is not reported by wheel directly, and is calculated by the app manually from the reported voltage values).

Well, as you told = voltage value it the absolute truth. So during power off, BMS disconnect controller from power, so controller measures absolute truth - working some time using capacitors it is loosing voltage,
If I implement some workaround to voltage, it will become to not to be truth.
Just imagine the situation: you have cut-down due BMS failure, in this case you will able to see voltage drop in logs.
If I implement some workaround, what you will see?
And what the benefit to hide truth? For what?

There's certainly logic in that which I can agree to. But still, I think end-users would prefer true voltage on the battery pack, not the true voltage on the capacitor the moments before the controller is powered down (:

As for your scenario of cut-off, the most likely outcome are these 2:

  1. Second battery pack still works. In that case, even if rider failed, the controller still powered on, so no voltage workaround has taken place.
  2. Both batteries have failed while the user is riding. The engine power intake is enormous, the capacitors are tiny, the update rate is slow (on the order of 2 times per second?) - so, I think controller may just not have the time to report the falling voltage before powering down. But if it had, in accordance with my suggested heuristics, there should be no workaround, because wheel speed was not close to zero at the time of voltage drop.

Come to think of it, another way to do it would be to apply voltage fix in the gui only, and never mess with the log. So, just display value reported 4 seconds before reports stopped instead of the last reported when all of these conditions hold:

  1. Wheel model is V12 (V11/etc?)
  2. There's no reports from the wheel for at least 2.5 seconds.
  3. Reported speed values for the last second were less than 4 km/h, OR for the last 3 seconds average reported speed was less than 6 km/h.
  4. Last voltage value reported is less than 50v.

Points 3 and 4 are optional, I wouldn't mind always losing 4 seconds of data from gui when wheel is turned off as long as data is saved in the log.

Whatever your decision on the issue would be, I'd be okay with it. I'd be just happy for voltage sag workaround. Just trying to input my perspective here.