Fixed issue related to EC Mid Gain
This commit is contained in:
@@ -156,8 +156,8 @@ extern "C" {
|
||||
#define AD5934_EC_1MS 0.001f // Ref 1K
|
||||
#define AD5934_EC_0_1MS 0.0001f // Ref 10k
|
||||
|
||||
#define AD5934_DRIFT_PT100 2.12f
|
||||
#define AD5934_DRIFT_PT1000 0.22f
|
||||
#define AD5934_DRIFT_PT100 2.92f
|
||||
#define AD5934_DRIFT_PT1000 0.42f
|
||||
|
||||
#define AD5934_GAIN_FACTOR_1413US 1413.0f
|
||||
#define AD5934_GAIN_FACTOR_12880US 12880.0f
|
||||
@@ -182,11 +182,10 @@ extern "C" {
|
||||
#define AD5934_ID_RTD 0
|
||||
#define AD5934_ID_EC 1
|
||||
#define AD5934_ID_REF_100R_LOWGAIN 2
|
||||
#define AD5934_ID_REF_100R_MIDGAIN 3
|
||||
#define AD5934_ID_REF_100R_HIGHGAIN 4
|
||||
#define AD5934_ID_REF_1K_MIDGAIN 5
|
||||
#define AD5934_ID_REF_1K_HIGHGAIN 6
|
||||
#define AD5934_ID_REF_10K_HIGHGAIN 7
|
||||
#define AD5934_ID_REF_100R_MIDGAIN 3
|
||||
#define AD5934_ID_REF_1K_MIDGAIN 4
|
||||
#define AD5934_ID_REF_1K_HIGHGAIN 5
|
||||
#define AD5934_ID_REF_10K_HIGHGAIN 6
|
||||
|
||||
/*****************************************************************************/
|
||||
/**************************** Filtering Defines *****************************/
|
||||
@@ -212,12 +211,12 @@ extern "C" {
|
||||
#define AD5934_RTD_OUT_SCALE_MAX 800
|
||||
|
||||
#define AD5934_EC5_FLOAT_SCALE_MIN 0.0f
|
||||
#define AD5934_EC5_FLOAT_SCALE_MAX 7000.0f
|
||||
#define AD5934_EC5_FLOAT_SCALE_MAX 5.5f
|
||||
#define AD5934_EC5_OUT_SCALE_MIN 0
|
||||
#define AD5934_EC5_OUT_SCALE_MAX 4095
|
||||
|
||||
#define AD5934_EC10_FLOAT_SCALE_MIN 0.0f
|
||||
#define AD5934_EC10_FLOAT_SCALE_MAX 14000.0f
|
||||
#define AD5934_EC10_FLOAT_SCALE_MAX 15.0f
|
||||
#define AD5934_EC10_OUT_SCALE_MIN 0
|
||||
#define AD5934_EC10_OUT_SCALE_MAX 4095
|
||||
|
||||
@@ -406,7 +405,7 @@ extern uint8_t current_ec_mux;
|
||||
extern uint8_t current_rtd_mux;
|
||||
extern uint8_t current_ref_mux;
|
||||
|
||||
extern AD5934_filter_t g_rtd_filter, g_ec_filter, g_ref_100R_LowGain_filter, g_ref_100R_MidGain_filter, g_ref_100R_HighGain_filter, g_ref_1K_MidGain_filter, g_ref_1K_HighGain_filter, g_ref_10K_HighGain_filter;
|
||||
extern AD5934_filter_t g_rtd_filter, g_ec_filter, g_ref_100R_LowGain_filter, g_ref_100R_MidGain_filter, g_ref_1K_MidGain_filter, g_ref_1K_HighGain_filter, g_ref_10K_HighGain_filter;
|
||||
|
||||
extern uint8_t is_startup;
|
||||
|
||||
@@ -471,8 +470,6 @@ void AD5934_Reference_100R_LowGain_NewSample(float raw);
|
||||
|
||||
void AD5934_Reference_100R_MidGain_NewSample(float raw);
|
||||
|
||||
void AD5934_Reference_100R_HighGain_NewSample(float raw);
|
||||
|
||||
void AD5934_Reference_1K_MidGain_NewSample(float raw);
|
||||
|
||||
void AD5934_Reference_1K_HighGain_NewSample(float raw);
|
||||
|
||||
@@ -128,10 +128,10 @@ extern "C" {
|
||||
#define ADS1015_CONFIG_START_SINGLE (ADS1015_REG_CONFIG_OS_SINGLE | ADS1015_REG_CONFIG_MUX_DIFF_0_1 | ADS1015_REG_CONFIG_PGA_1_024V | ADS1015_REG_CONFIG_MODE_SINGLE | ADS1015_REG_CONFIG_DR_128SPS | ADS1015_REG_CONFIG_CMODE_TRAD | ADS1015_REG_CONFIG_CPOL_ACTVLOW | ADS1015_REG_CONFIG_CLAT_NONLAT | ADS1015_REG_CONFIG_CQUE_NONE) // 0x8583 // valor de reset já tem OS=1, então só precisa garantir MODE=1b
|
||||
|
||||
|
||||
#define ADS1015_BURST_SIZE 5
|
||||
#define ADS1015_TRIM_COUNT 1
|
||||
#define ADS1015_HISTORY_SIZE 5
|
||||
#define ADS1015_IIR_ALPHA 0.55f
|
||||
#define ADS1015_BURST_SIZE 1
|
||||
#define ADS1015_TRIM_COUNT 0
|
||||
#define ADS1015_HISTORY_SIZE 16
|
||||
#define ADS1015_IIR_ALPHA 0.1f
|
||||
|
||||
#define ADS1015_PH_FLOAT_SCALE_MIN 1000.0f
|
||||
#define ADS1015_PH_FLOAT_SCALE_MAX 3000.0f
|
||||
|
||||
@@ -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