Fixed issue related to EC Mid Gain
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user