Balbot... sensors

I’ve been playing with a balancing robot similar to…

lynxmotion.com/images/jpg/balbot02.jpg

…except that it only has a single arm extending up from the frame; ie, no pivot at the top.

The goal was to use a single accelerometer (ADXL320) at the top of the arm to detect acceleration and then drive the servos to counteract the force. After several hours of playing around, it really seems there is no way to do this without a gyro.

Has anyone gotten balancing working with just an accelerometer?

Bob

I don’t have any experience with accelerometers, but I have been playing around with other types of balancing sensors.

Can you further describe, or better yet, take a picture of, your application?

Elaborating on the following would help:
servo (or motor)
servo (or motor) controller
microcontroller
batteries

If I’m imagining this correctly, you’re trying to balance a stick (no pivot, as you said) driven by two servos.

I’m also asuming that you’re using a BotBoard with some microcontroller.
And, I’m asuming that the accelerometer and the pair of drive servos are attached to the BotBoard.

Okeydokes… let’s see…

In theory, at least, a single accelerometer should be enough to get at least a fragile balance.

Possible issues:
(1) The microcontroller doesn’t have the time to read the accelerometer values, do your balancing algorithm, and then drive the servos.
(2) Your microcontroller doesn’t even have enough speed to read the accelerometer and then compute the balancing algorithm.
(3) Your algorithm is strictly proportional.
(4) All of the above doesn’t help.

Possible solutions:
(1) Throw another microcontroller in the mix. Have one read the accelerometer and do your algorithm. Then, send the correction values to the next microcontroller, which accordingly adjustst the servos.
(2) Purchase a faster microcontroller, or simplify your balancing algorithm.
(3) Revise your algorithm. The servos will need to be adjusted more and more greatly, the farther the bot has fallen. Try natural logarithmic increase (e^x).
(4) Try sticking an “arm” or some other sort of counterweight that can adjust the balance without effecting the drive servos.