Assalamu-alaikum teman-teman, kembali lagi di Konekthing, kali ini kita akan belajar cara mengukur kepekatan debu pada udara menggunakan sebuah sensor dari sharp yaitu sensor Sharp GP2Y1010AU0F, sensor ini dihargai cukup murah menurut saya, hanya sekitar 150 ribuan. Dengan sensor ini kita dapat mengukur kepekatan debu pada udara yang nantinya dapat kita gunakan mengetahui kualitas udara.
Sebelum belajar menggunakannya maka ada beberapa bahan yang harus kita siapkan, antara lain
1. Arduino Board
2. Sensor Debu / Dust Sensor GP2Y1010AU0F
3. Kabel Jumper
4. Elco 220 uF
5. Resistor 220 Ohm
Setelah semua bahan tersedia selanjutnya kita buat rangkaiannya
Setelah komponen selesai dirangkai selanjutnya kita uploud coding / sketch berikut ini
int ledPower = 2;int measurePin = A0;int samplingTime = 280;int sleepTime = 100;
float voMeasured = 0;float calcVoltage = 0;float dustDensity = 0;float voltDensity = 0;
void setup() {
Serial.begin(9600);
pinMode(ledPower,OUTPUT);
}
void loop() {
digitalWrite(ledPower,LOW); // power on the LED
delayMicroseconds(samplingTime);
voMeasured = analogRead(measurePin); // read the dust value
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(sleepTime);
calcVoltage = ( ( voMeasured * 5 ) / 1024);
voltDensity = calcVoltage - 0.6;
dustDensity = voltDensity * 0.17;
Serial.print(" - Dust Density: ");
Serial.print(dustDensity);
Serial.println(" Kg/m3");}
Setelah coding berhasil di uploud maka kalian akan melihat intensitas debu yang terbaca oleh sensor debu tersebut. untuk mencobanya kalian bisa memasukan ujung lidi / sejenisnya ke lubang pembacaan sensor.
Hal ini untuk mensimulasikan kalau dust sensor mendeteksi debu yang sangat pekat, jika langkah langkah diatas dikerjakan dengan baik maka di serial monitor kita akan melihat intensitas debu yang terbaca adalah sekitar 0.59 kg/m3.
Baik, cara untuk membaca kepadatan debu menggunakan arduino sudah selesai, namun mungkin masih ada yang bertanya tanya fungsi dari setiap baris kode dan darimanakah perhitungan di coding tersebut didapatkan? dan kenapa pas mensimulasikan sensor membaca debu yang sangat padat menggunakan cara memasukan batang lidi? okelah mari kita ulas satu persatu.
Pertama kita bahas pertanyaan yang terakhir dulu. kenapa pas mensimulasikan sensor membaca debu yang sangat padat menggunakan cara memasukan batang lidi?
Oke, Sebelum kita bahas pertanyaan diatas mungkin lebih afdol kalau kalian download dulu datasheetnya disini, karena semua pembahasan kita nanti akan mengacu pada datasheet
Pertama, perlu diketahui bahwa kerja dari sensor ini adalah dengan menembakan cahaya ke photodioda, debu akan dilewatkan antara led dan photo dioda.
Intinya disini adalah debu akan menghalangi cahaya yang diterima oleh photodioda sehingga akan merubah tahanan dari photodioda tersebut. makanya kita menggunakan batang lidi untuk mensimulasikan debu yang tebal. karena pada intinya adalah sama, cahaya akan terhalang oleh suatu benda yang pekat sehingga cahaya yang diterima oleh photodioda sangat sedikit.
Kedua, tentang baris kode berikut
digitalWrite(ledPower,LOW); // power on the LED
Baris kode diatas adalah untuk menyalakan led, menyalakan kenapa digitalWrite LOW?? iya karena disini rangkaian lednya menggunakan kendali negatif / memakakai transistor pnp.
Ketiga, tentang baris kode berikut,
delayMicroseconds(samplingTime);
dimana variabel “samplingTime” telah di definisan sebelumnya pada baris
int samplingTime = 280;
Baris kode diatas adalah untuk memberi jeda waktu agar led dapat menyala dengan sempurna sebelum nantinya jumlah cahaya yang diterima photo dioda dibaca, lalu kenapa delaynya 280 microseconds? angka tersebut didapatkan dari datasheet.
Ke Empat, tentang baris kode berikut
voMeasured = analogRead(measurePin); // read the dust value
digitalWrite(ledPower,HIGH); // turn the LED off
delayMicroseconds(sleepTime);
Baris kode yang pertama adalah untuk membaca tegangan analog yang terbaca setelah photodioda menerima cahaya dari led
baris kedua adalah untuk mematikan led dan baris yang ketiga adalah memberi jeda agar led dapat mati dengan sempurna / benar benar mati.
Kelima, tentang baris kode berikut
calcVoltage = ( ( voMeasured * 5 ) / 1024);
Baris kode tersebut adalah untuk merubah nilai pembacaan yang semula pada tipe data integer (0 – 1023) menjadi data pecahan / float (0.0 – 5.0 volt)
Keenam, tentang beris kode berikut
voltDensity = calcVoltage - 0.6;
dustDensity = voltDensity * 0.17;
Baris kode tersebut adalah rumus / perhitungan yang saya buat menggunakan perhitungan persamaan garis linear sederhana untuk mengubah nilai pembacaan tegangan menjadi kepadatan debu mengacu pada grafik pada datasheet.
baris pertama, kita bisa melihat bahwa kenaikan tegangan pada grafik dimulai dari sekitar 0.6 volt, artinya jika tegangan output sensor dibawah 0.6 volt berarti sensor suhu tidak membaca adanya debu, makanya hasil pengukuran perlu kita kurangi 0.6
Baris kedua, kita tahu bahwa setelah 0.6 volt maka grafik akan cenderung naik sebanding dengan bertambahnya intensitas debu yang terbaca, dimana naiknya garis pada grafik merupakan garis lurus, tentu persamaan garis linear sederhana bermain disini, dimana pada perhitungan persamaan garis lurus kita memerlukan konstanta agar suatu koordinat dapat dicari berdasarkan data korrdinat lain, dalam hal ini adalah agar kepadatan debu bisa dicari berdasarkan tegegangan output sensor, perhitungan untuk mencari konstantannya adalah sebagai berikut :
dust = 0.5 (0 - 0.5), dimana dust = rentan pembacaan suhu pada garis lurus
volt = 2.9 (0.6 - 3.5), dimana volt = rentan pembacaan output voltage pada garis lurus
konstanta = 0.5 : 2.9 = 0.17
Setelah kita tahu kontantanya maka perhitungan untuk mencari kepadatan debu adalah seperti yang saya tuliskan di coding diatas, yaitu
dustDensity = voltDensity * 0.17;
Gimana?? Pusing?? :hammer , jika pusing silahkan ajak teman kalian yang jago matematika untuk diskusi. Hehe
Sekian tutorial dari Konekthing silahkan dicoba. Semoga bermanfaat.
PT. Konekthing Benda Pintar
Jl. Ir H. Juanda No.88 a, Kemiri Muka, Kecamatan Beji, Kota Depok, Jawa Barat 16423
(021) 77808509
info@konekthing.com
Konekthing Bandung
Jl. Sukaresmi IV No.7, Ciumbuleuit, Kec. Cidadap, Kota Bandung, Jawa Barat 40142
Konekthing Yogyakarta
Jl. Duwet, RT.02/RW.32, Duwet, Sendangadi, Kec. Mlati, Kabupaten Sleman, Daerah Istimewa Yogyakarta 55285
(0274) 2883817, 0812-2510-1600
Terima kasih
Wassalamu’alaikum
Tags:
iot,
internetofthings,
arduino,
smartudara,
sensordebu,
sensorudara,
dustsensor,
otomatis,
iotplatform,
iotvendor,
aplikasi,
software,
smartdevice,
smartbox,
smartcontrolling