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
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
1. 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.
Summary:
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
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.
Summary:
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
Gambar 1. Arduino Uno
2. Sumber DC
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
3. Optocoupler
Optocoupler juga dikenal dengan sebutan Opto-isolator, Photocoupler atau Optical Isolator. Optocoupler adalah komponen elektronika yang berfungsi sebagai penghubung berdasarkan cahaya optik. Pada dasarnya Optocoupler terdiri dari 2 bagian utama yaitu Transmitter yang berfungsi sebagai pengirim cahaya optik dan Receiver yang berfungsi sebagai pendeteksi sumber cahaya. Masing-masing bagian Optocoupler (Transmitter dan Receiver) tidak memiliki hubungan konduktif rangkaian secara langsung tetapi dibuat sedemikian rupa dalam satu kemasan komponen.
Gambar 2. Optocoupler
4. 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.
Gambar 3. Motor DC Tipe Pompa Air
5. Flame Sensor
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
Gambar 4. Sensor Api
6. 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.
Gambar 5. Sensor Asap
7. 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).
Gambar 6. Buzzer
8. IC Max 7219NG
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.
Gambar 6. IC Max 7219NG
9. 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.
Gambar 7. Dotmatriks
4. Rangkaian Simulasi [Kembali]
5. Listing Program [Kembali]
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
#define gas 2
#define flame 7
int redLed = 6;
int blueLed = 5;
int buzzer = 4;
int motor = 3;
#define USE_UI_CONTROL 0
#if USE_UI_CONTROL
#include <MD_UISwitch.h>
#endif
#define DEBUG 0
#if DEBUG
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }
#define PRINTS(x) Serial.print(F(x))
#define PRINTX(x) Serial.println(x, HEX)
#else
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTX(x)
#endif
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 1
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
#if USE_UI_CONTROL
const uint8_t SPEED_IN = A5;
const uint8_t DIRECTION_SET = 8;
const uint8_t INVERT_SET = 9;
const uint8_t SPEED_DEADBAND = 5;
#endif
uint8_t scrollSpeed = 25;
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000;
#define BUF_SIZE 75
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = { "WARNING!" };
bool newMessageAvailable = true;
#if USE_UI_CONTROL
MD_UISwitch_Digital uiDirection(DIRECTION_SET);
MD_UISwitch_Digital uiInvert(INVERT_SET);
void doUI(void)
{
{
int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150);
if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) ||
(speed <= ((int16_t)P.getSpeed() - SPEED_DEADBAND)))
{
P.setSpeed(speed);
scrollSpeed = speed;
PRINT("\nChanged speed to ", P.getSpeed());
}
}
if (uiDirection.read() == MD_UISwitch::KEY_PRESS)
{
PRINTS("\nChanging scroll direction");
scrollEffect = (scrollEffect == PA_SCROLL_LEFT ? PA_SCROLL_RIGHT : PA_SCROLL_LEFT);
P.setTextEffect(scrollEffect, scrollEffect);
P.displayClear();
P.displayReset();
}
if (uiInvert.read() == MD_UISwitch::KEY_PRESS)
{
PRINTS("\nChanging invert mode");
P.setInvert(!P.getInvert());
}
}
#endif
void readSerial(void)
{
static char *cp = newMessage;
while (Serial.available())
{
*cp = (char)Serial.read();
if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE - 2))
{
*cp = '\0';
cp = newMessage;
newMessageAvailable = true;
}
else
cp++;
}
}
void setup()
{
pinMode(gas, INPUT);
pinMode(flame, INPUT);
pinMode(redLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(motor, OUTPUT);
Serial.begin(9600);
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");
#if USE_UI_CONTROL
uiDirection.begin();
uiInvert.begin();
pinMode(SPEED_IN, INPUT);
doUI();
#endif
P.begin();
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}
void loop()
{
int varie = digitalRead(gas);
int varia = digitalRead(flame);
Serial.print(varie);
Serial.print(" ");
Serial.println(varia);
if (varie == HIGH && varia == HIGH)
{
digitalWrite(redLed, HIGH);
digitalWrite(blueLed, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(motor, HIGH);
#if USE_UI_CONTROL
doUI();
#endif
if (P.displayAnimate())
{
if (newMessageAvailable)
{
strcpy(curMessage, newMessage);
newMessageAvailable = false;
}
P.displayReset();
}
readSerial();
delay(100);
}
else
{
digitalWrite(redLed, LOW);
digitalWrite(blueLed, HIGH);
digitalWrite(buzzer, LOW);
digitalWrite(motor, LOW);
delay(100);
}
delay(100);
}
#include <MD_MAX72xx.h>
#include <SPI.h>
#define gas 2
#define flame 7
int redLed = 6;
int blueLed = 5;
int buzzer = 4;
int motor = 3;
#define USE_UI_CONTROL 0
#if USE_UI_CONTROL
#include <MD_UISwitch.h>
#endif
#define DEBUG 0
#if DEBUG
#define PRINT(s, x) { Serial.print(F(s)); Serial.print(x); }
#define PRINTS(x) Serial.print(F(x))
#define PRINTX(x) Serial.println(x, HEX)
#else
#define PRINT(s, x)
#define PRINTS(x)
#define PRINTX(x)
#endif
#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW
#define MAX_DEVICES 1
#define CLK_PIN 13
#define DATA_PIN 11
#define CS_PIN 10
MD_Parola P = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
#if USE_UI_CONTROL
const uint8_t SPEED_IN = A5;
const uint8_t DIRECTION_SET = 8;
const uint8_t INVERT_SET = 9;
const uint8_t SPEED_DEADBAND = 5;
#endif
uint8_t scrollSpeed = 25;
textEffect_t scrollEffect = PA_SCROLL_LEFT;
textPosition_t scrollAlign = PA_LEFT;
uint16_t scrollPause = 2000;
#define BUF_SIZE 75
char curMessage[BUF_SIZE] = { "" };
char newMessage[BUF_SIZE] = { "WARNING!" };
bool newMessageAvailable = true;
#if USE_UI_CONTROL
MD_UISwitch_Digital uiDirection(DIRECTION_SET);
MD_UISwitch_Digital uiInvert(INVERT_SET);
void doUI(void)
{
{
int16_t speed = map(analogRead(SPEED_IN), 0, 1023, 10, 150);
if ((speed >= ((int16_t)P.getSpeed() + SPEED_DEADBAND)) ||
(speed <= ((int16_t)P.getSpeed() - SPEED_DEADBAND)))
{
P.setSpeed(speed);
scrollSpeed = speed;
PRINT("\nChanged speed to ", P.getSpeed());
}
}
if (uiDirection.read() == MD_UISwitch::KEY_PRESS)
{
PRINTS("\nChanging scroll direction");
scrollEffect = (scrollEffect == PA_SCROLL_LEFT ? PA_SCROLL_RIGHT : PA_SCROLL_LEFT);
P.setTextEffect(scrollEffect, scrollEffect);
P.displayClear();
P.displayReset();
}
if (uiInvert.read() == MD_UISwitch::KEY_PRESS)
{
PRINTS("\nChanging invert mode");
P.setInvert(!P.getInvert());
}
}
#endif
void readSerial(void)
{
static char *cp = newMessage;
while (Serial.available())
{
*cp = (char)Serial.read();
if ((*cp == '\n') || (cp - newMessage >= BUF_SIZE - 2))
{
*cp = '\0';
cp = newMessage;
newMessageAvailable = true;
}
else
cp++;
}
}
void setup()
{
pinMode(gas, INPUT);
pinMode(flame, INPUT);
pinMode(redLed, OUTPUT);
pinMode(blueLed, OUTPUT);
pinMode(buzzer, OUTPUT);
pinMode(motor, OUTPUT);
Serial.begin(9600);
Serial.print("\n[Parola Scrolling Display]\nType a message for the scrolling display\nEnd message line with a newline");
#if USE_UI_CONTROL
uiDirection.begin();
uiInvert.begin();
pinMode(SPEED_IN, INPUT);
doUI();
#endif
P.begin();
P.displayText(curMessage, scrollAlign, scrollSpeed, scrollPause, scrollEffect, scrollEffect);
}
void loop()
{
int varie = digitalRead(gas);
int varia = digitalRead(flame);
Serial.print(varie);
Serial.print(" ");
Serial.println(varia);
if (varie == HIGH && varia == HIGH)
{
digitalWrite(redLed, HIGH);
digitalWrite(blueLed, LOW);
digitalWrite(buzzer, HIGH);
digitalWrite(motor, HIGH);
#if USE_UI_CONTROL
doUI();
#endif
if (P.displayAnimate())
{
if (newMessageAvailable)
{
strcpy(curMessage, newMessage);
newMessageAvailable = false;
}
P.displayReset();
}
readSerial();
delay(100);
}
else
{
digitalWrite(redLed, LOW);
digitalWrite(blueLed, HIGH);
digitalWrite(buzzer, LOW);
digitalWrite(motor, LOW);
delay(100);
}
delay(100);
}
Pada
simulasi ini, prinsip kerjanya yaitu menggunakan dua input berupa
sensor api dan sensor gas. 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.
Gambar Rangkaian Kontrol Pemadam Kebakaran Aktif
Gambar Rangkaian Kontrol Pemadam Kebakaran Tidak Aktif
7. Video [Kembali]
Tidak ada komentar:
Posting Komentar