Wednesday, May 14, 2008

Converting Scooba Adapter from 110V to New Zealand 240V

The method is pretty similar to the Roomba adapter conversion and involves replacing a capacitor and varistor.


The capacitor and varistor are circled.

The two replacement components. a 400V 100uF capacitor and a 275VAC varistor.

The board with the replacement components installed. The capacitor had to be mounted sideways in order to fit in the case. I used hot glue to keep it in place.

The Scooba happily charging.

Fixing a dead Roomba 500/570 (No Lights)

I've had my Roomba 570 for almost two months. In that time, the little guy has been automatically vacuuming the house automatically everyday. A couple of weeks ago, I found him dead (no lights), in the morning, half way through a cleaning cycle. After picking him up he came back to life and then worked fine until two days ago.

Two days ago, I found my Roomba dead again, half way through a cleaning cycle. He did not respond to any button presses and none of the indicator lights would come on. Resetting him did not work, nor did removing and replacing his battery. I opened him up and gave him a thorough clean (inside and out) with my standard vacuum. He worked again for 15 minutes and then died whilst emitting a a slow and unrecognisable musical sequence. This happened several more times during the day. The Roomba would die, only to come back to life after he was disassembled and cleaned. The Roomba would run, sometimes for an hour but often for only 10-15 minutes at a time before dying. One of the last times before he died, he moved eratically and again, played a musical sequence in an almost slow motion and drunken fashion.

Eventually it seemed like my Robotic Vacuum was dead for good. No matter what I did, he would not respond to any button presses nor would he activate any indicator lights. The only thing I could think of that could cause this to happen would be a blown component or bad solder joint.

I disassembled him all the way down to his main circuit board. I carefully went over his entire circuit board, looking for bad solder joints or blown components. I took special care to examine the FETs that drive the motors as well as the voltage regulators. The FETs looked undamaged and the regulators appeared to work because many of digital components chips were getting a 4.2V-5V supply (regulated down the battery's 14.4V supply). Nothing, it seemed, would bring back my Roomba.

At 2am this morning, I pondered and wondered. What could possibly cause the Roomba to play music really slowly before it died? It was unlikely that a blown component or failed regulation circuit would cause that kind of failure.

I came up with a theory. The crystal oscillator used as a clock generator for the Roomba's microcontroller (an ARM ARM7TDMI) relies on a piezoelectric crystal which can fail from heat, physical shock or simply poor construction.

If the crystal oscillator on the Roomba main circuit board failed in such a way as to cause it to oscillate slower than its rated frequency then the Roomba's microcontroller (an ARM ARM7TDMI) would slow down accordingly. The Roomba's monitoring routines would notice some kind of problem (perhaps because of ms timings with other chips or interrupts) and try to play some said warning tones. The slower clock rate would cause those tones to be played with a lower fequency and longer duration.

I opened up the Roomba yet again and examined the offending 8Mhz crystal connected to the ARM processor. The solder joints looked fine and the component looked undamaged. Connecting the battery was still not activating the Roomba. I then applied physical pressure to the crystal, connected the battery and was greeted with a hello musical sequence from the Roomba! With some experimentation (fiddling with the crystal) I was able to get the Roomba to start playing music really slowly (almost on demand). I was pretty sure I had found the cause of my Roomba's early death.

The cause was hard to find but the fix was simple. I replaced the crystal on the board with a new 8Mhz crystal from jaycar. My Roomba now runs like a champ! The crystal is slower than the maximum 32MHz that the processor can take so it would probably be possible to overclock the Roomba (!) though I imagine many of the routines are dependent on the crystal being 8MHz.

From reading the iRobot forums, there are appears to be several other people who have had similar symptoms and at least one other person who has identical symptoms. I'm left to wonder if iRobot has unknowingly used a bad run of crystals...

Here are the pictures:

The top of the Roomba with its faceplate removed. The face plate can be removed carefully prying it off, starting from the edge closest to the dustbin. There are clips on the outer circumference as well as the inner circumference. The faceplate clips are quite tight so it will need careful but forceful tugs.

The Roomba's bottom cover needs to be removed. Start by removing the side brush and unscrewing the four large screws. Once the bottom cover is removed, the 10 small screws on the bumper bar should also be removed.

The Roomba with the bottom cover and battery removed.

The Robot with its top cover removed. The crystal is under the control panel which can be removed by unscrewing another four screws. Unscrewing the left and right wheels on the bottom of the roomba will make it easier to work with the Roomba. Make sure you work on a bench and not the carpet as static discharges may damage or destroy components

The robot with the top cover and control panel removed. The crystal is the small metallic, cylindrical component to the right of the "iRobot" logo on the bottom right quadrant of the circuit board.

A close up of the revision number and date as printed on the board.

A close up of the offending component. The component was glued to the circuit board during manufacturing. The ARM processor is in the same area but on the opposite side of the board.

Another view of the faulty crystal showing its legs and where it is soldered to the main board. The underside of the crystal has "8.000" engraved -- indicating that the crystal is an 8Mhz crystal.

The replacement crystal. The packaging is different (rectangular but that doesn't matter).

The new crystal soldered to the board. I applied some hot glue (not pictured) to make sure the crystal won't move around and short out other components.

I side shot of the new crystal. "8.000" means 8.000Mhz or 8MHz :-).

Tuesday, May 13, 2008

Another video of my Robonova

Slightly more intelligent this time :-)

