/************************************************************************** * * Copyright (c) 2024-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 PressureCommon.c * * @author (last) Vinayakam Mani * @date (last) 13-Sep-2024 * * @author (original) Sean * @date (original) 22-Aug-2024 * ***************************************************************************/ #include "PressureCommon.h" /** * @addtogroup PressureCommon * @{ */ // ********** private definitions ********** #define PRESSURE_FS ( 14746.0F ) ///< Pressure sensor full scale output. #define PRESSURE_ZERO ( 1638.0F ) ///< Pressure sensor zero value. #define PRESSURE_FS_MINUS_ZERO ( PRESSURE_FS - PRESSURE_ZERO ) ///< Pressure sensor fullscale and zero difference. #define PRESSURE_TEMP_RESOLUTION ( 2047.0F ) ///< Pressure sensor temperature resoultion 2^11 bit equals to 2047. #define PRESSURE_TEMP_MULTIPLIER ( 200.0F ) ///< Pressure sensor multiplier #define PRESSURE_TEMP_OFFSET ( 50.0F ) ///< Pressure sensor temperature offset. // ********** private data ********** // ********** private function prototypes ********** /*********************************************************************//** * @brief * The convertPressureReading function converts a raw pressure ADC * reading from a pressure sensor to desired units based on given min and * max range of values. * @details \b Inputs: none * @details \b Outputs: none * @param counts Pressure sensor reading (in counts) read from FPGA. * @param min Minimum pressure range in desired units * @param max Maximum pressure range in desired units * @return Pressure reading in desired units *************************************************************************/ F32 convertPressureReading( S16 counts, F32 min, F32 max ) { // Convert raw pressure counts to desired units F32 pressure_bar = ( ( max - min ) * ( (F32)counts - PRESSURE_ZERO ) / PRESSURE_FS_MINUS_ZERO ) + min; return pressure_bar; } /*********************************************************************//** * @brief * The convertPressureTempReading2DegC function converts a raw temperature * ADC reading from a pressure sensor to Celsius. * @details \b Inputs: none * @details \b Outputs: none * @return Temperature reading in Celsius *************************************************************************/ F32 convertPressureTempReading2DegC( S16 counts ) { F32 degC; // Convert raw pressure sensor temperatures to deg C degC = ( ( (F32)counts / PRESSURE_TEMP_RESOLUTION ) * PRESSURE_TEMP_MULTIPLIER ) - PRESSURE_TEMP_OFFSET; return degC; } /**@}*/