Motor Controller Using the TLC5940 + H-Bridges

I have seen a number of mentions for using the TLC5940 to control motors but didn't see any actual projects. I am working on a robot that will drive many small motors so this seemed like a good way to get a large number of pins to control DC motors for a very reasonable price. (depending on your h-bridge and motor size of course.)

Here is the schematic showing a TLC5940NT controlling a single motor through a L293B H-Bridge using an external power supply.

My blog post for this project is here:

Please let me know if you see any problems with my design or schematic.

Like your schematic, what application did you draw it in jack

I used Omnigraffle for Mac. I put together a stencil file with the chips I have used. You can download the stencil here:

Just drop it in the stencils folder and it should pick it up the next time you start the app.

Nice! I've used the MM5451 + L298N to drive stepper motors and other people use my Lightuino + a P-type MOSFET to drive DC motors.

I'm guessing the advantage of the TLC5940 is that it does the PWM for you.

The disadvantage is cost (but its just a couple of bucks!) and more importantly I think that when you latch the new data in, it briefly drops all outputs. This issue is subtle and will not affect normal DC motors. However it would not be so good for steppers since they require a specific bit pattern to move the motor forward!

Why do you need the TLC chip as part of the design?

I have seen quite a few drivers with just the H-bridge and sometimes a diode to prevent the blowback current. What does the TLC chip get you that the Arduino can't already do (it can do the PWM for you already, no?)

I am looking at building my first circuit to drive some motors as well and looking at all the different methods.

Arduino has a limited number of PWM pins (and limited pins period) .. so when you want to "drive many small motors", you need many pins, specifically PWM to vary the DC motor speed.

Also, the arduino only has 256 steps of PWM control, where the TLC has 4096 steps.

The OP may chime in, but I think that covers the basics.

All good points, but in this design he uses 4 pins for just one motor. That is not saving pins.

Also, how can the Arduino drive those additional steps? Even if all 4 of those pins are separately doing PWM that is assigned to one motor (4 X 256) that is still only half of what the other chip is capable of doing so how do you get the benefit of those additional steps if the Aurduino can only recognize a fraction of the total?

I am not trying to slam the design or anything, just trying to understand it, this is the first design I have seen using that extra chip and trying to understand what using it gets you. I don't think it save you pins if you have to use 4 pins for a single motor.

Hej for the motor controller do you have eny code that i can test it with and good job very nice i dont think i had eny problem with it .

but good job.

@Intenzity, it is not my design, but the setup showing only one motor is for simplicity. It could run lots of motors with the extra pins and the TLCs can be daisy chained to control a ton of motors without using any more pins than the one motor. So naturally if you were only going to drive one motor, this would not be a design for you. However if you need to run lots of them .. this design seems great.

Hope that helps understand the design / benefits. Someone chime in if I am off base.

Hej thanks i am going to se more than one motor so that will work