Bangun Meter pH Presisi dengan Sensor Atlas Scientific – Bagian & Panduan
Komponen dan Perlengkapan
Arduino UNO – 1 unit
Atlas Scientific Gravity™ Analog pH Sensor – 1 unit
Atlas Scientific Consumer Grade pH Probe – 1 unit
Modul LCD 20x4 – 1 unit
Kotak pelindung 158x90x60mm – 1 unit
Mini breadboard – 1 unit
Resistor 220 ohm – 1 unit
Resistor 1k ohm – 1 unit
Standoff dan baut 11mm (disertakan dengan sensor pH) – 4 unit
Kabel jumper – 1 set
Lemak akrilik (plexiglass) – 1 lembar
Alat dan Mesin yang Diperlukan
Bor, bor borong, potong kering, penggaruk, obeng, étak dinding, gergaji pita, pistol lekat dan batang lekat, pemolot timah dan timah, pengukur digital, serta penggaris.
Aplikasi dan Layanan Online
Arduino IDE
Tentang Proyek
Dalam proyek ini, kita akan membuat meter pH meja menggunakan rangkaian dan probe pH analog Gravity dari Atlas Scientific bersama Arduino Uno. Hasil pembacaan akan ditampilkan pada layar kristal cair (LCD).
Catatan:
Meter ini dikembangkan pada komputer Windows dan belum diuji pada Mac.
Kotak pelindung tidak tahan air.
Langkah 1: Siapkan Perabot
Keamanan: Hati-hati saat menggunakan alat/mesin dan gunakan perlengkapan keselamatan seperti kacamata pelindung, sarung tangan, dan masker.
Perabot yang digunakan adalah kotak plastik ABS. Kotak perlu dimodifikasi untuk meter pH.
Buat pembukaan untuk LCD
LCD ditempatkan di bagian atas (tutup) perabot. Buat persegi panjang 98x40mm di tengah tutup.
Letakkan bagian dalam étak dan bor lubang pilot 3,2mm (1/8 inci) di persegi panjang yang telah ditandai.
Gunakan lubang pilot sebagai titik awal untuk bor potong kering 3,2mm (1/8 inci). Karena ini pekerjaan kecil, gunakan bor pada bor tangan daripada mesin potong kering. Kerja di dalam persegi panjang daripada pada garis, karena sedikit sulit untuk memotong lurus dengan bor ini.
Selanjutnya, gunakan garuk tangan untuk menghilangkan bahan berlebih dan membentuk persegi panjang sesuai ukuran yang dibutuhkan.
Buat pembukaan untuk konektor BNC dan port Arduino
Pembukaan untuk konektor BNC dan port Arduino berada di sisi bagian bawah perabot.
Gunakan dimensi yang diberikan, tandai titik tengah lingkaran dan garis tepi untuk dua persegi panjang.
Letakkan bagian dalam étak dan potong pembukaan. Lingkaran dibuat menggunakan bor. Persegi panjang dibuat dengan proses serupa seperti pembuatan pembukaan untuk LCD.
Pasang plat dasar untuk pemasangan komponen
Plat dasar digunakan untuk memasang Arduino, sensor pH, dan mini breadboard. Digunakan lemak akrilik tebal 3,2mm.
Gunakan gergaji pita, potong lemak akrilik menjadi 135x62,5mm.
Tandai posisi untuk lubang empat sebagai berikut. Bor lubang berdiameter 2,38mm (3/32 inci). Buat lubang Countersink pada satu sisi plat kedalaman 3mm dan diameter 4,4mm (11/64 inci). Ini diperlukan untuk menjaga permukaan bawah rata saat baut dimasukkan untuk memegang standoff.
Pasang standoff 11mm menggunakan baut yang disediakan. Sensor pH dilengkapi 4 standoff dan baut. Gunakan dua untuk Arduino.
Langkah 2: Pasang Elektronika di Perabot
Masukkan plat dasar ke bagian bawah perabot. Tetapkan posisinya dengan baut atau lekat panas.
Pasang sensor pH pada plat dasar. Kunci ke standoff dengan baut.
Pasang Arduino Uno pada plat dasar. Kunci ke standoff dengan baut.
Tambahkan mini breadboard pada plat dasar.
Solder pin header ke LCD (pin yang disediakan). Masukkan LCD ke bagian atas perabot dan gunakan sedikit lekat panas untuk menahan layar.
Langkah 3: Sambungkan Elektronika Bersama-sama
Sambungkan komponen seperti yang ditunjukkan dalam skematik di atas.
Gunakan mini breadboard untuk resistor 1kΩ dan 220Ω serta untuk mendistribusikan pin 5V dan ground Arduino.
Dua resistor digunakan untuk mengatur kontras layar.
Datasheet: Sensor pH Gravity, probe pH
Langkah 4: Selesaikan Rangkaian
Setelah pemasangan kabel selesai:
Gabungkan bagian atas dan bawah perabot menggunakan baut yang disediakan.
Sambungkan probe ke konektor BNC.
Langkah 5: Unggah Kode ke Arduino Uno
Kode untuk proyek ini menggunakan pustaka dan file header kustom. Anda harus menambahkannya ke Arduino IDE Anda untuk menggunakan kode. Langkah di bawah ini mencakup proses penambahan ini ke IDE.
Sambungkan Arduino ke komputer dan buka IDE. IDE dapat diunduh dari LINK ini jika Anda belum memilikinya. Pergi ke Tools -> Board -> Pilih Arduino/Genuino Uno. Pergi ke Tools -> Port -> pilih port tempat Arduino terhubung.
Tambahkan pustaka Liquid Crystal Display: Di IDE pergi ke Sketch -> Include library -> Manage libraries. Di kolom pencarian Library Manager ketik "liquidcrystal". Cari paket bernama "LiquidCrystal Built-in by Arduino, Adafruit". Mungkin sudah terpasang atau belum. Jika belum, pilih paket dan klik install.
Tambahkan pustaka sensor Atlas Gravity: Unduh file zip dari LINK berikut. File akan disimpan sebagai "Atlas_gravity.zip". Di IDE pergi ke Sketch -> Include library -> Add.ZIP Library. Temukan file "Atlas_gravity.zip" dan pilih untuk menambahkannya.
Selanjutnya, kita harus menambahkan kode untuk meter pH. Salin kode dari LINK ini ke panel kerja IDE.
Kompilasi dan unggah kode ke Arduino.
Hasil pembacaan pH akan ditampilkan pada LCD. Anda juga dapat melihat hasil pembacaan pada serial monitor. Untuk membuka serial monitor, pergi ke Tools -> Serial Monitor atau tekan Ctrl+Shift+M pada keyboard Anda. Atur baud rate ke 9600 dan pilih "Carriage return".
Langkah 6: Kalibrasi Sensor pH
Catatan: Jika Anda berencana menggunakan sumber daya eksternal untuk Arduino, sambungkan ke Arduino sebelum melakukan kalibrasi. Ini akan memastikan level referensi diatur dengan benar, yang akan membantu dalam kalibrasi yang tepat.
Meter pH ini dapat dikalibrasi dengan kalibrasi satu, dua, atau tiga titik. Larutan standar buffer (pH 4, 7, dan 10) diperlukan.
Serial monitor digunakan untuk proses kalibrasi. Pengguna akan dapat mengamati perubahan bertahap dalam hasil pembacaan saat mereka mencapai stabilisasi dan mengirimkan perintah yang sesuai.
Data kalibrasi disimpan di EEPROM Arduino.
Perintah Kalibrasi
Titik rendah: cal, 4
Titik tengah: cal, 7
Titik tinggi: cal, 10
Hapus kalibrasi: cal, clear
Langkah-langkah
Cabut botol rendaman dan bilas probe pH.
Tuangkan sedikit larutan pH 4 ke dalam cangkir. Pastikan cukup untuk menutupi area sensor probe.
Letakkan probe dalam cangkir dan aduk untuk menghilangkan udara yang terperangkap. Amati hasil pembacaan pada serial monitor. Biarkan probe tetap dalam larutan hingga hasil pembacaan stabil (gerakan kecil dari satu pembacaan ke berikutnya adalah normal).
Setelah hasil pembacaan stabil, masukkan perintah cal, 4 ke dalam serial monitor. Kalibrasi ke pH 4 sekarang selesai.
Ulangi langkah a-d untuk pH 7 dan pH 10. Ingatlah untuk membilas probe saat Anda beralih ke larutan buffer yang berbeda.
Bagaimana dengan kompensasi suhu?
Sensor yang digunakan dalam proyek ini memiliki akurasi +/- 0,2%. Meter pH akan beroperasi dalam akurasi ini dalam rentang suhu 7 - 46°C. Di luar rentang ini, meter perlu dimodifikasi untuk kompensasi suhu. Catatan: Probe pH dapat dikondisikan dalam rentang 1 − 60 °C.
Kode
/* Setelah diunggah, buka serial monitor, atur baud rate ke 9600 dan tambahkan "Carriage return". Kode memungkinkan pengguna untuk mengamati hasil pembacaan pH real-time serta mengkalibrasi sensor. Kalibrasi satu, dua, atau tiga titik dapat dilakukan. Perintah kalibrasi: titik rendah: "cal,4"; titik tengah: "cal,7"; titik tinggi: "cal,10"; hapus kalibrasi: "cal,clear" */ #include "ph_grav.h" //file header untuk sensor pH Atlas Scientific gravity #include "LiquidCrystal.h" //file header untuk layar kristal cair (lcd) String inputstring = ""; //string untuk menampung data masuk dari PC boolean input_string_complete = false; //flag untuk menunjukkan apakah semua data dari PC telah diterima char inputstring_array[10]; //array char yang diperlukan untuk parsing string Gravity_pH pH = A0; //tetapkan pin analog A0 Arduino ke kelas Gravity_pH. Sambungkan output sensor pH ke pin A0 LiquidCrystal pH_lcd(2, 3, 4, 5, 6, 7); //buat variabel pH_lcd dan tetapkan pin digital Arduino ke pin lcd (2 -> RS, 3 -> E, 4 hingga 7 -> D4 hingga D7) void setup() { Serial.begin(9600); //aktifkan port serial pH_lcd.begin(20, 4); //mulai antarmuka lcd dan tentukan ukuran lcd (20 kolom dan 4 baris) pH_lcd.setCursor(0,0); //letakkan kursor di layar kolom 1, baris 1 pH_lcd.print("--------------------"); //tampilkan karakter pH_lcd.setCursor(0,3); //letakkan kursor di layar kolom 1, baris 4 pH_lcd.print("--------------------"); //tampilkan karakter pH_lcd.setCursor(5, 1); //letakkan kursor di layar kolom 6, baris 2 pH_lcd.print("pH Reading"); //tampilkan "pH Reading" if (pH.begin()) { Serial.println("Loaded EEPROM");} Serial.println(F("Use commands \"CAL,4\", \"CAL,7\", and \"CAL,10\" to calibrate the circuit to those respective values")); Serial.println(F("Use command \"CAL,CLEAR\" to clear the calibration")); } void serialEvent() { //jika port serial hardware_0 menerima char inputstring = Serial.readStringUntil(13); //baca string sampai menemukan input_string_complete = true; //set flag untuk memberi tahu apakah kita telah menerima string lengkap dari PC } void loop() { if (input_string_complete == true) { //periksa apakah data diterima inputstring.toCharArray(inputstring_array, 30); //konversi string ke array char parse_cmd(inputstring_array); //kirim data ke fungsi pars_cmd input_string_complete = false; //reset flag untuk memberi tahu apakah kita telah menerima string lengkap dari PC inputstring = ""; //kosongkan string } Serial.println(pH.read_ph()); //output pembacaan pH ke serial monitor pH_lcd.setCursor(8, 2); //letakkan kursor di layar kolom 9, baris 3 pH_lcd.print(pH.read_ph()); //output pH ke lcd delay(1000); } void parse_cmd(char* string) { //untuk memanggil fungsi kalibrasi strupr(string); //konversi string input ke huruf besar if (strcmp(string, "CAL,4") == 0) { //bandingkan string input pengguna dengan CAL,4 dan jika cocok, lanjutkan pH.cal_low(); //panggil fungsi untuk kalibrasi titik rendah Serial.println("LOW CALIBRATED"); } else if (strcmp(string, "CAL,7") == 0) { //bandingkan string input pengguna dengan CAL,7 dan jika cocok, lanjutkan pH.cal_mid(); //panggil fungsi untuk kalibrasi titik tengah Serial.println("MID CALIBRATED"); } else if (strcmp(string, "CAL,10") == 0) { //bandingkan string input pengguna dengan CAL,10 dan jika cocok, lanjutkan pH.cal_high(); //panggil fungsi untuk kalibrasi titik tinggi Serial.println("HIGH CALIBRATED"); } else if (strcmp(string, "CAL,CLEAR") == 0) { //bandingkan string input pengguna dengan CAL,CLEAR dan jika cocok, lanjutkan pH.cal_clear(); //panggil fungsi untuk menghapus kalibrasi Serial.println("CALIBRATION CLEARED"); } }