Forum Replies Created
-
AuthorPosts
-
fluxMember
Sure thing. So here are the test cases I’ve used:
This is the original test case where I found the issue. It has been accelerated (F2000) for faster runtime. The problem occurs on edge/412.10/412.11 and I imagine on master as well although it hasn’t been exactly this I’ve run on this:
http://www.modeemi.fi/~flux/tinyg/test.7.gcode
This is a short part from it that also reproduces the error at least on edge/412.10, didn’t try it on master:
http://www.modeemi.fi/~flux/tinyg/test.gcode
For these tests I have used http://www.modeemi.fi/~flux/tinyg/tinyg-settings.txt and http://www.modeemi.fi/~flux/tinyg/tinyg-settings-2014-04-27.txt , both producing pretty much the same results.
These seem to fail on master but they work on edge/412.11:
Numerous small circles: http://www.modeemi.fi/~flux/tinyg/circles.gcode
A small zigzag: http://www.modeemi.fi/~flux/tinyg/segments.gcode
Good luck :).
fluxMemberI noticed that pcb-gcode also has the parameter ‘epsilon’. It was originally 0.00254 and I raised that to 0.05 with high hopes :). Sadly the resulting G-code still causes a drift. But at least it runs faster with the F2000-speed (obviously not the speed I would eventually run it with).
It’s quite possible the epsilon=0.05 still leaves some short moves, or even many. Even though the random peek only showed some 0.15 mm moves, there might have been others, and I didn’t verify the generator if it always uses its ‘are points close’ test.
fluxMemberHello!
I tried 412.10 and it worked great for the segments.gcode, segments-100.gcode and circles.gcode.
However, test.7.gcode tripped it: X offset around -4 mm and Y offset around 12 mm :(. (Of these tests only circles.gcode exercise the Z axis.) I also tried the latest edge (412.11), it behaved identically.
When running test.7.gcode there were segments when it was moving reaaally slow (50 mm/min?), not trying to accelerate to 2000 mm/min at all even though it looked to move directly or almost directly to some direction. Then again some of the round segments sounded like it was accelerating and decelerating for each of the small segments and maintaining pretty good speed doing it. (200 mm/min? These are purely guesses.) test.7.gcode contains no arcs, only very small segments, so perhaps a post-processor could serve as a temporary workaround, as the other tests worked ok.
I also had to modify my uploader, otherwise it would not proceed after the first circle (or arc) in circles.gcode.. Apparently it doesn’t do the queue report always? It started to work again after I dropped the ‘qr’ limit to 2 in my program (it used to be 20) so basically it’s uploading respecting (or not..) the rts/cts. There is even this (closed) issue https://github.com/synthetos/TinyG/issues/66 about it, dunno how it worked there as I can see it’s not reporting qr > 3 after an arc (or two).. It only responds with qr:3 or qr:4 during my test.
- This reply was modified 10 years, 6 months ago by flux.
fluxMemberNo hurry, have safe traveling :).
I took a look and I take it it’s 412.10 that has the fixes you are talking about? The most recent edge I had tried before was 412.02.
I’ll try the new edge before you’ll get back :).
fluxMemberHi!
Yeah, I’ve read about these parameters, but it’s difficult to say about their real meaning. I imagine they should not make it impossible to make shorter lines than the values indicated though and I didn’t touch them, as they suggest not to do :).
But this actually does give me a test case idea: Just do a 1000 0.01 mm moves to a certain direction and look what it does!
Well, I did it, and no drift occurred, but then I gave it a twist and behold, here is a test case that introduces an about -4 mm horizontal drift by doing a small zig-zag-pattern (increments Y by 0.01, but X increments from 0.00 to 0.03 and then back to 0.00): http://www.modeemi.fi/~flux/tinyg/segments.gcode (and the generating script: http://www.modeemi.fi/~flux/tinyg/generate-segments, run it with argument 10). It takes about 20 seconds to run on my settings.
However, doing the same test scaled by factor 10 still exhibits the same error, and now we’re talking about movements that are at least 0.1 mm long. It actually introduces an even bigger drift. The 10x scaled test case is here (produced with argument 100): http://www.modeemi.fi/~flux/tinyg/segments-100.gcode . It takes about 1 minute 14 seconds to run on my settings.
Btw, circles.gcode does not do very small moves, unless TinyG internally splits the relatively small arcs into such short segments, which I imagine it does 😉 but I imagine it would also respect such parametrized limits.
About the visualization: does your visualizer support arcs? Not all seem to do. At least OpenSCAM does show the circles.
I’ve considered about writing a converter that would replace those extremely short lines with slightly longer ones (by removing intermediate moves), it is doubtful I would need that kind of precision, but the segments-test case suggests to me that it might not help. And per circles.gcode, perhaps replacing the arc-forming segments with actual arcs would not help either.
Are you saying that you actually cut PCB copper, twice, with circles.gcode and the results appear to be A.; cut without drift, yet the final X0 position is offset by -19mm or that the two runs are B.;the same, showing accumulated drift error as the cuts are made? I am assuming your answer is B.
B: the circles are cramped horizontally, and in the end I can see the X has moved (also Z, so the cuts get deeper and deeper gradually); I must assume the X just gets drifted continuously, making the circles cramped.
- This reply was modified 10 years, 6 months ago by flux.
fluxMemberHello again,
I’ve now seen the problem occur on the master branch as well.
I’ve replaced the X-belt, lowered the motor currents to the default twelve-o’clock-orientation and lowered the jerk values. But this test case still drives makes both my X and Z drift, X by around -19 mm and Z by around -1 mm. I tried both keeping Z power management on and off, no difference. I had also reduced Z jerk significantly and reduced its maximum speed, with no difference.
Here’s the test case: http://www.modeemi.fi/~flux/tinyg/circles.gcode
And here’s my current configuration: http://www.modeemi.fi/~flux/tinyg/tinyg-settings-2014-04-27.txt
Summary of the test case: radius 1 mm circles made clockwise and counterclockwise in 2 mm pattern, and a small drilling made to the center. The perl script for generating this is at http://www.modeemi.fi/~flux/tinyg/generate-circles .
I wonder, do you see the same issue with edge? I ran it with actual PCB (twice, with identical results), but you could just run it in the air. It takes about 20 minutes to run on my settings.
I did now notice that I had not started my fan for cooling down the bottom of the TinyG board, and I will do the test again (in air, this time) with the fan, but decided to post this before anyway. I did have the fan on on the first test.
I actually also took a video of the operation, and nowhere did I see anything out-of-the-ordinary.. So it just seems it drifts a little bit at a time.
I hope something can be found to explain this, I cannot quite understand what is going on :).
fluxMemberThanks for describing your method. I have not yet tried it, but:
I would say at this point I would not use feed rates for the materials I mill much above F1200, so have tentatively concluded that the 12o’clock setting for servo drive current is adequate with headroom.
As you note, it’s different when moving in free air and then milling something. I had some trouble missing steps when milling aluminum, so I decided to just go full throttle in my current pots. (The motors are rated 3A anyway and TinyG can give 2.5A.) So while this approach can give bounds for doing free-air G0 movements, it doesn’t really answer what kind of settings one needs to actually mill hard materials.
Sadly we cannot adjust the current limits in software for different situations (or can we? the edge branch gives some new ‘motor power’ setting ranging from 0.0 to 1.0), I bet that could be useful in using different settings for moving in air, milling PCBs and milling hard materials.
fluxMemberAll these results are tinyG build 412.01. While there could be a digital fw issue in these newer builds, I am more suspicious, at least in my case, of the mass of the DW660 being just too much for a NEMA 17 shapeOko to adequately control under the workload presented by test.7.gcode.
It is interesting that adjusting motor powers can affect the results. Though, perhaps it should be executed numerous times. For example, if it is completely random which moves cause the trouble, then can the results be as well. So there should probably be much more testing, such as running the test with same settings 10 times in a row.
Btw, you should try test.gcode as well, it does significantly less stressful work – and to me introduces significantly less drift, but it does anyway.
The thing that makes me think this is not a machine issue is the fact that master has no trouble with the same machine configuration. Does edge really stress the machine so much harder?
Thanks for keeping on it :). I’ll take a look at your approach to calibration when I find the time.
fluxMemberGreat that someone has been able to reproduce the issue :).
Good grief, my ShapeOko is now demanding overtime pay!
That code does moves a lot, quickly!🙂 I noticed increasing $xjd and $yjd to 0.05 make it even faster, but perhaps at some cost of precision.
During this run, spindle was all over the place (+,+), (+,-), (-,-), (-,+)
The job never goes to negative, so if you see that, you already know it has gained offset. Btw, the problem can manifest itself with a positive offset as well, though I think I’ve never seen it with test.7.gcode.
Sidebar question: I assume you edited Z movement out of the Gcode file.
Can PCBs actually be cut this fast?Yes, I removed Z movement so I can test if faster and more safely without milling anything. I also increased the feed rate from 400 to 2000 to speed up the testing, and I don’t think you can actually cut PCBs this fast :). (But I think I will still try what the quality will be when speeding up a bit.)
Related: I managed to finally mill a PCB with the master branch (doing probing by abusing the homing system for determining Zmin; not as nice with the probe where you are able to retrieve multiple points on any direction, not just X), and it seems quite promising!
fluxMemberHi!
Hmm, so you tried the G-code on the 412.01 you have? Here’s another G-code program that reproduces a bigger gap on 412.01 (but it takes ~3 minutes to run on my relatively high speed settings): http://www.modeemi.fi/~flux/tinyg/test.7.gcode . It can introduce a 10 mm x offset in the machine position.
I have zero experience with multiple coordinate systems, so have been studying your config file just to see what it looks like. I don’t know what type of machine you have (you mention belt drive).
I too have a ShapeOko (2). I have equipped its x/y with Nema23 motors.
I’m doubtful the coordinate systems are to blame, as I imagine that’s a feature that’s used a lot professionally – and everything seems to work fine in the master. And the coordinate system feature is quite nice! I can set one point to be the center of the machine, another to point to the origo of my PCB fixing spot and the values persist over restarts. Just start the machine, home it, and G57 G0 X0 Y0 Z0 goes to where the PCB is.
1. I have not seen prior to this anyone running tinyG at baud=230400. It is a valid option, so I can only assume you are confident it really works well at both ends.
I think this part works OK, also it can only realistically introduce errors in communication (which I haven’t witnessed, such as completely invalid moves), not an offset to the machine position.
2. Your X jerk, y jerk and z jerk maximums are way larger than I have, which may be part of my problem.
I’ve found the jerk settings by just moving some distances, finding big values that still work, and then downsize to a serviceable value. Hasn’t caused trouble this far (milling wood, aluminum) of course it depends on the job what the feed rate should be.
I actually halved the jerk values when trying to narrow down the problem, but it had no effect. I also tried both lowering and increasing the x/y junction deviations (0.01, 0.05) but it also had no effect. I also tried exact stop mode, but it had no effect.
What did you mean by reproduction images? Did your try to insert an image?
Oops, I actually meant the G-code program, not an image.
Btw, a related thing I _think_ I noticed when running the test on 380.08: I heard the clicking sound that is fixed in edge. I didn’t hear those in the edge version. It could very well be that the fixes related to eliminating clicking (so the sudden stepper adjustments?) also affect this issue.
fluxMemberI tried the released 412.01 binaries, and sadly the issue still persists.
However, I also tried with 380.08 (master) as well, and it did not have the issue. So it would seem that the edge branch introduces the error – I hope these reproduction images will be helpful in finding the issue.
I think it’s not going to be very realistic to pick the probing code from the edge to master, so I guess I need to make-do with the end-stop searching feature.
Thanks for all the help!
fluxMemberIt seems that there have indeed been some biggish changes (inverse feed rate mode) between 412.01 and 412.02 (more than I actually first thought), so I should probably try 412.01 first (though from the diff it looks like the chances of affecting my issue are near zilch).
The probing stuff is unchanged from 412.01, so I still get to keep experimenting; perhaps I should then try master, if that doesn’t help.
Thanks for pointers!
fluxMemberAh, I should have clarified that I’m using the latest version from Git; where does one even get precompiled edge firmwares? So I’m using Git version 8443a89158fee28a8b1d9be518d0cc74b6e3585f which is 412.02. I compiled it myself on Linux. 412.06 does not seem to be available on the Git repository.
I’m using a tool of my own writing for uploading the G-code (http://github.com/eras/tgup), as I was unable to make tgFx work on Linux. This does not affect this issue though, as it does not send any offset-reset commands (ie. G92), it only knows to send the commands that are present in the source gcode file. So for example missing characters would not cause this (and the program does proper queue management plus RTS/CTS handshaking) except in exceptional circumstances. But it is of course possible that my upload program is hiding some diagnostics response from TinyG, maybe I should change it to be more verbose.
I see the offset in the milled result. In fact, I can see it even without milling, in the position of the head when I G0 move it to a known location, after running the job in air. (I use a terminal program for sending interactive commands.)
Thanks for the link, but I think it’s not the same issue, as the issue there doesn’t seem to have signs of machine offset getting changed. In my case the machine offset changes so that it can only be restored with commands such as G92 or G54. G0 X0 might even ride through the end stop without resetting the offsets.
fluxMemberThanks,
So it seems I cannot accidentally reprogram the bootloader (much like Arduino?) so experimenting should be safe. Thanks :). (The only problem I see is that if I happen to be able to erase the flash but writing the flash wouldn’t work for some reason or another.)
fluxMemberScratch that, the DRV8818 datasheet says operating temperature is -40 to 85 C, so under 70 C to be on the safe side and avoid overtemperature protection.
-
AuthorPosts