• Tidak ada hasil yang ditemukan

Modul BAHASA MISI HIDUP MANUSIA_. pdf

N/A
N/A
Protected

Academic year: 2018

Membagikan "Modul BAHASA MISI HIDUP MANUSIA_. pdf"

Copied!
48
0
0

Teks penuh

(1)

Modul Pelatihan

Robot

Line

Follower

Berbasis

Mikrokontroler

LSO

Robotika

Fakultas Teknik

(2)

i

Preface

Judul Asli : Modul Robot Line Follower Berbasis Mikrokontroler

Penulis : Novendra Setyawan

Pengawas : Khusnul Hidayat, S.T.

Penata Grafis & Editor : Aulia Arif Wardana

Copyright © LSO – Robotika

Fakultas Teknik

Universitas Muhammadiyah Malang

2012

Modul ini dibuat sebagai salah satu program dan tujuan LSO – Robotika dalam

hal Bakti Pendidikan. Hak cipta dilindungi undang - undang. Barang siapa

memperbanyak atau menjiplak modul ini, harus seizin LSO – Robotika FT UMM.

Modul ini bersifat bebas untuk dipergunakan atau diperbanyak, tapi tidak untuk

diperjual belikan oleh umum.

Website : lso-robotika.umm.ac.id

Email : wsrobotika@umm.ac.id

Diterbitkan sendiri oleh : LSO - Robotika FT UMM, 2012

Tingkatan : Dasar – Menengah

Terimakasih,

(3)

ii

Pendahuluan

Bismillahirrahmanirrahim,

Puji syukur kita panjatkan kehadirat Allah Yang Maha Esa atas segala

rahmat dan karunia-Nya sehingga Modul Pelatihan Robot Line Follower Berbasis

Mikrokontroler dapat diwujudkan. Modul ini dikemas sebagai pegangan bagi

peserta didik dalam pelatihan robot yang di selenggarakan oleh LSO-Robotika FT

UMM. Modul ini memiliki peran strategis dalam perkembangan belajar dan

mengajar pada satu pelatihan, serta merupakan petunjuk praktis agar peserta

didik lebih mandiri dalam belajar.

Modul ini adalah bukti komitmen kami dalam hal Bakti pada Pendidikan,

melalui pengalaman kami di bidang robotika kami turut andil untuk membagi ilmu

dan mengajarkan ilmu yang kami dapat kepada peserta didik / peserta

pelatihan. Akhirnya dengan ini kami mengharapkan Modul Pelatihan ini dapat

dijadikan petunjuk dan dipergunakan dengan sebaik-baiknya.

Salam Robotika,

(4)

iii

Daftar Isi

Preface ... i

Pendahuluan ... ii

Daftar Isi ... iii

Pengenalan Bahasa C ... 1

I/O (Input dan Output) ... 11

LCD ... 22

ADC (Analog Digital Converter) ... 29

(5)

Robotics Team

University of Muhammadiyah Malang

(6)

1

Pengenalan Bahasa C

Bahasa C tidak mengenal penulisan dalam kolom, yang ia kenal hanya

penulisan di tiap barisnya. Namun demikian, untuk mempermudah pembacaan

program dan untuk keperluan dokumentasi, sebaiknya penulisan bahasa C diatur

sedemikian rupa sehingga mudah dan enak dibaca.

Berikut contoh penulisan Program Bahasa C:

#include <mega8535.h>

 Pengarah Praprosesor

Contoh pengarahan praprosesor dalam penulisan diatas adalah

#include<...>. Pengarah praprosesor ini dipakai untuk membaca file yang

dipakai sebagai header atau library. Contohnya adalah #include

<mega8535.h>, mega8535.h adalah penunjuk praprosesor yang mengarahkan menuju file header atau library pada AT Mega 8535. File-file ini mempunyai ciri

yaitu namanya diakhiri dengan ekstensi .h .

 Fungsi Penulisan

Dalam penulisan bahasa C selalu berbentuk sebuah Fungsi contohnya adalah

main ( )

