Request for Marlin/Arduino Expertise
Posted: Thu Jul 30, 2015 2:35 pm
Oh MakerGear community, we request your assistance to identify the source of this elusive issue:
We've received reports and also experienced infrequent, intermittent X/Y skips while printing. Most of the skipping issues that are reported are related to the specific model being printed or improper machine assembly. However, there is also an elusive scenario that we've been trying to track down.
During our in-house investigation, we've found an underlying issue with the M2 firmware (Marlin) - during certain moves at certain speeds (most commonly, from the front left to rear right corner, at speeds above default "travel" moves in S3D) there will be a glitch in the stepper STEP signal. If the axes are moving at high enough speed during the glitch, the sudden "attempt" at a full stop (no signals being sent = no movements being commanded = no motion) can lead to a skip/layer shift in X, Y or both.
The rate of occurrence of this glitch depends on the version of the Arduino IDE used to compile and upload the firmware, the direction and possibly distance of the move, and the speed of the move. Arduino IDE 1.5.7 and above will cause glitches to occur when moving from 0,0 to 220,245 at F18000 reliably, while 1.5.6 and below will not; both versions see skipping when commanding a move from 0,0 to 220,245 at F90000 (which is intentionally faster than the machine can support - the firmware should be clamping this move to 500mm/s [F30000] depending on firmware max feedrate settings, and even lower to ~450mm/s [~F27000] due to the "max step frequency" and steps/mm values in the firmware). I was able to further isolate the change to the compiler version change from 1.5.6 to 1.5.7 - when forcing IDE 1.6.3 to use the compiler from 1.5.5, the glitch incidence rate matched that of 1.5.6 and below (which is to say, "normal").
This post on the Marlin github issue tracker (https://github.com/MarlinFirmware/Marlin/issues/2370 ) contains most of my testing protocol and results, oscilloscope shots of the glitch and timing, and discussion between other Marlin users/developers on this issue. If you have any information or questions, feel free to join the discussion here, on the issue tracker, or by emailing me directly (josh @ the place I work dot com)
Thank you!
We've received reports and also experienced infrequent, intermittent X/Y skips while printing. Most of the skipping issues that are reported are related to the specific model being printed or improper machine assembly. However, there is also an elusive scenario that we've been trying to track down.
During our in-house investigation, we've found an underlying issue with the M2 firmware (Marlin) - during certain moves at certain speeds (most commonly, from the front left to rear right corner, at speeds above default "travel" moves in S3D) there will be a glitch in the stepper STEP signal. If the axes are moving at high enough speed during the glitch, the sudden "attempt" at a full stop (no signals being sent = no movements being commanded = no motion) can lead to a skip/layer shift in X, Y or both.
The rate of occurrence of this glitch depends on the version of the Arduino IDE used to compile and upload the firmware, the direction and possibly distance of the move, and the speed of the move. Arduino IDE 1.5.7 and above will cause glitches to occur when moving from 0,0 to 220,245 at F18000 reliably, while 1.5.6 and below will not; both versions see skipping when commanding a move from 0,0 to 220,245 at F90000 (which is intentionally faster than the machine can support - the firmware should be clamping this move to 500mm/s [F30000] depending on firmware max feedrate settings, and even lower to ~450mm/s [~F27000] due to the "max step frequency" and steps/mm values in the firmware). I was able to further isolate the change to the compiler version change from 1.5.6 to 1.5.7 - when forcing IDE 1.6.3 to use the compiler from 1.5.5, the glitch incidence rate matched that of 1.5.6 and below (which is to say, "normal").
This post on the Marlin github issue tracker (https://github.com/MarlinFirmware/Marlin/issues/2370 ) contains most of my testing protocol and results, oscilloscope shots of the glitch and timing, and discussion between other Marlin users/developers on this issue. If you have any information or questions, feel free to join the discussion here, on the issue tracker, or by emailing me directly (josh @ the place I work dot com)
Thank you!