diff options
Diffstat (limited to 'Detector_Building_v2/Detector_Building_v2.ino')
-rw-r--r-- | Detector_Building_v2/Detector_Building_v2.ino | 24 |
1 files changed, 12 insertions, 12 deletions
diff --git a/Detector_Building_v2/Detector_Building_v2.ino b/Detector_Building_v2/Detector_Building_v2.ino index e28c92b..df54c24 100644 --- a/Detector_Building_v2/Detector_Building_v2.ino +++ b/Detector_Building_v2/Detector_Building_v2.ino @@ -13,14 +13,14 @@ #include <detectorBuilding.h> const bool CALIB = false; // Calibration mode -const int n = 4; // Number of data points +const int n = 17; // Number of data points const int m = 1; // Number of segments const int deg = 2; // Regression degree double V[n] = { // Voltage measurements - 2.12, 3.26, 3.96, 4.1 + 2.70, 3.39, 2.40, 2.31, 2.19, 1.94, 4.09, 4.11, 3.98, 3.92, 3.77, 3.53, 3.18, 3.07, 2.30, 2.53, 2.49 }; double T[n] = { // Temperature measurements - 22.0, 39.15, 60, 72 + 24.0, 44.4, 18.4, 13.9, 11.2, 8.6, 60.8, 62.0, 58.3, 53.9, 49.3, 44.9, 41.0, 37.3, 13.4, 19.1, 18.2 }; double coeff[m][deg + 1]; @@ -35,19 +35,19 @@ void setup() { sort(T, n); double x[n], y[n]; - for (int i = 0; i < n; i++) x[i] = log(v2r(V[i])) - 5; - for (int i = 0; i < n; i++) y[i] = 1 / c2k(T[i]); - /*for (int i = 0; i < n; i++) { + for (int i = 0; i < n; i++) x[i] = log(v2r(V[i])) - 7; + for (int i = 0; i < n; i++) y[i] = 1000 / c2k(T[i]); + for (int i = 0; i < n; i++) { Serial.print("("); Serial.print(x[i], 12); Serial.print(", "); Serial.print(y[i], 12); Serial.print(")"); Serial.println(); - }*/ + } for (int i = 0; i < m; i++) { int ret = fitCurve(deg, n / m, x + i * n / m, y + i * n / m, deg + 1, coeff[i]); - /*if (ret == 0){ //Returned value is 0 if no error + if (ret == 0){ //Returned value is 0 if no error char c = 'A'; Serial.println("Coefficients are:"); for (int j = 0; j <= deg; j++){ @@ -56,7 +56,7 @@ void setup() { Serial.print(coeff[i][j], 12); Serial.println(); } - }*/ + } } } @@ -78,19 +78,19 @@ void loop() { int s = 0; while (s + 1 < m && V_out < (V[s * n / m - 1] + V[s * n / m]) / 2) s++; // Find correct segment - double logR = log(v2r(V_out)) - 5; + double logR = log(v2r(V_out)) - 7; double sum = 0, prod = 1; for (int i = 0; i <= deg; i++) { sum += coeff[s][deg - i] * prod; prod *= logR; } - double K = 1 / sum; + double K = 1000 / sum; double C = k2c(K); double F = c2f(C); // LED stuff - if (C <= 25) { // Cold + if (C <= 30) { // Cold digitalWrite(LED_R, LOW); digitalWrite(LED_G, LOW); digitalWrite(LED_B, HIGH); |