Tugas UAS Mikro




1. Tujuan [Kembali]

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. 

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

B.Sumber DC 9 Volt

Hasil gambar untuk gambar baterai 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
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.

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.
Gambar terkait

E. 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
Hasil gambar untuk flame sensor
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.
Hasil gambar untuk gas sensor mq 2 definisi
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).
Hasil gambar untuk buzzer 12 volt definisi
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.
Related image

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

PRAKTIKUM  ELEKTRONIKA DAN SISTEM DIGITAL OLEH : TAFFANY HUDALIL ALVY (1610953007) DOSEN PENGAMPU: Dr.Eng.,Muhammad I...