diff options
| author | Shlomo Hecht <shlomo@twine-s.com> | 2019-04-30 14:24:06 +0300 |
|---|---|---|
| committer | Shlomo Hecht <shlomo@twine-s.com> | 2019-04-30 14:24:06 +0300 |
| commit | ac8e5600d3ad7a8ff9f76fc35dcaf4d155ebce66 (patch) | |
| tree | b13c904ef13453eef76278dd48d4f5b80f6e4c59 /Software/Embedded_SW | |
| parent | 594aa33b9a0689a8b75e5b0ea87a4b6fc01a3deb (diff) | |
| parent | 2308c8ba08fc31bb0451ff60341fd951b2b84b06 (diff) | |
| download | Tango-ac8e5600d3ad7a8ff9f76fc35dcaf4d155ebce66.tar.gz Tango-ac8e5600d3ad7a8ff9f76fc35dcaf4d155ebce66.zip | |
Merge branch 'master' of https://twinetfs.visualstudio.com/Tango/_git/Tango
Diffstat (limited to 'Software/Embedded_SW')
9 files changed, 59 insertions, 21 deletions
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 2ecf83560..111db2ac7 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 @@ -893,18 +893,18 @@ uint8_t Init_Machine_Leds() } -bool Is_Cartridge_Present(PANEL_BUTTON_OR_CRAT_ID Cartridge)//TODO Update the polarity!!! +bool Is_Cartridge_Present(PANEL_BUTTON_OR_CRAT_ID Cartridge) { - bool IsCartPresent = false; + bool IsCartPresent = true; if((Cartridge == CART_1) && (F3_CARTx_PRES_02_Direct & BIT7)) - IsCartPresent = true; + IsCartPresent = false; else if((Cartridge == CART_2) && (F3_CARTx_PRES_02_Direct & BIT6)) - IsCartPresent = true; + IsCartPresent = false; else if((Cartridge == CART_3) && (F3_CARTx_PRES_02_Direct & BIT5)) - IsCartPresent = true; + IsCartPresent = false; return IsCartPresent; } 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 0f37af1b5..7422a797b 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 @@ -128,7 +128,7 @@ void MidTankPressureCorrection(double Offset) MidThankReadingOffset = Offset; } -double Calculate_Pressure(uint32_t VsampleInBits ) +double Calculate_Pressure(uint32_t VsampleInBits )//MidTank { double temp, VADC = 0.0 ,PKpa,VSensor,HighMeter,LiquidLitter; @@ -162,6 +162,48 @@ double Calculate_Pressure(uint32_t VsampleInBits ) return LiquidLitter; } +double Calculate_correction_MidTank_Pressure(uint32_t VsampleInBits ) +{ +/* + Assumptions: + B=(8.2±0.2)mV/mm for all sensors. + A is changed within ±50mV during full life cycle. + Aair - should be measured (@ Vpow=5V) and stored as calibrated value + Azero – estimated VOUT when level cartridge is equal to bottom surface of the midtank. + Azero= Aair + B*(10+20)=Aair+246 + VOLUME=Stank*(VOUT-Azero)/B= 0.1*73.9*( VOUT - Aair-246)/8.2 (mL) {VOUT – mV} + For not calibrated sensors (assembled at machines) Aair:=2554mV, so + VOLUME= 0.1*73.9*( VOUT - 2800)/8.2 (mL) + + */ + double temp, VADC = 0.0 ,VSensor,LiquidLitter; + + //---- VBits -> VADC ---- + + //ADC 12 bit -> 4096 -> 2.5V + + temp = VsampleInBits*2.5; + VADC = temp / 4096; + + //---- VADC -> VSensor --- + + //VADC = 1.96 - 10k( VSensor - 1.96) / 46.4k (from the electrical scheme) + // VSensor = 0 V -> VADC = 2.3824 V + // VSensor = 10 V -> VADC = 0.2272 V + + VSensor = (1.96- VADC) * 4.64 + 1.96; + + + VSensor*=1000; // mV + + temp= 0.1*73.9*( VSensor - 2800)/8.075;// (mL) // according to MidTank_Level4.pptx + + LiquidLitter = temp/1000;//Litter + + return LiquidLitter; +} + + void Enable_MidTank_Pressure_Reading(MidTank_t MidTank_ID) //0-7 { assert (MidTank_ID<NUM_OF_MIDTANKS); @@ -231,7 +273,9 @@ uint32_t Read_MidTank_Pressure_Sensor(MidTank_t MidTank_ID) //0-7 MidTank_Pressure_Bits[MidTank_ID] = VsampleInBits;//just for debug - MidTank_Pressure[MidTank_ID] = Calculate_Pressure(VsampleInBits) - MidThankReadingOffset; + //MidTank_Pressure[MidTank_ID] = Calculate_Pressure(VsampleInBits) - MidThankReadingOffset; + + MidTank_Pressure[MidTank_ID] = Calculate_correction_MidTank_Pressure(VsampleInBits);//use the Calibration correction equation return Status; } diff --git a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h index 3b9eba3d8..894f60c09 100644 --- a/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h +++ b/Software/Embedded_SW/Embedded/Drivers/Motors/Motor.h @@ -20,7 +20,7 @@ #define TimerMotors_t HardwareMotorType -#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_RLOADING + 1 // TODO After the integration with mulbery change to: +#define NUM_OF_MOTORS (HARDWARE_MOTOR_TYPE__MOTO_RLOADING + 1) // TODO After the integration with mulbery change to: //#define NUM_OF_MOTORS HARDWARE_MOTOR_TYPE__MOTO_SPARE1_1 diff --git a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h index 9028de45b..3a1c3ad5b 100644 --- a/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h +++ b/Software/Embedded_SW/Embedded/Drivers/SSI_Comm/SSI_Comm.h @@ -23,7 +23,7 @@ NUM_OF_ROTENC }RotEnc_t;*/ -#define NUM_OF_ROTENC HARDWARE_DANCER_TYPE__RightDancer+1 +#define NUM_OF_ROTENC (HARDWARE_DANCER_TYPE__RightDancer+1) void SSI1_Init(); diff --git a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c index 2256ebd34..2a7aef30a 100644 --- a/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c +++ b/Software/Embedded_SW/Embedded/Modules/AlarmHandling/AlarmHandling.c @@ -865,14 +865,14 @@ uint32_t AlarmHandlingLoop(uint32_t tick) value = Get_MidTank_Int100_Sensor(AlarmItem[Alarm_i].DeviceId); if (AlarmItem[Alarm_i].AlarmDirection == OVER_VALUE) { - if (value*100 > AlarmItem[Alarm_i].AlarmValue) + if (value > AlarmItem[Alarm_i].AlarmValue) { Status = true; } } else { - if (value*100 < AlarmItem[Alarm_i].AlarmValue) + if (value < AlarmItem[Alarm_i].AlarmValue) { Status = true; } diff --git a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c index 6a1821f4b..2b24f9832 100644 --- a/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c +++ b/Software/Embedded_SW/Embedded/Modules/Diagnostics/DiagnosticActions.c @@ -244,12 +244,6 @@ uint32_t SetDigitalOutRequestRequestFunc(MessageContainer* requestContainer) /* case INTERFACE_IOS__GPO_LED4: DataUpdated = request->value; break;*/ -/* case INTERFACE_IOS__GPO_BLOWER_PWM: - if (request->value == true) - Control_Dryer_Fan(START,75); - else - Control_Dryer_Fan(STOP, 0); - break;*/ case INTERFACE_IOS__VALVE_WASTE_TANK: if (request->value == true) Valve_Set(VALVE_MIXCHIP_WASTECH,1); diff --git a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h index 3c9c59f3e..b25c3e5c7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h +++ b/Software/Embedded_SW/Embedded/Modules/Heaters/Heaters.h @@ -5,7 +5,7 @@ #include "PMR/Hardware/HardwarePidControlType.pb-c.h" #include "heaters_ex.h" /******************** DEFINITIONS ********************************************/ -#define MAX_AC_HEATERS HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary+1 +#define MAX_AC_HEATERS (HARDWARE_PID_CONTROL_TYPE__DryerHeaterSecondary+1) #define MAX_TIMESLICES 200 extern uint32_t OutputProportionalSingleStep; //A/C Heaters step size from one decision point to another - in cpu clocks. 120000 = 1 millisecod diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h index 3e2a6aa40..97f3811c7 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread.h @@ -41,8 +41,8 @@ typedef struct }MotorControlConfig_t; -#define MAX_THREAD_FEED_MOTORS WINDER_MOTOR+1 -#define MAX_SYSTEM_DANCERS HARDWARE_DANCER_TYPE__RightDancer+1 +#define MAX_THREAD_FEED_MOTORS (WINDER_MOTOR+1) +#define MAX_SYSTEM_DANCERS (HARDWARE_DANCER_TYPE__RightDancer+1) extern TimerMotors_t ThreadMotorIdToMotorId[MAX_THREAD_MOTORS_NUM]; extern HardwareDancerType ThreadMotorIdToDancerId[MAX_THREAD_MOTORS_NUM]; diff --git a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h index d7ce917c0..91eedeb6b 100644 --- a/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h +++ b/Software/Embedded_SW/Embedded/Modules/Thread/Thread_ex.h @@ -9,7 +9,7 @@ #define WINDER_DANCER HARDWARE_DANCER_TYPE__LeftDancer #define POOLER_DANCER HARDWARE_DANCER_TYPE__MiddleDancer #define FEEDER_DANCER HARDWARE_DANCER_TYPE__RightDancer -#define NUM_OF_DANCERS HARDWARE_DANCER_TYPE__RightDancer+1 +#define NUM_OF_DANCERS (HARDWARE_DANCER_TYPE__RightDancer+1) //} DANCER_ENUM; typedef enum threadMotorsEnum { |