Video of my RN-1 walking autonomously

Thursday, May 8, 2008

Modifying GWS voltage indicator to show voltage in bar mode

The OBI-02-5 is a 6V battery level indicator made up of 10 SMD LEDs driven by a LN3914N indicator driver. I wanted to use one of these on my RN-1 robot, not necessarily for the indicator but because all humanoid robots need cool looking LEDs :-).

GWS make various versions for 4, 5 and 6 cell NiMH/Nicad cells(4.8V, 6V and 7.2V) specifically for RC applications. GWS ships the indicators configured to only light up one LED at a time. I wanted all indicator to light up like a BAR indicator rather than a dot/point indicator.

The datasheet for the LM3914N shows that it is capable of displaying in bar mode. The mode selection pin (pin 9) needs to be hooked up to the V+ pin (pin 3).


The indicator board from the front

The indicator board from the back

The back of the board after modification

RN-1 proudly displaying his lights

Friday, May 2, 2008

Fixing Roomba 500/570 side brushes with stitches

The Roomba 500 series side brush is infamous for amputating itself. Over time, the arms of the side brush weaken and break off very near the center hub. It's very hard to glue the arms back on since the surface area of the breakge point is very small but it looks like you could simple stich the arm back on using a small needle and thread.

Here's some pictures of a side brush with an arm reattached using stitches!

The side brush was first attached back to the hub with some superglue and left to dry for 15 minutes (aparently superglue can react with cotton and catch fire!). After the glue dried sufficiently, I used a small needle and thread and stitched the arm to the central hub. I didn't make too many stitches as I was concerned that too many needle holes would compromise the plastic.

Robonova hip and ankle joints

I've got a Robonova RN-1 humanoid robot. It's a great robot but the use of a screws fitted into thin threaded brackets for the hip and ankles is a really bad design flaw in the Robonova.

My robonova's hip/leg joints and leg/ankle joints failed within 2 weeks of building the robot. The joints loosened causing the robot to go off balance and fail many of his moves. The screws eventually came lose. Eventually some of the threaded holes in the brackets wore and became useless!

I've replaced the screws with standard M2 (2mm) screws and matching nuts. The best nuts to use would have been nyloc nuts as they are less likely to come loose. My local fastener supplier was out of M2 nyloc nuts so I had to go with standard nuts (for now :-)).

The advantage of using screws and nuts instead of just screws is that the threads in the bracket holes aren't required so you can utilise all 8 holes (4 threaded, 4 unthreaded) to create an extra strong joint!

Here are some pictures: