One sick botvac lives again (component level repair)

News and information about the Neato XV-11 Robotic Vacuum. All discussion and troubleshooting questions go here.

One sick botvac lives again (component level repair)

Postby valamilamasag » March 19th, 2018, 7:49 pm

Hello all!

I like to share my "journey" with a broken botvac. Get ready for a wall of text :cheers: .

A few months ago I was browsing my country's local "ebay" and came across a botvac 75 for under 35 usd. Sadly the price went up to nearly a 100 but still... The only problem that the seller said its broken, needs a new battery. That can't be that bad. Little did I know :roll: ...

When the robot arrived a few days later I immediately tried it and it gave me a low battery, please charge me error and switched itself off. OK lets put it to its charger and wait a few hour. When I went back a new error was present: "wait until I cool my battery down" (battery overheat). Strange since it was cold to the touch :? .

Debugging begins:
Lets pull out the battery and check it. Voltage was just below 12 volts. Seems like it did not charged it at all. I put the battery onto a separate charger (not in the robot), charged it up then put back into the robot. This time it stayed on without being on the dock but refused to do anything. After maybe half a minute or a minute it said that the battery was overheating again. Strange again :shock: .

Lets go deeper, check the thermistor in the battery. It seems ok, around 10k ohm at room temp, that should be fine. Time to disassemble the robot and look for obviously blown components. Of-course I found none. Maybe its a power supply issue? I changed all the electrolytic caps, measured all voltage rails that I could find and still nothing.

At this point the motherboard was out from the bot running on my lab power supply.
Oh hey, there is an USB port on it! I found the API documentation, and with that one command returned the measured battery temperature and some random raw analogue value corresponding to the temperature (GetCharger and GetAnalogSensors). After a cold boot both seemed to rise to their limits slowly without a connected battery. But the bot said that there is a thermistor present without one being connected! At first I connected a variable resistor to simulate the thermistor, but no matter what I did it still said over temperature a minute after a cold boot.

Lets go even deeper.
How does the bot measures the battery temperature? It time for reverse engineering! I found that they used a MAX17047 as a fuel gauge IC by looking around the battery connector. Luckily this IC was not re-marked/named (usually a lot of company do this when some customer orders a lot of them at once). I looked at the IC's datasheet and what a surprise, it has a temperature measuring circuit. Its one analog in pin with an internal pull-up to 5v (or less) or an external one. Seems like they implemented the suggested layout/schematic of the IC and used the internal one. Lets measure this pull up voltage : 0V. Aha I found you! Turns out, not. The IC only switches on this pull-up if it wants to measure, to save energy. What if I forcefully pull this up to 5V through a 1k resistor? I measured the voltage again and it was around 1V. At least the robot does not say its overheating. But that's almost 4mA of current! Quite a lot, I expected something like in the neighborhood of 100 uA. Ok, lets check whats on this analogue signal. Besides a single resistor, a capacitor, an esd diode and the fuel gauge IC there is nothing. Where does that 4 mA goes then? At this point I measured the resistance between GND and the thermistor signal in and it was around 300 ohms! It should have been an open circuit. I desoldered everything but the IC and it was still there. Then the IC too and it was gone. Somehow the analogue in of the IC became shorted to ground. :evil:
Funny thing is that that IC measures the battery voltage and current too. And they worked fine. Also of-course the I2C bus worked fine too, since the main application processor was able to communicate with it.

Sidenote: removing this IC was tricky. It was a power wson package, and it was soldered to the ground plane. I was not able to remove it with a 150 watt soldering iron... So I simply took a diamond coated carving tool with the dremel and take most of the IC off with that. After that I was able to heat it from the top and remove it. :lol:

I almost forgot about the robot when a month later a replacement IC arrived. I soldered the new IC onto the board an lo and behold it works! Well, it kinda works... It sometimes just ignores the walls like they are not there. Other times it just backs up into the negative infinity. Through the usb port and the getdigitalsensors command I determined that 3 out of the 4 switches in the front was either stuck open or closed. Okay, easy fix, replaced the switches. Another month of delay.

New switches arrived, replaced them. It works? Yes! But not the side brush. That's dead. Damn it, not again :( .

At this point dissembling it was a routine. Side brush motor removed, and turns out it works with an external power supply. Wiring? No contact problem there. Next I checked the output transistor (FET). That works too. FET driver? Strange, they used a simple bi-directional level shifter IC to do this job. That IC is totally not meant to do this job. But it was also working. That IC gets its input from the main application processor. That"s a "huge" bga packaged IC with 500 pins underneath it. Sadly I cannot repair that. First of all, I cannot replace it, secondly it's a re-branded IC, third it probably has a built bootloader that launches the main QNX Operating System.

