From 31894e336d6d20cbd59a948155d8a4f562a2afed Mon Sep 17 00:00:00 2001 From: Davide Mor <davide.mor@skywarder.eu> Date: Fri, 1 Mar 2024 18:51:47 +0100 Subject: [PATCH] [RIGv2] Calibrated loadcells --- src/boards/RIGv2/Configs/SensorsConfig.h | 12 ++++++++++++ src/boards/RIGv2/Sensors/Sensors.cpp | 13 +++++++++---- src/entrypoints/RIGv2/rig-v2-entry.cpp | 2 +- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/boards/RIGv2/Configs/SensorsConfig.h b/src/boards/RIGv2/Configs/SensorsConfig.h index 0bfeca7f4..530fefe36 100644 --- a/src/boards/RIGv2/Configs/SensorsConfig.h +++ b/src/boards/RIGv2/Configs/SensorsConfig.h @@ -72,6 +72,18 @@ static constexpr unsigned int LC_CALIBRATE_SAMPLE_PERIOD = 40; static constexpr float SERVO_CURRENT_SCALE = 4.5466; static constexpr float SERVO_CURRENT_ZERO = 2.520 / SERVO_CURRENT_SCALE; static constexpr float BATTERY_VOLTAGE_SCALE = 4.7917; + +// LC Tank sensor calibration data +// - 1.866kg V: 0.000941 +// - 5.050kg V: 0.002550 +// - 6.916kg V: 0.003559 +static constexpr float LC_TANK_SCALE = 1968.8771f; +// LC Vessel sensor calibration data +// - 1.866kg V: 0.00027 +// - 5.050kg V: 0.00073 +// - 6.916kg V: 0.00100 +static constexpr float LC_VESSEL_SCALE = 6914.9731f; + } // namespace Sensors } // namespace Config diff --git a/src/boards/RIGv2/Sensors/Sensors.cpp b/src/boards/RIGv2/Sensors/Sensors.cpp index 7f2b7f960..174496907 100644 --- a/src/boards/RIGv2/Sensors/Sensors.cpp +++ b/src/boards/RIGv2/Sensors/Sensors.cpp @@ -138,7 +138,8 @@ LoadCellData Sensors::getVesselWeight() sample.voltage[Config::Sensors::ADC1_VESSEL_LC_CHANNEL] - vesselLcOffset; - return {sample.timestamp, calibratedVoltage}; + return {sample.timestamp, + -calibratedVoltage * Config::Sensors::LC_VESSEL_SCALE}; } LoadCellData Sensors::getTankWeight() @@ -147,7 +148,9 @@ LoadCellData Sensors::getTankWeight() float calibratedVoltage = sample.voltage[Config::Sensors::ADC1_TANK_LC_CHANNEL] - tankLcOffset; - return {sample.timestamp, calibratedVoltage}; + // This ADC channel is flipped for some reason + return {sample.timestamp, + -calibratedVoltage * Config::Sensors::LC_TANK_SCALE}; } CurrentData Sensors::getUmbilicalCurrent() @@ -159,8 +162,10 @@ CurrentData Sensors::getServoCurrent() { auto sample = getADC1LastSample(); - float current = (sample.voltage[Config::Sensors::ADC1_SERVO_CURRENT_CHANNEL] - Config::Sensors::SERVO_CURRENT_ZERO) * - Config::Sensors::SERVO_CURRENT_SCALE; + float current = + (sample.voltage[Config::Sensors::ADC1_SERVO_CURRENT_CHANNEL] - + Config::Sensors::SERVO_CURRENT_ZERO) * + Config::Sensors::SERVO_CURRENT_SCALE; // Current reading are flipped return {sample.timestamp, -current / 5.0f * 50.0f}; } diff --git a/src/entrypoints/RIGv2/rig-v2-entry.cpp b/src/entrypoints/RIGv2/rig-v2-entry.cpp index 76fba1d13..d2d9d167e 100644 --- a/src/entrypoints/RIGv2/rig-v2-entry.cpp +++ b/src/entrypoints/RIGv2/rig-v2-entry.cpp @@ -172,7 +172,7 @@ int main() while (true) { Thread::sleep(1000); - // sdLogger.log(modules.get<Radio>()->getMavStatus()); + sdLogger.log(modules.get<Radio>()->getMavStatus()); sdLogger.log(CpuMeter::getCpuStats()); CpuMeter::resetCpuStats(); // TODO: What the fuck is this? -- GitLab