Minor update to further eliminate the ole long slope deceleration issue. New update note!
- Added another way to further ensure the long slope deceleration issue is eliminated. If the stepper rate change is too great near zero, the stepper rate is adjusted at half increments to the end of travel, creating a smooth transition. - If the new STEPPER_IDLE_LOCK_TIME is set as zero, this delay is not compiled at compile-time. - NOTE: The next update is likely going to be major, involving a full re-write of the stepper.c program to integrate a simple way to apply pauses, jogging, e-stop, and feedrate overrides. The interface should be flexible enough to be easily modified for use with either hardware switches or software commands. Coming soon.
This commit is contained in:
parent
59a84c4925
commit
ca26bb9ccf
17
config.h
17
config.h
@ -62,7 +62,8 @@
|
|||||||
// entering g-code into grbl, i.e. locating part zero or simple manual machining. If the axes drift,
|
// entering g-code into grbl, i.e. locating part zero or simple manual machining. If the axes drift,
|
||||||
// grbl has no way to know this has happened, since stepper motors are open-loop control. Depending
|
// grbl has no way to know this has happened, since stepper motors are open-loop control. Depending
|
||||||
// on the machine, this parameter may need to be larger or smaller than the default time.
|
// on the machine, this parameter may need to be larger or smaller than the default time.
|
||||||
#define STEPPER_IDLE_LOCK_TIME 25 // (milliseconds)
|
// NOTE: If defined 0, the delay will not be compiled.
|
||||||
|
#define STEPPER_IDLE_LOCK_TIME 25 // (milliseconds) - Integer >= 0
|
||||||
|
|
||||||
// The temporal resolution of the acceleration management subsystem. Higher number give smoother
|
// The temporal resolution of the acceleration management subsystem. Higher number give smoother
|
||||||
// acceleration but may impact performance.
|
// acceleration but may impact performance.
|
||||||
@ -80,18 +81,18 @@
|
|||||||
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
// if unwanted behavior is observed on a user's machine when running at very slow speeds.
|
||||||
#define MINIMUM_PLANNER_SPEED 0.0 // (mm/min)
|
#define MINIMUM_PLANNER_SPEED 0.0 // (mm/min)
|
||||||
|
|
||||||
// Minimum stepper rate. Sets the absolute minimum stepper rate in the stepper program and never run
|
// Minimum stepper rate. Sets the absolute minimum stepper rate in the stepper program and never runs
|
||||||
// slower than this value, except when sleeping. This parameter overrides the minimum planner speed.
|
// slower than this value, except when sleeping. This parameter overrides the minimum planner speed.
|
||||||
// This is primarily used to guarantee that the end of a movement is always reached and not stop to
|
// This is primarily used to guarantee that the end of a movement is always reached and not stop to
|
||||||
// never reach its target. This parameter should always be greater than zero.
|
// never reach its target. This parameter should always be greater than zero.
|
||||||
#define MINIMUM_STEPS_PER_MINUTE 800 // (steps/min) - Integer value only
|
#define MINIMUM_STEPS_PER_MINUTE 800 // (steps/min) - Integer value only
|
||||||
|
|
||||||
// Number of arc generation iterations by small angle approximation before exact arc
|
// Number of arc generation iterations by small angle approximation before exact arc trajectory
|
||||||
// trajectory correction. Value must be 1-255. This parameter maybe decreased if there are issues
|
// correction. This parameter maybe decreased if there are issues with the accuracy of the arc
|
||||||
// with the accuracy of the arc generations. In general, the default value is more than enough for
|
// generations. In general, the default value is more than enough for the intended CNC applications
|
||||||
// the intended CNC applications of grbl, and should be on the order or greater than the size of
|
// of grbl, and should be on the order or greater than the size of the buffer to help with the
|
||||||
// the buffer to help with the computational efficiency of generating arcs.
|
// computational efficiency of generating arcs.
|
||||||
#define N_ARC_CORRECTION 25
|
#define N_ARC_CORRECTION 25 // Integer (1-255)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -86,7 +86,9 @@ void st_wake_up() {
|
|||||||
static void st_go_idle() {
|
static void st_go_idle() {
|
||||||
// Force stepper dwell to lock axes for a defined amount of time to ensure the axes come to a complete
|
// Force stepper dwell to lock axes for a defined amount of time to ensure the axes come to a complete
|
||||||
// stop and not drift from residual inertial forces at the end of the last movement.
|
// stop and not drift from residual inertial forces at the end of the last movement.
|
||||||
_delay_ms(STEPPER_IDLE_LOCK_TIME);
|
#if STEPPER_IDLE_LOCK_TIME
|
||||||
|
_delay_ms(STEPPER_IDLE_LOCK_TIME);
|
||||||
|
#endif
|
||||||
// Disable steppers by setting stepper disable
|
// Disable steppers by setting stepper disable
|
||||||
STEPPERS_DISABLE_PORT |= (1<<STEPPERS_DISABLE_BIT);
|
STEPPERS_DISABLE_PORT |= (1<<STEPPERS_DISABLE_BIT);
|
||||||
// Disable stepper driver interrupt
|
// Disable stepper driver interrupt
|
||||||
@ -207,6 +209,8 @@ SIGNAL(TIMER1_COMPA_vect)
|
|||||||
// rounding errors that might leave steps hanging after the last trapezoid tick.
|
// rounding errors that might leave steps hanging after the last trapezoid tick.
|
||||||
if (trapezoid_adjusted_rate > current_block->rate_delta) {
|
if (trapezoid_adjusted_rate > current_block->rate_delta) {
|
||||||
trapezoid_adjusted_rate -= current_block->rate_delta;
|
trapezoid_adjusted_rate -= current_block->rate_delta;
|
||||||
|
} else {
|
||||||
|
trapezoid_adjusted_rate >>= 1; // Bit shift divide by 2
|
||||||
}
|
}
|
||||||
if (trapezoid_adjusted_rate < current_block->final_rate) {
|
if (trapezoid_adjusted_rate < current_block->final_rate) {
|
||||||
// Reached final rate a little early. Cruise to end of block at final rate.
|
// Reached final rate a little early. Cruise to end of block at final rate.
|
||||||
|
Loading…
Reference in New Issue
Block a user