From cf9857651e4a4b14b3eadfbd39a132cd78aae54c Mon Sep 17 00:00:00 2001 From: Paul Guenette Date: Sat, 25 May 2019 14:54:41 +0200 Subject: [PATCH] Make Homing use input_xxx values --- Firmware/MotorControl/axis.cpp | 7 ++++--- Firmware/MotorControl/controller.cpp | 21 ++++++++++++--------- 2 files changed, 16 insertions(+), 12 deletions(-) diff --git a/Firmware/MotorControl/axis.cpp b/Firmware/MotorControl/axis.cpp index 7305e28e..6d16d914 100644 --- a/Firmware/MotorControl/axis.cpp +++ b/Firmware/MotorControl/axis.cpp @@ -287,10 +287,11 @@ bool Axis::run_closed_loop_control_loop() { if (homing_state_ == HOMING_STATE_HOMING) { if (min_endstop_.getEndstopState()) { encoder_.set_linear_count(min_endstop_.config_.offset); - controller_.pos_setpoint_ = 0.0f; - controller_.vel_setpoint_ = 0.0f; - controller_.current_setpoint_ = 0.0f; + controller_.input_pos_ = 0.0f; + controller_.input_vel_ = 0.0f; + controller_.input_current_ = 0.0f; controller_.config_.control_mode = Controller::CTRL_MODE_POSITION_CONTROL; + controller_.input_pos_updated(); homing_state_ = HOMING_STATE_MOVE_TO_ZERO; } } else if (homing_state_ == HOMING_STATE_MOVE_TO_ZERO) { diff --git a/Firmware/MotorControl/controller.cpp b/Firmware/MotorControl/controller.cpp index fc302219..623f9845 100644 --- a/Firmware/MotorControl/controller.cpp +++ b/Firmware/MotorControl/controller.cpp @@ -61,9 +61,10 @@ void Controller::start_anticogging_calibration() { bool Controller::home_axis() { if (axis_->min_endstop_.config_.enabled) { config_.control_mode = CTRL_MODE_VELOCITY_CONTROL; - pos_setpoint_ = 0.0f; - vel_setpoint_ = -config_.homing_speed; - current_setpoint_ = 0.0f; + input_pos_ = 0.0f; + input_pos_updated(); + input_vel_ = -config_.homing_speed; + input_current_ = 0.0f; axis_->homing_state_ = HOMING_STATE_HOMING; } else { return false; @@ -87,16 +88,18 @@ bool Controller::anticogging_calibration(float pos_estimate, float vel_estimate) } if (config_.anticogging.index < 3600) { config_.control_mode = CTRL_MODE_POSITION_CONTROL; - pos_setpoint_ = config_.anticogging.index * config_.anticogging.cogging_ratio; - vel_setpoint_ = 0.0f; - current_setpoint_ = 0.0f; + input_pos_ = config_.anticogging.index * config_.anticogging.cogging_ratio; + input_vel_ = 0.0f; + input_current_ = 0.0f; + input_pos_updated(); return false; } else { config_.anticogging.index = 0; config_.control_mode = CTRL_MODE_POSITION_CONTROL; - pos_setpoint_ = 0.0f; // Send the motor home - vel_setpoint_ = 0.0f; - current_setpoint_ = 0.0f; + input_pos_ = 0.0f; // Send the motor home + input_vel_ = 0.0f; + input_current_ = 0.0f; + input_pos_updated(); config_.anticogging.use_anticogging = true; // We're good to go, enable anti-cogging config_.anticogging.calib_anticogging = false; return true;