Skip to content

The current battery warning/shut-down constants for the GoPiGo are inappropriate for the new Li-Ion batteries #311

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
jharris1993 opened this issue Feb 12, 2022 · 2 comments

Comments

@jharris1993
Copy link
Contributor

jharris1993 commented Feb 12, 2022

Background:
Modular Robotics/Dexter Industries decided to depreciate the older 8-cell NiMH batteries in favor of a monolithic Li-Ion battery module and dedicated Li-Ion charger module.

  • NiMH battery performance varies over wide limits based on the manufacturer and quality of the cells.  This made it difficult to use the robot for any period of time and/or predict the useful runtime for the robot.
  • The exposed contacts on the 8-cell battery holder created the risk of short-circuits causing potential damage to the battery holder and/or the robot.

As a consequence of all this, (along with possibly other issues), the decision was made to depreciate the 8-cell battery package in favor of a better quality, and safer, Li-Ion battery pack and dedicated charger.

Issue:
The originally designed firmware for the GoPiGo robots, including the GoPiGo3, has built-in battery voltage points that trigger:

  • The power LED to turn yellow warning the user that the battery power is getting low
  • The power LED to turn red to indicate that the battery power is critically low, additionally disabling the motors.
  • The GoPiGo board commands a formal operating system shutdown if the battery voltage drops below a certain critical threshold.

Unfortunately, these battery voltage points were calibrated based on the discharge curves for a "typical" collection of eight NiMH batteries.  Since the Li-Ion battery pack automatically cuts power at a voltage considerably higher that even the NiMH warning threshold, the GoPiGo3 does not have an opportunity to trigger a safety-shutdown.  In fact, it does not even reach the "low battery - yellow power LED" warning stage before automatically cutting power.

It is an established fact that un-commanded and spontaneous shutdowns of a system like Raspbian/Linux can seriously corrupt the media and it is firmly established, (and documented on the MR/DI GoPiGo site), that a controlled shutdown is necessary to avoid corruption of the media.

Request/Proposed Solution:
The calibration constants for the battery thresholds should be changed to accommodate the new discharge curve of the new Li-Ion batteries.

  • This could be hard-coded into a firmware update
    -- and/or --
  • Both sets of constants could be supported in firmware with a corresponding setting in the calibration routine to select which set to use - defaulting to the Li-Ion set.
@CleoQc
Copy link
Member

CleoQc commented Feb 3, 2023

unfortunately it's impossible to find a voltage level for the new battery that will be reliable, from one battery to the next.
So won't fix, because can't fix unless we go to a different battery chemistry.

@CleoQc CleoQc closed this as not planned Won't fix, can't repro, duplicate, stale Feb 3, 2023
@jharris1993
Copy link
Contributor Author

unfortunately it's impossible to find a voltage level for the new battery that will be reliable, from one battery to the next.

I disagree as this "issue" is true for any battery chemistry. Alan has researched this, (and I have independently confirmed his results), that suggest voltage levels that are appropriate. I was able to use this data to modify the circuitry in the TalentCell batteries to make the "fuel gauge" more accurate.

Of course, these set-points are always only approximations regardless of chemistry.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants