Skip to content
Snippets Groups Projects
Commit 833dd18f authored by Alberto Nidasio's avatar Alberto Nidasio
Browse files

[AnalogSensors] Implemented offset for load cell and pressure sensors

parent 51bf642e
No related branches found
No related tags found
No related merge requests found
...@@ -45,6 +45,11 @@ public: ...@@ -45,6 +45,11 @@ public:
bool selfTest() override { return true; }; bool selfTest() override { return true; };
/**
* @brief Sets the offset that will be removed from the measured load.
*/
void setOffset(const float offset) { this->offset = offset; }
AnalogLoadCellData sampleImpl() override AnalogLoadCellData sampleImpl() override
{ {
ADCData adcData = getVoltage(); ADCData adcData = getVoltage();
...@@ -53,14 +58,20 @@ public: ...@@ -53,14 +58,20 @@ public:
data.loadTimestamp = adcData.voltageTimestamp; data.loadTimestamp = adcData.voltageTimestamp;
data.voltage = adcData.voltage; data.voltage = adcData.voltage;
data.load = data.voltage / conversionCoeff; if (data.voltage != 0)
data.load = data.voltage / conversionCoeff - offset;
else
data.load = -offset;
return data; return data;
} }
private: private:
///< Function that returns the sensor voltage.
std::function<ADCData()> getVoltage; std::function<ADCData()> getVoltage;
const float conversionCoeff; const float conversionCoeff;
float offset = 0;
}; };
} // namespace Boardcore } // namespace Boardcore
...@@ -52,7 +52,11 @@ public: ...@@ -52,7 +52,11 @@ public:
bool selfTest() override { return true; } bool selfTest() override { return true; }
///< Converts the voltage value to pressure /**
* @brief Sets the offset that will be removed from the measured pressure.
*/
void setOffset(const float offset) { this->offset = offset; }
AnalogPressureData sampleImpl() override AnalogPressureData sampleImpl() override
{ {
AnalogPressureData pressure; AnalogPressureData pressure;
...@@ -70,19 +74,22 @@ public: ...@@ -70,19 +74,22 @@ public:
else if (pressure.pressure > maxPressure) else if (pressure.pressure > maxPressure)
pressure.pressure = maxPressure; pressure.pressure = maxPressure;
pressure.pressure -= offset;
return pressure; return pressure;
} }
protected: protected:
///< Conversion function from volts to pascals ///< Conversion function from volts to pascals.
virtual float voltageToPressure(float voltage) = 0; virtual float voltageToPressure(float voltage) = 0;
///< Function that returns the sensor voltage ///< Function that returns the sensor voltage.
std::function<ADCData()> getVoltage; std::function<ADCData()> getVoltage;
const float supplyVoltage; const float supplyVoltage;
const float maxPressure; const float maxPressure;
const float minPressure; const float minPressure;
float offset = 0;
}; };
} // namespace Boardcore } // namespace Boardcore
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment