aboutsummaryrefslogtreecommitdiffstats
path: root/Software/Embedded_SW/Embedded
diff options
context:
space:
mode:
authorShlomo Hecht <shlomo@twine-s.com>2019-03-04 09:20:25 +0200
committerShlomo Hecht <shlomo@twine-s.com>2019-03-04 09:20:25 +0200
commit0b9ceb4bef00aae3c49271f8171d8acaba5455d6 (patch)
tree9b1092ccd88d42e0ebae68053f956d228527426a /Software/Embedded_SW/Embedded
parent312cff53fcd1744f915a286332d2dd923e23d393 (diff)
parent6f3abda6cf8034ce4c18d39f82ce38c256ac2d34 (diff)
downloadTango-0b9ceb4bef00aae3c49271f8171d8acaba5455d6.tar.gz
Tango-0b9ceb4bef00aae3c49271f8171d8acaba5455d6.zip
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW/Embedded')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/ADC_Sampling/ADC.c50
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/FPGA/FPGA_GPIO/FPGA_GPIO.c2
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.c28
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/I2C_Communication/ADC_MUX/ADC_MUX.h4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c4
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c2
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;