Before I can rebuild Bumblebee, my 1st generation Roomba, I need to figure out how he works. I’m going to split this into three sections; Power , motors and sensors. I’m going to cover how to interface with each of these in future posts.
This was simple enough, I charged the battery and put a multimeter across the terminals, the battery showed 16v across the terminals.
A quick count shows that there are five motors. One for each wheel, one for the brush motor, one for the side sweeper and one for the vacuum. From the fact they all seem to have a black and red wire going into them and from the age of the device I took an educated guess and assumed they are simple DC motors. In order to test this theory I took the probes from my voltmeter, plugged them into my bench supply and poked at the motor terminals with the voltage and current limit set low. With this simple setup I was able to give the motors different voltages and easily reverse the polarity, sure enough the speed changed with voltage and direction changed with polarity. The wheel motors will need to run in either direction but the other three only need to run in one direction.
There turned out to be a lot more sensors than I realised and it’s quite a packed little robot! The sensors fall into two categories; IR sensors and switches. The microswitches are on either wheel and the caster wheel at the front, it looks like all three are currently wired to the same header so the robot knows only that one wheel is up and not which. The rest of the sensors are a bit more convoluted.
The drive wheels have an encoder each with four wires going in, once I’d opened one up it turned out that they are comprised of an IR LED and a light dependent resistor. I checked to see if they were IR by giving them just over a volt and there was no light, I then got out my phone camera and saw the telltale purple glow. Shortly after this I realised the error of my ways as the LED went out, without a current limiting resistor I burnt it out! Thankfully the LDR worked with visible light so I ended up replacing the LEDs on both sides with red ones.
Along the underside of the bumper there appears to be four cliff sensors, again IR LED/LDR combos which in this configuration are known as IR distance sensors. I’ve used these long ago when I built a PIC16F84 based robot at college so these aren’t a mystery. The resistance of the LDR varies depending on how much light bounces back, you need to calibrate them in your code or circuit but they are simple enough.
This is an IR distance sensor on the right hand side of the bumper, it works the same as the distance sensor.
This one confused me for a while as I couldn’t see any switches on the end of the arms of the bumper, I ended up taking the bumper out which required removal of the logic board and the penny dropped. At either end of the logic board there is an IR/LDR pair and when the bumper is hit the light level changes. I wondered to start with why they didn’t just use a switch but the video linked at the top of this page explained it all. A switch would be hammered that often it would fail in no time, the design of the bumper mount also cleans the area between the LED/LDR too which is handy.
On the top of the bumper at the front is a 360 degree lens which directs light on to an IR sensor of some kind, I’ve not dug deeper in to this one yet. I believe it acts like an IR receiver for a remote in a TV as it is used with the Roomba’s virtual wall. If the robot detects the IR code that is being sent out by the virtual wall it acts as though it hit a solid object, this is useful for preventing your hoover from escaping.
I’ll cover how I use each of the above in upcoming articles for each part above.