In fermentation plot draw the SG line with temperature compensation.

Sat, 19 Aug 2023 16:58:03 +0200

author
Michiel Broek <mbroek@mbse.eu>
date
Sat, 19 Aug 2023 16:58:03 +0200
changeset 498
c6f957fa7442
parent 497
cbd7644d99ca
child 499
10d208fa6c74

In fermentation plot draw the SG line with temperature compensation.

src/ChartiSpindel.cpp file | annotate | diff | comparison | revisions
src/Utils.cpp file | annotate | diff | comparison | revisions
src/Utils.h file | annotate | diff | comparison | revisions
translations/bmsapp_en.ts file | annotate | diff | comparison | revisions
translations/bmsapp_nl.ts file | annotate | diff | comparison | revisions
--- a/src/ChartiSpindel.cpp	Fri Jul 07 20:17:21 2023 +0200
+++ b/src/ChartiSpindel.cpp	Sat Aug 19 16:58:03 2023 +0200
@@ -17,13 +17,14 @@
 #include "ChartiSpindel.h"
 #include "callout.h"
 #include "MainWindow.h"
+#include "Utils.h"
 
 
 ChartiSpindel::ChartiSpindel(QString code, QString name, QWidget *parent) : QDialog(parent)
 {
     QSqlQuery query;
     double timestamp;
-    double sg_min = 1.2, sg_max = 0.8, sg;
+    double sg_min = 1.2, sg_max = 0.8, mg, sg;
     double temp_min = 100, temp_max = 0, temp;
     double batt_min = 4.5, batt_max = 3.0, batt;
 
@@ -57,18 +58,22 @@
     while (query.next()) {
         timestamp = query.value("datetime").toDateTime().toSecsSinceEpoch() * 1000;
 
-	sg = query.value("sg").toDouble();
-	if ((ceil(sg * 100) / 100) > sg_max)
-	    sg_max = ceil(sg * 100) / 100;
-	if ((floor(sg * 100) / 100) < sg_min)
-	    sg_min = floor(sg * 100) / 100;
-
+	mg = query.value("sg").toDouble();
 	temp = query.value("temperature").toDouble();
 	if (ceil(temp) > temp_max)
 	    temp_max = ceil(temp);
 	if (floor(temp) < temp_min)
 	    temp_min = floor(temp);
 
+	/*
+	 * Correct the SG plotline for temperature.
+	 */
+	sg = Utils::HydroCorrection(mg, temp, 20.0);
+	if ((ceil(sg * 100) / 100) > sg_max)
+            sg_max = ceil(sg * 100) / 100;
+        if ((floor(sg * 100) / 100) < sg_min)
+            sg_min = floor(sg * 100) / 100;
+
 	batt = round(query.value("battery").toDouble() * 500) / 500;
 	if ((ceil(batt * 10) / 10) > batt_max)
 	    batt_max = ceil(batt * 10) / 10;
--- a/src/Utils.cpp	Fri Jul 07 20:17:21 2023 +0200
+++ b/src/Utils.cpp	Sat Aug 19 16:58:03 2023 +0200
@@ -877,3 +877,14 @@
     return P;
 }
 
+
+double Utils::HydroCorrection(double mg, double tr, double tc)
+{
+    double trf = tr * 1.8 + 32;
+    double tcf = tc * 1.8 + 32;
+
+    return mg * ((1.00130346 - 1.34722124E-4 * trf + 2.04052596E-6 * trf * trf - 2.32820948E-9 * trf * trf * trf) /
+	         (1.00130346 - 1.34722124E-4 * tcf + 2.04052596E-6 * tcf * tcf - 2.32820948E-9 * tcf * tcf * tcf));
+}
+
+
--- a/src/Utils.h	Fri Jul 07 20:17:21 2023 +0200
+++ b/src/Utils.h	Sat Aug 19 16:58:03 2023 +0200
@@ -240,6 +240,15 @@
      * @return Pressure in Bar.
      */
     double GetPressureBar(double gl, double T);
+
+    /**
+     * @brief Calculate Hydrometer (and iSpindel) Correction.
+     * @param mg Measured SG
+     * @param tr Temperature at reading in C
+     * @param tc Calibration temperature in C
+     * @return Corrected SG.
+     */
+    double HydroCorrection(double mg, double tr, double tc);
 }
 
 #endif
--- a/translations/bmsapp_en.ts	Fri Jul 07 20:17:21 2023 +0200
+++ b/translations/bmsapp_en.ts	Sat Aug 19 16:58:03 2023 +0200
@@ -163,79 +163,79 @@
 <context>
     <name>ChartiSpindel</name>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="33"/>
+        <location filename="../src/ChartiSpindel.cpp" line="34"/>
         <source>BMSapp - iSpindel </source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="38"/>
