From db024a298f8fa14fa2b85d96faab141c068d002c Mon Sep 17 00:00:00 2001 From: 0xFEEDC0DE64 Date: Sat, 26 Jun 2021 03:27:49 +0200 Subject: [PATCH] more types of current --- src/bobbycar-protocol | 2 +- src/can.h | 15 +++++++++++++-- src/debugtexthelpers.h | 10 ++++++++-- src/displays/menus/motorfeedbackdebugmenu.h | 10 ++++++++-- src/displays/metersdisplay.h | 8 ++++---- src/displays/statusdisplay.h | 2 +- src/statistics.h | 8 ++++---- src/utils.h | 4 ++-- 8 files changed, 41 insertions(+), 18 deletions(-) diff --git a/src/bobbycar-protocol b/src/bobbycar-protocol index b6f0d6a..28052f8 160000 --- a/src/bobbycar-protocol +++ b/src/bobbycar-protocol @@ -1 +1 @@ -Subproject commit b6f0d6a185eb211382ce068b6b4d695d9a8b41af +Subproject commit 28052f8625a29744667730a2d7e085cd801bfaf0 diff --git a/src/can.h b/src/can.h index 58ca19e..10606dd 100644 --- a/src/can.h +++ b/src/can.h @@ -65,10 +65,10 @@ bool parseCanMessage(const can_message_t &message, Controller &controller) { using namespace bobbycar::can; case MotorController::Feedback::DcLink: - controller.feedback.left.current = *((int16_t*)message.data); + controller.feedback.left.dcLink = *((int16_t*)message.data); return true; case MotorController::Feedback::DcLink: - controller.feedback.right.current = *((int16_t*)message.data); + controller.feedback.right.dcLink = *((int16_t*)message.data); return true; case MotorController::Feedback::Speed: controller.feedback.left.speed = *((int16_t*)message.data); @@ -89,11 +89,22 @@ bool parseCanMessage(const can_message_t &message, Controller &controller) controller.feedback.right.angle = *((int16_t*)message.data); return true; case MotorController::Feedback::DcPhaA: + controller.feedback.left.dcPhaA = *((int16_t*)message.data); + return true; case MotorController::Feedback::DcPhaA: + controller.feedback.right.dcPhaA = *((int16_t*)message.data); + return true; case MotorController::Feedback::DcPhaB: + controller.feedback.left.dcPhaB = *((int16_t*)message.data); + return true; case MotorController::Feedback::DcPhaB: + controller.feedback.right.dcPhaB = *((int16_t*)message.data); + return true; case MotorController::Feedback::DcPhaC: + controller.feedback.left.dcPhaC = *((int16_t*)message.data); + return true; case MotorController::Feedback::DcPhaC: + controller.feedback.right.dcPhaC = *((int16_t*)message.data); return true; case MotorController::Feedback::Chops: controller.feedback.left.chops = *((uint16_t*)message.data); diff --git a/src/debugtexthelpers.h b/src/debugtexthelpers.h index 0a9d96c..91f8a3a 100644 --- a/src/debugtexthelpers.h +++ b/src/debugtexthelpers.h @@ -61,8 +61,14 @@ private: struct SpeedText : public virtual TextInterface { public: String text() const override { auto line = String{"speed: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().speed); return line; } }; struct SpeedKmhText : public virtual TextInterface { public: String text() const override { auto line = String{"speed kmh: "}; if (controller::get().feedbackValid) line += toString(convertToKmh(MotorFeedbackGetter::get().speed)); return line; } }; struct ErrorText : public virtual TextInterface { public: String text() const override { auto line = String{"error: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().error); return line; } }; - struct CurrentText : public virtual TextInterface { public: String text() const override { auto line = String{"current: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().current); return line; } }; - struct CurrentFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"current: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().current)) + 'A'; return line; } }; + struct DcLinkText : public virtual TextInterface { public: String text() const override { auto line = String{"dcLink: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcLink); return line; } }; + struct DcLinkFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcLink: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcLink)) + 'A'; return line; } }; + struct DcPhaAText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaA: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcPhaA); return line; } }; + struct DcPhaAFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaA: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcPhaA)) + 'A'; return line; } }; + struct DcPhaBText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaB: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcPhaB); return line; } }; + struct DcPhaBFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaB: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcPhaB)) + 'A'; return line; } }; + struct DcPhaCText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaC: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().dcPhaC); return line; } }; + struct DcPhaCFixedText : public virtual TextInterface { public: String text() const override { auto line = String{"dcPhaC: "}; if (controller::get().feedbackValid) line += toString(fixCurrent(MotorFeedbackGetter::get().dcPhaC)) + 'A'; return line; } }; struct ChopsText : public virtual TextInterface { public: String text() const override { auto line = String{"chops: "}; if (controller::get().feedbackValid) line += toString(MotorFeedbackGetter::get().chops); return line; } }; struct HallText : public virtual TextInterface { public: String text() const override { auto line = String{"hall: "}; if (controller::get().feedbackValid) line += hallString(MotorFeedbackGetter::get()); return line; } }; }; diff --git a/src/displays/menus/motorfeedbackdebugmenu.h b/src/displays/menus/motorfeedbackdebugmenu.h index ec07797..f187a68 100644 --- a/src/displays/menus/motorfeedbackdebugmenu.h +++ b/src/displays/menus/motorfeedbackdebugmenu.h @@ -30,8 +30,14 @@ public: constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); - constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); + constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, DummyAction>>(); constructMenuItem, SwitchScreenAction, StaticMenuItemIcon<&icons::back>>>(); diff --git a/src/displays/metersdisplay.h b/src/displays/metersdisplay.h index a5e47a9..a203b06 100644 --- a/src/displays/metersdisplay.h +++ b/src/displays/metersdisplay.h @@ -76,10 +76,10 @@ void MetersDisplay::redraw() meters[0].redraw(fixBatVoltage(controllers.front.feedback.batVoltage), 35, 50); meters[1].redraw(fixBatVoltage(controllers.back.feedback.batVoltage), 35, 50); - meters[2].redraw(fixCurrent(controllers.front.feedback.left.current), -10, 10); - meters[3].redraw(fixCurrent(controllers.front.feedback.right.current), -10, 10); - meters[4].redraw(fixCurrent(controllers.back.feedback.left.current), -10, 10); - meters[5].redraw(fixCurrent(controllers.back.feedback.right.current), -10, 10); + meters[2].redraw(fixCurrent(controllers.front.feedback.left.dcLink), -10, 10); + meters[3].redraw(fixCurrent(controllers.front.feedback.right.dcLink), -10, 10); + meters[4].redraw(fixCurrent(controllers.back.feedback.left.dcLink), -10, 10); + meters[5].redraw(fixCurrent(controllers.back.feedback.right.dcLink), -10, 10); } void MetersDisplay::rotate(int offset) diff --git a/src/displays/statusdisplay.h b/src/displays/statusdisplay.h index ce48a09..0fd0ca9 100644 --- a/src/displays/statusdisplay.h +++ b/src/displays/statusdisplay.h @@ -253,7 +253,7 @@ void StatusDisplay::BoardStatus::MotorStatus::redraw(const MotorFeedback &motor) m_labelError.redraw(String{motor.error}); tft.setTextColor(TFT_WHITE, TFT_BLACK); - m_labelCurrent.redraw(String{fixCurrent(motor.current)} + 'A'); + m_labelCurrent.redraw(String{fixCurrent(motor.dcLink)} + 'A'); m_labelSpeed.redraw(String{convertToKmh(motor.speed)}); tft.setTextFont(2); diff --git a/src/statistics.h b/src/statistics.h index d920bd1..2bc6a2b 100644 --- a/src/statistics.h +++ b/src/statistics.h @@ -26,14 +26,14 @@ void pushStats() if (controllers.front.feedbackValid) { statistics::frontVoltage.push_back(fixBatVoltage(controllers.front.feedback.batVoltage)); - statistics::frontLeftCurrent.push_back(fixCurrent(controllers.front.feedback.left.current)); - statistics::frontRightCurrent.push_back(fixCurrent(controllers.front.feedback.right.current)); + statistics::frontLeftCurrent.push_back(fixCurrent(controllers.front.feedback.left.dcLink)); + statistics::frontRightCurrent.push_back(fixCurrent(controllers.front.feedback.right.dcLink)); } if (controllers.back.feedbackValid) { statistics::backVoltage.push_back(fixBatVoltage(controllers.back.feedback.batVoltage)); - statistics::backLeftCurrent.push_back(fixCurrent(controllers.back.feedback.left.current)); - statistics::backRightCurrent.push_back(fixCurrent(controllers.back.feedback.right.current)); + statistics::backLeftCurrent.push_back(fixCurrent(controllers.back.feedback.left.dcLink)); + statistics::backRightCurrent.push_back(fixCurrent(controllers.back.feedback.right.dcLink)); } #ifdef FEATURE_BMS statistics::bmsVoltage.push_back(bms::voltage); diff --git a/src/utils.h b/src/utils.h index 4ced218..e97d6bb 100644 --- a/src/utils.h +++ b/src/utils.h @@ -303,8 +303,8 @@ void updateAccumulators() controller.feedback.right.speed * (controller.invertRight ? -1 : 1); sumCurrent += - controller.feedback.left.current + - controller.feedback.right.current; + controller.feedback.left.dcLink + + controller.feedback.right.dcLink; count +=2; }