Roomba Power Status

Inside the Roomba and Scooba and more, Cool mods, Repair and Upgrades - including the all new iRobot Create Kit. Let's void that warranty baby!
Post Reply
hybrid
Posts: 15
Joined: August 31st, 2009, 8:03 pm

Roomba Power Status

Post by hybrid »

So I finally got my roomba working with my Arduino and now I have it so it will dock and undock based on if the battery is charged or if it needs a charge. However, I am having issues figuring out how to properly detect the battery is getting really low.

I poll the roomba for power status and I get the following bytes back (as an example):
0
67
48
-1
67
38
10
-117
10
-114

I know I am getting the right values since the first byte changes based on if the unit is charging or not. My main question is how do I know when the battery is getting low? I assumed I could use the bytes 22 and 23 (high and low respectively) for the batteries charge but I charged the battery and took some readings and then let the unit run until I had a flashing red light and then took some readings. After I did the high byte/low byte math the values did not come out much different. Am I looking at the wrong place here? What is the proper way to know when the battery is getting low?
User avatar
vic7767
Robot Master
Posts: 15556
Joined: January 14th, 2006, 7:31 pm
Location: Haughton Louisiana - USA

Re: Roomba Power Status

Post by vic7767 »

Which command are you sending to poll the sensors with and which packet group are you requesting ?

What I mean is that for example packet group 3 contains packets 21 thru 26, is that you are doing ?
hybrid
Posts: 15
Joined: August 31st, 2009, 8:03 pm

Re: Roomba Power Status

Post by hybrid »

Yes, I am sending the bytes 142 3 and putting the 10 byte results into an array.
Gordon
Robot Master
Posts: 4304
Joined: April 6th, 2005, 2:02 am
Location: Santa Ynez, CA USA
Contact:

Re: Roomba Power Status

Post by Gordon »

hybrid wrote:... My main question is how do I know when the battery is getting low? ... Am I looking at the wrong place here?
I think you are.
What is the proper way to know when the battery is getting low?
Sampling of battery voltage must be done while Roomba is ON-mission, with all motors running. Roomba automatically does the low battery checking for us (which I'm sure you know), and when the loaded battery voltage crosses the 12-volt level, the robot will halt and complain.

If you don't find that stopped Roomba quickly (less than five minutes) to measure its no-load voltage, you will find it is above 12Vdc when you do get to it! And possibly ask why Roomba stopped when it still had battery voltage.

Battery voltage is not a good indicator of charge in the NiMH battery. The following post...
http://www.robotreviews.com/chat/viewto ... 622#p52622
...shows a plot that indicates how quickly a battery can recover from the 12-volt, loaded level, to a 14-volt NO-load level.

OTOH, when you do measure 12Vdc NO-load on a battery, you know you have a battery badly in need of re-charge -- and may even need replacement.
User avatar
mfortuna
Robot Master
Posts: 5853
Joined: February 5th, 2006, 9:35 am
Location: NH

Re: Roomba Power Status

Post by mfortuna »

Are you doing your math right? The voltage is ((256*byte22) +byte23)/1000. In your example the data reports 17.2V. When I monitor the voltage of my create security bot it indeed drops over time because even when stationary a small amount of current is drawn. I would expect you to see a difference in voltage from fully charged to fully discharged.
Mike
Reds x 3, Dirt Dog, Disco (now a parts bot), Create, Scooba 350, and Security Dawg
Evolution Mint
Neato XV-11
Shark Ion 750
hybrid
Posts: 15
Joined: August 31st, 2009, 8:03 pm

Re: Roomba Power Status

Post by hybrid »

Ok, to be clear. I was not using voltage but current.

I am doing the high byte low byte math right (same as above but I did not bother dividing by 1000) so I don't think that is an issue. I have removed the side brush and all vacuum motors from the roomba so the only ones left are the right and left wheels. So what you are saying is that I need to check the battery while the robot is in motion?

I assume I should see some sort of drop like in this chart? I would be looking at the pink line:

Image
User avatar
vic7767
Robot Master
Posts: 15556
Joined: January 14th, 2006, 7:31 pm
Location: Haughton Louisiana - USA

Re: Roomba Power Status

Post by vic7767 »

I would think that the current demand from the drive motors would remain constant but that the battery voltage will drop towards the 12 volt docking trigger voltage. Would it be better to watch the voltage ?
hybrid
Posts: 15
Joined: August 31st, 2009, 8:03 pm

Re: Roomba Power Status

Post by hybrid »

I have tried watching the voltage but it seems to trigger pretty early in the cycle (15 min or so on a pretty new battery and the roomba only has been driving around... no other motors other then a single little servo.) However, I have not been checking while the roomba was in motion. I assume that would be the key?
User avatar
vic7767
Robot Master
Posts: 15556
Joined: January 14th, 2006, 7:31 pm
Location: Haughton Louisiana - USA

Re: Roomba Power Status

Post by vic7767 »

I'm not sure either but give it a try and let us know.

I just got my Arduino Duemilanove board today, haven't even gotten the WinXP drivers installed yet.
Gordon
Robot Master
Posts: 4304
Joined: April 6th, 2005, 2:02 am
Location: Santa Ynez, CA USA
Contact:

Re: Roomba Power Status

Post by Gordon »

hybrid wrote:Ok, to be clear. I was not using voltage but current.
I can't see that operating current will tell you what you want to know about low battery. As long as battery voltage remains above the 12-volts cut-off, Roomba will draw the current it requires (assuming no module's current exceeds its assigned current limit. If that happens, Roomba will quit with error.)
... I have removed the side brush and all vacuum motors from the roomba so the only ones left are the right and left wheels. So what you are saying is that I need to check the battery while the robot is in motion?
The way to think about that is it only makes sense to sample voltage while current is being drawn from the battery, because you want to shed the load before voltage falls low enough to reverse-voltage charge any weak cell in the pack. That is why iRobot's robots sample battery voltage on the fly -- to ensure loaded terminal voltage never falls below a nominal 12-volts (one volt per cell).

