Let's Make Robots!

AVR servo firmware and Python GUI demo

controls up to eight servo motors using an ATmega328; serial commands change speed and position

I created an AVR servo firmware using C programming for an ATmega328 microcontroller. This version supports up to eight servos to be controlled while managing individual speed, position, minimum and maximum values. This uses a serial command set which is currently very basic and uses four character commands to send a 16-bit value to update a specific setting (ie position) of a unique servo.

The Python GUI (graphical user interface) was developed for use as a way to demonstrate the microcontroller firmware and is currently a very basic terminal program with slider controls for speed and position of eight servos. The video demonstrates four servos connected and working with the Python GUI application. To run the python code you will need to have Python, wxPython, and PySerial installed.

If you need a cheap way to control a few servos and already have an AVR programmer this may be of use, just make sure to include the math library (for floating point math to compile). I look forward to expanding the number of servos to 16 and hopefully more. I may also add some other features to the serial commands as needed such as acceleration/deceleration and ability to save initial start positions for each servo.

I think this firmware may come in very handy for robot arms and much more. I intend to use it as a second dedicated processor, or slave microcontroller, to take serial commands from a main processor. The code is available at sourceforge.