I'll get straight to the question, if I use Nema 17 sized 12V 0.4A motors each with an A4988 driver, can those be used with a 74HC595 shift register?
I haven't found information on the driver and shift register being used together, only that shift register with LEDs or weaker steppers.
I've been trying to create a project that uses 16 stepper motors (3 pins each) and 16 solenoid valves (1 pin each). As the arduino mega does not have enough pins for that many motors I'm going to need to use a shift register. On each shift register I would run 2 steppers and 2 solenoids, and then use 8 shift registers (probably not stacked because I have enough pins to attach all 8 to the board)
This university project is opening and closing valves to 16 individual pressurised gas chambers to fill them throughout the night with a pump. A solenoid will quickly open and close the chamber while the stepper motor will turn a valve to securely lock off the chamber (so speed for the stepper is not important). I will be using the enable pin on the drivers as they do not need any holding torque and it will reduce power needed and only 1 stepper will be needed to operate at a time.
Ive tried using the BYJ48 but it sadly didn't have enough torque to turn the valve so I had to upgrade steppers and drivers.
If you have a better idea of how to run this many motors please feel free to let me know, so far this is the best idea I have gotten.
marcussavery:
Nevermind, I don't think there is a shift register that can handle >500mA... back to the drawing board
It seems you're misunderstanding what's going on. You don't need a 500ma shift register, that's what drivers are for. The S.R., if that's what you use, just controls the driver and the driver switches the higher motor/solenoid current - hence the name driver.
There are multiple ways to skin this cat. Since your Mega has 54 digital I/O you could do it with minimal external circuitry - depending on what the processor has to do besides run motors and solenoids. Use two of the outputs for step/direction. Sixteen inputs is a lot to drive directly from one output (fanout) but it may work well. If needed, you can split it into two sets of eight drivers with non-inverting buffers (74hc4050). Now you still have 52 I/O available to drive the individual controller enable inputs. Just enable the controller of the moment and manipulate step/direction as needed. If I/O gets tight it would be not a lot of trouble to implement the S.R. for the enables and/or the solenoids.
dougp:
Use two of the outputs for step/direction. Sixteen inputs is a lot to drive directly from one output but it may work well. If needed, you can split it into two sets of eight drivers with non-inverting buffers
So what your saying is connect all the step/dir pins together (2 pins total) and then connect each enable pin individually (16 pins) to the arduino? I had thought about that but wasn't sure if it would work that well. Ill make sure to try that thanks!
dougp:
If needed, you can split it into two sets of eight drivers with non-inverting buffers (74hc4050)
Okay now I understand that the buffers helps limit all of the inputs and makes the output much easier to handle for the controller. Another question now, I see that the 74HC4050 chip has 6 inputs and 6 outputs, how would the wiring look for "splitting it into two sets of eight drivers" if each driver has a dir and step pin.
Would I need 6 chips to handle all 32 inputs? And then join all 16 dir outputs after going through the buffer and the same with the 16 step outputs?