{

………;

(7)

2

Contoh diatas adalah fungsi utama pada program bahasa C. Tanda ( { )

adalah tanda untuk mengawali bagan atau tubuh program, sedangkan tanda ( }

) adalah tanda akhir dari tubuh program .

Tanda ( ) pada Main ( ) merupakan tanda yang berisikan sebuah argument

atau sebuah variabel nilai yang disertakan dalam tubuh program. Dalam

penulisan pernyatan dalam bahasa C harus diahiri dengan tanda ( ; ).

Tipe Data

Tipe data merupakan bagian program yang paling penting karena tipe data

mempengaruhi setiap instruksi yang akan dilaksanakan oleh computer. Misalnya

saja 5 dibagi 2 bisa saja menghasilkan hasil yang berbeda tergantung tipe

datanya. Jika 5 dan 2 bertipe integer maka akan menghasilkan nilai 2, namun jika

keduanya bertipe float maka akan menghasilkan nilai 2.5000000. Pemilihan tipe

(8)

3

Deklarasi

Deklarasi Variabel

Variabel adalah suatu pengenal (identifier) yang digunakan untuk mewakili

suatu nilai tertentu di dalam proses program. Bentuk umum pendeklarasian

suatu variable adalah : Nama_tipe nama_variabel;

Contoh :

int x; // Deklarasi x bertipe integer

Dengan demikian x merupakan sebuah variabel dengan tipe data integer.

Jadi jangkauan nilai x dari -32768 s/d 32767.

Deklarasi Konstanta

Konstanta merupakan suatu nilai yang tidak dapat diubah selama proses

program berlangsung. Dalam bahasa C konstanta dideklarasikan

menggunakan preprocessor #define.

Contohnya :

#define PHI 3.14

(atau)

#define nim “0111500382”

Deklarasi Fungsi

Fungsi merupakan bagian yang terpisah dari program dan dapat diaktifkan

atau dipanggil di manapun di dalam program. Fungsi dalam bahasa C ada yang

sudah disediakan sebagai fungsi pustaka seperti printf(), scanf(), getch()

dan untuk menggunakannya tidak perlu dideklarasikan.

Fungsi yang perlu dideklarasikan terlebih dahulu adalah fungsi yang dibuat

oleh programmer. Bentuk umum deklarasi sebuah fungsi adalah :

(9)

4

Contohnya :

float luas_lingkaran(int jari);

void tampil();

int tambah(int x, int y);

Operator

Operator merupakan suatu symbol atau tanda yang digunakan sebagai

perintah dalam eksekusi program.

No Operator Arti Contoh

Operator Bitwise (MANIPULASI PER BIT)

Operator bitwise digunakan untuk memanipulasi bit-bit dari nilai data yang ada

(10)

5

• << : Pergeseran bit ke kiri

Contoh:

Datanya = 0x03 << 2 ; // 0x03 digeser kekiri 2 bit hasilnya ditampung di Datanya

Atau

A << = 1 // Isi variabel A digeser ke kiri 1 bit hasilnya

// kembali disimpan di A

• >> : Pergeseran bit ke kanan

Contoh:

Datanya = 0x03 >> 2 ; // 0x03 digeser kekanan 2 bit hasilnya ditampung di

datanya

Atau

A >> = 1 // Isi variabel A digeser ke kanan 1 bit hasilnya

// kembali disimpan di A

• & : Bitwise AND

Contoh:

Hasil = 0x03 & 0x31;

Operasinya

0x03 = 00000011

0x31 = 00110001

________________________________________________

0x01 = 00000001

0x31 = 00110001

(11)

6

Hasil 0x01 = 00110001

• ^ : Bitwise XOR (exclusive OR)

Contoh:

Hasil = 0x02 ^ 0xFA;

Operasinya

0x02 = 00000010

0xFA= 11111010

0x31 = 00110001

Hasil=~0x31 = 11001110 atau Hasil = 11001110

Struktur Kondisi

If

Struktur if dibentuk dari pernyataan if dan sering digunakan untuk menyeleksi

suatu kondisi tunggal. Bila proses yang diseleksi terpenuhi atau bernilai benar,

maka pernyataan yang ada di dalam blok if akan diproses dan dikerjakan.

Bentuk umum struktur kondisi if adalah :

if(kondisi){

pernyataan};

Contoh:

if(X<0){ //jika kondisi X<0 terpenuhi

A=B+C}; //maka aritmatika A=B+C akan di eksekusi

(12)

7

Dalam struktur kondisi if...else minimal terdapat dua pernyataan. Jika kondisi

yang diperiksa bernilai benar atau terpenuhi maka pernyataan pertama yang

dilaksanakan dan jika kondisi yang diperiksa bernilai salah maka pernyataan

yang kedua yang dilaksanakan. Bentuk umumnya adalah sebagai berikut :

if(kondisi){

pernyataan-1};

else{

pernyataan-2};

Contoh:

if(X<0){ //jika kondisi X<0 terpenuhi

A=B+C}; //maka aritmatika A=B+C akan di eksekusi

else{ //jika kondisi X<0 tidak terpenuhi maka aritmatika

A=B-C yang akan

A=B-C}; //dieksekusi

Switch Case Default

Struktur kondisi switch....case....default digunakan untuk penyeleksian kondisi

dengan kemungkinan yang terjadi cukup banyak. Struktur ini akan

melaksanakan salah satu dari beberapa pernyataan „case‟ tergantung nilai

kondisi yang ada di dalam switch.

Selanjutnya proses diteruskan hingga ditemukan pernyataan „break‟. Jika tidak ada nilai pada case yang sesuai dengan nilai kondisi, maka proses akan

diteruskan kepada pernyataan yang ada di bawah „default‟.

Bentuk umum dari struktur kondisi ini adalah :

switch(kondisi){

case 1 : pernyataan-1;break;

case 2 : pernyataan-2;break;

(13)

8

case n : pernyataan-n;break;

default : pernyataan-m;}

Contoh:

switch(A)

{

case 0: X=X+1;break; //Jika A=0 maka X=X+1 Dieksekusi dan

mengecek kondisi lagi

case 1: X=X+2;break; //Jika A=1 maka X=X+2 Dieksekusi dan

mengecek kondisi lagi

case 2: X=X+3;break; //Jika A=2 maka X=X+3 Dieksekusi dan

mengecek kondisi lagi

case 3: X=X+4;break; //Jika A=3 maka X=X+4 Dieksekusi dan

mengecek kondisi lagi

case 4: X=X+5;break; //Jika A=4 maka X=X+5 Dieksekusi dan

mengecek kondisi lagi

case 5: X=X+6;break; //Jika A=5 maka X=X+6 Dieksekusi dan

mengecek kondisi lagi

default: X=X+0;break; //Jika A tidak sama dengan 0,1,2,3,4,5

maka X=X+0

} //Dieksekusi dan mengecek kondisi lagi

While

Perulangan WHILE banyak digunakan pada program yang terstruktur.

Perulangan ini banyak digunakan bila jumlah perulangannya belum diketahui.

Proses perulangan akan terus berlanjut selama kondisinya bernilai benar (true)

dan akan berhenti bila kondisinya bernilai salah.

Bentuk umum dari struktur kondisi ini adalah:

While (ekspresi)

{

Pernyataan_1

Pernyataan_2

(14)

9

Contoh :

While(A<0){ //ketika A<0 maka akan melakukan instruksi

dibawahnya berulang

X++;

B=C+X;}

Do While

Pada dasarnya struktur perulangan do....while sama saja dengan struktur

while, hanya saja pada proses perulangan dengan while, seleksi berada di

while yang letaknya di atas sementara pada perulangan do....while, seleksi

while berada di bawah batas perulangan. Jadi dengan menggunakan struktur do…while sekurang-kurangnya akan terjadi satu kali perulangan.

Bentuk umum dari struktur kondisi ini adalah:

Do

While(A<0) //ketika A<0 maka akan melakukan instruksi

diatasnya berulang

For

Struktur perulangan for biasa digunakan untuk mengulang suatu proses yang

(15)

10

perulangan for tampaknya lebih efisien karena susunannya lebih simpel dan

sederhana.

Bentuk umum perulangan for adalah sebagai berikut :

for(inisialisasi; syarat; penambahan){

pernyataan;}

Contoh:

for(A=10;A>=0;A--){ // nilai A=10 dan akan dikurangi 1 hingga A>=0

(16)

11

I/O (Input/Output)

Pada bab ini akan membahas tentang fungsi mikrokontroler sebagai input

maupun output. Pada ic mikrokontroler terdapat beberpa kaki ic (pin/port pada

ic) yang dapat digunakan sebagai inputan maupun outputan. Contohnya pada

mikrokontroler berjenis AVR pada tipe AT-Mega 8 mempunyai 23 port sebagai I/O.

Berikut adalah gambar konfigurasi pin pada ic AT-Mega 8

Dari gambar diatas 23 pin I/O adalah PC0-PC5, PB0-PB7,dan PD0-PD7. Pada

penggunanya sebagai I/O terdapat suatu istilah dalam configurasi atau settingan

yang harus di ketahui khususnya dalam pemrogram menggunakan Code Vision

AVR. Istilah itu adalah PORTX.N dan DDRX.N. Maksud dari PORTX.N adalah X

menandakan Abjad dan N adalah menandakan pin. Misalkan PORTB.7 maka itu

(17)

12

DDRX.N adalah suatu konfigurasi yang menyatakan apakah suatu PORTX.N

sebagai inputan atau outputan. Jika dalam pengaplikasianya DDRB.0 = 1 maka

PB0 disetting sebagai outputan, sebaliknya jika DDRB.0 = 0 maka PB0 disetting

sebagai inputan. Jika menggunakan CVAVR penyettingan ini juga bisa disetting

langsung pada dialog box berikut:

dari gambar tersebut kita dapat mensetting PORTA dari bit ke 0 sampai bit ke 7

pada tanda panah diatas. Gambar diatas menunjukan sebuah setingan dimana

PORTA bit 0- bit 7 diseting sebagai inputan.

Pada I/O , PORTX.N digunakan sebagai pernyataan apakah sebuah pin dalam

ic berlogikan 0 (mengeluarkan 0 volt) atau berlogika 1 (mengeluarkan 3-5volt).

Misalkan PORTA.1=1; maka pada pin PA1 akan mengeluarkan tegangan 3-5 volt.

Sebaliknya jika PORTA.1=0; maka PA1 akan berlogika 0 dan mengeluarkan

(18)

13

Latihan 1

Pada latihan 1 kita akan menyalakan led secara bergantian.

Langkah-langkah yang harus kita jalankan adalah:

 Setelah membuka program CVAVR pada PC click File kemudian New.

 Pada kotak dialog berikut klik project lalu OK dan OK kembali pada printah

selanjutnya.

 Setelah itu kita setting jenis mikro yang kita gunakan pada kotak dialog

(19)

14

 Setelah itu kita setting pin yang digunakas sebagai Output pada kotak

(20)

15

 Setting PORTB Sebagai output semua.

 Setelah itu kita klik Program, generate program and save, dan kita ketik

nama file (project) pada kotak dialog.

 Berikut adalah contoh listing program penyalaan led

#include <mega8.h>

#include <delay.h>

void main(void)

{

int a;

PORTB=0x00;

DDRB=0xFF;

while (1)

{

for(a=0;a<256;a++){

PORTB=a;

delay_ms(10);

}

}

}

(21)

16

Cara kerja program :

Pada progam ini kita akan menyalakan led secara bergantian. Untuk itu

diperlukan pendeklarasian register untuk mikrokontroler AT-Mega 8 <mega8.h>

dan delay <delay.h> . Setelah itu langsung kepada main program. Padamain

program terdapan inisialisasi dimana sebuah variabel a diinisialisasikan dengan

tipe data integer yang berarti bernilai antara -32768 s/d 32767.

Setelah itu ada inisialisasi selanjutnya yaitu PORTB=0x00; yang berarti pada saat

awal program berjalan semua pin yang ada pada PORTB berlogika 0. Setelah

menginisialisasi nilai awal PORTB, kemudian kita inisialisasi PORTB sebagai outputan

dengan memberikan nilai pada DDRB=0xFF; yang berarti semua pin pada PORTB

adalah outputan.

Pada program ini terdapat suatu fungsi perulangan dalam while (1) yang berarti

melakukan suatu pernyataan yang terus berulang tanpa ada sarat untuk

berhenti. Selanjutnya adalah fungsi dalam for(a=0;a<256;a++) adalah untuk

menghitung variabel a mulai dari 0 hingga 255, yaitu dengan adanya sebuah

inisialisasi yang menyatakan bahwa variabel a dimulai dengan nilai 0 (a=0)

,kemudian memberikan syarat bahwa variabel a berakhir pada 255(a<256), dan

setelah itu memberikan penambahan secara terus menerus hingga syarat yang

ditentukan dengan penambahan 1 (a++). Setelah memberikan suatu perulangan

nilai pada variabel a, maka nilai tersebut kita masukkan pada PORTB yang akan

(22)

17

 Program itu dapat kita simulasikan pada aplikasi program Proteus dengan

gambar sebagai berikut.

(Buka pada folder Rangkaian ISIS dengan nama Latihan 1)

Latihan 2

Pada latihan 2 kita akan menyalakan beberapa led dengan sebuah inputan

berupa push button, dengan langkah langkah sebagai berikut.

 Setelah membuka program CVAVR pada PC, click File kemudian New.

 Pada kotak dialog berikut klik project lalu OK dan OK kembali pada printah

(23)

18

 Setelah itu kita setting jenis mikro yang kita gunakan pada kotak dialog

(24)

19

 Setelah itu kita setting pin yang digunakas sebagai Output pada kotak

dialog Ports

 Setting PORTB Sebagai output semua.

 Setting PINC.0 dan PINC.1 Sebagai input.

 Setelah itu kita klik Program, generate program and save, dan kita ketik

nama file (project) pada kotak dialog.

 Berikut adalah contoh listing program

#include <mega8.h>

(25)

20

#define tombol_1 PINC.0

#define tombol_2 PINC.1

void main(void)

(Buka pada folder Contoh Program dengan nama Latihan 2)

Cara kerja program:

Pada latihan 2 ini led akan menyala jika sebuah tombol ditekan.

Pada mulanya di deklarasikan register AT Mega8 dan delay. Selain itu PINC.0

dan PINC.1 dideklarasikan sebagai tombol_1 dan tombol_2 Dalam main

program kita setting PORTB sebagai outputan dengan logic 1 pada DDRB dan

(26)

21

Pada perulangan While(1) terdapat fungsi if else dimana pada fungsi

if yang pertama jika kita tekan tombol_1 maka akan menghasilkan logic 0 pada

PINC.0 dan jika kondisi itu terpenuhi maka terdapan pernyataan yang akan di

eksekusi yaitu PORTB=0xFF; yang berarti akan memberi outputan 1 kepada

semua pin pada PORTB. Kemudia pada fungsi if yang ke dua terdapat sebuah

kondisi dimana jika tombol_2 ditekan maka akan memberikan logic 0 pada

PINC.1 dan jika itu terpenuhi maka akan meng eksekusi pernyataan yang sama

pada latihan 1. Jika semua kondisi itu tidak terpenuhi maka akan mengeksekusi

pernyataan PORTB=0, yang akan mematikan semua led.

 Program itu dapat disimulasikan pada aplikasi program Proteus dengan

gambar sebagai berikut.

(27)

22

LCD

Pada bab ini akan dibahas tentang bagaimana menggunakan LCD dan

konfigurasi untuk menggunakanya. LCD yang biasa digunakan pada

mikrokontroler adalah LCD modul type M1632. Modul tersebut memiliki berdimensi

16x2 yang berarti 16 baris karakter dan memiliki 2 kolom, jadi dapat menampilkan .

Dalam penggunaanya LCD modul M1632 memiliki konfigurasi sebagai berikut.

Pin 1 (Vss)

Vss merupakan pin sambungan untuk satu daya 0 volt.

Pin 2 (Vdd)

Vdd meupakan sambungan catudaya 5 volt

Pin 3 (Vee)

Merupakan pin kontrol Vcc yang digunakan untuk mengatur kontras display.

Pin 4 (RS)

Merupakan register select (RS), masukan yang pertama dari tiga command

control input. Dengan membuat RS menjadi high, data karakter dapat

ditransfer dari dan menuju modulnya.

Pin 5 (R/W)

Read/Write (R/W). Untuk memfungsikan sebagai perintah Write maka R/W

(28)

23

Pin 6 (Enable)

Enable (E), input ini digunakan untuk transfer aktual dari perintahperintah

atau karakter antara modul dengan hubungan data.

Pin 7 – Pin 14 (Data)

Pin 7 sampai 14 adalah delapan jalur data (D0 – D7) dimana data dapat

ditransfer ke dan dari display.

Pin 15 dan Pin 16

Pin 15 atau A (+) mempunyai level DC +5 V berfungsi sebagai LED backlight +

sedangkan pin 16 yaitu K (-) memiliki level 0 V

Rangkaian interface antara LCD dan mikrokontroler adalah sebagai berikut.

 Pemrograman LCD

Dalam pemrograman LCD menggunakan CVAVR terdapat beberapa istilah

yang harus diketahui yaitu

 lcd_gotoxy (x,y)

Berfungsi memberikan letak kordinat untuk menuliskan suatu karakter.

Misalkan lcd_gotoxy(0,1) maka suatu karakter akan ditulis mulai baris ke 0

(29)

24

 lcd_putsf (“karakter yang ingin ditulis”)

Perintah ini digunakan untuk menuliskan pada lcd. Contoh penggunanya

adalah

lcd_gotoxy(0,0); //karakter dimulai pada baris ke 0 dan

kolom ke 0

lcd_putsf(“WS robotika UMM”) //menuliskan karakter tersebut

pada LCD

 lcd_sprintf (lcd_buffer,”%i”,nilai variabel yang ingin di tampilkan)

Perintah ini digunakan untuk menampilkan suatu variabel yang berubah

ubah. Contohnya adalah sebagai berikut

lcd_gotoxy(0,0); //karakter dimulai pada baris ke 0 dan

kolom ke 0

sprintf(lcd_buffer,"%6i",kecepatan_ki); //variabel disimpan

dalam array lcd_buffer

lcd_puts(lcd_buffer); //menampilkan isi karakter dalam

lcd_buffer

 ftoa(nilai variabel yang ingin di tampilkan,berapa ditampilkan,lcd_buffer)

ftoa adalah salah satu fungsi dalam menampilkan suatu variabel yang

bernilai desimal dengan type data float. Dalam fungsi ini dapat

menampilkan suatu variabel dengan nilai bebrapa digit dibelakang

koma. Contoh penggunaan ftoa :

lcd_gotoxy(0,1); //karakter dimulai pada baris ke 0 dan

kolom ke 1

ftoa(jarak_bawah,1,lcd_buffer); // menyimpan variabel dalam

array

lcd_puts(lcd_buffer); //menampilkan isi karakter dalam

(30)

25

Latihan 3

Pada latihan ini kita akan menampilkan suatu karakter atau kalimat dalam lcd

dengan langkah langkah sebagai berikut :

 Setelah membuka program CVAVR pada PC, click File kemudian New.

 Pada kotak dialog berikut klik project lalu OK dan OK kembali pada printah

(31)

26

 Setelah itu kita setting jenis mikro yang kita gunakan pada kotak dialog

berikut dengan AT-Mega 8

 Pada kotak dialog Alphanumeric LCD kita setting konfigurasi untuk lcd

 Pada kotak dialog Alphanumeric LCD kita check list untuk Enable

Alphanumeric LCD support

 Pada characters/line kita ganti dengan 16 (karena modul lcd 16x2)

(32)

27

 Setelah itu kita klik Program, generate program and save, dan kita ketik

nama file (project) pada kotak dialog.

 Berikut adalah contoh listing program

#include <mega8.h>

#include <alcd.h> // file header untuk lcd

void main(void)

{

// Alphanumeric LCD initialization

// Project|Configure|C Compiler|Libraries|Alphanumeric LCD

menu:

// RS - PORTD Bit 0

// RD - PORTD Bit 1

// EN - PORTD Bit 2

// D4 - PORTD Bit 4

// D5 - PORTD Bit 5

// D6 - PORTD Bit 6

// D7 - PORTD Bit 7

// Characters/line: 16

(33)

28

lcd_gotoxy(4,0); // karakter dimulai pada baris ke 4 dan

kolom ke 0

lcd_putsf("Novendra") ; // menuliskan karakter pada lcd

lcd_gotoxy(0,1); //karakter dimulai pada baris ke 0 dan

kolom ke 1

lcd_putsf("Teknik Elektro") ; // menuliskan karakter pada

lcd

}

(Buka pada folder contoh program dengan nama Latihan 3)

 Program itu dapat disimulasikan pada aplikasi program Proteus dengan

gambar sebagai berikut

(34)

29

ADC (Analog Digital Converter)

ADC atau Analog Digital Converter adalah salah satu fitur mikrokontroler untuk

mengkonversikan besaran fisis khususnya tegangan dalam bentuk digital berupa

nilai biner. Dalam penerapanya ADC sering digunakan untuk interface terhadap

sensor sensor yang memberi outputan berupa nilai tegangan.

 ADC AT Mega 8

Pada AT Mega 8 terdapat 6 pin untuk ADC yang memiliki fidelitas 10 bit yang

dapat digunakan dalam fidelitas 8 bit. Dalam mode penggunaanya hal hal

yang perlu diperhatikan adalah tegangan reffrensi yang digunakan, prescaler

(jumlah pencacah), dan mode operasi.

Untuk menggunakan ADC terdapat beberapa register yang harus dipelajari

diantaranya.

 ADMUX (ADC Multiplexer Selection Register)

Konfigurasi register ADMUX adalah sebagai berikut

REFS1 REFS0 ADLAR MUX3 MUX2 MUX1 MUX0

1. REFS1 – REFS0

Merupakan bit pengatur tegangan referensi ADC ATMega8535. Memeiliki

Nilai Awal 00 sehingga referensi tegangan berasal dari pin AREF. Detail nilai

yang lain dapat dilihat pada tabel berikut

REFS1 REFS0 Mode tegangan Refrensi

0 0 Tegangan dari AREF

0 1 Tegangan dari AVCC

1 0 Tidak digunakan

(35)

30

2. ADLAR

Merupakan bit pemilih mode data keluaran ADC. Bernilai awal 0, sehingga

2 bit tertinggi data hasil konversinya berada di register ADCH dan 8 bit

sisanya berada di register ADCL, seperti dalam tabel 9.3. Apabila bernilai 1,

maka hasilnya pada tabel berikut

ADLAR=0

- - - ADC9 ADC8

ADC7 ADC6 ADC5 ADC4 ADC3 ADC2 ADC1 ADC0

ADLAR=1

ADC9 ADC8 ADC7 ADC6 ADC5 ADC4 ADC3 ADC2

ADC1 ADC0 - - - -

3. MUX3 – MUX0

Merupakan bit pemilih saluran pembacaan ADC. Bernilai awal 00000. Untuk

mode single ended input, MUX[4..0] bernilai dari 00000 hingga 00111,

(36)

31

 ADCSRA

Merupakan register 8 bit yang berfungsi melakukan manajemen sinyal kontrol

dan status dari ADC yang memiliki susunan dalam tabel berikut

ADEN ADSC ADATE ADIF ADIE ADPS2 ADPS1 ADPS0

4. ADEN merupakan bit pengatur aktivasi ADC. Bernilai awal 0. Jika bernilai 1,

maka ADC aktif.

5. ADSC merupakan bit penanda mulainya konversi ADC. Bernilai awal 0

selama konversi ADC akan bernilai 1, sedangkan jika konversi selesai, akan

bernilai 0.

6. ADATE merupakan bit pengatur aktivasi picu otomatis operasi ADC. Bernilai

awal 0, jika bernilai1 maka konversi ADC akan dimulai pada saat transisi

positif dari sinyal picu yang diplih. Pemiliha sinyal picu menggunakan bit

ADTS pada register SFIOR.

7. ADIF merupakan bit penanda akhir suatu konversi ADC. Bernilai awal 0. Jika

bernilai 1, maka konversi ADC pada saluran telah selesai dan data siap

diakses.

8. ADIE merupakan bit pengatur aktivasi interupsi yang berhubungan dengan

akhir konversi ADC. Bernilai awal 0. Jika berniali 1 dan jika konversi ADC telah

selesai, sebuah interupsi akan dieksekusi.

9. ADPS[2..0] merupakan bit pengatur clock ADC. Bernilai awal 000. Detail nilai

bit dalam tabel berikut

ADPS2 ADPS1 ADPS0 Prescaler

(37)

32

1 1 1 128

Latihan 4

Menampilkan ADC yang didapat dari tegangan pada VR (potensio meter) pada

LCD. Untuk dapat melakukanya diperlukan langkah langkah sebagai berikut

 Setelah membuka program CVAVR pada PC, click File kemudian New.

 Kemudian pilih Project dan click OK. Setelah itu click yes dan OK kembali.

 Setting LCD 16x2 pada PORTD bit 0 – bit 7.

 Setelah itu kita setting pada kotak dialog ADC

 Enable-kan ADC dengan menchecklist pada ADC Enable

 Lalu checklist pada Use 8 bit untuk menggunakanya dengan fidelitas 8 bit.

 Gunakan AREF pin sebagai tegangan refrensi ADC.

(38)

33

 Setelah itu kita klik Program, generate program and save, dan kita ketik

nama file (project) pada kotak dialog.

 Berikut adalah contoh listing program

#include <mega8.h>

#include <stdio.h>

#include <delay.h>

#include <alcd.h>

#define ADC_VREF_TYPE 0x20

unsigned char read_adc(unsigned char adc_input) //fungsi

pembacan ADC

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

delay_us(10);// Delay needed for the stabilization of the

ADC input voltage

ADCSRA|=0x40;// Start the AD conversion

while ((ADCSRA & 0x10)==0);// Wait for the AD conversion to

(39)

34

// ADC initialization

// ADC Clock frequency: 31,250 kHz

// ADC Voltage Reference: AREF pin

// Only the 8 most significant bits of

// the AD conversion result are used

ADMUX=ADC_VREF_TYPE & 0xff; //register ADMUX

ADCSRA=0x87; //register ADCSRA

lcd_init(16);

while (1)

{

potensio=read_adc(0); //membaca tegangan potensio pada

pin ADC 0

lcd_gotoxy(0,0); // kordinat ADC pada baris 0 dan

kolom 0

sprintf(lcd_buffer,"ADC=%3i",potensio); // menyimpan

variabel ke array

lcd_puts(lcd_buffer); //menuliskan array lcd_buffer

pada LCD

}

}

(Buka pada folder Contoh Program dengan nama Latihan 4)

Cara kerja Program :

Pada listing program fungsi read_adc ( ) adalah fungsi yang sudah terbentuk

pada CVAVR pada saat kita mengenablekan ADC. Dari itu kita hanya

memanggil fungsi tersebut dan menggunakan variabel potensio dengan type

data unsigned char sebagai variabel yang akan ditampilkan pada LCD

(40)

35

 Listing program tersebut dapat disimulasikan pada rangkaian berikut

(Buka pada folder Rangkaian ISIS dengan nama Latihan 4)

Pada rangkaian ini kita harus menghubungkan tegangan yang sama dengan

tegangan pada inputan ADC dengan AREF dan AVCC yang memiliki tegangan

(41)

36

PWM (Pulse Width Modulation)

PWM (Pulse Width Modulation) dapat digunakan untuk mengatur kecepatan

motor, yaitu dengan cara mengatur lebar pulsa (waktu ON) dari tegangan

sumbernya (tegangan DC). Perbandingan antara waktu ON dan waktu OFF

disebut duty cycle (siklus kerja). Semakin besar siklus kerjanya, akan semakin besar

pula keluaran yang dihasilkan, sehingga kecepatan motor akan semakin besar.

Pembangkitan sinyal PWM dengan mikrokontroler memiliki beberapa keuntungan,

seperti teknik pemrograman yang sederhana, dan rangkaian listrik menjadi

sederhana.

Pada penggunaanya terdapat beberapa register yang harus dipahami, yaitu

diantaranya :

1. Timer/Counter Control Register (TCCR), untuk menentukan mode PWM.

2. Timer/Counter Register (TCNT), digunakan untuk menentukan modulasi

frekuensinya.

3. Output Compare Register (OCR), untuk menentukan nilai siklus kerjanya.

Mode PWM yang akan dibahas adalah mode Fast PWM, karena dalam

perancangan sistem robot ini menggunakan mode Fast PWM. Pada mode Fast

PWM, semakin besar nilai OCR, maka akan semakin besar pula siklus kerja yang

dihasilkan. Keluaran PWM akan berlogika tinggi setelah nilai TOP tercapai sampai

nilai OCR tercapai dan kemudian akan berlogika rendah sampai nilai TOP

tercapai kembali.

Dalam menggunakan PWM untuk mengendalikan motor DC, maka diperlukan

sebuah driver motor sebagai pendukung modulasi. Pada kali ini dalam

pengaturannya menggunakan driver motor dual h-bridge yang sudah terintegrasi

(42)

37

Pada konfigurasi L298 yang harus diperhatikan adalah sebagai berikut :

1. In 1- In 2 dan In3- In4 control pengendali arah putar Out 1 - Out 2 dan Out 3 -

Out 4 (CW/CCW).

In 1 In 2 Arah putar Motor

0 0 Stop

0 1 CW (clock wise)

1 0 CCW(conter clock

wise)

1 1 Stop

2. ENA dan ENB merupakan pin pengendali kecepatan dengan PWM .ENA

untuk OUT 1-OUT2 dan ENB untuk OUT 3-OUT 4. Kedu pin tersebut

dihubungkan pada OC1A dan OC1B yang merupakan pin keluaran PWM

dari AT-Mega 8.

Latihan 5

Pada latihan 5 kita akan mengontrol motor DC dengan menggunakan potensio

yang dimasukan dalam PIN ADC.Untuk menggunakan PWM dalam AT-Mega 8

dengan menggunakan CVAVR diperlukan langkah langkah sebagai berikut

 Setelah membuka program CVAVR pada PC, click File kemudian New.

(43)

38

 Setting PORTB sebagai Output Semua

 Setelah itu kita setting pada kotak dialog ADC

 Enable-kan ADC dengan menchecklist pada ADC Enable

 Lalu checklist pada Use 8 bit untuk menggunakanya dengan fidelitas 8 bit.

 Gunakan AREF pin sebagai tegangan refrensi ADC.

(44)

39

 Lalu kita setting PWM pada kotak dialog Timers

 Pilih clock source dengan system clock dan menggunakan clock dengan

freq menengah

 Pilih Mode dengan Mode Fast PWM top=0x00FF yang berarti 8 bit PWM.

 Untuk mengeluarkat PWM pada OUTA pilih Non-Inv (non inverting PWM)

PWM dengan glombang non pembalik. Jika ingin mengeluarkan 2 PWM

sekaligus maka lakukan hal yang sama pada OUTB

 Checklist pada Timer1 Overflow untuk mendapatkan nilai PWM yang baik.

 Setelah itu kita klik Program, generate program and save, dan kita ketik

(45)

40

 Berikut adalah contoh listing program

#include <mega8.h>

#include <stdio.h>

#include <delay.h>

unsigned char PWM;

#define ADC_VREF_TYPE 0x00

unsigned int read_adc(unsigned char adc_input)

{

ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);

delay_us(10);

ADCSRA|=0x40;

while ((ADCSRA & 0x10)==0);

ADCSRA|=0x10;

return ADCW;

}

void baca_PWM(){

if(PWM>=0 && PWM<=127)

(46)

41

}

}

