Prototyping PCB using CNC Laser Engraver
Positive Exposure Process
<Add process here>
UV sensitive PCB material
The UV PCB (positive) material used for this PoC is from Bungard; which can be obtained from most suppliers such as Conrad, Reichelt, eBay, etc. A specification of the material is (in German) -> here. This PCB material is positive UV sensitive material i.e. what is exposed to UV light is etched away. This is OK for creating areas of isolation around the tracks but ideally to save 'lasering' time; we will also testing UV 'negative' PCB material; where the exposed areas becomes the etch resit and the un-exposed areas then etched away.
As a summary, the UV etch resistant coating has a peak spectral sensitivity of 400nm wavelength; which matches well with the Blue UV laser at 405nm. The specification states that the UV material becomes cured (etch resistance) after exposure from a 2kW UV light at a distance of 1m for 90 seconds; with an optimum exposure of 120 seconds (exposure of 1,5 mJ/cm’ is required). This depends greatly on the light box being used and so they recommend making test strips within 20 second intervals to confirm this. In the same way with a laser; a test strip should be made to see the optimum speed (GCode F value)) and intensity (G Code S value) of the laser.
The development process used is Natriumhydroxid (1g NaOH mixed with 1l Water). which takes typically 45 seconds at 20 deg.C. UV exposed areas will be 'curred' and remain on the PCB for up to 5 minutes when left in the solution; but this depends on dilution and temperature and how often the solution has been used before.
For the chemical enchant of the copper layers we used Natriumhydroxid, at a temperature of 25 deg.C.
As with all chemicals, please be careful and use eye, hand, body protection and dispose of the material environmentally safely; according to the directives of your local bylaws (i.e. do NOT rinse the chemicals into your drains!).
Laser Exposure of UV sensitive PCB material
(Note: a laser is very dangerous if the beam (or scattered beam) comes in contact with your eyes or skin. Wear eye protection or you could be blinded!! )
Eleks maker Laser Engraver (approx $200 from Gearbest or Banggood):
This is the laser engraver we used for the PoC, which we purchased from GearBest. It came with a 2500mW near Ultravilot Laser (405nm) and an Arduino based controller with a version of the GRBL firmware installed. It's important to get the Ultraviolet Laser diode as this is what most UV PCB material is sensitive to.
We were very impressed with the presentation of the kit with all parts nicely packed and prepared. We bought the kit from GearBest, but experienced quite a lot of support issues when trying to replace a faulty Laser. GearBest spent many weeks trying to get a replacement from the manufacturer but eventually offered to send another complete Laser kit for an additional $80. We were somewhat reluctant as we still hadn't completed our PoC so had no idea if this would actually work. In total, the replacement process tool about 6 months to resolve. However, in the meantime we had bought a replacement laser head from Bangood, but bought the replacement kit for $80 for GearBest too to develop a double sided PCB exposure solution.
We're particular excited about using UV lasers to exposing UV sensitized PCB's. We're NOT actually laser cutting the copper on the PCB board (yes! that would be great), but merely selectively exposing a the UV sensitive etch resistant coating on the PCB.
PCB's with UV sensitive etch resist coating are slightly more expensive then non-UV coated PCB material; but in our option saves quite some some time having to ironing on UV sensitive films, or using etch resist pens, etc.
Even low powered UV lasers (e.g. 2.5W) can actually burn wood, pastics and paints, so in our review we also tested alternative methods of creating an etch resist coating; such as using spraying black paint, masking tape, UV Positive Paint Spray, Photopolyers/UV resins (used for SLA 3D printing).
There are really many methods that work and some are also detailed in the following videos UV exposure using a converted laser Printer e.g. from:
Also a great idea from Marco Reps with a modified laser driver to avoid the issues I experienced with PWM exposures -> https://www.youtube.com/watch?v=gm5P74vcB84
So lets start with this review first. Others will come later.
When PCB etching there are 2 main UV materials and processes
Negative exposure - what is exposed is etched away. i.e the gaps between the tracks)
Positive Exposure - what is exposed is not etched away- i.e. the tracks).
Negative exposure process
This process is more common for PCB milling where isolation areas are milled away. Negative sensitive UV film is however available and is applied in the same way as positive UV sensitive films.
Some people have been very successful spraying a matt black paint over the PCB and 'burning' away isolation areas in a similar way to milling.
Some other makers have converted their 3D printers to do the same such as the thing https://www.youtube.com/watch?v=B1lgdg1IGoI by MadyWinter. Mady reports that most of his failed attempts were done at the maximum laser power ( 100mw ). That turned out to be much too high. Instead of exposing, it would destroy the photo resist layer. In the end he used a resistor at ~30% power. Another problem was the unstable nature of the laser diode, sometimes it produces more, sometimes less. He got his diode from http://www.insaneware.de/
https://youtu.be/endcUTFt-9M - High power laser from http://www.lpkf.com/index.htm (this look like a much better way of doing this)
Laser CNC Applications and Firmware
There are a few software/applications that need to be installed; depending on the process you decide to use. The software can be described as the following:
Arduino IDE and Drivers for the Arduino
Firmware for the Arduino (Grbl): This simply turns an Arduino into a simple 3 AXIS CNC controller reading most G-Code and converting this into pulses which control Steppmotors connected to the Arduino.
Grbl version V.1.x, now supports Laser Mode cutters and engravers with a new control paramter $32=1 (on) or 0 (off). When enabled, GRBL will move continuously through consecutive G1, G2, or G3 motion commands when programmed with a S spindle speed (laser power). The S G-Code command normally determines the spindle speed, but when $32 is set, it controls the laser intensity by adjusting the PWM of the Arduino pin. Grbl control parameter $30 sets the Max spindle speed and $31 sets the min Spindle speed.
The new laser control enables the spindle PWM pin on the Arduino to be updated instantaneously through each motion without stopping. The advantage of the command is that you no longer get excessive "burn" holes when the machine pauses on a change of directions. When he command is disabled, Grbl will operate as it always has, stopping motion with every S spindle speed command. This is the default operation of a milling machine to allow a pause to let the spindle change speeds. How to install this is explained below and loads of details of the Grbl control commands are -> here.
PC Software Application: This is the software which communicates with the Grbl firmware on the Arduino and sends the CNC G-Code commands to the Arduino. In this PoC we used a PC with Windows 10 operating system, but it should work just as well using Ubuntu or other Linux or MAC operating system.
The PC software applications used in this PoC are detailed below.Here is a summary:
PCB Design Software. In this PoC we used Eagle, but also tested Fritzing.
CAM file conversions: In this PoC we used FlatCam
CNCLaserControl client: In this PoC we tested:
Other PC applications (Not part of this review):
PCB applications for designing and creation of the necessary G-Code files for plotting the PCB:
For HPGL plotting see:
For G-Code output see:
CAD software for creation of DXF files (e.g. rasters or other shapes):
GRBL (opensource Arduino based CNC controller firmware)
An Arduino Nano and 2x stepper motor drivers come with the Laser Engraver kit which is pre-loaded with a version of Grbl firmware. However, unless you intend to use the provided EleksMaker software, the first thing is to install the latest version of Grbl firmware onto the Arduino nano as follows:
Downloaded and unzip the latest GRBL version (1.1e at the time) from on the Grbl home on GitHub
Make sure you are using the most recent version of the Arduino IDE! It's recommended and easiest to use the Arduino IDE to upload the lastest GRBL firmware / sketch to the Arduino. Details of how to compile and upload the Firmware using the Arduino IDE is explained in detail on the GIThub wiki -> here. It's important to upload the GRBL library as instructed into the Arduino IDE beforehand.
Launch the Arduino IDE
Load Grbl into the Arduino IDE as a Library.
Click the Sketch drop-down menu, navigate to Include Library and select Add .ZIP Library.
IMPORTANT: Select the Grbl folder inside the grbl-master folder, which only contains the source files and an example directory
Open the GrblUpload Arduino example
Click the File down-down menu, navigate to Examples->Grbl, and select GrblUpload.
Compile and upload Grbl to your Arduino
Connect your Arduino Uno to your computer
Make sure your board is set to the Arduino Uno in the Tool->Board menu and the serial port is selected correctly in Tool->Serial Port
Click the Upload, and Grbl should compile and flash to your Arduino! (Flashing with a programmer also works by using the Upload Using Programmer menu command.)
The Arduino should now be installed with the latest Grbl firmware and will work as a basic 3-Axis CNC controller.
Post CAM file processing
Some post processing of the files exported from Eagle will need to be carried out to make them suitable for Laser Plotting. This is because Eagle generates the CAM files which represent the actual PCB tracks using HPGL or Gerber. This is good for postive plotting but for isolation plotting we don't actually want to "plot" the tracks if we are doing negative PCB exposure, as we only need to plot the isolation paths.
FlatCAM is really a great Python Based CAM application by Juan Pablo Caram. It's used for preparing the G-Code files for milling PCB's.
FlatCAM is particularly useful for converting Excellon, Drill, Gerber or other file formats to G-Code e.g. from Eagle. It allows creation of 1 or 2-sided PCB's and helps with drilling holes including alignment pins for double sided boards. This feature is really handy.
We used the software for first drilling the alignment pins and all drill holes on the PCB. The alignment pins are then used for registering the correct position when exposing the top and bottom of the PCB.
We use Flatcam for post-processing the Gerber and Excellon files generated by Eagle for positive UV exposure. However as the software is intended for isolation plotting, you need to use a tedious work-around to make it do positive plotting. An automatic feature for positive plotting hasn't been implemented yet but I see in the forum that many are requesting this.
How to export the necessary files are explained here on the FlatCAM website. As a summary in the CAM module export as GERBER-R274-X for the top, bottom, pads, vias, and dimensions (for the board outline).
One word about drill files. The exported Eagle Excellon_24 drill file needs editing or you'll need to set a configuration in FlatCam to interpret the leading zeros in the Excellon file correctly. This is using the set_sys command in the FlatCAM Shell Command Line Interface:
set sys excellon_zeros T
git clone https://bitbucket.org/jpcgt/flatcam.git
HPGL to G-Code converters, HPGL and G-CODE viewers
These post-processing tools are required for post processing if you need positive tracks and pads drawn on the PCB such as when doing direct pen-plotting to PCB or using positive UV sensitive film
These are not required if you are doing negative or isolation plotting. i.e. isolation routing around the tracks when milling.
The best method to do this seems to be the same as for the direct pen-plotter method by exporting HPGL plot files directly from Eagle and converting them into G-Code. The challenge is to obtain the correct scale if you are using multiple files (top bottom, solder resist). I tested the following applications:
An online HPGL to GCODE conversion program
Merely upload an HPGL file generated from Eagle. Enter a distance for pen up and pen down. Pick something easy to find such as 10 for pen-up and -10 for pen-down. These are replaced later, so ensure to use values that can easily be found. The conversion factors of 40.2 HP units/mm seems to be OK. I however noticed that the application skipped some pads.
hp2XX runs from a command prompt and hence a bit awkward to use. The program is however really powerful and flexible and gave us very good results. Example command line was: hp2xx -m nc -w 45.72 -h 24.13 DemoEagle_HPGL_01.plt where:
-m nc instruct that the output should be in G-Code format
-w and -h was the width and height of the board in mm I took directly from Eagle
DemoEagle_HPGL_01.plt was the input file (output from Eagle HPGL CAM file using a pen size of 0.1 mm)
The output is defaulted as 200mm x 200mm so you need to specify the correct size in mm's. Alternatively, ignore explicit size control and rely on the true HPGL coordinates (and therefore: sizes) of the given input file(s). Flag `-t' inhibits `-a -h -w' and lets hp2XX use true HPGL sizes; based on the assumption that the natural unit of length in HPGL is 0.025 mm
The g-code output needed to be edited before LaserPlotting. Open the file and replace all instances of G1 Z10 (Pen-up) with M5 (i.e. the grbl code for turning laser off) and G1 Z-10 (Pen-down) with M3 S200 (grbl code for turning the laser on). With GRBL1.1 it's now also possible to use the spindle speed S (0-255) instead after each G1 and delete all G1 Zxx entries. This is suppose to give a smoother plot without any "dwelling burns".
Then upload into Chillpeppr or LaserWeb (see below) for running the Laser CNC.
Open source pen and laser plotting projects by Dirk Herrendoerfer.
He's done a really tremendous job of developing a direct PCB pen / Laser plotting with exchangeable heads and a 3D printer and other projects. I recommend to follow his channel as the work is really excellent.
The laser module he uses is SKU:844441403 at eud.dx.com
The heatsink No: 152362009112 on ebay.de
SPLOT viewer (http://www.swplot.com/splot.htm)
This is a commercial program (about€ 65) which enables your to view the HPGL file and to print out to a printer or plotter. It*s very useful when creating positive films or directly plotting onto a PCB. This could be an interesting project to create an Arduino firmware / sketch to Laser /pen-plot HPGL files directly to PCB rather than needing to convert to G-Code.
Inkscape Laser Tool Plug-In
This plug-in will convert a path object in inkscape into a G Code file for use in your laser upgraded machine. Put the contents of this .zip folder into the “inkscape\share\extensions” folder. Once it is there it will show up under the “extensions” tab in inkscape.
Others applications which I couldn't get to work:
There are many G-Code viewer driven by the increase use of 3D printers in the last years.G-Code viewers are useful as a check before actually running the laser.
G-CODE View - http://jherrm.com/gcode-viewer/ - Web application that simulates the G-Code file loaded. Code on Git-hub -> https://github.com/jherrm/gcode-viewer
PC Application for driving the CNC Laser.
There's a good overview of various CNC controllers on the Grbl site:
We tested various of these applications for driving the Arduino CNC controller. Our experiences are detailed below.
Chillipeppr is so cool and allows the Eagle brd file to be imported directly into the application for direct processing and laser exposing.
This approach assumes you have painted, rolled, glued, or stuck on a UV senstive PCB etch mask you want to laser etch or mill away the solder pads and smd pads. Some people use Dynamask, which is a gel film laminated onto the PCb with with a hot roller. Some people use vinyl and then cut out the pads, then paint. Laser etching the mask can work because copper is highly reflective and thus lasers won't effect it, while burning away the paint. Milling is possible, but you need to be massively accurate on your Z depth to not mill away the copper and only mill the mask ink. Auto-levelling is highly suggested before mask if milling
It doesn't seem to work with RAMP/Mega boards (e.g running Grbl for Cyclone) but only the intended Uno boards
This is really neat Java Script application which runs on a webserver (Node.js 6.x) residing on NPM. It loads most PCB file formats; even dxf files for laser plotting.
1. Read the instructions on GitHub -.> https://github.com/LaserWeb/LaserWeb3/wiki/Install:-Windows. At the time the instructions for LaserWeb4 were not available.
Download and install Node 6.x LTS from https://nodejs.org/en/download/
Install Google Chrome if not already installed
Download and install Git for Windows from https://git-scm.com/download/win
Upgrade your GRBL based controller to version 1.1e. LaserWeb won't work with old builds.
2. LaserWeb install instructions:
Start a windows command prompt by typing "cmd" in windows search.
git clone https://github.com/openhardwarecoza/LaserWeb3.git
npm install - Install the development environment.
To start the software:
Start a windows command prompt by typing "cmd" in windows search. In the command prompt window type:
Note: Only works with Smoothie, Grbl and TinyG.
Start Google Chrome
Type "localhost:8000" in the address bar
The software is now installed.
Alternatively you can run it from here:
Size Configuration (Part 2)
The Laser Engraver used is an A5 size engraver and the following seemed to work well.
G-Code Configuration (Part 1)
G-Code Configuration (Part 2)
BenBox application comes with the CNC Laser and can be downloaded from the gearbest or banggood website. It's based on a version GRBL. This is OK for engraving but was not suitable for our PCB creation process. Soem instructions on how to use the software are also explained in instructables.com -> here http://benboxlaser.us/index.php?topic=175.0
Forums on BenBox
PCB Drilling & Isolation Milling
Isolation milling is an alternative to chemical etching. It is good enough for most prototyping boards. Use together with FlatCam will enable easier creation of gbode files especially for double sided boards.
Arduino Based shields for CNC isolation milling
GRBL on RAMPS
Site with good instructions on how to set-up RAMPS:
Marlin on RAMP 1.4 (as CNC machine)
Traditionally, 3D CNC carving requires a complex software chain: CAD software to create a design, CAM software to set toolpaths, and additional software to send it to the machine.
They thought there was a better way, so built Easel with an intuitive interface.
AutoLevelling: This is recommended before starting to do any isolation milling. Most of the software reviewed have this feature embedded. Here are some other versions:
The following Notes still need to be edited:
Assembly of CNCLaser
Setup by anakuron
axCUT (Damian Axford)
Safe Laser Glasses
Buildlog.net 2.x Laser
PCB Gerber file preparations
Driving the Laser using Arduino wiht the GRBL firmware (v1.1e)
Other Arduino CNC Controller boards
Overview of Config parameters Commands https://github.com/gnea/grbl/blob/edge/doc/markdown/settings.md
Library from the GITHub
Wiki : https://github.com/grbl/grbl/wik
how to upload to the Nano: https://github.com/grbl/grbl/wiki/Compiling-Grbl
The GRBL Shield is a great way to use G-Code to create an Arduino-based CNC machine, but setting up the software and wiring the hardware
G-code Commentor: http://www.buildlog.net/cnc_laser/cnc/gcode_comment.html
ACNC (by Fabien-Chouteau)
An ADA controller board
Buildbot is an open-source framework for automating software build, test, and release processes.
Grouped Batch PCB Manufactures
Matt Black Spray Paint Examples:
using black paint as the etch resist
Using 25W laser cutter, Muratic Acid, 30% H2O2 and a sponge - https://www.youtube.com/watch?v=OTGZcY7WyYI
using Nail Varnish as the etch resist
Spare stepper motor drivers
Other things to explore:
5 Axis Machining https://www.kickstarter.com/projects/2003668803/5axismaker-first-ever-affordable-5axis-multi-fabri/description
W3Schools Training SVG: http://www.w3schools.com/graphics/svg_intro.asp
RAMPS + ARDUINO as CNC controller
Wiring of RAMPS: https://www.youtube.com/watch?v=U-VyUV3k6xI
Link to gearbest and drivers for Arduino Clone
Unversal G-Code Sender
Eleks controller boards
Inkscape laser plugin:
JSCUT a cam in your browser
3 AxiS GRBL board to replace the PRoxon milling one
Plotting onto postive photsenstive material
Gerber Plotter files need to be converted to g-code
Conversion of gerber to g-code
Useful packages -http://reprap.org/wiki/Useful_Software_Packages
Software tools (freeware)
http://www.laserwood.hu/pltviewer/showplt.php (HPGL viewer)
Process for PCB creation
1. Create PCB n Eagle
2. Use cam processor and select excellon
3. select top layers including pads,
4.export to a file
5.user flatcam to convert the pcb excellon and gerber files into a graphic for plotting or lasering
Solution in Flatcam for postive printing:
Various Versions of UV Laser CNC PCB exposers