Skip to content

Week08

Electronics production

Group assignment:

  • Characterize the design rules for your in-house PCB production process: document the settings for your machine.
  • Document the workflow for sending a PCB to a boardhouse
  • Document your work to the group work page and reflect on your individual page what you learned

Individual assignment:

  • Make and test a microcontroller development board that you designed

Group assignment

Our group assignment is on lab’s page.

Making my own board

I milled PCB that I designed on Week 6.

Exported EAGLE format files from Fusion: W6_Dev_Board.sch, W6_Dev_Board.brd

Generating gerber file

I generate gerber files from [MANUFACTURING]-[CAM Processor] on Fusion. I exported Top Copper and Profile.

CAM Processor

pcb2gcode

Since it was hard to install FlatCAM on my macOS, I looked for other solution. And finally I found the one easy to install with Homebrew, pcb2gcode.

% brew install pcb2gcode
% vi millproject
I wrote a configuration file as below. We can set parameters for pcb2gcode with millproject file.
millproject
# Common options
metric=true
metricoutput=true
#mirror-absolute=false
optimise=0
zchange=10.0000
zero-start=true
zsafe=5.0000

# Mill options
#extra-passes=0
extra-passes=100
mill-feed=240
mill-speed=10000
offset=0.2500
zwork=-0.1000

# Drill options
drill-feed=100
drill-side=auto
drill-speed=10000
milldrill=true
milldrill-diameter=0.5
nog81=false
onedrill=false
zdrill=-1.7000

# Outline options
bridges=0.5000
bridgesnum=0
cut-feed=150
cut-side=auto
cut-infeed=10.0000
cut-speed=10000
cutter-diameter=0.8
fill-outline=1
zbridges=-0.6000
zcut=-1.7000

As set milldrill-diameter=0.5, the end mill I used at this time was 2475 PPLS Circuit Board Cutting End Mill Carbide Blade Tip Diameter: 0.02 inch (0.5 mm), Pack of 5, just $28 for 5 affordable one.

Thickness of material is t=1.6mm, so I set zdrill=-1.7000 and zcut=-1.7000 adding 0.1mm margin.

I ran pcb2gcode with these option.

% pcb2gcode --front copper_top.gbr --outline profile.gbr

So I got front.ngc, outline.ngc and some SVG files.

Milling

I copied g-code files to PC that connected to CNC milling, and milled by using Candle.

Candle

I choose Candle, because it have heightmap function. In my opinion, most convenient feature on modern affordable 3-axis CNC tools is Z-Axis auto leveling!! It is on both 3D printer and CNC milling.

To use height map function, we use Z-probing. Z-probing is using electrical conduction. Clipping a contact to end mill and clipping another contact to materials copper surface. So CNC controller can detect Z=0 position electrically.

To perform Z-probing onetime, we use “Probe Z” button. Before using this, I’m testing conduction between tip of end mill and clip of probe that clipping shaft of end mill by using multimeter, because if there are some nonconductor on tip, CNC controller push end mill more than a surface of material and end mill will be broken.

Double check this conduction and make sure two clips clipping on shaft and material.

Actually, there are deflections, warps and inclines on material surface. Even if it is just a 0.05mm, it affect because we’re going to shave 0.1mm depth.

So, we’d better to probe height at multiple point of material surface and make a height map. This is the heightmap function of Candle. To use this, press “Create” button on below of “Map” after loading toolpath and moving endmill to XY working home.

“Border” should be a border of height map. X and Y are working position left front, and W and H are sizes we are going to probe. ( and probebly, it was read from toolpath data.)

“Probe grid” is a parameter that specify number of probing position for each axis. In X-axis, 2 mean left end and right end. I think two is not enough so would add numbers.

By pressing “Probe” button located bottom of heightmap, probing will be started and heightmap will be shown.

Then finish making by pressing “Edit” button. And make sure “Use heightmap” was checked. This is very important to enabling heightmap.

Remove

Don’t forget to remove probe clips!! If we forget to remove the clip that clips endmill shaft, that clip may break endmill blade. I broke two. 😢

So, we are ready to mill. When I start milling, I always saw this alert.

This is a error message that could not recognized by controller board of CNC milling machine. I can continue milling by pressing “Ignore” button.

A jig I used was CNC PCB Holder M6 found on Maker World. It works fine if you use heightmap.

Milling

Soldering

I put 5x SMD Grove connector and 2x 7-pin SMD pin socket on milled PCB. And put XIAO RP2040 on socket.

Soldering

When I soldering Grove connector, I soldered it on wrong place. There are no silks!! I learnt I’d better to solder by referring CAD drawing. Luckly, I found this problem soon, so it was not so difficult to remove the connector soldered on wrong place.

Testing

For testing, I connected I²C text LCD AQM0802A-RN-GBW through Grobe connector. There is Arduino library for ST7032 a controller chip on this LCD.

This is the Arduino sketch I used.

#include <Wire.h>
#include <ST7032.h>

ST7032 lcd;

void setup() {
  lcd.begin(8, 2);
  lcd.setContrast(30);
  lcd.setCursor(1, 0);
  lcd.print("FabLab");
  lcd.setCursor(1, 1);
  lcd.print("Nagoya");
}

void loop() {
}

And, it works!!

It works!!

One more thing

I want to keep thermal pads for soldering, but I lost it this time. So, I tried to find the way to keep it. By editing configuration on millproject as below, I could have thermal pads on toolpath.

#offset=0.2500
offset=0.1000
voronoi=false
preserve-thermal-reliefs = true

Checklist

  • Linked to the group assignment page
  • Documented how you made the toolpath
  • Documented how you made (milled, stuffed, soldered) the board
  • Documented that your board is functional
  • Explained any problems and how you fixed them
  • Uploaded your source code
  • Included a ‘hero shot’ of your board