aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorRonen Sberlo <ronen.s@twine-s.com>2020-08-27 15:01:52 +0300
committerRonen Sberlo <ronen.s@twine-s.com>2020-08-27 15:01:52 +0300
commitd06662b0f8ae1457a59b1b3391c448408ecff49d (patch)
treebbe59b8c3664f94515d429fc181941400213d458 /Software
parent4e8527251f665090d5a3d9c73672f527157ffac5 (diff)
downloadTango-d06662b0f8ae1457a59b1b3391c448408ecff49d.tar.gz
Tango-d06662b0f8ae1457a59b1b3391c448408ecff49d.zip
arc head blowers and pressure sensor
Diffstat (limited to 'Software')
-rw-r--r--Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h2
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c27
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c14
-rw-r--r--Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h1
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h5
-rw-r--r--Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c60
-rw-r--r--Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c26
7 files changed, 121 insertions, 14 deletions
diff --git a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
index bbbc49c7d..ce4b168b7 100644
--- a/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
+++ b/Software/Embedded_SW/Embedded/Drivers/flash_ram/MCU_E2Prom.h
@@ -42,6 +42,8 @@ typedef enum {
EEPROM_PULLER_TENSION_POSITION,
EEPROM_WINDER_TENSION_POSITION,
EEPROM_INIT_FAILURE_COUNTER,
+ EEPROM_PRESSURE_SENSOR_V0_0,
+ EEPROM_PRESSURE_SENSOR_V0_1,
MAX_EEPROM_STORAGE
}EEPROM_STORAGE_USAGE_ENUM;
#define MAX_SERIAL_NUM_LEN 5 //5*4 bytes
diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
index a76142b00..37d6b5ec1 100644
--- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
+++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/Diagnostics.c
@@ -23,6 +23,7 @@
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h"
#include "drivers/I2C_Communication/DAC/Blower.h"
+#include <Drivers/I2C_Communication/I2C_Task.h>
#include "drivers/valves/valve.h"
#include "modules/ids/ids_ex.h"
@@ -264,6 +265,7 @@ double MotorValue[MAX_THREAD_MOTORS_NUM][DIAGNOSTICS_LIMIT+1];
uint8_t SpeedCounterIndex= 0;
double SpeedValue[DIAGNOSTICS_DANCER_LIMIT+1];
double headblowervoltage1 = 0.0, headblowervoltage2 = 0.0;
+double headblower1airflow = 0.0, headblower2airflow = 0.0;
void DiagnosticLoadMotor(int MotorId, int frequency)
{
@@ -496,21 +498,22 @@ void CopyTemperaturesToMonitor(void)
HeaterCounterIndex[HEATER_TYPE__HeaterZone4];
DiagnosticsMonitor.n_headzone6temperature =
HeaterCounterIndex[HEATER_TYPE__HeaterZone6];
+
DiagnosticsMonitor.n_headblower1airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone5];
DiagnosticsMonitor.n_headblower2airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone7];
- DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7];
+ headblower1airflow = PressureSensorGetPressure(HEAD_PT100_ZONE_5_0X84_0);
+ headblower2airflow = PressureSensorGetPressure(HEAD_PT100_ZONE_7_0X86_0);
+ DiagnosticsMonitor.headblower1airflow = &headblower1airflow;
+ DiagnosticsMonitor.headblower2airflow = &headblower2airflow;
+
+ DiagnosticsMonitor.n_headblowervoltage1 = 1;
+ DiagnosticsMonitor.n_headblowervoltage2 = 1;
+ headblowervoltage1 = HeadBlowersGetRPM(HEAD_FAN_RIGHT);
+ headblowervoltage2 = HeadBlowersGetRPM(HEAD_FAN_LEFT);
+ DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1;
+ DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2;
}
- DiagnosticsMonitor.n_headblower1airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.n_headblower2airflow = HeaterCounterIndex[HEATER_TYPE__HeaterZone7];
- DiagnosticsMonitor.headblower1airflow = HeaterTemperature[HEATER_TYPE__HeaterZone5];
- DiagnosticsMonitor.headblower2airflow = HeaterTemperature[HEATER_TYPE__HeaterZone7];
- headblowervoltage1 =(double )Head_Fan_PWM_Command[HEAD_FAN_RIGHT];
- headblowervoltage2 =(double )Head_Fan_PWM_Command[HEAD_FAN_LEFT];
- DiagnosticsMonitor.headblowervoltage1 = &headblowervoltage1;
- DiagnosticsMonitor.headblowervoltage2 = &headblowervoltage2;
- DiagnosticsMonitor.n_headblowervoltage1 = 1;
- DiagnosticsMonitor.n_headblowervoltage2 = 1;
+
DiagnosticsMonitor.dryerzone1temperature =
HeaterTemperature[HEATER_TYPE__DryerAirHeater];
DiagnosticsMonitor.dryerzone2temperature =
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
index ac2009bcd..517217b39 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.c
@@ -65,6 +65,7 @@ bool GeneralHwReady = false;
bool PP_Machine = false;
HardwareBlower BlowerCfg;
+HardwareBlower HeadBlowerCfg[2];
char *SW_INFO_DIR = "0://SysInfo";
char HwConfigPath[50] = "0://SysInfo//GenHwCfg.cfg";
@@ -568,7 +569,18 @@ uint32_t HWConfiguration(UploadHardwareConfigurationRequest* UploadRequest)
{
LargeFansCfg = request->blowers[Dispenser_i]->voltage;
}
-
+ if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__HeadBlower1))
+ {
+ HeadBlowerCfg[0].enabled = true;
+ HeadBlowerCfg[0].voltage = request->blowers[Dispenser_i]->voltage;
+ HeadBlowerCfg[0].heatingvoltage = request->blowers[Dispenser_i]->heatingvoltage;
+ }
+ if((request->blowers[Dispenser_i]->enabled)&&(request->blowers[Dispenser_i]->hardwareblowertype == HARDWARE_BLOWER_TYPE__HeadBlower2))
+ {
+ HeadBlowerCfg[1].enabled = true;
+ HeadBlowerCfg[1].voltage = request->blowers[Dispenser_i]->voltage;
+ HeadBlowerCfg[1].heatingvoltage = request->blowers[Dispenser_i]->heatingvoltage;
+ }
}
}
ControlStart();
diff --git a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
index 55490a140..e99931acc 100644
--- a/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
+++ b/Software/Embedded_SW/Embedded/Modules/General/GeneralHardware.h
@@ -20,6 +20,7 @@ uint32_t LoadConfigurationParamsFromFile(bool);
void HWConfigurationLoadFile(void);
extern HardwareBlower BlowerCfg;
+extern HardwareBlower HeadBlowerCfg[2];
extern bool DataUpdated;
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
index 0220d1a6c..015c5ea83 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_ex.h
@@ -41,3 +41,8 @@ uint32_t HeatersEnd(void);
void HeatersControlStart(void);
void HeatersControlStop(void);
uint32_t Heaters_Init(void);
+double PressureSensorGetPressure(uint8_t SensorId);
+int HeadBlowersGetRPM(uint8_t fanId);
+double PressureSensorInit();
+void HeadBlowersInit();
+void HeadBlowersCfg();
diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
index ce3ced6ef..8fe3de207 100644
--- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
+++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters_print.c
@@ -8,6 +8,7 @@
///////////////////////////////////////////////////////////////////////////////////////////
#include "include.h"
#include <DataDef.h>
+#include <math.h>
#include "heaters.h"
#include "Heaters_ex.h"
@@ -38,6 +39,7 @@
#include "drivers/I2C_Communication/ADC_MUX/ADC_MUX.h"
#include "drivers/I2C_Communication/Head_Card/ADC/Head_ADC.h"
#include "Drivers/I2C_Communication/I2C.h"
+#include <Drivers/I2C_Communication/I2C_Task.h>
#include <Drivers/I2C_Communication/WHS_Card/D_Max5805_ADC_Blower/WHS_Blower.h>
#include "StateMachines/Printing/PrintingSTM.h"
@@ -91,11 +93,15 @@ uint32_t UnderHeatCounter [HEATER_TYPE_MAX_HEATERS] = {0,0,0,0,0,0,0,0,0,0,0,
uint32_t MainDryerHeaterMaxTempControl = 0xFF;
uint32_t SecondDryerHeaterMaxTempControl = 0xFF;
uint32_t DisasterControlId = 0xFF;
+double PressureSensorV0[2] = {0.0, 0.0};
+
#define DRYER_AIR_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP1
#define DRYER_MAIN_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP2
#define DRYER_SECONDARY_PT100 TEMP_SENSE_ANALOG_DRYER_TEMP3
#define MINIMUM_HEATER_READ 9.0
#define MAXIMUM_HEATER_READ 283
+#define PRESSURE_SENSOR_CP 0.225
+extern uint16_t Head_Fan_Tach[2];
bool UseSecondaryDrierHeater = true;
@@ -237,7 +243,6 @@ uint32_t HeatersDisasterControl(uint32_t x,uint32_t y);
uint32_t PrepareHeater(int HeaterId, uint32_t SetTemperatue);
void HeatersStartControlTimer (void);
-
//**********************************************************************
//******************** CODE *******************************************/
//**********************************************************************
@@ -1843,3 +1848,56 @@ void HeatersControlTask(UArg arg0, UArg arg1)
}
}
}
+
+
+/********************************************************************************
+ * Arc Head Pressure sensors
+ *******************************************************************************/
+
+void HeadBlowersInit()
+{
+ Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, 0);
+ Trigger_Head_Fan_Control(HEAD_FAN_LEFT, 0);
+}
+
+void HeadBlowersCfg()
+{
+ if (HeadBlowerCfg[0].enabled) {
+ Trigger_Head_Fan_Control(HEAD_FAN_RIGHT, HeadBlowerCfg[0].voltage);
+ }
+ if (HeadBlowerCfg[1].enabled) {
+ Trigger_Head_Fan_Control(HEAD_FAN_LEFT, HeadBlowerCfg[1].voltage);
+ }
+}
+
+double PressureSensorInit(int fanId)
+{
+ int sensorId;
+ sensorId = (fanId == HEAD_FAN_RIGHT)?(HEAD_PT100_ZONE_5_0X84_0):(HEAD_PT100_ZONE_7_0X86_0);
+ PressureSensorV0[fanId] = MillisecGetTemperatures(sensorId);
+ PressureSensorV0[fanId] *= 10;
+ return PressureSensorV0[fanId];
+}
+
+int HeadBlowersGetRPM(uint8_t fanId)
+{
+ Trigger_Head_Read_Tacho(fanId);
+
+ if (Head_Fan_Tach[fanId] == 0x1FFE) {
+ return 0;
+ } else {
+ return 7864320/Head_Fan_Tach[fanId];
+ }
+}
+
+double PressureSensorGetPressure(uint8_t SensorId)
+{
+ double V0, Vm, Q, Cp;
+
+ Cp = PRESSURE_SENSOR_CP;
+ V0 = (SensorId == HEAD_PT100_ZONE_5_0X84_0)?(PressureSensorV0[0]):(PressureSensorV0[1]);
+ Vm = MillisecGetTemperatures(SensorId);
+ Vm *= 10;
+ Q = sqrt(Vm - V0 + 22) * Cp;
+ return Q;
+}
diff --git a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
index f20b1aa94..f6d825c20 100644
--- a/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
+++ b/Software/Embedded_SW/Embedded/StateMachines/Initialization/InitSequence.c
@@ -231,6 +231,8 @@ uint32_t InitSequenceMidTankCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag
}
uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
{
+ double V0[2] = {0.0, 0.0};
+
if (SafeRemoveControlCallback(HWControlId, InitSequenceBlowerCallBackFunction )==OK)
HWControlId = 0xFF;
else
@@ -247,6 +249,26 @@ uint32_t InitSequenceBlowerCallBackFunction(uint32_t IfIndex, uint32_t BusyFlag)
waste_seq_step1();// include 1Sec delay <- to open !!!!
+ if (Head_Type == HEAD_TYPE_ARC) {
+ if (ResetReason & SYSCTL_CAUSE_POR) {
+ V0[0] = PressureSensorInit(0);
+ V0[1] = PressureSensorInit(1);
+ if ((V0[0] > 0) && (V0[0] < 2)) {
+ MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE, V0[0]);
+ MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE, V0[1]);
+ ReportWithPackageFilter(InitFilter,"store pressure sensor v0[0]", __FILE__,__LINE__, V0[0], RpMessage, 0, 0);
+ }
+ if ((V0[1] > 0) && (V0[1] < 2)) {
+ MCU_E2PromProgram(EEPROM_ORIFICE1_ZERO_VALUE, V0[1]);
+ ReportWithPackageFilter(InitFilter,"store pressure sensor v0[1]", __FILE__,__LINE__, V0[1], RpMessage, 0, 0);
+ }
+ } else {
+ MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE, &V0[0]);
+ MCU_E2PromRead(EEPROM_ORIFICE1_ZERO_VALUE, &V0[1]);
+ ReportWithPackageFilter(InitFilter,"load initial values from EEPROM", __FILE__,__LINE__, V0[0], RpMessage, V0[1], 0);
+ }
+ }
+
Safety_Init();
InitStages++;
//InitSequenceStateMachine(InitStages);
@@ -459,6 +481,7 @@ uint32_t InitSequenceInitialBlowerActivation(void)
WHS_MAX11614_Load_OrificeZeroValue(total1,total3);
}
}
+ HeadBlowersInit();
Voc_Sensor_Zero_Calibration();
Turn_the_Blower_On();//Turn on with the Default_Voltage
@@ -535,6 +558,9 @@ uint32_t InitSequenceWaitForCooler(void)
Trigger_SetWHSFanSpeed(FAN4, SmallFansCfg);
Trigger_SetWHSFanSpeed(FAN5, LargeFansCfg);
Trigger_SetWHSFanSpeed(FAN6, LargeFansCfg);
+ if (Head_Type == HEAD_TYPE_ARC) {
+ HeadBlowersCfg();
+ }
if (WHS_Type == WHS_TYPE_UNKNOWN)
{
InitStages++;