Tag Archives: avr
This article describes building a small (3.3 cm times 3.3 cm) RC servo controller using an avr microprocessor and an FT232RL USB-uart chip. All RC servo signals can be set to pulsewidths from 0 to 8.1 ms using the usb-serial interface.
RC Servos are popular among modelling and robotics enthusiasts because of their simplicity. They take a pulsewidth-encoded input, and turn accordingly with relatively high torque. They have their disadvantages, for example one cannot tell if the servo was able to get where it was sent, but their low price and the fact that driver and gear box are integrated make up for that. Also, Conrad sells them for 3 € a piece, so I bought some.
LCD Controllers using an HD44780 Display Controller are commonly used for small batch electronic devices, and are popular with electronics fans worldwide. One problem with those controllers is their demand for IO-lines, due too the parallel interface they require at least 7 IO lines.
One solution, if you don’t have enough IO ports to spare, is to use another Display, like serial cellphone displays, which are cheap and color is a great thing to show off. Or you can expand the number of IO lines by using a shift register or TWI device. This is one such implementation using a 74hc164 shift register. It is based on an implementation by Peter Dannegger. If you prefer to use a 4094 cmos shift register, there are also schematics floating around the net.
The usbmot device controls up to two small motors, 600 mA current each, 1.2 A peak each, with an atmel atmega microcontroller connected to some host device via USB. The speed of the motors can be controlled with PWM.
Both firmware and host software are in the software package at the end of this page. In order to recompile the firmware, you will need an avr build chain (for example avr-gcc and avrdude), which you probably have if you found this page. To compile the host software, you will need a c++-compiler and the qt development package.