Extended PWM module for servo control - TLC5940

Hey all!

I am trying to control a number of servos using PWM. As quick background, the max current each of my servo motors will draw will be about 180mA and I have about 10 of them. I have a power source providing a stable 5V and up to 4A, which I am using to power my motors and Arduino.

I am using the following a TLC5940 to extend my Arduinos PWM outputs. I am using this tutorial.

And this is the documentation of the module

I want to know how to decide on the following:

  • The IREF, the reference resistor, they use a 2k ohm in the tutorial, how do I calculate it for my use? Is it based on the current the servo motor will pull for the PWM signal? or the one it will pull from the power source to run it (max 180mA)?
  • How do I decide on the capacitors I need between power source and Arduino+TLC?

Finally, the TLC has some info about current driving capability, is this with regards to how much current the motor will need to draw? or is it the current of the PWM signal?
"Driving Capability
– 0 mA to 120 mA (VCC > 3.6V)
– 0 mA to 60 mA (VCC < 3.6V)"

I am just confused about one thing, if the motor is getting its current directly from my 5V 4A power source, why does it matter what the ratings of the TLC are? I am only using the TLC to send a PWM signal to tell the motor driver how much current it should allow through, right? And then that is pulled from the power source? This is my thinking so please correct me if this is a wrong assumption.

Sorry if I forgot to add any extra information.

Thank you for your help!

It can be used to drive LEDs as a dimmer with PWM.

Strange choice of servo expansion board for me. Why not use PCA9685? Did you know that for 10 servo motors you don't need an expansion board? To control a servo motor the control pin does not need to have PWM. You didn't say what Arduino you are using but according to the information the library can control at least 12 motors.

'This library can control a great number of servos. It makes careful use of timers: the library can control 12 servos using only 1 timer. On the Arduino Due you can control up to 60 servos.'

'The Servo library supports up to 12 motors on most Arduino boards and 48 on the Arduino Mega. On boards other than the Mega, use of the library disables analogWrite() (PWM) functionality on pins 9 and 10, whether or not there is a Servo on those pins. On the Mega, up to 12 servos can be used without interfering with PWM functionality; use of 12 to 23 motors will disable PWM on pins 11 and 12.'