+        <location filename="../src/ChartiSpindel.cpp" line="39"/>
         <source>Save</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="83"/>
+        <location filename="../src/ChartiSpindel.cpp" line="88"/>
         <source>Temperature</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="85"/>
+        <location filename="../src/ChartiSpindel.cpp" line="90"/>
         <source>SG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="89"/>
+        <location filename="../src/ChartiSpindel.cpp" line="94"/>
         <source>Battery</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="101"/>
+        <location filename="../src/ChartiSpindel.cpp" line="106"/>
         <source>Date</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="112"/>
+        <location filename="../src/ChartiSpindel.cpp" line="117"/>
         <source>Temperature °C</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="130"/>
+        <location filename="../src/ChartiSpindel.cpp" line="135"/>
         <source>Battery volt</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="172"/>
+        <location filename="../src/ChartiSpindel.cpp" line="177"/>
         <source>Save Image</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="172"/>
+        <location filename="../src/ChartiSpindel.cpp" line="177"/>
         <source>Image (*.png)</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="174"/>
+        <location filename="../src/ChartiSpindel.cpp" line="179"/>
         <source>Save File</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="174"/>
+        <location filename="../src/ChartiSpindel.cpp" line="179"/>
         <source>No image file selected.</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="204"/>
+        <location filename="../src/ChartiSpindel.cpp" line="209"/>
         <source>%1
 Temperature %2°C</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="206"/>
+        <location filename="../src/ChartiSpindel.cpp" line="211"/>
         <source>%1
 Density %2 SG</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="214"/>
+        <location filename="../src/ChartiSpindel.cpp" line="219"/>
         <source>%1
 Battery %2 volt
 Capacity %3%</source>
--- a/translations/bmsapp_nl.ts	Fri Jul 07 20:17:21 2023 +0200
+++ b/translations/bmsapp_nl.ts	Sat Aug 19 16:58:03 2023 +0200
@@ -193,7 +193,7 @@
 <context>
     <name>ChartiSpindel</name>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="33"/>
+        <location filename="../src/ChartiSpindel.cpp" line="34"/>
         <source>BMSapp - iSpindel </source>
         <translation>BMSapp - iSpindel </translation>
     </message>
@@ -202,76 +202,76 @@
         <translation type="vanished">Temp °C</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="38"/>
+        <location filename="../src/ChartiSpindel.cpp" line="39"/>
         <source>Save</source>
         <translation>Bewaar</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="83"/>
+        <location filename="../src/ChartiSpindel.cpp" line="88"/>
         <source>Temperature</source>
         <translation>Temperatuur</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="85"/>
+        <location filename="../src/ChartiSpindel.cpp" line="90"/>
         <source>SG</source>
         <translation>SG</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="89"/>
+        <location filename="../src/ChartiSpindel.cpp" line="94"/>
         <source>Battery</source>
         <translation>Batterij</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="101"/>
+        <location filename="../src/ChartiSpindel.cpp" line="106"/>
         <source>Date</source>
         <translation>Datum</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="112"/>
+        <location filename="../src/ChartiSpindel.cpp" line="117"/>
         <source>Temperature °C</source>
         <translation>Temperatuur °C</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="130"/>
+        <location filename="../src/ChartiSpindel.cpp" line="135"/>
         <source>Battery volt</source>
         <translation>Batterij volt</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="172"/>
+        <location filename="../src/ChartiSpindel.cpp" line="177"/>
         <source>Save Image</source>
         <translation>Opslaan plaatje</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="172"/>
+        <location filename="../src/ChartiSpindel.cpp" line="177"/>
         <source>Image (*.png)</source>
         <translation>Plaatje (*.png)</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="174"/>
+        <location filename="../src/ChartiSpindel.cpp" line="179"/>
         <source>Save File</source>
         <translation>Bestand opslaan</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="174"/>
+        <location filename="../src/ChartiSpindel.cpp" line="179"/>
         <source>No image file selected.</source>
         <translation>Geen plaatjes bestand gekozen.</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="204"/>
+        <location filename="../src/ChartiSpindel.cpp" line="209"/>
         <source>%1
 Temperature %2°C</source>
         <translation>%1
 Temperatuur %2°C</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="206"/>
+        <location filename="../src/ChartiSpindel.cpp" line="211"/>
         <source>%1
 Density %2 SG</source>
         <translation>%1
 Dichtheid %2 SG</translation>
     </message>
     <message>
-        <location filename="../src/ChartiSpindel.cpp" line="214"/>
+        <location filename="../src/ChartiSpindel.cpp" line="219"/>
         <source>%1
 Battery %2 volt
 Capacity %3%</source>

mercurial