Servo Controller – 18 channel control using software

A servo controller is a dedicated board that helps the user to control servos based on the commands sent to it from an external device such as a computer or microcontroller. Using a dedicated servo controller frees up memory on a microcontroller which would be used to constantly update the servo’s positions.

Enables the user to control upto 18 servos with serial commands issued from PC or another Arduino. You can also set various parameters like minimum, maximum, reset angles, speed and save these parameters permanently. You can also enable / disable individual servo as well as set the position.

The servo controller is built around the popular chip ATMega328P running at 16MHz clock controls the servos based on serial commands received. The servos are connected to digital pins 2 to 19 in order [as labelled on the board]. Reset switch is provided to reset the controller.

Powering the board

The board can be powered through on board micro USB  or screw terminal (K4) or through berg strip connector (K2). If we use external power for the board put the J3 jumper to VCC.

The servo motors can be powered directly through external dc source connected in screw terminal (K4) or by connecting battery to berg strip(K2). Make sure that the voltage used should be  compulsorily in the recommended range of servo motor you are using.

The rest of the board gets powered from external source / USB based on jumper (J1) selection. Once the board is powered, the power indicator LED lights up.

If J1 selects external source as power source, then keep J3 open if the source voltage is  >5V. Shorting the jumper shorts the input and output terminals of regulator.

Plugging the Servo

For most RC servos, a 500us long pulse (0.5ms) at 5V would rotate the servo to ­0 degrees, a 1500us (1.5ms) long pulse would rotate the servo to 90 degree and a 2500us (2.5ms) pulse corresponds to 180 degrees. This pulse needs to be repeated every ~20ms. These pulses are given by the servo controller to signal pin of servo which in turn moves the servo to corresponding position.

Labelled multi- colour berg strip connectors enable you to plugin the servos with ease. The 18 connectors are laid out as 2 different sections with one section having 10 strips [D2-D11] and the other having 8 strips [D12, D13, A0-A5]. Servo1 (as per software) is connected to D2 and the servos are numbered in anti-clockwise direction to end up with servo18 connected to A5 (D19)

The White strips are the signal pins
>The Red strips are the Vcc pins
>The Black strips are the Gnd pins

Testing the servo controller board using Servo controller software

  • The board can communicate with PC via micro USB cable plugged into the micro USB port and the Xbee/USB selector DPDT slide switch pushed to USB side. In this case the PC should automatically detect the servo controller and install the appropriate drivers to let the board appear as a COM port. If your computer does not detect the board, you should manually install the CP2102 chip VCP drivers (based on your operating system)
  • The controller has Xbee port with on-board 3.3V regulator and level converter that enables you to plug in XBee / Bluebee directly without any additional circuitry. The orientation of Xbee has been marked for ease of use. The Xbee/USB selector DPDT slide switch pushed to XBEE side. The paired Xbee can be interfaced to PC using an XBee Explorer Dongle
  • You can also use a TTL – USB / TTL – RS 232 converter to communicate with the MCU directly via 3-pin RMC connector K25. The port has 3 pins namely TXD, RXD, GND and communicates in 5V level [Programming not possible].

Note : You should open the software only after connecting the communicating device(micro USB cable/XBee / Bluebee) to the PC.

  • Open the servo controller software and select the com port to which  micro USB cable/XBee / Bluebee connected and press connect button.

  • Different Functions of servo controller software.

  • RST button: -For resetting each servo.
  • Factory Reset: -It will reset the software to its initial condition .
  • Reset All:- To reset all servos to its initial position.
  • ADC6 and ADC7 button:-For displaying ADC values in the dialogue box.
  • Set Delay(ms) button: -To set delay for servo movement.
  • Add Move:-We can add the servo movement by sliding the bar and press reset button.
  • Remove button:-To remove the selected sequence of servo.
  • Clear All:-To Clear all added Sequence.
  • Copy Parameters:-To copy the added sequence.
  • Run sequence:-To run the added sequence.
  • Stop button:-To stop the running sequence.
  • Set as Minimum/Maximum:-set the selected servo angles to its maximum and minimum position.
  • Set reset value:-To set the initial value of servo.
  • Upload Sequences:-To upload the saved sequence.
  • We can control the speed of each servo in the settings by selecting the servo and its speed.

  • Select the needed servo by marking tick in the box.

  • Connect the servos and mark  tick in the box for needed servos.Move the slide bar then we get the servo movement.

  • We can add a sequence of movement by dragging the slide bar to a particular angle  and press Add Move.While pressing the  Run Sequence button the servo will move.

  •  To stop the running  sequence press Stop button.
  • To clear the sequence press Clear All button.
  • To remove a particular sequence, select a sequence and press Remove button
  • To set Maximum and Minimum angle.

  • Select the servo which you want to set the angle from SETTINGS.
  • Move the slide bar to your desired angle and press Set As Minimum button to set minimum angle.
  • Move the slide bar to your desired angle and press Set As Maximum button to set maximum angle.
 Arduino Code for Communicating with Servo Controller Software


Shop With Us

Leave a Reply

Your email address will not be published. Required fields are marked *


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">