What is your preferred battery indicator style?

I would mark full^4,^3.8,^3.5,^3.2. Not terribly critical but if it only blinks full at 4.2V then it won’t register that momentarily.

The 4-blinks-only-at-4.2V thing is a calibration issue on the production A6 units, caused by someone changing a driver component at the last minute. On units which are calibrated correctly, it works almost exactly as you described, with boundaries at 4.2V, 4.0V, 3.8V, 3.5V, and 3.0V. (not 3.2V, but otherwise the same)

But with someone changing a component after final approval, it ended up instead getting something like… 4.33V, 4.13V, 3.92V, 3.62V, 3.11V. Very frustrating.

The responsible parties have been yelled at, repeatedly.

:beer:

Voltage under load is used for low-voltage protection functions.

Voltage while mostly idle is used for the battery check mode. However, the first reading or two might show the charge lower than it is due to having recently passed by turbo just a second or two before. That’s not long enough for most cells to recover.

Since the idle voltage is what we use to determine the remaining capacity, and since it’s more consistent than under-load, that’s what it uses for the battery indicator. It also matches better with most of the published voltage data. A cell which drops below 2.8V on turbo can still have hours of lifetime left on medium or low before it drops far enough to step down again.

In any case, percent capacity cannot completely account for the wide variety of cells available. High-amp cells have a very different curve than high-capacity cells. But it’s simple and intuitive even when the lights are given as gifts. The recipient doesn’t need to know that it’s a 3.7V cell, or that the voltage changes during use. On the other hand a direct voltage readout offers more precision, especially if you know the cell’s curve and range, but is more complicated and less amenable to gifting. And it’s weird having like 7 blinks to indicate “almost empty”.

Neither method seems clearly and obviously better; it’s a matter of which tradeoffs you prefer.

I have the “four bars” method on most of my lights, but also have “volts and tenths” on some too. I find, in use, that my short attention span gets in the way. “blink blink blink …. pause … blink-blink-blink-blink-blink-blink-blink-blink…” “Wait, how many was that? I got distracted by a shiny object.” “blink blink blink …… pause …. blink-blink-blink-blink-blink-blink-blink-blink…” “Okay, I think that was 3.8, but I’d better read it again to be sure. ”blink blink blink” Is that 50% full? I forget. “blink-blink-blink-” What kind of cell did I put in this light again? And what was the calibration skew I measured last time I checked? “-blink-blink” … “oops, I got distracted again.” And I generally have to pause any music which might be playing in order to count the blinks without accidentally counting the music beats instead. This doesn’t always happen, of course, but at least sometimes.

Remember whole number then tenths is actually the fastest method and ALSO the most detail and accurate, no matter the battery. None of the other methods are any faster since 4 blinks = 80% to 100% capacity vs 75–100 in the current 0-5 system (since a cell tends to always drop below max charge if not fresh off the charger, and you rarely ever would get 5 blinks in the 5 blink system). So, you just wait to see 3 or 4 blinks to decide: simple and fastest. Then turn it off and don’t wait for the tenths if you don’t care and only want to know if your battery is reasonably full, or keep it on and wait for tenths for the highest level of detail.

With this method you get the best of both worlds: the most detail only if you feel like waiting, plus the fastest snapshot (since most are just looking to see if you have enough juice for the trip/walk/etc anyways). Plus, whole then tenths gets rid of the uncertainty of what part will the manufacturer put in to throw off the measurement, or which battery is this “tuned to” so that the 0-5 blinks are not thrown off, or even “what if I use a 4.3V battery, then 0-5 is all screwy”. Please think about it guys before voting!

Additionally, you get a semi-accurate way of measuring your battery voltage if you don’t have a volt meter. An added bonus for quite a few.

The indicator style does not change the underlying component accuracy. The manufacturer can certainly still throw off accuracy just the same.

2-4 blinks then 0-9 blinks, volts and tenths :wink:

I like my Nitecore HC50 voltage indicator most of all.

4 blinks is enough, I don’t need/want to know the exact voltage. If I’m going somewhere I’m charging all the cells anyway.

3.0 and 3.9V is not the same tho :wink:

Volts Blinks Blinks Total
3.0 1 0 1
3.1 1 1 2
3.2 1 2 3
3.3 1 3 4
3.4 1 4 5
3.5 2 0 2
3.6 2 1 3
3.7 2 2 4
3.8 2 3 5
3.9 2 4 6
4.0 3 0 3
4.1 3 1 4
4.2 3 2 5
4.3 3 3 6

Full voltage range for one 18650 battery.
Maximum 6 blinks.
E.g. 3.8V - 2 blinks then 3 blinks - only 5 blinks

That is some strange blinking

Ok, a bit. But I want to see this battery indicator implemented in some flashlights. Or just one real mini voltmeter (LED not LCD).

Sorry in advance for the long post.

Volts+tenths is typically the slowest option, unless you only care about two buckets distinguishing < 4.0V versus > 4.0V, in which case it’s tied with the “four bars” option. For anything under 4.0V, it takes longer than any of the other options. It’s also worth noting that the first readout is often junk anyway, because the cell hasn’t had time to settle yet at that point. So for accuracy you’ll probably want the second or third reading. Or even later, if you’ve been using turbo for a while. It takes like an hour for the cell recovery to level off completely.

