Cara Membaca Sensor Tekanan Air dan Udara dengan Arduino

Terdapat berbagai jenis sensor tekanan yang dapat digunakan dengan Arduino, seperti sensor MPX5700, load cell, dan strain gauge, yang umumnya digunakan untuk mengukur berat. Meskipun sensor-sensor ini, termasuk sensor seperti GY-BMP28, tersedia untuk beragam keperluan, mereka sering kali tidak cukup akurat jika digunakan untuk mengukur tekanan air, misalnya dalam sebuah tangki air. Hal ini disebabkan oleh spesifikasi teknis sensor yang kurang tepat dalam mendeteksi tekanan jenis cairan, sehingga membutuhkan penyesuaian atau penggunaan sensor yang lebih khusus.

Jika Anda memanfaatkan sensor-sensor tersebut, biasanya diperlukan penambahan komponen pendukung seperti rangkaian penguat sinyal atau sensor casing yang lebih tahan terhadap lingkungan berair. Namun, dalam proyek ini yang berfokus pada pemantauan tekanan air di sebuah wadah, LesTeknik menemukan sebuah sensor yang sangat cocok. Sensor ini dirancang khusus untuk aplikasi tekanan air dan memiliki keunggulan utama yaitu kesederhanaan penggunaan. Anda tidak memerlukan rangkaian penguat sinyal atau komponen tambahan lainnya, yang membuatnya praktis untuk diterapkan secara langsung pada proyek berbasis Arduino.

Cara menggunakannya juga cukup mudah. Anda hanya perlu menghubungkan output sensor langsung ke pin ADC pada mikrokontroler atau Arduino, lalu membaca nilai output dan mengolahnya menjadi data tekanan yang bisa digunakan dalam aplikasi Anda. Sensor yang LesTeknik gunakan ini dikenal sebagai water pressure sensor, dan bisa Anda lihat pada gambar di bawah ini.

Dalam proyek ini, LesTeknik menghubungkan dua sensor tekanan ke sebuah Arduino Nano, dengan sensor pertama terpasang pada pin A0 dan sensor kedua di A1. Untuk memastikan proyek terlihat lebih rapi dan terstruktur, LesTeknik sangat menyarankan penggunaan papan PCB sebagai tempat menyusun rangkaian Arduino. Ini akan memudahkan proses pengkabelan dan memberikan tampilan yang lebih profesional, dibandingkan dengan menggunakan kabel jumper yang bisa tampak berantakan. Selain itu, dengan papan PCB, Anda bisa melakukan coding dan debugging dengan lebih nyaman sambil menikmati secangkir kopi di meja kerja Anda.

Rangkaian Sensor Tekanan Arduino

Pada gambar di bawah ini, Anda dapat melihat rangkaian sensor tekanan yang terhubung dengan Arduino Nano menggunakan PCB sebagai tempat perakitan.

 

Mari kita bahas lebih lanjut. Dalam rangkaian ini, kita memanfaatkan komponen LM7809, sebuah regulator tegangan yang berfungsi untuk menurunkan tegangan dari adaptor 12V menjadi 9V. Tujuan penggunaan LM7809 ini adalah untuk menjaga agar Arduino Nano tetap aman dan awet saat digunakan. Mengingat bahwa Arduino Nano sebenarnya mampu menerima tegangan 12V langsung, namun untuk alasan keamanan dan keawetan, lebih baik kita turunkan tegangannya terlebih dahulu.

Selain LM7809, sebenarnya terdapat alternatif regulator yang lebih kecil dan efisien, yaitu Ultra-Small Mini-360 LM2596. Meskipun ukurannya kecil, regulator ini memiliki kemampuan yang lebih baik dalam menangani arus yang lebih tinggi dibandingkan LM7809. Harganya pun tidak jauh berbeda, sehingga bisa menjadi opsi yang menarik jika Anda menginginkan efisiensi lebih tinggi dalam proyek Anda.

Meskipun Arduino Nano dilengkapi dengan regulator bawaan yang mampu menangani tegangan hingga 12V, ada risiko regulator internal akan menjadi terlalu panas jika dioperasikan secara terus-menerus pada tegangan tersebut. Jika kita menurunkan tegangan dari 12V langsung menjadi 5V, regulator internal Arduino akan bekerja lebih keras dan suhunya bisa meningkat secara signifikan. Oleh karena itu, menggunakan LM7809 yang menurunkan tegangan menjadi 9V sebelum masuk ke Arduino Nano adalah pilihan yang lebih baik untuk menjaga suhu komponen tetap stabil dan menghindari overheating.

Program Uji Sensor Tekanan Air

Sebelum memprogram Arduino untuk mengukur tekanan air, penting untuk melakukan pengecekan terhadap nilai offset dari sensor tekanan yang akan digunakan. Offset adalah tegangan output yang dihasilkan sensor saat tidak ada tekanan yang diterapkan. Nilai ini akan menjadi acuan kalibrasi untuk pengukuran selanjutnya, sehingga penghitungan tekanan air menjadi lebih akurat. Dengan mengukur nilai offset terlebih dahulu, kita dapat memperhitungkan perbedaan yang terjadi akibat variabel lingkungan atau toleransi sensor.

Berikut adalah contoh program sederhana yang dapat digunakan untuk membaca dan menampilkan nilai offset dari sensor tekanan:

#include "Wire.h"
#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(16, 2);

float V, P;
float V2, P2;

void setup() {
    Serial.begin(9600);        // Open serial port, set the baud rate to 9600 bps
    lcd.autoAddress();
    lcd.begin();
}

void loop() {
    baca_pressure();
    
    lcd.setCursor(0, 0);
    lcd.print("Offset:");
    lcd.print(V, 4);  // 4 decimal places

    lcd.setCursor(0, 1);
    lcd.print("Offset:");
    lcd.print(V2, 4); // 4 decimal places
    
    Serial.println(V, 5);      // 5 decimal places in serial output
    Serial.println(V2, 5);     // 5 decimal places in serial output

    delay(1000);
    lcd.clear();
}

void baca_pressure() {
    V = analogRead(0) * 5.00 / 1024;   // Sensor output voltage
    V2 = analogRead(1) * 5.00 / 1024;
}

Saat Anda membaca data offset pada proyek Arduino, Anda menemukan fenomena yang menarik di mana nilai offset menjadi tidak stabil ketika menggunakan sumber daya dari USB laptop. Hal ini kemungkinan besar disebabkan oleh grounding yang kurang baik pada laptop, yang menyebabkan gangguan pada pembacaan data sensor. Ketika Anda mengganti sumber daya menjadi adaptor 12V, nilai offset menjadi stabil, yang mengindikasikan bahwa suplai daya eksternal memberikan grounding yang lebih baik.

Berikut adalah nilai offset yang stabil yang Anda dapatkan setelah menggunakan adaptor 12V:

  • OffSet1 = 0.48340 (tegangan output sensor tanpa beban)
  • OffSet2 = 0.48340 (tegangan output sensor tanpa beban)

Secara keseluruhan, tidak ada masalah lain yang muncul setelah menggunakan adaptor ini. Langkah selanjutnya adalah merancang dan memprogram sistem ini secara keseluruhan, mengintegrasikan sensor dan mengoptimalkan kode Arduino untuk membaca data dengan benar sesuai dengan offset yang stabil ini.

Program Sensor Pressure Arduino

Setelah kita dapat nilai offset nya, program keseluruhan nya sebagai berikut.

#include "Wire.h"
#include "LiquidCrystal_I2C.h"

LiquidCrystal_I2C lcd(16, 2);

const float OffSet = 0.48340;   // Nilai tegangan output sensor tanpa beban
const float OffSet2 = 0.48340;  // Nilai tegangan output sensor tanpa beban

