Scratch-Technology

Home Page

Large Universal Timer

8 Channel Servo Controller

30 Channel Servo Controller

30 Channel USB Servo Controller

Simple Data Capture

Links

Contact


SC30: 30 Channel Servo Controller

30 Channel Servo Controller

SC30 - Single chip serial port servo controller 

"The enrichment center regrets to inform you that this next test is impossible. Make no attempt to solve it." - GLaDOS


The SC30 is a single board, single micro controller servo controller that can drive up to 30 servos independently. It is designed to power and control the typical RC type of servo found in model planes, cars and boats. The servos are controlled by a user from a host PC or other serial port equipt device. The SC30 device interprets simple text commands (ASCII).

Possible Applications:

  • Hobby Robotics
  • Stereo vision (moving cameras)
  • Automata
  • Advertising displays
  • Interactive displays 

Current Features:

  • Independent control of 30 servos
    • Enable / Disable
    • 255 steps over 180 degrees resolution (~0.7 degrees per step)
  • Integrated switch mode power supply (SMPS) supplying up to 5A current
  • Low component count
  • Small physical dimensions (100 x 50 mm)
  • Universal servo connection scheme
  • Range and list servo commands
SC30 rendering

Hardware

The hardware of the SC30 is based around the PIC18F452 or PIC18F458 micro controller from Microchip. The code can be ported with a little effort to most of the 18 series PICs with a USART. It may even be possible to further increase the number of channels.

The following schematic diagram shows the SC30 circuit:
SC30 schematic diagram

Firmware

The firmware of the SC30 attempts to provide clean regular pulses to maintain the positions of the servos while simultaneously handling communications with the PC. For the serial version communication with the PC is via a RS232 type serial port (at the moment fixed at 115200 8N1) The firmware checks the PIC USART periodically while generating pulses and queues any arriving commands or data. The queues data is then processed during the 'space' periods of the servo pulses.
In order to control 30 servos from a single micro it was necessary to split the servos into two groups, the first 15 are pulsed first and after 2ms the second 15 are pulsed.
A timer is used in the background to keep track of the 'space' time and is monitored by the firmware. When the timer indicates that 20ms have passed since the start of the last group one pulses the cycle starts over again.
The firmware for the
The SC30 device accepts ASCII commands from the PC (e.g. using hyper terminal or cute com) these commands are queued on reception and processed when the micro controller is idle (between pulses). To the user it appears that the commands are processed instantly.
The documentataion explains the format of the commands used to control the SC30. More commands will be introduced as features are added.

Planned Features:

  • Scripting capability - allowing user to pre-record a set of movements
    • Download script to module to allow unit to function independently (without a host computer)
    • Development is active on this feature
  • Option to use some pins as digital IO and or servo outputs
    • Development is active on this feature

Project Status:

This is a current project.
A prototype device is operational, schematics have been drawn up and PCB artwork complete.
Further development is continuing.

File Downloads

SC30 Documentation - 31-05-2008 Explanations of the commands and features of the device.
Version 0.7 (9k) - 31-05-2008 - Initial release (RS232 version only) - please make contact with feature requests or comments! No scripting functions yet.


Page last modified: 06 July 2009