-
-
Notifications
You must be signed in to change notification settings - Fork 404
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Problem: G93 timing inaccurate #1372
Comments
I have tested this now with shorter moves (1/60 s, 1/96s, 1/100s, 1/120s). The overall travel is the same, it is just chopped up into more moves (500, 800, 833, 1000) instead of the original 200 moves at 1/24 s. The result is that the shorter the moves, the smaller the delay between controller 1 and 2. The sweetspot seems to be at around 1/100 s with only 20 ms delay between the two controllers. However the overall duration of the program got more inaccurate with ca 8.6s instead of the 8.3 desired. |
I think I found an explanation:
|
Your explanation seems plausible. Is this a practical problem, i.e. do you have a system requirement for motion that slow? |
I am building a motion control rig for macro videography you can see here: https://youtube.com/shorts/NohEinu3J5U?si=_9nAc7xaJqgFtQb9 I have tackled the problem by increasing the microsteps of the tmc drivers to 64. This got rid of most of the problem, but it still occurs with ultra slow moves. Right now I am preparing to switch the drivers to UART mode to get them to 256 microsteps. |
The video looks great. Is that running FluidNC? This might be part of the problem. We use a timer to control the time between steps. Choosing the timer speed and resolution affects the speed range. If you allow it to go slower it reduces how fast it can go. We might be able to create an experimental branch that skews the dynamic range to allow slower speeds for you to test. This is very deep in the code, so it might take some time before we try anything. |
Thanks! Yes, this is running fluidnc-v3.9.1 and it works like a charm. I don't suppose you could manipulate this with a setting in the config file, because it has to be compiled in, right? |
I have now switched my TMC2209s to uart and implemented 256 microsteps which makes the timing problem disappear completely. The only downside is that because of the extra cables I can't close the lid anymore, which I will have to resolve in the next version. For now, the problem no longer occurs with 64 microsteps or higher. Is there a way to tell the minimum step time for a single axis? |
I suspect that you are asking about the segment time, which controls how slow you can go, instead of the minimum step time, which is related to going fast. Each segment needs at least one step. ACCELERATION_TICKS_PER_SECOND, defined as 100 in Config.h, controls that. To change it you would need to recompile the code. If you want to look at the segment generation code, it is in Stepper.cpp. It is gnarly. |
Wiki Search Terms
G93, feedrate, inverse
Controller Board
ESP32 WROOM-32
Machine Description
Two naked boards without any periphery connected except two probes to my oscilloscope to measure the timing.
One machine is configured with 4 axis and the other one is configured with 1 axis (plus two dummy ones).
Both machines have user output pins defined. I toggle these pins at the start and end of the program to measure timing with my oscilloscope.
I have pasted both my config files in the config file section
Input Circuits
Two naked boards without any periphery connected except two probes to my oscilloscope to measure the timing.
Configuration file
Startup Messages
User Interface Software
FluidTerm, custom python program
What happened?
I create two gcode files with the same amount of moves. All moves are G93 inverse feedrate moves and have the same duration.
The only difference is that one file has four axes and the other has only one. At the begin and ending of both programs I toggle a user output pin to measure timing between the two controllers with my oscilloscope. I upload the files to the controllers via xmodem and start them with $LocalFS/Run=moco.nc . I send the start command to both controllers via custom python code. The first pulse that indicates the start of the program has a deviation of about 2ms between controller 1 and controller 2. The second pulse has as a deviation of 1.3 seconds between controllers. The whole program runs for 7.1 seconds on controller two, executing 200 moves. Each move should take 41.7ms (1/24 s). All moves should therefore take 8.33s .
Controller one finishes correctly in 8.3s.
GCode File
first gcode file
G94
G0X0.00Z89.00Y-90.00A100.00
G93
M62 P1
G4 P0.1
M63 P1
G1X0.00Z89.00Y-90.00A100.00F1440.00
G1X0.00Z89.00Y-90.00A100.00F1440.00
G1X0.35Z89.00Y-90.00A100.00F1440.00
G1X0.70Z89.00Y-90.00A100.00F1440.00
G1X1.06Z89.00Y-90.00A100.00F1440.00
G1X1.43Z89.00Y-90.00A100.01F1440.00
G1X1.81Z89.00Y-90.00A100.01F1440.00
G1X2.19Z89.00Y-90.00A100.02F1440.00
G1X2.57Z89.00Y-90.00A100.02F1440.00
G1X2.97Z89.00Y-90.00A100.03F1440.00
G1X3.37Z89.00Y-90.00A100.04F1440.00
G1X3.77Z89.00Y-90.00A100.05F1440.00
G1X4.18Z88.99Y-90.00A100.06F1440.00
G1X4.60Z88.99Y-90.00A100.07F1440.00
G1X5.02Z88.99Y-90.00A100.08F1440.00
G1X5.45Z88.99Y-90.00A100.09F1440.00
G1X5.88Z88.99Y-90.00A100.11F1440.00
G1X6.32Z88.99Y-90.00A100.12F1440.00
G1X6.76Z88.99Y-90.00A100.14F1440.00
G1X7.21Z88.99Y-90.00A100.15F1440.00
G1X7.66Z88.99Y-90.00A100.17F1440.00
G1X8.12Z88.99Y-90.00A100.19F1440.00
G1X8.58Z88.99Y-90.00A100.21F1440.00
G1X9.04Z88.99Y-90.00A100.23F1440.00
G1X9.52Z88.99Y-90.00A100.25F1440.00
G1X9.99Z88.99Y-90.00A100.27F1440.00
G1X10.47Z88.99Y-90.00A100.29F1440.00
G1X10.96Z88.99Y-90.00A100.31F1440.00
G1X11.44Z88.99Y-90.00A100.34F1440.00
G1X11.94Z88.99Y-90.00A100.36F1440.00
G1X12.43Z88.99Y-90.00A100.39F1440.00
G1X12.93Z88.99Y-90.00A100.42F1440.00
G1X13.44Z88.99Y-90.00A100.44F1440.00
G1X13.95Z88.99Y-90.00A100.47F1440.00
G1X14.46Z88.98Y-90.00A100.50F1440.00
G1X14.97Z88.98Y-90.00A100.53F1440.00
G1X15.49Z88.98Y-90.00A100.56F1440.00
G1X16.02Z88.98Y-90.00A100.60F1440.00
G1X16.54Z88.98Y-90.00A100.63F1440.00
G1X17.07Z88.98Y-90.00A100.66F1440.00
G1X17.61Z88.98Y-90.00A100.70F1440.00
G1X18.14Z88.98Y-90.00A100.73F1440.00
G1X18.68Z88.98Y-90.00A100.77F1440.00
G1X19.23Z88.98Y-90.00A100.81F1440.00
G1X19.77Z88.98Y-90.00A100.84F1440.00
G1X20.32Z88.98Y-90.00A100.88F1440.00
G1X20.88Z88.98Y-90.00A100.92F1440.00
G1X21.43Z88.98Y-90.00A100.96F1440.00
G1X21.99Z88.98Y-90.00A101.00F1440.00
G1X22.55Z88.98Y-90.00A101.05F1440.00
G1X23.12Z88.98Y-90.00A101.09F1440.00
G1X23.69Z88.97Y-90.00A101.13F1440.00
G1X24.26Z88.97Y-90.00A101.18F1440.00
G1X24.83Z88.97Y-90.00A101.22F1440.00
G1X25.41Z88.97Y-90.00A101.27F1440.00
G1X25.99Z88.97Y-90.00A101.32F1440.00
G1X26.57Z88.97Y-90.00A101.36F1440.00
G1X27.15Z88.97Y-90.00A101.41F1440.00
G1X27.74Z88.97Y-90.00A101.46F1440.00
G1X28.33Z88.97Y-90.00A101.51F1440.00
G1X28.92Z88.97Y-90.00A101.56F1440.00
G1X29.52Z88.97Y-90.00A101.61F1440.00
G1X30.12Z88.97Y-90.00A101.66F1440.00
G1X30.72Z88.97Y-90.00A101.72F1440.00
G1X31.32Z88.97Y-90.00A101.77F1440.00
G1X31.92Z88.97Y-90.00A101.83F1440.00
G1X32.53Z88.97Y-90.00A101.88F1440.00
G1X33.14Z88.96Y-90.00A101.94F1440.00
G1X33.75Z88.96Y-90.00A101.99F1440.00
G1X34.36Z88.96Y-90.00A102.05F1440.00
G1X34.98Z88.96Y-90.00A102.11F1440.00
G1X35.60Z88.96Y-90.00A102.17F1440.00
G1X36.22Z88.96Y-90.00A102.23F1440.00
G1X36.84Z88.96Y-90.00A102.29F1440.00
G1X37.47Z88.96Y-90.00A102.35F1440.00
G1X38.10Z88.96Y-90.00A102.41F1440.00
G1X38.73Z88.96Y-90.00A102.47F1440.00
G1X39.36Z88.96Y-90.00A102.54F1440.00
G1X39.99Z88.96Y-90.00A102.60F1440.00
G1X40.63Z88.96Y-90.00A102.67F1440.00
G1X41.26Z88.96Y-90.00A102.73F1440.00
G1X41.90Z88.96Y-90.00A102.80F1440.00
G1X42.54Z88.95Y-90.00A102.87F1440.00
G1X43.19Z88.95Y-90.00A102.93F1440.00
G1X43.83Z88.95Y-90.00A103.00F1440.00
G1X44.48Z88.95Y-90.00A103.07F1440.00
G1X45.13Z88.95Y-90.00A103.14F1440.00
G1X45.78Z88.95Y-90.00A103.21F1440.00
G1X46.43Z88.95Y-90.00A103.28F1440.00
G1X47.09Z88.95Y-90.00A103.35F1440.00
G1X47.74Z88.95Y-90.00A103.43F1440.00
G1X48.40Z88.95Y-90.00A103.50F1440.00
G1X49.06Z88.95Y-90.00A103.57F1440.00
G1X49.72Z88.95Y-90.00A103.65F1440.00
G1X50.38Z88.95Y-90.00A103.72F1440.00
G1X51.05Z88.95Y-90.00A103.80F1440.00
G1X51.72Z88.94Y-90.00A103.88F1440.00
G1X52.38Z88.94Y-90.00A103.95F1440.00
G1X53.05Z88.94Y-90.00A104.03F1440.00
G1X53.72Z88.94Y-90.00A104.11F1440.00
G1X54.40Z88.94Y-90.00A104.19F1440.00
G1X55.07Z88.94Y-90.00A104.27F1440.00
G1X55.75Z88.94Y-90.00A104.35F1440.00
G1X56.43Z88.94Y-90.00A104.43F1440.00
G1X57.10Z88.94Y-90.00A104.51F1440.00
G1X57.79Z88.94Y-90.00A104.59F1440.00
G1X58.47Z88.94Y-90.00A104.68F1440.00
G1X59.15Z88.94Y-90.00A104.76F1440.00
G1X59.84Z88.94Y-90.00A104.85F1440.00
G1X60.52Z88.93Y-90.00A104.93F1440.00
G1X61.21Z88.93Y-90.00A105.02F1440.00
G1X61.90Z88.93Y-90.00A105.10F1440.00
G1X62.59Z88.93Y-90.00A105.19F1440.00
G1X63.28Z88.93Y-90.00A105.28F1440.00
G1X63.98Z88.93Y-90.00A105.36F1440.00
G1X64.67Z88.93Y-90.00A105.45F1440.00
G1X65.37Z88.93Y-90.00A105.54F1440.00
G1X66.06Z88.93Y-90.00A105.63F1440.00
G1X66.76Z88.93Y-90.00A105.72F1440.00
G1X67.46Z88.93Y-90.00A105.81F1440.00
G1X68.16Z88.93Y-90.00A105.90F1440.00
G1X68.87Z88.93Y-90.00A106.00F1440.00
G1X69.57Z88.92Y-90.00A106.09F1440.00
G1X70.28Z88.92Y-90.00A106.18F1440.00
G1X70.98Z88.92Y-90.00A106.28F1440.00
G1X71.69Z88.92Y-90.00A106.37F1440.00
G1X72.40Z88.92Y-90.00A106.47F1440.00
G1X73.11Z88.92Y-90.00A106.56F1440.00
G1X73.82Z88.92Y-90.00A106.66F1440.00
G1X74.53Z88.92Y-90.00A106.75F1440.00
G1X75.25Z88.92Y-90.00A106.85F1440.00
G1X75.96Z88.92Y-90.00A106.95F1440.00
G1X76.68Z88.92Y-90.00A107.05F1440.00
G1X77.39Z88.92Y-90.00A107.15F1440.00
G1X78.11Z88.91Y-90.00A107.25F1440.00
G1X78.83Z88.91Y-90.00A107.35F1440.00
G1X79.55Z88.91Y-90.00A107.45F1440.00
G1X80.27Z88.91Y-90.00A107.55F1440.00
G1X81.00Z88.91Y-90.00A107.65F1440.00
G1X81.72Z88.91Y-90.00A107.75F1440.00
G1X82.45Z88.91Y-90.00A107.85F1440.00
G1X83.17Z88.91Y-90.00A107.96F1440.00
G1X83.90Z88.91Y-90.00A108.06F1440.00
G1X84.63Z88.91Y-90.00A108.16F1440.00
G1X85.36Z88.91Y-90.00A108.27F1440.00
G1X86.09Z88.90Y-90.00A108.37F1440.00
G1X86.82Z88.90Y-90.00A108.48F1440.00
G1X87.55Z88.90Y-90.00A108.59F1440.00
G1X88.28Z88.90Y-90.00A108.69F1440.00
G1X89.02Z88.90Y-90.00A108.80F1440.00
G1X89.75Z88.90Y-90.00A108.91F1440.00
G1X90.49Z88.90Y-90.00A109.02F1440.00
G1X91.22Z88.90Y-90.00A109.12F1440.00
G1X91.96Z88.90Y-90.00A109.23F1440.00
G1X92.70Z88.90Y-90.00A109.34F1440.00
G1X93.44Z88.90Y-90.00A109.45F1440.00
G1X94.18Z88.90Y-90.00A109.56F1440.00
G1X94.92Z88.89Y-90.00A109.67F1440.00
G1X95.66Z88.89Y-90.00A109.79F1440.00
G1X96.41Z88.89Y-90.00A109.90F1440.00
G1X97.15Z88.89Y-90.00A110.01F1440.00
G1X97.90Z88.89Y-90.00A110.12F1440.00
G1X98.64Z88.89Y-90.00A110.24F1440.00
G1X99.39Z88.89Y-90.00A110.35F1440.00
G1X100.14Z88.89Y-90.00A110.46F1440.00
G1X100.88Z88.89Y-90.00A110.58F1440.00
G1X101.63Z88.89Y-90.00A110.69F1440.00
G1X102.38Z88.89Y-90.00A110.81F1440.00
G1X103.14Z88.88Y-90.00A110.93F1440.00
G1X103.89Z88.88Y-90.00A111.04F1440.00
G1X104.64Z88.88Y-90.00A111.16F1440.00
G1X105.39Z88.88Y-90.00A111.28F1440.00
G1X106.15Z88.88Y-90.00A111.39F1440.00
G1X106.90Z88.88Y-90.00A111.51F1440.00
G1X107.66Z88.88Y-90.00A111.63F1440.00
G1X108.41Z88.88Y-90.00A111.75F1440.00
G1X109.17Z88.88Y-90.00A111.87F1440.00
G1X109.93Z88.88Y-90.00A111.99F1440.00
G1X110.69Z88.87Y-90.00A112.11F1440.00
G1X111.45Z88.87Y-90.00A112.23F1440.00
G1X112.21Z88.87Y-90.00A112.35F1440.00
G1X112.97Z88.87Y-90.00A112.47F1440.00
G1X113.73Z88.87Y-90.00A112.59F1440.00
G1X114.49Z88.87Y-90.00A112.72F1440.00
G1X115.26Z88.87Y-90.00A112.84F1440.00
G1X116.02Z88.87Y-90.00A112.96F1440.00
G1X116.79Z88.87Y-90.00A113.09F1440.00
G1X117.55Z88.87Y-90.00A113.21F1440.00
G1X118.32Z88.86Y-90.00A113.33F1440.00
G1X119.08Z88.86Y-90.00A113.46F1440.00
G1X119.85Z88.86Y-90.00A113.58F1440.00
G1X120.62Z88.86Y-90.00A113.71F1440.00
G1X121.39Z88.86Y-90.00A113.83F1440.00
G1X122.16Z88.86Y-90.00A113.96F1440.00
G1X122.93Z88.86Y-90.00A114.09F1440.00
G1X123.70Z88.86Y-90.00A114.21F1440.00
G1X124.47Z88.86Y-90.00A114.34F1440.00
G1X125.24Z88.86Y-90.00A114.47F1440.00
G1X126.02Z88.85Y-90.00A114.59F1440.00
G1X126.79Z88.85Y-90.00A114.72F1440.00
M62 P1
G4 P0.1
M63 P1
second gcode file
G94
G0X104.80
G93
M62 P1
G4 P0.1
M63 P1
G1X104.80F1440.00
G1X104.80F1440.00
G1X104.81F1440.00
G1X104.82F1440.00
G1X104.83F1440.00
G1X104.83F1440.00
G1X104.84F1440.00
G1X104.85F1440.00
G1X104.86F1440.00
G1X104.86F1440.00
G1X104.87F1440.00
G1X104.88F1440.00
G1X104.89F1440.00
G1X104.90F1440.00
G1X104.91F1440.00
G1X104.91F1440.00
G1X104.92F1440.00
G1X104.93F1440.00
G1X104.94F1440.00
G1X104.95F1440.00
G1X104.96F1440.00
G1X104.97F1440.00
G1X104.98F1440.00
G1X104.99F1440.00
G1X105.00F1440.00
G1X105.01F1440.00
G1X105.02F1440.00
G1X105.03F1440.00
G1X105.04F1440.00
G1X105.05F1440.00
G1X105.06F1440.00
G1X105.07F1440.00
G1X105.08F1440.00
G1X105.09F1440.00
G1X105.10F1440.00
G1X105.11F1440.00
G1X105.12F1440.00
G1X105.13F1440.00
G1X105.15F1440.00
G1X105.16F1440.00
G1X105.17F1440.00
G1X105.18F1440.00
G1X105.19F1440.00
G1X105.20F1440.00
G1X105.21F1440.00
G1X105.23F1440.00
G1X105.24F1440.00
G1X105.25F1440.00
G1X105.26F1440.00
G1X105.27F1440.00
G1X105.29F1440.00
G1X105.30F1440.00
G1X105.31F1440.00
G1X105.32F1440.00
G1X105.34F1440.00
G1X105.35F1440.00
G1X105.36F1440.00
G1X105.37F1440.00
G1X105.39F1440.00
G1X105.40F1440.00
G1X105.41F1440.00
G1X105.43F1440.00
G1X105.44F1440.00
G1X105.45F1440.00
G1X105.46F1440.00
G1X105.48F1440.00
G1X105.49F1440.00
G1X105.51F1440.00
G1X105.52F1440.00
G1X105.53F1440.00
G1X105.55F1440.00
G1X105.56F1440.00
G1X105.57F1440.00
G1X105.59F1440.00
G1X105.60F1440.00
G1X105.62F1440.00
G1X105.63F1440.00
G1X105.64F1440.00
G1X105.66F1440.00
G1X105.67F1440.00
G1X105.69F1440.00
G1X105.70F1440.00
G1X105.72F1440.00
G1X105.73F1440.00
G1X105.75F1440.00
G1X105.76F1440.00
G1X105.77F1440.00
G1X105.79F1440.00
G1X105.80F1440.00
G1X105.82F1440.00
G1X105.83F1440.00
G1X105.85F1440.00
G1X105.87F1440.00
G1X105.88F1440.00
G1X105.90F1440.00
G1X105.91F1440.00
G1X105.93F1440.00
G1X105.94F1440.00
G1X105.96F1440.00
G1X105.97F1440.00
G1X105.99F1440.00
G1X106.01F1440.00
G1X106.02F1440.00
G1X106.04F1440.00
G1X106.05F1440.00
G1X106.07F1440.00
G1X106.09F1440.00
G1X106.10F1440.00
G1X106.12F1440.00
G1X106.14F1440.00
G1X106.15F1440.00
G1X106.17F1440.00
G1X106.18F1440.00
G1X106.20F1440.00
G1X106.22F1440.00
G1X106.23F1440.00
G1X106.25F1440.00
G1X106.27F1440.00
G1X106.29F1440.00
G1X106.30F1440.00
G1X106.32F1440.00
G1X106.34F1440.00
G1X106.35F1440.00
G1X106.37F1440.00
G1X106.39F1440.00
G1X106.41F1440.00
G1X106.42F1440.00
G1X106.44F1440.00
G1X106.46F1440.00
G1X106.48F1440.00
G1X106.49F1440.00
G1X106.51F1440.00
G1X106.53F1440.00
G1X106.55F1440.00
G1X106.57F1440.00
G1X106.58F1440.00
G1X106.60F1440.00
G1X106.62F1440.00
G1X106.64F1440.00
G1X106.66F1440.00
G1X106.68F1440.00
G1X106.70F1440.00
G1X106.71F1440.00
G1X106.73F1440.00
G1X106.75F1440.00
G1X106.77F1440.00
G1X106.79F1440.00
G1X106.81F1440.00
G1X106.83F1440.00
G1X106.85F1440.00
G1X106.86F1440.00
G1X106.88F1440.00
G1X106.90F1440.00
G1X106.92F1440.00
G1X106.94F1440.00
G1X106.96F1440.00
G1X106.98F1440.00
G1X107.00F1440.00
G1X107.02F1440.00
G1X107.04F1440.00
G1X107.06F1440.00
G1X107.08F1440.00
G1X107.10F1440.00
G1X107.12F1440.00
G1X107.14F1440.00
G1X107.16F1440.00
G1X107.18F1440.00
G1X107.20F1440.00
G1X107.22F1440.00
G1X107.24F1440.00
G1X107.26F1440.00
G1X107.28F1440.00
G1X107.30F1440.00
G1X107.32F1440.00
G1X107.34F1440.00
G1X107.37F1440.00
G1X107.39F1440.00
G1X107.41F1440.00
G1X107.43F1440.00
G1X107.45F1440.00
G1X107.47F1440.00
G1X107.49F1440.00
G1X107.51F1440.00
G1X107.53F1440.00
G1X107.56F1440.00
G1X107.58F1440.00
G1X107.60F1440.00
G1X107.62F1440.00
G1X107.64F1440.00
G1X107.66F1440.00
G1X107.69F1440.00
G1X107.71F1440.00
G1X107.73F1440.00
G1X107.75F1440.00
G1X107.78F1440.00
G1X107.80F1440.00
G1X107.82F1440.00
G1X107.84F1440.00
G1X107.86F1440.00
G1X107.89F1440.00
M62 P1
G4 P0.1
M63 P1
Other Information
I have tested this with version 3.8.4-pre5 and 3.9.1
If both controllers have the same file, they start and finish at the same time.
The overall delay varies with the number of moves.
The text was updated successfully, but these errors were encountered: