modul avr atmega8535

29
Copyright by HIMANIKA 2010 Page 1

description

atmega 8535 modul for study

Transcript of modul avr atmega8535

Page 1: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 1

Page 2: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 2

BAGIAN I

PENGENALAN DASAR MIKROKONTROLER ATmega 16

Apa itu mikrokontroler ?

Mikrokontroler adalah suatu alat elektronika digital yang mempunyai masukan dan

keluaran serta kendali dengan program yang bisa ditulis dan dihapus dengan cara khusus,

cara kerja mikrokontroler sebenarnya membaca dan menulis data. Mikrokontroler merupakan

komputer didalam chip yang digunakan untuk mengontrol peralatan elektronik, yang

menekankan efisiensi dan efektifitas biaya. Secara harfiahnya bisa disebut "pengendali kecil"

dimana sebuah sistem elektronik yang sebelumnya banyak memerlukan komponen-

komponen pendukung seperti IC TTL dan CMOS dapat direduksi/diperkecil dan akhirnya

terpusat serta dikendalikan oleh mikrokontroler ini. Dengan penggunaan mikrokontroler ini

maka :

• Sistem elektronik akan menjadi lebih ringkas

• Rancang bangun sistem elektronik akan lebih cepat karena sebagian besar dari sistem

adalah perangkat lunak yang mudah dimodifikasi

• Pencarian gangguan lebih mudah ditelusuri karena sistemnya yang kompak

Namun demikian tidak sepenuhnya mikrokontroler bisa mereduksi komponen IC TTL dan

CMOS yang seringkali masih diperlukan untuk aplikasi kecepatan tinggi atau sekedar

menambah jumlah saluran masukan dan keluaran (I/O). Dengan kata lain, mikrokontroler

adalah versi mini atau mikro dari sebuah komputer karena mikrokontroler sudah mengandung

beberapa periferal yang langsung bisa dimanfaatkan, misalnya port paralel, port serial,

komparator, konversi digital ke analog (DAC), konversi analog ke digital dan sebagainya

hanya menggunakan sistem minimum yang tidak rumit atau kompleks.

Mikrokontrol keluarga type AVR

AVR adalah mikrokontroler RISC (Reduce Insruction Set Compute) 8 bit berdasarkan

arsitektur Havard, yang dibuat oleh atmel pada tahun 1996. AVR memiliki keunggulan

dibanding dengan mikrokontroler lain seperti kecepatan eksekusi program yang lebih cepat

yang lebih cepat dibanding dengan mikrokontroler MCS51 yang memiliki arsitektur CISC

(complex Intruktion Set Compute). Fitur AVR memiliki fitur lengkap (ADC internal,

EEPROM Internal, Timer/Counter, Watchdog Timer, PWM, Port I/O, komunikasi serial dll).

Secara umum mikrokontroler AVR dapat dikelompokkan menjadi 3 kelompok, yaitu

Page 3: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 3

keluarga AT90xx, ATMega, dan ATtiny. Type dari mikrokontroler AVR seperti ATMega 16,

ATMega 8, ATMega 32, ATMega 2313, ATMega 8535, ATMega 128, ATMega 64.

Pemrograman AVR dapat menggunakan low level language (assembly) dan high level

language (C, Basic, Pascal, Java) tergantung compiler yang digunakan. Untuk kedepannya

kita akan menggunakan pmrograman bahasa C dengan software kompilernya menggunakan

Code Vision AVR dan menggunakan ATMega 16 sebagai perangkat kerasnya.

Mikrokontroler ATMega 16

Fitur yang dimiliki adalah sebagai berikut

1. Mikrokontroler AVR 8 bit yang memiliki kemampuan tinggi, dengan daya rendah

2. Arsitektur RISC dengan Troughput mencapai 16 MIPS pada frekuensi 16MHz.

3. Memilikikapasitas flash memori 16 Kbyte, EEPROM 512 Byte dan SRAM 1 Kbyte.

4. Saluran I/O sebanyak 32 buah, yaitu Port A, Port B, Port C, dan Port D.

