Merge branch 'master' into more-axis
This commit is contained in:
commit
b28fd39e7d
24
README.md
24
README.md
@ -10,25 +10,25 @@ Usage notes:
|
|||||||
If it doesn't, try installing VCOM_lib/usbser.inf.
|
If it doesn't, try installing VCOM_lib/usbser.inf.
|
||||||
* This doesn't pass the sdcard to the host. Once installed you need to use a micro sdcard adaptor to replace or change it.
|
* This doesn't pass the sdcard to the host. Once installed you need to use a micro sdcard adaptor to replace or change it.
|
||||||
* Only tested with lasers with PWM. Non-PWM spindle control not ported.
|
* Only tested with lasers with PWM. Non-PWM spindle control not ported.
|
||||||
* This special version supports setting PWM frequency by $33. Default is 5000 Hz. Pin can only be changes in config.h.
|
|
||||||
* Pin 2.5
|
|
||||||
* 5 kHz
|
|
||||||
* PWM off value: 0%
|
|
||||||
* Mimimum PWM value: 0%
|
|
||||||
* Maximum PWM value: 100%
|
|
||||||
* These are defaults for easy-to-change config values.
|
* These are defaults for easy-to-change config values.
|
||||||
|
* WPos enabled for LaserWeb compatability ($10=0)
|
||||||
* Maximum S value: 1000.0 ($30)
|
* Maximum S value: 1000.0 ($30)
|
||||||
* Minimum S value: 0.0 ($31)
|
* Minimum S value: 0.0 ($31)
|
||||||
* Laser mode: 1 ($32)
|
* Laser mode: 1 ($32)
|
||||||
* Laser PWM frequency: 5000 ($33)
|
* New configuration settings
|
||||||
|
* $33 is PWM frequency in Hz
|
||||||
|
* $34 is PWM off value in %
|
||||||
|
* $35 is PWM min value in %
|
||||||
|
* $36 is PWM max value in %
|
||||||
|
* $140 is X current (amps)
|
||||||
|
* $141 is Y current (amps)
|
||||||
|
* $142 is Z current (amps)
|
||||||
|
* Currents default to 0.0 amps to avoid burning out your motors/drivers
|
||||||
|
* Your motors will likely stall if you don't set these!
|
||||||
|
|
||||||
* Hard limits not yet ported
|
* Hard limits not yet ported
|
||||||
* Control inputs not yet ported (e.g. Cycle Start and Safety Door switches)
|
* Control inputs not yet ported (e.g. Cycle Start and Safety Door switches)
|
||||||
|
|
||||||
New configuration settings
|
|
||||||
* $33 is PWM frequency in Hz
|
|
||||||
* $140, $141, $142 are X, Y, Z current (amps)
|
|
||||||
* Default to 0.0 A to avoid burning out your motors
|
|
||||||
* Your motors will likely stall if you don't set these!
|
|
||||||
|
|
||||||
Build notes:
|
Build notes:
|
||||||
* Include ```make``` and the ```arm-none-eabi-*``` tools in your path.
|
* Include ```make``` and the ```arm-none-eabi-*``` tools in your path.
|
||||||
|
@ -214,7 +214,10 @@ void report_grbl_settings() {
|
|||||||
#else
|
#else
|
||||||
report_util_uint8_setting(32,0);
|
report_util_uint8_setting(32,0);
|
||||||
#endif
|
#endif
|
||||||
report_util_uint32_setting(33,settings.spindle_pwm_freq);
|
report_util_float_setting(33,settings.spindle_pwm_freq,N_DECIMAL_SETTINGVALUE);
|
||||||
|
report_util_float_setting(34,settings.spindle_pwm_off_value,N_DECIMAL_SETTINGVALUE);
|
||||||
|
report_util_float_setting(35,settings.spindle_pwm_min_value,N_DECIMAL_SETTINGVALUE);
|
||||||
|
report_util_float_setting(36,settings.spindle_pwm_max_value,N_DECIMAL_SETTINGVALUE);
|
||||||
// Print axis settings
|
// Print axis settings
|
||||||
uint8_t idx, set_idx;
|
uint8_t idx, set_idx;
|
||||||
uint8_t val = AXIS_SETTINGS_START_VAL;
|
uint8_t val = AXIS_SETTINGS_START_VAL;
|
||||||
|
@ -337,6 +337,9 @@ uint8_t settings_store_global_setting(uint8_t parameter, float value) {
|
|||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 33: settings.spindle_pwm_freq = value; spindle_init(); break; // Re-initialize spindle pwm calibration
|
case 33: settings.spindle_pwm_freq = value; spindle_init(); break; // Re-initialize spindle pwm calibration
|
||||||
|
case 34: settings.spindle_pwm_off_value = value; spindle_init(); break; // Re-initialize spindle pwm calibration
|
||||||
|
case 35: settings.spindle_pwm_min_value = value; spindle_init(); break; // Re-initialize spindle pwm calibration
|
||||||
|
case 36: settings.spindle_pwm_max_value = value; spindle_init(); break; // Re-initialize spindle pwm calibration
|
||||||
default:
|
default:
|
||||||
return(STATUS_INVALID_STATEMENT);
|
return(STATUS_INVALID_STATEMENT);
|
||||||
}
|
}
|
||||||
|
@ -92,7 +92,7 @@ typedef struct {
|
|||||||
float junction_deviation;
|
float junction_deviation;
|
||||||
float arc_tolerance;
|
float arc_tolerance;
|
||||||
|
|
||||||
float spindle_pwm_freq;
|
float spindle_pwm_freq; // Hz
|
||||||
float spindle_pwm_off_value; // Percent
|
float spindle_pwm_off_value; // Percent
|
||||||
float spindle_pwm_min_value; // Percent
|
float spindle_pwm_min_value; // Percent
|
||||||
float spindle_pwm_max_value; // Percent
|
float spindle_pwm_max_value; // Percent
|
||||||
|
@ -142,21 +142,21 @@ void spindle_stop()
|
|||||||
rpm *= (0.010*sys.spindle_speed_ovr); // Scale by spindle speed override value.
|
rpm *= (0.010*sys.spindle_speed_ovr); // Scale by spindle speed override value.
|
||||||
if (rpm <= 0) {
|
if (rpm <= 0) {
|
||||||
sys.spindle_speed = 0;
|
sys.spindle_speed = 0;
|
||||||
pwm_value = spindle_pwm_off_value; //SPINDLE_PWM_OFF_VALUE
|
pwm_value = spindle_pwm_off_value;
|
||||||
}
|
}
|
||||||
else if (rpm <= settings.rpm_min) {
|
else if (rpm <= settings.rpm_min) {
|
||||||
sys.spindle_speed = settings.rpm_min;
|
sys.spindle_speed = settings.rpm_min;
|
||||||
pwm_value = spindle_pwm_min_value; //SPINDLE_PWM_MIN_VALUE
|
pwm_value = spindle_pwm_min_value;
|
||||||
}
|
}
|
||||||
else if (rpm >= settings.rpm_max) {
|
else if (rpm >= settings.rpm_max) {
|
||||||
sys.spindle_speed = settings.rpm_max;
|
sys.spindle_speed = settings.rpm_max;
|
||||||
pwm_value = spindle_pwm_max_value - 1; //SPINDLE_PWM_MAX_VALUE
|
pwm_value = spindle_pwm_max_value - 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
sys.spindle_speed = rpm;
|
sys.spindle_speed = rpm;
|
||||||
pwm_value = floor((rpm - settings.rpm_min) * pwm_gradient) + spindle_pwm_min_value; //SPINDLE_PWM_MIN_VALUE
|
pwm_value = floor((rpm - settings.rpm_min) * pwm_gradient) + spindle_pwm_min_value;
|
||||||
if(pwm_value >= spindle_pwm_max_value) //SPINDLE_PWM_MAX_VALUE
|
if(pwm_value >= spindle_pwm_max_value)
|
||||||
pwm_value = spindle_pwm_max_value - 1; //SPINDLE_PWM_MAX_VALUE
|
pwm_value = spindle_pwm_max_value - 1;
|
||||||
}
|
}
|
||||||
return(pwm_value);
|
return(pwm_value);
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,10 @@ uint8_t spindle_get_state();
|
|||||||
// Immediately sets spindle running state with direction and spindle rpm via PWM, if enabled.
|
// Immediately sets spindle running state with direction and spindle rpm via PWM, if enabled.
|
||||||
// Called by spindle_sync() after sync and parking motion/spindle stop override during restore.
|
// Called by spindle_sync() after sync and parking motion/spindle stop override during restore.
|
||||||
#ifdef VARIABLE_SPINDLE
|
#ifdef VARIABLE_SPINDLE
|
||||||
|
extern float spindle_pwm_period;
|
||||||
|
extern float spindle_pwm_off_value;
|
||||||
|
extern float spindle_pwm_min_value;
|
||||||
|
extern float spindle_pwm_max_value;
|
||||||
|
|
||||||
// Called by g-code parser when setting spindle state and requires a buffer sync.
|
// Called by g-code parser when setting spindle state and requires a buffer sync.
|
||||||
void spindle_sync(uint8_t state, float rpm);
|
void spindle_sync(uint8_t state, float rpm);
|
||||||
|
Loading…
Reference in New Issue
Block a user