3
\$\begingroup\$

During the last days I've been working on driving multiple stepper motors (28BYJ-48 – 5V) with SparkCore and Stepper.h arduino library. I'm trying to drive some stepper motors, but without having to move them at the same time. I mean, stepper1 moves 100 steps, once finished, stepper2 moves 30 steps, and so on.

In the explanation I'll use two steppers.

The point is that I have some doubts of how to do it using the less ICs and easier as possible.

Option 1 (it works)

The first try was using a CD54/74HC137 (3-to-8 Line Decoder Demultiplexer with address Latches) and a CD4508B ( CMOS Dual 4-Bit Latch).

Workflow:

Stepper.h library is configured to work with D0-D3 pins.

  • D0 to D3 pins are connected in series to both CD4508B input pins (dual latch).
  • The decoder enables or disables the input pins of CD4508B, in order to choose the stepper that I want to move.
  • In Stepper.cpp library, each time that sends an step, I enable the two strobes of the CD4508B.
  • The outputs of CD4508B are connected to ULN2003A IC (darlington transistor array) that will drive the stepper.

So, every CD4508B can drive 2 stepper motors. All CD4508B input ports recieve the same inputs and the same strobe (they are in series) and using the demultiplexer I enable/disable one or the other input port and I move one or the other stepper.

I've tried it and works perfect, but I think that it could be easier and could be done without CD4508B. So here is my second option.

Option 2

enter image description here

I'm thinking in connecting directly D0-D3 to both ULN2003A (or similiars) input in series and using the CD74HC237 demultiplexer enable/disable the ULN2003A.

The point is that ULN2003A has not enable/disable pin so I'm afraid it won't be so easy. I've found a darlington transistor array IC with a latch that could do it well: TLC59213

I've phoned some electronic shops and do not have it. They said it's a strange IC.

So, what to do you think is the best choice? I think that option2 could do the job, but the TLC59213 is not easy to find, perhaps another IC that could do it as well. Any suggestions will help.

Thanks.

\$\endgroup\$
  • \$\begingroup\$ I think the easiest choice would be to just use 4 different I/O pins and adapt the library. Most of the code will be exactly the same. All that is needed is to make it work with 2 (or more) stepper motors. Any reason you wouldn't want to take this route? \$\endgroup\$ – Justin Trzeciak May 4 '14 at 12:47
  • \$\begingroup\$ this question is related to the OP's similar question asked on May 4, and several comments and answers are given there : electronics.stackexchange.com/questions/109123/… \$\endgroup\$ – Marla May 26 '14 at 23:42
1
\$\begingroup\$

It's a lot simpler both in terms of circuitry and software if you use a dedicated stepper driver, eg. A4988 available in cheap bread-board friendly carriers. The A4988 has a proper H-bridge capable of up to 2A per coil and takes care of dead-timing and micro-stepping.

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

Use a mosfet to enable a uln. Use 7 pins to control 15 steppers motors with 22pins. 4 to count up, 3 to count down. (1 is shared). So you can only move motors 4 steps at a time. 7 pins plus 1 pin per motor. Each uln can only run 1 motor so you lose 3 Darlington arrays on a uln2003.

I'll do a YouTube video if you subscribe to my channel "theRainHarvester".

\$\endgroup\$
  • \$\begingroup\$ Welcome to EE.SE. From the "What kind of behavior is expected of users?" portion of the help page: "Avoid overt self-promotion. The community tends to vote down overt self-promotion and flag it as spam." This answer could be improved with a schematic. Or if you're going to do a video, do it and then post the link in the answer. If it's any good you might get a few extra subs, as opposed to getting down votes here. \$\endgroup\$ – Phil C Apr 25 '18 at 1:14

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.