Kamis, 20 Juli 2017

Switch LED Menggunakan Button Berbasis Mikrokontroller AT MEGA 32

Switch LED Menggunakan Button Berbasis Mikrokontroller AT MEGA 32




1. Teori 
[kembali]

LED
Light Emitting Diode atau sering disingkat dengan LED adalah komponen elektronika yang dapat memancarkan  cahaya monokromatik ketika diberikan tegangan maju. LED merupakan keluarga Dioda yang terbuat dari bahan semikonduktor. Warna-warna Cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.
LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Yang dimaksud dengan proses doping dalam semikonduktor adalah proses untuk menambahkan ketidakmurnian (impurity) pada semikonduktor yang murni sehingga menghasilkan karakteristik kelistrikan yang diinginkan. Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).

Button Switch
Push button switch (saklar tombol tekan) adalah perangkat / saklar sederhana yang berfungsi untuk menghubungkan atau memutuskan aliran arus listrik. Sebagai device penghubung atau pemutus, push button switch hanya memiliki 2 kondisi, yaitu On dan Off (1 dan 0).

AT Mega 32
AVR Atmega32 merupakan sebuah mikrokontroler low power CMOS 8 bit berdasarkan arsitektur AVR RISC. Mikrokontroler ini memiliki karakteristik sebagai berikut.
·            Menggunakan arsitektur AVR RISC
-       131 perintah dengan satu clock cycle
-       32 x 8 register umum
·                 Data dan program memori
-          32 Kb In-System Programmable Flash
-          2 Kb SRAM
-          1 Kb In- System EEPROM
·         8 Channel 10-bit ADC
·         Two Wire Interface
·         USART Serial Communication
·         Master/Slave SPI Serial Interface
·         On-Chip Oscillator
·         Watch-dog Timer
·         32 Bi-directional I/O
·         Tegangan operasi 2,7 – 5,5 V

Arsitektur AVR ini menggabungkan perintah secara efektif dengan 32 register umum. Semua register tersebut langsung terhubung dengan Arithmetic Logic Unit (ALU) yang memungkinkan 2 register terpisah diproses dengan satu perintah tunggal dalam satu clock cycle. Hal ini menghasilkan kode yang efektif dan kecepatan prosesnya 10 kali lebih cepat dari pada mikrokontroler CISC biasa.

2. Rangkaian Simulasi [kembali]


Pada postingan kali ini saya akan menampilkan bagaimana switch LED menggunakan button. Pada percobaan kali ini saya menggunakan mikrokontroller AT Mega 32 dan button sebagai switch LED.
Fungsi switch button pada percobaan ini adalah untuk merubah pola ON/OFF pada LED. Untuk rangkaiannya, saya menggunakan 8 LED dan 3 switch button, yang mana ke-3 switch button tersebut dapat menampilkan pola yang berbeda - beda. Untuk rangkaiannya dapat dilihat diatas.

Agar rangkaian diatas tersebut dapat berjalan sesuai dengan yang diinginkan, maka perlu dibuat semacam listing program untuk di-upload ke mikrokontroller yang digunakan. Pada percobaan ini, saya menggunakan CodeVision AVR untuk membuat listing program dan sebagai compiler-nya. Berikut listing program yang digunakan.
[kembali]


#include <mega32.h>     //mendeklarasikan penggunaan AT Mega 128
#include <delay.h>         //mendeklarasikan fungsi delay
int shift=128;                  //integer shift

void main(void)         //fungsi utama
{
    PORTA=0x00;DDRA=0xff; //PORT A sebagai output
    PORTD=0x00;DDRD=0xf8; //PORT D sebagai input
    while(1)                 //fungsi while
    {
        PORTA=0x00;        //kondisi awal PORT A dimana semua pin dalam kondisi low
        if (PIND.0==1)        //fungsi if jika Pin 0 pada PORT D bernilai high
        {
            PORTA=shift;                //perintah PORT A untuk bergeser
            shift>>=1;                //pergeseran setiap satu langkah
            delay_ms(100);                //waktu delay yang digunakan setiap pergeseran (100 ms)
            if (shift<1)                        //fungsi if jika shift<1
            {
            shift=128;                //pergerseran kembali ke awal
            }                      
        }
        if (PIND.1==1)        //fungsi if jika Pin 1 pada PORT D bernilai high
        {
            PORTA=0xff;        //semua PORT A bernilai high
            delay_ms(200);                //waktu delay kondisi high (200 ms)
            PORTA=0x00;        //semua PORT A bernilai low
            delay_ms(200);            //waktu delay kondisi low (200 ms)
        }
        if (PIND.2==1)        //fungsi if  jika Pin 2 pada PORT D bernilai high
        {
            PORTA=0xff;        //semua PORT A bernilai high (semua LED hidup)
            delay_ms(100);                //waktu delay kondisi high
            PORTA=0x01;        //LED 1 hidup
            delay_ms(100);                //waktu delay LED 1
            PORTA=0x02;        //LED 2 hidup
            delay_ms(100);                //waktu delay LED 2
            PORTA=0x04;        //LED 3 hidup
            delay_ms(100);                //waktu delay LED 3
            PORTA=0x08;        //LED 4 hidup
            delay_ms(100);                //waktu delay LED 4
            PORTA=0x10;        //LED 5 hidup
            delay_ms(100);                //waktu delay LED 5
            PORTA=0x20;        //LED 6 hidup
            delay_ms(100);                //waktu delay LED 6
            PORTA=0x40;        //LED 7 hidup
            delay_ms(100);                //waktu delay LED 7
            PORTA=0x80;        //LED 8 hidup
            delay_ms(100);                //waktu delay LED 8
            PORTA=0x40;        //LED 7 hidup
            delay_ms(100);                //waktu delay LED 7
            PORTA=0x20;        //LED 6 hidup
            delay_ms(100);                //waktu delay LED 6
            PORTA=0x10;        //LED 5 hidup
            delay_ms(100);                //waktu delay LED 5
            PORTA=0x08;            //LED 4 hidup
            delay_ms(100);                //waktu delay LED 4
            PORTA=0x04;        //LED 3 hidup
            delay_ms(100);                //waktu delay LED 3
            PORTA=0x02;        //LED 2 hidup
            delay_ms(100);                //waktu delay LED 2
            PORTA=0x01;        //LED 1 hidup
            delay_ms(100);                //waktu delay LED 1
            PORTA=0x18;        //LED 5 dan 4 hidup
            delay_ms(100);                //waktu delay LED 5 dan 4
            PORTA=0x24;        //LED 6 dan 3 hidup
            delay_ms(100);                //waktu delay LED 6 dan 3
            PORTA=0x42;        //LED 7 dan 2 hidup
            delay_ms(100);                //waktu delay LED 7 dan 2
            PORTA=0x81;        //LED 8 dan 1 hidup
            delay_ms(100);                //waktu delay LED 8 dan 1
        }
    }
}


Penasaran? Anda dapat melihat simulasi percobaan tersebut dengan menonton video berikut.

4. Video
[kembali]



[kembali]


Jika anda ingin mempelajari lebih lanjut, anda dapat mendownload rangkaian dan listing program melalui link dibawah ini.
http://www.mediafire.com/file/3dmz3q17d2ana28/16-led.rar

Semoga bermanfaat! :)

Tidak ada komentar:

Posting Komentar

Praktikum Mikroprosesor dan Mikrokontroller: Modul I

MODUL I MIKROKONTROLLER ATMEGA128 [KEMBALI KE HOME] DAFTAR ISI 1. Tujuan 2. Alat dan Bahan 3. Dasar Teori 4. Prosedur...