/************************************************************************** * * Copyright (c) 2020-2024 Diality Inc. - All Rights Reserved. * * THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN * WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. * * @file ROPump.h * * @author (last) Sean Nash * @date (last) 12-Nov-2024 * * @author (original) Sean Nash * @date (original) 12-Nov-2024 * ***************************************************************************/ #ifndef __RO_PUMP_H__ #define __RO_PUMP_H__ #include "FluidPump.h" #include "FPCommon.h" /** * @defgroup ROPump ROPump * @brief RO Pump controller unit. Controls and monitors the RO pump. * The diaphragm (RO) pump is manufactured by Aquatec, PN: 5889-2MM1-V724DY. * * @addtogroup ROPump * @{ */ // ********** public definitions ********** #define MAX_RO_FLOWRATE_MLPM 1500 ///< Maximum target RO flow rate in L/min. #define MIN_RO_FLOWRATE_MLPM 0 ///< Minimum target RO flow rate in L/min. #define MAX_RO_PRESSURE_PSI 120.0F ///< Maximum allowed pressure that the RO pump can go to. #define MIN_RO_PRESSURE_PSI 10.0F ///< Minimum allowed pressure that the RO pump can go to. /// RO pump data record. typedef struct { U32 p12PumpState; ///< RO pump current state. U32 p12PumpDutyCycle; ///< RO pump duty cycle. U32 p12PumpFBDutyCycle; ///< RO pump feedback duty cycle. F32 p12PumpSpeed; ///< RO pump speed (RPM). F32 p12TargetPressure; ///< RO pump target pressure for control. F32 p12TargetFlow; ///< RO pump target flow ( in mL/min ) for control. F32 p12TargetDutyCycle; ///< RO pump target duty cycle for open loop control. } RO_PUMP_DATA_T; // ********** public function prototypes ********** void initROPump( void ); void execROPumpMonitor( void ); void execROPumpController( void ); void signalROPumpHardStop( void ); BOOL isROPumpRunning( void ); BOOL setROPumpTargetFlowRateMLPM( U32 roFlowRate ); BOOL setROPumpTargetPressure( F32 roPressure ); BOOL setROPumpTargetDutyCycle( F32 duty ); F32 getROFeedbackDutyCycle( void ); U32 getTargetROPumpFlowRateMLPM( void ); F32 getTargetROPumpPressure( void ); BOOL testROPumpDataPublishIntervalOverride( MESSAGE_T *message ); BOOL testROPumpTargetPressureOverride( MESSAGE_T *message ); BOOL testROPumpTargetFlowOverride( MESSAGE_T *message ); /**@}*/ #endif