David , the GRBL version is 0.9j The source is from the Arduino GRBL library and I did not specify any compiler options in the Arduino IDE. the board is from Amazon... https://www.amazon.com/gp/product/B06XSC52SL/ref=oh_aui_detailpage_o09_s00?ie=UTF8&psc=1 No versioning or date on the board. The UNO that came with the board had a dead D8 pin, so I couldn't use it. The one I used instead is ... https://www.amazon.com/gp/product/B0168B39N4/ref=oh_aui_detailpage_o02_s00?ie=UTF8&psc=1 I have bought a few of these boards and had good luck with them. I have a lagit UNO but didn't want to use it until I know everything else is good. (if at all) I could do without PWM if needed, but not sure how to go about "...but compile options can change it back "
The clone boards have the CH340 usb chip on them which always has problems transmitting long streams of data, like when running a Gcode file (-: Swap to the legit Uno as soon as you can. (though the photo of the board in your second link appears to show a board with a 16u2 chip you have to check the board you have, around here the web photos seldom match what actually ships) All detailed in the GRBL Wiki that I linked to. Your board looks like the older ones which still expect the old pin numbering. Thus Z+ limit is now the spindle PWM SpnEn is now Z+ limit
Yes, I read the wiki and I understand what changed between v0.8 and v0.9. My issue is ... I can not find a CNC shield that looks like it might be v0.9 compatable The buildlog.net stepper shield does not seem to be sold any more in the US because of a lead problem I have the raspberry pi hat, but it looks different than the one in the wiki, so I really don't know if it is v0.9 compatable. Unfortunately I bought it from eBay which is where a lot of developers get rid of their sunset-ted versions. You mentioned something about changing back with "compiler options" if I didn't and I an unclear on how to do that. Sorry for all the questions. There are just so many deminsions to this whole thing and I am tired of chasing my tail because of one stupid thing that I missed.
(; don't support the knockoff/fake support channels: The original designer of that shield, Protoneer, has updated his product years ago: Arduino CNC Shield – 100% GRBL Compatable - see version 3.1 upwards. Of course the chinese fakes couldn't care less - they keep producing the old version because people keep buying it. Do the right thing and buy one from the original designer: not only doing the right thing, but also entitling you to support directly from the man who made it
Or just get an CNC xPRO V3 Controller Stepper Driver - drivers, connections, and GRBL all onboard ready to go. Learning curves can be frustrating - unless your time is worth $0 - are you really saving?
If I have posted this in the wrong spot please forgive me but I am not sure where to start.I'm having some trouble with my machine. I just finished it and have only run a few codes they were was successful until now. I am using an xProv2 controller and G code sender. I generated the codes in Fusion 360. I have set machine zero and than set work zero. I have set X zero Y zero on my work piece as the lower corner. The first operation is a center pocket hole ( centered in the work piece-10"x10" ). The bit starts at work piece zero zero, moves to machine zero while lowering the bit, than moves back toward the work piece but doesn't raise the spindle and will crash into the piece if I let it. I tried it without the wood in place and it raises the spindle when it gets to the center of the piece. I am almost certain I am doing something wrong but I cut this operation before and I haven't made any changes to the file. Long winded I know but any help is appreciated. Glenn
The problem is in your Machine Coordinate System (also known as home) and your G28 settings. The controller uses several offset coordinate systems but they are all relative to machine coordinates. (Machine Position in UGS) The industry standard for machine co-ordinates is X at the positive end, Y at the positive end, and Z at the positive end (all the way UP away from the work, a safe place!). When GRBL turns on it sets the machine cordinates to 0,0,0, this means that you have to physically position the machine before turning on. G28 normally defaults to 0,0,0 which means that it is the same as the machine co-ordinates. A G28.1 command will set the offsets to wherever the machine is at the time. Thus machine 0,0,0 can be anywhere IF you are willing to always move the machine to a safe place (Z high!) and issue G28.1 When you set your workpeice coordinates you are changing one of the 6 Work Coordinate Systems, selected by G54 to G59. (note that UGS only ever sets G54 offsets, which is why I prefer bCNC vlachoudis/bCNC) (Work Position in UGS) Basically, Machine Position for Z will always be negative when zeroed to your work. The default Fusion360 postprocessor expects that the machine is set up according to industry standards and the machine coordinates and G28 are correctly set. You can turn off the initial G28 in the post settings OR you can use this post swarfer/GRBL-Post-Processor which does not use G28. It still expects that machine 0,0,0 is set correctly for safe movement at machine Z=0
no, grbl will not do that. Gcode is all about co-ordinated movement. but, you can use multiple arduinos running GRBL, each one driving one axis. now you can give each controller a separate command to do what you want.
Hi Sonny I am using GRBL 1.1 and I am building a laser cutter. The problem I have is that when running the homing cycle it is try to home the Z Axis. The problem is I do not use the Z Axis, is here any way to disable the Z axis so it does not try to home it?
You can compile a custom Grbl build: in config.h: gnea/grbl you can change the homing behaviour(Link takes you to the lines you have to play with. comment the default, then uncomment the behavior you want). Then simply recompile (Its really easy): gnea/grbl (Link takes you to compilation instructions)
Hi Where is the correct Config.h file I found one but it is in my documents folder. If I update it and upload it with Arduino then by GRBL software does not load properly. Then I have to use my Xloader to load my Hex File again. After loading the hex file GRBL load again but still the z axis try to Home. I also had a look in C:\Program Files (x86)\Arduino\libraries but no config.h file.
I am having an issue with the Z axis. When ever I try and get it set to Zero on the work piece, and I jog up or down, after the jog, it will "fall" about two mm. This is sort of random...about a third of the time, it does it and once it does it once, it might do it 4 or five time in a row, and then stop. It may be something to do with my settings, but I am not sure what. I tried playing with $0 and $1, but that had no effect. Here is my config data... $0=25 $1=100 $2=0 $3=0 $4=0 $5=0 $6=0 $10=1 $11=0.010 $12=0.002 $13=0 $20=0 $21=0 $22=0 $23=0 $24=25.000 $25=500.000 $26=250 $27=1.000 $30=1000 $31=0 $32=0 $100=100.030 $101=80.136 $102=387.705 $110=500.000 $111=500.000 $112=500.000 $120=10.000 $121=10.000 $122=10.000 $130=200.000 $131=200.000 $132=200.000 This happens in both bCNC and UGS, so I don't think it's the CNC software. Any ideas?
You need to set the stepper motors to power always on. What is happeminingh is when the motors power off, the weight of the Z axcis actually makes the unpowered stepper motors rotate.
@Crchisholm Yup, $1=255 You have it set to power down the motors after 1/10th of a second after last command. This should fix your problem. @Ed Zacly What software are you using to generate your Gcode?
I am not sure how to power down after 1/10th sec. does that happen with $1=255, or is there something further I need to do. Typically I use fusion 360 or VCarve Pro.
The 1/10th is what you currently have, you need to set it to $1=255 which means it will never power down. Sorry if I confused you.
Those were the magic words. No more drop. Has the added benefit of keeping the motors locked for tool changes when I get to that point. Thanks for the help.
Issue: Spindle cuts out after starting a file Greetings, I am hopping that somebody can respond to this... Trying to set up and calibrate my CNC router, as a first exercise I produced a simple Circle file, (attached) it appears to be execute perfectly, except for one thing, the spindle comes on and then shortly after the cycle starts, within 3 to 5 Seconds the spindle shuts off. I've googled this up and down and can't seem to find any information about it out on the internet... Any input would be really appreciated, I have been trying to solve this for the last week... Summary: Checked all wiring for proper connections & voltage - No issues Spindle starts when file is started shuts off within 3-5 Seconds - The file continues to run with out stopping No error codes - as per screen shot below Spindle is turning clockwise from the operator position... All G code executes as "OK" - No Alarms Using an xPro Controler / GRBL 1.1 400 watt Spindle: https://www.smw3d.com/quiet-cut-spindle-400w/ Operating RPM 0-12000 (as advertised by the manufacturer) Operating voltage 0-48VDC Speed Control Board: https://www.smw3d.com/spindle-speed-control/ Control via PWM signal or pot Grbl Panel used as interface Screen Shots: **** Connected to COM3 @ 115200 baud **** From: GRBL Panel Grbl 1.1f ['$' for help] >>> $$ $0=10 $1=255 $2=0 $3=5 $4=1 $5=0 $6=0 $10=1 $11=0.020 $12=0.002 $13=0 $20=1 $21=1 $22=1 $23=0 $24=25.000 $25=1500.000 $26=250 $27=6.350 $30=1000 $31=1 $32=0 $100=197.938 $101=200.200 $102=199.400 $110=2500.000 $111=2500.000 $112=2500.000 $120=50.000 $121=50.000 $122=50.000 $130=795.000 $131=1200.000 $132=69.000 ok Circle Metric 100 mm Rev A .gcode T1 G17 G21 G90 G0Z20.3200 G0X0.0000Y0.0000S12000M3 G0X100.0000Y151.5875Z5.0800 G1Z-2.5000F762.0 G1X100.5758Y151.5843F2540.0 G1X101.1541Y151.5746 G1X101.7349Y151.5583 G1X102.3180Y151.5354 G1X102.9035Y151.5057 G1X103.4911Y151.4692 G1X104.0808Y151.4258 G1X104.6724Y151.3755 G1X105.2659Y151.3180 G1X105.8611Y151.2535 G1X106.4580Y151.1817 G1X107.0563Y151.1026 G1X107.6561Y151.0162 G1X108.2571Y150.9224 G1X108.8593Y150.8211 G1X109.4625Y150.7122 G1X110.0665Y150.5958 G1X110.6713Y150.4717 G1X111.2768Y150.3399 G1X111.8827Y150.2003 G1X112.4890Y150.0529 G1X113.0954Y149.8977 G1X113.7020Y149.7346 G1X114.3084Y149.5635 G1X114.9146Y149.3844 G1X115.5205Y149.1974 G1X116.1258Y149.0023 G1X116.7304Y148.7992 G1X117.3342Y148.5880 G1X117.9370Y148.3687 G1X118.5387Y148.1413 G1X119.1390Y147.9058 G1X119.7380Y147.6622 G1X120.3353Y147.4104 G1X120.9308Y147.1505 G1X121.5244Y146.8825 G1X122.1159Y146.6064 G1X122.7051Y146.3222 G1X123.2919Y146.0300 G1X123.8761Y145.7296 G1X124.4576Y145.4213 G1X125.0362Y145.1049 G1X125.6118Y144.7807 G1X126.1841Y144.4484 G1X126.7530Y144.1084 G1X127.3184Y143.7604 G1X127.8801Y143.4047 G1X128.4379Y143.0413 G1X128.9917Y142.6703 G1X129.5413Y142.2916 G1X130.0866Y141.9054 G1X130.6275Y141.5118 G1X131.1637Y141.1108 G1X131.6951Y140.7025 G1X132.2216Y140.2870 G1X132.7430Y139.8643 G1X133.2592Y139.4347 G1X133.7700Y138.9981 G1X134.2754Y138.5547 G1X134.7751Y138.1046 G1X135.2691Y137.6479 G1X135.7571Y137.1847 G1X136.2392Y136.7150 G1X136.7150Y136.2392 G1X137.1847Y135.7571 G1X137.6479Y135.2691 G1X138.1046Y134.7751 G1X138.5547Y134.2754 G1X138.9981Y133.7700 G1X139.4347Y133.2592 G1X139.8643Y132.7430 G1X140.2870Y132.2216 G1X140.7025Y131.6951 G1X141.1108Y131.1637 G1X141.5118Y130.6275 G1X141.9054Y130.0866 G1X142.2916Y129.5413 G1X142.6703Y128.9917 G1X143.0413Y128.4379 G1X143.4047Y127.8801 G1X143.7604Y127.3184 G1X144.1084Y126.7530 G1X144.4484Y126.1841 G1X144.7807Y125.6118 G1X145.1049Y125.0362 G1X145.4213Y124.4576 G1X145.7296Y123.8761 G1X146.0300Y123.2919 G1X146.3222Y122.7051 G1X146.6064Y122.1159 G1X146.8825Y121.5244 G1X147.1505Y120.9308 G1X147.4104Y120.3353 G1X147.6622Y119.7380 G1X147.9058Y119.1390 G1X148.1413Y118.5387 G1X148.3687Y117.9370 G1X148.5880Y117.3342 G1X148.7992Y116.7304 G1X149.0023Y116.1258 G1X149.1974Y115.5205 G1X149.3844Y114.9146 G1X149.5635Y114.3084 G1X149.7346Y113.7020 G1X149.8977Y113.0954 G1X150.0529Y112.4890 G1X150.2003Y111.8827 G1X150.3399Y111.2768 G1X150.4717Y110.6713 G1X150.5958Y110.0665 G1X150.7122Y109.4625 G1X150.8211Y108.8593 G1X150.9224Y108.2571 G1X151.0162Y107.6561 G1X151.1026Y107.0563 G1X151.1817Y106.4580 G1X151.2535Y105.8611 G1X151.3180Y105.2659 G1X151.3755Y104.6724 G1X151.4258Y104.0808 G1X151.4692Y103.4911 G1X151.5057Y102.9035 G1X151.5354Y102.3180 G1X151.5583Y101.7349 G1X151.5746Y101.1541 G1X151.5843Y100.5758 G1X151.5875Y100.0000 G1X151.5843Y99.4242 G1X151.5746Y98.8459 G1X151.5583Y98.2651 G1X151.5354Y97.6820 G1X151.5057Y97.0965 G1X151.4692Y96.5089 G1X151.4258Y95.9192 G1X151.3755Y95.3276 G1X151.3180Y94.7341 G1X151.2535Y94.1389 G1X151.1817Y93.5420 G1X151.1026Y92.9437 G1X151.0162Y92.3439 G1X150.9224Y91.7429 G1X150.8211Y91.1407 G1X150.7122Y90.5375 G1X150.5958Y89.9335 G1X150.4717Y89.3287 G1X150.3399Y88.7232 G1X150.2003Y88.1173 G1X150.0529Y87.5110 G1X149.8977Y86.9046 G1X149.7346Y86.2980 G1X149.5635Y85.6916 G1X149.3844Y85.0854 G1X149.1974Y84.4795 G1X149.0023Y83.8742 G1X148.7992Y83.2696 G1X148.5880Y82.6658 G1X148.3687Y82.0630 G1X148.1413Y81.4613 G1X147.9058Y80.8610 G1X147.6622Y80.2620 G1X147.4104Y79.6647 G1X147.1505Y79.0692 G1X146.8825Y78.4756 G1X146.6064Y77.8841 G1X146.3222Y77.2949 G1X146.0300Y76.7081 G1X145.7296Y76.1239 G1X145.4213Y75.5424 G1X145.1049Y74.9638 G1X144.7807Y74.3882 G1X144.4484Y73.8159 G1X144.1084Y73.2470 G1X143.7604Y72.6816 G1X143.4047Y72.1199 G1X143.0413Y71.5621 G1X142.6703Y71.0083 G1X142.2916Y70.4587 G1X141.9054Y69.9134 G1X141.5118Y69.3725 G1X141.1108Y68.8363 G1X140.7025Y68.3049 G1X140.2870Y67.7784 G1X139.8643Y67.2570 G1X139.4347Y66.7408 G1X138.9981Y66.2300 G1X138.5547Y65.7246 G1X138.1046Y65.2249 G1X137.6479Y64.7309 G1X137.1847Y64.2429 G1X136.7150Y63.7608 G1X136.2392Y63.2850 G1X135.7571Y62.8153 G1X135.2691Y62.3521 G1X134.7751Y61.8954 G1X134.2754Y61.4453 G1X133.7700Y61.0019 G1X133.2592Y60.5653 G1X132.7430Y60.1356 G1X132.2216Y59.7130 G1X131.6951Y59.2975 G1X131.1637Y58.8892 G1X130.6275Y58.4882 G1X130.0866Y58.0946 G1X129.5413Y57.7084 G1X128.9917Y57.3297 G1X128.4379Y56.9587 G1X127.8801Y56.5953 G1X127.3184Y56.2396 G1X126.7530Y55.8917 G1X126.1841Y55.5516 G1X125.6118Y55.2193 G1X125.0362Y54.8951 G1X124.4576Y54.5787 G1X123.8761Y54.2704 G1X123.2919Y53.9700 G1X122.7051Y53.6778 G1X122.1159Y53.3936 G1X121.5244Y53.1175 G1X120.9308Y52.8495 G1X120.3353Y52.5896 G1X119.7380Y52.3378 G1X119.1390Y52.0942 G1X118.5387Y51.8587 G1X117.9370Y51.6313 G1X117.3342Y51.4120 G1X116.7304Y51.2008 G1X116.1258Y50.9977 G1X115.5205Y50.8026 G1X114.9146Y50.6156 G1X114.3084Y50.4365 G1X113.7020Y50.2654 G1X113.0954Y50.1023 G1X112.4890Y49.9471 G1X111.8827Y49.7997 G1X111.2768Y49.6601 G1X110.6713Y49.5283 G1X110.0665Y49.4042 G1X109.4625Y49.2878 G1X108.8593Y49.1789 G1X108.2571Y49.0776 G1X107.6561Y48.9838 G1X107.0563Y48.8974 G1X106.4580Y48.8183 G1X105.8611Y48.7465 G1X105.2659Y48.6820 G1X104.6724Y48.6245 G1X104.0808Y48.5742 G1X103.4911Y48.5308 G1X102.9035Y48.4943 G1X102.3180Y48.4646 G1X101.7349Y48.4417 G1X101.1541Y48.4254 G1X100.5758Y48.4157 G1X100.0000Y48.4125 G1X99.4242Y48.4157 G1X98.8459Y48.4254 G1X98.2651Y48.4417 G1X97.6820Y48.4646 G1X97.0965Y48.4943 G1X96.5089Y48.5308 G1X95.9192Y48.5742 G1X95.3276Y48.6245 G1X94.7341Y48.6820 G1X94.1389Y48.7465 G1X93.5420Y48.8183 G1X92.9437Y48.8974 G1X92.3439Y48.9838 G1X91.7429Y49.0776 G1X91.1407Y49.1789 G1X90.5375Y49.2878 G1X89.9335Y49.4042 G1X89.3287Y49.5283 G1X88.7232Y49.6601 G1X88.1173Y49.7997 G1X87.5110Y49.9471 G1X86.9046Y50.1023 G1X86.2980Y50.2654 G1X85.6916Y50.4365 G1X85.0854Y50.6156 G1X84.4795Y50.8026 G1X83.8742Y50.9977 G1X83.2696Y51.2008 G1X82.6658Y51.4120 G1X82.0630Y51.6313 G1X81.4613Y51.8587 G1X80.8610Y52.0942 G1X80.2620Y52.3378 G1X79.6647Y52.5896 G1X79.0692Y52.8495 G1X78.4756Y53.1175 G1X77.8841Y53.3936 G1X77.2949Y53.6778 G1X76.7081Y53.9700 G1X76.1239Y54.2704 G1X75.5424Y54.5787 G1X74.9638Y54.8951 G1X74.3882Y55.2193 G1X73.8159Y55.5516 G1X73.2470Y55.8917 G1X72.6816Y56.2396 G1X72.1199Y56.5953 G1X71.5621Y56.9587 G1X71.0083Y57.3297 G1X70.4587Y57.7084 G1X69.9134Y58.0946 G1X69.3725Y58.4882 G1X68.8363Y58.8892 G1X68.3049Y59.2975 G1X67.7784Y59.7130 G1X67.2570Y60.1356 G1X66.7408Y60.5653 G1X66.2300Y61.0019 G1X65.7246Y61.4453 G1X65.2249Y61.8954 G1X64.7309Y62.3521 G1X64.2429Y62.8153 G1X63.7608Y63.2850 G1X63.2850Y63.7608 G1X62.8153Y64.2429 G1X62.3521Y64.7309 G1X61.8954Y65.2249 G1X61.4453Y65.7246 G1X61.0019Y66.2300 G1X60.5653Y66.7408 G1X60.1356Y67.2570 G1X59.7130Y67.7784 G1X59.2975Y68.3049 G1X58.8892Y68.8363 G1X58.4882Y69.3725 G1X58.0946Y69.9134 G1X57.7084Y70.4587 G1X57.3297Y71.0083 G1X56.9587Y71.5621 G1X56.5953Y72.1199 G1X56.2396Y72.6816 G1X55.8917Y73.2470 G1X55.5516Y73.8159 G1X55.2193Y74.3882 G1X54.8951Y74.9638 G1X54.5787Y75.5424 G1X54.2704Y76.1239 G1X53.9700Y76.7081 G1X53.6778Y77.2949 G1X53.3936Y77.8841 G1X53.1175Y78.4756 G1X52.8495Y79.0692 G1X52.5896Y79.6647 G1X52.3378Y80.2620 G1X52.0942Y80.8610 G1X51.8587Y81.4613 G1X51.6313Y82.0630 G1X51.4120Y82.6658 G1X51.2008Y83.2696 G1X50.9977Y83.8742 G1X50.8026Y84.4795 G1X50.6156Y85.0854 G1X50.4365Y85.6916 G1X50.2654Y86.2980 G1X50.1023Y86.9046 G1X49.9471Y87.5110 G1X49.7997Y88.1173 G1X49.6601Y88.7232 G1X49.5283Y89.3287 G1X49.4042Y89.9335 G1X49.2878Y90.5375 G1X49.1789Y91.1407 G1X49.0776Y91.7429 G1X48.9838Y92.3439 G1X48.8974Y92.9437 G1X48.8183Y93.5420 G1X48.7465Y94.1389 G1X48.6820Y94.7341 G1X48.6245Y95.3276 G1X48.5742Y95.9192 G1X48.5308Y96.5089 G1X48.4943Y97.0965 G1X48.4646Y97.6820 G1X48.4417Y98.2651 G1X48.4254Y98.8459 G1X48.4157Y99.4242 G1X48.4125Y100.0000 G1X48.4157Y100.5758 G1X48.4254Y101.1541 G1X48.4417Y101.7349 G1X48.4646Y102.3180 G1X48.4943Y102.9035 G1X48.5308Y103.4911 G1X48.5742Y104.0808 G1X48.6245Y104.6724 G1X48.6820Y105.2659 G1X48.7465Y105.8611 G1X48.8183Y106.4580 G1X48.8974Y107.0563 G1X48.9838Y107.6561 G1X49.0776Y108.2571 G1X49.1789Y108.8593 G1X49.2878Y109.4625 G1X49.4042Y110.0665 G1X49.5283Y110.6713 G1X49.6601Y111.2768 G1X49.7997Y111.8827 G1X49.9471Y112.4890 G1X50.1023Y113.0954 G1X50.2654Y113.7020 G1X50.4365Y114.3084 G1X50.6156Y114.9146 G1X50.8026Y115.5205 G1X50.9977Y116.1258 G1X51.2008Y116.7304 G1X51.4120Y117.3342 G1X51.6313Y117.9370 G1X51.8587Y118.5387 G1X52.0942Y119.1390 G1X52.3378Y119.7380 G1X52.5896Y120.3353 G1X52.8495Y120.9308 G1X53.1175Y121.5244 G1X53.3936Y122.1159 G1X53.6778Y122.7051 G1X53.9700Y123.2919 G1X54.2704Y123.8761 G1X54.5787Y124.4576 G1X54.8951Y125.0362 G1X55.2193Y125.6118 G1X55.5516Y126.1841 G1X55.8917Y126.7530 G1X56.2396Y127.3184 G1X56.5953Y127.8801 G1X56.9587Y128.4379 G1X57.3297Y128.9917 G1X57.7084Y129.5413 G1X58.0946Y130.0866 G1X58.4882Y130.6275 G1X58.8892Y131.1637 G1X59.2975Y131.6951 G1X59.7130Y132.2216 G1X60.1356Y132.7430 G1X60.5653Y133.2592 G1X61.0019Y133.7700 G1X61.4453Y134.2754 G1X61.8954Y134.7751 G1X62.3521Y135.2691 G1X62.8153Y135.7571 G1X63.2850Y136.2392 G1X63.7608Y136.7150 G1X64.2429Y137.1847 G1X64.7309Y137.6479 G1X65.2249Y138.1046 G1X65.7246Y138.5547 G1X66.2300Y138.9981 G1X66.7408Y139.4347 G1X67.2570Y139.8643 G1X67.7784Y140.2870 G1X68.3049Y140.7025 G1X68.8363Y141.1108 G1X69.3725Y141.5118 G1X69.9134Y141.9054 G1X70.4587Y142.2916 G1X71.0083Y142.6703 G1X71.5621Y143.0413 G1X72.1199Y143.4047 G1X72.6816Y143.7604 G1X73.2470Y144.1084 G1X73.8159Y144.4484 G1X74.3882Y144.7807 G1X74.9638Y145.1049 G1X75.5424Y145.4213 G1X76.1239Y145.7296 G1X76.7081Y146.0300 G1X77.2949Y146.3222 G1X77.8841Y146.6064 G1X78.4756Y146.8825 G1X79.0692Y147.1505 G1X79.6647Y147.4104 G1X80.2620Y147.6622 G1X80.8610Y147.9058 G1X81.4613Y148.1413 G1X82.0630Y148.3687 G1X82.6658Y148.5880 G1X83.2696Y148.7992 G1X83.8742Y149.0023 G1X84.4795Y149.1974 G1X85.0854Y149.3844 G1X85.6916Y149.5635 G1X86.2980Y149.7346 G1X86.9046Y149.8977 G1X87.5110Y150.0529 G1X88.1173Y150.2003 G1X88.7232Y150.3399 G1X89.3287Y150.4717 G1X89.9335Y150.5958 G1X90.5375Y150.7122 G1X91.1407Y150.8211 G1X91.7429Y150.9224 G1X92.3439Y151.0162 G1X92.9437Y151.1026 G1X93.5420Y151.1817 G1X94.1389Y151.2535 G1X94.7341Y151.3180 G1X95.3276Y151.3755 G1X95.9192Y151.4258 G1X96.5089Y151.4692 G1X97.0965Y151.5057 G1X97.6820Y151.5354 G1X98.2651Y151.5583 G1X98.8459Y151.5746 G1X99.4242Y151.5843 G1X100.0000Y151.5875 G0Z5.0800 G0Z20.3200 G0X0.0000Y0.0000 M02 #709 Ed Zacly, Wednesday at 8:45 AM
And the controller is definitely copatable with GRBL 1.1? Reason I ask is that I got pretty frustrated with a cheap controller that was not compatible with anything more recent than GRBL 0.8 (when they did the pin swap of pins 11 and 12).
I have the Panucatt Gradus board and I have built a custom OpenBuilds C-Beam machine and I am having some issues (more like settings,parameters that need tweaked) and wanted to see if anyone could PLEASE help out? When I use Fusion 360 and post process (grbl IS selected), I open UGS to load file and prepare to start. I hit play and I keep getting the tool change T1 M6 error and I would like to know what I can do/change so that is NOT in my .nc files anymore. It is ANNOYING to have to open the file and delete it and save and then reload every time... Hope someone can give some advice. I would also like to have a set spot for tool change but have not figured that one out yet. TIA! Below is the config for Fusion 360 grbl post processing Code: /** Copyright (C) 2012-2016 by Autodesk, Inc. All rights reserved. Grbl post processor configuration. $Revision: 41865 5b08e4835c7b3f1cc833e8f4003c19d676f0ba4d $ $Date: 2018-02-23 13:26:31 $ FORKID {154F7C00-6549-4c77-ADE0-79375FE5F2AA} */ description = "Grbl"; vendor = "grbl"; vendorUrl = "https://github.com/grbl/grbl/wiki"; legal = "Copyright (C) 2012-2016 by Autodesk, Inc."; certificationLevel = 2; minimumRevision = 24000; longDescription = "Generic milling post for Grbl."; extension = "nc"; setCodePage("ascii"); capabilities = CAPABILITY_MILLING; tolerance = spatial(0.002, MM); minimumChordLength = spatial(0.01, MM); minimumCircularRadius = spatial(0.01, MM); maximumCircularRadius = spatial(1000, MM); minimumCircularSweep = toRad(0.01); maximumCircularSweep = toRad(180); allowHelicalMoves = true; allowedCircularPlanes = undefined; // allow any circular motion // user-defined properties properties = { writeMachine: true, // write machine writeTools: true, // writes the tools useG28: true, // disable to avoid G28 output for safe machine retracts - when disabled you must manually ensure safe retracts showSequenceNumbers: false, // show sequence numbers sequenceNumberStart: 10, // first sequence number sequenceNumberIncrement: 1, // increment for sequence numbers separateWordsWithSpace: true // specifies that the words should be separated with a white space }; // user-defined property definitions propertyDefinitions = { writeMachine: {title:"Write machine", description:"Output the machine settings in the header of the code.", group:0, type:"boolean"}, writeTools: {title:"Write tool list", description:"Output a tool list in the header of the code.", group:0, type:"boolean"}, useG28: {title:"G28 Safe retracts", description:"Disable to avoid G28 output for safe machine retracts. When disabled, you must manually ensure safe retracts.", type:"boolean"}, showSequenceNumbers: {title:"Use sequence numbers", description:"Use sequence numbers for each block of outputted code.", group:1, type:"boolean"}, sequenceNumberStart: {title:"Start sequence number", description:"The number at which to start the sequence numbers.", group:1, type:"integer"}, sequenceNumberIncrement: {title:"Sequence number increment", description:"The amount by which the sequence number is incremented by in each block.", group:1, type:"integer"}, separateWordsWithSpace: {title:"Separate words with space", description:"Adds spaces between words if 'yes' is selected.", type:"boolean"} }; var numberOfToolSlots = 9999; var mapCoolantTable = new Table( [9, 8], {initial:COOLANT_OFF, force:true}, "Invalid coolant mode" ); var gFormat = createFormat({prefix:"G", decimals:0}); var mFormat = createFormat({prefix:"M", decimals:0}); var xyzFormat = createFormat({decimals:(unit == MM ? 3 : 4)}); var feedFormat = createFormat({decimals:(unit == MM ? 1 : 2)}); var toolFormat = createFormat({decimals:0}); var rpmFormat = createFormat({decimals:0}); var secFormat = createFormat({decimals:3, forceDecimal:true}); // seconds - range 0.001-1000 var taperFormat = createFormat({decimals:1, scale:DEG}); var xOutput = createVariable({prefix:"X"}, xyzFormat); var yOutput = createVariable({prefix:"Y"}, xyzFormat); var zOutput = createVariable({prefix:"Z"}, xyzFormat); var feedOutput = createVariable({prefix:"F"}, feedFormat); var sOutput = createVariable({prefix:"S", force:true}, rpmFormat); // circular output var iOutput = createReferenceVariable({prefix:"I"}, xyzFormat); var jOutput = createReferenceVariable({prefix:"J"}, xyzFormat); var kOutput = createReferenceVariable({prefix:"K"}, xyzFormat); var gMotionModal = createModal({}, gFormat); // modal group 1 // G0-G3, ... var gPlaneModal = createModal({onchange:function () {gMotionModal.reset();}}, gFormat); // modal group 2 // G17-19 var gAbsIncModal = createModal({}, gFormat); // modal group 3 // G90-91 var gFeedModeModal = createModal({}, gFormat); // modal group 5 // G93-94 var gUnitModal = createModal({}, gFormat); // modal group 6 // G20-21 var WARNING_WORK_OFFSET = 0; // collected state var sequenceNumber; var currentWorkOffset; /** Writes the specified block. */ function writeBlock() { if (properties.showSequenceNumbers) { writeWords2("N" + sequenceNumber, arguments); sequenceNumber += properties.sequenceNumberIncrement; } else { writeWords(arguments); } } function formatComment(text) { return "(" + String(text).replace(/[\(\)]/g, "") + ")"; } /** Output a comment. */ function writeComment(text) { writeln(formatComment(text)); } function onOpen() { if (!properties.separateWordsWithSpace) { setWordSeparator(""); } sequenceNumber = properties.sequenceNumberStart; writeln("%"); if (programName) { writeComment(programName); } if (programComment) { writeComment(programComment); } // dump machine configuration var vendor = machineConfiguration.getVendor(); var model = machineConfiguration.getModel(); var description = machineConfiguration.getDescription(); if (properties.writeMachine && (vendor || model || description)) { writeComment(localize("Machine")); if (vendor) { writeComment(" " + localize("vendor") + ": " + vendor); } if (model) { writeComment(" " + localize("model") + ": " + model); } if (description) { writeComment(" " + localize("description") + ": " + description); } } // dump tool information if (properties.writeTools) { var zRanges = {}; if (is3D()) { var numberOfSections = getNumberOfSections(); for (var i = 0; i < numberOfSections; ++i) { var section = getSection(i); var zRange = section.getGlobalZRange(); var tool = section.getTool(); if (zRanges[tool.number]) { zRanges[tool.number].expandToRange(zRange); } else { zRanges[tool.number] = zRange; } } } var tools = getToolTable(); if (tools.getNumberOfTools() > 0) { for (var i = 0; i < tools.getNumberOfTools(); ++i) { var tool = tools.getTool(i); var comment = "T" + toolFormat.format(tool.number) + " " + "D=" + xyzFormat.format(tool.diameter) + " " + localize("CR") + "=" + xyzFormat.format(tool.cornerRadius); if ((tool.taperAngle > 0) && (tool.taperAngle < Math.PI)) { comment += " " + localize("TAPER") + "=" + taperFormat.format(tool.taperAngle) + localize("deg"); } if (zRanges[tool.number]) { comment += " - " + localize("ZMIN") + "=" + xyzFormat.format(zRanges[tool.number].getMinimum()); } comment += " - " + getToolTypeName(tool.type); writeComment(comment); } } } if ((getNumberOfSections() > 0) && (getSection(0).workOffset == 0)) { for (var i = 0; i < getNumberOfSections(); ++i) { if (getSection(i).workOffset > 0) { error(localize("Using multiple work offsets is not possible if the initial work offset is 0.")); return; } } } // absolute coordinates and feed per min writeBlock(gAbsIncModal.format(90), gFeedModeModal.format(94)); writeBlock(gPlaneModal.format(17)); switch (unit) { case IN: writeBlock(gUnitModal.format(20)); break; case MM: writeBlock(gUnitModal.format(21)); break; } } function onComment(message) { writeComment(message); } /** Force output of X, Y, and Z. */ function forceXYZ() { xOutput.reset(); yOutput.reset(); zOutput.reset(); } /** Force output of X, Y, Z, and F on next output. */ function forceAny() { forceXYZ(); feedOutput.reset(); } function onSection() { var insertToolCall = isFirstSection() || currentSection.getForceToolChange && currentSection.getForceToolChange() || (tool.number != getPreviousSection().getTool().number); var retracted = false; // specifies that the tool has been retracted to the safe plane var newWorkOffset = isFirstSection() || (getPreviousSection().workOffset != currentSection.workOffset); // work offset changes var newWorkPlane = isFirstSection() || !isSameDirection(getPreviousSection().getGlobalFinalToolAxis(), currentSection.getGlobalInitialToolAxis()); if (insertToolCall || newWorkOffset || newWorkPlane) { var nextTool = getNextTool(tool.number); if (nextTool) { writeBlock("T" + toolFormat.format(nextTool.number)); } // stop spindle before retract during tool change if (insertToolCall && !isFirstSection()) { onCommand(COMMAND_STOP_SPINDLE); } if (properties.useG28) { // retract to safe plane retracted = true; writeBlock(gFormat.format(28), gAbsIncModal.format(91), "Z" + xyzFormat.format(0)); // retract writeBlock(gAbsIncModal.format(90)); zOutput.reset(); } } writeln(""); if (hasParameter("operation-comment")) { var comment = getParameter("operation-comment"); if (comment) { writeComment(comment); } } if (insertToolCall) { retracted = true; onCommand(COMMAND_COOLANT_OFF); if (tool.number > numberOfToolSlots) { warning(localize("Tool number exceeds maximum value.")); } writeBlock("T" + toolFormat.format(tool.number), mFormat.format(6)); if (tool.comment) { writeComment(tool.comment); } var showToolZMin = false; if (showToolZMin) { if (is3D()) { var numberOfSections = getNumberOfSections(); var zRange = currentSection.getGlobalZRange(); var number = tool.number; for (var i = currentSection.getId() + 1; i < numberOfSections; ++i) { var section = getSection(i); if (section.getTool().number != number) { break; } zRange.expandToRange(section.getGlobalZRange()); } writeComment(localize("ZMIN") + "=" + zRange.getMinimum()); } } } if (insertToolCall || isFirstSection() || (rpmFormat.areDifferent(tool.spindleRPM, sOutput.getCurrent())) || (tool.clockwise != getPreviousSection().getTool().clockwise)) { if (tool.spindleRPM < 1) { error(localize("Spindle speed out of range.")); } if (tool.spindleRPM > 99999) { warning(localize("Spindle speed exceeds maximum value.")); } writeBlock( sOutput.format(tool.spindleRPM), mFormat.format(tool.clockwise ? 3 : 4) ); } // wcs if (insertToolCall) { // force work offset when changing tool currentWorkOffset = undefined; } var workOffset = currentSection.workOffset; if (workOffset == 0) { warningOnce(localize("Work offset has not been specified. Using G54 as WCS."), WARNING_WORK_OFFSET); workOffset = 1; } if (workOffset > 0) { if (workOffset > 6) { error(localize("Work offset out of range.")); return; } else { if (workOffset != currentWorkOffset) { writeBlock(gFormat.format(53 + workOffset)); // G54->G59 currentWorkOffset = workOffset; } } } forceXYZ(); { // pure 3D var remaining = currentSection.workPlane; if (!isSameDirection(remaining.forward, new Vector(0, 0, 1))) { error(localize("Tool orientation is not supported.")); return; } setRotation(remaining); } // set coolant after we have positioned at Z { var c = mapCoolantTable.lookup(tool.coolant); if (c) { writeBlock(mFormat.format(c)); } else { warning(localize("Coolant not supported.")); } } forceAny(); var initialPosition = getFramePosition(currentSection.getInitialPosition()); if (!retracted) { if (getCurrentPosition().z < initialPosition.z) { writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z)); } } if (insertToolCall || retracted) { var lengthOffset = tool.lengthOffset; if (lengthOffset > numberOfToolSlots) { error(localize("Length offset out of range.")); return; } gMotionModal.reset(); writeBlock(gPlaneModal.format(17)); if (!machineConfiguration.isHeadConfiguration()) { writeBlock( gAbsIncModal.format(90), gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y) ); writeBlock(gMotionModal.format(0), zOutput.format(initialPosition.z)); } else { writeBlock( gAbsIncModal.format(90), gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y), zOutput.format(initialPosition.z) ); } } else { writeBlock( gAbsIncModal.format(90), gMotionModal.format(0), xOutput.format(initialPosition.x), yOutput.format(initialPosition.y) ); } } function onDwell(seconds) { if (seconds > 99999.999) { warning(localize("Dwelling time is out of range.")); } seconds = clamp(0.001, seconds, 99999.999); writeBlock(gFormat.format(4), "P" + secFormat.format(seconds)); } function onSpindleSpeed(spindleSpeed) { writeBlock(sOutput.format(spindleSpeed)); } var pendingRadiusCompensation = -1; function onRadiusCompensation() { pendingRadiusCompensation = radiusCompensation; } function onRapid(_x, _y, _z) { var x = xOutput.format(_x); var y = yOutput.format(_y); var z = zOutput.format(_z); if (x || y || z) { if (pendingRadiusCompensation >= 0) { error(localize("Radius compensation mode cannot be changed at rapid traversal.")); return; } writeBlock(gMotionModal.format(0), x, y, z); feedOutput.reset(); } } function onLinear(_x, _y, _z, feed) { // at least one axis is required if (pendingRadiusCompensation >= 0) { // ensure that we end at desired position when compensation is turned off xOutput.reset(); yOutput.reset(); } var x = xOutput.format(_x); var y = yOutput.format(_y); var z = zOutput.format(_z); var f = feedOutput.format(feed); if (x || y || z) { if (pendingRadiusCompensation >= 0) { error(localize("Radius compensation mode is not supported.")); return; } else { writeBlock(gMotionModal.format(1), x, y, z, f); } } else if (f) { if (getNextRecord().isMotion()) { // try not to output feed without motion feedOutput.reset(); // force feed on next line } else { writeBlock(gMotionModal.format(1), f); } } } function onRapid5D(_x, _y, _z, _a, _b, _c) { error(localize("Multi-axis motion is not supported.")); } function onLinear5D(_x, _y, _z, _a, _b, _c, feed) { error(localize("Multi-axis motion is not supported.")); } function onCircular(clockwise, cx, cy, cz, x, y, z, feed) { // one of X/Y and I/J are required and likewise if (pendingRadiusCompensation >= 0) { error(localize("Radius compensation cannot be activated/deactivated for a circular move.")); return; } var start = getCurrentPosition(); if (isFullCircle()) { if (isHelical()) { linearize(tolerance); return; } switch (getCircularPlane()) { case PLANE_XY: writeBlock(gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed)); break; case PLANE_ZX: writeBlock(gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), zOutput.format(z), iOutput.format(cx - start.x, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed)); break; case PLANE_YZ: writeBlock(gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), yOutput.format(y), jOutput.format(cy - start.y, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed)); break; default: linearize(tolerance); } } else { switch (getCircularPlane()) { case PLANE_XY: writeBlock(gPlaneModal.format(17), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), jOutput.format(cy - start.y, 0), feedOutput.format(feed)); break; case PLANE_ZX: writeBlock(gPlaneModal.format(18), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), iOutput.format(cx - start.x, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed)); break; case PLANE_YZ: writeBlock(gPlaneModal.format(19), gMotionModal.format(clockwise ? 2 : 3), xOutput.format(x), yOutput.format(y), zOutput.format(z), jOutput.format(cy - start.y, 0), kOutput.format(cz - start.z, 0), feedOutput.format(feed)); break; default: linearize(tolerance); } } } var mapCommand = { COMMAND_STOP:0, COMMAND_END:2, COMMAND_SPINDLE_CLOCKWISE:3, COMMAND_SPINDLE_COUNTERCLOCKWISE:4, COMMAND_STOP_SPINDLE:5, COMMAND_COOLANT_ON:8, COMMAND_COOLANT_OFF:9 }; function onCommand(command) { switch (command) { case COMMAND_START_SPINDLE: onCommand(tool.clockwise ? COMMAND_SPINDLE_CLOCKWISE : COMMAND_SPINDLE_COUNTERCLOCKWISE); return; case COMMAND_LOCK_MULTI_AXIS: return; case COMMAND_UNLOCK_MULTI_AXIS: return; case COMMAND_BREAK_CONTROL: return; case COMMAND_TOOL_MEASURE: return; } var stringId = getCommandStringId(command); var mcode = mapCommand[stringId]; if (mcode != undefined) { writeBlock(mFormat.format(mcode)); } else { onUnsupportedCommand(command); } } function onSectionEnd() { writeBlock(gPlaneModal.format(17)); forceAny(); } function onClose() { onCommand(COMMAND_COOLANT_OFF); if (properties.useG28) { writeBlock(gFormat.format(28), gAbsIncModal.format(91), "Z" + xyzFormat.format(0)); // retract zOutput.reset(); } if (!machineConfiguration.hasHomePositionX() && !machineConfiguration.hasHomePositionY()) { if (properties.useG28) { writeBlock(gFormat.format(28), gAbsIncModal.format(91), "X" + xyzFormat.format(0), "Y" + xyzFormat.format(0)); // return to home } } else { var homeX; if (machineConfiguration.hasHomePositionX()) { homeX = "X" + xyzFormat.format(machineConfiguration.getHomePositionX()); } var homeY; if (machineConfiguration.hasHomePositionY()) { homeY = "Y" + xyzFormat.format(machineConfiguration.getHomePositionY()); } writeBlock(gAbsIncModal.format(90), gFormat.format(53), gMotionModal.format(0), homeX, homeY); } onImpliedCommand(COMMAND_END); onImpliedCommand(COMMAND_STOP_SPINDLE); writeBlock(mFormat.format(30)); // stop program, spindle stop, coolant off writeln("%"); }
The default GRBL post is not very good. GRBL has never understood tool changes so why is that even in there. It also uses G28 and most hobbiests don't understand proper machine setup for that to work reliably.... Maybe you can try this one that I have been tweaking for GRBL swarfer/GRBL-Post-Processor If you ever get an error 33 from GRBL then check your leadin/lead out radii, Fusion tends to make them very small which leads to radius errors reported by GRBL.
Funny as I have downloaded that 5 min ago and was messing with it but I am getting an error. I have homing switches setup also and would like to home before and after job if possible. Other than that, it seems good. Not sure what the -10 coords are for in the PP? I home to -X/Y and +Z
Using a set spot for toolchange hinges on having a good setup. What this means is that the machine must act as though it has home switches and does a homing cycle (even if there are no switches). If the machien doe shave home switches and uses them properly then of course everything is relative to that. If there are no switche...... This means the human has to have some good habits. (-: Habit 1 turn on the machine with it in the home position. Home position is at the positive end of the travels, X right, Y far away, Z up. (this includes any GRBL reset, if you have a crash and reset then make sure to move the gantry back home and reset there) This will mean that GRBL sets the Machine Coordinates to 0 at those positions and the work space will be negative. You then jog to your work 0,0,0 position and set Work Coodinates to 0,0,0 there for the part you are working on. Habit 2 Go back to machine home before powering off. The commands 'G53 G0 Z0' then 'G53 G0 X0 Y0' will do this safely. I programmed a button macro for this in bCNC. In fact I can hit that button and turn the drivers off (but not GRBL or the GUI), go for supper, come back, power the drivers on, and continue with stage x of a job without losing position. This saves my motors from getting hot without working for it. So, now that you have good habits about setting machine home you can use a set spot for toolchange. This spot is relative to the machine home and that is why having a good known machine home is critical. method 1 use G53 to move to an absolute spot. G53 G0 X-400 Y-700 Z0 will do it on my OX, putting X and Y near the front left corner and Z raised up safely. The co-ordinates are relative to machine home so will always be negative. method 2 use G28 (or g30). move to the spot you want. issue 'G28.1' so make GRBL remember the spot. now anytime you want to change a tool just issue a G28.
you need to do exactly what it says (-: in each setup in Fusion you need to set the WCS that it is using. normally this is G54 or '1' in Fusion terms. right click the setup and set the WCS as shown in the video below