Volts+tenths is tied for detail level with the 12-blink style, meaning it is the most detailed. But it takes longer for anything under 4.0V.

Accuracy is not under the control of the firmware; it’s a matter of making sure the code is and specific hardware match. The issue which reduced the BLF A6’s accuracy would also reduce the volts+tenths accuracy in the same way, and for different flavors of driver I’ve seen variation of more than 0.4V.

The volts+tenths (or 12-blink) options do have the advantage when it comes to battery independence, since they make no assumptions about the battery’s discharge behavior.

I’m not saying it’s better or worse, but speed and muggle-friendliness are not among its strong points, and accuracy is not related to indicator style. What it offers is precision.

For li-ion batteries, the relationship between voltage and capacity varies depending on battery type; it’s not a strict 4.0V = 80%. Capacity is more condensed at the top of the voltage range, especially with high-amp cells like the ones recommended for the A6. Capacity estimation is a rough approximation at best, especially mere seconds after the cell was under load.

This this informative thread may be useful.
… and this graph:

Anyway, the A6 uses a 4-blink system with a “bonus” blink for > 4.2V. So, it’s actually 0=0%/1=25%/2=50%/3=75%/4=100%/5=>100% Any capacity-based system would include the “bonus” blink but it’s not mentioned in the poll options.

As Halo mentioned, that is not how it works. If a resistor gets changed at the production step, it throws off all the readings, regardless of indicator type.

This is true, if you want a low-resolution DMM with an error margin of ~10% or ~0.12V. If that is what people want, that’s what I’ll write. If people prefer a simple quick approximation, I’ll leave things as-is. BLF member preference greatly overrides my own preference… if it were just for me I wouldn’t even have any config options. :slight_smile:

I could also adjust the reference voltage points to better accommodate low-amp cells like the Panasonic NCR18650A, if that’ s a thing people want. Just trying to figure out what it is that people want. (and more than one option can be available for people who have hardware-flashing tools; I’m trying to figure out what the default should be)

I agree no-load voltage is probably better.
Most other battery types are tested under load, but this does not seem to be that important for Li-ions.

I do, however, maintain a low light level between level-indicating flashes. Useful when you are stuck in the dark and want to check your remaining cell capacity. This can also provide another solid mode that is somewhere between MOON and LOW, when the battery voltage is below the flashing level. The level is low enough to approximate no-load conditions. I do filter the ADC signal in software (an ISR) to prevent glitches caused by PWM.

The other variable to keep in mind is cell temperature. For people that live in extreme climates, temperature induced voltage variation can be larger than the MCU ADC tolerance. This is a good reason to do the ‘fuel-gauge’ under no-load, as the temperature-induced error seems to be smaller:

How about we adjust volts and tenths display method to reduce having to count such long blinks? 3.9v: 3 blinks, pause, 9 blinks, is too annoying imo.

Instead break up the tenths into two groups .1v~~.5v and .6v~~.9v. .1~~.5 is normal 1-5 blinks but .6v~~.9v is a long blink for .6 followed by normal short blinks to count off anything over .6v.
So 3.9v would be 3 blinks, pause, 1 long blink, 3 blinks. You would just count out the tenths as 6, 7, 8, 9. Max number of tenths blinks you would ever need to count out would be 5 for 3.5v. It does add something you need to remember but it’s worth it since counting out long numbers of blinks for the tenths is just too annoying imho.

I have real-time voltage indication (via red/yellow/green LEDs) under load on a Roche F6, and I’ve found that the PWM actually interferes quite a bit with getting a clean signal. The realtime indicator flickers a lot even when several readings are averaged, even when PWM is at a rather low level. The flicker correlates with voltage, at least, so the flicker pattern can indicate voltage at a higher precision than the three (green/yellow/red) explicit indicator levels. The only way I’ve found to get a truly consistent reading is to take 8+ measurements (while off) with a short delay between, then average them.

Maybe it wouldn’t be so bad with a single 7135 chip, but it gets widely-varying measurements when a FET is running PWM.

In BLF-A6 though, there isn’t enough extra room to re-measure and average. It uses a single reading while off. Perhaps a tiny25 version can average a few.

You have done a great job at fitting as much as possible into the tiny13. Unfortunately it seems to be time to move up to the tiny25 at least. And really, I’d like to see what you can do with the tiny85. :bigsmile:

That’s an idea to pursue. :slight_smile:

I was thinking more along the lines of simply making the blinks faster. Perhaps also add a really short blip for the decimal point. So 3.7V might then be: — . -------
(except, like, quickly… unlike the slow blinks the A6 uses)

Or, I bet most non-programmers would hate this, but I could also display the tenths using Morse-like code in binary. :slight_smile:

  • 0: .
  • 1: -
  • 2: - .
  • 3: - -
  • 4: - . .
  • 5: - . -
  • 6: - - .
  • 7: - - -
  • 8: - . . .
  • 9: - . . -

Go ahead, add binary to the poll. :smiley: