Servo Control XB

Eliminate Servo Jitter from Your Project!

Servo control is a very common function that Arduino boards perform in a lot of projects.  Robots, drones, actuators, and a variety of mechanized motion solutions are driven by servo motors.  Arduino boards can do a good job of controlling servos provided that the number of servos remains low and the microcontroller is not tasked with many other functions.

However, generally speaking, Arduino-based servo control solutions suffer from servo jitter and twitching due to the 8-bit micro not being able to maintain precise timing required on the Pulse-Width-Modulation (PWM) signal that controls the servo.  If the tight timing required to maintain absolute servo position is not met, the servo will jitter between locations until refreshed from the micro.  This can cause significant issues where accurate, stable servo performance is required.

The Servo XB completely eliminates this “jitter”.  By implementing the PWM functionality as a standalone hardware block in the FPGA, perfectly timed signals are continuously supplied to the servos without taxing the microcontroller at all.  Even better, the number of servos being driven can scale up without any additional burden to the board since they are each being controlled by a standalone XB block.

 

 

Specifications

  • Uses same functions as Arduino Servo library
  • Supports up to 12 servos, depending on the image

Required Alorium Technology library:  XLR8Servo

The XLR8 Servo XB is very easy to use because all of the functions in the XLR8Servo library are unchanged from the standard Arduino Servo library.  Simply install our library, include the header file, and you can leave the rest of your sketch completely unchanged!

Update: As of library version 2.1.0 the “write” and “writeMicroseconds” functions include an optional speed parameter. If used, the servo will move gradually from its current position to the target position at a speed between 1 & 15, 15 being the fastest.

This is ignored by earlier versions of the servo XB, so the library is forward and backward compatible with versions that do and do not recognize the speed parameter.

 Supported XLR8 Images:

  • 16MHz Standard: Float, Servo, NeoPixel
  • 32MHz Standard: Float, Servo, NeoPixel
  • 16MHz Robotics: Servo, Quad
  • 32MHz Robotics: Servo, Quad

**Note**

We recommend updating your board to one of the latest FPGA images to use the Servo XB. The XLR8Servo library version 2.0.0 and up is compatible with boards package 1.9.0 and later.

For older board packages and the XLR8 Legacy image, use XLR8Servo library version 1.1.0.