58 days ago
Filed under

I’ve had my Openmoko Freerunner, named tobin, for probably a month now, and at the moment, while usability is largely horrible, it’s progressing at a very fast pace. The 2008.8 version of the software just came out recently, and while it looks very pretty, it’s a bit of a step down in usability, though I understand it’s a step up in the underpinnings? Maybe, we’ll see. What I’m most excited about using tobin for though is a robot.

Tobin has USB host support, so it should be trivial, once the FTDI serial kernel module is installed, to hook up an Arduino (or even better, a Sanguino:http://sanguino.cc bwahahah) and use it as a robot controller. Tobin could run autonomously, using all the sensors available from an Arduino, plus GPS and audio input. Or it could be controlled via bluetooth or wifi from a remote system. Say, my laptop in my backpack connected to an Arduino which is connected to a Wii Nunchuk? Then there are the possibilities of running a web server from tobin, and then maybe tobin is powerful enough to stream a web cam. That would be most awesome. A little robot, roaming the halls of a dorm.

The possibilities for control are pretty huge with the Freerunner, but I need a “driving base” to put all this on. Something with powerful motors. Like the ones in the industrial robots I’ve got. As soon as I got out of work after coming up with that idea, I started ripping one apart. I freed one of the brush-less DC motors, and was slightly disappointed to find it wasn’t a self contained servo I could use PWM with. It’s windings were directly connected to a board that had all the components to receive the ARCnet commands and control the windings. After large amounts of research, I found that a brushless DC motor is not as simple to control as a brushed DC motor. It requires a microprocessor that knows what position the shaft is in to pulse the windings in a certain pattern. Luckily though, I found the optocouplers that control the IGBTs (heavy-duty transistor like things) and was able to get pins for them, so I’ve got an Arduino hooked up where I can turn on and off the motor windings. Now the part I’m stuck on is figuring out how to find the shaft position in a way that will let me “commute” the windings appropriately.

This is where my new (used) oscilloscope came in very handy. The motor has an attached incremental encoder and using a scope to figure out what it was outputting was way easier than it would have been with a micro. The problem now is that the encoder only outputs the correct positions for the windings for a microsecond after you give it power. Once it’s told you what the winding states should be it just outputs a standard quadrature encoder signal. It seems from here I should be able to use the starting positions of the windings and the quadrature output to determine the positions, but I havn’t got that all figured out yet.

Other things I have to figure out are batteries for the 140v motors in the robot, and how much of the motor control, sensor collection and processing and communication a signal Arduino can handle. Maybe a dual core or triple core Arduino is necessary. But those tasks seem surmountable, which is exciting, because this robot would be completely kick-ass once built. More updates soon!

-->
rss | powered by textpattern | parts may be copyright their respective owners | all else is not copyright sneaktime dot net