Fixed issue related to EC Mid Gain

This commit is contained in:
2026-08-12 11:35:42 +01:00
parent 1b19d8035b
commit a2e3d50623
15 changed files with 12810 additions and 11905 deletions
+6 -18
View File
@@ -27,7 +27,6 @@ AD5934_filter_t g_rtd_filter = {0};
AD5934_filter_t g_ec_filter = {0};
AD5934_filter_t g_ref_100R_LowGain_filter = {0};
AD5934_filter_t g_ref_100R_MidGain_filter = {0};
AD5934_filter_t g_ref_100R_HighGain_filter = {0};
AD5934_filter_t g_ref_1K_MidGain_filter = {0};
AD5934_filter_t g_ref_1K_HighGain_filter = {0};
AD5934_filter_t g_ref_10K_HighGain_filter = {0};
@@ -283,7 +282,7 @@ float AD5934_Calculate_Temperature(float mag_ref_pt100, float mag_ref_pt1000, fl
temperature = (ratio - 1.0f) / AD5934_RTD_ALPHA;
}
return AD5934_Round_Float_Precision((temperature-drift),2);
return AD5934_Round_Float_Precision((temperature-drift),1);
}
@@ -302,7 +301,7 @@ float AD5934_EC_Compensate_Magnitude_To_25C(float mag_dut, float temperature_dut
if (factor < 0.1f)
factor = 0.1f;
return (AD5934_Round_Float_Precision((mag_dut / (factor)),2));
return (mag_dut/factor);
}
/**
@@ -440,7 +439,9 @@ float AD5934_GetAdmittance(float mag_ref_10mS_MidGain, float mag_ref_1mS_MidGain
float y_cell = admittance / (1 - (AD5934_EC_IN_SERIES_RESISTOR * admittance)); // Resistor in series with EC is 100 Ohms on PCB
return (y_cell*1000000); // in uS
//float y_cell = admittance;
return (y_cell*1000); // in mS
}
/******************************************************************************
* @brief Get Real and Imag values from Magnitude.
@@ -621,9 +622,6 @@ void AD5934_Process_System(void)
case AD5934_ID_REF_100R_MIDGAIN:
AD5934_Reference_100R_MidGain_NewSample(mag_float);
break;
case AD5934_ID_REF_100R_HIGHGAIN:
AD5934_Reference_100R_HighGain_NewSample(mag_float);
break;
case AD5934_ID_REF_1K_MIDGAIN:
AD5934_Reference_1K_MidGain_NewSample(mag_float);
break;
@@ -650,7 +648,7 @@ void AD5934_Process_System(void)
case AD5934_SWITCH_MUX:
AD5934_StopSweep(); // Put AD5934 in Standby
current_mux_channel = (uint8_t)((current_mux_channel + 1) % 8); // Pointer to the next channel (Circular Buffer 0 to 7)
current_mux_channel = (uint8_t)((current_mux_channel + 1) % 7); // Pointer to the next channel (Circular Buffer 0 to 6)
switch (current_mux_channel)
{
case AD5934_ID_RTD:
@@ -673,9 +671,6 @@ void AD5934_Process_System(void)
case AD5934_ID_REF_100R_MIDGAIN:
current_ref_mux = current_hw_mux_connection = AD5934_CH_REF100R_MID_GAIN; // 100 Ohms Reference Resistor
break;
case AD5934_ID_REF_100R_HIGHGAIN:
current_ref_mux = current_hw_mux_connection = AD5934_CH_REF100R_HIGH_GAIN; // 100 Ohms Reference Resistor
break;
case AD5934_ID_REF_1K_MIDGAIN:
current_ref_mux = current_hw_mux_connection = AD5934_CH_REF1K_MID_GAIN; // 1K Reference Resistor
break;
@@ -861,13 +856,6 @@ void AD5934_Reference_100R_MidGain_NewSample(float raw)
AD5934_Process_Sample(&g_ref_100R_MidGain_filter, raw);
}
/* Call this every time a sweep completes with the mux on the on-board
* precision reference resistor channel */
void AD5934_Reference_100R_HighGain_NewSample(float raw)
{
AD5934_Process_Sample(&g_ref_100R_HighGain_filter, raw);
}
/* Call this every time a sweep completes with the mux on the on-board
* precision reference resistor channel */
void AD5934_Reference_1K_MidGain_NewSample(float raw)
+1 -1
View File
@@ -260,7 +260,7 @@ void ADS1015_Process_Sample(ADS1015_filter_t *ch, float raw)
/* Final output: combines the IIR state (fast response to real drift)
* with the window average (more stable, slower response). Adjust
* the weighting per channel if needed. */
ch->filtered_value = 0.5f * ch->iir_state + 0.5f * window_average;
ch->filtered_value = 0.7f * ch->iir_state + 0.3f * window_average;
ch->value_valid = 1;
}
+9 -7
View File
@@ -142,14 +142,14 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while(averages<20)
while(averages<50)
{
AD5934_Process_System();
ADS1015_Process_System();
current_millis = g_ms_counter;
if((current_millis % 100) == 0) // Send data each 40ms
if((current_millis % 20) == 0) // Send data each 40ms
{
averages++;
@@ -177,9 +177,9 @@ int main(void)
{
temperature_RTD = AD5934_Calculate_Temperature(g_ref_100R_LowGain_filter.filtered_value, g_ref_1K_MidGain_filter.filtered_value, g_rtd_filter.filtered_value);// AD5934_GetImpedance(mag_reference,mag_rtd);//
//uint16_t rtd_final = AD5934_RTD_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_rtd_filter.filtered_value, current_rtd_mux);
uint16_t rtd_final = AD5934_Compress_To_IntScale(temperature_RTD, current_rtd_mux);
intToStr(rtd_final, tempString);
//FloatToString(tempString, temperature_RTD);
//uint16_t rtd_final = AD5934_Compress_To_IntScale(temperature_RTD, current_rtd_mux);
//intToStr(rtd_final, tempString);
FloatToString(tempString, temperature_RTD);
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
rs485_send_broadcast(&newline, 1);
@@ -188,9 +188,11 @@ int main(void)
{
mag_ec = AD5934_GetAdmittance(g_ref_100R_MidGain_filter.filtered_value, g_ref_1K_MidGain_filter.filtered_value, g_ref_1K_HighGain_filter.filtered_value, g_ref_10K_HighGain_filter.filtered_value, g_ec_filter.filtered_value);
thermal_compensaded_EC = AD5934_EC_Compensate_Magnitude_To_25C(mag_ec, temperature_RTD);
uint16_t ec_final = AD5934_Compress_To_IntScale(mag_ec, current_ec_mux);
intToStr(ec_final, tempString);
//FloatToString(tempString, thermal_compensaded_EC);
//rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
//rs485_send_broadcast(&newline, 1);
uint16_t ec_final = AD5934_Compress_To_IntScale(thermal_compensaded_EC, current_ec_mux);
intToStr(ec_final, tempString);
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
rs485_send_broadcast(&newline, 1);
}