Forum Replies Created
-
AuthorPosts
-
cmcgrath5035Moderator
You will likely find that disabling G2/G3 will work well, , but do expect much larger Gcode files.
cmcgrath5035ModeratorSome random thoughts since you are willing to dig in and experiment.
I am not a developer and have not dug into the code, so these comments are based on accumulated input from the devs.Your reasoning is OK but , I think, misses the point that the predominant errors are math rounding errors because the hardware is only an 8 bit machine. More digits into that machine will not improve results, most likely.
Working in mm rather than inch settings helps because all tinyG calcs are in mm, so specifying mm data and parameters minimizes the error introduced by repeated calls to the inch-to-mm conversion routines.
The most significant issue seems to be “Large I and J” parameters in arc specifications. My guess is that the work to improve performance has been to refactor the equations to minimize computational error when radius values>>increment values need to be dealt with. I might suggest that relaxing the allowed deviation accuracy in the Post Processor, which would have the effect of turning “almost straight arcs” into short linear moves.
Not using G2/G3 almost always works, but results in very large Gcode files.The devs do not like the idea of relaxing the tinyG tolerance, as the accumulated errors in a long job could be worse than the current result.
These are thoughts, not necessarily solutions.
- This reply was modified 5 years, 6 months ago by cmcgrath5035.
- This reply was modified 5 years, 6 months ago by cmcgrath5035.
- This reply was modified 5 years, 6 months ago by cmcgrath5035.
cmcgrath5035ModeratorHah, Sending $ej=1 is one of those init Items Chilipeppr sends.
CP SPJS does all communication with tinyG in JSON, translates text mode commands on the fly.
That way SPJS always receives JSON formatted status messages, which are quicker to parse.
You should be able to make $ej=1 stick.
Enter it via console, then reboot immediately.But, once it sticks, should you want to go back to text you will have to send “$ej=0” equivalent in JSON format.
I think you are better off leaving it =0 and change when running CNCjs.- This reply was modified 5 years, 6 months ago by cmcgrath5035.
cmcgrath5035ModeratorOdd indeed.
CoolTerm is a very basic file dumper, using Hardware flow control typically (RTS/CTS).
Chilipeppr is quite the opposite, sending a series of init commands to tinyG to get the interface in sync on startup. You can see these init commands and responses streaming in the CP Serial Port console.DO you see any activity on the CNCjs console when the Gcode transfer starts up?
cmcgrath5035ModeratorParameters – The tinyG settings displayed when you enter a $$ command via a command line interface.
Parameter settings are moot if tinyG does not support the Gcode commands generated by Ultimaker Cura Slicer, my read says several of the M__ commands in your Gcode are not supported
cmcgrath5035ModeratorTry CNCjs with $ex=0. I believe CNCjs uses buffer fill for flow control, as does Chilipeppr. Be sure to reset tinyg (reset button on board) to ensure new parameters are active.
No UGS experience her, sorry
cmcgrath5035ModeratorFrom looking at parameters, I see an XXYA machine,
2 X motors, a Y motor and a rotator, presummbaly pen up, pen down.With so lille mass being moved (pen vs spindle), jerk could be much higher,
perhaps 5000 to 10000 mm/min^3.I doubt the jerk value is the issue, however.
set $1tr =79.7966, same as $2tr. They should be the same if moving the same axis.Maybe post a copy of gcode to cloud as well?
- This reply was modified 5 years, 6 months ago by cmcgrath5035.
cmcgrath5035ModeratorPlease dump your parameters to a text file on a cloud drive (Gdrive, dropbox, etc) and provide a URL
Run $$ in console, then copy results and paste into text file.
cmcgrath5035ModeratorI suggest you review the tinyG wiki here
https://github.com/synthetos/TinyG/wiki/Gcode-SupportI see a number of M codes I have never seen before.
How did you set up the machine parameters?
cmcgrath5035ModeratorPlotter as in pen plotter? That implies a very low mass object being moved around by the X-Y commands.
Are you using mm mode or inch mode?. You report a rather strange combination of parameters.
What are you using as a Gcode sender? (UGS, coolterm, Chilipeppr, CNC.js, etc)?
Hand coded Gcode, or generated by CAD?cmcgrath5035ModeratorYes. I suggested you investigate this path because you were looking for a full 5 axis solution and had already mentioned using some external drivers.
gShield is great for small projects. It is not a great thermal design for a machine that will run several hours at a time at high stepper currentsYou might find this page useful https://github.com/synthetos/g2/wiki/G2core-on-DUE—External-Interfaces
I actually used the schematics from this product to jumpstart that wiki page
https://www.djuke.nl/index.php?page=shop.product_details&category_id=1&flypage=flypage.tpl&product_id=406&vmcchk=1&option=com_virtuemart&Itemid=8I tend to prefer well defined and isolated interfaces between boards like DUE (or Uno, or Pis) and external boards.
Many consider that unnecessarily conservative, so you can prototype directly wiring between DUE and external driver devices and decide for yourself.
If things don’t go well, you have some other ideas in hand.Good luck with your build.
cmcgrath5035ModeratorHmmm, we have a disconnect here.
Think of G2 as the next generation of tinyG firmware.
It started life as tinyG2, is now officially know as G2core.G2core needs more memory and performance than can be provided by the tinyGV8 hardware.
So your setup could be :– G2core, running on
– Arduino DUO
– 5 External Driver
– 5 Stepper motors, one for each axisThe build of G2core compatible with the Gshield, g2core-gShield-101.03.bin
Will output signals for 6 external drivers, chosen from 6 linear axis definitions (x,y,z,u,v,w) and three rotational axes (a,b,c). So you build with the Gshield definitions but you don’t use the Gshield hardware.There are not eonough pins on a DUE to support the full I/O space define for G2core.
So re-read the G2wiki with this info and see if things make more sense.
cmcgrath5035ModeratorThese look to me to be what you need
Probably Ebay too
cmcgrath5035ModeratorI’m not a GRBL user, so cannot comment there.
After the build, all the settable parameters ($$ list) can be modified to tweak the behavior of gcode that you then run.They are all defined in https://github.com/synthetos/g2/wiki/Configuring-Version-0.99.I think the answer is you need to generate Gcode that moves linear and rotational axes to achieve your goal.
cmcgrath5035ModeratorG2 Wiki pretty good on how to install G2. https://github.com/synthetos/g2/wiki
If you anticipate tweaking, clone the Edge branch to you PC and build it’I suggest this because you will likely find tweaks you want to make in header files or perhaps even some codeDownload the binary to DUE and connect up your external drivers using https://github.com/synthetos/g2/wiki/Arduino-DUE-Pinout-for-g2core as a guide. Since the gSheild has not changed, Motors 1-4 should probably be good and Motor 5 as well.
If you want to skip the build phase for now, download and install https://github.com/synthetos/g2/releases/download/101.03/g2core-gShield-101.03.bin
You should be able to move motors with that build.
If Pinout definition sounds tentative, well it is. If you don’t have access to the right pins for your 5 motor interface, you can move some around with Motate changes, a whole nother layer of complexity.
Numerous folks are experimenting with G2 on various hardware platforms.
- This reply was modified 5 years, 7 months ago by cmcgrath5035.
-
AuthorPosts