The Cherry 3D printer I’m building is an awesome design that I like a lot. However, the mechanics for the Z-axis is something I have less love for and has given me quite a headache.
Unlike the X and Y axes the Z-axis is driven by two separate stepper motors. The Z-axis needs to move up and down on the same speed. This seems asking for problems to me because if one of the motors doesn’t have enough torque for some reason, e.g. because it is blocked, you have a big problem. Unless you happen to notice and stop it in time it will basically tear itself apart.
It somehow seems to be perfectly accepted to drive an axis using two stepper motors in 3D printing land. The controller that drives the whole thing even has a dual output for the Z-axis, allowing you to drive both steppers using a single driver.
Controller
Below you can see the RAMPS 1.4 board that is the controller board for the printer. It sits on top of Arduino 2560 to drive the motors, extruder, heated bed and LCD display for a 3D printer or similar device. I may even be forgetting some other features it has, but that basically sums it up.
Notice the five headers marked (E0, E1, X, Y, Z) which are the outputs for the stepper motors. Each stepper motor is driven by a so-called driver module that is situated close to each output. The driver modules are the little modules with the heatsink on top of them.
Every header is for a four-wired connector that can be connected to a single stepper motor, except the one for the Z-axis which supports connecting two stepper motors. So, it seems perfectly normal to hook up two stepper drivers on a single driver when it comes to the Z-axis. I have also read about other designs doing the same for other axes.
I had the X and Y axis working in no-time, but the Z-axis I never really got to work like intended. I had most of the printer done and it seemed it just wouldn’t have enough torque to make it work.
Finding the Culprit
My first hunch was there would be something wrong mechanically. If the motors just didn’t have enough torque because it required too much force to move along the axis on either side of the Z-axis that would be a very valid reason for it to fail. I didn’t see any mechanical reason so my next hunch was a power problem of sorts.
The motor drivers have a little potentiometer on them that allow you to control how much current can run through the stepper, so I thought cranking this up might be a solution, but alas it did not work. One of the people of the 3D printing club that helps me to make this printer even tried hooking up only the stepper motors without them driving anything mechanical and the problem would be the same. Clearly wasn’t a mechanical problem. It must be a power problem of sorts.
Solving the Problem
I thought about what it means to hook up two steppers on one driver. Basically, the steppers are driven in parallel. What would happen if I would connect them in series instead of parallel? I created this little prototype board that would allow me to connect the motors in series instead of in parallel. I would hook this up to a single output for the Z-axis and then have it connect two steppers in series instead of parallel, following this wiring schema.
It seemed to do the trick! That is, until I tested it extensively to find that it wasn’t reliable enough and therefore one in the category of: close, but no sigar! It would at least be able to drive two motors unlike in parallel, but it would still fail occasionally.
I tried for quite a while to figure out wat was going on, but I got fed up along the way. The whole thing that bugged me is that others at the 3D printer club supporting me kept claiming that they had the same controller, drivers and even motors and it would just work. Not for me. So it was time for a different solution.
I gave up on the problem and decided that at least I should be able to drive the two steppers with a separate output for each. There are two outputs for extruders and I only have one extruders, so I could live with sacrificing this extra output for the second Z-axis stepper. The Marlin firmware has support for this so I decided to go with that.
Later on when other people started finishing their construction of the Cherry 3D some would have the exact same problem, while for other it would just work. Everyone who knew anything was scratching their heads. The best guess is that I and a few other are so unlucky to have a production problem somehow. It could be anything from the Arduino to the Ramps, the drivers or the steppers.