Modul 2 Tutorial Simulasi Pengendalian Input Digital Oleh Mikrokontroler AVR ATmega

Oleh : Agung Nugroho Adi - Teknik Mesin UII Yogyakarta

Tujuan Pembelajaran

Setelah melakukan proses pembelajaran peserta diharapkan dapat :

  • Menjelaskan rangkaian input mikrokontroler dari saklar.
  • Membuat program untuk mengendalikan output LED menggunakan saklar.

Saklar

Saklar adalah peranti input digital yang umum ditemui dalam banyak peralatan. Fungsi kerja saklar adalah untuk menghubungkan atau memutus aliran listrik pada suatu rangkaian listrik. Pada saklar terdapat 2 kemungkinan keadaan (biner), yaitu aktif dan tidak aktif. Jika suatu saklar menyambung rangkaian listrik saat aktif (ditekan) disebut sebagai saklar Normally Open (NO), jika sebaliknya disebut sebagai Normally Closed (NC). Berdasarkan cara pengaktifannya, saklar dapat dibedakan menjadi saklar tekan (pushbutton) dan saklar toggle/slide. Saklar tekan akan langsung kembali tidak aktif jika tidak ditekan, sedangkan saklar toggle baru akan tidak aktif jika posisi saklar dipindahkan.

Saklar Untuk Memilih Konfigurasi Nyala LED

  1. Rangkaian

Rangkaian ini menggunakan rangkaian saklar active low, dimana jika saklar ditekan (aktif) maka oleh mikrokontroler dibaca 0. Sebaliknya jika saklar tidak diaktifkan mikrokontroler akan membacanya sebagai logika 1, walaupun sebetulnya keadaan rangkaian adalah floating (mengambang), tidak terhubung dengan Vcc ataupun GND. Hal ini disebabkan port input/output ATMega8535 dapat diatur sebagai input dengan pull-up internal.

 


Gambar 1    Rangkaian saklar dan LED

 

  • Rangkaian seperti ini tidak dapat digunakan untuk semua jenis mikrokontroler, lebih disarankan untuk menggunakan resistor pull up. Resistor pull up digunakan untuk memastikan saat saklar tidak aktif, rangkaian tetap terhubung dengan Vcc.


Gambar 2    Resistor pull-up untuk rangkaian saklar

  1. Pengaturan Konfigurasi Nyala Padam LED Menggunakan Saklar

Buatlah file source dan file project baru dengan nama SAKLAR1.c dan SAKLAR.prj dan tuliskan program di bawah ini.

Program 1    Program Saklar_2.c

//=======================================================================

//Program Saklar_1.c

//Program untuk menampilkan kondisi saklar pada LED

//=======================================================================

#include <mega8535.h>

#define saklar PINB // saklar = PORTB

#define led PORTA // Led = PORTA

void main(void)

{

DDRA=0xFF;     //PortA dikonfigurasikan sebagai output, yaitu PA0 - PA7

PORTA=0xFF;        //PortA diberi nilai awal 0xFF = LED padam

DDRB=0;     //PortB dikonfigurasikan sebagai input, yaitu P

PORTB=0xFF;     //PortB diberikan internal pull up

while(1)

{

if (saklar==0xFF)    //jika tidak ada saklar ditekan

led =0xFF;        //led padam

else if (saklar==0xFE)    //jika PINA.0 ditekan

led = 0xAA;        //led nyala selang-seling

else led=0;        //selain itu led nyala semua

}

}

//=======================================================================

 

Lakukan proses compiling di CVAVR dan simulasi di Proteus ISIS, perhatikan hasilnya dengan mengubah kondisi masing-masing saklar.

  1. Prinsip Kerja File SAKLAR1.c

Pada awal program terdapat pernyataan define yang dipergunakan untuk menggantikan penyebutan PORTA dan PORTB masing-masing dengan nama variabel led dan saklar.

#define saklar PINB // saklar = PORTB

#define led PORTA // Led = PORTA

Hal ini akan berguna pada saat membuat program yang panjang dan kompleks, jika terdapat perubahan penggunaan pin atau port, cukup diganti pada pernyataan define.

PORTA dan PORTB perlu diinisialisasi sebelum digunakan.

DDRA=0xFF;     //PortA dikonfigurasikan sebagai output, yaitu PA0 - PA7

PORTA=0xFF;        //PortA diberi nilai awal 0xFF = LED padam

PORTA digunakan sebagai output dengan semua pin diberi sinyal high atau dengan kata lain LED padam semua.

DDRB=0;     //PortB dikonfigurasikan sebagai input, yaitu P

