Index: firmware/App/Drivers/InternalADC.c =================================================================== diff -u -r8467f8ff09e382e0991f14d02683080dc811e24e -r5a36a768d11cc597a36b894c1fb3a5e5590130f1 --- firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 8467f8ff09e382e0991f14d02683080dc811e24e) +++ firmware/App/Drivers/InternalADC.c (.../InternalADC.c) (revision 5a36a768d11cc597a36b894c1fb3a5e5590130f1) @@ -37,12 +37,12 @@ INT_ADC_RO_PUMP_OUTLET_PRESSURE, // 1 INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE, // 2 INT_ADC_DRAIN_PUMP_INLET_PRESSURE, // 3 - INT_ADC_NOT_USED, // 4 + INT_ADC_MAIN_24_VOLTS, // 4 INT_ADC_FPGA_1_8_VOLTS, // 5 INT_ADC_FPGA_1_VOLT, // 6 INT_ADC_SENSORS_3_3_VOLTS, // 7 INT_ADC_PROCESSOR_1_8_VOLTS, // 8 - INT_ADC_SENSORS_6_VOLTS, // 9 + INT_ADC_POWER_SUPPLY_GATE_DRIVER, // 9 INT_ADC_SENSORS_5_VOLTS, // 10 INT_ADC_LOGIC_5_VOLTS, // 11 INT_ADC_3_3_VOLTS, // 12 @@ -59,6 +59,35 @@ INT_ADC_POWER_SUPPLY_2_THERMISTOR, // 23 }; +const F32 ADC_CHANNEL_READ_TO_UNITS[ NUM_OF_INT_ADC_CHANNELS ] = +{ + 0.0, // - INT_ADC_NOT_USED + 0.06438104, // PSIA- INT_ADC_RO_PUMP_INLET_PRESSURE + 0.06438104, // PSIA- INT_ADC_RO_PUMP_OUTLET_PRESSURE + 0.06438104, // PSIA- INT_ADC_DRAIN_PUMP_OUTLET_PRESSURE + 0.06438104, // PSIA- INT_ADC_DRAIN_PUMP_INLET_PRESSURE + 1.0, // ? - INT_ADC_CONCENTRATE_PUMP_1 // TODO - get units and conversion for these 2 channels + 1.0, // ? - INT_ADC_CONCENTRATE_PUMP_2 + 0.00700441, // V - INT_ADC_PRIMARY_HEATER_24_VOLTS (varies inversely with PWM for secondary element) + 0.00763285, // V - INT_ADC_TRIMMER_HEATER_24_VOLTS (varies inversely with PWM) + 0.001221, // V - INT_ADC_BOARD_THERMISTOR + 0.0007326, // V - INT_ADC_FPGA_1_8_VOLTS + 0.0007326, // V - INT_ADC_FPGA_1_VOLT + 0.0007326, // V - INT_ADC_PROCESSOR_1_8_VOLTS + 0.0007326, // V - INT_ADC_PROCESSOR_1_2_VOLTS + 0.00117296, // V - INT_ADC_SENSORS_3_3_VOLTS + 0.0014652, // V - INT_ADC_SENSORS_5_VOLTS + 0.00700441, // V - INT_ADC_MAIN_24_VOLTS + 0.0014652, // V - INT_ADC_LOGIC_5_VOLTS + 0.00117296, // V - INT_ADC_3_3_VOLTS + 0.00117296, // V - INT_ADC_REFERENCE_VOLTAGE (3V) + 0.0014652, // V - INT_ADC_REF_IN1 (3V) + 0.0014652, // V - INT_ADC_REF_IN2 (3V) + 0.001221, // V - INT_ADC_POWER_SUPPLY_1_THERMISTOR + 0.001221, // V - INT_ADC_POWER_SUPPLY_2_THERMISTOR + 0.00304608 // V - INT_ADC_POWER_SUPPLY_GATE_DRIVER (5V) +}; + // ********** private data ********** static adcData_t adcRawReadings[ NUM_OF_INT_ADC_CHANNELS ]; ///< Buffer holds latest adc channel readings. @@ -185,4 +214,29 @@ return result; } +/*********************************************************************//** + * @brief + * The getIntADCVoltageConverted function gets the latest average voltage + * (converted per transfer function) for a given channel. + * @details Inputs: adcReadingsAvgs[], ADC_CHANNEL_READ_TO_UNITS[] + * @details Outputs: none + * @param channel adc channel to retrieve a converted voltage for + * @return average converted voltage for the given channel + *************************************************************************/ +F32 getIntADCVoltageConverted( INT_ADC_CHANNEL_T channel ) +{ + F32 result = 0.0; + + if ( channel < NUM_OF_INT_ADC_CHANNELS ) + { + result = (F32)adcReadingsAvgs[ channel ] * ADC_CHANNEL_READ_TO_UNITS[ channel ]; + } + else + { + SET_ALARM_WITH_2_U32_DATA( ALARM_ID_DG_SOFTWARE_FAULT, SW_FAULT_ID_INT_ADC_INVALID_CHANNEL_REQUESTED, channel ) + } + + return result; +} + /**@}*/