Created
September 7, 2017 16:16
-
-
Save mdmunir/70cc30241b83c5f877c8746fa280bf2a to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#define TDS_SOURCE_1 2 | |
#define TDS_SOURCE_2 3 | |
float getTds() { | |
// konstanta diperoleh dari percobaan. Hasil dari fungsi ini dibandingkan dengan tds meter standar. Hasilnya diregresikan | |
// Baca README.md | |
float C1 = 27.0, C2 = 61.4; // <- dari regresi linier, mungkin berbeda tergantung nilai R yg dipakai. R=1K8 ohm | |
float x1, x2, ec; | |
int i; | |
// inisialisasi probe; | |
/* dari pengalaman. kalau probe yang dicelupkan ke air diberi arus searah terus menerus akan terjadi elektrolisis | |
sehinggah nilai pengukuran akan berubah. | |
Karena itu sebelum pensamplingan nilai, probe terlebih dahulu diberi arus bolak-balik | |
*/ | |
for (i = 0; i < 4; i++) { | |
digitalWrite(TDS_SOURCE_1, i % 2 == 0); | |
digitalWrite(TDS_SOURCE_2, i % 2 == 1); | |
} | |
// sampling 1 -> PIN1 high, PIN2 low | |
digitalWrite(TDS_SOURCE_1, HIGH); | |
digitalWrite(TDS_SOURCE_2, LOW); | |
x1 = analogRead(A0) / 1023.0; | |
for (i = 0; i < 4; i++) { | |
digitalWrite(TDS_SOURCE_1, i % 2 == 1); | |
digitalWrite(TDS_SOURCE_2, i % 2 == 0); | |
} | |
// sampling 2 -> PIN1 low, PIN2 high | |
digitalWrite(TDS_SOURCE_2, HIGH); | |
digitalWrite(TDS_SOURCE_1, LOW); | |
x2 = analogRead(A0) / 1023.0; | |
// konversi ke ec | |
ec = 0.5 * (x1 / (1 - x1) + (1 - x2) / x2); | |
// idle | |
digitalWrite(TDS_SOURCE_1, LOW); | |
digitalWrite(TDS_SOURCE_2, LOW); | |
return C1 + C2 * ec; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment