CNC PCB milling
-
@executivul Do you cut everything in one pass, or do you use multiple passes (each pass at a deeper depth)? Flatcam supports multiple passes, though I have been using only 1 pass.
-
@executivul
Thanks for the tips. Here is Jack's bit again, this time at F100. Even better!
-
Here are Jack's etching bits: https://www.aliexpress.com/store/product/Freeshipping-10pcs-3-175mm-Flat-Bottom-CNC-wood-Router-machine-Tools-Cutting-Bits-Carving-V-Shape/424291_32718430291.html?spm=2114.12010612.0.0.6cc36820P3WAXu
It says 30 degree angle and 0.1mm tip.
-
Time to see whether this machine can cut the mustard or not. I just did a 5mm autoleveling on the following:
and now I'll try cutting it using Jack's bit.
-
Here's the result:
The above was cut at a depth of z=-0.1, and still not all the paths cut completely through. Yet, In the middle one of the traces got obliterated.I'm afraid I'm unlikely to make it work at the resolution that I'm able get from the fab. It's close, but no cigar. So I think it's better suited for earlier prototyping work that's not so optimized for space. For that it might be very handy. Then I can both cut deeper and also not worry about trace obliteration.
-
By the way, do any of the programs have built-in verification after the cutting, where it can probe to verify that the trace is throughly cut (i.e. no continuity with ground)? Seems like it should be easy to do, at least in theory, by using a method similar to the probing for auto-leveling, except probing each track instead.
-
@neverdie Congrats for your result, I use a "copper pour" all over the board, that makes it pass at least 2 times, once for the track and once for the pour isolation. I never mess with flatcam's multiple passes, but I believe you can get the same results. What you see in the middle are copper "silvers" that is copper left behind between traces.
From the last picture of the width test is seems your bit is engraving 0.1mm wide.
Try to use OpenCNCPilot instead of Chillipeppr and set the lines to be split at 1-2mm lengths and probing each 2-3mm. That should make the engraving depth more uniform.
I see a couple copper flakes, maybe go even slower than 100? And give it a light sandpaper with 1000 grit or a scotchbrite sponge and some abrasive detergent for dishes?
-
@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
— martin2250I'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.
-
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
-
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?
-
@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.
-
Results look much better this time:
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
-
@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...
-
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.
-
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
-
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.
-
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.
-
They keep getting better!
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.
-
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.
-
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.
-
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.
-
Unfortunately, I botched the third etching pass. My fault. But I decided to try the board cutout anyway:
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.
-
@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.
-
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 LightsIt 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.
- 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
-
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.
-
@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.
-
@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.
-
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:
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.
-
@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.
-
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.
-
Solder maks repair pens do exist. Maybe that could work?
https://www.mgchemicals.com/products/prototyping-and-circuit-repair/pens/overcoat-pen-419dEdit: no, it won't work
Reference: http://www.digikey.com/en/pdf/c/chemtronics/solder-resist-repairs
-
@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.
-
Exact same procedure as last time, except this time using the Model 20 and a different etching pattern:
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.
-
@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:
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]()
-
Here's the Model 20 bit again, but this time with flatcam being told that its width is 0.25mm:
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.
-
@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.
- 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
-
Bah! It did drill 6 holes, but it grouped them so close together that it looks like two holes instead:
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.
-
Strangely, flatcam seems to show roughly the correct hole size (0.9mm), yet the x and y dimensions are way off:
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:
I'm stumped. I'm not sure where the disconnect is. Anyone seen this problem before?
-
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:
I have no idea why the scaling is in error, but at least now I have an antidote.
-
@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.
-
The corrected drilling works:
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.
-
@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?
-
@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
-
Here's my first milled PCB that's standalone:
-
I soldered on three 0805 components, but afterward I was surprised to find that all three were shorted (tested using a cotinuity meter):
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.
-
This morning I soldered on the load switch IC. I then tested the circuit, and voilà, it works.
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.
-
@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.
-
@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, IncHave 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.
-
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.
-
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.
-
Something like this would probably do the business:
https://www.aliexpress.com/item/High-accuracy-Linear-Scale-5micron-linear-encoder-with-linear-sensor/32827867788.html?spm=2114.10010108.1000013.2.217d28ff67mKcv&traffic_analysisId=recommend_2088_1_90158_iswistore&scm=1007.13339.90158.0&pvid=986e2ba2-43bc-4db4-8edd-f9ca9d1f9b6e&tpp=1It can resolve to 0.001mm.
-
On the other hand, retrofitting with just a ballscrew for the z-axis might be the cheapest/easiest next step:
https://www.aliexpress.com/item/1204-Ball-Screw-SFU1204-L-150mm-Rolled-Ballscrew-with-single-Ballnut-for-CNC-parts-RM1204-without/1998914494.html?spm=2114.search0104.3.138.DFiNws&ws_ab_test=searchweb0_0,searchweb201602_4_10152_10065_10151_10344_10068_5000016_10130_10324_10342_10547_10325_10343_51102_10546_10340_5060016_10341_10548_10545_5130016_10084_10083_10307_5920011_10312_10059_10313_10314_10534_5790011_100031_10604_10103_10594_10142,searchweb201603_25,ppcSwitch_4&algo_expid=e7be0642-ef8c-4a19-ac8b-5c19f850ec57-21&algo_pvid=e7be0642-ef8c-4a19-ac8b-5c19f850ec57&rmStoreLevelAB=5Opinions, anyone? Also, what would be the best ballscrew to get?
Then, if that's still insufficient, adding a more powerful stepper motor would be next I suppose, to avoid skipping steps (assuming that's part of what's happening).
-
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!
-
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.
-
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?
-
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=5or
or perhaps even
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
-
@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.
-
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?
-
@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 littleThis 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%.
-
@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.
-
@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.
-
@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/1182Wow, those Pololu directions bear an uncanny resemblance to this:
https://www.youtube.com/watch?v=lAdvdX88WDsJokes 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.
-
@andrew said in CNC PCB milling:
did you checked the pololu driver configuration from the linked documentation?
See post immediately above yours.
-
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:
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)
-
@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.
-
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.
-
@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)```
-
@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.
-
@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.
-
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.
-
@andrew said in CNC PCB milling:
could you please explain how did you find/measure this?
- Decided upon an origen. Used Chilipeppr to "run test probe" to find the zero z-height. Zeroed x,y,z at that location.
- Did an autolevel, at 1mm spacing, over a 20x10mm area.
- 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.
-
@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.
-
@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!