ServoMatrix

image image

click images to enlarge

Description

ServoMatrix is a MondoMatrix expansion board that can control up to 64 Servo Motors.  Each servo can have positions between 0 and just over 200.  One of the most powerful features of ServoMatrix is that you can have up to 8 different kinds of servos controlled by a single board.  The reason is that each row of eight servos has an independent power port.  All of the power servo ports can be connected to one power source or each row of eight servos can have independent power sources.  This allows for independent control of a variety of servos all from one controller.  If you were building a robot for example, this would be beneficial as some small servos would use less power and some larger servos would need more power etc.  The ServoMatrix board also has its own power source protecting the board from power related events that can damage the controllers .

Important note about expansion boards:
All MondoMatrix expansion boards must be connected to the main controller (Displayduino) to work.  The connections are made using the RS485 network and there is an RS485 network port on all of the MondoMatrix boards.

Specifications

  • Maximum suggested current draw on signal pin: approx. 1mA
  • Input voltage range for the board power inputs: 7V – 12V DC in, 100mA
  • Power input for servos: check your servo documentation, but usually in the 4.8V-6.0V range
  • Power consumption for fully loaded board: check servo documentation for current rating, but likely at least 32A for all 64 servos (assuming 500mA per servo)
  • Servo control pulse range: 0.5ms to 2.5ms, with 8-bit control
  • Data interface: approx. 115.2 kbps (113.636kbps actual), 1 start bit, 1 stop bit, 9 data bits, MatrixNet V1 protocol
  • Board size: 4.8125 inches by 4.8125 inches (nominal)
  • Mounting holes: 3.0mm holes arranged on the corners of a 4.3625 inch square.

ServoMatrix Introduction Video:

Network Checklist:

image

  1. Make sure a Displayduino controller is at the beginning of your network connecting to A, B and G terminals of all expansion boards on the network.
  2. Make sure the servo power is a separate power supply dedicated to powering the servos.  One servo power supply can be used to power multiple rows of servos or even multiple expansion boards (as long as it has enough amps) but the servo power supply can not be used to power the data power port(s).
  3. Make sure your expansion boards all have a unique address that matches your code.
  4. Make sure that you have a 10k Ω resistor on each end of your network connecting A and B together.
  5. Make sure the data power is a separate power supply.  One data power supply can be used to power multiple expansion boards and the Displayduino data power (as long as it has enough amps) but should not be used to power the servo power port(s).
  6. Make sure to use twisted wires for the RS485 network connections.

* Note you can have different kinds of expansion boards (LEDMatrix, ServoMatrix etc.) on the same network but each boards should have a unique address

Sample Arduino Code

This code sample sets the servos one by one, from port 0 to port 63 (64 ports total) to the near-maximum actuation of the servo motors and then back to the near-minimum actuation of the servo motors.

#include 

MatrixNet myMatrix;

unsigned char i = 0;

void setup()
{
  myMatrix.begin();
}

void loop()
{
  //Slowly rotates all servos on board 0 to one near-extreme

  for(i=0;i<64;i++) {
    myMatrix.changeServo(0, i, 200);
    delay(50);
  }

  //Now slowly rotates all servos on board 0 to the other near-extreme

  for(i=0;i<64;i++) {
    myMatrix.changeServo(0, i, 25);
    delay(50);
  }
}

Source Code (NEW May 22, 2011!)

The source code and hardware files (schematic and PCB layout) for the ServoMatrix are available here.

Get Help

Help

Help