CNC PCB milling


  • Hero Member

    Judging from the looks of the photo directly above though, it looks like quite a bit of copper wasn't removed where it needed to be. I'm guessing I will need to:

    1. etch to a deeper depth; and/or,
    2. use a finer mesh for auto-leveling; and/or
    3. ???


  • Etch 0.1mm. The groove between tracks also helps with soldering. I currently use 0.1mm and even 0.15 when in a hurry.



  • @neverdie
    The last photo looks like the tip is missing from the cutter?


  • Hero Member

    @rmtucker Good catch! Here it is in contrast to a new one:
    0_1514124264773_broken.jpg

    I'll replace it with the new one.



  • @neverdie
    Just for future reference i would use a duff cutter for autolevelling then change to a good cutter to cut the job after resetting the z0.
    It is so easy to smash the front of an engraving cutter when using this method for autolevelling as the machine takes a little time to stop after touching the pcb.
    Just my advice anyway☺


  • Hero Member

    @rmtucker said in CNC PCB milling:

    Just for future reference i would use a duff cutter for autolevelling then change to a good cutter to cut the job after resetting the z0.

    What's a "duff cutter"? Did you mean "dull cutter"?



  • @neverdie
    Yes sorry a used one😉


  • Hero Member

    @rmtucker Thanks! Makes sense to me. I'll do it that way.


  • Hero Member

    Argh. I ran the job, and the first cut went great. All subsequent cuts though didn't penetrate the surface:
    0_1514131937250_etch2.jpg
    Afterward, when I checked the zero on z, I found that it was off by 0.049. That explains it, since the cut-depth was 0.05.

    I'll re-zero and try running the same job again.


  • Hero Member

    That made a much better result:
    0_1514134150665_etch3.jpg
    It corresponds to this as the actual PCB:
    0_1514134183073_pcb3.jpg


  • Hero Member

    However, what's telling is that it obliterated the traces on either side of a 6 mil separation:
    0_1514134391307_etch4.jpg
    This is how it should look instead:
    0_1514135454019_jumper.png
    0_1514134628617_pcb4.jpg

    So, what happened?

    My current hypothesis: the first cutting sheared 0.049mm off the tip of the blade, making it wider than it should be. Then, after re-zeroing, the wider blade cut too wide as it cut the traces for the solder jumper.

    Is that reasonable, or is there a better hypothesis?

    If it's true, then what do I do about it? Perhaps use a higher quality bit than the freebie that came with the kit?

    Actually, I'm not even sure what the dimensions were on the freebie. It wasn't labeled. Perhaps it was too wide to begin with.


  • Hero Member

    Well, to explore this more, I think I'll create a test board consisting purely of a few solder jumpers. That way I can put the focus directly on the 6 mil issue and won't be wasting time on etching that's unrelated to that.


  • Hero Member

    Doing just a single solder jumper, with the same bit, and autoleveling every 1mm, the result is:
    0_1514143618998_etch5.jpg
    which is pretty close, actually. Looks like maybe the bit is a little too wide, or else there's runout which is making it appear wider than it actually is.

    I'll try it with a fresh bit next and see if it improves.


  • Hero Member

    Well, that went horribly:
    0_1514145362189_etch6.jpg
    and I have no idea why:


  • Hero Member

    I tried again with the same bit, after removing and re-inserting it. Got a better result this time:
    0_1514147487748_etch7.jpg

    Unless someone has suggestions on how to tweak this, I think that may represent approximately the best this CNC can do.


  • Hero Member

    In truth, though, I think it may be a flawed gcode algorithm:
    0_1514147871026_flawed_algorithm.png
    Instead of two separate cutting passes through the center section, one would do, and would produce a better result.

    How to tweak flatcam to do that? I probably haven't configured flatcam correctly. i.e. user error.



  • @neverdie said in CNC PCB milling:

    Actually, I'm not even sure what the dimensions were on the freebie. It wasn't labeled. Perhaps it was too wide to begin with.

    Maybe this is where your problem lies.
    How did you write the g-code without knowing?
    Too many variables here wich could give you these results.
    The bigger tracks,Are they measuring the correct width with a vernier after you have cut them?


  • Hero Member

    I assumed the width on the freebies was 0.1mm, because that's what was advertised on Jack's posting for the machine. However, I don't know how to verify that, so the uncertainty comes in whether Jack actually delivered what was advertised or slipped in something else. I chose to give Jack the benefit of the doubt.


  • Hero Member

    If I were to enter a wider tool diameter of 0.155mm (instead of 0.1mm) into flatcam, I think I can coax flatcam into generating better g-code for this situation. I'll do that and then post the results.


  • Mod

    @neverdie have you verified isolation between the parts? The cut is good?


  • Hero Member

    No improvement really:
    0_1514155765889_etch8.jpg

    I think this means that the effective cutting width is actually greater than that, either from the bit itself or from runout or from who knows what else.

    Probably nothing I can do about runout, except buy a different/better motor.

    I'll have to wait for the etching bits from Aliexpress to try what is maybe (?) a proper 0.1mm etching bit. Like I say, I have no way of judging whether the freebies that came with the kit really are that or not, as I have nothing to compare.

    By the way, my reason for picking the 0.155mm tool width in flat cam is that it produces this g-code path, which should have preserved more of the copper pad where it was being obliterated:
    0_1514156432764_better-gcode.png



  • Yes you can. Get the gcode I've posted above, adjust for your feedrate, autolevel it in cp and give it a go. Really curious about the results.


  • Hero Member

    @mfalkvidd said in CNC PCB milling:

    @neverdie have you verified isolation between the parts? The cut is good?

    Good question. I have doubts about how well I could measure it using calipers. However, maybe if I put the board onto a flatbed optical scanner, which would have a known DPI, I could measure the actual cut width with reasonable accuracy. I haven't done that yet, though.



  • @NeverDie Using traces one next to other at known distance you can determine the exact width of the engraving for a wanted depth of cut. I know you don't want to mess with gcode, but it's simpler than you think. Please look at the code: you have init (g92 for setting zero, g21 for mm, etc) you set the feedrate in mm/sec, you have a few movements (g0) a "dwell" to pierce the copper for 0.5seconds (g4) then some cutting moves (g1) all have absolute cartesian coordinates. Eg you're at (0,0) then g1 x0y10 means travel at (0,10) move only the y axis 10mm to the back of the machine, g1 x0.1y10 means move 0.1mm to the right, etc.
    You have the whole script posted above, set your feedrate the same as you set in flatcam, and set the depth in the first z-0.1mm line, maybe you want 0.05mm for eg. After editing the file run it in cp with autoleveling and post the results.


  • Hero Member

    @neverdie said in CNC PCB milling:

    @mfalkvidd

    Oh, sorry, I realize now you were asking something else. No, I haven't verified that yet. This is all just early attempts. Good question though.


  • Hero Member

    @executivul said in CNC PCB milling:

    Using traces one next to other at known distance you can determine the exact width of the engraving for a wanted depth of cut.

    OK, I think I see what you mean. In other words, when the two cuts just barely bleed into one another, then one can deduce the width of the cut as being the absolute width between the absolute coordinates of the lines it's trying to cut. Makes sense. I'll give it a try. Thanks for the suggestion. 🙂


  • Hero Member

    Good news. I just received my model 2 bits from Aliexpress. Model 2 is 20 degrees with a 0.1mm tip. I compare it here to the freebie bits from Jack:
    0_1514161170351_bits_compare.jpg
    Model 2 is on the right, and Jack is on the left. Looks like the angle is wider on Jack, which I presume (?) means that the tip is wider than 0.1mm.


  • Hero Member

    Well, I thought the model 20 would do better, but it actually did worse:
    0_1514162531708_model20.jpg
    It does seem to cut smoother lines though.


  • Hero Member

    I also received model 6, which is the variety pack that includes a 10 degree bit with a 0.1mm angle. Should I give it a try? I've read that they're prone to create flying shrapnel. Anyone here have experience with them? If it doesn't blow up, it might be just the ticket for doing this cut.


  • Hero Member

    I just now tried the Model 10:
    0_1514166455895_model10.jpg
    Rougher edges, but it didn't decimate the pads as badly as the model 20.


  • Mod

    @neverdie sorry for being unclear. I was thinking of just using a multimeter in continuity mode to verify that there is no connection between parts that should have no connection.


  • Hero Member

    Merry Christmas, @executivul
    Here is the output of your script using a Model 20 bit:
    0_1514220979736_executiveval1.jpg



  • @neverdie Marry Christmas!
    What feedrate did you use? (F parameter) and what engraving depth? (G01 Z-0.1?)
    The jagged edges make me believe your feedrate is a bit high for the used rpm. You can run the first gcode to determine the best feedrate, or just use something low like 200mm/min and maybe a little deeper engraving.
    It seems that your engraving is about 0.25mm wide, the 0.1mm is clear, 0.2mm is clear, 0.3mm is partially clear, from 0.4mm onwards you see the spacing between passes.


  • Hero Member

    @executivul said in CNC PCB milling:

    G01 Z-0.1

    I did it again with F200 this time:
    0_1514228662588_executiveval2.jpg

    Doesn't look like the autoleveling is working so well, even though I had it probe every 2mm.

    I think I may try covering 100% of the back of the pcb with tape. Maybe spacing it out has created this kind of artifact.

    Not that it matters, but here's how it looks in ChiliPeppr:
    0_1514229052919_cp.png


  • Hero Member

    @neverdie Oops. It was F1400.00, which is what your script had. It must have overridden the F200 I had entered manually before running it.


  • Hero Member

    Here it is again, after I modified @executivul script to be F200:
    0_1514230978381_F200.jpg


  • Hero Member

    Here's something I've noticed. Before running the auto-leveling, I run a test probe and then zero everything out when it makes contact. After running auto-leveling, if I run the test probe again, it generally reads about 0.05 higher than where I zeroed it out after the first test probe before the auto-leveling. Meaning?


  • Hero Member

    Wow! Here's Jack's bit at a cutting depth of 0.05 and a feedrate of 200:
    0_1514233434394_jacksbit.jpg

    Seems to blow away the Aliexpress Model 20.


  • Hero Member

    Anyhow, I'm not sure what all this means, but 6mil isolation milling seems like a stretch, unless there's more that I can do to get there.

    What's a conservative number for mill isolation that I can count on getting without having to fuss over it? @executivul was getting 8mil. @andrew was getting 6 mill. So, maybe I can bank on getting 12 mill for sure without much effort such that it "just works"?



  • @NeverDie
    The last bit tested is under 0.1mm wide. WOW!
    Remember to:
    -pre run: set the autolevel probe limits and a speed of 25mm/s
    -run the probing: and DON'T redo Z probing after autolevel, it messes things up, use the same bit for probing and engraving.
    -post run: "send autoleveled gcode to workspace"
    Go slower, 100-150mm/min, afterall you don't need 6mil traces for a huge board so time is not an issue here.

    PS. try some water/shampoo mix, it kinda' helps with engraving, cooling, lube, I don't know.

    PPS. I've moved to opencncpilot lately (last 2 boards), free on github, a short tut on the tube, it has a great feature that is to break long moves in 5mm segments, works better for bowed/wavy boards.


  • Hero Member

    @executivul Do you cut everything in one pass, or do you use multiple passes (each pass at a deeper depth)? Flatcam supports multiple passes, though I have been using only 1 pass.


  • Hero Member

    @executivul
    Thanks for the tips. Here is Jack's bit again, this time at F100. Even better!
    0_1514236520133_F100-3.jpg


  • Hero Member


  • Hero Member

    Time to see whether this machine can cut the mustard or not. I just did a 5mm autoleveling on the following:
    0_1514243813034_top_coincell_th_v023.png

    and now I'll try cutting it using Jack's bit.


  • Hero Member

    Here's the result:
    0_1514258043934_mustard.jpg
    The above was cut at a depth of z=-0.1, and still not all the paths cut completely through. Yet, In the middle one of the traces got obliterated.

    I'm afraid I'm unlikely to make it work at the resolution that I'm able get from the fab. It's close, but no cigar. So I think it's better suited for earlier prototyping work that's not so optimized for space. For that it might be very handy. Then I can both cut deeper and also not worry about trace obliteration.


  • Hero Member

    By the way, do any of the programs have built-in verification after the cutting, where it can probe to verify that the trace is throughly cut (i.e. no continuity with ground)? Seems like it should be easy to do, at least in theory, by using a method similar to the probing for auto-leveling, except probing each track instead.



  • @neverdie Congrats for your result, I use a "copper pour" all over the board, that makes it pass at least 2 times, once for the track and once for the pour isolation. I never mess with flatcam's multiple passes, but I believe you can get the same results. What you see in the middle are copper "silvers" that is copper left behind between traces.
    From the last picture of the width test is seems your bit is engraving 0.1mm wide.
    Try to use OpenCNCPilot instead of Chillipeppr and set the lines to be split at 1-2mm lengths and probing each 2-3mm. That should make the engraving depth more uniform.
    I see a couple copper flakes, maybe go even slower than 100? And give it a light sandpaper with 1000 grit or a scotchbrite sponge and some abrasive detergent for dishes?


  • Hero Member

    @executivul Thanks!

    For the convenience of others reading this thread, here's a quick youtube:
    OpenCNCPilot relased - new Autolevelling GCode Sender for GRBL – 03:28
    — martin2250

    I'm surprised to learn that not all auto levelers do it that way, because it seems like the only right way to do it. I'll give it a try.


  • Hero Member

    Well, for some reason when I connect using OpoenCNCPilot, it turns the spindle on at maximum speed. I tried turning it off with the command 'S0', but it had no effect. So, I manually disconnected the wire that powers the spindle. Surely, there's a better way?

    Anyhow, after doing that, I notice that the motors are making a really loud shrill sound, even though they're not moving. So, something is definitely FUBAR the moment I connect.

    I had to disconnect and then connect using chilipeppr to have it all return to normal.

    Maybe @andrew can try it? Perhaps there's a workaround that's not self-evident to me, but perhaps would be to someone else.



  • @neverdie OpenCNCPilot needs latest grbl 1.1f


  • Hero Member

    OK, I'll resume the search for my dragon....

    Meanwhile, I should be receiving my CNC drill bits and routing bits (to cut the board outline) fairly soon. Will I be using Chillipeppr to do those tasks (I'm guessing so) or something else?



  • @neverdie I have an idea, why don't you open the gcode in Opencncpilot, simplify it, split long moves, save it and then open in chillipeppr and do the probong and actual milling?


  • Hero Member

    @executivul Brilliant idea! Simplifying, the line count went from 3609 to 3608. Converting arcs to line segments had no effect. Then, splitting every 1mm, it went to 4114. I copied it into a new file, and now I'll see how it runs using chilipeppr.


  • Hero Member

    Results look much better this time:
    0_1514394977526_better.jpg
    Using Chilipeppr, I probed every 3mm and then let it rip. As before, it was cutting at z=-0.1 and a feedrate of 76.2 (the feedrate wasn't a conscience choice but rather just what flatcam gave me, for whatever reason).

    The good news is that it doesn't have the blatantly obvious trace obliteration that it had the first time. All in all, it looks like a definite improvement. 🙂



  • @neverdie Seems like it's getting better, still some traces in the middle are hairthin, maybe increasing tool size in flatcam a tad? like 0.12mm so it lets the tracks be wider. Bare in mind this is a prototyping machine, I use mine for low batch home automation boards, under 20 boards of the same kind, at the price of a blank pcb I can buy 10 for the price of one fab made 100x150mm, not to speak of wait time.

    After you are satisfied with the board is time to get some plumber's paste for soldering copper pipes, that is used for tinning, or maybe you can find some liquid tinning solution, but that's more expensive here, I use the paste.

    Then some soldermask and some uv led strips to make an exposure unit and there you have your own pcb fab at home 😎


  • Hero Member

    @executivul How much overlap in flatcam are you using? I've been using zero. Would changing it to something non-zero help, or is it irrelevant?



  • @neverdie I never do multiple passes, so overlap is irrelevant to me...


  • Hero Member

    When I probe at 2mm, it often randomly fails with messages like this:

    Moving to {x:12,y:28}
    probe failed, clear controller alarm before resuming
    Paused
    Working on probe for {x:12,y:26} Found lowest Z:0.17499999999999996
    Paused
    

    What is causing these "probe failed" to happen? And how exactly am I supposed to "clear controller alarm"? It always seems that I need to disconnect from the serial port and then reconnect to get any further movement. But if I do that, it clears the x,y,z positions, effectively preventing any kind of sensible resumption. 😞


  • Hero Member

    Argh, it just happened again. This time when doing 3mm probing.

    Moving to {x:12,y:27}
    probe failed, clear controller alarm before resuming
    Paused
    Working on probe for {x:12,y:24} Found lowest Z:0.23000000000000004
    Paused
    

    How does it even decide that a probe error has happened?



  • @neverdie timing racing condition is f*king spjs, ugly hack is to try to increase probing starting height from 0.5mm to 1.0mm


  • Hero Member

    It's hard to photograph these etchings. They actually look better by eye. I tested out the last one with a continuity meter, and it seems that it would be functional (in the sense that the traces were isolated from what they should be and they connected the pads that they should.

    However, without the solder mask, I'm doubtful those closely packed micro-usb pads on the middle left near the edge would be solderable without bridging.

    I really hadn't considered I would ever need to do solder mask, I guess because the demo boards I've seen other people make don't seem to have it.

    So, maybe a better question is: what is the minimum isolation width so that I won't need solder mask? Perhaps that becomes the limit for prototyping.

    Anyhow, I'll look into it, but I really hadn't planned on taking that extra step.


  • Mod

    neverdie said in CNC PCB milling:

    It's hard to photograph these etchings.

    Do you have a flatbed scanner? Not sure if the copper reflects too much light, but the focus should be good.


  • Hero Member

    They keep getting better!
    0_1514418020243_2pass.jpg
    I used a fresh Jack bit to get this one. The tip on the bit used in the previous etching was a bit worn down, which I think explains the undesirable width of its cuts. I also dropped the feedrate to 50mm/minute, which may have helped also. Anyhow, most of the cuts seem very crisp compared to earlier attempts. As before, I split the line segments into 1mm lengths using the OpenCNCPilot. I think that is probably helping a lot.

    I did this one is two passes. The first pass was z=-0.05, and it didn't cut through enough of the copper. The second pass was z=-0.1, which is what you see above. Yet, some of the traces on the micro-usb on the middle left still don't seem fully isolated, so I'm about to try a third pass at z=-0.15

    Also, this was the first job I ran with autoleveling set at 2mm. Perhaps that helped also.


  • Hero Member

    I received my end-mill bits for cutting the PCB loose from the rest of the copper clad blank. Which got me thinking: since I have doubled sided tape on the back of the PCB blank, I presumably don't need mouse bites or similar, right? I should be able to just cut the board outline by cutting through to the sacrificial board underneath, right? Is that what others here are doing? Or are you milling tiny little supports that you break away at the end?

    Regardless, what diameter end mill bit should I use for the task? What cutting depth? I'll look back to see if it's in @andrew 's list of magic numbers, but anyone else feel free to post what you like to use and do.

    https://www.aliexpress.com/item/10Pcs-Set-1-8-0-8-3-175mm-Drill-Bits-Engraving-Cutter-Rotary-PCB-CNC-End/32774556522.html?spm=a2g0s.9042311.0.0.BShrFG


  • Hero Member

    Here's what @andrew had to say:

    edge cut or hole milling with the 0.8mm endmill:
    
    feed rate: 170
    z cut: -1.7mm
    multi depth, depth/pass: 0.2mm
    

    So, I guess by "z cut: -1.7mm", he likely meant that as a Z that's -1.7mm below the depth of the PCB? I'm not sure how else to interpret that. Hmmm.. I think he assumed the board thickness of 1.5mm, so he gave is 0.2mm more than that. Mine (being single sided) is 1.35mm, so I'll set cutting depth to 1.6mm, just to be sure.

    Aside from that, 0.8mm end mill and multiple passes at a feed rate of 170. So, I guess I use flatcam to produce the gcode that conforms to this and then run it in Chilipeppr.

    And, it looks like flatcam adds the cut-out supports automatically. Nice.


  • Hero Member

    Argh. Another probe failure:

    Moving to {x:4.430000007152557,y:19.430000007152557}
    probe failed, clear controller alarm before resuming
    Paused
    Working on probe for {x:4.430000007152557,y:24.430000007152557} Found lowest Z:0.051000000000000156
    Paused
    

    even though I have it set to start probing at z=1.0mm. This really needs to be fixed.


  • Hero Member

    Unfortunately, I botched the third etching pass. My fault. But I decided to try the board cutout anyway:
    0_1514427613353_cutout.jpg

    I didn't see a way for flatcam to do a circular cut-out, so I just went with the rectangular cut-out. Anyhow, it worked.

    I receive my CNC drill bits on Friday, so after that I should be able to do a complete PCB of some kind. 🙂


  • Hero Member

    @neverdie said in CNC PCB milling:

    This really needs to be fixed.

    I wonder whether increasing the priority of the tasks using the Windows task manager might help at all? Perhaps some background tasks are interfering and slowing things down to the point where cp can't keep up with real-time?



  • @neverdie there is a tutorial for custom board cutout in flatcam, "google it baby", it involves manually using open_gerber and follow commands. I'm on the phone and can't find it right now.
    Regarding cutout I sugest you use 0.5mm depth and 100-150mm/min with 0.8mm endmill. Your spindle is pretty low rpm. I use 1mm depth and 300-400mm/min, 2 passes, 1.6mm thick pcb, about 40k rpm.


  • Hero Member

    For those who are interested, this is the best solder mask tutorial I was able to find:
    Green Solder Mask / Dynamask / Solder Resist on PCB's by Rembrandt Electronics – 08:53
    — Rembrandt Lights

    It doesn't look too bad, but I'd still rather not go there if I can avoid it.

    However, this process doesn't seem optimized for people who are doing, say, .1mm etchings around their pads. I mean, couldn't one squeegee in the solder mask, uv cure it, and then remove what trace amounts might remain on the pads themselves by burnishing it off with a scotchbrite pad or something? I mean, for quick and dirty results that work well enough for prototyping, that's what I'd have in mind. Anyone try something like that?

    The techniques on youtube for using solder mask goop aren't optimized for people who have veritable canals around their solder pads. Why not take advantage of that?



  • @NeverDie oh, you've a lot of stuff and update since my last visit here. I've just a couple of minutes now, so I just quickly checked the new posts. let me give some further details/tips to you based on the issues I see:

    • flatcam does support hole milling. when you select the given drl file (project tab) you can select all of the given holes (selected tab) which you want to mill, then scroll down (see screenshot below) where you can generate the hole milling geometry. 0_1514475910968_Screen Shot 2017-12-28 at 16.36.02.png
    • you can find my edge cutting related details/setting in my previous posts. using the edge cuts grbl file loaded to flatcam you can generate the corresponding milling path. I use multiple passes to be sure that the spindle will be able to handle the process. you can generate the tool path from the gui as well, but I prefer the gui's command line (see the bottom line at the screenshot). use the "help" command there. for non rectangular boards I use the combination of isolate command, together with exteriors or interiors commands and with the geocutout command if it is necessary.
    • in case of the autoleveling there is a safety related parameter which describes the max touch depth/travel. if the spindle has to move more, than that will trigger an error. be sure, that the safe moving Z distance and the max touch probe distance on Z axis is properly configured.
    • some of your isolation results are not too nice. I would double check your cnc assembly. be sure that the x axis is parallel with the cnc bed, which is also "flat" and do not have any angle. autoleveling could make the results better, but properly adjusted xyz axis with bed is essential.
    • for isolation I use multiple passes. usually 3-5 times of the tool width. I do use overlapping, usually I calculate the overlapping to be 10-20% of the given tool width.

    happy hacking with the cnc 🙂


  • Hero Member

    @andrew

    Are you doing solder mask, or have you been able to avoid that? I take it that you're also not tinning?

    BTW, @executivul 's suggestion of using the OpenCNCPilot to break line segments into smaller lengths prior to autoleveling is genius. A+ Recommended.


  • Hero Member

    @mfalkvidd said in CNC PCB milling:

    neverdie said in CNC PCB milling:

    It's hard to photograph these etchings.

    Do you have a flatbed scanner? Not sure if the copper reflects too much light, but the focus should be good.

    Yes, I may give that a try. Also, I think using a usb microscope to pan over the surface might make a lot of sense, since it would show more detail.


  • Hero Member

    @andrew said in CNC PCB milling:

    I would double check your cnc assembly. be sure that the x axis is parallel with the cnc bed, which is also "flat" and do not have any angle.

    To that end, it sure would help to have some adjustment knobs. Is there a kit for that? Then I could dial it in exactly.

    Lacking that, though, I suppose if the sacrifice board is flat enough then I could just shim it with sheets of paper at the corners near the hold-downs. That might be more precise than just loosening and re-tightening (after nudging) the guide rail bolts, hoping for improvement.


  • Hero Member

    So, I decided to relax the constraints and go for something easier, like a simple circuit for a load switch that uses an SOT23-6 and three 0603 SMD components:
    0_1514492443374_loadSwitch.jpg
    The etching came out perfect the very first time. 🙂 I cut it using a new Jack bit, and I cut it to a depth of z=-0.15 using three flatcam passes, each -0.05 deeper than the prior one. I tested it with a contuinity meter, and isolation is perfect. 🙂

    BTW, I used OpenCNCPilot to break line segments down to 0.5mm, and I probed the board surface at 1mm for the autoleveling.

    Next, I need to try soldering it to see what life without solder mask is like. To that end, would I be better off with wider cuts?



  • @neverdie perfect result. I would however go for -0.15 depth from the start and maybe more passes for wider engraving, or using a 0.2mm bit. The small copper between pads of the chip should be gone, at least for my sloppy soldering sessions😉

    LE. I always try to look in flatcam at the cnc paths (blue) if they cover completely the space between pads.



  • @neverdie I've had a nasty idea: try using a sharpie (very thin permanent marker) as soldermask, a few lines between the pads, just enough to stop the solder from bridging.
    Might resist the heat for a short while and do the job, specially the nasty chemical smelling ones, I believe they are more like a paint than like water colours.
    PS. It's just a never tested idea, don't blame me for weird drawings on your pcb.


  • Hero Member

    @executivul Yes, or use solder mask with a fountain pen or syringe or something to get it into those crevices. I do think the squeegee idea might work. Pack it in, wipe off the copper with a paper towel, and then bake it with uv. Seems like it might be fast and easy. Seems like you could always burnish any remainder off the pads. Not having tried it, but I don't see what can go wrong. And you only need it around the tricky pads, not the entire board.


  • Hero Member

    Also, there's this solder mask, which you can cure with a heat gun:
    https://www.amazon.com/MG-Chemicals-Peelable-Solder-Mask/dp/B009V1JZE6/ref=sr_1_1?ie=UTF8&qid=1514496094&sr=8-1&keywords=solder+mask
    and maybe you can peel it off any pads that it accidently stick to.


  • Mod


  • Hero Member

    @executivul said in CNC PCB milling:

    I would however go for -0.15 depth from the start

    Why is that better than multiple passes to get that depth? Isn't the tip less likely to break if multiple passes are used?

    BTW, I ordered the peelable solder mask, so I'll see how that goes. It should arrive tomorrow.


  • Hero Member

    Exact same procedure as last time, except this time using the Model 20 and a different etching pattern:
    0_1514506130689_model20_2.jpg

    Meh, I'm not sure it's really an improvement. The model 20 jbit ust doesn't seem to cut as cleanly as a Jack bit.

    BTW, I increased the windows task priority of the browser (and, there, Chilipeppr) and also the serial port jason server, both to High. Since then I haven't had any probe failures. Causation, or luck? Time will tell.


  • Hero Member

    @neverdie said in CNC PCB milling:

    So, I decided to relax the constraints and go for something easier, like a simple circuit for a load switch that uses an SOT23-6 and three 0603 SMD components:
    0_1514492443374_loadSwitch.jpg
    The etching came out perfect the very first time. 🙂 I cut it using a new Jack bit, and I cut it to a depth of z=-0.15 using three flatcam passes, each -0.05 deeper than the prior one. I tested it with a contuinity meter, and isolation is perfect. 🙂

    BTW, I used OpenCNCPilot to break line segments down to 0.5mm, and I probed the board surface at 1mm for the autoleveling.

    Next, I need to try soldering it to see what life without solder mask is like. To that end, would I be better off with wider cuts?

    I think ideally the CNC would remove all of the extraneous copper that's near the pads. That way there'd be no risk of solder bridging to the extraneous copper. However, how to do that? The software doesn't obviously support removing extraneous copper.

    Here's an example:
    ![alt text](image url)


  • Hero Member

    Here's the Model 20 bit again, but this time with flatcam being told that its width is 0.25mm:
    0_1514533155515_model20_3.jpg

    The pad widths are just not as uniform as with the Jack bit. On the other hand, it looks like it should be less prone to solder bridging.


  • Hero Member

    @andrew How are you managing the alignment on your double sided boards, such that when you flip the PCB over to mill the other side too, all the via holes, etc., are lined up where they should be?



  • @neverdie said in CNC PCB milling:

    Here's the Model 20 bit again, but this time with flatcam being told that its width is 0.25mm

    how flatcam told you the width or how do you calculate the tool width? it should be specified by you, flatcam does not know how to calculate the tool width in case of carving bits, it varies with the milling depth and depends on the tip's angle and end width. please see the corresponding mathematic formula mentioned in my previous posts.

    you have to generate the isolation routing G code for a specific tool/bit, it cannot be re-used for a different sized one.

    @NeverDie

    • flatcam supports double sided pcb milling with proper alignment holes. using them the isolation routing will be precisely aligned on both sides. you have to drill the alignment holes first, then make the isolation routing on the bottom side, then turn the pcb and finish the isolation routing and the drilling on the top side. it is also highlighted on flatcam's website: http://flatcam.org/manual/procedures.html#side-pcb
    • for isolation routing it is useless to make multiple passes for multiple depth.
    • to make the isolation routing width larger, you should use multiple passes. this is necessary to create a large enough isolation width. to be sure that all copper will be removed between the different passes (e.g. due to cnc inaccuracy or backlash) you should use overlapping. see http://flatcam.org/manual/procedures.html#wide-isolation-routing
    • flatcam supports full copper removal, so it is possible to keep only the traces and pads, although with a carving bit it is very time consuming. you should use endmils for this job. see http://flatcam.org/manual/procedures.html#copper-area-clear
    • it is possible to solder smd parts without solder mask, it is just question of the technique / tool. I've no problem with 0805 sized smd parts and tqfp100 housed ICs, however it is easier to do it if you have solder mask, of course. if you would like to prevent the oxidation only, then you can use tinning. for this purpose I use chemical tinning.


  • @andrew said in CNC PCB milling:

    to make the isolation routing width larger, you should use multiple passes. this is necessary to create a large enough isolation width. to be sure that all copper will be removed between the different passes (e.g. due to cnc inaccuracy or backlash) you should use overlapping. see http://flatcam.org/manual/procedures.html#wide-isolation-routing

    Just to clarify that what andrew is talking about is multiple radial passes with an offset further away from the track/pads each time.
    Not multiple passes in the depth.😕



  • @rmtucker said in CNC PCB milling:

    @andrew said in CNC PCB milling:

    to make the isolation routing width larger, you should use multiple passes. this is necessary to create a large enough isolation width. to be sure that all copper will be removed between the different passes (e.g. due to cnc inaccuracy or backlash) you should use overlapping. see http://flatcam.org/manual/procedures.html#wide-isolation-routing

    Just to clarify that what andrew is talking about is multiple radial passes with an offset further away from the track/pads each time.
    Not multiple passes in the depth.😕

    exactly


  • Hero Member

    Bah! It did drill 6 holes, but it grouped them so close together that it looks like two holes instead:
    0_1514589660267_holes.jpg

    I suspect an inches instead of mm error may be the culprit, but I haven't checked it yet. For sure the scaling for positioning the drill holes seems way off.


  • Hero Member

    Strangely, flatcam seems to show roughly the correct hole size (0.9mm), yet the x and y dimensions are way off:
    0_1514598276766_hole_grouping.png
    So, I took a wild guess that maybe it was off by a scaling factor of 25.4. Well, that did produce 6 separate holes, but they missed the target pads by a huge amount:
    0_1514598365597_sixholes.jpg

    I'm stumped. I'm not sure where the disconnect is. Anyone seen this problem before?


  • Hero Member

    So, I tried a couple more wild guesses, and the last guess was a match. It turns out that the scaling is off by a factor of 10x:
    0_1514599754881_factor10.jpg

    I have no idea why the scaling is in error, but at least now I have an antidote. 🙂


  • Hero Member

    @executivul I've now done a couple thousand auto-leveling probes in Chilipeppr with no probe failures. If it helps you at all, I think elevating the task priority to "High" on the browser (I use chrome) and the serial port jason is what made the difference. I've not had any probe failures at all since doing that.


  • Hero Member

    The corrected drilling works:
    0_1514613327328_good_result.jpg
    The etching, though, seems to have a lot of variability in crispness from one etching to the next.



  • @neverdie why do you use any scaling factor at all? be sure you export the grbl files with proper metrics, then apply the given metrics settings in flatcam (it has global and project specific settings as well), then no scaling is necessary.


  • Hero Member

    @andrew said in CNC PCB milling:

    @neverdie why do you use any scaling factor at all? be sure you export the grbl files with proper metrics, then apply the given metrics settings in flatcam (it has global and project specific settings as well), then no scaling is necessary.

    I'm using Diptrace. I export from Diptrace an "N/C Drill" file. Then, when in flatcam, I open it as an Excellon file. Perhaps an "N/C Drill" file is not 100% compatible with an Excellon file opened from within flatcam? Perhaps there is some other way?


  • Hero Member

    @andrew said in CNC PCB milling:

    @neverdie why do you use any scaling factor at all? be sure you export the grbl files with proper metrics, then apply the given metrics settings in flatcam (it has global and project specific settings as well), then no scaling is necessary.

    It turns out to be a known issue for users of both diptrace and flatcam:: https://muut.com/i/flatcam/usage:diptrace-drill-file-off-sca


  • Hero Member

    Here's my first milled PCB that's standalone:
    0_1514650576252_firstPCB.jpg


  • Hero Member

    I soldered on three 0805 components, but afterward I was surprised to find that all three were shorted (tested using a cotinuity meter):
    0_1514682102076_firstPCB2.jpg
    I thought I had been reasonably careful soldering them on too, so I'm not sure what went wrong.

    Scratch that. I found that the faults were measurement error. Re-testing it, it checks out 100%. No shorts. 🙂


  • Hero Member

    This morning I soldered on the load switch IC. I then tested the circuit, and voilà, it works. 🙂
    0_1514738168507_loadSwitch_works.jpg
    Fortunately, solder doesn't seem attracted to the PCB substrate, and it behaves like solder mask. 🙂

    By the way, the PCB above it I cut out with tin snips, which is very fast and avoids all the dust generated if using the CNC to route the board outline to release it from the copper clad blank. The result looks crude, but that doesn't matter if it's just for prototyping.


  • Hero Member

    @andrew Are you planning to provide more detail about how to setup and do double sided PCBs, or is it pretty much RTFM at this point? Just wondering. Your earlier posts were very thorough and helped a lot.


Log in to reply
 

Suggested Topics

  • 4
  • 1
  • 5
  • 9
  • 274
  • 2

0
Online

11.2k
Users

11.1k
Topics

112.5k
Posts