Time for a workaround. The "FET driver" IC needs a logic level pwm (or an on/off) signal. Where could I get one? One option would be get it from the main "enable motors" signal that becomes active if any of the motors need to move. But with that the sidebrush would spin while the bot is going back to the dock too. I choose the second option: run it from the main brush control signal. So I took the pwm signal from the FET driver IC of the main brush motor and connected it to the side brush FET driver IC. This way the side brush only runs when the main brush is running. The disadvantage of this is that the speed of the side brush changes with the main brush. I can live with that.

Success! A "fully" working botvac! :cheers: It happily cleans my house for the past 4 months.

The charger acts a bit strange, the output voltage of it drops to the battery voltage + 0,2V. Maybe this is normal, I did not see any buck regulator on the main board for the battery charging circuit. My guess that the dock is current limited instead of a constant voltage power supply.

Since then It got a new main brush, filters, side brush. And of-course an ESP8266 WiFi module, so I can telnet into it and control it remotely.
It will need a new battery soon, since it cannot clean ~100m2 in one go. I have not measured the capacity, but it must be around 2Ah instead of 3.6Ah by my guess. Maybe I try to convert it to Li-poly with a few 18650 cell. I saw that the SMBus (system management bus) is available on the battery connector. I hope it expects the standard smart battery protocol :roll:
Posts: 14
Joined: March 19th, 2018, 5:31 pm
Location: Hungary

Re: One sick botvac lives again (component level repair)

Postby vic7767 » March 19th, 2018, 8:19 pm

:cheers: Very nice description of your troubleshooting effort. Your procedures will help other Botvac hackers keep their bots running.
Roomba and Neato Mods, come visit:
User avatar
Robot Master
Posts: 14940
Joined: January 14th, 2006, 8:31 pm
Location: Haughton Louisiana - USA

Re: One sick botvac lives again (component level repair)

Postby glnc222 » March 19th, 2018, 11:04 pm

The best lithium battery replacement for original Botvac NiMh batteries is a LifePo4 version posted here:
This chemistry has several times the life of regular lithium ion batteries besides having no fire hazard. Compare prices though. Used in electric bikes etc. Lower energy density normally prevents use in vacs but is used in robot lawn mowers. The Botvac just happens to fit some of the newer, higher capacity cells. Older cells proved too little capacity in an XV replacement experiment -- for the available space.
The lower voltage of LiFePo4 better fits the 12v Botvac NiMh system (vs the newer Botvac's with lithium batteries at higher voltage like the XV models), than lithium ion. Commercial lithium batteries for the Botvac use only a portion of the discharge curve to match the voltage, compensating by adding a lot of unused capacity -- not efficient.
(A better match occurs in the higher voltage XV system, where 4 series lithium ion works well.)
Robot Master
Posts: 4943
Joined: January 23rd, 2012, 9:19 pm
Location: North Carolina, U.S.

Re: One sick botvac lives again (component level repair)

Postby mfortuna » March 20th, 2018, 11:47 am

Good work! One question, how did you solder the wson center pad when you replaced the part?
Reds x 3, Dirt Dog, Disco (now a parts bot), Create, Scooba 350, and Security Dawg
Evolution Mint
Neato XV-11
Shark Ion 750
User avatar
Robot Master
Posts: 5843
Joined: February 5th, 2006, 10:35 am
Location: NH

Re: One sick botvac lives again (component level repair)

Postby valamilamasag » March 20th, 2018, 1:52 pm

glnc222 wrote:LifePo4

Might look into it. But first I will try li-poly. I have 100's of 18650 cells.
Also I do not want to do this without a proper balancing and charge control (lifepo4 can handle improper usage like that mod done, but lipoly/liion do not). That's why I looked at the SMBus. The Botvac Connected has the same motherboard, just with different component population and it uses a lipoly/liion battery. If you take a closer look that battery uses all 6 pins. I presume the SW it's running is also exactly the same, just configured differently (activates different set of features).

The only thing that's need to be done is reconfigure the robot for lipoly/liion and figure out whats inside the connected's battery. Probably it will be a "generic" balancer IC speaking the smart battery protocol.

mfortuna wrote:solder the wson center pad

I did not. The IC barely has any power consumption, no heat to dissipate. I don't know why they used this specific package. (I also mad a mistake, its a TDFN package not WSON.)
Posts: 14
Joined: March 19th, 2018, 5:31 pm
Location: Hungary

Return to Neato Robotics

Who is online

Users browsing this forum: BrettS, Julian, someoneclever, sondejmarek, teokakav and 374 guests