LibDriver NTC
Loading...
Searching...
No Matches
driver_ntc.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_NTC_H
38#define DRIVER_NTC_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43#include <math.h>
44
45#ifdef __cplusplus
46extern "C"{
47#endif
48
54
59
63#ifndef NTC_FILTER_BUFFER_SIZE
64 #define NTC_FILTER_BUFFER_SIZE 32
65#endif
66
75
85
100
104typedef struct ntc_table_s
105{
107 float ohm;
109
113typedef struct ntc_handle_s
114{
115 uint8_t (*adc_init)(uint32_t *vcc_counter);
116 uint8_t (*adc_deinit)(void);
117 uint8_t (*adc_read)(uint32_t *counter, uint16_t len);
118 void (*delay_ms)(uint32_t ms);
119 void (*debug_print)(const char *const fmt, ...);
120 uint8_t inited;
121 uint8_t circuit;
122 uint32_t vcc_counter;
124 uint8_t algorithm;
125 float beta;
126 float r25_ohm;
127 double a;
128 double b;
129 double c;
131 uint16_t table_len;
132 uint8_t filter;
137 uint16_t filter_len;
138 uint16_t filter_pointer;
140
156
160
167
174#define DRIVER_NTC_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
175
182#define DRIVER_NTC_LINK_ADC_INIT(HANDLE, FUC) (HANDLE)->adc_init = FUC
183
190#define DRIVER_NTC_LINK_ADC_DEINIT(HANDLE, FUC) (HANDLE)->adc_deinit = FUC
191
198#define DRIVER_NTC_LINK_ADC_READ(HANDLE, FUC) (HANDLE)->adc_read = FUC
199
206#define DRIVER_NTC_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
207
214#define DRIVER_NTC_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
215
219
226
227
236uint8_t ntc_info(ntc_info_t *info);
237
249uint8_t ntc_init(ntc_handle_t *handle);
250
261uint8_t ntc_deinit(ntc_handle_t *handle);
262
279uint8_t ntc_read_temperature(ntc_handle_t *handle, float *ohm, float *degrees_celsius);
280
295uint8_t ntc_calculate_temperature(ntc_handle_t *handle, float ohm, float *degrees_celsius);
296
312uint8_t ntc_calculate_temperature_with_filter(ntc_handle_t *handle, float *ohm, uint16_t len, float *degrees_celsius);
313
331uint8_t ntc_set_algorithm(ntc_handle_t *handle, ntc_algorithm_t algorithm);
332
343uint8_t ntc_get_algorithm(ntc_handle_t *handle, ntc_algorithm_t *algorithm);
344
356
367uint8_t ntc_get_algorithm_beta_formula_beta_value(ntc_handle_t *handle, float *beta);
368
379uint8_t ntc_set_algorithm_beta_formula_r25_ohm(ntc_handle_t *handle, float r25_ohm);
380
391uint8_t ntc_get_algorithm_beta_formula_r25_ohm(ntc_handle_t *handle, float *r25_ohm);
392
405uint8_t ntc_set_algorithm_steinhart_hart(ntc_handle_t *handle, double a, double b, double c);
406
419uint8_t ntc_get_algorithm_steinhart_hart(ntc_handle_t *handle, double *a, double *b, double *c);
420
435uint8_t ntc_load_algorithm_lookup_table(ntc_handle_t *handle, const ntc_table_t *table, uint16_t table_len);
436
447uint8_t ntc_set_circuit(ntc_handle_t *handle, ntc_circuit_t circuit);
448
459uint8_t ntc_get_circuit(ntc_handle_t *handle, ntc_circuit_t *circuit);
460
471uint8_t ntc_set_circuit_fixed_resistor(ntc_handle_t *handle, float r_fixed_ohm);
472
483uint8_t ntc_get_circuit_fixed_resistor(ntc_handle_t *handle, float *r_fixed_ohm);
484
488
495
506uint8_t ntc_set_filter(ntc_handle_t *handle, ntc_filter_t filter);
507
518uint8_t ntc_get_filter(ntc_handle_t *handle, ntc_filter_t *filter);
519
529uint8_t ntc_reset_filter(ntc_handle_t *handle);
530
546uint8_t ntc_set_filter_first_order_lag(ntc_handle_t *handle, float alpha);
547
563uint8_t ntc_set_filter_median_length(ntc_handle_t *handle, uint16_t length);
564
579uint8_t ntc_set_filter_anti_spike_average_length(ntc_handle_t *handle, uint16_t length);
580
595uint8_t ntc_set_filter_moving_average_length(ntc_handle_t *handle, uint16_t length);
596
612uint8_t ntc_set_filter_weighted_moving_average_length(ntc_handle_t *handle, float *weight, uint16_t length);
613
627uint8_t ntc_set_filter_limiting(ntc_handle_t *handle, float degrees_celsius);
628
650uint8_t ntc_set_filter_kalman(ntc_handle_t *handle,
651 float q_process_noise_covariance,
652 float r_measurement_noise_covariance,
653 float p_estimation_error_covariance,
654 float x_estimated_value);
655
659
663
664#ifdef __cplusplus
665}
666#endif
667
668#endif
uint8_t ntc_read_temperature(ntc_handle_t *handle, float *ohm, float *degrees_celsius)
read temperature
uint8_t ntc_set_algorithm_steinhart_hart(ntc_handle_t *handle, double a, double b, double c)
set algorithm steinhart hart
Definition driver_ntc.c:831
uint8_t ntc_set_circuit(ntc_handle_t *handle, ntc_circuit_t circuit)
set circuit
Definition driver_ntc.c:576
uint8_t ntc_load_algorithm_lookup_table(ntc_handle_t *handle, const ntc_table_t *table, uint16_t table_len)
load algorithm lookup table
Definition driver_ntc.c:893
uint8_t ntc_set_algorithm(ntc_handle_t *handle, ntc_algorithm_t algorithm)
set algorithm
Definition driver_ntc.c:673
#define NTC_FILTER_BUFFER_SIZE
ntc filter buffer size definition
Definition driver_ntc.h:64
ntc_filter_t
ntc filter enumeration definition
Definition driver_ntc.h:90
uint8_t ntc_get_circuit_fixed_resistor(ntc_handle_t *handle, float *r_fixed_ohm)
get circuit fixed resistor
Definition driver_ntc.c:654
uint8_t ntc_info(ntc_info_t *info)
get chip's information
uint8_t ntc_set_algorithm_beta_formula_r25_ohm(ntc_handle_t *handle, float r25_ohm)
set algorithm beta formula r25 ohm
Definition driver_ntc.c:777
ntc_algorithm_t
ntc algorithm enumeration definition
Definition driver_ntc.h:80
uint8_t ntc_init(ntc_handle_t *handle)
initialize the chip
ntc_circuit_t
ntc circuit enumeration definition
Definition driver_ntc.h:71
uint8_t ntc_get_circuit(ntc_handle_t *handle, ntc_circuit_t *circuit)
get circuit
Definition driver_ntc.c:602
uint8_t ntc_get_algorithm_beta_formula_beta_value(ntc_handle_t *handle, float *beta)
get algorithm beta formula beta value
Definition driver_ntc.c:751
uint8_t ntc_calculate_temperature_with_filter(ntc_handle_t *handle, float *ohm, uint16_t len, float *degrees_celsius)
calculate temperature with filter
struct ntc_info_s ntc_info_t
ntc information structure definition
uint8_t ntc_get_algorithm(ntc_handle_t *handle, ntc_algorithm_t *algorithm)
get algorithm
Definition driver_ntc.c:699
uint8_t ntc_set_algorithm_beta_formula_beta_value(ntc_handle_t *handle, float beta)
set algorithm beta formula beta value
Definition driver_ntc.c:725
uint8_t ntc_get_algorithm_beta_formula_r25_ohm(ntc_handle_t *handle, float *r25_ohm)
get algorithm beta formula r25 ohm
Definition driver_ntc.c:803
struct ntc_handle_s ntc_handle_t
ntc handle structure definition
uint8_t ntc_get_algorithm_steinhart_hart(ntc_handle_t *handle, double *a, double *b, double *c)
get algorithm steinhart hart
Definition driver_ntc.c:861
uint8_t ntc_deinit(ntc_handle_t *handle)
close the chip
struct ntc_table_s ntc_table_t
ntc table structure definition
uint8_t ntc_calculate_temperature(ntc_handle_t *handle, float ohm, float *degrees_celsius)
calculate temperature
uint8_t ntc_set_circuit_fixed_resistor(ntc_handle_t *handle, float r_fixed_ohm)
set circuit fixed resistor
Definition driver_ntc.c:628
@ NTC_FILTER_MEDIAN
Definition driver_ntc.h:93
@ NTC_FILTER_ANTI_SPIKE_AVERAGE
Definition driver_ntc.h:94
@ NTC_FILTER_FIRST_ORDER_LAG
Definition driver_ntc.h:92
@ NTC_FILTER_NONE
Definition driver_ntc.h:91
@ NTC_FILTER_MOVING_AVERAGE
Definition driver_ntc.h:95
@ NTC_FILTER_KALMAN
Definition driver_ntc.h:98
@ NTC_FILTER_WEIGHTED_MOVING_AVERAGE
Definition driver_ntc.h:96
@ NTC_FILTER_LIMITING
Definition driver_ntc.h:97
@ NTC_ALGORITHM_LOOKUP_TABLE
Definition driver_ntc.h:83
@ NTC_ALGORITHM_BETA_FORMULA
Definition driver_ntc.h:81
@ NTC_ALGORITHM_STEINHART_HART
Definition driver_ntc.h:82
@ NTC_CIRCUIT_VCC_R_NTC_GND
Definition driver_ntc.h:73
@ NTC_CIRCUIT_VCC_NTC_R_GND
Definition driver_ntc.h:72
uint8_t ntc_set_filter_first_order_lag(ntc_handle_t *handle, float alpha)
set filter first order lag
Definition driver_ntc.c:995
uint8_t ntc_set_filter_moving_average_length(ntc_handle_t *handle, uint16_t length)
set filter moving average length
uint8_t ntc_get_filter(ntc_handle_t *handle, ntc_filter_t *filter)
get filter
Definition driver_ntc.c:976
uint8_t ntc_set_filter_limiting(ntc_handle_t *handle, float degrees_celsius)
set filter limiting
uint8_t ntc_set_filter_median_length(ntc_handle_t *handle, uint16_t length)
set filter median length
uint8_t ntc_reset_filter(ntc_handle_t *handle)
reset the filter
uint8_t ntc_set_filter_anti_spike_average_length(ntc_handle_t *handle, uint16_t length)
set filter anti spike average length
uint8_t ntc_set_filter(ntc_handle_t *handle, ntc_filter_t filter)
set filter
Definition driver_ntc.c:950
uint8_t ntc_set_filter_kalman(ntc_handle_t *handle, float q_process_noise_covariance, float r_measurement_noise_covariance, float p_estimation_error_covariance, float x_estimated_value)
set filter kalman
uint8_t ntc_set_filter_weighted_moving_average_length(ntc_handle_t *handle, float *weight, uint16_t length)
set filter weighted moving average length
ntc handle structure definition
Definition driver_ntc.h:114
float buf_flt[NTC_FILTER_BUFFER_SIZE]
Definition driver_ntc.h:134
uint16_t filter_pointer
Definition driver_ntc.h:138
uint32_t buf[NTC_FILTER_BUFFER_SIZE]
Definition driver_ntc.h:133
uint8_t inited
Definition driver_ntc.h:120
const ntc_table_t * table
Definition driver_ntc.h:130
uint16_t table_len
Definition driver_ntc.h:131
float r_fixed_ohm
Definition driver_ntc.h:123
void(* delay_ms)(uint32_t ms)
Definition driver_ntc.h:118
uint8_t(* adc_read)(uint32_t *counter, uint16_t len)
Definition driver_ntc.h:117
float cache_flt[NTC_FILTER_BUFFER_SIZE]
Definition driver_ntc.h:135
uint8_t circuit
Definition driver_ntc.h:121
uint8_t(* adc_init)(uint32_t *vcc_counter)
Definition driver_ntc.h:115
float param_flt[NTC_FILTER_BUFFER_SIZE]
Definition driver_ntc.h:136
uint8_t algorithm
Definition driver_ntc.h:124
uint32_t vcc_counter
Definition driver_ntc.h:122
void(* debug_print)(const char *const fmt,...)
Definition driver_ntc.h:119
uint8_t(* adc_deinit)(void)
Definition driver_ntc.h:116
uint8_t filter
Definition driver_ntc.h:132
uint16_t filter_len
Definition driver_ntc.h:137
ntc information structure definition
Definition driver_ntc.h:145
float temperature_max
Definition driver_ntc.h:153
float supply_voltage_max_v
Definition driver_ntc.h:150
uint32_t driver_version
Definition driver_ntc.h:154
float temperature_min
Definition driver_ntc.h:152
float max_current_ma
Definition driver_ntc.h:151
char manufacturer_name[32]
Definition driver_ntc.h:147
float supply_voltage_min_v
Definition driver_ntc.h:149
char interface[8]
Definition driver_ntc.h:148
char chip_name[32]
Definition driver_ntc.h:146
ntc table structure definition
Definition driver_ntc.h:105
float degrees_celsius
Definition driver_ntc.h:106