| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- #include "os/os_types.h"
- #include "bsp/bsp.h"
- #include "bsp/bsp_driver.h"
- #include "libs/utils.h"
- #define KTY_TEMP_INTVAL 10
- #define KTY_TEMP_OFFSET 4
- static const u16 kty_table[] = {
- 359, 391, 424, 460, 498, 538, 581, 603, 626, 672, 722, 773, 826, 882,
- 940, 1000, 1062, 1127, 1194, 1262, 1334, 1407, 1482, 1560, 1640, 1722, 1807, 1893,
- 1982, 2073, 2166, 2261, 2357, 2452, 2624 };
- #define NTC_TEMP_INTVAL 10
- #define NTC_TEMP_OFFSET 1
- static const u16 ntc_table[] = {
- 43117, 27493, 18015, 12100, 8300, 5825, 4160, 3023, 2232, 1672, 1270, 977, 761, 599,
- 476, 382, 310, 254, 210, 174, 146, 123, 105, 90, 77, 66, 58, 50, 44};
- s16 ntc_get_mos_temp(u16 r) {
- int i = 0;
- for (; i < ARRAY_SIZE(ntc_table); i++) {
- if (r >= ntc_table[i]) {
- break;
- }
- }
- if (i == 0) {
- return -40;
- }else if (i >= ARRAY_SIZE(ntc_table)) {
- return 251;
- }else if (r == ntc_table[i]) {
- return (s16)((i - NTC_TEMP_OFFSET) * NTC_TEMP_INTVAL);
- }
- int delta = ntc_table[i-1] - ntc_table[i];
- float detla_tmp = (float)NTC_TEMP_INTVAL / (float)delta * (float)(r - ntc_table[i]); //插值
- return (s16)((i-NTC_TEMP_OFFSET)*NTC_TEMP_INTVAL - detla_tmp);
- }
- s16 ntc_get_motor_temp(u16 r) {
- int i = 0;
- for (; i < ARRAY_SIZE(kty_table); i++) {
- if (r <= kty_table[i]) {
- break;
- }
- }
- if (i == 0) {
- return -10;
- }else if (i >= ARRAY_SIZE(kty_table)) {
- return 300;
- }else if (r == kty_table[i]) {
- return (s16)((i - KTY_TEMP_OFFSET) * KTY_TEMP_INTVAL);
- }
- int delta = kty_table[i] - kty_table[i - 1];
- float detla_tmp = (float)KTY_TEMP_INTVAL / (float)delta * (float)(r - kty_table[i-1]); //插值
- return (s16)((i-1-KTY_TEMP_OFFSET)*KTY_TEMP_INTVAL + detla_tmp);
- }
|