Fixed issues related to Temperature and EC

This commit is contained in:
2026-08-11 11:25:47 +01:00
parent ebb76da3b0
commit 1b19d8035b
12 changed files with 12292 additions and 12821 deletions
+23 -87
View File
@@ -90,9 +90,10 @@ int main(void)
uint32_t previous_millis_red = 0;
uint32_t current_millis;
float ref_final;
float reference_resistor_100R = 0, reference_resistor_1K = 0, temperature_RTD = 0, thermal_compensaded_EC = 0;
float mag_reference, mag_rtd, mag_ec;
float mag_rtd_reference = 0, mag_ec_reference = 0, mag_rtd = 0, mag_ec = 0;
/* USER CODE END 1 */
@@ -125,9 +126,6 @@ int main(void)
HAL_TIM_Base_Start_IT(&htim3);
//AD5934_MovingAvg_Init (&g_rtd_filter);
//AD5934_MovingAvg_Init (&g_ref_filter);
//AD5934_MovingAvg_Init (&g_ec_filter);
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET); // LED Green Off
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET); // LED Red Off
@@ -143,7 +141,7 @@ int main(void)
/* Infinite loop */
/* USER CODE BEGIN WHILE */
/*
while(averages<20)
{
AD5934_Process_System();
@@ -151,28 +149,15 @@ int main(void)
current_millis = g_ms_counter;
if((current_millis % 20) == 0) // Send data each 20ms
if((current_millis % 100) == 0) // Send data each 40ms
{
if (g_ref_imag_filter.value_valid) // Reference Resistor on Board: 100 Ohms or 1000 Ohms
{
//reference_resistor = g_ref_filter.filtered_value;
reference_resistor = sqrtf((g_ref_real_filter.filtered_value * g_ref_real_filter.filtered_value)+(g_ref_imag_filter.filtered_value * g_ref_imag_filter.filtered_value));
//reference_resistor = ref_now;
//uint16_t reference_final = AD5934_REF_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_ref_filter.filtered_value, current_ref_mux);
averages++;
}
averages++;
}
}
*/
digital_outputs_toggle(0);
digital_outputs_toggle(1);
digital_outputs_toggle(2);
digital_outputs_toggle(3);
digital_outputs_toggle(4);
digital_outputs_toggle(5);
digital_outputs_toggle(6);
digital_outputs_toggle(7);
while (1)
@@ -181,88 +166,38 @@ int main(void)
AD5934_Process_System();
ADS1015_Process_System();
current_millis = g_ms_counter;
if((current_millis % 500) == 0) // Send data each 100ms
{
//if (g_ref_filter.value_valid) // Reference Resistor on Board: 100 Ohms or 1000 Ohms
//{
mag_reference = g_ref_filter.filtered_value;
//mag_reference = sqrtf(((float)ref_now * (float)ref_now) + ((float)ref_now_i * (float)ref_now_i));
//mag_reference = sqrtf((g_ref_real_filter.average * g_ref_real_filter.average)+(g_ref_imag_filter.average * g_ref_imag_filter.average));
//mag_reference = (float)ref_now;
//reference_resistor = g_ref_filter.filtered_value;
//uint16_t reference_final = AD5934_REF_OUT_SCALE_MAX - AD5934_Compress_To_IntScale(g_ref_filter.filtered_value, current_ref_mux);
//intToStr(reference_final, tempString);
//ref_final = g_ref_filter.filtered_value;
FloatToString(tempString, mag_reference);
//Convert2Hex(ref_now, tempString);
//intToStr(ref_now, tempString);
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
//intToStr(ref_now_i, tempString);
//rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
rs485_send_broadcast(&newline, 1);
//}
//if (g_rtd_filter.value_valid) // PT100 or PT1000 in °C
//{
//mag_rtd = (float)rtd_now;
mag_rtd = g_rtd_filter.filtered_value;
//mag_rtd = sqrtf((g_rtd_real_filter.average * g_rtd_real_filter.average)+(g_rtd_imag_filter.average * g_rtd_imag_filter.average));
//mag_rtd = sqrtf(((float)rtd_now * (float)rtd_now) + ((float)rtd_now_i * (float)rtd_now_i));
//temperature_RTD = AD5934_Calculate_Temperature(mag_reference, mag_rtd);
temperature_RTD = AD5934_Calculate_Temperature(mag_reference,mag_rtd);// 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);
//float rtd_final = g_rtd_filter.filtered_value; //g_rtd_filter.filtered_value;
FloatToString(tempString, temperature_RTD);
//Convert2Hex(rtd_now, tempString);
//intToStr(rtd_now, tempString);
rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
//Convert2Hex(rtd_now_i, tempString);
//intToStr(rtd_now_i, tempString);
//rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
rs485_send_broadcast(&newline, 1);
//}
/*if (g_rtd_imag_filter.value_valid) // PT100 or PT1000 in °C
if (g_rtd_filter.value_valid) // PT100 or PT1000 in °C
{
//float mag_rtd = sqrtf((g_rtd_real_filter.filtered_value * g_rtd_real_filter.filtered_value)+(g_rtd_imag_filter.filtered_value * g_rtd_imag_filter.filtered_value));
temperature_RTD = AD5934_Calculate_Temperature(reference_resistor, mag_rtd);
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);
float rtd_final = temperature_RTD; //g_rtd_filter.filtered_value;
FloatToString(tempString, rtd_final);
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);
}*/
//if (g_ec_filter.value_valid) // EC
//{
//mag_ec = sqrtf((g_ec_real_filter.filtered_value * g_ec_real_filter.filtered_value)+(g_ec_imag_filter.filtered_value * g_ec_imag_filter.filtered_value));
mag_ec = sqrtf(((float)ec_now * (float)ec_now) + ((float)ec_now_i * (float)ec_now_i));
}
if (g_ec_filter.value_valid) // EC
{
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(thermal_compensaded_EC, current_ec_mux);
//intToStr(ec_now, tempString);
// float ec_final = g_ec_filter.filtered_value;
FloatToString(tempString, mag_ec);
//Convert2Hex((ec_now+0x80008000), tempString);
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)));
//intToStr(ec_now_i, tempString);
//rs485_send_broadcast(tempString, (strlen((uint8_t*)tempString)));
rs485_send_broadcast(&newline, 1);
//}
}
if (g_ph_filter.value_valid) // pH
{
uint16_t ph_final = ADS1015_Compress_To_IntScale(g_ph_filter.filtered_value);
intToStr(ph_final, tempString);
//float ph_final = g_ph_filter.filtered_value;
//FloatToString(tempString, ph_final);
@@ -275,6 +210,7 @@ int main(void)
}
// Piscar LED verde em PB4 a cada 1 segundo
if ((current_millis - previous_millis_green) >= 1000)
{