0
\$\begingroup\$

Adafruit has breakouts for 2 different PWM driver:

The specific differences I'm interested in are the ones that would make the former suitable for LEDs and the latter also suitable for servos. The description of the SPI one says "Designed (and ideal) for LED control, this board is not good for driving servos."

What causes that difference? What should I look for in datasheets to understand if I can use a PWM controller to drive servos?

\$\endgroup\$
1
\$\begingroup\$

TLC5947 has a fixed pulse frequency: 4096 times internal clock (4MHz) = ~1000 Hz. For a servo, you want a much lower pulse frequency -- 30 to 50 Hz.

From this, there is a second problem -- each pulse can be at most 1 millisecond long. For a servo, you will want 0.5 to 2.5 mS pulses.

Also, the outputs are current-limited and open-drain -- which means that you will need a pull-up resistor and the connection will be suspectable to noise and may malfunction when the wires are long.

\$\endgroup\$
2
\$\begingroup\$

RC servos need an input that goes to +5V for a precise time. This pulse length is the position command (1ms = move full left, 1.5ms = move to center, 2ms = move full right). Then the input needs to go to 0V for some period of time (this period usually doesn't matter much). Any chip that can do that should work.

I think I see 2 reasons why the TLC5947 isn't good for servos:

  1. If you look at "Figure 3. OUT0 Through OUT23" in the TLC5947 datasheet, you can see that it has an "open-collector" output. This means that in one state it connects to ground, and in the other state it simply disconnects from everything. This is fine for switching LEDs on and off. But servos require a "push-pull" logic output: in one state it connects to ground, and in the other state it connects to +5V. You can use a pullup resistor to achieve this result with an "open-collector" output, but now you're adding an extra component.

  2. I can't figure out what the pulse frequency is. The TLC5947 might not offer precise control of pulse length, which you need for servos as discussed above. I might just be missing it though.

\$\endgroup\$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.