1. Tujuan [Kembali]
Aplikasi kontrol pemadam kebakaran dengan input sensor api dan sensor asap serta output motor AC (pompa air), buzzer, dan dotmatrix.
Aplikasi kontrol pemadam kebakaran dengan input sensor api dan sensor asap serta output motor AC (pompa air), buzzer, dan dotmatrix.
2. Komponen [kembali]
Komponen-komponen yang digunakan yaitu:
a. Arduino
b. Sumber DC 9 Volt
c. Optocoupler MOC 3021
d. Motor DC (Pompa Air)
e. Flame Sensor
f. Gas sensor MQ-2
g. Buzzer
h. Greenled dan Redled
i. Resistor
j. Jumper
k. Ic max7219 NG
l. Dotmatrix
3. Landasan Teori [kembali]
A. Arduino
Arduino
Uno adalah board mikrokontroler berbasis ATmega328 (datasheet).
Memiliki 14 pin input dari output digital dimana 6 pin input tersebut
dapat digunakan sebagai output PWM dan 6 pin input analog, 16 MHz
osilator kristal, koneksi USB, jack power, ICSP header, dan tombol
reset. Untuk mendukung mikrokontroler agar dapat digunakan, cukup hanya
menghubungkan Board Arduino Uno ke komputer dengan menggunakan kabel USB
atau listrik dengan AC yang-ke adaptor-DC atau baterai untuk
menjalankannya.
Microcontroller ATmega328
Operasi dengan daya 5V Voltage
Input Tegangan (disarankan) 7-12V
Input Tegangan (batas) 6-20V
Digital I / O Pins 14 (dimana 6 memberikan output PWM)
Analog Input Pin 6
DC Lancar per I / O Pin 40 mA
Saat 3.3V Pin 50 mA DC
Flash Memory 32 KB (ATmega328) yang 0,5 KB digunakan oleh bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Clock Speed 16 MHz
B.Sumber DC 9 Volt
Sumber arus listrik DC kependekan dari Direct Current, dikenal dengan arus searah karena merupakan sumber arus yang dihasilkan hanya memiliki satu polaritas. Dikatakan satu polaritas karena arus yang mengalir tetap dalam satu arah yaitu dari positif ke negatif atau dari negatif ke positif. Arus listriD AC akan membentuk suatu gelombang yang dinamakan dengan gelombang sinus atau lebih lengkapnya sinusoida dengan hanya membentuk setengah gelombang. Disini menggunakan sumber DC baterai kotak dengan kapasitas 9 Volt
C. Optocoupler
Masing-masing bagian Optocoupler (Transmitter dan Receiver) tidak memiliki hubungan konduktif rangkaian secara langsung tetapi dibuat sedemikian rupa dalam satu kemasan komponen.
D. Motor DC
Secara teori, Motor DC adalah Motor listrik yang membutuhkan suplai tegangan arus searah atau arus DC (Direct Current) pada kumparan medan untuk diubah menjadi energi mekanik. Kumparan medan pada motor tersebut disebut stator, dan kumparan jangkar disebut rotor. Pada percobaan ini menggunakan motor DC dengan tipe pompa air.
Sensor api adalah sensor yang dirancang untuk mendeteksi dan menanggapi keberadaan api dan memungkinkan mendeteksi api. Respons terhadap nyala api yang terdeteksi bergantung pada pemasangan, tetapi dapat mencakup membunyikan alarm, menonaktifkan saluran bahan bakar (seperti propana atau saluran gas alam), dan mengaktifkan sistem pencegah kebakaran. Ketika digunakan dalam aplikasi seperti tungku industri, perannya adalah untuk memberikan konfirmasi bahwa tungku bekerja dengan benar; dalam hal ini mereka tidak melakukan tindakan langsung di luar memberi tahu operator atau sistem kontrol. Detektor api seringkali dapat merespon lebih cepat dan lebih akurat daripada detektor asap atau panas karena mekanisme yang digunakan untuk mendeteksi nyala api
F. Gas Sensor MQ-2
Sensor MQ-2 adalah sensor yang digunakann untuk mendeteksi konsentrasi gas yang mudah terbakar di udara serta asap dan output membaca sebagai tegangan analog. Sensor gas asap MQ-2 dapat langsung diatur sensitifitasnya dengan memutar trimpotnya. Sensor ini biasa digunakan untuk mendeteksi kebocoran gas baik di rumah maupun di industri. Gas yang dapat dideteksi diantaranya : LPG, i-butane, propane, methane , alcohol, Hydrogen, smoke.
G. Buzzer
Buzzer adalah sebuah komponen elektronika yang berfungsi untuk mengubah getaran listrik menjadi getaran suara. Pada dasarnya prinsip kerja buzzer hampir sama dengan loud speaker, jadi buzzer juga terdiri dari kumparan yang terpasang pada diafragma dan kemudian kumparan tersebut dialiri arus sehingga menjadi elektromagnet, kumparan tadi akan tertarik ke dalam atau keluar, tergantung dari arah arus dan polaritas magnetnya, karena kumparan dipasang pada diafragma maka setiap gerakan kumparan akan menggerakkan diafragma secara bolak-balik sehingga membuat udara bergetar yang akan menghasilkan suara. Buzzer biasa digunakan sebagai indikator bahwa proses telah selesai atau terjadi suatu kesalahan pada sebuah alat (alarm).
H. IC Max 7219 NG
MAX7219 / MAX7221 adalah input / output serial yang ringkas driver layar common-cathode yang antarmuka mikroprosesor (µPs) ke tampilan LED numerik 7-segmen hingga 8 digit, tampilan grafik batang, atau 64 individu LED. Termasuk on-chip adalah kode BCD-B decoder, sirkuit pemindaian multipleks, segmen dan digit driver, dan 8x8 RAM statis yang menyimpan setiap digit. Hanya satu resistor eksternal diperlukan untuk mengatur segmen saat ini untuk semua LED. MAX7221 kompatibel dengan SPI ™, QSPI ™, dan MICROWIRE ™, dan memiliki slewrate-limited driver segmen untuk mengurangi EMI. Antarmuka seri 4-kawat yang nyaman terhubung ke semua μPs umum. Angka individu dapat diatasi dan diperbarui tanpa menulis ulang seluruh tampilan. Itu MAX7219 / MAX7221 juga memungkinkan pengguna untuk memilih kodeB decoding atau no-decode untuk setiap digit. Perangkat termasuk shutdown daya rendah 150μA mode, kontrol kecerahan analog dan digital, scanlimit daftar yang memungkinkan pengguna untuk menampilkan dari 1 hingga 8 digit, dan mode tes yang memaksa semua LED menyala. Untuk aplikasi yang membutuhkan operasi atau segmen 3V berkedip.I. DOTMATRIX
Dot matrix adalah susunan titik-titik dua dimensi yang digunakan untuk menampilkan karakter-karakter, simbol atau gambar. Dahulu dot matrix digunakan pada printer-printer tua dan banyak perangkat tampilan digital. Pada printer, titik-titik tersebut adalah daerah yang diredupkan. Sedangkan pada display, titik-titik tersebut adalah daerah yang bercahaya. Sebagaimana pada LED atau CRT display cara kerjanya titik-titik yang sebelumnya mati, bercahaya sesuai sesuai obyek yang diinginkan.
J. Grafik Respon Sensor
sensor MQ-2 / sensor gas
sensor api/ flame sensor
4. Rangkaian dan Cara Kerja [kembali]
Pada simulasi ini, prinsip kerjanya yaitu menggunakan dua input berupa sensor api dan sensor gas (mq2). Untuk membuat alat pendeteksi bekerja, kedua sensor harus berlogika 1, artinya ketika terdeteksi adanya api dan gas, maka alat akan bekerja. Jadi ketika kedua sensor ini mendeteksi adanya api dan gas, maka sinyal inputan berupa sinyal digital akan masuk ke mikrokontroler dan memberikan perintah ke LED Merah untuk menyala, buzzer menyala, dan motor dc berupa pompa air akan aktif untuk mengeluarkan air. selain itu saat api dan gas terdeteksi, nantinya pada dotmatrix akan muncul tulisan "WARNING!" secara scrooling. hal tersebut diakukan dengan cara membuat HIGH pada pin 3 (Pompa Air), pin 4(Buzzer), pin 6(LED Merah), dan pin 11(Dotmatriks). Sedangkan untuk pin yang menyatakan tidak aktif yaitu pin 5(LED Biru) dibuat LOW. Sebaliknya, jika kedua sensor tidak mendeteksi apa apa, maka mikrokontroler akan memberi perintah untuk LED Biru menyala dengan HIGH Pada Pin 5, sedangkan komponen lainnya tidak aktif dengan cara membuat LOW pada pin 3, pin 4, pin 6, dan pin 11.
5. Listing Program [kembali]
#include <MD_Parola.h> // Library Scrolling Dotmatriks
#include <MD_MAX72xx.h> // Library LED Dotmatriks
#include <SPI.h> // Library Interface Dotmatriks
#define gas 2 // Pendeklarasian Pin 2 Untuk Sensor Gas
#define flame 7 // Pendeklarasian Pin 7 Untuk Sensor Gas
int redLed = 6; // Pendeklarasian Pin 6 Untuk Indikator LED Red Buzzer
int blueLed = 5; // Pendeklarasian Pin 5 Untuk LED Green
int buzzer = 4; // Pendeklarasian Pin 4 Untuk Buzzer
int motor = 3; // Pendeklarasian Motor DC Untuk Pompa Air
#define USE_UI_CONTROL 0 // Pendeklarasian Interface Elemen Dotmatriks
#if USE_UI_CONTROL // Pendeklarasian Kontrol Interface Eleman Dotmatriks
#include <MD_UISwitch.h> // Pendeklarasian Switching Pada Dotmatriks
#endif // Pengkondisian HIGH Atau LOW
#define DEBUG 0 // Pendeklarasian Kondisi LOW
#if DEBUG // Jika Kondisi LOW
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); } // Output Interface PRINT (s,x)
#define PRINTS(x) Serial.print(F(x)) // Output Interface PRINTS (x)
#define PRINTX(x) Serial.println(x, HEX) // Output Interface PRINTX(x)
#else // Sebaliknya
#define PRINT(s, x) // Output Interface PRINT (s,x)
#define PRINTS(x) // Output Interface PRINTS (x)
#define PRINTX(x) // Output Interface PRINTX (x)
#endif // Pendeklarasian High dan Low Dotmatriks
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW // Deklarasi Hubungan Library Dotmatriks dan IC MAX7219
#define MAX_DEVICES 1 // Deklarasi Input IC Pin 1
#define CLK_PIN 13 // Deklarasi Clock IC Pin 13
#define DATA_PIN 11 // Deklarasi Data Output IC pin 11
#define CS_PIN 10 // Deklarasi Data Output IC Pin 10
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES); // Defenisi Library Pada Indikator
#if USE_UI_CONTRO // Jika Menggunakan Pengontrollan Pada Dotmatriks
const uint8_t SPEED_IN = A5; // Kecepatan Interface 5 Dotmatriks Pada Pin A
const uint8_t DIRECTION_SET = 8; // Settingan Direct IC Pin 8
const uint8_t INVERT_SET = 9; // Settingan Invert IC Pin 9
const uint8_t SPEED_DEADBAND = 5; // Setting Kecepatan Interface 5
#endif // Pendeklarasian High Low
uint8_t scrollSpeed = 25; // Kecepatan Scrolling 25 ms
textEffect_t scrollEffect = PA_SCROLL_LEFT; // Arah Scrolling ke Kiri
textPosition_t scrollAlign = PA_LEFT; // Posisi Teks Scrolling Ke Kiri
uint16_t scrollPause = 2000; // Scrolling Berhenti Pada 2000ms
#define BUF_SIZE 75 // Deklarasi Besar BUF 75
char curMessage[BUF_SIZE] = { "" }; // Output Karakter Sebelum Aktif
char newMessage[BUF_SIZE] = { "WARNING!" }; // Output Karakter Setelah Aktif
bool newMessageAvailable = true; // Kondisi High Karakter Saat Aktif
#if USE_UI_CONTROL // Jika Menggunakan Library
MD_UISwitch_Digital uiDirection(DIRECTION_SET); // Switching Library Direct
MD_UISwitch_Digital uiInvert(INVERT_SET); // Switching Library Invert
void doUI(void) // Pendeklarasian doUI(void)
{
{
int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150); // Pembacaan Sinyal Analog (SPEED_IN)
if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) ||
(speed <= ((int16_t)P.getSpeed() - SPEED_DEADBAND)))
{ // Jika Kecepatan Scrolling Sebanding
P.setSpeed(speed); // Settingan Kecepatan Aktif
scrollSpeed = speed; // Kecepatan Scrolling Bernilai Speed
PRINT("\nChanged speed to ", P.getSpeed()); // Print Output Fungsi
}
}
if (uiDirection.read() == MD_UISwitch::KEY_PRESS) // Jika uiDirection.read() == MD_UISwitch::KEY_PRESS
{
PRINTS("\nChanging scroll direction"); // Output Interface Changing scroll direction
scrollEffect = (scrollEffect == PA_SCROLL_LEFT ? PA_SCROLL_RIGHT : PA_SCROLL_LEFT); // Deklarasi Efek Scroll
P.setTextEffect(scrollEffect, scrollEffect); // Settingan Scroll Effect
P.displayClear(); // Display Clear
P.displayReset(); // Display Reset
}
if (uiInvert.read() == MD_UISwitch::KEY_PRESS) // Jika uiInvert.read() == MD_UISwitch::KEY_PRESS
{
PRINTS("\nChanging invert mode"); // Print Karakter Changing invert mode
P.setInvert(!P.getInvert()); // Setting Invert Dotmatriks
}
}
#endif // Pengkondisian High Low
void readSerial(void) // Deklarasi readSerial
{
static char *cp = newMessage; // Deklarasi Static Char
while (Serial.available()) // Pengulangan Proses Yang Belum Diketahui
{
*cp = (char)Serial.read(); // Pendekarasian *cp
if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE - 2)) // Kondisi *cp
{
*cp = '\0'; // *cp= 0
cp = newMessage; // cp= Pesan Baru
newMessageAvailable = true; // Pesan Baru Aktif
}
else // Jika Tidak
cp++; // cp ++
}
}
void setup() // Setup Arduino
{
pinMode(gas, INPUT); // Deklarasi Sensor Gas Sebagai Input
pinMode(flame, INPUT); // Deklarasi Sensor Api Sebagai Input
pinMode(redLed, OUTPUT); // Deklarasi LED RED Sebagai Output
pinMode(blueLed, OUTPUT); // Deklarasi LED BLUE Sebagai Output
pinMode(buzzer, OUTPUT); // Deklarasi Buzzer Sebagai Output
pinMode(motor, OUTPUT); // Deklarasi Motor Sebagai Output
Serial.begin(9600); // Deklarasi Serial 9600 ms
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline"); // Deklarasi Print Library
#if USE_UI_CONTROL // Kondisi Penggunaan Fungsi
uiDirection.begin(); // Memanggil Fungsi Direct
uiInvert.begin(); // Memanggil Fungsi Invert
pinMode(SPEED_IN, INPUT); // Deklarasi Pin SPEED_IN Sebagai Input
doUI(); // Memanggil Fungsi doUI
#endif // Pengkondisian High Low
P.begin(); // Memanggil Fungsi P.begin
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
} // Memasukkab Parameter Tampilan Interface Teks
void loop() // Proses Looping Arduino
{
int varie = digitalRead(gas); // Deklarasi varie Sebagai Pembacaan Digital Sensor Gas
int varia = digitalRead(flame); // Deklarasi varia Sebagai Pembacaan Digital Sensor Api
Serial.print(varie); // Print varie
Serial.print(" "); // Print (" ")
Serial.println(varia); // Print varia
if (varie == HIGH && varia == HIGH) // Jika varie berlogika and terhadap varia
{
digitalWrite(redLed, HIGH); // Digital Output LED Red HIGH
digitalWrite(blueLed, LOW); // Digital Output LED Blue LOW
digitalWrite(buzzer, HIGH); // Digital Output Buzzer HIGH
digitalWrite(motor, HIGH); // Digital Output Motor HIGH
#if USE_UI_CONTROL // Pengkondisian Fungsi USE_UI_CONTROL
doUI(); // Pemanggilan Fungsi
#endif // Pengkondisian HIGH LOW
if (P.displayAnimate()) // Jika P.displayAnimate()
{
if (newMessageAvailable) // Jika (newMessageAvailable)
{
strcpy(curMessage, newMessage); // Pemanggilan Pungsi Terhadap Variabel
newMessageAvailable = false; // Karakter newMessageAvailable LOW
}
P.displayReset(); // Pemanggilan Fungsi P.displayReset()
}
readSerial(); // Pemanggilan Fungsi readSerial()
delay(100); // Delay Fungsi 100ms
}
else // Jika Tidak
{
digitalWrite(redLed, LOW); // Digital Output LED Red LOW
digitalWrite(blueLed, HIGH); // Digital Output BLUE Red HIGH
digitalWrite(buzzer, LOW); // Digital Output Buzzer LOW
digitalWrite(motor, LOW); // Digital Output Motor LOW
delay(100); // Delay 100ms
}
delay(100); // Delay 100ms
}
6. Video Simulasi [kembali]
7. Flowchart [kembali]
8. Link Download [kembali]
Download kumpulan file tugas UAS mikro Disini
Download video simulasi Disini
Tidak ada komentar:
Posting Komentar