float V, P;
float V2, P2;

void setup() {
    Serial.begin(9600);        // Open serial port, set the baud rate to 9600 bps
    lcd.autoAddress();
    lcd.begin();
}

void loop() {
    baca_pressure();

    lcd.setCursor(0, 0);
    lcd.print("P1: ");
    lcd.print(P, 2);    // Dua angka di belakang koma
    lcd.print(" KPa");

    lcd.setCursor(0, 1);
    lcd.print("P2: ");
    lcd.print(P2, 2);   // Dua angka di belakang koma
    lcd.print(" KPa");

    Serial.println(V, 5);     // Lima angka di belakang koma untuk Serial Monitor
    Serial.println(V2, 5);    // Lima angka di belakang koma untuk Serial Monitor

    delay(1000);
    lcd.clear();
}

void baca_pressure() {
    V = analogRead(0) * 5.00 / 1024;    // Tegangan output sensor
    P = (V - OffSet) * 400;             // Hitung tekanan air
    if (P < 0) P = 0;

    V2 = analogRead(1) * 5.00 / 1024;
    P2 = (V2 - OffSet2) * 400;          // Hitung tekanan air sensor kedua
    if (P2 < 0) P2 = 0;
}

Pada program ini, V dan V2 digunakan untuk membaca tegangan dari sensor, kemudian dihitung nilai tekanan (P1 dan P2) dalam satuan KPa menggunakan rumus (V - OffSet) * 400. Jika tekanan yang dihitung lebih kecil dari nol, maka diset menjadi nol.

Nilai 400 dalam program tersebut berasal dari spesifikasi teknis sensor tekanan (pressure sensor) yang digunakan. Nilai ini biasanya terkait dengan sensitivitas sensor dan rentang tekanan yang dapat diukur oleh sensor. Berikut penjelasannya:

1. Sensor Tekanan: Sensor tekanan biasanya mengeluarkan tegangan analog yang proporsional dengan tekanan yang diukur. Rentang tegangan output sensor ini berada dalam kisaran 0-5V untuk mengukur tekanan dari 0 hingga 400 kPa (kilopascal).

2. Rumus Perhitungan Tekanan:

  • Tegangan yang dihasilkan oleh sensor (V) akan dibaca menggunakan fungsi analogRead().
  • Nilai yang dibaca dikonversi dari bentuk digital (dari rentang 0 hingga 1023) menjadi tegangan analog yang setara dalam rentang 0 hingga 5V dengan rumus:
\( V = \frac{1024}{\text{analogRead}(x)} \times 5.0 . . . (1) \)

Setelah mendapatkan nilai tegangan (V), tekanan dapat dihitung menggunakan persamaan berikut:

\( P = (V – \text{Offset}) \times 400 . . . (2) \)

\( P = (V – \text{Offset}) \times 400 \) Persamaan ini menunjukkan bahwa setiap perubahan 1 volt pada output sensor berkaitan dengan 400 kPa. Dengan kata lain, sensor menghasilkan perubahan sebesar 400 kPa per volt.

3. Peran Nilai 400:

  • Nilai 400 adalah faktor konversi dari tegangan sensor (dalam volt) ke tekanan (dalam kilopascal). Hal ini berarti bahwa ketika tegangan meningkat sebesar 1V, tekanan yang diukur oleh sensor meningkat sebesar 400 kPa.
  • Sebagai contoh, jika tegangan yang dibaca oleh sensor adalah 1.5V, maka tekanan yang diukur adalah:
\( P = (1.5V – 0.4834V) \times 400 = 0.01664 \times 400 = 406.64 \, \text{kPa} . . . (3)\)

Jadi, nilai 400 ini tergantung pada karakteristik sensor, yang umumnya dinyatakan dalam datasheet sensor terkait rentang tegangan output dan rentang presure yang diukur.

Tinggalkan komentar