Introduction: 3D Printer PCB Etching


The goal of this ible is to show you how to go from concept to fully etched board using a 3D printer that has a plotting attachment. I will demonstrate this using a 2-sided pcb for my DIY power supply that I am slowly building from scratch.

If you need to convert your 3D printer into a plotter first, then check out the first part

Step 1: The General Idea

When etching PCB boards at home, there are 3 main methods. The first is to transfer some laser printer toner to the PCB from glossy paper. I have never had luck on this, and since toner and paper can make a difference, and each one of those costs 4x more than a decent size blank board, I have no interest in trying more paper and toner combinations.

The second method is to use special blank boards that can use UV light and developer. They require the developer, and a special copper clad board. Unfortunately, the double sided version is not available locally for me, and on amazon costs 5x the cost of a regular double sided board at my local store. Add to this the developer, and the huge cost of screwing up, and it's just not for me.

The third common way is to use a sharpie. The industrial strength sharpie, or sharpie pro, works best, but a regular old sharpie will work just fine. However, it can be difficult to get a nice result out of that.

So I will be combining the automation of mechanical printing with the reliability and low cost of using sharpies. I have been pondering using my 3d printer as a plotter for quite a while now, so this was a great excuse to go ahead and figure it out.

Step 2: Material

For this ible, you will need

  • A 3D printer. I am using a printrbot simple metal
  • A plotter accessory for your 3D printer
  • some 1/32th drill bit. They are fragile, so either get a multipack, or a quality carbide one
    • To use those, you need an incredibly stable hand, a drill press or drill stand. The drill stands start at about 1/3rd the price of a drill press and go up to the price of a starter drill press. Meanwhile, for not too much, you can get a starter drill press, which is a very useful tool to have in the shop. If you are tight on space, or still don't have the very basics, then pass on the drill press, but it makes a good first bench-tool.
  • copper clad boards
  • Ferric chloride
  • 99.9% isopropyl alcohol (rubbing alcohol will work too)
  • the Cura 15.4 software
    • if you can use another program to get the same settings, go for it, but the demo will be with Cura 15.4
    • Cura 2.X is the newer version of Cura, it was essentially rebuilt from scratch. It is supposed to have more features, but I have never used it so I stuck to what I know. I am sure it would work as well, but I just can't help with the menus
  • an EasyEDA account to design your circuit
  • the Sketchup software

All of these programs are free for non-commercial purposes.

Step 3: Design the Circuit

There are many software options, and if you have you own, go ahead. I will mention go over how I exported the design so that it can be used with Cura.

For double sided boards, the important part will be to add reference holes in the corners. They should be a few mm away from any of the components, and are an unavoidable overhead to ensure that everything is lined up properly. The holes should be 1/8 and will need a trace around them so that they get printed later on. At least two holes will be drilled out for coarse adjustments. At least one reference hole will only get a 1/32 hole drilled in the centre of it for precision adjustments. You should drill the 1/32 hole in the corner where the plotting starts. I added my reference points after realizing it was necessary through trial and error, hence why it is not in the diagram.

With your PCB design complete in EasyEDA, click on the folder -> export.

You will need a PDF version with your normal layers + the silkscreen, and you probably want to have the normal and mirrored images so you have everything on hand.

For the model, you will be exporting the file as an SVG. The top layer should be exported without the silkscreen, and WITHOUT being mirrored. The bottom layer should be exported MIRRORED. Luckily for us, if you get this wrong, we can rotate our models down the road in Sketchup or Cura. You will then need to convert these to DXF. To get the DXF files, run your SVGs through this website

Step 4: Clean the File for Slicing

You now have the DXF, which you can import into sketchup. When you import the DXF, make sure you click on options and change the units to inches, as that is the unit in which the EasyEDA exported the file.

It will likely be a little broken, and you will need to clean it up and re-make some of the outlines (in my case it tended to ignore some of the curved endings). With that done, raise the thickness of your design to 0.2mm (0.00787 inches) and export it as an STL. If after slicing your preview does not show any layers, you can increase it, I did have that happen once, for reasons still unknown.

Step 5: Plotter Parts

If you haven't yet done so, you will need to add the plotting accessories to your 3D printer. I attached the files here, but if you want more details about this, check out the post on turning the printer into a plotter over here. I will assume that you have the plotter parts installed and line up.

