Fertirrega_v6 AD5934 frequency at 2.5kHz
This commit is contained in:
@@ -67,14 +67,16 @@ uint8_t rs485_text[6];
|
||||
|
||||
|
||||
uint8_t newline[]={'\n','\0'};
|
||||
uint8_t doubleSpace[]={'_','_'};
|
||||
uint8_t doubleSpace[]={'_','_','\0'};
|
||||
uint8_t newline_ph[]={'_','p','H','\n','\0'};
|
||||
uint8_t newline_admi[]={'_','u','S','\n','\0'};
|
||||
uint8_t newline_temp[]={' ','°','C','\n','\0'};
|
||||
uint8_t newline_imag[]={'_','O','h','m','\n','\0'};
|
||||
uint8_t newline_485[]={'_','a','d','\n','\0'};
|
||||
uint8_t minus[]={'-',' '};
|
||||
|
||||
uint8_t ad_t[]={'A','d',':',' ','\0'};
|
||||
uint8_t ph_t[]={'p','H',':',' ','\0'};
|
||||
uint8_t tm_t[]={'T','M',':',' ','\0'};
|
||||
|
||||
uint8_t main_state = STATE_RUNNING_OK;
|
||||
uint8_t rs485_address=0;
|
||||
@@ -121,7 +123,7 @@ int main(void)
|
||||
uint32_t previous_millis_red = 0;
|
||||
uint32_t current_millis;
|
||||
|
||||
float temperature_RTD, admittance_EC, ph_compensated;
|
||||
float temperature_RTD, admittance_EC, refResistance, update_value, ph7_interp, ph4_interp, ph_compensated;
|
||||
|
||||
|
||||
|
||||
@@ -173,9 +175,11 @@ int main(void)
|
||||
// Initialize RS-485 driver
|
||||
rs485_init();
|
||||
|
||||
ADS1015(&i2c, &hi2c1, ADS_ADDR_GND);
|
||||
ADSsetGain(&i2c, GAIN_SIXTEEN);
|
||||
|
||||
ADS1015(&i2c, &hi2c1, ADS_ADDR_GND);
|
||||
ADSsetGain(&i2c, GAIN_FOUR);
|
||||
|
||||
ADG715_ResetChannels();
|
||||
// Start CE and RTD Measurement
|
||||
AD5934_Init();
|
||||
|
||||
@@ -186,19 +190,28 @@ int main(void)
|
||||
/* Infinite loop */
|
||||
/* USER CODE BEGIN WHILE */
|
||||
|
||||
for(i=0;i<AD5934_TEMP_AVERAGES;i++) // Loop to get stability and get averages
|
||||
{
|
||||
refResistance = AD5934_Get_Ref_Resistance(); // On Board Resistor
|
||||
temperature_RTD = AD5934_GetTemperature(refResistance); // Liquid Temperature is stored
|
||||
admittance_EC = AD5934_GetImpedance(temperature_RTD);
|
||||
ph_compensated = ADSCalculate_ph_Compensated(temperature_RTD);
|
||||
}
|
||||
|
||||
|
||||
if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3) == GPIO_PIN_RESET) // When PB3 (with internal pull up) in the Prog Header is set to GND
|
||||
{
|
||||
|
||||
main_state = STATE_SETUP_CALIBRATION;
|
||||
main_state = STATE_PH4_DRY_EC_CALIBRATION;
|
||||
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // Red LED On
|
||||
|
||||
for(i=0;i<32;i++) // Loop to get stability and get averages
|
||||
for(i=0;i<(2*AD5934_TEMP_AVERAGES);i++) // Loop to get stability and get averages
|
||||
{
|
||||
flash_data.ph4_volts = ADSCalculate_ph_Volts();
|
||||
flash_data.temperature_value = AD5934_GetTemperature(); // Air Temperature is not stored, just used to calculate impedance
|
||||
flash_data.ec0_mag = AD5934_GetImpedance(flash_data.temperature_value); // Dry Probe
|
||||
flash_data.ph4_mV = ADSCalculate_ph_mV();
|
||||
temperature_RTD = AD5934_GetTemperature(refResistance); // Air Temperature is not used in the function
|
||||
flash_data.ec0_mag = AD5934_GetImpedance(temperature_RTD); // Dry Probe
|
||||
if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_6) == GPIO_PIN_SET)
|
||||
flash_data.EC10mS_EC5mS_switch = AD5934_CH_EC_HIGH_GAIN; // 5mS/cm option
|
||||
else
|
||||
@@ -209,29 +222,50 @@ int main(void)
|
||||
flash_data.PT100_PT1000_switch = AD5934_CH_RTD_MID_GAIN; //PT1000 option
|
||||
|
||||
}
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET); // Green LED On
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
|
||||
|
||||
|
||||
while(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_3) == GPIO_PIN_RESET);
|
||||
HAL_Delay(500);
|
||||
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET); // Green LED On
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
|
||||
main_state = STATE_PH7_WET_EC_CALIBRATION;
|
||||
|
||||
for(i=0;i<32;i++) // Loop to get stability and get averages
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_SET);
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // Red LED On
|
||||
|
||||
|
||||
|
||||
for(i=0;i<(2*AD5934_TEMP_AVERAGES);i++) // Loop to get stability and get averages
|
||||
{
|
||||
flash_data.temperature_value = AD5934_GetTemperature(); // Liquid Temperature is stored
|
||||
flash_data.ph7_volts = ADSCalculate_ph_Volts();
|
||||
flash_data.ec1413_mag = AD5934_GetImpedance(flash_data.temperature_value); // Get the impedance of the reference liquid
|
||||
Flash_Save_Page(&flash_data); // Store Calibration parameters in Flash
|
||||
temperature_RTD = AD5934_GetTemperature(refResistance); // Liquid Temperature is stored
|
||||
flash_data.ec_factor = AD5934_EC_Calibrate_Temperature(temperature_RTD);
|
||||
flash_data.ph7_mV = ADSCalculate_ph_mV();
|
||||
flash_data.ec1413_mag = AD5934_GetImpedance(temperature_RTD)*flash_data.ec_factor; // Get the magnitude of the reference liquid and compensate it to 25ºC
|
||||
|
||||
}
|
||||
|
||||
ph7_interp = ADSinterpolate_ph(temperature_RTD,ADS1015_PH_7_BUFFER_ROW);
|
||||
ph4_interp = ADSinterpolate_ph(temperature_RTD,ADS1015_PH_4_BUFFER_ROW);
|
||||
|
||||
flash_data.ph_temperature = temperature_RTD;
|
||||
flash_data.ph_slope_mV = (flash_data.ph7_mV - flash_data.ph4_mV) / (ph7_interp - ph4_interp);
|
||||
flash_data.ph7_real = ph7_interp;
|
||||
|
||||
Flash_Save_Page(&flash_data); // Store Calibration parameters in Flash
|
||||
|
||||
|
||||
HAL_Delay(500);
|
||||
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_4, GPIO_PIN_RESET); // Green LED On
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_RESET); // Red LED On
|
||||
HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);
|
||||
|
||||
|
||||
main_state = STATE_RUNNING_OK;
|
||||
|
||||
|
||||
}
|
||||
|
||||
while (1)
|
||||
{
|
||||
|
||||
@@ -256,15 +290,6 @@ int main(void)
|
||||
|
||||
}
|
||||
|
||||
temperature_RTD = AD5934_GetTemperature();
|
||||
FloatToString(tempString, temperature_RTD);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_temp, strlen((char*)newline_temp));
|
||||
|
||||
admittance_EC = AD5934_GetImpedance(temperature_RTD);
|
||||
FloatToString(tempString, admittance_EC);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_admi, strlen((char*)newline_admi));
|
||||
|
||||
}
|
||||
|
||||
@@ -283,12 +308,26 @@ int main(void)
|
||||
|
||||
}
|
||||
|
||||
status1 = rs485_send_broadcast(tm_t, strlen((char*)tm_t));
|
||||
temperature_RTD = AD5934_GetTemperature(refResistance);
|
||||
FloatToString(tempString, temperature_RTD);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_temp, strlen((char*)newline_temp));
|
||||
|
||||
ph_compensated = ADSCalculate_ph_Uncompensated();
|
||||
status1 = rs485_send_broadcast(ad_t, strlen((char*)ad_t));
|
||||
admittance_EC = AD5934_GetImpedance(temperature_RTD);
|
||||
FloatToString(tempString, admittance_EC);
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_admi, strlen((char*)newline_admi));
|
||||
|
||||
status1 = rs485_send_broadcast(ph_t, strlen((char*)ph_t));
|
||||
ph_compensated = 10*ADSCalculate_ph_mV();//ADSCalculate_ph_Compensated(temperature_RTD);
|
||||
FloatToString(tempString, ph_compensated);
|
||||
|
||||
status0 = rs485_send_broadcast(tempString, (strlen((char*)tempString)-1));
|
||||
status1 = rs485_send_broadcast(newline_ph, strlen((char*)newline_ph));
|
||||
|
||||
status1 = rs485_send_broadcast(newline, strlen((char*)newline));
|
||||
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user