Relatively cheap CNC plotter, that is directly controlled with G-code via own CAM software in PC. This is part of my graduation project.

I've decided to construct flatbed pen plotter for my graduation project in October 2016. Time to think was enough.
The idea behind this creation is to print precise A4 drawings with nearly any pen: pencil, ball pen, marker pen, etc.
Flatbed plotter needs linear actuators in all 3 axes. First of all, I was thinking about belts. But they spinned out to be really expensive for my project. That’s why I thought that nothing more quicker to construct and accurate to move than the lead screw could help emphasize economic efficiency of installation. It's because searching for belts and cogs in our region is bit more challenging.
Since that time I understood which motors and drivers would be more expedient to acquire - 28BYJ-48 and PCB based on ULN2003A. Came to the conclusion that I very have to buy and test them. I learned that we also need to beware of untrusted manufacturers.

Power supply

I don’t too much prefer switching power supply (as from PC) because of its sizes, weight and electromagnetic influence. It is good for powering big creations, but not necessary for my small CNC plotter. Summarizing maximum currents for motors, use of portable 1 A power supply is enough, so I also can easily connect it to Arduino’s DC jack. Neat!

Why I chose 28BYJ-48 - 5V?

This unipolar stepper motor easily integrates into CNC machine - 5V is just fine with usual power supply.
28BYJ-48 consists of four coils, that should be controlled in order A-AB-B-BC-C-CD-D-DA or vice versa for counterclockwise rotation. This movement mode is called half-step, because shaft is magnetized by two phase after one, by one after two and so on.
Some research helped to find out maximum current for coils at fast speed - 200 mA, at stop - 250 mA. Let’s suppose that all four motors are stopped at the same time - 4 × 250 mA = 1 A. Usual power supply comes handy as ever. You can also stop powering motors when you don’t move them.
Some 28BYJ-48 motors have crappy reductor, because, you know - these cogs. 5 minutes of rotating showed that I have actually good reductor - number of steps per revolution on constant speed make exactly 360°. Maybe more hours of work will show real face of this monster.

Why I chose driver PCB based on ULN2003A?

First of all, what about hacking from unipolar to bipolar 28BYJ-48, as some people advise, by cutting middle copper connection leading from read wire under plastic cap? It's not the bad idea at all. You will get decent speedup! But it's out of motor's purpose - by the end, min. 3 H-bridge ICs (like the L293D or SN754410NE) will be required. There's also modern A4988 driver with H-bridge for microstepping.
The above boards are not as cheap as chips, because they have complicated switching systems used for driving 4-wire bipolar motors.
So, I avoided these tasks and just chose to keep all "as is" and brought PCBs based on ULN2003A. They cost me $0.88/each. But you might chose H-bridges and that’ll be cool.

Testing motors

At the moment, I have run my motors in 2 directions simultaneously. Every driver PCB converts 4 digital input signals to high-voltage high-current output for motor's coils. To control all 3 axes we use 12 digital pins on the controller. Interesting that Arduino Uno has 14 pins in total but 2 of them are connected for serial communication, so we can occupy exactly 12.
For axis X we need to synchronously move columns in the point where Y starts and in the point where it ends to compensate the pressure. So there are 2 stepper motors for axis X, each of which has separated driver board.
These PCBs have same input signals (from digital pins 2, 3, 4, 5). That's where breadboard can help make parallel connection. Universal breadboard also has a big deal for connections to ground and external voltage.
Each of Y and Z axes require only one stepper motor. Y uses digital pins 6, 7, 8, 9, Z - 10, 11, 12, 13. All digital sequences are generated by AccelStepper library. This one is pretty straight-forward in controlling any stepper motors. And one of the best features there is that it can generate signals for multiple motors at one time.

Installing lead screws

I think about using long nut as threaded bushing. Shaft of the motor has radius of 5 mm. It can get in M6 threaded hole and be fixed by two tiny (M3) screws by its chords. So be ready to make these threaded holes in the nut. Now when nut is fixed on the shaft, we spin M6 threaded rod in it.
But here I must stop, because we need to consider some of the preparatory operations, such as positioning a weight (that is being moved along axis), making railway and another fasteners on the base - one for motor, other for end support.
Work in progress…
Thanks for reading! I’m open for suggestions.