The Servo Trigger consists of two major engineering deliverables, the
hardware design, and the firmware. The hardware is actually the same for
the regular and continuous rotation boards, but they’re loaded with different
firmware, tailoring the board’s behavior to each type of servo motor. Both
sets of deliverables are in the Servo Trigger Github repository.
On The Board
Let’s look at the components on the board and examine what they do.
The heart of the Servo Trigger is an Atmel ATTiny84 microcontroller,
running a small program that implements the servo control features we are
discussing here. Just because the Servo Trigger saves you from needing to
write code doesn’t mean that there was no programming involved!
The servo control signal is generated using a 16-bit hardware timer. It runs
off a 1 MHz clock, counting to 20000 to generate the 20 mSec (50 Hz)
period and is configured to generate pulses that range from 1000 to 2000
µSec (1 to 2 milliseconds).
The three potentiometers are connected as voltage dividers between VCC
and ground. They are read using analog inputs ADC0, ADC3, and ADC7.
The switch input is read using PortA, input pin 1. It is debounced in
software and can be configured to watch for a switch closure or a logic level
pulse.
The board also includes the common 6-pin in-system-programming header,
which we’ll discuss in the Servo Trigger Programming Guide. But we’re
getting a bit ahead of ourselves – there are some configuration options you
can use without programming.
Configuration
The Servo Trigger has a couple of configuration options. If you look at the
back of the PCB, you’ll notice two solder jumpers that can be used to
change Servo Trigger’s response.
Configuration Jumpers, SJ1 and SJ2.
When it first powers up, the servo trigger reads these jumpers and
configures itself accordingly.
Modes
Page 6 of 13