PORTB=0xFF;     //PortB diberikan internal pull up

PORTB digunakan sebagai input dan sesuai Tabel 21diset dengan internal pull up. Dengan diset menggunakan internal pull up maka PORTB tidak perlu dihubungkan dengan rangkaian eksternal pull up untuk memastikan sinyal yang diterima adalah 1 pada saat rangkaian tidak terhubung.

Tabel 1    Pengaturan pin I/O sebagai input

DDR bit = 0
PORT bit = 1 Input, Internal Pull Up
PORT bit = 0 Input, Floating

Untuk menguji keadaan saklar digunakan pernyataan If...Elseif...Else, sehingga jika keadaan saklar sesuai dengan keadaan yang disyaratkan, maka pernyataan setelah if atau else if akan dilaksanakan. Pada program ini kondisi saklar akan menentukan konfigurasi nyala LED.

if (saklar==0xFF)    //jika tidak ada saklar ditekan

led =0xFF;        //led padam

Jika tidak ada saklar yang diaktifkan maka semua LED akan padam.

else if (saklar==0xFE)    //jika PINA.0 ditekan

led = 0xAA;        //led nyala selang-seling

Jjika hanya saklar PORTB.0 saja yang diaktifkan maka LED akan membentuk konfigurasi nyala/padam secara berselang seling.

else led=0;        //selain itu led nyala semua

Jika selain dari dua keadaan tersebut maka LED akan menyala semua.

 

  1. Pengaturan Pergantian Konfigurasi Nyala Padam LED Menggunakan Saklar

Buatlah file source baru dengan nama file SAKLAR2.c untuk mengganti file source sebelumnya, yaitu file SAKLAR1.c dengan program sebagai berikut.

 

#include <mega8535.h>

#include <delay.h>

#define saklar PINB // saklar = PORTB

#define led PORTA // Led = PORTA

void main(void)

{

unsigned char pilih;        //deklarasi variabel pilih sebagai unsigned char

DDRA=0xFF;     //PortA dikonfigurasikan sebagai output, yaitu PA0 - PA7

PORTA=0xFF;        //PortA diberi nilai awal 0xFF = LED padam

DDRB=0;     //PortB dikonfigurasikan sebagai input, yaitu P

PORTB=0xFF;     //PortB diberikan internal pull up

while(1){

    if (saklar.0==0)pilih=1;     //jika PINA.0 ditekan pilih=1

    else if (saklar.1==0)pilih=2;     //jika PINA.1 ditekan pilih=2

    else if (saklar.2==0)pilih=0;     //jika PINA.2 ditekan pilih=0


    if (pilih==1){     //jika pilih=1

    led =0xFF;     //maka konfigurasi LED bergantian

    delay_ms(250);     //menyala semua dan padam semua

    led =0;

    delay_ms(250);

    }

    else if (pilih==2){     //jika pilih=2

    led = 0xAA;     //maka konfigurasi LED bergantian

    delay_ms(250);     //berselang-seling nyala padam

    led =0x55;

    delay_ms(250);

    }

    else led=0xFF;     //jika pilih=3 maka LED padam

}

}

 

  1. Prinsip Kerja File SAKLAR2.c

Pada dasarnya prinsip kerja file SAKLAR2.c mirip dengan SAKLAR1.c.

    if (saklar.0==0)pilih=1;     //jika PINA.0 ditekan pilih=1

    else if (saklar.1==0)pilih=2;     //jika PINA.1 ditekan pilih=2

    else if (saklar.2==0)pilih=0;     //jika PINA.2 ditekan pilih=0

Pernyataan ini mengecek kondisi saklar mana yang ditekan dan selanjutnya menentukan nilai variabel pilih.

    if (pilih==1){     //jika pilih=1

    led =0xFF;     //maka konfigurasi LED bergantian

    delay_ms(250);     //menyala semua dan padam semua

    led =0;

    delay_ms(250);

    }

Jika nilai variabel pilih adalah 1 maka konfigurasi LED akan menyala semua dan padam semua secara bergantian.

    else if (pilih==2){     //jika pilih=2

    led = 0xAA;     //maka konfigurasi LED bergantian

    delay_ms(250);     //berselang-seling nyala padam

    led =0x55;

    delay_ms(250);

    }

Jika nilai variabel pilih adalah 1 maka konfigurasi LED akan nyala padam berselang-seling secara bergantian.

    else led=0xFF;     //jika pilih=3 maka LED padam

Jika nilai variabel pilih adalah 2 maka semua LED akan padam

Tags: , , , , , ,

Leave a Reply

*