From a7940178ee904dc2a948d9af2b0cae9eb02c468c Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Wed, 21 Feb 2024 09:49:26 +0100 Subject: [PATCH 1/3] :sparkles: (drivers): Add interface::AnalogIn --- include/interface/drivers/AnalogIn.h | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 include/interface/drivers/AnalogIn.h diff --git a/include/interface/drivers/AnalogIn.h b/include/interface/drivers/AnalogIn.h new file mode 100644 index 0000000000..4988df7be1 --- /dev/null +++ b/include/interface/drivers/AnalogIn.h @@ -0,0 +1,17 @@ +// Leka - LekaOS +// Copyright 2024 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +namespace leka::interface { + +class AnalogIn +{ + public: + virtual ~AnalogIn() = default; + + virtual auto read() -> float = 0; +}; + +} // namespace leka::interface From 230dff4e498560ea7fd0162e521757b26b6349e8 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Wed, 21 Feb 2024 09:49:46 +0100 Subject: [PATCH 2/3] :sparkles: (drivers): Add interface::MotorConsumption --- include/interface/drivers/MotorConsumption | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 include/interface/drivers/MotorConsumption diff --git a/include/interface/drivers/MotorConsumption b/include/interface/drivers/MotorConsumption new file mode 100644 index 0000000000..43f81d5087 --- /dev/null +++ b/include/interface/drivers/MotorConsumption @@ -0,0 +1,17 @@ +// Leka - LekaOS +// Copyright 2024 APF France handicap +// SPDX-License-Identifier: Apache-2.0 + +#pragma once + +namespace leka::interface { + +class MotorConsumption +{ + public: + virtual ~MotorConsumption() = default; + + virtual auto getConsumption() -> float = 0; +}; + +} // namespace leka::interface From f16a0b88197423e67c35d38bf02829da99e4f8b1 Mon Sep 17 00:00:00 2001 From: Yann Locatelli Date: Wed, 21 Feb 2024 09:49:59 +0100 Subject: [PATCH 3/3] spike to observe motor consumption --- spikes/lk_motors/main.cpp | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/spikes/lk_motors/main.cpp b/spikes/lk_motors/main.cpp index b824e5b375..23923681ea 100644 --- a/spikes/lk_motors/main.cpp +++ b/spikes/lk_motors/main.cpp @@ -10,6 +10,7 @@ #include "rtos/ThisThread.h" #include "rtos/Thread.h" +#include "AnalogIn.h" #include "CoreMotor.h" #include "CorePwm.h" #include "HelloWorld.h" @@ -60,6 +61,18 @@ auto main() -> int auto motor_left = CoreMotor {motor_left_dir_1, motor_left_dir_2, motor_left_speed}; auto motor_right = CoreMotor {motor_right_dir_1, motor_right_dir_2, motor_right_speed}; + const auto maxVSense = float {2.3}; // min -1V + auto motor_left_voltage = mbed::AnalogIn {MOTOR_LEFT_VOLTAGE, maxVSense}; // U = RI, R = 0.5 + + auto log_voltage = [&motor_left_voltage] { + for (int i = 0; i < 20; i++) { + log_info("Raw: %d | Ratio: %.2f | Voltage: %.2fV | Current: %.2fA", motor_left_voltage.read_u16(), + motor_left_voltage.read(), motor_left_voltage.read_voltage(), + motor_left_voltage.read_voltage() * 2.0F); + rtos::ThisThread::sleep_for(100ms); + } + }; + while (true) { auto t = rtos::Kernel::Clock::now() - start; log_info("A message from your board %s --> \"%s\" at %i s\n", MBED_CONF_APP_TARGET_NAME, hello.world, @@ -70,16 +83,11 @@ auto main() -> int log_info("Spin left..."); spinLeft(motor_left, motor_right); - rtos::ThisThread::sleep_for(5s); - - log_info("Spin right..."); - spinRight(motor_left, motor_right); - - rtos::ThisThread::sleep_for(5s); + log_voltage(); log_info("Spin stop..."); stop(motor_left, motor_right); - rtos::ThisThread::sleep_for(5s); + log_voltage(); } }