Обновление платы на V2
This commit is contained in:
parent
081a4faadc
commit
4a9f203a50
131
AdcTasks.c
131
AdcTasks.c
|
|
@ -124,49 +124,6 @@ void VN7008AJ(tAdc0Task *env, char *desc, uint16_t adc_value) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ANALOG_SENSOR(tAdc0Task *env, char *desc, uint16_t adc_value, eNtcTable NtcTable, float R) {
|
|
||||||
float ERROR_THRESHOLD_HIGH_V = 4.9f;
|
|
||||||
float ERROR_THRESHOLD_LOW_V = 0.1f;
|
|
||||||
uint16_t ERROR_THRESHOLD_HIGH_CODE = (uint16_t) (ERROR_THRESHOLD_HIGH_V * 4095.0f / 5.0f);
|
|
||||||
uint16_t ERROR_THRESHOLD_LOW_CODE = (uint16_t) (ERROR_THRESHOLD_LOW_V * 4095.0f / 5.0f);
|
|
||||||
|
|
||||||
// 1. Проверка на ошибку
|
|
||||||
if (adc_value >= ERROR_THRESHOLD_HIGH_CODE || adc_value <= ERROR_THRESHOLD_LOW_CODE) {
|
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value)
|
|
||||||
} else {
|
|
||||||
// Преобразование в напряжение
|
|
||||||
float U = (float) adc_value * 5.0f / 4095.0f;
|
|
||||||
|
|
||||||
float temp = 0;
|
|
||||||
|
|
||||||
switch (NtcTable) {
|
|
||||||
|
|
||||||
case TABLE_NONE:
|
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d)", desc, U, adc_value)
|
|
||||||
return;
|
|
||||||
|
|
||||||
case TABLE_DUCT:
|
|
||||||
if (R == 3000) {
|
|
||||||
temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value);
|
|
||||||
}
|
|
||||||
if (R == 20000) {
|
|
||||||
temp = lookup_table_get_temp(temperature_table_duct_KST45_table_20000, adc_value);
|
|
||||||
}
|
|
||||||
|
|
||||||
break;
|
|
||||||
case TABLE_INCAR:
|
|
||||||
break;
|
|
||||||
case TABLE_AMBIENT:
|
|
||||||
break;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d) Temp = %f", desc, U, adc_value, temp / 10)
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Расчет сопротивления NTC для схемы с делителем напряжения
|
* Расчет сопротивления NTC для схемы с делителем напряжения
|
||||||
*
|
*
|
||||||
|
|
@ -220,6 +177,56 @@ float calculate_ntc_resistance(uint16_t adc_value,
|
||||||
return Rntc;
|
return Rntc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ANALOG_SENSOR(tAdc0Task *env, char *desc, uint16_t adc_value, eNtcTable NtcTable, float R) {
|
||||||
|
float ERROR_THRESHOLD_HIGH_V = 4.9f;
|
||||||
|
float ERROR_THRESHOLD_LOW_V = 0.1f;
|
||||||
|
uint16_t ERROR_THRESHOLD_HIGH_CODE = (uint16_t) (ERROR_THRESHOLD_HIGH_V * 4095.0f / 5.0f);
|
||||||
|
uint16_t ERROR_THRESHOLD_LOW_CODE = (uint16_t) (ERROR_THRESHOLD_LOW_V * 4095.0f / 5.0f);
|
||||||
|
|
||||||
|
// 1. Проверка на ошибку
|
||||||
|
if (adc_value >= ERROR_THRESHOLD_HIGH_CODE || adc_value <= ERROR_THRESHOLD_LOW_CODE) {
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: Error !!! (adc = %d)", desc, adc_value)
|
||||||
|
} else {
|
||||||
|
// Преобразование в напряжение
|
||||||
|
float U = (float) adc_value * 5.0f / 4095.0f;
|
||||||
|
|
||||||
|
float temp = 0;
|
||||||
|
float Rntc = 0;
|
||||||
|
|
||||||
|
switch (NtcTable) {
|
||||||
|
|
||||||
|
case TABLE_NONE:
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d)", desc, U, adc_value)
|
||||||
|
return;
|
||||||
|
|
||||||
|
case TABLE_DUCT:
|
||||||
|
if (R == 3000) {
|
||||||
|
// temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value);
|
||||||
|
temp = lookup_table_get_temp(temperature_table_duct_KST45_table_3000, adc_value);
|
||||||
|
Rntc = calculate_ntc_resistance(adc_value, 3000, 4.96f, 5.0f, 4095);
|
||||||
|
}
|
||||||
|
if (R == 20000) {
|
||||||
|
// temp = get_temperature_by_adc(temperature_table_duct_KST45_table_3000, 1024, adc_value);
|
||||||
|
temp = lookup_table_get_temp(temperature_table_duct_KST45_table_20000, adc_value);
|
||||||
|
Rntc = calculate_ntc_resistance(adc_value, 20000, 4.96f, 5.0f, 4095);
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case TABLE_INCAR:
|
||||||
|
break;
|
||||||
|
case TABLE_AMBIENT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
LoggerFormatInfo(LOGGER, LOG_SIGN, "%s: U = %f (adc = %d) Temp = %f Rntc = %f", desc, U, adc_value, temp / 10, Rntc)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
static _Noreturn void Adc0_Thread(tAdc0Task *env) {
|
static _Noreturn void Adc0_Thread(tAdc0Task *env) {
|
||||||
|
|
||||||
|
|
@ -415,10 +422,10 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) {
|
||||||
// LoggerFormatInfo(LOGGER, LOG_SIGN, "IGN = %f", IGN_ANS);
|
// LoggerFormatInfo(LOGGER, LOG_SIGN, "IGN = %f", IGN_ANS);
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
//////////////////////////////////////----DEBUG----////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////----DEBUG----////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV1",
|
BTS5180_120(env, "BTS5120_2EKA_ShutoffValvePowerTXV1",
|
||||||
rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1);
|
rtDW.ADC_Data_Model.BTS5120_2EKA_ShutoffValvePowerTXV1);
|
||||||
|
|
@ -462,13 +469,41 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) {
|
||||||
ANALOG_SENSOR(env, "Sensor_Front_Duct2 (dbg_Sen_Duct_FR_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000);
|
ANALOG_SENSOR(env, "Sensor_Front_Duct2 (dbg_Sen_Duct_FR_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000);
|
||||||
ANALOG_SENSOR(env, "Sensor_Front_Duct3 (dbg_Sen_Duct_FL_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000);
|
ANALOG_SENSOR(env, "Sensor_Front_Duct3 (dbg_Sen_Duct_FL_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000);
|
||||||
ANALOG_SENSOR(env, "Sensor_Front_Duct4 (dbg_Sen_Duct_FR_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000);
|
ANALOG_SENSOR(env, "Sensor_Front_Duct4 (dbg_Sen_Duct_FR_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000);
|
||||||
ANALOG_SENSOR(env, "Sensor_Front_Duct5 (dbg_Sen_Duct_FL_Side_Fb)", rtDW.ADNcfr\C_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000);
|
ANALOG_SENSOR(env, "Sensor_Front_Duct5 (dbg_Sen_Duct_FL_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000);
|
||||||
ANALOG_SENSOR(env, "Sensor_Front_Duct6 (dbg_Sen_Duct_FR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000);
|
ANALOG_SENSOR(env, "Sensor_Front_Duct6 (dbg_Sen_Duct_FR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000);
|
||||||
|
|
||||||
|
|
||||||
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1, TABLE_DUCT,20000);
|
ANALOG_SENSOR(env, "Reserve_Sensor_Duct_Temp_1", rtDW.ADC_Data_Model.Reserve_Sensor_Duct_Temp_1, TABLE_DUCT,20000);
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct1 (dbg_Sen_Duct_FL_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct1, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct2 (dbg_Sen_Duct_FR_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct3 (dbg_Sen_Duct_FL_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct4 (dbg_Sen_Duct_FR_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct5 (dbg_Sen_Duct_FL_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct6 (dbg_Sen_Duct_FR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000);
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct1 (dbg_Sen_Duct_FL_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct1, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct2 (dbg_Sen_Duct_FR_Upper_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct2, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct3 (dbg_Sen_Duct_FL_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct3, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct4 (dbg_Sen_Duct_FR_Lower_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct4, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct5 (dbg_Sen_Duct_FL_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct5, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Front_Duct6 (dbg_Sen_Duct_FR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Front_Duct6, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Evap_Temp, TABLE_DUCT, 20000);
|
||||||
|
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct1 (dbg_Sen_Duct_RL_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct1, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct2 (dbg_Sen_Duct_RR_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct2, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct3 (dbg_Sen_Duct_RL_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Duct4 (dbg_Sen_Duct_RR_Side_Fb)", rtDW.ADC_Data_Model.Sensor_Rear_Duct4, TABLE_DUCT, 3000);
|
||||||
|
ANALOG_SENSOR(env, "Sensor_Rear_Evap_Temp", rtDW.ADC_Data_Model.Sensor_Rear_Evap_Temp, TABLE_DUCT, 20000);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000);
|
// ANALOG_SENSOR(env, "Sensor_Rear_Duct3", rtDW.ADC_Data_Model.Sensor_Rear_Duct3, TABLE_DUCT, 3000);
|
||||||
|
|
||||||
// float Rntc = calculate_ntc_resistance(rtDW.ADC_Data_Model.Sensor_Rear_Duct3, 3000, 4.96f, 5, 4095);
|
// float Rntc = calculate_ntc_resistance(rtDW.ADC_Data_Model.Sensor_Rear_Duct3, 3000, 4.96f, 5, 4095);
|
||||||
|
|
@ -508,7 +543,7 @@ static _Noreturn void Adc0_Thread(tAdc0Task *env) {
|
||||||
++env->step;
|
++env->step;
|
||||||
|
|
||||||
if (env->step > MAX_ADC_FILTER_SIZE * 2) {
|
if (env->step > MAX_ADC_FILTER_SIZE * 2) {
|
||||||
SystemDelayMs(50);
|
SystemDelayMs(25);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -646,7 +681,7 @@ static _Noreturn void Adc1_Thread(tAdc1Task *env) {
|
||||||
++env->step;
|
++env->step;
|
||||||
|
|
||||||
if (env->step > MAX_ADC_FILTER_SIZE * 2) {
|
if (env->step > MAX_ADC_FILTER_SIZE * 2) {
|
||||||
SystemDelayMs(50);
|
SystemDelayMs(25);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue