Balancing One-Wheeled Scooter
8th March 2007
I have put together this page to document a one-wheeled balancing scooter / skateboard that I've just finished. It's the culmination of several iterations over the last few years, and definitely my favourite.
It's very similar to a snowboard to ride, requiring no user input other than the movement of your body mass. Leaning forwards and backwards controls the velocity and moving your weight from heal to toe controls the turn radius. It's easy and very intuitive to ride.
I've put together a video on youtube of me and some friends riding it:
The picture to the right shows the scooter. On the far left are the batteries and controller, in the centre is the wheel and belt drive and on the right are DC Motor and motor driver (Open Source Motor Controller).
Two 12V, 12Ah sealed lead acid batteries are used, giving a 24V supply. They're �20 each and available from RS (part number 537-7305). I selected them mainly because of their low price.
Performance is ok, but the voltage does tend to drop when a significant current is drawn (approx 50% drop for 100A).
The current limit for this motor is supposed to be 21A although my control strategy tends to push it a little harder than this (spikes of 100A?!). It's still alive.
OSMC - High Current Motor Driver
I'd tried to make my own H-Bridge drivers for previous scooters. I found that what in theory is very simple, in practice is very hard to implement. There are lots of subtleties to getting it right, other than just choosing big MOSFETs and a driver chip!
My attempts did work, but resulted in lots of electrical noise. Enough to kill the 100mb wired network to my computer when the scooter was on. The OSMC solves all of these problems and can be had for around �90 from Robot Power
The main controller is a PIC16F876A running at 20mHz. Pitch angle feedback is provided by an ADXRS300 Rate Gyro and a ADXL202 dual axis accelerometer from Analog Devices. The gyro signal is integrated and mixed with 0.5% of the gravity signal from the accelerometers (this corrects for drift). There's a better way to do this - it's called a Kalman Filter and is one of the next improvements I'll make to the control.
The main control loop runs at 100Hz and is a simple PID controller. The controller outputs a PWM signal to the OSMC using locked antiphase (I can highly recommend this), resulting is super smooth control of the motor with inherent regenerative braking. Setting up the integral gains and limits is a bit of a pain, but I think I have it right as the deck now stays level on hills and at speed.
At the moment there's no speed limiting which is a pain as a bit of headroom is required to stop the rider from falling off the front. I'm either going to add a buzzer indicating that the integrator is wound up and you're near max speed or some kind of auto lean back type thing.
The chassis is made entirely from 100mm x 3mm steel plate and was cut out using a jigsaw. The foot rest are the same material with a fold at each end and some skateboard deck grip on top. The whole thing is held together by loads of little M4x12 countersunk fixings.
The only real pain was getting the material folded - 3mm x 100mm is quite thick to do at home, needing a proper brake. Thanks Brad.
I spent quite a while specifying the belt drive as the level of reduction I needed was high (4.28:1). The motor pulley only has 14 teeth - if you drive it REALLY hard it's possible to make it jump. Ideally I'd like a brushless DC hub mounted motor inside the wheel, but motor and control costs were a little high.
The belt and pulleys were supplied by Wyko and cost about �70 in total - I went for the 1/2" wide, 3/8" pitch drives (guess what - they were cheaper). The manufacturer was Fenner.
Influences / Links
Here are a few other sites that I've found useful, I'd really recommend reading through Trevor Blackwell's projects, especially his balancing scooter and unicycle.