From 56c852213241643d41d53243c0f38b14d4fb866f Mon Sep 17 00:00:00 2001 From: Avi Levkovich Date: Sun, 3 Mar 2019 15:05:56 +0200 Subject: update the heaters current functions --- .../Embedded/Drivers/ADC_Sampling/ADC.c | 50 +++++++++++++++++----- .../Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c | 2 +- .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c | 28 ++++++------ .../Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h | 4 +- .../Embedded/Modules/AlarmHandling/AlarmHandling.c | 4 +- .../Embedded/Modules/Heaters/Heaters_print.c | 2 +- 6 files changed, 59 insertions(+), 31 deletions(-) (limited to 'Software/Embedded_SW/Embedded') diff --git a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c index 8bd38a698..44a4ff60b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c +++ b/Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c @@ -107,8 +107,8 @@ void ADCAcquireStop(void) //MillisecStop #define CHAN_LEFT_DANCER_1 ADC_CTL_CH13 #define CHAN_LEFT_DANCER_2 ADC_CTL_CH14 #define CHAN_RIGHT_DANCER ADC_CTL_CH15 -#define CHAN_DRYER_CURRENT_1 ADC_CTL_CH16 -#define CHAN_DRYER_CURRENT_2 ADC_CTL_CH17 +#define CHAN_DRYER_CURRENT_1 ADC_CTL_CH16 //Dryer Heater 2 +#define CHAN_DRYER_CURRENT_2 ADC_CTL_CH17 //Dryer Heater 1 #define CHAN_DRYER_CURRENT_3 ADC_CTL_CH18 #define CHAN_3V3_FPGA ADC_CTL_CH19 /* @@ -547,11 +547,35 @@ uint8_t Calculate_Gas_Power_Consumption() // WHS uint32_t Read_Dryer_Heaters_Current(HEATERS_CURRENT Heater_ID) // { + + /* + * On Dryer have two heaters , 4*220w and 2*220w that work on 220Vac. + + Current transformer convert (thru resistor ) the Current of load to Voltage then convert from RMS to DC and connect to A2D pin of Tiva. + A2D is 12 bits and his reference is 3.3V (VDDA) or 3V(VREFA+) (depend on s/w). + I=A2D bits *K *VREF *N /(4096*R) + Where : K= K factor of transformer (less than 1 ) + VREF 3 or 3.3v depended of s/w + N turns ratio (800 in our case ) + + + + + Heater_No. Heater_SSR Resistor Power Current AIN# + Heater_1 4 SSR_1 50 ohm 880W 8A 17 + Heater_2 2 SSR_2 100 ohm 440W 4A 16 + * + */ uint32_t Status = OK; uint32_t temp; - uint32_t TBD1 = 1;//TODO - uint32_t TBD2 = 1;//TODO + + uint32_t Vref = 3; // External 3V reference using - ADC_REF_EXT_3V + + uint8_t K = 95; //0.95; // + uint32_t N = 800; // + uint8_t R; // + if (Heaters_Current_Read_Enable[Heater_ID] == false) return Heaters_Current[Heater_ID]; @@ -559,22 +583,26 @@ uint32_t Read_Dryer_Heaters_Current(HEATERS_CURRENT Heater_ID) // switch(Heater_ID) { case DRYER_CURRENT_1: - temp = ADC_GetReading(CHAN_DRYER_CURRENT_1); + temp = ADC_GetReading(CHAN_DRYER_CURRENT_2);//ADC_CTL_CH17 + R = 50; + //Expected 8A break; case DRYER_CURRENT_2: - temp = ADC_GetReading(CHAN_DRYER_CURRENT_2); - break; - case DRYER_CURRENT_3: - temp = ADC_GetReading(CHAN_DRYER_CURRENT_3); + temp = ADC_GetReading(CHAN_DRYER_CURRENT_1);//ADC_CTL_CH16 + R = 100; + //Expected 4A break; +// case DRYER_CURRENT_3: +// temp = ADC_GetReading(CHAN_DRYER_CURRENT_3);//Not in use +// break; default: Status = ERROR; break; } Heaters_Current_Bits[Heater_ID] = temp; - #warning after updating the hardware need to add the correct formula - Heaters_Current[Heater_ID] = temp*TBD1/TBD2; + + Heaters_Current[Heater_ID] = (temp * K/100 * Vref * N) / (4096 * R);// [Amper] return Status; diff --git a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c index dc34cbd2d..06d35772e 100644 --- a/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c +++ b/Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c @@ -580,7 +580,7 @@ bool WHS_GPI_WCONTAINER_WARN()//waste tank empty return F3_GPI_01_Reg.bits.F3_GPI_WCONTAINER_WARN; } -bool WHS_GPI_WASTE_FLOW_SWITCH() +bool WHS_GPI_WASTE_FLOW_SWITCH()// DRyer air { return F2_GPI_Reg.bits.F2_WASTE_FLOW_SW_NO; } diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c index 96e42fc36..f95d0cd83 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c @@ -282,28 +282,28 @@ uint32_t Read_Head_MixChip_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-5 uint32_t Channel; uint32_t VsampleInBits; -/* - * zone Heater No. Shunt Resistor Power Current I2C ID I2C Address I2C - * Dyer_Head zone_2 3 0.025 ohm 45W 1.875A 2 0x40 4 - * Dyer_Head zone_3 3 0.025 ohm 45W 1.875A 2 0x40 5 - * Dyer_Head zone_4 5 0.025 ohm 75W 3.125A 2 0x44 0 - * Dyer_Head zone_5 5 0.025 ohm 75W 3.125A 2 0x44 1 - * Dyer_Head zone_6 3 0.025 ohm 45W 1.875A 2 0x40 3 - * Dyer_Head zone_1 2 0.05 ohm 30W 1.25A 2 - * MixChip 3 0.025 ohm 45W 1.875A 2 0x46 4 - * - */ + /* + * zone Heater No. Power Current Shunt Resistor I2C ID I2C Address I2C + * Dyer_Head zone_1 2 30W 1.25A 0.025 ohm 2 0x40 3 + * Dyer_Head zone_2 3 45W 1.875A 0.025 ohm 2 0x40 4 + * Dyer_Head zone_3 3 45W 1.875A 0.025 ohm 2 0x40 5 + * Dyer_Head zone_4 5 75W 3.125A 0.025 ohm 2 0x44 0 + * Dyer_Head zone_5 5 75W 3.125A 0.020 ohm 2 0x44 1 (5+6 Max 5A) + * Dyer_Head zone_6 3 45W 1.875A + * MixChip 3 45W 1.875A 0.025 ohm 2 0x46 4 + * + */ assert (Heater_ID