homepage - résumé - academic page - laser cutter projects

Segfault write-up

Here's some info about my homemade Segway or balancing scooter. Let me know if you have questions about anything and I'll get the answers written up and added.

This scooter was built on the small budget of a grad student with a family. The total cost was under $300, over an order of magnitude cheaper than the real Segway.

Update - 25 Sep 2013

I did some work over the last year for a power-tool company who contacted me about building a balancing scooter from their tool parts. Their shop handled the mechanical construction, and I spec'd the powertrain and electronics, made a new PCB to interface with the (non-Nintendo) sensors and more appropriate motor drivers, and tuned the system. I don't have permission to post photos or videos of it right now, unfortunately.

(Getting paid in power tools? Awesome.)

Update - 26 Mar 2012

The Segfault was featured on Hack a Day last week!

Update - 17 Mar 2012

I recently added TVS diodes to the motor drivers and put the batteries in series for 24 V. The speed has increased as expected, though I haven't been brave enough to try it full out yet. The balance also seems a bit smoother. The one problem is that one of the motors has been sparking and putting out puffs of smoke. I think some oil may have gotten on the commutator and that the brushes may be bad, so I'm going to do a teardown of the motor sometime soon and try to resolve the issues.

I decided to go ahead and post the code in case anyone wants to reference it. I'm sure it's ugly code, but it works.

Control system

The Segfault runs off of a Cypress CY8C29466 Programmable System-on-Chip controller. The loop rate is about 100 Hz. During each loop, either the accelerometer or the gyroscope is read and the motor duty cycle is updated. I tried to write the code from scratch as much as possible, but I have to give credit to Trevor Blackwell and the MIT FIRST group, whose code I referenced. You can view the code here. (Disclaimer: I make no claims to be a good coder, and I bear no responsibility if you use any of my code for your own project and hurt yourself :).)


The system uses Wii hardware for it's balance sensors and steering. I used these because they're cheap—cheaper than just the sensor chips alone were—and they do the analog-to-digital conversion on board. I removed the guts of a Wii Nunchuk from its case and installed them in a small box, which is mounted on the pivoting handlebar shaft. It's the black box at the top of the picture below. Two of the built-in accelerometers (front-back and up-down) are used for balance, and the other (right-left) is used for steering. A Wii Motion Plus is mounted on the chassis, and one of its gyroscopes is used for balance. It's the white module in the picture below. Thanks to the folks at WiiBrew for posting information on how to retrieve the sensor data over I2C.

Motors and motor controllers

I'm using two motors from an Invacare electric wheelchair I found on Craigslist, along with the accompanying gearboxes, wheels, and tires. The two motor drivers are based on the Infineon BTN7970 half-bridge, which is rated to handle up to 70-A bursts and a continuous current of 40 A. The boards are Avayan Electronics' MDL-7960, which are very similar to the Robot Power Simple-H board. They are the two green boards in the picture above. One difference from the Simple-H is that these boards don't have transient-voltage-suppression (TVS) diodes. I found this out the hard way when, during one of my first tests, one of the boards blew out (see pictures below). I was running off of 24 V at the time, and I think the cause was a back-EMF spike that fried one of the half-bridges. I've since been running at 12 V, which reduces the top speed by quite a bit, but seems to have prevented more blown out controllers. I've been meaning to put in some TVS diodes for some time, but I haven't gotten around to it yet. I found some heat sinks to put on the half-bridge chips and attached them using adhesive heat-conducting pad.


I am using two 12-V 22-Ah AGM lead-acid batteries. They are currently connected in parallel to provide 12 V, but I plan to put them in series for 24 V once I get the TVS diodes put on the motor drivers.


There are three power switches for the system: one for the control circuitry and one for each motor driver. The h-bridges are enabled by holding down one of two dead-man switches on the handlebars. Another button puts the system in what I call "tow mode", which drives the motors proportionally to the tilt without trying to balance the system. This allows me to move the system around quickly without riding it. Steering is done by tilting the handlebars from side to side.

Chassis and handlebars

The chassis is constructed of pine board, plywood, and a couple pieces of aluminum angle as reinforcement. The handlebars and handlebar shaft are made of PVC pipe. The pivot for the handlebars is made of pine board and PVC fittings.

Current problems

Planned upgrades

homepage - résumé - academic page - laser cutter projects