CNC PCB milling



  • @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 – 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:
    A new (hope) attack plan – 00:31
    — Haikube

    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.


 

264
Online

8.4k
Users

9.3k
Topics

97.9k
Posts