5. CPU yang terdiri atas 32 buah register.

6. Unit interupsi internal dan ekternal

7. Port USART untuk komunikasi serial

8. Fitur peripheral

- Tiga buah Timer/Counter dengan kemampuan perbandingan

• 2 buah Timer/Counter 8 bit dengann prescaler terpisah dan mode compare

• 1 buah Timer/Counter 16 bit dengan prescaler terpisah, mode compare,

dan mode capture

- Real time counter dengan osilator sendiri

- 4 channel PWM

- 8 channel, 10-bit ADC

• 8 single-ended channel

• 7 differential channel hanya pada kemasan TQFP

• 2 differential channel dengan programmable gain 1x, 10x, atau 100x

- Byte-oriented two wire serial interface

- Programmable serial USART

- Antarmuka SPI

- Watchdog timer dengan oscillator internal

- On-chip analog comparator

Page 4: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 4

Konfigurasi pin AVR ATMega 16

Gambar 1.1 Konfigurasi kaki (pin) ATMega 16

Konfigurasi pin ATMega 16 dengan kemasan 40 pin DIP (Dual in line Package) dapat

dijelaskan sebagai berikut:

1. VCC merupakan pin yang berfungsi sebagai masukan catu daya. Sebaiknya

menggunakan catu daya 5 V dengan regulator tegangan.

2. GND merupakan pin Ground

3. Port A(PA0..PA7) merupakan pin input/output dua arah dan pin masukan ADC.

