MODUL 4 (DEMO PROJECT)

GORDEN OTOMATIS DILENGKAPI KONTROL KIPAS

[KEMBALI KE MENU SEBELUMNYA]

TUJUAN

  • Mempermudah lansia atau orang-orang disabilitas khususnya kesulitan dalam berjalan.
  • Mempermudah pengguna untuk menghidupkan dan mematikan kipas saat suatu kondisi terpenuhi
  • Membuka dan menutup gorden saat suatu kondisi terpenuhi

KOMPONEN

Sensor Cahaya (LDR)



    Sensor Suhu (LM35)




    Arduino Uno




    Motor Driver (L293D)




    LCD (16x2)




    Motor (DC)




      Baterai (9V)





      Arduino

          Arduino adalah kit elektronik atau papan rangkaian elektronik open source yang di dalamnya terdapat komponen utama yaitu sebuah chip mikrokontroler dengan jenis AVR dari perusahaan Atmel. Arduino yang kita gunakan pada praktikum ini adalah arduino mega yang menggunakan chip AVR ATmega 2560 yang memiliki fasilitas PWM, komunikasi serial, ADC, timer, interupt, SPI dan I2C. Sehingga Arduino bisa digabungkan bersama modul atau alat lain dengan protocol yang berbeda-beda. Bahasa pemograman yang digunakan adalah bahasa C. Tetapi bahasa ini sudah dipermudah menggunakan fungsi-fungsi yang sederhana sehingga lebih mudah dalam memprogramnya. Dalam memprogram arduino, kita bisa menggunakan serial komunikasi agar arduino dapat berhubungan dengan komputer ataupun aplikasi lain.
          Beberapa fitur dari Arduino Mega 2560 ini adalah :

      Tabel 1. Spesifikasi Arduino
      Microcontroller
      ATmega2560
      Operating Voltage
      5V
      Input Voltage (recommended)
      7-12V
      Input Voltage (limits)
      6-20V
      Digital I/O Pins
      54 (of which 15 provide PWM output)
      Analog Input Pins
      16
      DC Current per I/O Pin
      20 mA
      DC Current for 3.3V Pin
      50 mA
      Flash Memory
      256 KB of which 8 KB used by bootloader
      SRAM
      8 KB
      EEPROM
      4 KB
      Clock Speed
      16 MHz

          Bagian-bagian dari Arduino Mega 2560 :
      • Soket USB (Soket untuk kabel USB yang disambungkan ke komputer atau laptop. Berfungsi untuk mengirimkan program ke Arduino dan juga sebagai port komunikasi serial.)

      • Input / Output Digital (Input/Output Digital atau digital pin adalah pin-pin untuk menghubungkan Arduino dengan komponen atau rangkaian digital. Pada Arduino Mega terdapat 53 I/O Digital dimana 16 diantaranya dapat dijadikan sebagai output PWM.)

      • Input Analog (Pin-pin yang berfungsi untuk menerima sinyal dari komponen atau rangkaian analog. Misalnya dari potensiometer, sensor suhu, sensor cahaya, dsb. Terdapat 16 input analog pada arduino mega 2560.)

      • Pin POWER (Pin yang memberikan tegangan untuk komponen atau rangkaian yang dihubungkan dengan Arduino. Pada bagian catu daya ini terdapat juga pin Vin dan Reset.Vin digunakan untuk memberikan tegangan langsung kepada Arduino tanpa melalui tegangan USB atau adaptor.)

      • Tombol RESET (Pin untuk memberikan sinyal reset melalui tombol atau rangkaian eksternal.)

      • Jack Baterai/Adaptor (Digunakan untuk menyuplai Arduino dengan tegangan dari baterai/adaptor 9V pada saat Arduino sedang tidak disambungkan ke komputer. Kalau Arduino sedang disambungkan ke komputer melalui USB, Arduino mendapatkan suplai tegangan dari USB, jadi tidak perlu memasang baterai/adaptor saat memprogram Arduino.)

      Liquid Crystal Display (LCD)

          Liquid Crystal Display (LCD) adalah sebuah peralatan elektronik yang berfungsi untuk menampilkan output sebuah sistem dengan cara membentuk suatu citra atau gambaran pada sebuah layar. Secara garis besar komponen penyusun LCD terdiri dari kristal cair (liquid crystal) yang diapit oleh 2 buah elektroda transparan dan 2 buah filter polarisasi (polarizing filter).

      Gambar 1. Penampang Komponen Penyusun LCD

          Keterangan :
      1. Film dengan polarizing filter vertical untuk mempolarisasi cahaya yang masuk.
      2. Glass substrate yang berisi kolom-kolom elektroda Indium tin oxide (ITO).
      3. Twisted nematic liquid crystal (kristal cair dengan susunan terpilin).
      4. Glass substrate yang berisi baris-baris elektroda Indium tin oxide (ITO).\
      5. Film dengan polarizing filter horizontal untuk mempolarisasi cahaya yang masuk.
      6. Reflektor cahaya untuk memantulkan cahaya yang masuk LCD kembali ke mata pengamat.
          Sebuah citra dibentuk dengan mengkombinasikan kondisi nyala dan mati dari pixel-pixel yang menyusun layar sebuah LCD. Pada umumnya LCD yang dijual di pasaran sudah memiliki integrated circuit tersendiri sehingga para pemakai dapat mengontrol tampilan LCD dengan mudah dengan menggunakan mikrokontroler untuk mengirimkan data melalui pin-pin input yang sudah tersedia.

      Gambar 2. Rangkaian Modul LCD


      Tabel 2. Kaki-Kaki LCD


      Pulse Width Modulation

          PWM (Pulse Width Modulation) adalah salah satu teknik modulasi dengan mengubah lebar pulsa (duty cylce) dengan nilai amplitudo dan frekuensi yang tetap. Satu siklus pulsa merupakan kondisi high kemudian berada di zona transisi ke kondisi low. Lebar pulsa PWM berbanding lurus dengan amplitudo sinyal asli yang belum termodulasi.
          Pada board Arduino Uno, pin yang bisa dimanfaatkan untuk PWM adalah pin yang diberi tanda tilde (~), yaitu pin 3, 5, 6, 9, 10, dan pin 11. Pin-pin tersebut merupakan pin yang bisa difungsikan untuk input analog atau output analog. Oleh sebab itu, jika akan menggunakan PWM pada pin ini, bisa dilakukan dengan perintah analogWrite();
          PWM pada arduino bekerja pada frekuensi 500Hz, artinya 500 siklus/ketukan dalam satu detik. Untuk setiap siklus, kita bisa memberi nilai dari 0 hingga 255. Ketika kita memberikan angka 0, berarti pada pin tersebut tidak akan pernah bernilai 5 volt (pin selalu bernilai 0 volt). Sedangkan jika kita memberikan nilai 255, maka sepanjang siklus akan bernilai 5 volt (tidak pernah 0 volt). Jika kita memberikan nilai 127 (kita anggap setengah dari 0 hingga 255, atau 50% dari 255), maka setengah siklus akan bernilai 5 volt, dan setengah siklus lagi akan bernilai 0 volt. Sedangkan jika jika memberikan 25% dari 255 (1/4 * 255 atau 64), maka 1/4 siklus akan bernilai 5 volt, dan 3/4 sisanya akan bernilai 0 volt, dan ini akan terjadi 500 kali dalam 1 detik.

      Gambar 3. Siklus Sinyal PWM pada Arduino


      Analog to Digital Converter

          ADC atau Analog to Digital Converter merupakan salah satu perangkat elektronika yang digunakan sebagai penghubung dalam pemrosesan sinyal analog oleh sistem digital. Fungsi utama dari fitur ini adalah mengubah sinyal masukan yang masih dalam bentuk sinyal analog menjadi sinyal digital dengan bentuk kode-kode digital. Ada 2 faktor yang perlu diperhatikan pada proses kerja ADC yaitu kecepatan sampling dan resolusi.
          Kecepatan sampling menyatakan seberapa sering perangkat mampu mengkonversi sinyal analog ke dalam bentuk sinyal digital dalam selang waktu yang tertentu. Biasa dinyatakan dalam sample per second (SPS). Sementara Resolusi menyatakan tingkat ketelitian yang dimilliki. Pada Arduino, resolusi yang dimiliki adalah 10 bit atau rentang nilai digital antara 0 - 1023. Dan pada Arduino tegangan referensi yang digunakan adalah 5 volt, hal ini berarti ADC pada Arduino mampu menangani sinyal analog dengan tegangan 0 - 5 volt.
          Pada Arduino, menggunakan pin analog input yang diawali dengan kode A( A0- A5 pada Arduino Uno). Fungsi untuk mengambil data sinyal input analog menggunakan analogRead(pin);

      Inter Integrated Circuit (I2C)

          Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didesain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya.

      Gambar 4. Cara Kerja Komunikasi I2C

          Pada I2C, data ditransfer dalam bentuk message yang terdiri dari kondisi start, Address Frame, R/W bit, ACK/NACK bit, Data Frame 1, Data Frame 2, dan kondisi Stop. Kondisi start dimana saat pada SDA beralih dari logika high ke low sebelum SCL.  Kondisi stop dimana saat pada SDA beralih dari logika low ke high sebelum SCL. R/W bit berfungsi untuk menentukan apakah master mengirim data ke slave atau meminta data dari slave. (logika 0 = mengirim data ke slave, logika 1 = meminta data dari slave)
          ACK/NACK bit berfungsi sebagai pemberi kabar jika data frame ataupun address frame telah diterima receiver.


      FLOWCHART

      Master



      Slave 1



      Slave 2




      Master

      #include <Wire.h>

      #define lm35 A0
      #define ldr_out A1
      #define ldr_in A2  

      int valueldr_out, valuelm35, valueldr_in;
      boolean x;

      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        pinMode(lm35, INPUT);
        pinMode(ldr_out, INPUT);
        pinMode(ldr_in, INPUT);
        Wire.begin();
      }

      void slave1(){
        Wire.beginTransmission(1);
        Wire.write(x);
        Wire.endTransmission();
      }

      void slave2(){
        Wire.beginTransmission(2);
        Wire.write(valuelm35);
        Wire.endTransmission();
      }

      void loop() {
        // put your main code here, to run repeatedly:
        valueldr_out = analogRead(ldr_out);
        valueldr_in = analogRead(ldr_in);
        valuelm35 = analogRead(lm35);
        if (valueldr_out > valueldr_in) {
          x = true;
        }
        else {
          x = false;
        }
        slave1();
        slave2();
      }


      Slave 1

      #include <Wire.h>

      #define in1 7
      #define in2 6
      #define en1 5

      int x;
      const byte slaveId = 1;

      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        pinMode(in1, OUTPUT);
        pinMode(in2, OUTPUT);
        pinMode(en1, OUTPUT);
        Wire.begin (slaveId);
        Wire.onReceive(receiveEvent);
      }

      void receiveEvent(){
        x = Wire.read();
        
      }

      void loop() {
        // put your main code here, to run repeatedly:
        if (x == true){
          digitalWrite (en1, 5);
          digitalWrite (in1, HIGH);
          digitalWrite (in2, LOW);
        }
        else {
          digitalWrite (en1, 5);
          digitalWrite (in1, LOW);
          digitalWrite (in2, HIGH);
        }
      }


      Slave 2

      #include <Wire.h>
      #include <LiquidCrystal.h>

      LiquidCrystal lcd(13, 12, 11, 10, 9, 8);

      #define in1 7
      #define in2 6
      #define en1 5

      int x, lm35;
      const byte slaveId = 2;

      void setup() {
        // put your setup code here, to run once:
        Serial.begin(9600);
        pinMode(in1, OUTPUT);
        pinMode(in2, OUTPUT);
        pinMode(en1, OUTPUT);
        Wire.begin (slaveId);
        Wire.onReceive(receiveEvent);
        lcd.begin(16,2);
      }

      void receiveEvent(){
        x = Wire.read();
        lm35 = x*0.488;
      }

      void loop() {
        // put your main code here, to run repeatedly:
        lcd.setCursor (0,0);
        lcd.print ("Suhu :");
        lcd.setCursor (0,1);
        lcd.print(lm35);
        if (lm35 > 25){
          digitalWrite (en1, 10);
          digitalWrite (in1, HIGH);
        }
        else  if (lm35 > 30){
          digitalWrite (en1, 20);
        }
        else {
          digitalWrite (en1, 0);
          digitalWrite (in1, LOW);
        }
      }




      RANGKAIAN SIMULASI




      VIDEO







      ANALISA

               Untuk model 4 demo project kali ini,kelompok 3 membuat Gorden Otomatis Dilengkapi Kontrol Kipas. Untuk tujuan dari alat ini agar mempermudah orang terkhususnya orang yang sulit untuk berjalan seperti para lansia dan sebagainya. Dengan adanya alat ini lebih mempermudah seseorang untuk menghidupkan dan mematikan kipas saat dan membuka dan membuka dan menutup gorden.Pada alat ini, terdapat 2 LDR sebagai input dan 1 sensor LM35. Untuk posisi dari LDR dan LM35, 1 LDR diletakan di dalam ruangan dan LDR yang satunya lagi diletakkan di luar ruangan. Prinsip kerja dari demo project ini dimana LM35 dan LDR pertama,datanya akan diolah di master dan di master nilai dari dua buah LDR akan dibandingkan, diterima di slave 1 dan akan mempengaruhi nilai perputaran motor, dengan kondisi jika nilai LDR didalam lebih besar dibandingkan nilai LDR diluar maka master akan mengirim nilai Boolean false ke slave 1 dan motor akan berputar berlawanan arah jarum jam,tetapi sebaliknya jika nilai LDR didalam lebih kecil dibandingkan nilai LDR diluar maka master akan mengirim nilai bolean true ke slave1 dan motor akan berputar searah jarum jam. Selanjutnya data pengukuran LM35 dari master akan dikirim ke slave dan proses selanjutnya setelah diterima slave 2 dikali dengan 488 yang bertujuan agar data yang berbentuk digital sesuai dengan pengukuran dari LM35 itu sendiri, dengan kondisi jika hasil dari perkalian dengan 0,488 besar dari 25 maka kipas akan hidup dan kondisi jika hasil perkaliannya besar dari 35 maka kipas berputar akan semakin cepat dan kondisi jika hasil perkaliannya kecil sama dari 25, maka kipas akan berhenti berputar ( off). Selanjutnya nilai dari hasil perkalian tadi akan dikirim ke LCD untuk menampilkan nilai suhu ruangan.


      LINK DOWNLOAD

      1. Download HTML :
      2. Download Program Master :
      3. Download Program Slave 1:
      4. Download Program Slave 2 :
      5. Download Rangkaian Proteus :
      6. Download Video :


      Tidak ada komentar:

      Posting Komentar