PCB mill for under $10

pcb mill built from garbage using basic hand tools and little money

Similar projects worth following
A gradually improving attempt to make a useful pcb mill out of a printer and other assorted garbage, with a minimal budget and no fancy tools. It works!, but let's see how much better it can be.

NOTE: This project is gradually improving. It is fully functional at this point, but it could be better.

It started as a pen plotter based on the entrails of a printer. It uses a pen to draw paths from a vector graphics file(SVG file). I wanted to make it do something that I couldn't do by hand, so I fed it a complicated image, a pcb layout. I then thought "Why can't I replace the pen with a small router and make something truly useful?" So I'm setting out to do just that.

There are numerous DIY pcb mills out there, but their router bits alone cost more than the planned budget of this project. It's not that I can't afford it, I just want to see if this is possible. I'm open to ideas and criticism, so let me know what you think.

  • 1 × Printer skeleton from a long dead Epson printer
  • 1 × TD62003AP darlington array for the z-axis motor
  • 1 × Motor driver circuitry from the same printer as the skeleton
  • 1 × stepper motor 4-winding unipolar 12V, for z-axis
  • 1 × DC motor - 12V for spinning the bit

View all 11 components

  • Some problems and limitations

    shlonkin05/06/2014 at 05:48 7 comments

    Although this mill has produced some good results, it has also made some garbage. It would be naive of me to expect this mix of dumpster parts to perform as well or reliably as a proper mill. I don't want to make this sound too discouraging, but I'll try to describe some of the weak points of this project.

    The X and Y axes behave exactly as they did in the printer. One motor moves the print head along a shaft using a toothed belt, while the other turns a roller that moves the object via friction. I have not had any real problems with the print head axis, but the paper axis is not as reliable. There were no problems when I was simply drawing on nice, flat paper. When milling, however, I produce lots of chips, dust and bumps in the surface. Usually these are able to go through the rollers just fine, but sometimes something gets caught and the board slips slightly. Unfortunately, even a slight shift can completely mess up the result. Here is a picture of a pcb for which there was a little slip that caused the drilled holes to be off. As a result, this pcb is no longer functional.

    I also had a problem with friction wearing out the plastic "bearing" that guides the bit. It is not actually a bearing, but simply a tight hole in the plastic base of the Z-axis. While milling parts for the stargate project, the mill had to work for rather long periods of time. After a while I noticed that the bit had enlarged the hole in the plastic. It probably melted slightly from friction. I started applying a little oil each time I use it, but the enlarged hole has thrown the precision way off. Of course this could be fixed by replacing the plastic part and remembering to oil it.

    A third problem is with cut depth. At this point I have to calibrate the cut depth each time by eye. I've looked at zeroing methods used on other designs, but they would not work here due to slop in the Z-axis. I'm usually able to eyeball a reasonable depth, but sometimes it is just a little too shallow, causing poor electrical isolation, or too deep, causing too much loading on the bit that results in poor precision.

    This project has been very educational and a ton of fun. I'm pleased with the way it has turned out, considering the cost and parts used. But with these problems, pcb production has been a long and wasteful process. I'm looking for an alternative and these are some of the options I'm looking at:

    • A properly designed and funded mill.
    • Chemical etching, which I am trying to avoid.
    • Buying them from a fab house. This gives the best result, but lacks fun, education and the feeling of hacking.
    • An entirely new experimental method. This is by far the most difficult and educational way. If I can do it, maybe I'll enter it in the hackaday contest.

    Do you have any other ideas?

  • A new use and big software updates

    shlonkin04/01/2014 at 14:35 0 comments

    It is always satisfying to find more uses for projects. I guess that's because so many of them just end up on a shelf collecting dust, not that that will likely happen to this tool.

    I am working on a stargate for the sci-fi contest (shameless plug for our entry) and was faced with the task of carving lots of tiny details into thin, flat plastic. What an ideal task for this mill. I drew up some svg images of the stargate details and tried milling them into some 1.2mm polypropylene sheet. Here are some of the results.

    It was a great success. It also led to several significant software changes listed below.

    • Cut depth is adjustable on the fly via the processing sketch.
    • All important parameters on the controller can be set via processing.
    • The math was rewritten to solve some accuracy bugs and be more efficient.

    The updated code is in the usual places:

  • Accuracy improvement and drilling capability

    shlonkin03/28/2014 at 00:19 2 comments

    I was not very impressed with the sloppyness, so I decided to redesign the Z-axis to reduce lateral play in the bit. I also thought it would be great if I could drill holes at the same time. I spent another $2 and got some new threded rod and a 0.8mm bit designed for a hand held router(dremel type thing).

    The bit now travels through a snug, but not tight, hole in two layers of 5mm HDPE. Yes, that would be the cutting board again. This takes the side loading off of the motor and holds the bit much more steadily.

    The new bit is much longer and needs more travel for drilling, so I lengthened the z-axis with some new threaded rod. Other than the new bit, new plate with hole for the bit, and new threaded rod, the hardware is pretty much the same.

    The software needed some upgrades to handle drilling. Since there is no single point object in the SVG language, I just made tiny line segments with length below some threshold value. The code interprets these tiny segments as drilling locations and sends a drill command to the arduino. The updated code is here:

    SVGMill.ino - the arduino code

    SVGReader2.pde - the processing code

    And here is the result. I made the pcb a bit more traditional in style this time. The result is still far from perfect, and there is one trace that is just barely surviving and probably needs a good solder coat, but it is far more precise than the last version. Oh, and it has holes automatically drilled. That's a huge improvement. First is the ideal image, then the actual result.

  • First pcb, code uploaded

    shlonkin03/17/2014 at 04:50 1 comment

    The first real pcb made with the mill is for a tiny robot. It includes such milling challenges as 0603 smd resistors and SOT-23 transistors, as well as a narrow trace running between two 2.45mm pitch holes with pads.

    As intended, this shows the limits of precision with this tool. It is certainly far from perfect, and there are some almost fatal bits of sloppyness, but the board is perfectly functional. All of the scratches and cuts came from trying to cut the board out from a larger piece and from running a small screwdriver along the cuts to clear debris. I quickly tested for continuity between all neighboring parts, but everything is properly isolated.

    First, here is the intended pattern which was made in Inkscape after laying things out in Eagle.

    And here is the result

    Also, I have uploaded the Arduino code here. It is very similar to the code for the plotter, but altered to work with the new z-axis and such.

    From here I would like to find a way to improve precision, but I doubt it will get a lot better. That's OK. This is functional and thus much better than nothing. On the other hand, I might do as well by drawing the pattern in ink and then cutting it by hand with a dremel. But where's the fun in that.

    Side note: This is a good x,y platform for thin, flat objects that don't impose large side loads. I'm thinking cnc glass engraving, laser etching, ... any other ideas?

  • Successful copper cuts

    shlonkin03/14/2014 at 00:03 0 comments

    Here it is:

    Not perfect, of course, but considering the quality and cost of the tool I am completely satisfied with this result. This precision should be plenty for the through-hole and larger smd circuits I build. I am overjoyed that I finally have a chemical free way to make pcbs at home.

    Thanks to the people who gave me feedback and followed this project. It's not over yet, though. I still need to finalize schematics and clean the code before I post them here, but that will come in the next few days I hope. Also, I need to produce an actual pcb. I'm thinking a small celebratory robot.

  • New z-axis, first test cut

    shlonkin03/11/2014 at 06:40 3 comments

    Before you get too excited, that first cut was just in dense cardboard, not the real thing. But we'll get to that shortly.

    As I mentioned before, I really needed a new z-axis design, so I went to the place where I can really concentrate and piece things together in my mind, the hardware store. I eventually decided on the following:

    I think the picture is pretty self explanatory, but I'll try to describe it. Note that everything is temporarily tacked together with hot glue. The idea is that the final device will be held together with a much more permanent and strong adhesive, but you know, sometimes I get lazy and the hot glue stays if it works. The top motor is a 7.5degree/step, 4-winding, unipolar stepper that I probably got from a fax machine. It is coupled via a 3mm screw and long nut to the cutting motor. Both of these run on 12V. 

    The bottom motor is snugly fixed between four bushings that ride up and down 6mm bolts. I was really careful with positioning, so there is almost no lateral play in the motor, and the bushings slide with ease.

    The white structure is made from a cutting board pulled out of the garbage. I love working with that stuff. If you ever find such a chunk of plastic, don't pass it up.

    The stepper is driven with a convenient darlington array with built in clamping diodes. I don't remember what I pulled that out of, but it was a lucky find. Here is the updated controller (I'll post schematics once they are finalized):

    Notice that I have now switched to a stand alone microcontroller, but it still makes use of Arduino. The smaller chip is the darlington array.

    What is the cost of this new z-axis? The only things I had to buy were some of the screws, nuts and bushings. It came to 200 yen (about $2).

    And here it is in place:

    And finally, the part you've all been waiting for. I just had to give it a test drive to see what happens, so I stuck some dense cardboard in it and cut a little 1cm square thing. Everything worked smoothly and the result looks great. Now if i can get a similar result on an actual pcb I will be filled with joy.

  • test fitting and redirection

    shlonkin03/08/2014 at 06:16 0 comments

    Before you glance at the pictures and laugh at my poor engineering skills, read the log.

    I trimmed several bits of plastic off the print head carriage , made an adapter out of a piece of plastic cutting board from the garbage, and tacked everything together with a little hot glue to test the fit. It all went together well, and you can see that the rollers nicely accept a 1.6mm protoboard, even with the blue plastic backing sheet.

    But then I took a look at what I had built and started pushing things around. I started having doubts. There is a little too much slop and I don't know how well the z-axis motor and gear set will perform. It works perfectly for moving a pen across some paper, but there will be significant forces on the bit.

    It's time to rethink this part. I am currently pondering some other designs. A bolt attached to a stepper and a long nut attached to the cutting motor would give me the strength and z-axis precision I need. How about a piece of PVC slightly sanded and lubed sliding inside a PVC coupler, with the motor glued in the moving piece and the other held rigid. That would take care of lateral forces. I can think of a lot of other setups that may work better, but I'm sticking to minimal money and no fancy tools.

    As always, tell me what you think of these ideas and share your own ideas.

  • Bit modification and tests

    shlonkin03/05/2014 at 01:12 0 comments

    I started with a 2mm cheap drill bit and turned it into something a little more appropriate. The only tool I used for this was an angle grinder with a cutoff wheel. I intended to use a small file to finish it, but the angle grinder did such a nice job, I didn't bother.

    First I shortened it to about 15mm in length. Then I carefully spun the bit between my fingers while holding it against the wheel at an angle. If you try this, be sure to wear gloves since your fingers are so close to the spinning death wheel(I don't have to mention eye protection, right? That one's obvious I hope). Anyway, that gave me the taper and the result looked similar to the original bit end. I was planning on a steeper taper, but I stopped at this point. Then I stuck the bit in a vice and very carefully gave it a gentle touch with the grinder to shape the flutes(Is that what they're called?) into something that would be better for this purpose. I think. I'm not an expert. here are some pictures:

    The finished bit

    Compared to the original bit end.

    Attached to the motor.

    Of course all of this work would be for nothing if it doesn't do the job. To test it I found a junk pcb with a wide area of copper. Holding the spinning motor carefully in my hands, I tried to cut a small line. The result looks sloppy because I was just holding the motor in my shaky hands while trying to maintain a consistent depth. It works! It cuts right through the copper and into the substrate without noticeable strain on the motor.

  • Initial offering - functional pen plotter

    shlonkin03/04/2014 at 02:00 3 comments

    This plotter was actually a project from years ago and the details are documented on my blog here:

    It's capable of fairly precise drawing. Certainly precise enough for a simple pcb. The z-axis, on the other hand, is just a dc motor that I pulse on for a few hundred ms. I may need more precise control for milling, so I might swap it for a similar dvd player part that uses a stepper motor. But I've been wondering, since I'm only working with one type of material with consistent thickness, and I'm only trying to mill off a very thin layer of copper, I really only need two z-axis positions: up and down. The up position doesn't even need to be precise at all. I could, perhaps, just set a tightly adjustable stop for the down position and run the tool down until it hits the stop. What do you think?

    The next thought is the spindle and bit. I have a whole box full of DC motors from various junk. I picked out a 12V one that spins quickly with decent torque. I even had a little coupler, a sleeve with two set screws, that snugly fits the shaft and a 2mm drill bit. I tried it out by drilling some plastic. It works as long as I don't put a ton of pressure on it. Of course a drill bit is far too long and not designed for this sort of thing. I have an angle grinder and files. Could I chop the bit down to a short piece and carefully shape the end into about a 60 degree taper? I know the metal quality will be a significant factor, but it doesn't hurt to experiment with dollar store drill bits.

    Oh, I had another idea. Rather than a milling bit, how about an abrasive "diamond" bit with a tiny ball end. I've seen those in the dollar store too. If I mounted it at an angle, it could grind away the copper. Hmm... It doesn't sound too precise, but it's an idea.

View all 9 project logs

Enjoy this project?



Mitchell Lowther wrote 08/16/2014 at 20:29 point
For the stabilization of the drill bit, I recommend a small bearing fitted into a small wooden piece/panel (instead of the small white plastic you mention here:

To prevent the outer rim of the bearing from spinning, with a sander, dremel or file, flatten one, two or four sides (not entirely) enough so that a small set-screw or bolt can be used to secure it through the side of the wooden block. If you wish to skip the bolts altogether, then level the bearing(s) as indicated and cut a small square in the center of the thin wooden panel the exact size of the outer shape of the squared or altered bearing. The flat sides will not spin as the hole is not round in the wood. This will prevent it from spinning on the circumference of the bearing yet will allow the internal ring to still spin nicely ... securing the bit from wobble. It will also allow it to gain strength to resist lateral movement when cutting.

I have a vinyl cutter (nothing fancy at all) and last night I disassembled it to maintain the moving pieces, replace nylon consumables and lubricate bearings. I saw some cool things they've done with bearings to secure rotating shafts and drive mechanisms while also providing the stability needed to ensure accurate cutting.

Hope this helps... The bearings I speak of come in various sizes and can be gotten online fairly cheaply. I would recommend a local supplier though since you will want to try it out on the bit(s) shaft first.

Neat project... Love it. All the best to you.

  Are you sure? yes | no

shlonkin wrote 08/17/2014 at 04:13 point
Thanks. I wanted to do just what you suggest, but I was having trouble sourcing a bearing with a usable size hole, so I settled for the tight fitting plastic hole. I think the bearing idea would really improve things as long as the hole and bit size were just right. Of course this would be possible if I were willing to break the 10 dollar target budget.

  Are you sure? yes | no

andyhull wrote 07/26/2014 at 23:24 point
Cheap drill bits... try ...
.. when I was in my teens, making PCBs I used to ask the local dentist for them... used, but autoclaved... probably all sorts of healh and safety law prohibits that these days.

  Are you sure? yes | no

Paulo Castro wrote 07/25/2014 at 14:35 point
It's a nice project, but PCB machining is not the best option for making circuit boards. I have a big CNC mill and the accuracy it`s not a the real problem. PCB boards are not uniform, the copper thickness is variable. It's almost impossible to make smooth thin paths.
After giving up, tried chemical etching and it was faster and easier.

  Are you sure? yes | no

shlonkin wrote 07/25/2014 at 22:43 point
Yeah. Chemical etching is a good way to do it. Coincidentally, this machine is actually well suited to boards that are slightly not uniform because the cut depth is not so rigidly set. It depends somewhat on the force of the bit on the board. Anyway, It's fun to try something different. It's edumacational too.

  Are you sure? yes | no

tamberg wrote 07/11/2014 at 21:46 point
Great project. Reminds me of Woelab's W.Afate 3D printer made from trash that was on display at Fab10 ( and

  Are you sure? yes | no

Jibmo wrote 07/06/2014 at 23:28 point
this website has some cheap used but apparently still good pcb router/drill bits:
never ordered from there but I think I may have found the link somewhere else here on hackaday.

  Are you sure? yes | no

shlonkin wrote 07/07/2014 at 10:25 point
Never seen that site before. Thanks for the link.

  Are you sure? yes | no

samern wrote 07/05/2014 at 18:51 point
Deburring might be resolved if you could mount something behind your surface to polish the surface so that as you move forward, you remove the burrs. A vacuum or blower mounted on the same arm can keep the debris to a minimum (I would vacuum instead of blow because this way you eliminate blown parts from just being redistributed somewhere else on the surface). Of course a 'polishing' add-on like this would need its own motor and only address surface burrs.

  Are you sure? yes | no

shlonkin wrote 07/07/2014 at 10:24 point
hmm. That would probably work. I doubt I'll put that much more effort into it, but thanks for the idea.

  Are you sure? yes | no

kris wrote 07/03/2014 at 00:18 point
What you think, to use this hack diferent way... there is a paint for repairing heating on car windshields.
Maybe it will be good idea to print pcb ?
Problem is in resistance of paint, in heating it is ok but not on pcb...

got an idea....
maby "printing" with glue all of the drawing, and then on the paths pours a copper powder.
or maybe high amperage short circuit pulses can make little holes in copper.
Two electrodes close to each other, completed with a mechanical pencil graphite in order to prevent the electrodes from welding

  Are you sure? yes | no

kris wrote 07/03/2014 at 00:31 point
Instead of a drill, you can use a cutter to a Dremel, which ends with ball serrated like a file.

  Are you sure? yes | no

Frenchcanadianflyfishing wrote 06/27/2014 at 09:50 point
A proper cutting tool would go a long way in improving not only the cut appearance, but would leave less burr and most likely would reduce side loading. But where to get them cheap, cheap, cheap... I wish I knew. What about experimenting with the drill bit cutting angles?

  Are you sure? yes | no

shlonkin wrote 06/27/2014 at 12:20 point
That's the first thing I would invest in if I really wanted to improve this tool. I can see the cut quality degrading as the bit wears. I can sharpen it and play with angles, but this is a 0.8mm bit being shaped with an angle grinder. I'm amazed it came out as well as it did.
Thanks for the input.

  Are you sure? yes | no

regiscruzbr wrote 06/27/2014 at 01:16 point
An authentic hack...

  Are you sure? yes | no

Deadbot1 wrote 06/20/2014 at 21:06 point
Have you considered either a blower to sweep away debris or a vacum to suck them up and prevent the chips from getting to the rollers?

  Are you sure? yes | no

shlonkin wrote 06/21/2014 at 13:07 point
That would help with the loose debris. I also had issues with burrs around the cuts. I might try sticking a vacuum near it next time I get around to using it.

  Are you sure? yes | no

vishnubob wrote 05/26/2014 at 22:11 point
Hi, great project. Your results look really promising. I was thinking, have you thought about swapping in a fine tipped sharpie in substitution for the router, and electro-eteching the results?

  Are you sure? yes | no

shlonkin wrote 05/26/2014 at 23:09 point
Electro-etching is something I want to try, but do you think ink from a marker would be a sufficient insulator? Have you seen anyone try it? Maybe I'll have to experiment.

  Are you sure? yes | no

laith.tariq wrote 05/08/2014 at 10:47 point
i salvaged 6 axis from dead inkjet printers from different brands i am trying to operate though i wonder if we can hack their control boards to control the new axis for say a 3d printer from junk printers?!

  Are you sure? yes | no

shlonkin wrote 05/08/2014 at 12:28 point
If you have the control boards it is easy to find the motor driving circuits. Then you need to find a datasheet for the driver ICs and solder some wires in the right spots. If you are trying to hack the controllers on the boards to do what you want, that is A LOT more work and probably not worth the time it would take.

The useful parts would be motors, precision rods and bushings, belts and pulleys, and the motor driver circuits. If you get something working, let us know.

  Are you sure? yes | no

CaptainSerious wrote 03/13/2014 at 22:05 point
This is a great project. I am very interested in watching it progress. I like the new z-axis design for it's simplicity and small size. Having milled my own boards I can say that any looseness in the spindle or backlash in the xy portion will result in poor boards. The z-axis looks like it could be a little loose but your cardboard test cut looks surprisingly good.

Keep up the good work.

  Are you sure? yes | no

Androiders wrote 03/04/2014 at 09:31 point
Love the idea! :)
One thing struck me though; Do you need to use a router to "cut" (mill?) the pcb? Couldnt you use a pen which is uv-resistant and use pcb sheets with uv-layers?

  Are you sure? yes | no

shlonkin wrote 03/04/2014 at 13:13 point
If I were going to do some chemical etching, yes I could probably use ink in that way. In that case it would be much simpler to just keep the printer as a functioning printer and modify it to accept the thick sheets.
I'm trying to avoid the chemical method, though. Milling seems like a good alternative.

  Are you sure? yes | no

Metalnat wrote 03/04/2014 at 09:10 point
are you currently moving you medium between the printers rolling system? and if so, would that be part of long term design?

  Are you sure? yes | no

shlonkin wrote 03/04/2014 at 13:23 point
Yes, I am. The rollers are spring loaded and just happen to easily accommodate a 1.6mm board without too much pressure. I imagine not every printer would work that well, but if it works here, I see no reason to change it. I may have to be careful about the cuttings getting between the rollers, but I'll deal with that hurdle when I get a bit closer to it.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates