Perangkat Keras
Arduino UNO R3 SMD

//how to read
//Analog 0 (A0)
int sensorValue = analogRead(A0);
//Analog 1 (A1)
int sensorValue = analogRead(A1);
...
Spesifikasi Arduino UNO R3 SMD
10-bit ADC (Analog to Digital Converter) dengan jangkauan 0 ≤ nilai < 210, dengan kata lain memiliki jangkauan 0 – 1023.
Apabila menggunakan board yang memiliki ADC dengan bit yang berbeda, maka nilainya tinggal disesuaikan, misalnya 8-bit berarti 0 ≤ nilai < 28 atau 0 – 255
Legenda UNO R3 SMD
POWER
RES: Reset
3.3V: Tegangan keluar 3,3 Volt
5V: Tegangan keluar 5 Volt
GND: Ground
VIn: Tegangan masuk
Sensor PH

Spesifikasi Sensor PH
Pengukuran Suhu: 0-60 ℃
Jangkauan Pengukuran: 0-14PH
Legenda Sensor PH
To: Temperature Output, Luaran Suhu
Do: Digital Output, Luaran Digital
Po: PH Output, Luaran PH
G: Ground
V+: Tengangan masuk 5 Volt
Cairan Sensor PH Untuk Kalibrasi
Secara bawaan, umumnya cairan pada sensor PH bernilai 7. Lihat di dokumentasi yang disertakan. Contoh larutan dengan nilai PH 7: 3NKCL (Kalium Klorida).
Larutan ini jangan dibuang.
Skala
Pada banyak bidang, termasuk peta, elektronik, dan sebagainya, terdapat kebutuhan untuk mengkonversi nilai dari satu skala ke skala yang lain secara proporsional. Hal ini juga dikenal dengan linear mapping atau min-max scaling, dengan rumus:
Tujuan = ( (Asal−Asalmin) × (Tujuanmaks−Tujuanmin) / (Asalmaks−Asalmin) ) + Tujuanmin
dimana:
Asal: Nilai yang ingin diubah ke dalam nilai dengan skala lain secara proporsional, hasilnya adalah Tujuan
Asalmin dan Asalmaks: Nilai terkecil dan terbesar dari nilai asal
Tujuanmin dan Tujuanmaks: Nilai terkecil dan terbesar dari nilai tujuan
Contoh 1:
Nilai Analog Arduino UNO 10-bit dikonversi ke tegangan 5 Volt
Asalmin=0
Asalmaks=1023
Tujuanmin=0
Tujuanmaks=5
Apabila Arduino UNO menghasilkan nilai 530, berapakah tegangannya?
Asal = 530
Tegangan = ( (Asal−Asalmin) × (Tujuanmaks−Tujuanmin) / (Asalmaks−Asalmin) ) + Tujuanmin
Tegangan = ( (530−0) × (5−0) / (1023−0) ) + 0
Tegangan = 2.59042033235582
Contoh 2:
Nilai Analog Arduino UNO 10-bit dikonversi ke PH
Asalmin=540
Asalmaks=642
Tujuanmin=4
Tujuanmaks=7
Apabila Arduino UNO menghasilkan nilai 530, berapakah PH-nya?
Asal = 530
PH = ( (Asal−Asalmin) × (Tujuanmaks−Tujuanmin) / (Asalmaks−Asalmin) ) + Tujuanmin
PH = ( (530−540) × (7−4) / (642−540) ) + 4
PH = 3.70588235294118
//scale
float scale(float input, float input_min, float input_max, float output_min, float output_max) {
return ( (input-input_min) * (output_max-output_min) / (input_max-input_min) ) + output_min
}
Sensor PH Arduino
Pemasangan Perangkat Keras
Berapakah nilai tegangan input sensor PH? Ketik 5 atau 3.3 Volt
Salah satu kabel dimasukkan ke dalam bagian ANALOG IN pada Arduino UNO dengan kode berapa? Ketik A0, A1, A2, A3, A4, atau A5
Berapa bit Arduino UNO tersebut? Ketik dalam angka
Kabel | Arduino UNO | Sensor PH |
---|---|---|
1 | GND | G |
2 | V | V+ |
3 | Po |
Alur
- Arduino UNO mendapatkan tenaga listrik dari komputer (USB type-A/B/C) atau sumber lain (VIn dan/atau soket lain sesuai dengan jenis board).
- Arduino UNO menyalurkan listrik ke Sensor PH melalui kabel yang terhubung ke V+ (kabel 2). Kabel 1 sebagai ground.
- Sensor PH mengirimkan hasil pembacaan sensor melalui kabel yang terhubung ke Po (kabel 3).
- Arduino UNO mengolah hasil pembacaan sensor dan mengeluarkan hasilnya ke komputer (USB type-A/B/C) atau LED atau output lain.
Pemasangan Perangkat Lunak
- Hubungkan perangkat pada Arduino UNO yang telah terpasang dengan Sensor PH ke komputer
- Masukkan kode sumber terlampir ke dalam IDE, kompilasi, kemudian pasang ke Arduino.
- Lakukan Kalibrasi.
- Alat siap digunakan.
Kalibrasi
Siapkan larutan dengan PH 4. Bersihkan sensor.
Pada larutan dengan PH bernilai 4, berapakah nilai Sensor Value
Bersihkan sensor.
Pada larutan dengan PH bernilai 7, berapakah nilai Sensor Value
Masukkan kembali kode sumber terlampir (secara otomatis terupdate sesuai dengan nilai yang dimasukkan ke dalam kotak teks di atas) ke dalam IDE, kompilasi, kemudian pasang ke Arduino.
Apabila terdapat error, maka:
- Putar V potensio pada sensor PH sehingga berada pada nilai yang disarankan.
- Pada larutan dengan PH bernilai 7, berapakah nilai Sensor Value yang terbaru? Isi dengan nilai 0 apabila tidak terdapat error
- Masukkan kembali kode sumber terlampir (secara otomatis terupdate sesuai dengan nilai yang dimasukkan ke dalam kotak teks di atas) ke dalam IDE, kompilasi, kemudian pasang ke Arduino.
Alat siap digunakan.
Lampiran: Kode Sumber
Peringatan!
Pastikan bahwa sensor sudah bebas dari larutan yang sebelumnya, karena bisa larut dalam larutan dan mengubah PH, terutama cairan bawaan jangan sampai tercampur dengan larutan apapun agar tetap memiliki PH 7.
int sensorValue = 0; // Variable to store the value from the sensor
int bit = ;
const float ANALOG_MIN = 0;
const float ANALOG_MAX = pow(2, bit);
const float PH4 = 4; //calibrate using PH 4 solution
const float PH7 = 7; //calibrate using default solution
//don't use this value as-is, you must calibrate yourself
const float PH4sensorValue = ;
const float PH7sensorValue = ;
void setup() {
Serial.begin(9600); // Initialize serial communication
}
void loop() {
// Read the analog value from the sensor
sensorValue = analogRead( );
// Calculate Voltage
float V=scale(sensorValue, ANALOG_MIN, ANALOG_MAX, 0, );
// Calculate PH
float PH=scale(sensorValue, PH4sensorValue, PH7sensorValue, PH4, PH7);
// Print the censor value to the Serial Monitor
Serial.print("Sensor Value: ");
Serial.print(sensorValue);
// Print PH value to the Serial Monitor
Serial.print(", V Value: ");
Serial.print(V);
// Print PH value to the Serial Monitor
Serial.print(", PH Value: ");
Serial.println(PH);
check_range();
delay(500); // Wait for half a second before the next read
}
//Why not rounded? Because it can give a false result.
//For example, with an actual pH of 3.49 +/- 0.2, the result would be between 3.29 and 3.69. If you round it, the result could be 3 or 4.
//scale
float scale(float input, float input_min, float input_max, float output_min, float output_max) {
return ( (input-input_min) * (output_max-output_min) / (input_max-input_min) ) + output_min;
}
//check the range
void check_range() {
float range = abs((PH7sensorValue-PH4sensorValue) / (PH7-PH4) * 14 / 2);
float range_min = ANALOG_MIN + range;
float range_max = ANALOG_MAX - range;
if (PH7sensorValue < range_min || PH7sensorValue > range_max) {
Serial.println("Error out of range!");
Serial.print("Current PH 7 setting: ");
Serial.println(PH7sensorValue );
Serial.print("Recommended Range: ");
Serial.print(range_min);
Serial.println(" to ");
Serial.print(range_max);
Serial.print("Recommended Value: as nearest as possible to the middle of the range");
Serial.print("Please adjust the sensor value using the sensor's potentiometer !");
}
}