Beberapa Jenis Sensor Tekanan
Sensor Tekanan Arduino, Ada banyak jenis sensor tekanan, seperti sensor MPX5700, atau bisa juga di gunakan load cell, atau sensor strain gauge untuk mengukur berat, begitu juga dengan sensor GY-BMP28, namun semua sensor ini tidak cocok di gunakan untuk mengukur tekanan air. misalnya tekanan pada tank air. Jika menggunakan sensor sensor di atas mungkin membutuhkan construksi dan rangkaian sebagai penguat sinyal nya.
Kebetulan nih lagi ngerjain monitoring tekanan air pada sebuah wadah, coba check ternyata ada sensor yang sangat cocok dengan kondisi ini. Sensor ya cukup mudah, karena tidak membutuhkan rangkaian tambahan lagi. Cukup menghubungkan output sensor ini ke pin ADC nya mikrokontroller, atau Arduino. Kemudian membaca data output nya dan mengolah nya menjadi data tekanan. Kalo saya lihat nama nya, water pressure sensor. Gambar sensor nya bisa di lihat pada gambar di bawah ini.
Ada dua sensor tekanan yang kita hubungkan ke Arduino Nano, Output sensor Tekanan satu kita hubungkan ke pin A0 dan sensor tekanan satu nya lagi kita hubungkan ke PIN A1. Kerena yah, 🙂 muji sendiri. Biasakan menggunakan Papan PCB untuk Project Arduino, Ribet menggunakan kabel jumper sana sini. Dengan PCB Tinggal coding nyaman sambil ngopi.
Rangkaian Sensor Tekanan Arduino
Untuk rangkaian Arduino nano menggunakan PCB di atas, dapat kita lihat pada gambar di bawah ini, yuk, kita cek.
Di Rangkain ini kita menggunakan LM7809 untuk mengurangi tegangan dari adaptor 12V, yah agar lebih savety dan awet saja Arduino nya, Sebenar nya ada yang lebih kuat lagi regulator nya, dengan harga yang relatif tidak terlalu jauh. Ultra-Small Mini-360 LM2596, ukuran kecil, tapi memiliki arus yang lebih tinggi. Sebenar nya bisa saja kita input langsung 12V ke Arduino nano nya, karena Arduino sendiri telah memiliki regulator, Tapi dari 12V di regulasi menjadi 5Volt akan membuat regultor Arduino nya panas. Makanya kita menggunakan Regulator LM7809.
Program Uji Sensor Tekanan Air
Yuk, Sebelum kita program Arduino nya untuk mengukur tekanan, kita baca dulu data offset nya. Maksud nya adalah berapa tegangan output sensor ini ketika tanpa tekanan. Tegangan Offset, tegangan output sensor tanpa tekanan
Tegangan Offset ini adalah tegangan nilai kalibrasi nya nanti nya, bagaimanakah program nya, berikut lampiran nya,
#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 di belakang koma lcd.setCursor(0,1); lcd.print("Offset:"); lcd.print(V2,4); // 4 di belakang koma Serial.println(V,5); Serial.println(V2,5); delay(1000); lcd.clear(); } void baca_pressure(){ V = analogRead(0) * 5.00 / 1024; //Sensor output voltage V2 = analogRead(1) * 5.00 / 1024; }
Nah disini LCD akan menampilkan data offset nya, ehh, By the way, saya menggunakan library autoset address LCD i2c, untuk tutorial ini bisa di lihat pada artikel berikut,
Auto Set Addres LCD I2C, Program LCD I2C tanpa Ribet dan Mudah
Pastikan dengan benar set library LCD nya, kalo tidak pasti error.
Hal unik lagi yang jumpai ketika membaca data offset ini adalah nilai OFFSET yang tidak Stabil, Hal ini terjadi ketika power supply nya dari USB laptop, tapi dengan menggunakan Power supply adaptor 12V, offset nya stabil, nilai nya saya dapat adalah
OffSet1 = 0.48340; //nilai tegangan out sensor tanpa beban
OffSet2 = 0.48340; //nilai tegangan out sensor tanpa beban
Mungkin grounding Laptop nya yang sudah bermasalah, but over all oke, yuk gimana cara program keseluruhan nya?
Program Sensor Pressure Arduino
Nah 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 out sensor tanpa beban const float OffSet2 = 0.48340; //nilai tegangan out 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 di belakang koma lcd.print(" KPa"); lcd.setCursor(0,1); lcd.print("P2: "); lcd.print(P2,2); //dua di belakang koma lcd.print(" KPa"); Serial.println(V,5); Serial.println(V2,5); delay(1000); lcd.clear(); } void baca_pressure(){ V = analogRead(0) * 5.00 / 1024; //Sensor output voltage P = (V - OffSet) * 400; //Calculate water pressure if ( P < 0)P = 0; V2 = analogRead(1) * 5.00 / 1024; P2 = (V2 - OffSet2) * 400; if ( P2 < 0)P2 = 0; }
Nah, selesai juga program nya, Ini sudah kita uji dan berhasil, namun ada pertanyaan muncul dari program di atas, dari mana nilai 400 itu pada program? 🙂 mungkin ini nilai dari sensor nya, untuk memastikan ya bisa di bandingkan dengan alat ukur tekanan yang sudah standar.
Alat ini bisa di kembangkan ke hal yang lebih luas, seperti monitoring tekanan tangki berbasis web. 🙂 selamat berkreasi.
#learning_and_sharing
#mikroavr
Refrensi: