CNC PCB milling



  • @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.


  • Hero Member

    @executivul I noticed this youtube video, where they use mineral oil for dust containment:
    ProCAM with Circuit Maker Tutorial - Mill PCBs with Prometheus – 16:29
    β€” Zippy Robotics, Inc

    Have you tried that?



  • @neverdie no, I haven't. I don't have the oil and I don't want to mess with anything non water soluble. To much hassle to clean the machine afterwards in case of splashing.


  • Hero Member

    I think if I could upgrade the z-axis to use a ball-screw, I would do that, because I notice a lot of variability in cutting depth from one CNC session to the next. However, I don't see an easy way to upgrade this machine to use a ball screw.

    So... alternative might be to add a linear motion tracker to the z-axis. Unlike a rotary encoder, it wouldn't be fooled by backlash. The question then, though, would be: which software to use? I don't know that chilipeppr can take advantage of the closed loop feedback.


  • Hero Member

    So, notionially, the height measurement might look like:
    https://www.amazon.com/Woodhaven-6015-Digital-Readout-6000-6004/dp/B004BUGW8E/ref=sr_1_16?ie=UTF8&qid=1514743618&sr=8-16&keywords=digital+height+router
    but preferably with some kind of known digital interface for reading the height, so it doesn't have to be reverse engineered just to extract that basic information.


  • Hero Member


  • Hero Member



  • No offence but upgrading with dro, ballscrew, stronger stepper, beefier driver, you end up with more cost than buying a real cnc platform like 3020 or 3040 😁
    That machine has great results for its price, maybe relaxing tolerances a bit in design and using larger bits would achieve better predictibility.
    Happy new year! Happy new toys!


  • Hero Member

    Not sure why I'd have to buy a bigger machine in order to get quality parts, yet it is true that none of the 2418 kits appear to come with ballscrews. Strange how that is. In terms of just size alone, though, the 2418 seems about right for etching hobbyist circuit boards. If anything, it could be a little smaller. Does the sheer mass of the bigger machines somehow help with accuracy (maybe less vibration for instance)?

    The ballscrews themselves, and even the linear scales, don't seem all that expensive, which is why I thought maybe upgrading even just the z-axis might make sense.

    If nothing else, replacing the stepper motor with either a larger stepper motor (less skipping) or some kind of servo equivalent might at least put a cap on how far off the z-axis is from what is assumed. In that case, I would think the maximum error would less than or equal to the maximum possible backlash.

    Anyhow, any suggestions appreciated.


  • Hero Member

    I'll need an adapter plate to go from Nema 17 to Nema 23. Will the existing motor drivers be able to handle a Nema 23?


  • Hero Member

    Well, maybe the simplest upgrade would be to upgrade to a higher torque nema 17 motor, such as:
    https://www.aliexpress.com/item/Nema17-stepper-motor-60mm-length-1-7A-0-73Nm-7-3kg-cm-104Oz-in-High-torque/32727142878.html?spm=2114.search0104.3.1.RoU5IE&ws_ab_test=searchweb0_0,searchweb201602_2_10152_10065_5000015_10151_10344_10068_10130_10324_10342_10547_10325_10343_51102_10546_10340_10548_10341_10545_5130015_10084_10083_10307_5920012_10312_10059_10313_10314_10534_5790011_100031_10604_10103_10594_5060015_10142,searchweb201603_2,ppcSwitch_5&algo_expid=31255370-90b4-4695-94c0-997d9d68e388-0&algo_pvid=31255370-90b4-4695-94c0-997d9d68e388&rmStoreLevelAB=5

    or

    https://www.aliexpress.com/item/14-1-Planetary-Gearbox-High-Torque-Nema-17-Stepper-1-68A-CNC-Robot-3D-Printer/32585666715.html?spm=2114.search0104.3.22.RoU5IE&ws_ab_test=searchweb0_0,searchweb201602_2_10152_10065_5000015_10151_10344_10068_10130_10324_10342_10547_10325_10343_51102_10546_10340_10548_10341_10545_5130015_10084_10083_10307_5920012_10312_10059_10313_10314_10534_5790011_100031_10604_10103_10594_5060015_10142,searchweb201603_2,ppcSwitch_5&algo_expid=31255370-90b4-4695-94c0-997d9d68e388-3&algo_pvid=31255370-90b4-4695-94c0-997d9d68e388&rmStoreLevelAB=5

    or perhaps even

    https://www.aliexpress.com/item/High-Torque-NEMA-17-Planetary-Gearbox-Stepper-Motor-25N-m-3472oz-in-100-1-40mm-Motor/32789989913.html?spm=2114.search0104.3.56.RoU5IE&ws_ab_test=searchweb0_0,searchweb201602_2_10152_10065_5000015_10151_10344_10068_10130_10324_10342_10547_10325_10343_51102_10546_10340_10548_10341_10545_5130015_10084_10083_10307_5920012_10312_10059_10313_10314_10534_5790011_100031_10604_10103_10594_5060015_10142,searchweb201603_2,ppcSwitch_5&algo_expid=31255370-90b4-4695-94c0-997d9d68e388-8&algo_pvid=31255370-90b4-4695-94c0-997d9d68e388&rmStoreLevelAB=5

    Not sure what kind of impact it might have on the feedrate....

    The idea is that the higher torque would eliminate missed steps, provided that the feedrate is low enough.



  • @neverdie
    I think you should start by altering the acceleration/Max velocity settings etc in grbl.
    Slow them down a littleπŸ˜€


  • Hero Member

    @rmtucker said in CNC PCB milling:

    I think you should start by altering the acceleration/Max velocity settings etc in grbl.

    I don't see those parameters exposed in flatcam or in chilipeppr either. I guess I have to set them by issuing the grbl commands manually?



  • @neverdie
    Yes or use bCNC to set them.


  • Hardware Contributor

    Would this be something good to do? https://www.youtube.com/watch?v=7rVmiRgsI1M
    Cut a complete flat peace of wood with the cnc machine?


  • Hero Member

    @rmtucker said in CNC PCB milling:

    @neverdie
    I think you should start by altering the acceleration/Max velocity settings etc in grbl.
    Slow them down a littleπŸ˜€

    This was good advice! I arbitrarily reduced both to 50% of their default values, and so far it appears that repositional accuracy has improved.



  • Normally i would turn one up at a time until the motors lose steps,then pull them back 20%.


  • Hero Member

    @rmtucker How are you noticing when the motor skips? Is it from noticing a delta in test probe depths?

    Also, what's a reasonable target for repositioning accuracy? i.e. if I set z to zero after doing a test probe, then move it around a bunch, and then return to the same x and y position and drop another test probe, how far off from zero is the second test probe? Presently I only have a few datapoints, but so far it's suggesting maybe a maximum of 0.025mm after having done the 50% reductions, whereas before the reductions (i.e. default values) it was more than 0.05mm (maybe a lot more), which is just too much.

    alt text



  • @neverdie
    Hmmm how long is a piece of string.πŸ˜€
    My machine is on a much larger scale but the principal is the same.
    Is this a mechanical inaccuracy or lost steps?
    Make yourself a small program that rapids each axis in turn from one end of the axis to
    the other.
    On my own machine the motors are running pulleys to the leadscrews/ballscrews.
    I place a mark on the pulleys and a pointer (pin and blue tac) when the machine is at 0,0,0.
    I run the program and adjust the accel and velocity returning to 0,0,0 every time and checking the marks always line up.(If they don't lowering the settings 10% and running again).
    Which eventually proves it is not lost steps.



  • @neverdie
    Forget using probe to begin with as this would show lost steps but also any mechanical inaccuracy.
    Just concentrate on the motors to begin with.


  • Hero Member

    @andrew said in CNC PCB milling:

    @neverdie once the assembly is done, you should adjust the stepper drivers' current limiting as well.
    it is pololu a4988, you can find the corresponding details here:
    https://www.pololu.com/product/1182

    Wow, those Pololu directions bear an uncanny resemblance to this:
    https://www.youtube.com/watch?v=lAdvdX88WDs

    Jokes aside, the Jack stepper motors appear to be rated at 1.3A. @andrew Is that what you assumed when calibrating yours? If so, what Vref did you use? Since the motor driver board is a knock-off, it's not obvious what current sense resistor value to use. i.e. 0.050 ohm, 0.068 ohm, or something else?



  • @neverdie said in CNC PCB milling:

    @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.

    did you manage to create double sided PCB jobs in the meantime based on my suggestion and on flatcam's documentation? it is not a hardcore process, let me know if you stuck at a given step.

    regarding to the mentioned upgrades. I agree with @executivul, it doesn't worth to do that with this machine. feedback from steppers, elevation measuring etc are overkill.

    it's capabilities are more than enough for very precise pcb milling, if you would like to do much more with it, then a different machine could be better instead. if you have issues with the results, then it is configuration / settings / cnc job issue. if you loose steps, then the given stepper driver is not properly adjusted (did you checked the pololu driver configuration from the linked documentation?) or your tool/spindle speed/cutting depth/feed rate is not good for the given job.


  • Hero Member

    @andrew said in CNC PCB milling:

    did you checked the pololu driver configuration from the linked documentation?

    See post immediately above yours.


  • Hero Member

    I guess measuring Vref is moot, because jack's stepper motor driver included in the kit (https://www.aliexpress.com/store/product/board/424291_32807192686.html?spm=2114.12010612.0.0.e009a31x1CJ1s) does not have an exposed via hole for measuring Vref.

    So, that leaves the first Pololu method, which is:

    The A4988 supports such active current limiting, and the trimmer potentiometer on the board can be used to set the current limit. One way to set the current limit is to put the driver into full-step mode and measure the current running through a single motor coil while adjusting the current limit potentiometer. This should be done with the motor holding a fixed position (i.e. without clocking the STEP input). Note that the current you are measuring is only 70% of the actual current limit setting, since both coils are always on and limited to this value in full-step mode, so if you later enable microstepping modes, the current through the coils will be able to exceed this measured full-step current by 40% (1/0.7) on certain steps; please take this into account when using this method to set the current limit. Also, note that you will need to perform this adjustment again if you ever change the logic voltage, Vdd, since the reference voltage that sets the current limit is a function of Vdd.
    

    So, it would appear that in order to put the driver into "single step mode," I must remove the driver board and put it into a test jig (or breadboard) which shorts MS1, MS2, AND MS3 to ground, but otherwise wire up the motor according to this diagram:
    alt text
    but connecting the STEP pin to Vcc on the logic power supply (?) so as to allow a fixed, but continuous, current through a single motor coil, which is what will be measured.

    As to the target current through a single coil that I'll be measuring, I guess it should be (0.7)*1.3=0.91amps?



  • @neverdie said in CNC PCB milling:

    @andrew said in CNC PCB milling:

    did you checked the pololu driver configuration from the linked documentation?

    See post immediately above yours.

    ok, I thought that you already did it, I told it to you long time ago πŸ˜‰

    my controller has 0.1ohm Rcs. the steppers are rated to 1.3A, I configured the drivers to 0.9V which limits the stepper's current to 1.125A.



  • @neverdie no. you don't have to remove the drivers. you have to measure everything in place.
    in the mentioned pololu doc/demonstration it is also noted that the given Vref could be measured on the top of the potentiometer (video 3:15)


  • Hero Member

    @andrew said in CNC PCB milling:

    ok, I thought that you already did it, I told it to you long time ago

    It's done now. The default voltages had been about 0.6v. I just now raised them to 0.9v, same as yours. πŸ™‚


  • Hero Member

    How many microsteps are being used, anyway? I'm not sure where that's defined. Apparently these drivers support up 1/16 steps, but it might be that larger steps are actually being used (?). If so, then maybe going to smaller steps would help?

    I notice one of the Pololu boards has the potential for doing 1/32 steps: https://www.pololu.com/product/2133
    and might even be drop-in compatible.



  • @neverdie said in CNC PCB milling:

    How many microsteps are being used, anyway? I'm not sure where that's defined. Apparently these drivers support up 1/16 steps, but it might be that fewer are actually being used (?). If so, then maybe going to smaller steps would help?

    I notice one of the Pololu boards has the potential for doing 1/32 steps: https://www.pololu.com/product/2133
    and might even be drop-in compatible.

    this cnc controller board is directly pulls the drivers' MS1,2,3 pins to high, which means that it is "hardcoded" to 1/16 microstep. you really don't need smoother steps than this.


  • Hero Member

    @andrew Great that you're back. Did you alter your max speed and max acceleration values at all from the defaults? You didn't list them in your earlier list of magic numbers.



  • @neverdie I still use my default settings (see below). I re-applied these settings after I flashed the board to grbl 1.1f.
    to be honest, after I found the right parameters for the PCB milling jobs I did not went further to fine tune the CNC settings, due to the lack of time. maybe later of the year, but currently I'm more than happy with the results.

    $0=10 (step pulse, usec)
    $1=25 (step idle delay, msec)
    $2=0 (step port invert mask:00000000)
    $3=5 (dir port invert mask:00000101)
    $4=0 (step enable invert, bool)
    $5=0 (limit pins invert, bool)
    $6=0 (probe pin invert, bool)
    $10=3 (status report mask:00000011)
    $11=0.010 (junction deviation, mm)
    $12=0.002 (arc tolerance, mm)
    $13=0 (report inches, bool)
    $20=0 (soft limits, bool)
    $21=0 (hard limits, bool)
    $22=0 (homing cycle, bool)
    $23=0 (homing dir invert mask:00000000)
    $24=25.000 (homing feed, mm/min)
    $25=500.000 (homing seek, mm/min)
    $26=250 (homing debounce, msec)
    $27=1.000 (homing pull-off, mm)
    $100=800.000 (x, step/mm)
    $101=800.000 (y, step/mm)
    $102=800.000 (z, step/mm)
    $110=800.000 (x max rate, mm/min)
    $111=800.000 (y max rate, mm/min)
    $112=500.000 (z max rate, mm/min)
    $120=10.000 (x accel, mm/sec^2)
    $121=10.000 (y accel, mm/sec^2)
    $122=10.000 (z accel, mm/sec^2)
    $130=200.000 (x max travel, mm)
    $131=200.000 (y max travel, mm)
    $132=200.000 (z max travel, mm)```

  • Hero Member

    @andrew said in CNC PCB milling:

    @neverdie I still use my default settings (see below). I re-applied these settings after I flashed the board to grbl 1.1f.
    to be honest, after I found the right parameters for the PCB milling jobs I did not went further to fine tune the CNC settings, due to the lack of time. maybe later of the year, but currently I'm more than happy with the results.

    $0=10 (step pulse, usec)
    $1=25 (step idle delay, msec)
    $2=0 (step port invert mask:00000000)
    $3=5 (dir port invert mask:00000101)
    $4=0 (step enable invert, bool)
    $5=0 (limit pins invert, bool)
    $6=0 (probe pin invert, bool)
    $10=3 (status report mask:00000011)
    $11=0.010 (junction deviation, mm)
    $12=0.002 (arc tolerance, mm)
    $13=0 (report inches, bool)
    $20=0 (soft limits, bool)
    $21=0 (hard limits, bool)
    $22=0 (homing cycle, bool)
    $23=0 (homing dir invert mask:00000000)
    $24=25.000 (homing feed, mm/min)
    $25=500.000 (homing seek, mm/min)
    $26=250 (homing debounce, msec)
    $27=1.000 (homing pull-off, mm)
    $100=800.000 (x, step/mm)
    $101=800.000 (y, step/mm)
    $102=800.000 (z, step/mm)
    $110=800.000 (x max rate, mm/min)
    $111=800.000 (y max rate, mm/min)
    $112=500.000 (z max rate, mm/min)
    $120=10.000 (x accel, mm/sec^2)
    $121=10.000 (y accel, mm/sec^2)
    $122=10.000 (z accel, mm/sec^2)
    $130=200.000 (x max travel, mm)
    $131=200.000 (y max travel, mm)
    $132=200.000 (z max travel, mm)```
    

    Looks like the only difference is that your default max rates for x and y were 800, whereas mine were 5000, and your max rate for z was 500, whereas my default was 800 before I cut it by 50% to 400.

    In the interest of minimizing differences, I'll adopt your defaults instead.


  • Hero Member

    @andrew said in CNC PCB milling:

    did you manage to create double sided PCB jobs in the meantime based on my suggestion and on flatcam's documentation? it is not a hardcore process, let me know if you stuck at a given step.

    Not sure what kind of pins to use for the alignment.


  • Hero Member

    Even after all this tweaking, the z-axis was off by 0.048mm after the latest set of probing.



  • @neverdie said in CNC PCB milling:

    Even after all this tweaking, the z-axis was off by 0.048mm after the latest set of probing.

    What do you mean by "off"? Afaik grbl doesn't have a M48 equivalent command for probe/machine repeatability... So it can't probe the same place automatically. You have to write your own code for that, based on G32.2 command, take a few measurements and see the difference.
    If you mean across the whole board, depending on the size of the measured area that's not bad at all.



  • @neverdie could you please explain how did you find/measure this? also please let me know the details of the executed job, including the G code generation properties/settings (e.g. feed rate, depth, multiple passes etc.) used in flatcam.


  • Hero Member

    @andrew said in CNC PCB milling:

    could you please explain how did you find/measure this?

    1. Decided upon an origen. Used Chilipeppr to "run test probe" to find the zero z-height. Zeroed x,y,z at that location.
    2. Did an autolevel, at 1mm spacing, over a 20x10mm area.
    3. Following this, returned to x=0, y=0. Ran another test probe. Ideally it would have come back as z=0. Instead, it came back as z=-0.048.

    So, if at that point I were to actually run g-code with a cutting depth of z=-0.05, it would barely scratch the surface. Somehow during the 1mm autolevel probing, z became uncalibrated. If I were to re-zero z based on the second test probe, it would cut, but the cutting depth wouldn't be uniform.

    Anyhow, my new rule is that if I come across a situation like the above, I throw out the auto-leveling and start over rather than executing the g-code. Often, the next autoleveling will have less discrepancy by step 3.



  • @neverdie
    Maybe run step 1
    Then run some g-code but above the job.(for a few mins).
    Then run step 3.
    This could be an autolevel problem.


  • Hero Member

    @rmtucker said in CNC PCB milling:

    Maybe run step 1
    Then run some g-code but above the job.(for a few mins).
    Then run step 3.

    How might that help?



  • @neverdie
    What if you have broken .048 off the end of the tool during autolevel?
    So run some g-code above the job then re-probe so you know you have not twatted the tool.☺


  • Hero Member

    @rmtucker said in CNC PCB milling:

    What if you have broken .048 off the end of the tool during autolevel?

    Good point. I'll have a closer look for that the next time it happens.

    Also, I'll try repeating the test using a dull bit (which presumably won't break) and see whether it still happens or not.

    Thanks!



  • @NeverDie grbl 1.1 probing command is G38.2 Z-10 F25 where Z tells it how low should go before erroring if it doesn't touch and F is the speed.
    You should try manually issuig G38, then G92 Z0 to set new Z0 position and then finally G0 Z10 F100 to lift the probe, rinse and repeat without the G92, how repeatable is the reading, does it stay at 10.00?
    Then do the air job, or some simple moving (G0 X5 Y5 Z5, G0 X0 Y0 Z10 a few times )and retest manually with G38

    LE. The probing command is G38.2, I've edited the post to correct it.



  • @neverdie said in CNC PCB milling:

    @andrew said in CNC PCB milling:

    could you please explain how did you find/measure this?

    1. Decided upon an origen. Used Chilipeppr to "run test probe" to find the zero z-height. Zeroed x,y,z at that location.
    2. Did an autolevel, at 1mm spacing, over a 20x10mm area.
    3. Following this, returned to x=0, y=0. Ran another test probe. Ideally it would have come back as z=0. Instead, it came back as z=-0.048.

    So, if at that point I were to actually run g-code with a cutting depth of z=-0.05, it would barely scratch the surface. Somehow during the 1mm autolevel probing, z became uncalibrated. If I were to re-zero z based on the second test probe, it would cut, but the cutting depth wouldn't be uniform.

    Anyhow, my new rule is that if I come across a situation like the above, I throw out the auto-leveling and start over rather than executing the g-code. Often, the next autoleveling will have less discrepancy by step 3.

    if your probe speed is too fast, then it could push the pcb at the given points and also it could damage your tip's end, as it was mentioned by @rmtucker, which could cause this issue as well.



  • @neverdie said in CNC PCB milling:

    @andrew said in CNC PCB milling:

    did you manage to create double sided PCB jobs in the meantime based on my suggestion and on flatcam's documentation? it is not a hardcore process, let me know if you stuck at a given step.

    Not sure what kind of pins to use for the alignment.

    I missed this reply from you.
    so, you have to define the alignment holes, typically outside of the actual pcb area, in the "frame".
    you have to define two of them, the rest will be calculated automatically.

    the steps are exactly the same as that you can see on http://flatcam.org/manual/procedures.html#side-pcb

    see the pic below. note, that you don't have to write the coordinates to the input boxes manually, once you click on the design area the corresponding coordinates will be copied to the clipboard, so you can use ctrl-v to fill out the settings.

    • click on the picture to define the axis (X in this example)
    • copy the corresponding coordinates to the point/box input filed
    • click on the design area to define the exact location of the first alignment hole (left side of the actual pcb)
    • copy the corresponding coordinates to the alignment holes input filed
    • click on the design area to define the exact location of the first alignment hole (right side of the actual pcb)
    • copy the corresponding coordinates to the alignment holes input filed. the two set of coordinates have to be separated by coma.
    • configure the alignment holes' drill size
    • click on the create align drill button and you're done. back on the project tab you can find a new drill job which you have to further process to create the belonging G code from it.

    alt text


  • Hero Member

    @andrew Are you using male header pins for your alignment? How deep are you drilling the holes them?



  • @neverdie yes, I use male pins, with 0.7mm drill (so it is tight for the pin), 5mm depth. but this is really up to you, choose anything which you have easy access to.


  • Hero Member

    @andrew

    With single sided PCB, I soldered the ground wire (for probing) to the copper cladding, just as the Chilipeppr author did. How are you handling it for two sided? If I do it that way for two sided, the solder bump may prevent the board laying flat on the wasteboard.



  • @neverdie I use a wood screw in the sacrificial board holding a piece of metal as a "clamp" I slide it over the board (1mm overlap) and clip one alligator clip to the screw, the other to the bit. After probing I slide it out of the way. The metal piece is about 10cm long and it's left in place for the life of the wood board.





  • @neverdie said in CNC PCB milling:

    @andrew

    With single sided PCB, I soldered the ground wire (for probing) to the copper cladding, just as the Chilipeppr author did. How are you handling it for two sided? If I do it that way for two sided, the solder bump may prevent the board laying flat on the wasteboard.

    I use some flat metal weight connected to the given wire, placed on top of the pcb.


  • Hero Member

    @andrew said in CNC PCB milling:

    hackaday just released a relevant post:
    https://hackaday.com/2018/01/04/guide-why-etch-when-you-can-mill/

    Interesting that the engraving bits he liked the best were the 30 degree 0.1mm bits. So far, that's been my preference as well.


  • Mod

    @neverdie Possibly too late, but it still might contain some handy tips: https://hackaday.com/2018/01/04/guide-why-etch-when-you-can-mill


  • Hero Member

    @yveaux said in CNC PCB milling:

    @neverdie Possibly too late, but it still might contain some handy tips: https://hackaday.com/2018/01/04/guide-why-etch-when-you-can-mill

    It nicely sums up the biggest challenge of all:

    The biggest challenge in this DIY process is getting a correct and consistent cutting depth. These V-bits yield a wider cut the deeper you go, effectively robbing you of precious engraving resolution. If you do not tune in just the right depth, some traces will come out too thin and frail.

    The results I'm getting seem random. Sometimes it's great. Sometimes it's totally unusable (obliterated traces). Some of the time it's usable, but only just barely.

    So, I'm trying to think of a better approach that might deal with that. Maybe one way might be to start every etching session by running @executivul 's calibration traces. If it's cutting too deep, adjust, and then run again. When it's finally cutting right, then cut the desired PCB traces.

    I don't know what the answer is, but that's where it currently stands with me.

    The alternative is to just make a number of boards. Then cherry pick the good ones and dispose of the rest.


  • Hero Member

    I think I've found at least one reason for the trouble I've been having: sometimes the double sided scotch tape hasn't been holding the board completely flat against the waste board. Instead, during the milling process, which has a lot of vibration, it can pop up in the area being milled. When that happens, it's effectively the same as having the milling go much deeper, and so traces can be obliterated. Hence, I may try the Shurtape GG-200 that was recommended in the Hackaday article.

    It may be that the copper clad boards I'm using just aren't flat enough in the first place. Add to that a waste board that may not be perfectly flat either, and it's not a good formula for keeping everything perfectly flat, which is evidently what it needs to be. The tape itself can't compensate for too large a mismatch.

    So, I'd like to try the earlier idea of milling the waste board flat. Just not sure how to do that.

    I would't be surprised if single sided copper clad boards are inherently prone to warping. If you think about it, the copper can expand/contract with temperature, and if it's on only one side....Unless the substrate has the same coefficient of thermal expansion, the result will inevitably be warping. The same would be true if the substrate is affected by humidity.

    The Hackaday article does mention that it's not necessarily easy to find good copper clad boards. He hints that it has been an ongoing issue over time. He gives a reference for an ebay board vendor in England that he currently likes, but unfortunately that doesn't help me much.

    What blank copper clad boards have folks here found that they like?



  • @neverdie Perhaps surface cleanliness is the problem rather than the tape, just a possibility... When you are dealing with such fine tolerances, any residue will allow the board to twist or warp...
    Not sure to what extent the milling itself would encourage deformation of the substrate, but irrespective, it would again depend on adhesion on the bottom face to resist it...


  • Hero Member

    @zboblamont said in CNC PCB milling:

    @neverdie Perhaps surface cleanliness is the problem rather than the tape, just a possibility... When you are dealing with such fine tolerances, any residue will allow the board to twist or warp...
    Not sure to what extent the milling itself would encourage deformation of the substrate, but irrespective, it would again depend on adhesion on the bottom face to resist it...

    You raise a good point. I suppose ideally the waste board would be covered in melamine or similar so that it can be cleaned of any bond breakers.



  • @neverdie Not sure whether you mean a slab of melamine or a laminated board...
    I'm sure I saw a video clip where a perspex or similar baseplate was mounted on the bedplate to provide a perfectly flat surface. The user released the adhesive tape using wd40 or similar, then cleaned the area afterward with alcohol.
    If I remember correctly, the perspex had locating dowels for the PCB, and always locked into specific location on the frame. If I find the video again will link it...


Log in to reply
 

Suggested Topics

  • 4
  • 17
  • 2
  • 9
  • 3
  • 4

13
Online

11.4k
Users

11.1k
Topics

112.7k
Posts