interrupt [TIM1_OVF] void timer1_ovf_isr(void)

{

baca_PWM();

OCR1A=PWM; //Pemberian Nilai PWM yang akan dikeluarkan

pada pin OC1A

TCCR1A=0x81; //register untuk pengaturan PWM

TCCR1B=0x0B; //register untuk pengaturan PWM

TCNT1H=0x00;

ADMUX=ADC_VREF_TYPE & 0xff;

ADCSRA=0x87;

#asm("sei")

while (1)

(47)

42

PWM=read_adc(0); //Pembacaan adc sebagai input

pengaturan kecepatan motor

}

}

Cara Kerja Program :

Pada contoh program diatas motor diatur dengan inputan berupa sebuah

potensio (VR) dimana jika potensio berputar kekanan maka motor maju dan

jika potensio berputar kekiri motor mundur. Pemberian PWM dilakukan pada

interupt agar update nilai PWM lebih baik.

Pada awal mula program adalah membaca ADC pada looping While(1) yang

diwakili dengan Variabel PWM. Setelah itu diolah nilai ADC, untuk nilai antara

0-127 motor berputar kearah maju dengan kecepatan PWM yang sama dengan

dua kali lipat nilai ADC. Begitu pula sebaliknya, pada nilai 128-255 motor

berputar mundur dengan nilai PWM yang memiliki persaman sebagai berikut :

