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?



Paul McClay wrote 06/19/2022 at 08:31 point

Much respect for working this project far enough along to actually make stuff with it.

Since your last log entry asks for ideas: do you have any continuing interest in this theme?

  Are you sure? yes | no

michimartini wrote 05/12/2022 at 22:23 point

I my opinion you would fare better if you just coated the pcb with a bold marker and used a needle to clear the parts you want to etch away. I think that's less messy than dealing with all that dust. And it's easier to precisely move a small needle than that violently vibrating spindle assembly. That is an idea i've been mulling over for some years now. There even was an attempt once at commercializing that idea, but that led to nothing. 

  Are you sure? yes | no

ElectronicBytes wrote 03/23/2018 at 22:57 point

I recognized the stepper motor alignment and metal casing to be in the same position as the torn-apart printer that I have in my closet!

This is definitely a project I'll be taking on later.

  Are you sure? yes | no

Rob wrote 12/10/2016 at 20:42 point

You might try epoxying a washer to the cutting board to reduce wear caused by the bit.  Or if you can find a metal grommet the right size, you could press the barrel half through the cutting board.  Both of these would cause metal on metal friction so you would want to lube prior (and maybe during) each use.  Great project!

  Are you sure? yes | no

Kees Hessels wrote 08/07/2016 at 05:06 point

You cold replace your motor with an 150 mw uv laser (blu ray diode) and use photosensitive pcb , i think that would give you higher quality, and less parts that can wear out or vibrate and stuff.

  Are you sure? yes | no

Kees Hessels wrote 08/07/2016 at 05:06 point

But awesome project by any means :)

  Are you sure? yes | no

shlonkin wrote 08/07/2016 at 11:54 point

Thanks. I agree that a laser would be much more suitable for this machine than a cutter. I actually put a CD burner laser on it and burned some pictures on paper. It worked great and had very fine resolution. Too bad I didn't take pictures.

  Are you sure? yes | no

Jim wrote 12/04/2016 at 09:18 point

Good idea!

  Are you sure? yes | no

Scott wrote 06/29/2016 at 21:45 point

maybe instead of using the paper feed for a axis replace it with another printer head assembly. But very awesome!

  Are you sure? yes | no

de37421 wrote 03/05/2016 at 18:03 point

Taking another look at your cut, you have a backlash problem.  You can see that in the cuts that cause the bit to approach the target line from different directions as in the area of the 4 holes on the left mid way up.  You can measure backlash.  You'll either need to fix the backlash in software, hardware, or increase the size of the pattern so the amount of backlash doesn't cause the traces to contact one another.  Best is to take care of the hardware making it as backlash free as possible.  Backlash will make a routed circle oval in shape.  The source of the backlash is usually based the way threads are made.  There must be a certain amount of play or every nut wouldn't fit every bolt.  This looseness is usually not a problem because nuts are tightened which takes up the slack.  In your case you don't tighten the nuts, you let them rattle along the threaded rod.  You need to provide a system that takes out the slack as much as possible or you need to use it to route patterns where the backlash is less than the allowable error in the pattern.

You also have a problem with lack of rigidity causing the bit to migrate into and follow a previous cut as in the cut at the top.  If you are using the motor shaft as the holder for the cutter,  you'll probably need to more rigidly confine the cutter. You'll need a bearing of some sort so the cutter is held in the right position and cannot wander.

There's another problem with the above.  As the cutter encounters different forces, the slackness in the system allows the cutter to shift so instead of taking a tiny consistent bite each time, sometimes it takes a little bite and sometimes it takes a much bigger bite.  That causes the cutter to encounter different forces as it cuts and it contributes to wobble.  It also affects the speed of the cutter.  In extreme cases it can cause the cutter to bind.

I hope all this is helpful.  It's an interesting project.

  Are you sure? yes | no

shlonkin wrote 03/06/2016 at 02:31 point

Thank you for the advice. I don't have any plans to make major improvements to this project, but the information is useful for anyone who wants to try it. Some time I hope to make a better mill with a larger budget, but this was just a fun, educational project.

  Are you sure? yes | no

de37421 wrote 03/05/2016 at 17:42 point

Chip control: Vacuum or blow chips as you cut.  If blowing, a fan from a copier (long squirrel cage fan, 24V but most will run at 12V) produces a lot of air. If vacuuming, you'll likely need a collar around the cutter.

Lack of precision: I'd try the cut in several passes instead of just the one.  That will decrease the load on the milling bit.  With less load, hopefully there'll be less error.  More passes should average the error.  If it is backlash in the system, you'll need to try to eliminate it. If it is backlash from threads, I've had good luck passing threaded rods through a die which cleans them up. Then if using standard nuts, run a tap through them, you can slit them and tighten, you can cut them in half and use a clamp type arrangement to eliminate play, or you can use a medium strength threadlocker, to bed the inside of the nut.  Repeatedly running the rod back and forth will make it turn fairly easily.  Other mechanisms, cut nuts from self lubricating plastic (UHMW polyethylene or use "Delrin").  Finally you can use two plastic nuts on the threaded bar, using counterpressure between the nuts to take up the slack.

  Are you sure? yes | no

Eric Hertz wrote 03/06/2016 at 07:40 point

Ha slitting nuts then compressing... great idea!

  Are you sure? yes | no

de37421 wrote 03/06/2016 at 15:50 point

Thanks.  It is also an option for cutting threaded rod.  Slitting two nuts then clamping the nuts in a vise so the nuts are compressed both holds the rod securely and protects the threads.  Sometimes rod held between hardwood blocks in a vise will turn with strong rotational torque as in cleaning up threads with a die, but the compressed slitted nuts don't allow the rod to turn.  While on the subject, a threaded rod connector (just a long nut) can be cut in half lengthways with a hack saw, then can be used as a ghetto micrometer.  A 1/4-20 threaded rod with a nut can be indexed to better than 1/12 turn so 1/240 inch, or 0.004 inch.  I sometimes use one on a jig for my table saw to precisely set the fence, which isn't bad for under $5 in parts.

  Are you sure? yes | no

jignesh.s.patel wrote 02/20/2016 at 07:36 point

sir it's good use of old printer. but i want to know how how it placing bit on position. how you getting that details from gerber.

  Are you sure? yes | no

shlonkin wrote 02/20/2016 at 08:24 point

There is no gerber. I'm using .svg images and converting them to (x,y) coordinates with my own software. You can find all of that info and software in the project logs.

  Are you sure? yes | no

jignesh.s.patel wrote 02/21/2016 at 07:54 point

ok thanks good work 

  Are you sure? yes | no

gordonscott2012 wrote 01/30/2016 at 00:48 point

As router bits are expensive, use dental bits discarded by dentists and/or, available online as dirt cheap prices!

  Are you sure? yes | no

issouf wrote 01/23/2016 at 00:33 point

hello i want  help for this project ,let me know what you need to finalize the project thk

  Are you sure? yes | no

John wrote 01/19/2016 at 23:23 point

If debris is an answer, perhaps inverting the structure would help? Gravity can sometimes be helpful. Also, focus a spray of air at the bit's working position might help.

  Are you sure? yes | no

shlonkin wrote 01/20/2016 at 13:45 point

That's a good idea. Inverting the whole thing would actually help a couple of problems like debris and vertical play in the Z-axis. Thanks.

  Are you sure? yes | no

playstorestolemyprivacy wrote 09/01/2015 at 01:23 point

you've inspired me to use an old printer for same project. if debris is still an issue I was thinking a battery powered solder pump would suck up or even cheaper a $6 12v tire pump modified to blow debris away from rollers/track hooked up to your desktop power supply. Also maybe rubberbands sized to fit around PCB/work piece & track rollers could help in keeping work piece movement to a minimum while respecting the monetary limitations you've set for this awesome project (maybe not:). Thank you for posting this project!

  Are you sure? yes | no

shlonkin wrote 09/01/2015 at 12:43 point

Thanks. I hope you can build something cool and post your own project. The pump idea might help. I've heard lots of good tips here, but I've kind of set this project aside to focus on new ones. If I ever need to use this to make pcbs again I'll try improving it a bit.

  Are you sure? yes | no

goldenshuttle wrote 08/20/2015 at 10:13 point

is it possible to replace the drilling bit with a burning laser? this cancels the need for motor at the writing/milling will also avoid mechanical slippage you were talking about..I am not good in code writing otherwise I would give it a run...

  Are you sure? yes | no

shlonkin wrote 08/20/2015 at 13:56 point

Yes, you could do that and it would make things much easier. Unfortunately such a laser would cost a whole lot more than I'm willing to spend on this. You should try it. The code would be much simpler since you wouldn't need to think about driving a Z-axis stepper.

  Are you sure? yes | no

goldenshuttle wrote 04/29/2015 at 16:45 point

very impressive work. I have two printer-scanner in great condition. I just don t wanna spend money on the ink. So I guess building this is great. Yet I do not think title of 10$ is true. it is more than that.

  Are you sure? yes | no

Emil wrote 02/07/2015 at 18:24 point

Very interesting, can you give me a little help so i can build one my self.

  Are you sure? yes | no

shlonkin wrote 02/08/2015 at 11:42 point

Perhaps. If you have any questions, I'd be happy to try answering them.

  Are you sure? yes | no

axf33480 wrote 01/20/2015 at 23:18 point

superbe proroger trais baux travaille

  Are you sure? yes | no

Eric Hertz wrote 01/12/2015 at 02:44 point

Wow, I'm really impressed with the precision you're getting with this setup. The z-axis took me quite a while to figure-out, but now that I get it... it's awesome. I think I might even be able to build that with the tools and junk I've got sitting-around.

Sounds like you've resolved most of the slippage and vertical-alignment problems, but I'm sure you're plenty-apt to figure out some fix... just stand in a hardware-store for a while :) And let us know when you do!

I hope you'll keep this project up, even if you decide to use another method for your PCB designs.

  Are you sure? yes | no

shlonkin wrote 01/12/2015 at 06:02 point

Thanks for the encouraging words. Sadly I've been taking an extended leave from hacking due to family and work issues, but I'll be back. I will.

  Are you sure? yes | no

Hacker404 wrote 12/29/2014 at 09:55 point

I think the low spindle motor speed to axis motor speed ratio is causing most of your problems. Using a bearing at the lower end of the bit and a proper "V" bit would ease most of this but ultimately you will either have to speed up the spindle or slow down the axises. A second pressure roller for the feed would also be a solution.

  Are you sure? yes | no

counter.culture wrote 12/23/2014 at 05:32 point

skull for re-purposing old tech. when the financial collapse and the zomb-pocalypse comes, you will be a four star general.

  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