Sensor debu adalah perangkat elektronik yang digunakan untuk mengukur konsentrasi partikel debu di udara, yang sering kali digunakan untuk mendeteksi kualitas udara dan tingkat polusi.Berikut ini adalah cara memprogramnya :
#include <Arduino.h>
int measurePin_sensor_debu = 34;
int ledPower_sensor_debu = 23;
unsigned int samplingTime_sensor_debu = 280;
unsigned int deltaTime_sensor_debu = 40;
unsigned int sleepTime_sensor_debu = 9680;
float voMeasured_sensor_debu = 0;
float calcVoltage_sensor_debu = 0;
float dustDensity_sensor_debu = 0;
float baca_sensor_debu()
{
digitalWrite(ledPower_sensor_debu,LOW);
delayMicroseconds(samplingTime_sensor_debu);
voMeasured_sensor_debu = analogRead(measurePin_sensor_debu);
delayMicroseconds(deltaTime_sensor_debu);
digitalWrite(ledPower_sensor_debu,HIGH);
delayMicroseconds(sleepTime_sensor_debu);
calcVoltage_sensor_debu = voMeasured_sensor_debu*(5.0/1024);
dustDensity_sensor_debu = 0.17*calcVoltage_sensor_debu-0.1;
if ( dustDensity_sensor_debu < 0)
{
dustDensity_sensor_debu = 0.00;
}
return dustDensity_sensor_debu;
}
void setup()
{
Serial.begin(9600);
pinMode(ledPower_sensor_debu,OUTPUT);
}
void loop(){
Serial.println("Debu: " + (String)baca_sensor_debu());
}
Berikut ini adalah penjelasan dari kode di atas :
1. Pendefinisian Variabel
int measurePin_sensor_debu = 34;
int ledPower_sensor_debu = 23;
unsigned int samplingTime_sensor_debu = 280;
unsigned int deltaTime_sensor_debu = 40;
unsigned int sleepTime_sensor_debu = 9680;
float voMeasured_sensor_debu = 0;
float calcVoltage_sensor_debu = 0;
float dustDensity_sensor_debu = 0;
measurePin_sensor_debu
: Pin analog (pin 34) yang terhubung ke output sensor debu yang menghasilkan nilai analog.ledPower_sensor_debu
: Pin digital (pin 23) yang digunakan untuk menyalakan dan mematikan LED pada sensor debu. LED ini mengindikasikan apakah sensor sedang aktif atau tidak.samplingTime_sensor_debu
: Waktu (dalam mikrodetik) yang dibutuhkan untuk melakukan pengambilan sampel data dari sensor debu.deltaTime_sensor_debu
: Waktu (dalam mikrodetik) yang digunakan untuk delay antara pengambilan sampel.sleepTime_sensor_debu
: Waktu (dalam mikrodetik) untuk sensor masuk ke mode tidur setelah mengukur untuk menghemat daya.voMeasured_sensor_debu
: Variabel yang digunakan untuk menyimpan hasil bacaan analog dari sensor debu.calcVoltage_sensor_debu
: Variabel yang menyimpan nilai voltase yang dihitung berdasarkan bacaan analog.dustDensity_sensor_debu
: Variabel untuk menyimpan hasil perhitungan konsentrasi debu yang terdeteksi oleh sensor.
2. Fungsi baca_sensor_debu()
float baca_sensor_debu()
{
digitalWrite(ledPower_sensor_debu,LOW); // Mematikan LED indikator sensor debu
delayMicroseconds(samplingTime_sensor_debu); // Menunggu untuk waktu sampling
voMeasured_sensor_debu = analogRead(measurePin_sensor_debu); // Membaca nilai dari sensor (pin analog)
delayMicroseconds(deltaTime_sensor_debu); // Menunggu antara pengukuran
digitalWrite(ledPower_sensor_debu,HIGH); // Menyalakan kembali LED indikator sensor debu
delayMicroseconds(sleepTime_sensor_debu); // Sensor memasuki mode tidur untuk menghemat daya
// Menghitung nilai tegangan berdasarkan nilai analog
calcVoltage_sensor_debu = voMeasured_sensor_debu * (5.0 / 1024); // Konversi dari 0-1024 ke 0-5V
// Menghitung konsentrasi debu (mg/m³) berdasarkan formula empiris
dustDensity_sensor_debu = 0.17 * calcVoltage_sensor_debu - 0.1;
// Jika nilai debu negatif, atur ke 0.0
if (dustDensity_sensor_debu < 0) {
dustDensity_sensor_debu = 0.00;
}
return dustDensity_sensor_debu; // Mengembalikan hasil pengukuran konsentrasi debu
}
digitalWrite(ledPower_sensor_debu, LOW)
: Mematikan LED untuk menandakan sensor tidak aktif saat membaca data.analogRead(measurePin_sensor_debu)
: Membaca nilai analog dari sensor yang dihubungkan pada pinA0
(pin 34). Nilai ini menunjukkan intensitas debu di udara.calcVoltage_sensor_debu
: Nilai bacaan sensor konversi dari nilai analog ke tegangan dalam satuan volt (5V / 1024).- Formula Penghitungan Debu:
- Menggunakan formula empiris untuk menghitung kepadatan debu (dalam satuan mg/m³) berdasarkan tegangan yang dibaca sensor. Rumus ini bisa bervariasi tergantung jenis sensor, namun rumus di kode ini adalah
dustDensity_sensor_debu = 0.17 * calcVoltage_sensor_debu - 0.1
.
- Menggunakan formula empiris untuk menghitung kepadatan debu (dalam satuan mg/m³) berdasarkan tegangan yang dibaca sensor. Rumus ini bisa bervariasi tergantung jenis sensor, namun rumus di kode ini adalah
- Pengecekan Negatif: Jika hasil pengukuran debu negatif, maka hasilnya diatur menjadi
0.00
, karena kerapatan debu tidak mungkin negatif.
3. Fungsi setup()
void setup()
{
Serial.begin(9600); // Memulai komunikasi serial dengan baud rate 9600
pinMode(ledPower_sensor_debu, OUTPUT); // Mengatur pin LED sebagai output
}
Serial.begin(9600)
: Memulai komunikasi serial dengan komputer atau perangkat lain pada kecepatan 9600 baud.pinMode(ledPower_sensor_debu, OUTPUT)
: Menyetel pin LED (pin 23
) sebagai output agar dapat mengontrol status LED (nyala/mati).
4. Fungsi loop()
void loop(){
Serial.println("Debu: " + (String)baca_sensor_debu()); // Mencetak hasil pengukuran konsentrasi debu ke Serial Monitor
}
Serial.println("Debu: " + (String)baca_sensor_debu())
: Memanggil fungsibaca_sensor_debu()
untuk membaca konsentrasi debu dan menampilkannya di Serial Monitor.
5. Alur Program Secara Keseluruhan
- Program dimulai dengan mempersiapkan komunikasi serial dan menyiapkan pin LED untuk sensor debu.
- Di dalam
loop()
, program secara terus-menerus memanggil fungsibaca_sensor_debu()
untuk membaca dan menghitung konsentrasi debu dari sensor. - Hasil pengukuran konsentrasi debu dicetak ke Serial Monitor setiap kali pembacaan selesai.
- Fungsi
baca_sensor_debu()
mengatur siklus pembacaan sensor dengan waktu sampling, delay, dan kontrol LED yang menandakan status sensor.
6. Ringkasan Fungsi Utama:
baca_sensor_debu()
: Membaca data sensor, mengonversi data menjadi konsentrasi debu, dan mengembalikan nilai tersebut.setup()
: Menyiapkan komunikasi serial dan pin LED.loop()
: Menampilkan hasil bacaan konsentrasi debu secara terus-menerus.
7. Hasil Output
Hasil dari program ini akan mencetak nilai konsentrasi debu dalam satuan mg/m³ ke Serial Monitor. Nilai ini mewakili kepadatan debu di udara yang terdeteksi oleh sensor.
untuk diskusi bisa kontak dibawah ini :

Sosial media :