diff --git a/Firmware/MotorControl/axis.cpp b/Firmware/MotorControl/axis.cpp index c0488dfa..bde389d4 100644 --- a/Firmware/MotorControl/axis.cpp +++ b/Firmware/MotorControl/axis.cpp @@ -92,18 +92,15 @@ void Axis::set_step_dir_enabled(bool enable) { } } -// @brief Returns true if the power supply is within range -bool Axis::check_PSU_brownout() { - return vbus_voltage >= config_.dc_bus_brownout_trip_level; -} - // @brief Returns true if everything is ok. // Sets error and returns false otherwise. bool Axis::do_checks() { if (!motor_.do_checks()) return error_ |= ERROR_MOTOR_FAILED, false; - if (!check_PSU_brownout()) + if (!(vbus_voltage >= board_config.dc_bus_undervoltage_trip_level)) return error_ |= ERROR_DC_BUS_UNDER_VOLTAGE, false; + if (!(vbus_voltage <= board_config.dc_bus_overvoltage_trip_level)) + return error_ |= ERROR_DC_BUS_OVER_VOLTAGE, false; return true; } diff --git a/Firmware/MotorControl/axis.hpp b/Firmware/MotorControl/axis.hpp index f6415422..72dac9b3 100644 --- a/Firmware/MotorControl/axis.hpp +++ b/Firmware/MotorControl/axis.hpp @@ -30,7 +30,6 @@ struct AxisConfig_t { // For M0 this has no effect if enable_uart is true float counts_per_step = 2.0f; - float dc_bus_brownout_trip_level = 8.0f; //make_protocol_definitions()), make_protocol_object("axis1", axes[1]->make_protocol_definitions()), diff --git a/Firmware/MotorControl/odrive_main.hpp b/Firmware/MotorControl/odrive_main.hpp index 3ee774f3..43a55a99 100644 --- a/Firmware/MotorControl/odrive_main.hpp +++ b/Firmware/MotorControl/odrive_main.hpp @@ -23,6 +23,11 @@ struct BoardConfig_t { bool enable_uart = true; float brake_resistance = 0.47f; // [ohm] + float dc_bus_undervoltage_trip_level = 8.0f; //