diff --git a/include/ec.h b/include/ec.h index c77a2de..5f7bde8 100644 --- a/include/ec.h +++ b/include/ec.h @@ -64,9 +64,10 @@ float ec_reference_adc=6016.88; //adc reference value for the calibration resist //x^0*p[0] + ... + x^n*p[n] //float ec_calibration_polynom[]={691.5992624638029,-1.4015367296761692,0.0008513503472324141,-2.2140576823179093e-07,2.8962580780180067e-11,-1.8577565383307114e-15,4.7162479484903865e-20}; //float ec_calibration_polynom[]={1033.928052655456,-3.8909104921922895,0.005627541436014758,-4.103988840997024e-06,1.7231981870816133e-09,-4.433707707721975e-13,7.203892111369395e-17,-7.406549810844244e-21,4.667420606439905e-25,-1.6439457516812463e-29,2.477292190335455e-34}; //20220505 -float ec_calibration_polynom[]={-323.68589929771457,0.5836096440900665,-0.000279737392438965,5.98673062873e-08,-5.4460235093798435e-12,1.8535134644431135e-16}; //20230509 +//float ec_calibration_polynom[]={-323.68589929771457,0.5836096440900665,-0.000279737392438965,5.98673062873e-08,-5.4460235093798435e-12,1.8535134644431135e-16}; //20230509 //float ec_calibration_polynom[]={212.6826331524675,-0.6043878865263305,0.000571551634082491,-1.827897106718841e-07,2.682337041246909e-11,-1.8368511021965982e-15,4.8269168538877025e-20}; //20230509 manuell -float ec_calibration_linearize_below_adc=6500; //use linear approximation below this adc value. 0=disable +float ec_calibration_polynom[]={-202.42892340068445,0.3775267988688599,-0.0001603031198536654,3.398964768344757e-08,-3.0277753798278316e-12,1.0137804308289433e-16}; //20230620, graphite electrodes +float ec_calibration_linearize_below_adc=4000; //use linear approximation below this adc value. 0=disable float ec_calibration_linear_lowADC=746; //x0 float ec_calibration_linear_lowEC=0; //y0 @@ -163,7 +164,7 @@ void ec_loop(unsigned long loopmillis) { if (loopmillis>last_read_ec+EC_READ_INTERVAL) { //take reading into array last_read_ec=loopmillis; - if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled + if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled uint16_t value = ADS.readADC(EC_ADS_CHANNEL); ec_array[ec_array_pos]=value; @@ -173,10 +174,10 @@ void ec_loop(unsigned long loopmillis) { } }else{ //measurement not running, then take calibration readings - if (loopmillis>last_read_ec+EC_CALIB_READ_INTERVAL) { //take reading into array + if (loopmillis>last_read_ec+EC_CALIB_READ_INTERVAL) { //take reading into arraysdf last_read_ec=loopmillis; - if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled + if (loopmillis>ec_last_change_relay+EC_RELAY_SWITCH_SETTLETIME) { //values have settled uint16_t value = ADS.readADC(EC_ADS_CHANNEL); ec_calib_array[ec_calib_array_pos]=value; diff --git a/include/wifi_functions.h b/include/wifi_functions.h index 3d7a56b..cb6954b 100644 --- a/include/wifi_functions.h +++ b/include/wifi_functions.h @@ -8,6 +8,8 @@ #include "wifi_settings.h" #include "helpfunctions.h" +bool force_ec_measurement=false; + struct mqttValueTiming{ float minchange; @@ -25,7 +27,7 @@ MQTTClient client; bool sendallnext_flag=false; bool enableTiming=true; -bool force_ec_measurement=false; + void publishValueTimed(String topic,float value,uint8_t decimals,mqttValueTiming &mqttvt,unsigned long loopmillis); void publishValue(String topic,float value,uint8_t decimals); diff --git a/messung/20230620_NaCl.ods b/messung/20230620_NaCl.ods new file mode 100644 index 0000000..a52bec9 Binary files /dev/null and b/messung/20230620_NaCl.ods differ diff --git a/messung/20230620_NaCl_raw.csv b/messung/20230620_NaCl_raw.csv new file mode 100644 index 0000000..4562d47 --- /dev/null +++ b/messung/20230620_NaCl_raw.csv @@ -0,0 +1,41 @@ +time,tempReservoir,ECadcCalib,ECadc,ECadcAdjusted,ecMeasured +174369,26.75,6026.45,768.41,767.19,15 +226453,26.75,6026.3,768.41,767.2,15 +254513,26.75,6026.81,768.57,767.31,15 +280571,26.75,6027.54,768.12,766.76,15 +298621,26.75,6027.7,768.15,766.77,15 +393748,26.75,6026.95,866.96,865.51,40 +564951,26.75,6026.5,1100.59,1098.84,55 +612030,26.75,6026.8,1240.29,1238.25,60 +676126,26.75,6026.96,1536.88,1534.3,80 +708190,26.75,6027.02,1834.7,1831.62,100 +740254,26.75,6027.66,2122.36,2118.56,120 +772318,26.75,6027.68,2586.95,2582.31,155 +805383,26.75,6027.63,3363.96,3357.96,220 +860470,26.75,6027.38,3874.01,3867.26,260 +906548,26.75,6027.63,4411.25,4403.39,320 +945619,26.78,6027.32,5086.8,5077.99,390 +992698,26.8,6026.66,5780.72,5771.34,470 +1040778,26.81,6026.3,6346.3,6336.38,560 +1095867,26.81,6026.54,6959.73,6948.58,650 +1125929,26.81,6026.76,7704.95,7692.32,780 +1152988,26.81,6026.91,8014.21,8000.88,850 +1184051,26.81,6026.74,8444.22,8430.4,940 +1240140,26.85,6026.3,9119.98,9105.73,1120 +1286218,26.87,6026.59,9769.52,9753.78,1310 +1322286,26.87,6026.39,10601.19,10584.46,1630 +1433429,26.88,6026.82,11137.44,11119.07,1890 +1463491,26.93,6027.01,11235.27,11216.38,1940 +1495555,26.94,6026.65,11451,11432.44,2060 +1524616,26.94,6026.15,11627.25,11609.36,2170 +1556680,26.94,6026.38,11886.32,11867.59,2340 +1590746,26.94,6026.27,12143.11,12124.2,2540 +1639827,26.95,6026.5,12335.04,12315.34,2700 +1676896,27,6026.65,12505.56,12485.29,2850 +1712964,27,6027.25,12673.08,12651.28,3010 +1749032,27,6027.5,12956.33,12933.5,3310 +1822169,27.02,6026.78,13440.36,13418.28,3940 +1853232,27.06,6026.5,13607.09,13585.36,4220 +1895306,27.06,6026.53,13765.66,13743.62,4590 +1935379,27.06,6026.66,13895.97,13873.41,4860 +1967443,27.06,6026.62,13885.23,13862.79,5120 diff --git a/src/main.cpp b/src/main.cpp index 24c0d79..da6be82 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -6,6 +6,8 @@ bool debug=true; //print Serial information bool mqtt=false; +bool eccalibrationoutput=false; //serial output for ec calibration + @@ -98,8 +100,6 @@ void setup() { delay(100000); */ - - //Serial.println("time,tempReservoir,ECadcCalib,ECadc,ECadcAdjusted,EC,EC25"); @@ -125,15 +125,23 @@ void loop() { static bool getReading=false; - if (!digitalRead(PIN_BUTTON)) { + if (!eccalibrationoutput && !digitalRead(PIN_BUTTON)) { valueError=false; Serial.println("Reset ValueError flag by user"); digitalWrite(PIN_LED,valueError); delay(100); } - /* - if (ec_flag_measurement_available && getReading) { + if (eccalibrationoutput && !digitalRead(PIN_BUTTON) && !getReading) { + getReading=true; + force_ec_measurement=true; + ec_flag_measurement_available=false; + digitalWrite(PIN_LED,HIGH); + } + + + if (eccalibrationoutput && ec_flag_measurement_available && getReading) { + ec_flag_measurement_available=false; getReading=false; digitalWrite(PIN_LED,LOW); @@ -143,7 +151,7 @@ void loop() { Serial.print(ec_adc); Serial.print(","); Serial.print(ec_adc_adjusted); Serial.println(); - }*/ + } if (loopmillis>last_check+2000) { //check values @@ -161,7 +169,9 @@ void loop() { } - digitalWrite(PIN_LED,valueError); + if (!eccalibrationoutput) { + digitalWrite(PIN_LED,valueError); + }