| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /**
- * @file ALGO_Temperature_ATY.c
- *
- * @param Project ALGO_Algorithm_ATY_LIB
- *
- * @author ATY
- *
- * @copyright
- * - Copyright 2017 - 2023 MZ-ATY
- * - This code follows:
- * - MZ-ATY Various Contents Joint Statement -
- * <a href="https://mengze.top/MZ-ATY_VCJS">
- * https://mengze.top/MZ-ATY_VCJS</a>
- * - CC 4.0 BY-NC-SA -
- * <a href="https://creativecommons.org/licenses/by-nc-sa/4.0/">
- * https://creativecommons.org/licenses/by-nc-sa/4.0/</a>
- * - Your use will be deemed to have accepted the terms of this statement.
- *
- * @brief Familiar functions of NTC or others temperature calc
- *
- * @version
- * - 1_01_230107 > ATY
- * -# Preliminary version, first Release
- ********************************************************************************
- */
- #ifndef __ALGO_Temperature_ATY_C
- #define __ALGO_Temperature_ATY_C
- #include "ALGO_Temperature_ATY.h"
- /******************************* For user *************************************/
- /******************************************************************************/
- /**
- * @brief Calculate temperature from ntc resistance
- * @param Rntc Current NTC resistance value
- * @param R25 NTC standard resistance value at 25C
- * @param B B value of NTC
- * @return Current temperature in Celsius
- * @note T25: Kelvin temperature at 25C = 298.15 = ALGO_TEMP_CtoT(25)
- * R25: NTC standard resistance value at 25C like 10K,5K,100K...
- * B: B value of NTC like 3435,3950...
- * Rntc: Current NTC resistance value
- * Tn: Actual Kelvin temperature(Cn = Tn-273.15)
- * B = (lnR25 - lnRntc)/(1/T25 - 1/Tn)
- */
- float ALGO_ResToKelvinTemp(float Rntc, float R25, float B)
- {
- float Tn = 0.0;
- float Cn = 0.0;
- float temp_f[2];
- temp_f[0] = (ALGO_MATH_LogLn(R25) - ALGO_MATH_LogLn(Rntc)) / B;
- temp_f[1] = (1 / ALGO_TEMP_CtoT(25)) - temp_f[0];
- Tn = 1 / temp_f[1];
- Cn = ALGO_TEMP_TtoC(Tn);
- return Cn;
- }
- /**
- * @brief Calculate temperature from ntc resistance
- * @param vADC ADC voltage in mV
- * @param vRef NTC ref voltage in mV
- * @param rRefK ref resistance in kOhm
- * @param R25 NTC standard resistance value at 25C
- * @param B B value of NTC
- * @param rRefPos ref res psition, 1 for pull up, 0 for pull down(for ntc)
- * @return Current temperature in Celsius
- * @note T25: Kelvin temperature at 25C = 298.15 = ALGO_TEMP_CtoT(25)
- * R25: NTC standard resistance value at 25C like 10K,5K,100K...
- * B: B value of NTC like 3435,3950...
- * Rntc: Current NTC resistance value
- * Tn: Actual Kelvin temperature(Cn = Tn-273.15)
- * B = (lnR25 - lnRntc)/(1/T25 - 1/Tn)
- */
- float ALGO_VolToKelvinTemp(float vADC, float vRef, float rRefK, float R25, float B, uint8_t rRefPos)
- {
- if(rRefPos == 1){
- return ALGO_ResToKelvinTemp(ALGO_VoltageToResDown(vADC, vRef, rRefK), R25, B);
- }
- else{
- return ALGO_ResToKelvinTemp(ALGO_VoltageToResUp(vADC, vRef, rRefK), R25, B);
- }
- }
- // resultTemp = ALGO_ResToKelvinTemp(ALGO_VoltageToResDown(resultTemp, vref_t, 10), 1, 3200);
- #endif /* __ALGO_Temperature_ATY_C */
- /******************************** End Of File *********************************/
|