Air adalah sumber daya penting dalam kehidupan sehari-hari kita. Jadi, kita harus memastikan bahwa air berkualitas baik untuk penggunaan.
Apa itu TDS?
TDS adalah singkatan dari Total Dissolved Solids. Seperti yang namanya sugereh, ini memberi kita jumlah zat padat yang terlarut dalam jumlah air tertentu, dalam ppm (parts per million). TDS dihitung berdasarkan konduktivitas listrik [S/m]. Semakin tinggi konduktivitas listrik, semakin tinggi nilai TDS. Berikut adalah daftar nilai TDS dari berbagai jenis air:
Air murni: 80-150
Air ledeng: 250-350
Air tanah: 500-1000
Air laut: sekitar 30000
Sebagaimana direkomendasikan oleh WHO (World Health Organisation), TDS yang sesuai untuk air minum adalah di bawah 300. Namun, air dengan TDS di bawah 100 tidak dapat dikonsumsi, karena akan kehilangan mineral penting. Air di atas 300 dianggap terlalu "keras", karena mengandung lebih banyak mineral dari yang dibutuhkan.
Biasanya, kita menggunakan pena TDS untuk mengukur TDS air. Namun, kita tidak dapat mengintegrasikan pena dengan Arduino. Jadi, ada meter TDS khusus yang tersedia yang dapat diintegrasikan dengan Arduino. Namun, saya telah memutuskan untuk melakukan proyek ini tanpa menggunakan pena TDS.
Rangkaian
Arduino
Sambungkan 5V Arduino ke satu rel daya papan roti
Sambungkan ground Arduino ke rel daya lainnya pada papan roti
Sambungkan satu ujung resistor 1k-ohm ke ground dan ujung lainnya ke papan roti. Sambungkan pin analog A0 pada Arduino ke resistor. Akhirnya, sambungkan kabel ke resistor dan kabel lain ke 5V. Sambungkan ujung bebas dari kabel ini ke klip maggi.
Tampilan LCD
Sambungkan pin VSS ke rel ground
Sambungkan pin VDD ke rel 5V
Sambungkan V0 ke pin tengah potentiometer
Sambungkan ujung potentiometer ke 5V dan ground
Sambungkan pin RS ke pin 7 Arduino
Sambungkan pin R/W ke rel ground
Sambungkan pin E ke pin 8 Arduino
Sambungkan D4 ke pin 10 Arduino
Sambungkan D5 ke pin 11 Arduino
Sambungkan D6 ke pin 12 Arduino
Sambungkan D7 ke pin 13 Arduino
Modul Bluetooth HC-05
Sambungkan pin VCC ke rel 5V
Sambungkan pin GND ke ground
Sambungkan pin TX ke pin 3 Arduino (berfungsi sebagai RX)
Sambungkan pin RX ke pin 2 Arduino (berfungsi sebagai TX)
LED RGB
Sambungkan katoda umum (pin terpanjang) ke ground
Sambungkan pin merah (kanan pin katoda) ke pin PWM 9 Arduino melalui resistor 330-ohm
Sambungkan pin hijau (kiri pin katoda) ke pin PWM 6 Arduino melalui resistor 330-ohm
Sambungkan pin biru (ekstrem kiri) ke pin PWM 5 Arduino melalui resistor 330-ohm
Turunan untuk Menghitung Resistansi antara Kabel Bebas
Kita akan menggunakan hukum Ohm, yang menyatakan bahwa tegangan [V] melalui resistor dengan resistansi R berbanding lurus dengan arus [I] yang mengalir melalui resistor. Dengan kata lain, V = IR
Meski ada kabel yang terhubung antara 2 resistor [R₁ - 1000-ohm, dan R₂ - antara kabel bebas] ke pin Analog A0 pada Arduino, resistansi kabel tersebut dapat diabaikan, dan oleh karena itu kita dapat mengatakan bahwa arus minimal mengalir melalui kabel. Jadi, R₁ dan R₂ terhubung dalam seri.
Jadi, kita dapat mengatakan V₁ = IR₁ dan V₂ = IR₂.
Oleh karena itu, kita dapat mengatakan V₂/V₁= IR₂/IR₁ =R₂/R₁
. Namun, kita tidak mengetahui V₂.
Kita tahu bahwa dalam kombinasi seri resistor, V₁+V₂ = V, di mana V = 5 Volt. Dari ini, kita dapat mendapatkan V₂ = 5-V₁
Akhirnya, dengan mengganti nilai yang kita dapatkan untuk V₂ dalam V₂/V₁ = R₂/R₁, kita dapat mendefinisikan variabel buffer sebagai 5-V₁/V₁, alih-alih V₂/V₁.
Akhirnya, kita dapat mengatakan R₂ = buffer * R₁.
Cara Kerja
Kita akan menghitung resistansi air yang diuji, dan dari itu, kita akan mendapatkan resistivitas. Kita harus mempertimbangkan panjang dan luas penampang wadah kita untuk ini.
R = r L/A => r = R A/L
Dari resistivitas, kita dapat mendapatkan konduktivitas
Anda dapat mengunduh pustaka ini dan menambahkannya ke Arduino IDE Anda, atau Anda dapat pergi ke Tools -> manage libraries -> cari pustaka yang ingin Anda unduh
Kode
Kode pemantauan kualitas airArduino
//include libraries #include <SoftwareSerial.h> #include <LiquidCrystal.h> //for bluetooth - create an object called BTserial, with RX pin at 3 and TX pin at 2 SoftwareSerial BTserial(3,2); // RX | TX //decraration of all our variables float reads; int pin = A0; float vOut = 0 ;//voltage drop across 2 points float vIn = 5; float R1 = 1000; float R2 = 0; float buffer = 0; float TDS; float R = 0;//resistance between the 2 wires float r = 0;//resistivity float L = 0.06;//distance between the wires in m double A = 0.000154;//area of cross section of wire in m^2 float C = 0;//conductivity in S/m float Cm = 0;//conductivity in mS/cm int rPin = 9; int bPin = 5; int gPin = 6; int rVal = 255; int bVal = 255; int gVal = 255; //we will use this formula to get the resistivity after using ohm's law -> R = r L/A => r = R A/L //creating lcd object from Liquid Crystal library LiquidCrystal lcd(7,8,10,11,12,13); void setup() { //initialise BT serial and serial monitor Serial.begin(9600); BTserial.begin(9600); //initialise lcd lcd.begin(16, 2); //set rgb led pins (all to be pwm pins on Arduino) as output pinMode(rPin,OUTPUT); pinMode(bPin,OUTPUT); pinMode(gPin,OUTPUT); pinMode(pin,INPUT); //Print stagnant message to LCD lcd.print("Conductivity: "); } void loop() { reads = analogRead(A0); vOut = reads*5/1023; Serial.println(reads); // Serial.println(vOut); buffer = (vIn/vOut)-1; R2 = R1*buffer; Serial.println(R2); delay(500); //convert voltage to resistance //Apply formula mentioned above r = R2*A/L;//R=rL/A //convert resistivity to condictivity C = 1/r; Cm = C*10; //convert conductivity in mS/cm to TDS TDS = Cm *700; //Set cursor of LCD to next row lcd.setCursor(0,1); lcd.println(C); //display corresponding colours on rgb led according to the analog read if( reads < 600 ) { if (reads <= 300){ setColor( 255, 0, 255 ) ; } if (reads > 200){ setColor( 200, 0, 255 ) ; } } else{ if( reads <= 900 ) { setColor( 0, 0, 255 ) ; } if( reads > 700 ) { setColor( 0, 255, 255 ) ; } } //send data to Ardutooth app on mobile phone through bluetooth BTserial.print(C); BTserial.print(","); BTserial.print(TDS); BTserial.print(";"); delay(500); } void setColor(int red, int green, int blue) { analogWrite( rPin, 255 - red ) ; analogWrite( gPin, 255 - green ) ; analogWrite( bPin, 255 - blue ) ; }
Bagian dan Penutup Kustom
Saya menggunakan tabung uji lama yang saya miliki untuk membuat ini. Saya lubangi kedua ujung tabung dan masukkan kabel dari kedua ujung. Akhirnya, untuk memegang kabel di tempatnya, saya melempar beberapa karet pas.