Step 6: Slicing Settings

Just as a recap, the basic slicer settings to use your printer as a plotter are the following. I recommend creating a new machine profile in cura specifically for slicing plots. This will help avoid mishaps (i.e. not changing the temp on the next print by accident). First go to File -> Machine settings and rename your current machine settings. Then go to Machine -> add new machine. You may want to rename this one as well.

The settings you have to change are the following

In the basic tab

  • set the temperature to 0
  • set the layer height to 0.2mm
  • set the shell thickness to 0.2mm
  • make sure enable retraction is on
  • turn off all supports

In the advanced tab

  • nozzle size to 1mm

In the expert menu, under the retraction section

  • minimum travel set to 0.01mm
  • enable combing : all
  • z hop when retracting : set to at least 3mm

If you have a heated print bed, make sure that is set to 0 as well. Pull the filament out from your extruder, and you are ready to start installing the parts you printed earlier.

We will also need to adjust the start Gcode, this will be done in the next step.

Step 7: Extra Start Gcode : Pause

We already had the basic code to plot from having turned the printer into a plotter (I will also get back to it later), but now we need to add new code to make this work on the thicker substrates. The first is a pause, to be able to position the substrate, and the second will be an adjusted elevation.

Since I use octoprint, I have access to a pause/resume button, but Cura is known to be a bit more finicky for this. Moreover, different printers have different firmware, and some support special pause commands while others don't.

All in all, you will have to figure out what works for you, but if you can, use M0. The RepRap for example supports M226 as a pause command. Worst case, all printers should support the G4 command, but then you have to specify the amount of time in milliseconds as in G4 600000 will pause for 10 minutes. If you are using G4, maybe putting in a few extra minutes is best to avoid any accidental resumes while you are working on the print bed. These machines won't stop for your fingers; better to have to go for a coffee than to hurt yourself or damage your printer. This wiki has a list of codes and compatible firmwares

Start by testing your pause before playing with offsets. In my case, with my octoprint and my printrbot simple metal, M0 works, so I add the following:

M0 ;pause to allow insertion of substrate, only works if your interface has a pause/resume button

Once you have a valid pause function, it is time to figure out your offset. Again different firmware will accept different codes.

Step 8: Extra Start Gcode : Offset

Once you have a valid pause function, it is time to figure out your offset. Again different firmware will accept different codes. The main options are G10, G52, G92, and M206. G92 is by far the most universal, but if that fails, you can look into the others. M206 is fairly widely compatible, and G10 and G52 are specific to a few firmware types and have different meanings for most printers.

Warning: If your probe goes over the copper board on only part of the measurements while calibrating, it will think your bed is slanted and everything will be messed up during the print. This is why I recommend the pause and insert method.

To use G92, you set the offset followed by a G1 command to move to this new position. From there, the print continues and essentially ignores that it was moved up.

G92 Z -1; changes the Z0 value up by 1mm (change to whatever value you need)

;adjust for substrate (0.8 mm = roughly 1/32 inch) to whatever height you may need

G1 Z0; moves the printing head up to the new value defined above

To get the correct offset, you can use G1, but to go up you will use positive values, meanwhile, with the G92, negative values will go up. This is because G1 acts by sending the probe to the coordinate (so G1 Z1 sends it to position 1), whereas G92 ads an operation to all movement commands. So G92 Z-1 would add the extra condition, and then the next time you do G1 Z1, it would send the probe to G1 Z0. This effectively allows you to offset the entire print code.

Another thing to note is that although my PC is 1/16 thick, I only moved the reference point up by 1mm not 1.6mm; This is because my firmare 0 is NOT the same as the "auto calibrated" 0 that I obtained through G29. You will need to do some trial and error.

Step 9: Complete Start Code

We now have two start code versions to use. The first is to draw on the platform / tape, the second is to draw on whatever we add above it (copper clad fibreboard in this case). We can easily toggle this by commenting out the G92 line in that centre block of code that I underlined.

G21 ;metric values
G90 ;absolute positioning

M107 ;start with the fan off

G28 X0 Y0 ;move X/Y to min endstops

G28 Z0 ;move Z to min endstops

G29 ;calibrates Z

;on pcb slice extra code

G92 Z -1; changes the Z0 value up by 1mm ;adjust for substrate (0.8 mm = roughly 1/32 inch)

G1 Z0; moves the printing head up to the new value defined above

G0 X0 Y0 Z15 ;moves the head out of the way as well as up so it does not snag on the way in

M0 ;pause to allow insertion of substrate

Step 10: Complete End Code

The end GCode should also be edited to lift the sharpie so that it does not drag along as the printer terminates the print, just like we had done in the begining. If you don't mind the last line, then you can ignore this.

;End GCode

G91 ;relative positioning

G0 Z15 ;move Z up before moving away

G28 X0 Y0 ;move X/Y to min endstops, so the head is out of the way

M84 ;steppers off

G90 ;absolute positioning Now go ahead and slice your STL file so you can calibrate the device.

Step 11: Slice

You will need to slice two versions of each side.

For both sides you will need a tape version, that is with no offset. This will print on the tape on the printbed to line up the pcb. This should have all the reference holes.

The second version will differ for the two sides. The first side will have the extra reference holes.

The side you will be printing second should only have the fine-adjustment reference hole in it for the PCB version. This is so that the printer won't go near the edges of the reference holes once they have been opened up.

Step 12: Align Your Copper Clad Board

First, put tape on the base. The tape will be a test surface while calibrating, but will also serve as a part of our alignment for the PCB etching later on. If you normally use tape for adhesion, no need to secure it as well as when you are printing parts. In fact, if you have a cheaper painter's tape that lifts when you try to print on it, now is the time to get rid of some!

Now that you have let the printer draw your design on the tape, you know exactly where the print will occur next time. It is time to secure the board to the base. There are a few ways to go about this part, and it will depend on how big your piece is, and how much time you have.

If the board is large (i.e., you are not down to your last pieces), you can just tape the excess, this is by far the easiest way.

If you don't have extra space from which you can tape, put some tape sticky side up under the board, letting some wings protrude form the sides. Then, tape those wings down to the print bed. Don't try folding over, it might work, but it also risks lifting an edge a bit after which it will possibly get knocked off by the printer. Don't forget to punch the necessary holes for lining up the second layer.

Step 13: Print Side 1

Now we can go ahead and print on side one. If you are doing a single sided PCB, that's it, you are done!

If you are doing a two sided PCB, the next step will be to go and drill out the two reference holes so that you can line up the board with the other side that you will be drawing on some fresh tape. You should also make a 1/32th hole in your third reference hole rather than boring it completely at its 1/8 size. This will be for the fine adjustments. In my case it was in the board, but again I suggest doing this in an extra corner hole.

Step 14: Print Side 2

When printing side 2, you just do the exact same thing as before for printing on the tape. However, when exporting your STL file for the PCB printing part, remove the two reference holes so that the sharpie does not get snagged on the edges.

Once the design is verified, and the reference holes drilled out on the PCB, the print job can be launched up to the pause point, and the PCB aligned and fastened in place for the rest of the print.

Using the 1/32 reference hole, you can do the fine adjustments. The reason it helps is that the sharpie will go around it so it does not snag because it has a 1/16 clearance all around it, but you can clearly see if the smaller hole is properly centred in the larger hole as it draws. It you lined it up to be the first thing that gets drawn, you can pause and even and make a small (0.5mm or so) adjustment to centre the small hole before it keeps going.

Step 15: Drill and Etch

Pre-drill your holes with a 1/32 drill bit and if you have larger holes go for it. Some parts will require slightly larger holes, but you can get to those later. The reason for doing this first is to diminish the risk of copper peeling up. On the other hand, it does introduce a risk of copper being etched around the hole, so if you prefer to wait, there is no right or wrong way here. Once you are done, touch up manually with a sharpie where you may have scratched off the ink.

Once all this is done, plop it in that ferric chloride! Agitate it and check every few minutes. Once etched, rinse it very well under cold water (this stuff stains everything, be careful), and wash off the ink with alcohol.

That's it! Enjoy!

To see what will become of this circuit board, be sure to subscribe to my channels to get updates on the build of the power regulator / supply.

Step 16: Done!

Now build it up!

Build a Tool Contest 2017

Participated in the
Build a Tool Contest 2017