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