Since you have purposely dropped a good portion (roughly half) of the normal load, Roomba will experience a longer run-time before reaching the low-battery indication, and then the ultimate 12-volt limit.
I assume I should see some sort of drop like in this chart?
The voltage curve is always an ogive curve (S-curve, rotated 90-deg CCW), starting high, with fresh charge, falling quickly to around the 15-volts level, then showing a long & shallow -- somewhat linear -- voltage droop, passing through the mean 14.4V point, passing through 13V, and eventually showing more curvature (concave down), and steepening as it passes through the 12-volt limit.
I would be looking at the pink line:...
Yes, when monitoring current. It will be a fairly flat (constant) line, but with delta-load bumps here and there.

What you see in the plot is the result of a manually tended bench test, not an operational Roomba test. I was late in disconnecting the load, else the pink link would have fallen at the 12-volt crossing.
Gordon
Robot Master
Posts: 4304
Joined: April 6th, 2005, 2:02 am
Location: Santa Ynez, CA USA
Contact:

Re: Roomba Power Status

Post by Gordon »

hybrid wrote:I have tried watching the voltage but it seems to trigger pretty early in the cycle (15 min or so on a pretty new battery and the roomba only has been driving around... no other motors other then a single little servo.) However, I have not been checking while the roomba was in motion. I assume that would be the key?
To get a better understanding of that battery's capability, you should gear up to load-test it with whatever operating current you intend Roomba to draw. Drive wheels can pull 0.3 to 0.4A each -- free-running, off the floor.

Fully charge the battery (according to a functional Roomba charging system), then discharge the battery into a resistive load and measure the time to reach 12Vdc under load.

You will then know how good that new battery really is.
hybrid
Posts: 15
Joined: August 31st, 2009, 8:03 pm

Re: Roomba Power Status

Post by hybrid »

Gordon wrote:
hybrid wrote:I have tried watching the voltage but it seems to trigger pretty early in the cycle (15 min or so on a pretty new battery and the roomba only has been driving around... no other motors other then a single little servo.) However, I have not been checking while the roomba was in motion. I assume that would be the key?
To get a better understanding of that battery's capability, you should gear up to load-test it with whatever operating current you intend Roomba to draw. Drive wheels can pull 0.3 to 0.4A each -- free-running, off the floor.

Fully charge the battery (according to a functional Roomba charging system), then discharge the battery into a resistive load and measure the time to reach 12Vdc under load.

You will then know how good that new battery really is.
I don't think it is an issue of the battery holding a poor charge. The battery works great in my cleaning roomba and thus far has not had any issues.
User avatar
mfortuna
Robot Master
Posts: 5853
Joined: February 5th, 2006, 9:35 am
Location: NH

Re: Roomba Power Status

Post by mfortuna »

With nothing on except the bluetooth module my create draws about 150mA, this will spike up to 400mA while driving. The wifi camera draws another 200mA or so.

I can watch the battery voltage drop (I use roomba status) just under bluetooth load.

In your case I don't think you need to worry about checking the voltage while driving. At 12V you are at a nominal 1.0V per cell (some will be lower, some higher). As long as you check the battery at regular intervals you should be OK. I'm not sure what your algorithm is for driving, but maybe check the voltage each time you detect a bump.
Mike
Reds x 3, Dirt Dog, Disco (now a parts bot), Create, Scooba 350, and Security Dawg
Evolution Mint
Neato XV-11
Shark Ion 750
Post Reply