/************************************************************************** * * Copyright (c) 2020-2023 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 DrainPump.h * * @author (last) Dara Navaei * @date (last) 11-Jan-2023 * * @author (original) Sean * @date (original) 08-Apr-2020 * ***************************************************************************/ #ifndef __DRAIN_PUMP_H__ #define __DRAIN_PUMP_H__ #include "DGCommon.h" /** * @defgroup DrainPump DrainPump * @brief Drain Pump monitor/controller module. Controls and monitors the drain pump. * Drain pump manufacturer: Diener, PN: 01006-PM-0 Rev A. * The pump shall produce flow rates of 100-2000 ml/min at 1 bar differential pressure. * The motor used shall be either Diener part number MA0250 or MA0297. * * @addtogroup DrainPump * @{ */ // ********** public definitions ********** #define MIN_DRAIN_PUMP_RPM 300 ///< Minimum RPM target for drain pump (though zero is allowed if turning pump off). #define MAX_DRAIN_PUMP_RPM 3000 ///< Maximum RPM target for drain pump. /// Enumeration of drain pump speed feedbacks typedef enum DrainPump_Speed_Feedbacks { DRAIN_PUMP_HALL_SNSR_FB = 0, ///< Drain pump hall sensor feedback. DRAIN_PUMP_MAXON_SNSR_FB, ///< Drain pump Maxon sensor feedback. NUM_OF_DRAIN_PUMP_SNSR_FB ///< Number of drain pump sensor feedbacks. } DRAIN_PUMP_SPEED_FB_SNSR_T; /// Drain pump data publish typedef struct { U32 rpmSetPoint; ///< Drain pump speed set point (for open loop). U32 pumpDACSet; ///< Drain pump DAC set value. U32 drainPumpState; ///< Drain pump state machine state. U32 drainPumpHallRPM; ///< Drain pump current RPM from Hall sensor. F32 trgtOutletFlowLPM; ///< Drain pump target outlet flow in L/min. F32 drainPumpCurrentA; ///< Drain pump current in amps. U32 drainPumpDirection; ///< Drain pump direction. U32 drainPumpMaxonRPM; ///< Drain pump current RPM from Maxon board. } DRAIN_PUMP_DATA_T; // ********** public function prototypes ********** void initDrainPump( void ); void execDrainPumpMonitor( void ); void execDrainPumpController( void ); SELF_TEST_STATUS_T execDrainPumpSelfTest( void ); BOOL setDrainPumpTargetRPM( U32 rpm ); BOOL setDrainPumpTargetRPMDelayed( U32 rpm, U32 delayMs ); BOOL setDrainPumpTargetOutletFlowLPM( F32 flow ); F32 getDrainPumpTargetOutletFlowLPM( void ); void signalDrainPumpHardStop( void ); U32 getDrainPumpTargetRPM( void ); U32 getDrainPumpMeasuredRPM( DRAIN_PUMP_SPEED_FB_SNSR_T sensor ); BOOL isDrainPumpOn( void ); F32 getFlushLineVolumeL( void ); BOOL testSetDrainPumpDataPublishIntervalOverride( U32 value ); BOOL testResetDrainPumpDataPublishIntervalOverride( void ); BOOL testSetTargetDrainPumpRPM( U32 value ); BOOL testSetTargetDrainPumpOutletFlowLPM( F32 value ); BOOL testSetDrainPumpMeasuredRPMOverride( U32 sensor, U32 value ); BOOL testResetDrainPumpMeasuredRPMOverride( U32 sensor ); BOOL testSetDrainPumpMeasuredCurrentOverride( F32 value ); BOOL testResetDrainPumpMeasuredCurrentOverride( void ); BOOL testSetDrainPumpMeasuredDirectionOverride( U32 value ); BOOL testResetDrainPumpMeasuredDirectionOverride( void ); /**@}*/ #endif