From 8ce66c6ec79e24fd69b9530213025831d0309646 Mon Sep 17 00:00:00 2001 From: Samuel Sadok Date: Fri, 27 Sep 2019 17:57:42 +0200 Subject: [PATCH] change power supply limit from watts to amps --- CHANGELOG.md | 2 +- Firmware/MotorControl/axis.cpp | 9 +++++---- Firmware/MotorControl/axis.hpp | 3 ++- Firmware/MotorControl/odrive_main.h | 3 ++- Firmware/communication/communication.cpp | 3 ++- 5 files changed, 12 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 685845fc..eb0d96f6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,7 +16,7 @@ Please add a note of your changes below this heading if you make a Pull Request. * Gain scheduling for anti-hunt when close to 0 position error * Velocity Limiting in Current Control mode according to `vel_limit` and `vel_gain` * Regen current limiting according to `max_regen_limit`, in Amps -* DC Bus Power limiting according to `power_supply_wattage` +* DC Bus hard current limiting according to `power_supply_min_current` and `power_supply_max_current` * Unit Testing with Doctest has been started for select algorithms, see [Firmware/Tests/test_runner.cpp](Firmware/Tests/test_runner.cpp) * Added support for Flylint VSCode Extension for static code analysis * Using an STM32F405 .svd file allows CortexDebug to view registers during debugging diff --git a/Firmware/MotorControl/axis.cpp b/Firmware/MotorControl/axis.cpp index 4319bb3c..21dd73ea 100644 --- a/Firmware/MotorControl/axis.cpp +++ b/Firmware/MotorControl/axis.cpp @@ -174,10 +174,11 @@ bool Axis::do_checks() { } } - if(board_config.power_supply_wattage > 0.0f && - (Ibus_sum * vbus_voltage) > board_config.power_supply_wattage) - { - error_ |= ERROR_DC_BUS_OVER_POWER; + if (Ibus_sum > board_config.power_supply_max_current) { + error_ |= ERROR_DC_BUS_OVER_CURRENT; + } + if (Ibus_sum < board_config.power_supply_min_current) { + error_ |= ERROR_DC_BUS_UNDER_CURRENT; } // Sub-components should use set_error which will propegate to this error_ diff --git a/Firmware/MotorControl/axis.hpp b/Firmware/MotorControl/axis.hpp index 858df43b..46e3b15b 100644 --- a/Firmware/MotorControl/axis.hpp +++ b/Firmware/MotorControl/axis.hpp @@ -24,7 +24,8 @@ public: ERROR_MIN_ENDSTOP_PRESSED = 0x1000, ERROR_MAX_ENDSTOP_PRESSED = 0x2000, ERROR_ESTOP_REQUESTED = 0x4000, - ERROR_DC_BUS_OVER_POWER = 0x8000, + ERROR_DC_BUS_UNDER_CURRENT = 0x8000, // too much current pushed into the power supply + ERROR_DC_BUS_OVER_CURRENT = 0x10000, // too much current pulled out of the power supply }; enum State_t { diff --git a/Firmware/MotorControl/odrive_main.h b/Firmware/MotorControl/odrive_main.h index 88f4de0c..88d7b902 100644 --- a/Firmware/MotorControl/odrive_main.h +++ b/Firmware/MotorControl/odrive_main.h @@ -83,7 +83,8 @@ struct BoardConfig_t { //= 3 make_protocol_object("gpio1_pwm_mapping", make_protocol_definitions(board_config.pwm_mappings[0])), make_protocol_object("gpio2_pwm_mapping", make_protocol_definitions(board_config.pwm_mappings[1])),