Close

circuit milling: 0.05 mm (2 mil) trace/space

A project log for Minamil 3dp: another minimal CNC mill

A very compact, very inexpensive, very DIYable, very precise little CNC mill. This one uses 3d printed parts.

paul-mcclayPaul McClay 09/13/2024 at 05:100 Comments

Last year 0.2 mm trace pitch seemed pretty tight:

"... just think of the precision required to take off the copper layer and only the copper layer, and leave traces down to 0.2 mm behind." -- HaD Prize 2023 finalist announcement

Here's half that...

isolated copper traces from 0.2 mm to 0.1 mm center-to-center in 0.025 mm steps

Admittedly more tedious than $pendier option$ with a big friendly START button, but this little machine got the job done.

detail view rotated 135°ccw before writing anything which makes writing hard: X bottom-right to top-left; Y top-right to bottom-left; horizontal/vertical <--> diagonal; I could de-rotate but describing features doesn't actually get much easier unless with a labeled diagram and that's a rabbit hole I'm trying to not go down today...

did he say "tedious"?

Yeah. It was a development exercise. Lessons learned may help make future work at this scale less tedious, but probably not not tedious.

how

You're already reading this project about how to build a little CNC mill. Elements of coaxing the built thing to carve tiny isolation lines through copper cladding include,


stable hands-free magnification

This time I went straight for the stereo microscope because not needing one wasn't an objective. I've also used my phone on a little tripod for nearly no (incremental) cost, and a USB camera for le$$ than the microscope, either of which might have adequately supported this exercise.


design to X/Y steppers' full steps

The small steps in the least-stepped segments adjacent to straight segments match the 0.025 mm practical limit of horizontal positioning for the motor+screw units used here. (The little jog segment length is step×√2 for diagonals (pic at 45°).) That step-over distance corresponds to one full motor step. I'm running x8 microstepping for best acceleration & speed (another log entry "soon"...) but single microsteps are so uneven that there's no fraction of a 0.025 mm step cycle that's useful for positioning. Designing to a 0.025mm "snap grid" puts each feature at the same phase in the microstep cycle for each motor. I haven't tried to actually synchronize the motor driver step cycle phase(s) because stopping at the same phase of the next/final cycle seems to yield sufficiently consistent steps. (now that I've typed that sentence: maybe cycle phase detectably affects backlash....)

Cutting diagonal traces at 0.1 mm pitch would require stepping over 0.1 mm diagonally or 0.1/√2 = 0.071 mm along X & Y, but that's not a multiple of 0.025 mm. Instead the thinnest diagonal traces in the example are 0.75×√2 = 1.06 mm center-to-center, which isn't far off.

Aside: The next full step thinner would, at this milled path width, leave ~46 - 25 = ~21 μm traces -- narrower than their thickness (in 1oz Cu). I gave that a try with results better than total failure, then decided that I really can stop any time I want to.

0.175 to 0.075 mm trace pitch -- copper traces taller than wide? -- kindasortabutnotreallly


pointy v-bits

I've been using cheap "0.1 mm" v-bits for fine-pitch circuit milling. Random example of the type. Mostly 30° but tried 15° for this. The points of these bits, at least the ones I've collected so far, are pretty random. So "0.1 mm" is more name than dimension. Randomness affords the opportunity to line up a bunch of bits and select the pointy one -- see "stable magnification". That approach got me down to 0.2 mm trace pitch last year and was where I started with this round of trying for smaller. But then I broke the pointy one in the 15° box, which proved helpful because that got me started on re-grinding points for more smallness. "Grind" seems like the wrong word for the lightest possible short drags over a cheap "fine" (not really) diamond hone between checks under magnification.

Here's the bit that cut a couple copies of the test pattern shown in the top couple of photos, opposite the tip of a sewing needle that I used for a reference for tweaking runout:


runout

I'm using a cheap generic Dremel-like rotary tool in keeping with the low-cost theme of this project. My "spindle" uses a ball joint for a collet, as do, as far as I know, all similar tools. The, um, versatile collet affords the advantage of requiring deliberate attention to tweak runout. So less runout is a simple matter of more tweaking[*]. Sufficient magnification and a finer center reference help. In this case I used a sewing needle stuck point-up in a lump of "blu tack" and set on the XY table for fine positioning under the rotational axis. The photo above shows that arrangement turned sideways for page layout. While the needle is blunt (relatively) it's also round, so reflected light makes high contrast sharp edges for more precise reference.

I don't know what deviation I was able to see & correct, but it was much smaller than the width of the cut path.

Since the bit axis gets tweaked in any case, it's ok for re-grinding to move the point of the bit.

Maybe another day I'll write another log about better/worse orientation of these half-cone+wing v-bits vs. rotational axis -- or find that someone else already has.

[*] there's always a *


density test cuts

To see if I had a sufficiently pointy bit set up, with sufficiently small & harmlessly oriented runout, to keep some copper between cut lines when cutting deep enough to cut through the copper layer: I cut a lot of parallel 0.5 mm lines 0.1 mm apart. Or 0.075 mm apart before deciding to defer that target.


level

At this scale, leveling the copper surface is a big deal. Because depth of cut is a big deal. Failure to cut clean through the copper is failure (if the goal is electrical isolation). Cutting any deeper than just-through with a v-bit expands the cut line which doesn't help when aiming for greatest thinness. With a narrow-angle bit the line width is less sensitive to cut depth, but then the more fragile point is more sensitive to cut depth.

While sitting on (double-sided tape on) a spoil board previously milled "level", the copper surface was far enough out of level to cut too deep on one side and/or not deep enough on the other across a ~4mm square area. I figured the small area of the test pattern was probably close enough to flat and,  eventually, got it close enough to level by sliding paper shims under corners and sides of the copper-clad board.

I didn't try surface mapping, which might be necessary over a larger area.



Hey y'all,  this is going to get more terse 'cause I've got to get this out. Maybe I'll come back and write more later.




level test cuts

To check/evaluate levelness, I set a Z level so that a 0.5mm line would just barely leave a witness mark on the surface outside each corner of the area to be cut. Or indicate which corners were higher or lower.


laps

While watching closely with magnification.

If I recall correctly, I ran the pattern seven times:



Notes

[1] Trace/space boundaries are fuzzy in the photo. Which makes pixel counting subject to bias. I tried to drop lines in the middle of the fuzzy regions. I suppose it all gets more fuzzier if you have to account for imperfect boundaries between clear isolation gaps and full thickness current bearing traces -- or net effects of variability.

[2] I expected something easy like average some traces, average some spaces, and divide each average by their sum to get two fractions that sum to 1. That result is close enough and I'd have done well to stop there and not try to check that sum against an average of trace+space intervals. The short version of the long version is that each trace or space between two spaces or/traces is a member of, and different fraction of, two different trace+space intervals.

Discussions