mirror of
https://github.com/bdring/Grbl_Esp32.git
synced 2025-09-02 10:53:01 +02:00
Added some settings to test dymanic switcing of spindles
This commit is contained in:
@@ -117,8 +117,7 @@ void loop() {
|
|||||||
// Reset Grbl primary systems.
|
// Reset Grbl primary systems.
|
||||||
serial_reset_read_buffer(CLIENT_ALL); // Clear serial read buffer
|
serial_reset_read_buffer(CLIENT_ALL); // Clear serial read buffer
|
||||||
gc_init(); // Set g-code parser to default state
|
gc_init(); // Set g-code parser to default state
|
||||||
// my_spindle.init();
|
spindle_select(settings.spindle_type);
|
||||||
spindle_select(SPINDLE_TYPE_PWM);
|
|
||||||
coolant_init();
|
coolant_init();
|
||||||
limits_init();
|
limits_init();
|
||||||
probe_init();
|
probe_init();
|
||||||
|
@@ -51,3 +51,5 @@
|
|||||||
#define CONTROL_RESET_PIN GPIO_NUM_34 // labeled Reset, needs external pullup
|
#define CONTROL_RESET_PIN GPIO_NUM_34 // labeled Reset, needs external pullup
|
||||||
#define CONTROL_FEED_HOLD_PIN GPIO_NUM_36 // labeled Hold, needs external pullup
|
#define CONTROL_FEED_HOLD_PIN GPIO_NUM_36 // labeled Hold, needs external pullup
|
||||||
#define CONTROL_CYCLE_START_PIN GPIO_NUM_39 // labeled Start, needs external pullup
|
#define CONTROL_CYCLE_START_PIN GPIO_NUM_39 // labeled Start, needs external pullup
|
||||||
|
|
||||||
|
#define DEFAULT_SPINDLE_TYPE SPINDLE_TYPE_PWM
|
||||||
|
@@ -35,7 +35,7 @@
|
|||||||
|
|
||||||
#define SHOW_EXTENDED_SETTINGS
|
#define SHOW_EXTENDED_SETTINGS
|
||||||
|
|
||||||
#define SPINDLE_PWM_BIT_PRECISION 16 // 16 bit recommended for ESC (don't change)
|
#define DEFAULT_SPINDLE_PWM_BIT_PRECISION 16 // 16 bit recommended for ESC (don't change)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Important ESC Settings
|
Important ESC Settings
|
||||||
|
@@ -114,7 +114,18 @@
|
|||||||
#define DEFAULT_HOMING_PULLOFF 1.0 // $27 mm
|
#define DEFAULT_HOMING_PULLOFF 1.0 // $27 mm
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// ======== sPINDLE STUFF ====================
|
// ======== SPINDLE STUFF ====================
|
||||||
|
#ifndef DEFAULT_SPINDLE_RPM_MIN // $31
|
||||||
|
#define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DEFAULT_LASER_MODE // $32
|
||||||
|
#define DEFAULT_LASER_MODE 0 // false
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DEFAULT_SPINDLE_RPM_MAX // $30
|
||||||
|
#define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef DEFAULT_SPINDLE_FREQ
|
#ifndef DEFAULT_SPINDLE_FREQ
|
||||||
#define DEFAULT_SPINDLE_FREQ 5000.0 // $33 Hz (extended set)
|
#define DEFAULT_SPINDLE_FREQ 5000.0 // $33 Hz (extended set)
|
||||||
@@ -132,20 +143,15 @@
|
|||||||
#define DEFAULT_SPINDLE_MAX_VALUE 100.0 // $36 Percent (extended set)
|
#define DEFAULT_SPINDLE_MAX_VALUE 100.0 // $36 Percent (extended set)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef DEFAULT_SPINDLE_RPM_MAX
|
#ifndef DEFAULT_SPINDLE_PWM_BIT_PRECISION // $37
|
||||||
#define DEFAULT_SPINDLE_RPM_MAX 1000.0 // rpm
|
#define DEFAULT_SPINDLE_PWM_BIT_PRECISION 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DEFAULT_SPINDLE_TYPE // $38
|
||||||
#ifndef DEFAULT_SPINDLE_RPM_MIN
|
#define DEFAULT_SPINDLE_TYPE SPINDLE_TYPE_PWM
|
||||||
#define DEFAULT_SPINDLE_RPM_MIN 0.0 // rpm
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef DEFAULT_LASER_MODE
|
// ================ user settings =====================
|
||||||
#define DEFAULT_LASER_MODE 0 // false
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// user settings
|
|
||||||
#ifndef DEFAULT_USER_INT_80
|
#ifndef DEFAULT_USER_INT_80
|
||||||
#define DEFAULT_USER_INT_80 0 // $80 User integer setting
|
#define DEFAULT_USER_INT_80 0 // $80 User integer setting
|
||||||
#endif
|
#endif
|
||||||
|
@@ -1,11 +1,13 @@
|
|||||||
#ifndef _machine_common_h
|
#ifndef _machine_common_h
|
||||||
#define _machine_common_h
|
#define _machine_common_h
|
||||||
|
|
||||||
|
/*
|
||||||
#ifndef SPINDLE_PWM_BIT_PRECISION
|
#ifndef SPINDLE_PWM_BIT_PRECISION
|
||||||
#define SPINDLE_PWM_BIT_PRECISION 8
|
#define SPINDLE_PWM_BIT_PRECISION 8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define SPINDLE_PWM_MAX_VALUE ((1<<SPINDLE_PWM_BIT_PRECISION) - 1)
|
#define SPINDLE_PWM_MAX_VALUE ((1<<SPINDLE_PWM_BIT_PRECISION) - 1)
|
||||||
|
*/
|
||||||
|
|
||||||
// Grbl setting that are common to all machines
|
// Grbl setting that are common to all machines
|
||||||
// It should not be necessary to change anything herein
|
// It should not be necessary to change anything herein
|
||||||
|
@@ -318,6 +318,8 @@ void report_grbl_settings(uint8_t client, uint8_t show_extended) {
|
|||||||
sprintf(setting, "$34=%3.3f\r\n", settings.spindle_pwm_off_value); strcat(rpt, setting);
|
sprintf(setting, "$34=%3.3f\r\n", settings.spindle_pwm_off_value); strcat(rpt, setting);
|
||||||
sprintf(setting, "$35=%3.3f\r\n", settings.spindle_pwm_min_value); strcat(rpt, setting);
|
sprintf(setting, "$35=%3.3f\r\n", settings.spindle_pwm_min_value); strcat(rpt, setting);
|
||||||
sprintf(setting, "$36=%3.3f\r\n", settings.spindle_pwm_max_value); strcat(rpt, setting);
|
sprintf(setting, "$36=%3.3f\r\n", settings.spindle_pwm_max_value); strcat(rpt, setting);
|
||||||
|
sprintf(setting, "$37=%d\r\n", settings.spindle_pwm_precision_bits); strcat(rpt, setting);
|
||||||
|
sprintf(setting, "$38=%d\r\n", settings.spindle_type); strcat(rpt, setting);
|
||||||
for (uint8_t index = 0; index < USER_SETTING_COUNT; index++) {
|
for (uint8_t index = 0; index < USER_SETTING_COUNT; index++) {
|
||||||
sprintf(setting, "$%d=%d\r\n", 80 + index, settings.machine_int16[index]); strcat(rpt, setting);
|
sprintf(setting, "$%d=%d\r\n", 80 + index, settings.machine_int16[index]); strcat(rpt, setting);
|
||||||
}
|
}
|
||||||
|
@@ -64,12 +64,16 @@ void settings_restore(uint8_t restore_flag) {
|
|||||||
settings.status_report_mask = DEFAULT_STATUS_REPORT_MASK;
|
settings.status_report_mask = DEFAULT_STATUS_REPORT_MASK;
|
||||||
settings.junction_deviation = DEFAULT_JUNCTION_DEVIATION;
|
settings.junction_deviation = DEFAULT_JUNCTION_DEVIATION;
|
||||||
settings.arc_tolerance = DEFAULT_ARC_TOLERANCE;
|
settings.arc_tolerance = DEFAULT_ARC_TOLERANCE;
|
||||||
|
|
||||||
|
settings.rpm_max = DEFAULT_SPINDLE_RPM_MAX;
|
||||||
|
settings.rpm_min = DEFAULT_SPINDLE_RPM_MIN;
|
||||||
settings.spindle_pwm_freq = DEFAULT_SPINDLE_FREQ; // $33 Hz (extended set)
|
settings.spindle_pwm_freq = DEFAULT_SPINDLE_FREQ; // $33 Hz (extended set)
|
||||||
settings.spindle_pwm_off_value = DEFAULT_SPINDLE_OFF_VALUE; // $34 Percent (extended set)
|
settings.spindle_pwm_off_value = DEFAULT_SPINDLE_OFF_VALUE; // $34 Percent (extended set)
|
||||||
settings.spindle_pwm_min_value = DEFAULT_SPINDLE_MIN_VALUE; // $35 Percent (extended set)
|
settings.spindle_pwm_min_value = DEFAULT_SPINDLE_MIN_VALUE; // $35 Percent (extended set)
|
||||||
settings.spindle_pwm_max_value = DEFAULT_SPINDLE_MAX_VALUE; // $36 Percent (extended set)
|
settings.spindle_pwm_max_value = DEFAULT_SPINDLE_MAX_VALUE; // $36 Percent (extended set)
|
||||||
settings.rpm_max = DEFAULT_SPINDLE_RPM_MAX;
|
settings.spindle_pwm_precision_bits = MIN(8, DEFAULT_SPINDLE_PWM_BIT_PRECISION); // $37
|
||||||
settings.rpm_min = DEFAULT_SPINDLE_RPM_MIN;
|
settings.spindle_type= DEFAULT_SPINDLE_TYPE; // $38
|
||||||
|
|
||||||
settings.homing_dir_mask = DEFAULT_HOMING_DIR_MASK;
|
settings.homing_dir_mask = DEFAULT_HOMING_DIR_MASK;
|
||||||
settings.homing_feed_rate = DEFAULT_HOMING_FEED_RATE;
|
settings.homing_feed_rate = DEFAULT_HOMING_FEED_RATE;
|
||||||
settings.homing_seek_rate = DEFAULT_HOMING_SEEK_RATE;
|
settings.homing_seek_rate = DEFAULT_HOMING_SEEK_RATE;
|
||||||
@@ -375,10 +379,12 @@ uint8_t settings_store_global_setting(uint8_t parameter, float value) {
|
|||||||
settings.flags &= ~BITFLAG_LASER_MODE;
|
settings.flags &= ~BITFLAG_LASER_MODE;
|
||||||
my_spindle->init(); // update the spindle class
|
my_spindle->init(); // update the spindle class
|
||||||
break;
|
break;
|
||||||
case 33: settings.spindle_pwm_freq = value; my_spindle->init(); break; // Re-initialize spindle pwm calibration
|
case 33: settings.spindle_pwm_freq = value; spindle_select(settings.spindle_type); break; // Re-initialize spindle pwm calibration
|
||||||
case 34: settings.spindle_pwm_off_value = value; my_spindle->init(); break; // Re-initialize spindle pwm calibration
|
case 34: settings.spindle_pwm_off_value = value; spindle_select(settings.spindle_type); break; // Re-initialize spindle pwm calibration
|
||||||
case 35: settings.spindle_pwm_min_value = value; my_spindle->init(); break; // Re-initialize spindle pwm calibration
|
case 35: settings.spindle_pwm_min_value = value; spindle_select(settings.spindle_type); break; // Re-initialize spindle pwm calibration
|
||||||
case 36: settings.spindle_pwm_max_value = value; my_spindle->init(); break; // Re-initialize spindle pwm calibration
|
case 36: settings.spindle_pwm_max_value = value; spindle_select(settings.spindle_type); break; // Re-initialize spindle pwm calibration
|
||||||
|
case 37: settings.spindle_pwm_precision_bits = MIN(8, value);spindle_select(settings.spindle_type); break;
|
||||||
|
case 38: settings.spindle_type = value; spindle_select(settings.spindle_type); break;
|
||||||
case 80:
|
case 80:
|
||||||
case 81:
|
case 81:
|
||||||
case 82:
|
case 82:
|
||||||
|
@@ -107,6 +107,8 @@ typedef struct {
|
|||||||
float spindle_pwm_off_value; // $34 Percent (extended set)
|
float spindle_pwm_off_value; // $34 Percent (extended set)
|
||||||
float spindle_pwm_min_value; // $35 Percent (extended set)
|
float spindle_pwm_min_value; // $35 Percent (extended set)
|
||||||
float spindle_pwm_max_value; // $36 Percent (extended set)
|
float spindle_pwm_max_value; // $36 Percent (extended set)
|
||||||
|
uint8_t spindle_pwm_precision_bits; // $37 PWM pwm precision in bits (extended set)
|
||||||
|
uint8_t spindle_type; // $38 The spindle class to be used (extended set)
|
||||||
|
|
||||||
float rpm_max;
|
float rpm_max;
|
||||||
float rpm_min;
|
float rpm_min;
|
||||||
|
@@ -37,6 +37,6 @@ void Laser :: config_message() {
|
|||||||
"Laser spindle on GPIO:%d, Freq:%.2fHz, Res:%dbits Laser mode:$32=%d",
|
"Laser spindle on GPIO:%d, Freq:%.2fHz, Res:%dbits Laser mode:$32=%d",
|
||||||
_output_pin,
|
_output_pin,
|
||||||
_pwm_freq,
|
_pwm_freq,
|
||||||
SPINDLE_PWM_BIT_PRECISION,
|
settings.spindle_pwm_precision_bits,
|
||||||
isRateAdjusted()); // the current mode
|
isRateAdjusted()); // the current mode
|
||||||
}
|
}
|
@@ -32,13 +32,13 @@ void PWMSpindle::init() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_pwm_freq = settings.spindle_pwm_freq;
|
_pwm_freq = settings.spindle_pwm_freq;
|
||||||
_pwm_period = ((1 << SPINDLE_PWM_BIT_PRECISION) - 1);
|
_pwm_period = ((1 << settings.spindle_pwm_precision_bits) - 1);
|
||||||
|
|
||||||
if (settings.spindle_pwm_min_value > settings.spindle_pwm_min_value)
|
if (settings.spindle_pwm_min_value > settings.spindle_pwm_min_value)
|
||||||
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Warning: Spindle min pwm is greater than max. Check $35 and $36");
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Warning: Spindle min pwm is greater than max. Check $35 and $36");
|
||||||
|
|
||||||
if ((F_TIMERS / _pwm_freq) < _pwm_period)
|
if ((F_TIMERS / _pwm_freq) < _pwm_period)
|
||||||
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Warning spindle PWM precision (%d bits) too high for frequency (%.2f Hz)", SPINDLE_PWM_BIT_PRECISION, _pwm_freq);
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Warning spindle PWM precision (%d bits) too high for frequency (%.2f Hz)", settings.spindle_pwm_precision_bits, _pwm_freq);
|
||||||
|
|
||||||
// pre-caculate some PWM count values
|
// pre-caculate some PWM count values
|
||||||
_pwm_off_value = (_pwm_period * settings.spindle_pwm_off_value / 100.0);
|
_pwm_off_value = (_pwm_period * settings.spindle_pwm_off_value / 100.0);
|
||||||
@@ -56,7 +56,7 @@ void PWMSpindle::init() {
|
|||||||
_pwm_gradient = (_pwm_max_value - _pwm_min_value) / (_max_rpm - _min_rpm);
|
_pwm_gradient = (_pwm_max_value - _pwm_min_value) / (_max_rpm - _min_rpm);
|
||||||
|
|
||||||
_spindle_pwm_chan_num = sys_get_next_PWM_chan_num();
|
_spindle_pwm_chan_num = sys_get_next_PWM_chan_num();
|
||||||
ledcSetup(_spindle_pwm_chan_num, (double)_pwm_freq, SPINDLE_PWM_BIT_PRECISION); // setup the channel
|
ledcSetup(_spindle_pwm_chan_num, (double)_pwm_freq, settings.spindle_pwm_precision_bits); // setup the channel
|
||||||
ledcAttachPin(_output_pin, _spindle_pwm_chan_num); // attach the PWM to the pin
|
ledcAttachPin(_output_pin, _spindle_pwm_chan_num); // attach the PWM to the pin
|
||||||
|
|
||||||
if (_enable_pin != UNDEFINED_PIN)
|
if (_enable_pin != UNDEFINED_PIN)
|
||||||
@@ -99,10 +99,13 @@ float PWMSpindle::set_rpm(float rpm) {
|
|||||||
if (_output_pin == UNDEFINED_PIN)
|
if (_output_pin == UNDEFINED_PIN)
|
||||||
return rpm;
|
return rpm;
|
||||||
|
|
||||||
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM:%5.2f Min:%5.2f Max:%5.2f", rpm, _min_rpm, _max_rpm);
|
||||||
|
|
||||||
uint32_t pwm_value;
|
uint32_t pwm_value;
|
||||||
|
|
||||||
// apply overrides and limits
|
// apply overrides and limits
|
||||||
rpm *= (0.010 * sys.spindle_speed_ovr); // Scale by spindle speed override value (percent)
|
rpm *= (0.010 * sys.spindle_speed_ovr); // Scale by spindle speed override value (percent)
|
||||||
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM 1:%5.2f", rpm);
|
||||||
|
|
||||||
// Calculate PWM register value based on rpm max/min settings and programmed rpm.
|
// Calculate PWM register value based on rpm max/min settings and programmed rpm.
|
||||||
if ((_min_rpm >= _max_rpm) || (rpm >= _max_rpm)) {
|
if ((_min_rpm >= _max_rpm) || (rpm >= _max_rpm)) {
|
||||||
@@ -115,6 +118,7 @@ float PWMSpindle::set_rpm(float rpm) {
|
|||||||
pwm_value = _pwm_off_value;
|
pwm_value = _pwm_off_value;
|
||||||
} else { // Set minimum PWM output
|
} else { // Set minimum PWM output
|
||||||
rpm = _min_rpm;
|
rpm = _min_rpm;
|
||||||
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM 2:%5.2f", rpm);
|
||||||
sys.spindle_speed = rpm;
|
sys.spindle_speed = rpm;
|
||||||
pwm_value = _pwm_min_value;
|
pwm_value = _pwm_min_value;
|
||||||
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM less than min RPM:%5.2f %d", rpm, pwm_value);
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM less than min RPM:%5.2f %d", rpm, pwm_value);
|
||||||
@@ -123,6 +127,7 @@ float PWMSpindle::set_rpm(float rpm) {
|
|||||||
// Compute intermediate PWM value with linear spindle speed model.
|
// Compute intermediate PWM value with linear spindle speed model.
|
||||||
// NOTE: A nonlinear model could be installed here, if required, but keep it VERY light-weight.
|
// NOTE: A nonlinear model could be installed here, if required, but keep it VERY light-weight.
|
||||||
sys.spindle_speed = rpm;
|
sys.spindle_speed = rpm;
|
||||||
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM 3:%5.2f", rpm);
|
||||||
#ifdef ENABLE_PIECEWISE_LINEAR_SPINDLE
|
#ifdef ENABLE_PIECEWISE_LINEAR_SPINDLE
|
||||||
pwm_value = piecewise_linear_fit(rpm);
|
pwm_value = piecewise_linear_fit(rpm);
|
||||||
#else
|
#else
|
||||||
@@ -134,6 +139,7 @@ float PWMSpindle::set_rpm(float rpm) {
|
|||||||
set_enable_pin(rpm != 0);
|
set_enable_pin(rpm != 0);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Spindle RPM Final:%5.2f", rpm);
|
||||||
set_pwm(pwm_value);
|
set_pwm(pwm_value);
|
||||||
|
|
||||||
return rpm;
|
return rpm;
|
||||||
@@ -179,7 +185,7 @@ void PWMSpindle::stop() {
|
|||||||
|
|
||||||
// prints the startup message of the spindle config
|
// prints the startup message of the spindle config
|
||||||
void PWMSpindle :: config_message() {
|
void PWMSpindle :: config_message() {
|
||||||
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "PWM spindle on GPIO %d, freq %.2fHz, Res %d bits", _output_pin, _pwm_freq, SPINDLE_PWM_BIT_PRECISION);
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "PWM spindle on GPIO %d, freq %.2fHz, Res %d bits", _output_pin, _pwm_freq, settings.spindle_pwm_precision_bits);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -194,7 +200,7 @@ void PWMSpindle::set_pwm(uint32_t duty) {
|
|||||||
_current_pwm_duty = duty;
|
_current_pwm_duty = duty;
|
||||||
|
|
||||||
#ifdef INVERT_SPINDLE_PWM
|
#ifdef INVERT_SPINDLE_PWM
|
||||||
duty = (1 << SPINDLE_PWM_BIT_PRECISION) - duty;
|
duty = (1 << settings.spindle_pwm_precision_bits) - duty;
|
||||||
#endif
|
#endif
|
||||||
ledcWrite(_spindle_pwm_chan_num, duty);
|
ledcWrite(_spindle_pwm_chan_num, duty);
|
||||||
}
|
}
|
||||||
|
@@ -17,7 +17,7 @@
|
|||||||
GNU General Public License for more details.
|
GNU General Public License for more details.
|
||||||
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
||||||
along with Grbl. If not, see <http://www.gnu.org/licenses/>.
|
along with Grbl. If not, see <http://www.gnu.org/licenses/>.
|
||||||
|
|
||||||
*/
|
*/
|
||||||
#include "grbl.h"
|
#include "grbl.h"
|
||||||
#include "SpindleClass.h"
|
#include "SpindleClass.h"
|
||||||
@@ -47,9 +47,27 @@ void RelaySpindle :: config_message() {
|
|||||||
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Relay spindle on GPIO %d", _output_pin);
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Relay spindle on GPIO %d", _output_pin);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float RelaySpindle::set_rpm(float rpm) {
|
||||||
|
if (_output_pin == UNDEFINED_PIN)
|
||||||
|
return rpm;
|
||||||
|
|
||||||
|
sys.spindle_speed = rpm;
|
||||||
|
|
||||||
|
if (rpm == 0) {
|
||||||
|
sys.spindle_speed = 0.0;
|
||||||
|
set_pwm(0);
|
||||||
|
} else {
|
||||||
|
sys.spindle_speed = rpm;
|
||||||
|
set_pwm(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return rpm;
|
||||||
|
}
|
||||||
|
|
||||||
void RelaySpindle::set_pwm(uint32_t duty) {
|
void RelaySpindle::set_pwm(uint32_t duty) {
|
||||||
#ifdef INVERT_SPINDLE_PWM
|
#ifdef INVERT_SPINDLE_PWM
|
||||||
duty = (duty == 0); // flip duty
|
duty = (duty == 0); // flip duty
|
||||||
#endif
|
#endif
|
||||||
|
grbl_msg_sendf(CLIENT_SERIAL, MSG_LEVEL_INFO, "Relay output %d", duty > 0);
|
||||||
digitalWrite(_output_pin, duty > 0); // anything greater
|
digitalWrite(_output_pin, duty > 0); // anything greater
|
||||||
}
|
}
|
@@ -26,8 +26,7 @@
|
|||||||
TODO
|
TODO
|
||||||
Consider breaking into one file per class.
|
Consider breaking into one file per class.
|
||||||
|
|
||||||
Get rid of dependance on machine definition #defines
|
Get rid of dependance on machine definition #defines
|
||||||
SPINDLE_PWM_BIT_PRECISION
|
|
||||||
SPINDLE_PWM_PIN
|
SPINDLE_PWM_PIN
|
||||||
SPINDLE_ENABLE_PIN
|
SPINDLE_ENABLE_PIN
|
||||||
SPINDLE_DIR_PIN
|
SPINDLE_DIR_PIN
|
||||||
|
@@ -104,6 +104,8 @@ class RelaySpindle : public PWMSpindle {
|
|||||||
public:
|
public:
|
||||||
void init();
|
void init();
|
||||||
void config_message();
|
void config_message();
|
||||||
|
float set_rpm(float rpm);
|
||||||
|
protected:
|
||||||
void set_pwm(uint32_t duty);
|
void set_pwm(uint32_t duty);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user