PWM=PWM-128;

PWM=PWM*2;

Pada persamaan tersebut jika nilai ADC full 255 maka nilai PWM akan sama

dengan PWM=(255-128)x 2= 254 dan saat ADC /Potensio di tengah maka nilai

(48)

LSO

Robotika

Fakultas Teknik

Gambar

gambar sebagai berikut.
gambar sebagai berikut.
gambar sebagai berikut

Referensi

Dokumen terkait

Pembahasan ini mengenai alat kelengkapan hubungan internasional yang terdiri dari alat kelengkapan negara dalam negeri, alat kelengkapan negara di luar

Variabel Mesin N Mean Variance Min. Mesin 5 mengalami kerusakan se- banyak 20 kali dalam periode 2012-2016 yang lebih banyak terjadi dibandingkan mesin 6 yaitu

Syukur Alhamdulliah atas karunia Allah SWT, buku laporan Tugas Akhir saya yang berjudul “Perancangan Aplikasi Mobile Sistem Informasi dan Media Komunikasi untuk Orangtua Siswa

Jika bayi tidak melekat dengan baik maka akan menimbulkan luka dan nyeri pada puting susu dan payudara akan membengkak karena ASI tidak keluar secara

Substitution raw material Leucaena and tithonia 500,6 able to support growth Lnd muhromoyster production harvest at beginning period.. Media

Kemudian penelitian yang dilakukan Hendra Setiawan, Tarida Marlin, dan Yunita yang berjudul Penerapan Metode Job Order Costing Dalam Penentuan Harga Pokok Produksi (Studi

Pengaruh Psikoedukasi Keluarga Terhadap Harga Diri Penderita TBC sebelum perlakuan Dari penelitian yang sudah dilakukan tersebut, dapat diketahui bahwa sebelum

Tujuan dari penelitian ini dapat mengetahui kondisi eksisting dan permasalahan yang timbul di daerah penyediaan air bersih di wilayah setempat, dapat mengetahui