1. Pendahuluan
[Daftar]
Sumber : Chang, Raymond. Kimia Dasar, Edisi 10 |
Evangelista
Torricelli (1608-1674), matematikawan Italia, dikenal sebagai orang pertama
yang mengenali adanya tekanan udara di atmosfer. Torricelli membuat barometer
pertama, sebuah instrumen untuk mengukur tekanan atmosfer. Cara yang digunakan
adalah dengan mengisi sebuah tabung kaca panjang yang salah satu ujungnya
tertutup dengan merkuri. Jika tabung tersebut dibalikkan dengan hati-hati ke
dalam sebuah wadah berisi merkuri dan tidak ada udara yang memasuki tabung
tersebut, sedikit merkuri akan keluar dari tabung ke wadah membuat ruangan
vakum di atas tabung. Sisa merkuri yang ada di dalam tabung akan ditahan oleh
tekanan udara yang bekerja di permukaan merkuri di dalam wadah.
Tekanan
udara standar (1atm) sama dengan tekanan yang menopang kolom merkuri dengan
ketinggian 760mm pada 0℃ di
permukaan laut. Satuan mmHg juga disebut dengan torr, karena ditemukan
oleh Torricelli. Jadi,
1
torr = 1 mmHg
dan
1
atm = 760 mmHg
Hubungan antara atm dan pascal adalah
1
atm = 101,325 Pa
=
1.01325 x 105 Pa
= 1.01325 x 102 KPa
= 1.01325 x 102 KPa
Sumber : https://media.ncd.io/sites/2/20170721151130/MPL3115A2_I2CS_A_1.png |
2. Fitur dan Keunggulan
[Daftar]
a.
Rentang Operasi : 20kPa
sampai 110kPa tekanan absolut
b.
Suhu Operasi : -40C
sampai +85C
c.
Suplai tegangan
1.95V hingga 3.6V, diatur secara internal
d.
Suplai tegangan
antarmuka 1.6V hingga 3.6V
e.
Output antarmuka
digital I2C
f.
Ketelitian
a. Tekanan : +- 0.05kPa
b. Ketinggian : +- 0.3m
c.
Suhu : +- 3C
g.
Instruksi dapat
diprogram
h.
Akuisisi data
otonom
3. Aplikasi
[Daftar]
a.
Pengukuran
tekanan dan ketinggian dengan akurasi tinggi
b.
Smartphone,
tablet
c.
Peralatan
stasiun cuaca
d.
Pompa infus
e.
Ventilator dan
respirator
4. Informasi Pin
[Daftar]
a.
Gambar pin
Sumber : Datasheet MPL3115A2 |
Sumber : Datasheet MPL 3115A2 |
b.
Deskripsi pin
Sumber : Datasheet MPL3115A2 |
6. Prosedur
[Daftar]
a.
Hubungkan
Arduino Nano dengan I2C Shield.
b.
Hubungkan Sensor
MPL3115A2 dengan port I2C Shield menggunakan kabel konektor.
c.
Hubungkan
Arduino Nano dengan kabel USB untuk mengupload program.
d.
Upload kode program Arduino Nano.
7. Rangkaian
[Daftar]
Sumber : https://www.youtube.com/watch?v=1SQNlzMTexM |
8. Kode Arduino Nano
[Daftar]
#include<Wire.h> | |
// MPL3115A2 I2C address is 0x60(96) | |
#define Addr 0x60 | |
void setup() | |
{ | |
// Initialise I2C communication | |
Wire.begin(); | |
// Initialise Serial Communication, set baud rate = 9600 | |
Serial.begin(9600); | |
// Start I2C transmission | |
Wire.beginTransmission(Addr); | |
// Select control register | |
Wire.write(0x26); | |
// Active mode, OSR = 128, altimeter mode | |
Wire.write(0xB9); | |
// Stop I2C transmission | |
Wire.endTransmission(); | |
// Start I2C transmission | |
Wire.beginTransmission(Addr); | |
// Select data configuration register | |
Wire.write(0x13); | |
// Data ready event enabled for altitude, pressure, temperature | |
Wire.write(0x07); | |
// Stop I2C transmission | |
Wire.endTransmission(); | |
delay(300); | |
} | |
void loop() | |
{ | |
unsigned int data[6]; | |
// Start I2C transmission | |
Wire.beginTransmission(Addr); | |
// Select control register | |
Wire.write(0x26); | |
// Active mode, OSR = 128, altimeter mode | |
Wire.write(0xB9); | |
// Stop I2C transmission | |
Wire.endTransmission(); | |
delay(1000); | |
// Start I2C transmission | |
Wire.beginTransmission(Addr); | |
// Select data register | |
Wire.write(0x00); | |
// Stop I2C transmission | |
Wire.endTransmission(); | |
// Request 6 bytes of data | |
Wire.requestFrom(Addr, 6); | |
// Read 6 bytes of data from address 0x00(00) | |
// status, tHeight msb1, tHeight msb, tHeight lsb, temp msb, temp lsb | |
if (Wire.available() == 6) | |
{ | |
data[0] = Wire.read(); | |
data[1] = Wire.read(); | |
data[2] = Wire.read(); | |
data[3] = Wire.read(); | |
data[4] = Wire.read(); | |
data[5] = Wire.read(); | |
} | |
// Convert the data to 20-bits | |
int tHeight = (((long)(data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16); | |
int temp = ((data[4] * 256) + (data[5] & 0xF0)) / 16; | |
float altitude = tHeight / 16.0; | |
float cTemp = (temp / 16.0); | |
float fTemp = cTemp * 1.8 + 32; | |
// Start I2C transmission | |
Wire.beginTransmission(Addr); | |
// Select control register | |
Wire.write(0x26); | |
// Active mode, OSR = 128, barometer mode | |
Wire.write(0x39); | |
// Stop I2C transmission | |
Wire.endTransmission(); | |
delay(1000); | |
// Start I2C transmission | |
Wire.beginTransmission(Addr); | |
// Select data register | |
Wire.write(0x00); | |
// Stop I2C transmission | |
Wire.endTransmission(); | |
// Request 4 bytes of data | |
Wire.requestFrom(Addr, 4); | |
// Read 4 bytes of data | |
// status, pres msb1, pres msb, pres lsb | |
if (Wire.available() == 4) | |
{ | |
data[0] = Wire.read(); | |
data[1] = Wire.read(); | |
data[2] = Wire.read(); | |
data[3] = Wire.read(); | |
} | |
// Convert the data to 20-bits | |
long pres = (((long)data[1] * (long)65536) + (data[2] * 256) + (data[3] & 0xF0)) / 16; | |
float pressure = (pres / 4.0) / 1000.0; | |
// Output data to serial monitor | |
Serial.print("Altitude : "); | |
Serial.print(altitude); | |
Serial.println(" m"); | |
Serial.print("Pressure : "); | |
Serial.print(pressure); | |
Serial.println(" kPa"); | |
Serial.print("Temperature in Celsius : "); | |
Serial.print(cTemp); | |
Serial.println(" C"); | |
Serial.print("Temperature in Fahrenheit : "); | |
Serial.print(fTemp); | |
Serial.println(" F"); | |
delay(500); | |
} | |
10. Link Download
[Daftar]
LINK VIDEO
LINK DATASHEET
LINK HTML
11. Daftar Pustaka
[Daftar]
Chang, Raymond. Kimia Dasar, Edisi 10, Mc. Graw Hill, New York
https://github.com/ControlEverythingCommunity/MPL3115A2/blob/master/Arduino/MPL3115A2.ino
https://store.ncd.io/product/mpl3115a2-precision-altimeter-with-24-bit-analog-to-digital-converter-i2c-mini-module/
https://www.youtube.com/watch?v=1SQNlzMTexM
https://store.ncd.io/product/mpl3115a2-precision-altimeter-with-24-bit-analog-to-digital-converter-i2c-mini-module/
https://www.youtube.com/watch?v=1SQNlzMTexM