| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /*********************************************************************************************************
- * Module : Temprature.c
- * Abstract : Temprature module
- * Version : 1.0.0
- * Author : Leopul(COPYRIGHT 2025 - 2027 Leopul. All rights reserved.)
- * Complete : 2025-02-16
- * Content : None
- * Note : None
- *********************************************************************************************************/
- #include "Temprature.h"
- #include "Adc.h"
- #include "main.h"
- #include "math.h"
- /****************************************************************
- *
- * NXFT15XH103
- *
- * T(K) = (662.666 -45.389*ln(R)+0.069*(ln(R))^3)
- * T(C) = T(K) - 273.15
- *
- *****************************************************************/
- static float get_temp(void);
- #define GATHER_MAX 2000
- #define VREF 33
- #define V_HOT(ad) (((ad * 1000)>>12) * VREF / 10.0 /1000.0)
- #define R_HOT(ad) ((V_HOT(ad)*10000.0) / ((VREF/10.0)-(2.0*V_HOT(ad))))
- #define T_TEMP(res) ((662.666 - (45.389 * log(res)) + (0.069 * log(res)*log(res)*log(res))) - 273.15)
- //static uint32_t gather_count = 0;
- //static uint32_t all_get_ad = 0;
- static float get_temp(void)
- {
- sts_data_t *data = get_sts();
- uint32_t all_get_ad = 0;
- float temprature = 0.0;
-
- for(uint32_t i = 0; i < GATHER_MAX ;i++)
- {
- all_get_ad += get_adc();
- }
- all_get_ad /= GATHER_MAX;
- float v_hot = V_HOT(all_get_ad);
- if(v_hot < 3.3)
- {
- float i_current = (3.3 - v_hot) / (10000);
- float res = v_hot / i_current;
- temprature = T_TEMP(res);
- if(((uint32_t)res)>=598 && ((uint32_t)res) <= 197000)
- {
- data->m_data.temprature_flag = TEMP_ONLINE;
- data->m_data.temprature = temprature * 100;
- }else
- {
- data->m_data.temprature_flag = TEMP_INLINE;
- data->m_data.temprature =(-88.88 *100);
- }
- }else
- {
- data->m_data.temprature_flag = TEMP_INLINE;
- data->m_data.temprature =(-88.88 *100);
- }
- return temprature;
- }
- void temp_init(void)
- {
- adc_init();
- sts_data_t *data = get_sts();
- data->read_temp = get_temp;
- }
|