diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-03-04 09:20:25 +0200 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-03-04 09:20:25 +0200 |
| commit | 0b9ceb4bef00aae3c49271f8171d8acaba5455d6 (patch) | |
| tree | 9b1092ccd88d42e0ebae68053f956d228527426a /Software/Embedded_SW/Embedded | |
| parent | 312cff53fcd1744f915a286332d2dd923e23d393 (diff) | |
| parent | 6f3abda6cf8034ce4c18d39f82ce38c256ac2d34 (diff) | |
| download | Tango-0b9ceb4bef00aae3c49271f8171d8acaba5455d6.tar.gz Tango-0b9ceb4bef00aae3c49271f8171d8acaba5455d6.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
6 files changed, 59 insertions, 31 deletions
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<NUM_OF_HEATERS); #warning to update all the Resistors to 0.025 Ohm after changing the hardware://there is overflow in Dyer Head zone 4 with resistor 0.05 - const double Resistor[NUM_OF_HEATERS] = {0.025, 0.025, 0.025, 0.05, 0.025, 0.025}; + const double Resistor[NUM_OF_HEATERS] = {0.025, 0.025, 0.025, 0.025, 0.020, 0.025}; if (Heaters_Current_Read_Enable[Heater_ID] == false) return Heaters_Current[Heater_ID]; switch(Heater_ID) { - case HEAD_ZONE_1_6: + case HEAD_ZONE_1: I2C_Slave_Add = 0x40; Channel = 0x08; break; @@ -319,7 +319,7 @@ uint32_t Read_Head_MixChip_Heaters_Current(HEATERS_CURRENT Heater_ID) //0-5 I2C_Slave_Add = 0x44; Channel = 0x01; break; - case HEAD_ZONE_5: + case HEAD_ZONE_5_6: I2C_Slave_Add = 0x44; Channel = 0x02; break; diff --git a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h index 1c5fb6dbd..8924e7d07 100644 --- a/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h +++ b/Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h @@ -25,11 +25,11 @@ typedef enum typedef enum { - HEAD_ZONE_1_6,//HEAD_ZONE_1, + HEAD_ZONE_1, HEAD_ZONE_2, HEAD_ZONE_3, HEAD_ZONE_4, - HEAD_ZONE_5,//HEAD_ZONE_5_6, + HEAD_ZONE_5_6, MIXCHIP, DRYER_CURRENT_1, DRYER_CURRENT_2, diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index f4da887c7..a6399efbb 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -270,11 +270,11 @@ const AlarmHandlingItemStruc AlarmItem[MAX_SYSTEM_ALARMS]={ { eOneSecond, MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANMECH , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_MECHANISM_MOTOR_UNDERVOLTAGE ," MotorDyeingHeadCleaningUnderVoltage " }, /* 5038 */ { eOneSecond, MotorAlarm, HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , HARDWARE_MOTOR_TYPE__MOTO_DH_CLEANHEAD , x_STATUS_UVLO , FALSE , DEBUG_LOG_CATEGORY__Error , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_CLEANING_HEAD_MOTOR_UNDERVOLTAGE ," MotorDyeingHeadCleaningHeadUnderVoltage " }, /* 5042 */ - { eOneSecond, CurrentAlarm, HEAD_ZONE_1_6 , HEAD_ZONE_1_6 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE ," Head Zone 1 Heater Current Out Of Range " }, /* 5018 */ + { eOneSecond, CurrentAlarm, HEAD_ZONE_1 , HEAD_ZONE_1 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_1_CURRENT_OUT_OF_RANGE ," Head Zone 1 Heater Current Out Of Range " }, /* 5018 */ { eOneSecond, CurrentAlarm, HEAD_ZONE_2 , HEAD_ZONE_2 , 187 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_2_CURRENT_OUT_OF_RANGE ," Head Zone 2 Heater Current Out Of Range " }, /* 5019 */ { eOneSecond, CurrentAlarm, HEAD_ZONE_3 , HEAD_ZONE_3 , 187 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_3_CURRENT_OUT_OF_RANGE ," Head Zone 3 Heater Current Out Of Range " }, /* 5020 */ { eOneSecond, CurrentAlarm, HEAD_ZONE_4 , HEAD_ZONE_4 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_4_CURRENT_OUT_OF_RANGE ," Head Zone 4 Heater Current Out Of Range " }, /* 5021 */ - { eOneSecond, CurrentAlarm, HEAD_ZONE_5 , HEAD_ZONE_5 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_5_6_CURRENT_OUT_OF_RANGE ," Head Zone 5-6 Heater Current Out Of Range " }, /* 5022 */ + { eOneSecond, CurrentAlarm, HEAD_ZONE_5_6 , HEAD_ZONE_5_6 , 312 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DYEING_HEAD_ZONE_5_6_CURRENT_OUT_OF_RANGE ," Head Zone 5-6 Heater Current Out Of Range " }, /* 5022 */ { eOneSecond, CurrentAlarm, MIXCHIP , MIXCHIP , 187 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__MIXER_CURRENT_OUT_OF_RANGE ," Mixer Heater Current Out Of Range " }, /* 6004 */ { eOneSecond, CurrentAlarm, DRYER_CURRENT_1, DRYER_CURRENT_1, 1 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_1_CURRENT_OUT_OF_RANGE ," Drier Heater 1 Current Out Of Range " }, /* 6004 */ { eOneSecond, CurrentAlarm, DRYER_CURRENT_2, DRYER_CURRENT_2, 1 , FALSE , DEBUG_LOG_CATEGORY__Warning , 0xFF , 2 , EVENT_TYPE__DRYER_HEATERS_ZONE_2_CURRENT_OUT_OF_RANGE ," Drier Heater 2 Current Out Of Range " }, /* 6004 */ diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c index bbf3822f0..0a9210379 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c @@ -89,7 +89,7 @@ uint32_t SecondDryerHeaterMaxTempControl = 0xFF; //old uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,TEMP_SENSE_ANALOG_MIXCHIP_TEMP,TEMP_SENSE_AN_ENCLOSURETEMP3}; uint32_t HeaterId2PT100Id[MAX_HEATERS_NUM] = {DRYER_AIR_PT100,DRYER_MAIN_PT100,DRYER_SECONDARY_PT100,TEMP_SENSE_ANALOG_DYEINGH_TEMP1,TEMP_SENSE_ANALOG_DYEINGH_TEMP2,TEMP_SENSE_ANALOG_DYEINGH_TEMP3,TEMP_SENSE_ANALOG_DYEINGH_TEMP4,TEMP_SENSE_ANALOG_DYEINGH_TEMP5,HEAD6_PT100,MIXER_PT100}; -HEATERS_CURRENT HeaterId2CurrentId[MAX_HEATERS_NUM] = {NUM_OF_HEATERS,DRYER_CURRENT_1,DRYER_CURRENT_2,HEAD_ZONE_1_6,HEAD_ZONE_2,HEAD_ZONE_3,HEAD_ZONE_4,HEAD_ZONE_5,HEAD_ZONE_1_6,MIXCHIP}; +HEATERS_CURRENT HeaterId2CurrentId[MAX_HEATERS_NUM] = {NUM_OF_HEATERS,DRYER_CURRENT_1,DRYER_CURRENT_2,HEAD_ZONE_1,HEAD_ZONE_2,HEAD_ZONE_3,HEAD_ZONE_4,HEAD_ZONE_5_6,HEAD_ZONE_5_6,MIXCHIP}; uint32_t DryerInternalPT100Id = DRYER_AIR_PT100; bool HeatersRestart = false; |