4. Port B(PB0..PB7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti

dapat dilihat pada table di bawah ini.

Pin Fungsi khusus

PB7 SCK (SPI Bus Serial Clock)

PB6 MISO (SPI Bus Master Input/lave Output)

PB5 MOSI (SPI Bus Master Output?Slave Input)

PB4 SS (SPI Slave Select Input)

Page 5: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 5

PB3 AIN1 (Analog Comparator Negatif Input)

OC0 (Timer/Counter0 Output Compare Match Output)

PB2 AIN0 (Analog Comparator Positive Input)

INT2 (External Interrupt 2 input)

PB1 T1 (Timer/Counter1 External Counter Input)

PB0 T0 T1 (Timer/Counter0 External Counter Input)

XCX (USART External Clock Input/Output)

5. Port C(PC0..PC7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti

dapat dilihat pada table di bawah

Pin Fungsi khusus

PC7 TOSC2 (Timer Oscillator Pin2)

PC6 TOSC1 (Timer Oscillator Pin1)

PC5 TDI (JTAG Test Data In)

PC4 TDO (JTAG Test Data Out)

PC3 TMS (JTAG Test Mode Select)

PC2 TCK (JTAG Test Clock)

PC1 SDA (Two-wire Serial Bus Data Input/Outpur Line)

PC0 SCL (Two-Wire Serial Bus Clock Line)

6. Pirt D(PD0..PD7) merupakan pin input/output dua arah dan pin fungsi khusus, seperti

dilihat pada table dibawah.

Pin Fungsi khusus

PD7 OC2 (Timer/Counter2 Output Compare Macth Output)

PD6 ICP (Timer/Counter1 Input Capture Pin)

PD5 OC1A (Timer/Counter1 Output Compare A Macth Output)

PD4 OC1B (Timer/Counter1 Output Compare B Macth Output)

PD3 INT1 (External Interruft 1 input)

PD2 INT0 (External Interruft 0 input)

PD1 TXD (USART Output Pin)

PD0 RXD (USART Input Pin)

Page 6: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 6

7. RESET merupakan pin yang digunakan untuk mereset mikrokontroler

8. XTAL1 dan XTAL2 merupakan pin masukan clock ekstenal

9. AVCC merupakan pin masukan tegangan untuk ADC

10. AREF merupakan pin masukan tegangan referensi ADC

Page 7: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 7

BAGIAN II

DOWNLOADER LPT

Downloader LPT (ISP Programmer) merupakan sebuah perangkat downloader yang

minimum dan sederhana karena hanya menggunakan port LPT (Parallel port) dan resistor

sebagai pengaman. Konfigurasi pin LPT dan AVR sebagai berikut:

PIN Mikrokontroller PIN LPT

MOSI (6) INIT (16)

MISO (7) ACK (10)

SCK (8) SLCT-IN (17)

RESET (9) AUTOLF (14)

GND (11) GND (25)

Pengaturan Programmer Codevision AVR :

1. Jalankan Aplikasi Codevision AVR.

Page 8: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 8

2. Klik tombol Programmer Settings atau Settings-Programmer dan atur seperti

gambar. nb : Pengaturan ini hanya sekali saja.

3. Klik tombol Terminals Settings atau Settings-Terminal dan atur seperti pada

gambar. nb : Pengaturan ini hanya sekali saja

.

Page 9: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 9

BAGIAN III

DOWNLOADER USB

USBasp merupakan in-circuit programmer untuk mikrokontroler Atmel AVR. Rangkaiannya menggunakan ATMega48 atau ATMega8 dan beberapa komponen pasif lainnya. Programmer atau downloader ini menggunakan sebuah penggerak USB hanya-firmware (firmware-only USB driver), tidak memerlukan pengontrol USB khusus.

Fitur-fitur

• Bisa digunakan untuk berbagai macam platform, sudah diuji untuk Linux, Mac OS dan Windows;

• Tidakmemerlukan pengontrol atau komponen smd khusus;

• Kecepatan pemrograman bisa mencapai 5kByte/detik; • Opsi SCK untuk mendukung mikrokontroler target yang berkecepatan rendah (< 1.5

MHz);

Gambar Rangkaian USB Downloader :

Page 10: modul avr atmega8535

Copyright by HIMANIKA 2010

USB Downloader hanya membutuhkan driver USB ASP dan software

downloader semisal AVR Dude, Khazama AVR Programmer, dan

Gambar Schematic board PCB dengan menggunakan PCB Express :

MOSI, MISO, SCK, OSC, dan GND

RESET, dan GND (AVR/Sistem Minimum

SlowSCK

USB Downloader hanya membutuhkan driver USB ASP dan software

downloader semisal AVR Dude, Khazama AVR Programmer, dan eXtreme-Burner AVR.

Gambar Schematic board PCB dengan menggunakan PCB Express :

MOSI, MISO, SCK, OSC, dan GND(USB Downloader) ke MOSI, MISO, SCK,

/Sistem Minimum)

GND

RESET

SCK

MISO

MOSI

OSC

RESET

ISP Downloader

to Computer

SELF PROGRAMMING

SlowSCK

Page 10

USB Downloader hanya membutuhkan driver USB ASP dan software USB

Burner AVR.

MOSI, MISO, SCK,

ISP Downloader

SELF PROGRAMMING

Page 11: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 11

BAGIAN IV

SISTEM MINIMUM ATmega 16

Sistem minimum disini adalah rangkaian utama di dalam robot Line Follower,

rangkaian ini memiliki fungsi sebagai pemberi catu daya, tombol navigasi, port downloader

ISP , driver motor, dan Port LCD. Tanpa rangkaian sistem minimum ini maka

mikrokontroller tidak akan bisa bekerja. Berikut ini gambar rangkaian minimum sistem

ATMega 16 :

Keterangan :

1. PINA berfungsi sebagai PIN ADC (Analog to Digital Converter) yang terhubung ke

sensor photo diode.

2. PINB berfungsi sebagai pengontrol LCD.

3. PORTD.0 – 5 berfungsi sebagai kendali driver motor (L298).

4. PIND6-7 dan PIND0-1 sebagai tombol navigasi.

Page 12: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 12

Page 13: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 13

BAGIAN V

ROBOTIC LINE FOLLOWER BASIC

Line Follower Robot adalah robot autonomus yang bergerak mengikuti garis secara

otomatis. Robot Follower biasanya menggunakan sensor photo diode atau LDR (Light

Dependent Resistor) sebagai penerima dan LED sebagai pemancar sinar. Untuk

penggeraknya robot Line Follower biasanya mengunakan roda(Wheeled), tetapi di dalam

aplikasi lain menggunakan panggerak berupa kaki (Legged) .

Robot Line Follower mempunyai beberapa bagian utama di dalam hardware dan

software ,yaitu :

1. Sistem minimum mikrokontroller.

Sistem minimum berfungsi sebagai rangkaian utama dari Robot Line

Follower. Di dalam sistem minimum ini terdapat mikrokontroller (ATMega 16 ) yang

berfungsi sebagai rangkaian pengendali utama yang mengatur kecepatan, arah gerak

robot, sistem kendali, dan menu program.

2. Driver Motor.

Driver motor bekerja dengan mendapat perintah dari mikrokontroller, driver

motor bekerja untuk mengendalika arah gerak maju, mundur dan pengereman dari

motor di dalam Robot Line Follower.

Page 14: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 14

3. Sensor Proximity.

Sensor berfungsi sebagai pengindra(perasa) dari sebuah Robot Line Follower,

sensor yang sering digunakan antara lain adalah Photo Diode. Photo dioda bekerja

dengan menerima sinar/ cahaya baik cahaya yang tampak maupun yang tidak tampak

oleh mata manusia (Infrared).

Prinsip kerjanya sederhana, hanya memanfaatkan sifat cahaya yang akan

dipantulkan jika mengenai benda berwarna terang dan akan diserap jika mengenai

benda berwarna gelap. Sebagai sumber cahaya kita gunakan LED (Light Emiting

Diode) yang akan memancarkan cahaya merah. Dan untuk menangkap pantulan

cahaya LED, kita gunakan photodiode. Jika sensor berada diatas garis hitam maka

photodioda akan menerima sedikit sekali cahaya pantulan. Tetapi jika sensor berada

diatas garis putih maka photodioda akan menerima banyak cahaya pantulan. Berikut

adalah ilustrasinya :

Sifat dari photodioda adalah jika semakin banyak cahaya yang diterima, maka

nilai resistansi diodanya semakin kecil. Dengan melakukan sedikit modifikasi, maka

besaran resistansi tersebut dapat diubah menjadi tegangan. Sehingga jika sensor

berada diatas garis hitam, maka tegangan keluaran sensor akan besar, demikian pula

sebaliknya. Berikut adalah gambar rangkaian sensor proximity yang sering digunakan

pada robot Line Follower :

a. Sensor Dengan Komparator.

Agar dapat dibaca oleh mikrokontroler, maka tegangan sensor harus

disesuaikan dengan level tegangan TTL yaitu 0 – 1 volt untuk logika 0 dan 3 – 5

volt untuk logika 1. Hal ini bisa dilakukan dengan memasang operational

amplifier yang difungsikan sebagai komparator. Output dari photodiode yang

masuk ke input inverting op-amp akan dibandingkan dengan tegangan tertentu

Page 15: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 15

dari variable resistor VR. Tegangan dari VR inilah yang kita atur agar sensor

proximity dapat menyesuaikan dengan kondisi cahaya ruangan.

b. Sensor dengan ADC (Analog to Digital Converter).

Sensor ADC merupakan perangkat sensor yang sangat sederhan. Perangkat sensor ini hanya terdiri dari sebuah Resistor dan sensor phototransistor/photodeoda/LDR yang mengunakan prinsip pembagi tegangan sebagai parameternya. Sensor ADC member inputan ke mikrocontroler berupa tegangan variasi yang diterjemahkan oleh mikro sebagai bilangan 00000000(0) sampai 11111111(255). Jadi dengan ini kita tidak memerlukan komparator sebagai indicator 1/0, tapi memerlukan pemograman mikrocontroler yang lebih sulit, yaitu dengan mengatur parameter variasi tegangan input yang diterjemah mikro sebagai logic 0/1. Misal : Jika out sensor 3,5-5V diterjemahkan sebagai logic 1.

Jika out sensor kurang dari 3,5 V diterjemahkan 0.

4. LCD(Liquid Crystal Display).

LCD berfungsi untuk menampilkan tampilan menu dari program Robot Line

Follower. LCD yang biasa digunakan disini adalah LCD yang berukuran 16x2

karakter sehingga cukup untuk menampilkan pengaturan program seperti kecepatan

motor, kepekaan sensor, kendali PID, dan delay.

Page 16: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 16

Gbr. 4. Rangkaian LCD 16x2 (LMB 162)

Gbr. 5. Tampilan LCD 16x2 Karakter

5. GearBox (Mekanik).

GearBox berfungsi untuk mengatur torsi dari motor supaya dapat

menggerakkan roda dari Robot Line Follower dan juga sebagai tempat roda dan

motor. Gearbox biasanya digunakan untuk memperbesar Torsi dari motor (motor

DVD), ini dikarenakan motor DVD mempunyai torsi yang kecil tetapi mempunyai

kecepatan putaran(rpm) yang cepat. Oleh karena itu diperlukan sebuah gearbox untuk

memperbesar torsinya sehingga dapat menggerakkan roda dari robot. Motor yang

biasanya dipakai untuk Robot Line Follower adalah motor DVD, ini karena motor

DVD mudah dikendalikan, kecepatan motor yang tinggi, dan harganya yang murah.

Page 17: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 17

Page 18: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 18

BAGIAN VI

ALGORITMA PEMROGRAMAN C/C++

CONTOH ALGORITMA PADA PEMROGRAMAN MIKROKONTROLLER DENGAN BAHASA C/C++

1. PENDAHULUAN Bahasa C/C++ adalah bahasa pemrograman yang sangat digemari karena bahasa C/C++ adalah bahasa yang sangat kompatibel untuk pemrograman computer berbasis Windows ataupun nix, bahkan bisa untuk pemrograman mikrokontroler dari Atmel, PIC, dsb. Bahasa C/C++ adalah suatu singkatan yaitu C yang berarti Case sensitive, artinya dalam pemrograman bahasa C ini antara huruf besar dan huruf kecil adalah berbeda ( A ≠ a ). Maka dalam membuat progam dengan bahasa C/C++ ini harus berhati-hati dalam menuliskan perintah, konstanta, dsb. Mengapa menggunakan bahasa C/C++???? Bahasa C/C++ adalah salah satu bahasa pemrograman yang mendekati bahasa mesin (low level programming), sehingga hasil kompilasinya lebih kecil dibanding bahasa high level programming, selain itu orang yang sudah menguasai bahasa C/C++ lebih mudah dan cepat untuk mempelajari bahasa high level programming dikarenakan cara berpikir orang tersebut lebih terstruktur dan sistematis atau bisa dikatakan orang tersebut sudah memahami cara kerja suatu CPU (Central Processing Unit). Secara umum struktur pemrograman bahasa C/C++ terdiri dari beberapa bagian yaitu

A. Header B. Definisi/define C. Variabel dan konstanta D. Fungsi tambahan E. Fungsi utama/void main (program akan dimulai dari fungsi ini)

Pada dasarnya pemrograman mikrokontroler ini adalah fungsi I/O, yaitu pengolahan nilai-nilai input yang diproses untuk menghasilkan nilai-nilai output yang dikehendaki. Nilai-nilai input atau output biasanya berbentuk bilangan biner atau hexadecimal.

2. HEADER Dalam bahasa pemrograman C/C++ dikenal perintah yaitu INCLUDE, yaitu sebuah perintah yang digunakan untuk memasukkan sebuah file *.h, yang berisi perintah-perintah atau konstanta yang digunakan dalam membuat program. Sebagai contohnya

#include <stdio.h>

Page 19: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 19

Maka semua perintah dan konstanta yang ada dalam file stdio.h dapat diakses dalam project yg dibuat.

3. DEFINE Perintah ini digunakan untuk mendefinisikan nilai, alamat, atau sejenisnya. Secara umum struktur define adalah sebagai berikut

#define <nama> <alamat/nilai>

Sebagai contohnya

#define phi 3,14

Dari baris berintah diatas, dapat ditarik kesimpulan bahwa nilai phi = 3,14.

4. VARIABLE, KONSTANTA, JENISA DATA, DAN PENULISAN BIL ANGAN a. VARIABEL

Dalam pemrograman C/C++ penulisan variable dapat ditulis sebagai berikut

<jenis data> <nama variable>

Sebagai contoh int indeks, dari contoh tersebut nama variable yang bernama indeks mempunyai jenis data yaitu integer.

b. KONSTANTA

Konstanta atau yang disebut nilai tetap/constant dalam pemrograman C/C++ dapat dituliskan

<jenis data> <nama konstanta> = <nilai>

Hampir mirip dengan penulisan varibel, hanya saja ditambahkan besar nilainya.

Misalnya saja, int kecepatan_motor = 200. Sehingga konstanta yang bernama kecepatan_motor akan bernilai 200.

c. JENIS DATA

Page 20: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 20

Tipe Ukuran (bit)

Range

bit 1 0 dan 1

char 8 -128 to 127

unsigned char 8 0 to 255

signed char 8 -128 to 127

int 16 -32768 to 32767

short int 16 -32768 to 32767

unsigned int 16 0 to 65535

signed int 16 -32768 to 32767

long int 32 -2147483648 to 2147483647

unsigned long int 32 0 to 4294967295

Signed long int 32 -2147483648 to 2147483647

float 32 ±1.175e-38 to ±3.402e38

double 32 ±1.175e-38 to ±3.402e38

Dalam membuat sebuah program sangatlah penting menggunakan jenis data sesuai dengan kebutuhan. Misalnya, jika akan membuat program mikrokontroller 8 bit yang didalamnya akan ada inisialisasi sebuah port pada suatu variable. Maka jenis data yang digunakan pada variable tersebut harus menggunakan jenis data bertipe

unsigned char. Hal itu dikarenakan port mikrokontroller 8 bit ( yang berarti 28 ) mempunyai nilai minimum 0 dan maksimum 255.

Atau jika ingin membuat program untuk menghitung volume suatu bangun ruang, maka jenis data yang digunakan haruslah float atau double. Hal tersebut dikarenakan nilai volume suatu bangun ruang tidak selalu bilangan bulat (mengandung koma).

d. PENULISAN BILANGAN

Dalam C++ dalam dunia mikrokontroller dikenal beberapa cara penulisan jenis bilangan, berikut adalah beberapa cara penulisannya

Page 21: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 21

Nama Bilangan Cara Penulisan Keterangan

Desimal 123 Ditulis biasa

Bit 0b1011 Harus diawali dengan 0b

Hexadecimal 0x1F Harus diawali dengan 0x

5. COMMENT ATAU KOMENTAR Komentar dalam bahasa C/C++ harus diawali dengan karakter “//” (tanpa tanda petik) atau bisa juga ditulis dengan diawali “/*”(tanpa tanda petik) dan diakhiri dengan “*/”(tanpa tanda petik). Sebagai contoh // ini hanya komentar/catatan ga’ usah dipedulikan /*ini bukan perintah alias tidak penting*/ ///*ngemeng epeh*/

6. OPERATOR Dalam bahasa C/C++ ada beberapa operator yaitu

Bentuk Operator Contoh Arti

== A == A A Sama dengan A ( A bernilai sama dg A )

!= A != a A Tidak sama dengan a ( A berbeda dengan )

< A < B A Lebih kecil B

<= A <= B A Lebih kecil atau sama dengan B

> C > B C Lebih besar B

>= C >= B C Lebih besar atau sama dengan B

= X = 10 Memasukkan nilai ( X diberi nilai 10 )

* A * B A dikali dengan B

/ A / B A dibagi dengan B

+ A + B A ditambah dengan B

- A – B A dikurangi dengan B

*= A *= B A = A * B

Page 22: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 22

/= A /= B A = A / B

+= A += B A = A + B

-= A -= B A = A – B

7. IF … ELSE ….

Perintah if … else … dalam bahasa C/C++ fungsinya pada dasarnya adalah untuk memilih tindakan antara 2 keadaan. Misalnya if ( ada_garis == 1) { maju(); } //memanggil fungsi yang bernama maju, jika nilai ada_garis = 1 else { mundur(); } //memanggil fungsi yang bernama mundur, jika nilai garis selain 1

8. FUNGSI Fungsi dalam bahasa pemrograman C/C++ secara umum dapat dituliskan void <nama fungsi>() contohnya void jalan_lurus() { Motor_1 = 1; Motor_2 = 1; } Cara memanggil fungsi diatas hanyalah menuliskan jalan_lurus(); . Maka secara langsung nilai Motor_1 akan diberi nilai 1 dan Motor_2 akan diberi nilai 1. jika menghendaki fungsi dengan parameter maka dapat ditulis void <nama fungsi>(<jenis data parameter> <nama parameter>) contohnya void belok(bit kekanankah) { if (kekanankah == 1) { //apakah belok kekanan Motor_1 = 1; Motor_2 = 0; } else { Motor_1 = 0; Motor_2 = 1; } }

Jika contoh fungsi diatas dipanggil dengan perintah

Page 23: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 23

belok(1);

maka Motor_1 akan diberi nilai 1 dan Motor_2 akan diberi nilai 0. Berbeda jika fungsi tersebut dipanggil perintah

belok(0);

maka nilai Motor_1 akan diberi nilai 0 dan Motor_2 akan diberi nilai 1.

9. SWITCH … CASE …. BREAK Perintah switch … case … pada dasarnya sama seperti perintah if … else …, hanya saja switch … case … break lebih efisien untuk memilih tindakan dari banyak keadaan. Contohnya switch (sensor) { case 0b00111111: belok_kiri(); break; case 0b11100111: maju(); break; case 0b11111100: belok_kanan(); break; } Jika nilai sensor bernilai 0b11100111 maka akan menjalankan fungsi yang bernama maju selanjutnya akan keluar dari perintah switch … case …. Namun jika nilai sensor 0b11111111 atau bisa dikatakan tidak ada dalam daftar case, maka perintah switch tidak akan menjalankan perintah/fungsi apapun.

10. WHILE while adalah suatu perintah perulangan. Secara umum perintah while dituliskan sebagai berikut

while(keadaan) contohnya int jumlah_perulangan = 10; while (jumlah_perulangan != 0) { jumlah_perulangan = jumlah_perulangan -1; } dari contoh di atas tadi, dapat ditarik kesimpulan bahwa nilai jumlah_perulangan akan dikurangi dengan 1 selama 10 kali.

11. FOR

Page 24: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 24

Perintah for prinsipnya sama dengan while yaitu mengulang, namun lamanya perulangan bisa diatur mulai awal hingga akhir. Berikut cara penulisannya

for (<nilai awal>; <nilai akhir>; <metode>) contohnya for (i=1; i<=10; i++) { beban = beban + 10;} dari contoh diatas mempunyai arti bahwa operasi penjumlahan beban = beban + 10; akan diulang selama 10 kali (dari nilai i=1 sampai i=10).

12. PEMROGRAMAN MIKROKONTROLER UNTUK LINE FOLLOWER a. ALGORITMA MEMBACA GARIS

Sebelum membuat program, maka kita mendefinisikan seluruh kemungkinan

pembacaan sensor dahulu. Dengan demikian kita dapat menentukan pergerakan robot yang tujuannya adalah menjaga agar robot selalu berada tepat diatas garis. Sebagai contoh jika konfigurasi tata letak sensor dari robot adalah sebagai berikut

* * * * * * * 0 1 2 3 4 5 6

* 7

maka dapat dibuat daftar dari kemungkinan terbesar sensor-sensor tersebut membaca garis adalah sebagai berikut

Kiri tajam Kiri Lurus Kanan Kanan tajam

01111110 01111001 01110111 01100111 01011111

11111110 11111001 11110111 11100111 11011111

01111100 01111011 01111111 01101111 00011111

11111100 11111011 11101111 10011111

01111101 01110011 01001111 00111111

11111101 11110011 11001111 10111111

Dari daftar-daftar nilai tersebut lalu dapat dibuat program mikrokontroler untuk menggerakkan/menjalankan robot agar berjalan mengikuti garis yang

Page 25: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 25

ditentukan menggunakan perintah switch ... case ... break, sehingga programnya menjadi seperti dibawah ini switch(sensor) {

case 0b01111110: case 0b11111110: kiri_tajam(); break; … …

case 0b01111001: case 0b11111001: belok_kiri(); break; … … case 0b01110111: case 0b11110111: maju(); break;}

b. PWM (Pulse Width Modulation) Pulse Width Modulation atau yang bisa disebut PWM ini berfungsi sebagai pengatur tegangan output. Fungsi PWM ini dapat di bentuk/dibuat dengan metode ISR (Interrupt Service Routine) dengan memanfaatkan fitur Timer yang ada pada AVR pada saat timer tersebut terjadi overflow/melimpah. Berikut ini adalah contoh dari PWM

interrupt [TIM0_OVF] void timer0_ovf_isr(void) { count++; if (count<=pwm) output=1; else output=0; TCNT0=0xFF; }

Fungsi interrupt diatas akan dijalankan saat timer 0 mengalami overflow atau nilai TCNT0 melebihi 0xFF. Misalnya saja jika nilai variabel pwm diatas diberi nilai 200 maka nilai variabel output akan bernilai 1 selama 200 kali overflow. Semakin lama output bernilai 1 maka semakin besar tegangan yang dikeluarkan oleh output, begitu sebaliknya.

Page 26: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 26

BAGIAN VII

SOFTWARE PENDUKUNG

CodeVision AVR

Membuat Source Code Dengan Codevision AVR Source code secara lengkap dapat dilihat pada Lampiran A. Source code dibuat dengan menggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut :

1. Jalankan CodeVisionAVR, kemudian klik File -> New, Pilih Project.

2. “Do you want to use the CodeWizardAVR?” Klik Yes

3. Pilih Chip yang digunakan, chip : ATmega8535L, clock : 11.059200 MHz

4. Lakukan setting sebagai berikut : Port : Port C sebagai Output dan Port D sebagai Input Pullup Timers : Timer 0 dengan Clock Value 10,800 KHz, aktifkan Overflow Interrupt

Page 27: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 27

5. Klik File -> Generate, Save and Exit 6. Buatlah source code. 7. Setelah selesai membuat source code, klik Setting -> Programmer 8. Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih Printer Port pada LPT1 : 378h

Page 28: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 28

9. Klik Project -> Configure, kemudian pilih menu After Make dan aktifkan Program the Chip. Klik OK jika sudah. PERHATIAN ! Jangan mengubah setting apapun pada menu ini. Jika salah

memilih, chip Anda tidak bisa digunakan lagi !!

10. Untuk meng-compile project, klik Project -> Make 11. Jika tidak ada error maka file siap didownload ke chip. Pastikan koneksi kabel

downloader dan chip sudah terpasang dengan benar. 12. Nyalakan power supply dan klik Program. Tunggu hingga proses download selesai.

Page 29: modul avr atmega8535

Copyright by HIMANIKA 2010 Page 29

Daftar Pustaka

1. Edtronics, Mikrokontroller AVR 128 http://edtronics.wordpress.com/2008/12/05/mikrokontroler-avr-atmega128-64/

2. ToPaysTronics, Memulai Codevision AVR. http://payztronics.blogspot.com/2009/06/memulai-coviavr-codevisionavr.html

3. Agfiyanto, Pemograman Mikrokontroller AVR melalui USB. http://agfi.staff.ugm.ac.id/blog/index.php/2009/07/pemrogram-mikrokontroler-avr-melalui-usb/

4. Truck-Bus, 2009, Gearbox and Sensor Pictures. http://truckbus.blogspot.com/2009/09/gear-box-and-sensor-pictures.html