-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathArduinoNTCLibary.cpp
More file actions
145 lines (119 loc) · 2.99 KB
/
ArduinoNTCLibary.cpp
File metadata and controls
145 lines (119 loc) · 2.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
#include "ArduinoNTCLibary.h"
#include "math.h"
#include "Statistics.h"
NTC :: NTC(){
last_temp = 0;
}
NTC :: NTC(bool is_queue_mode){
is_queue= is_queue_mode;
if(is_queue){
}
}
void NTC :: setNTCPin(int _pin){
ntc_pin = _pin;
pinMode(ntc_pin,INPUT);
}
//Pin of Probe Control
bool NTC :: getNTCStatus(){
double resistance = measureNTCResistance(3);
if(resistance<5000.00){
return true;
}
return false;
}
//Series resistance's methods
void NTC :: setReferanceResistance(float _resistance){
ref_resistance = _resistance;
}
float NTC :: getReferanceResistance(){
return ref_resistance;
}
//MCU's or other ADC supplyers values
void NTC :: setReferanceMaxADC(int _adc){
ref_max_adc = _adc;
}
int NTC :: getReferanceMaxADC(){
return ref_max_adc;
}
//MCU's or other ADC supplyers values
void NTC :: setReferanceMaxVoltageOfADC(float _voltage){
ref_max_voltage = _voltage;
}
float NTC :: getReferanceMaxVoltageOfADC(){
return ref_max_voltage;
}
//
void NTC :: setReferanceBetaConfidency(float _confidency_val){
ref_beta_confidency = _confidency_val;
}
float NTC :: getReferanceBetaConfidency(){
return ref_beta_confidency;
}
//
void NTC :: setReferanceResistanceAt25C(float _resistance){
ref_r25 = _resistance;
}
float NTC :: getReferanceResistanceAt25C(){
return ref_r25;
}
//
float NTC :: measureNTCVoltage(){
float voltage = 0;
for(int i=0; i<10; i++){
voltage += analogRead(ntc_pin);
}
voltage = voltage / 10;
voltage = (ref_max_voltage * voltage) / ref_max_adc;
return voltage;
}
float NTC :: measureNTCVoltage(int _count){
float summary = 0;
for(int i =0; i < _count; i++){
summary += measureNTCVoltage();
}
float mean = summary / _count;
return mean;
}
//
float NTC :: measureNTCResistance(){
float ntc_voltage = measureNTCVoltage();
return ref_resistance * ( ntc_voltage / (ref_max_voltage - ntc_voltage));
}
//
float NTC :: measureNTCResistance(int _count){
float summary = 0;
for(int i =0; i < _count; i++){
summary += measureNTCResistance();
}
float mean = summary / _count;
return mean;
}
//
float NTC :: measureNTCTemperature(){
digitalWrite(adc_supply_output_pin,HIGH);
float ntc_resistance = measureNTCResistance();
return 1 / ( (log(ntc_resistance / ref_r25) / ref_beta_confidency) + (1.00 / 298.15));
}
float NTC :: measureNTCTemperature(int _count){
Statistics stats(_count);
for(int i =0; i < _count; i++){
stats.addData(measureNTCTemperature());
}
float data = stats.mod();
stats.reset();
return data;
}
//
float NTC :: measureNTCTemperatureCelcius(){
return measureNTCTemperature() - 273.15;
}
float NTC :: measureNTCTemperatureCelcius(int _count){
Statistics stats(_count);
for(int i =0; i < _count; i++){
stats.addData(measureNTCTemperature());
}
float data = stats.mod();
last_temp = data;
stats.reset();
return data - 273.15;
}