You are on page 1of 42

MODUL TRAINING

MICROCONTROLLER BASIC ATMEGA16

Tim Trainer Mikrokontroler 2011

MODUL TRAINING MIKROKONTROLLER

201 0

DAFTAR ISI

BAB 1 BAB 2 BAB 3 BAB 4 BAB 5

INTRODUCTION INPUT/OUTPUT & ADC TIMER/COUNTER PWM LCD

3 9 21 27 31

Page | 2
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0 BAB I

INTRODUCTION
1.1. Sistem Komputer Pada level yang paling sederhana, komputer adalah mesin yang didesain untuk mengolah, menyimpan, dan mendapatkan kembali sebuah data. Data/informasi yang menjadi bagian operasi dari sebuah komputer adalah berupa angka. Semua operasi yang bisa dilakukan komputer seperti: web browsing, printing, dan image processing tidak lebih merupakan kegiatan menahan, memindahkan dan mengubah/memanipulasi angka angka. Sistem komputer dibagi menjadi dua kategori, yaitu:
a) Desktop komputer, mesin yang sering kita sebut sebagai “komputer”,

komputer yang ada di pikiran kita. Desktop komputer bisa menjalankan beragam program dengan sistem yang diatur oleh suatu operating sistem (OS) seperti: Windows dan Linux. Dengan menjalankan aplikasi program yang berbeda, fungsi dari desktop komputer juga berubah.
b) Embedded komputer, komputer yang terintegrasi dengan sistem lain

(ex: mekanika) dan digunakan untuk suatu fungsi tertentu. Seperti: microwave oven, DVD player, mainan, handphone dll. Embedded komputer pada umumnya didesain untuk satu aplikasi saja. Sistem komputer disusun dari banyak komponen, seperti: processor, memory, input/output peripheral dll. Berikut adalah gambar skema sistem komputer sederhana.

Page | 3
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Gambar 1.1: Sistem komputer sederhana a) PROCESSOR Processor/CPU (Central Processing Unit) adalah komponen dari suatu sistem komputer yang melakukan proses manipulasi dan pengolahan (eksekusi) data berdasarkan urutan instruksi dari memory. Instruksi yang dijalankan oleh processor disebut dengan opcodes atau machine-code. Opcodes merupakan bahasa mesin berupa angka-angka yang kadang sulit dimengerti oleh pengguna, untuk itu dibangun instruksi operasi processor dalam bahasa assembly yang disebut dengan mnemonic. Urutan dari kumpulan instruksi sebuah processor disebut dengan program. Program yang dijalankan processor bisa diubah sesuai dengan kebutuhan aplikasi, sehingga komputer bersifat programmable. b) MEMORY Memory merupakan komponen sistem komputer yang berfungsi untuk menyimpan data dan instruksi (program) yang dijalankan oleh processor. Ada beberapa jenis memory yang biasa digunakan oleh suatu sistem komputer, 1) RAM (Random Acces Memory), RAM adalah “Working Memory” pada sistem komputer, dimana CPU dapat menuliskan Page | 4
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

data untuk disimpan sementara. RAM bersifat ”volatile”, yang berarti datanya akan hilang apabila catu daya dimatikan. 2) ROM (Read Only Memory), bersifat “non volatile”, yang berarti data tidak akan hilang meskipun catu daya dimatikan. Tujuan utama dari ROM adalah menyimpan kode/data yang dibutuhkan pada saat start up. c) PERANGKAT INPUT/OUTPUT Perangkat input/output atau peripheral i/o digunakan oleh processor untuk berkomunikasi dengan dunia luar. Contoh pemakaian perangkat i/o adalah serial komunikasi pada keyboard, dan parallel komunikasi pada printer. Perangkat i/o merupakan piranti pengkondisi sinyal sebelum dapat diolah oleh processor atau setelah diolah processor sehingga dapat dikeluarkan berupa output data digital. Ada 3 cara input/output untuk berkomunikasi dengan processor,: 1) Programmed i/o, processor mengirim dan menerima data pada i/o sesuai instruksi. 2) Interrupt-driven i/o, sinyal dari luar mengatur eksekusi instruksi processor. Sinyal luar akan menghentikan eksekusi program yang dijalankan saat itu, dan menjalankan fungsi program interrupt. 3) Direct Memory Acces (DMA), memungkinkan transfer data langsung antara peripheral i/o dan memory tanpa keterlibatan processor. Biasanya digunakan pada sistem yang membutuhkan transfer data cepat. 1.2. Mikrokontroller Mikrokontroller adalah piranti elektronik berupa IC (Integrated Circuit) yang memiliki kemampuan manipulasi data (informasi) berdasarkan Page | 5
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

suatu urutan instruksi (program) yang dibuat oleh programmer. Mikrokontroller merupakan contoh suatu sistem komputer sederhana yang masuk dalam kategori embedded komputer. Dalam sebuah struktur mikrokontroller akan kita temukan juga komponen-komponen seperti: processor, memory, clock dll.

Gambar 1.2: contoh beberapa bentuk mikrokontroller ATMEL Kegiatan desain otomasi merupakan kegiatan memetakan sinyal input menjadi sinyal output berdasarkan suatu fungsi kontrol agar bisa dimanfaatkan sesuai kebutuhan. Sasaran dari pelatihan ini adalah peserta mampu menggunakan mikrokontroller untuk membangun sendiri suatu sistem otomasi atau embedded system.
1.3.

ATMEL AVR ATMEGA16 Sebelum belajar lebih dalam tentang aplikasi mikrokontroller, ada

baiknya kita bicarakan dulu tentang mikrokontroller yang kita gunakan. Pada pelatihan ini dipilih mikrokontroller jenis ATMEL AVR RISC dengan pertimbangan sebagai berikut: a) ATMEL AVR RISC memiliki fasilitas dan kefungsian yang lengkap dengan harga yang relatif murah.

Page | 6
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

b) Kecepatan maksimum eksekusi instruksi mikrokontroller mencapai

16 MIPS (Million Instruction per Second), yang berarti hanya dibutuhkan 1 clock untuk 1 eksekusi instruksi. c) Konsumsi daya yang rendah jika dibandingkan dengan kecepatan eksekusi instruksi. d) Ketersediaan kompiler C (CV AVR) yang memudahkan user memprogram menggunakan bahasa C. Dari kemampuan dan fasilitas yang dimiliki, AVR RISC cocok dipilih sebagai mikrokontroller untuk membangun bermacam-macam aplikasi embedded sistem. Oleh karena itu, dalam pelatihan ini juga dipilih salah satu jenis AVR RISC sebagai dasar pelatihan yaitu ATMEGA 16. Chip AVR ATMEGA16 memiliki 40 pin kaki, berikut skema kaki ATMEGA16

Gambar 1.3: skema mikrokontroller AVR RISC ATMEGA16 Page | 7
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

ATMEGA16 memiliki 4 buah port input/output 8 bit, yaitu PORT A, PORT B, PORT C, dan PORT D. Selain sebagai input/output masing masing port juga memiliki fungsi yang lain. Misalny PORTA dapat difungsikan sebagai ADC (Analog to Digital Converter).Fungsifungsi yang lain dapat dilihat pada datasheet ATMEGA16. 1.4. Pemrograman ATMEL AVR Ada 2 cara untuk memprogram mikrokontroller ini, menggunakan software AVR assembler yang berbasis pada bahasa assembly, dan menggunakan software CV AVR (Code Vision AVR) yang berbasis pada bahasa C. Pada pelatihan ini akan digunakan cara yang kedua dengan pertimbangan kemudahan pembuatan program dari algoritma yang telah dibangun. Pelatihan ini tidak menitikberatkan penggunaan bahasa C pada CV AVR, tapi lebih pada cara dan aplikasi dari mikrokontroller. Untuk itu peserta diharapkan membaca sendiri petunjuk pemakaian software ini. Berikut tampilan utama CVAVR.

Page | 8
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Gambar 1.4: tampilan utama CV AVR

Page | 9
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0 BAB 2

INPUT/OUTPUT & ADC
2.1 Input/Output Fasilitas input/output merupakan fungsi mikrokontroller untuk dapat menerima sinyal masukan (input) dan memberikan sinyal keluaran (output). Sinyal input maupun sinyal output adalah berupa data digital 1 (high, mewakili tegangan 5 volt) dan 0 (low, mewakili tegangan 0 volt). Mikrokontroller ATMEGA16 memiliki 4 buah PORT 8 bit bidirectional yang dapat difungsikan sebagai PORT input maupun PORT output yaitu PORTA, PORTB , PORTC, dan PORT D. Register digunakan untuk mengatur fungsi dari pin-pin pada tiap port. Register dapat dianalogikan sebagai kumpulan switch on/off yang digunakan untuk mengaktifkan fungsi apa yang akan dipakai dari port mikrokontroller. Pada setiap port pin terdapat 3 buah register 8 bit: DDRxn, PORTxn, dan PINxn. Register DDRxn digunakan untuk menentukan arah dari pin yang bersangkutan. Jika DDRxn diberikan nilai 1 (high), maka pin digunakan sebagai output. Jika DDRxn diberikan nilai 0 (low), maka pin difungsikan sebagai input. Register PORTxn digunakan untuk mengaktifkan pull-up resistor (pada saat pin difungsikan sebagai input), dan memberikan nilai keluaran pin high/low (pada saat difungsikan sebagai output). PINxn merupakan register yang berfungsi untuk mengetahui keadaan tiap-tiap pin pada mikrokontroller. Perangkat keras yang dibutuhkan untuk mendemonstrasikan aplikasi input/output adalah sebagai berikut: a) Led Array (output indicator) Gambar 1.5: skema led output indicator
b) Push-button array (input signal)

Page | 10
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Aplikasi Praktik
Berikut adalah beberapa aplikasi praktik yang nantinya dapat lebih menjelaskan fungsi dan fasilitas input/output. Peserta diharapkan mengikuti petunjuk langkah demi langkah. Project 1: Output ● Setting Hardware
a) Hubungkan PORTC dengan led array. b) Hubungkan SPI port pada universal board dengan port USB

Laptop menggunakan downloader/ USB ASP. ● Programming
a) Buka CV AVR., pilih File->New->Project. b) Klik

YES

ketika

terdapat

option

untuk

meggunakan

codeWizardAVR.
c) Pilih chip yang akan digunakan ATMEGA16 dengan harga

clock 12 Mhz.
d) Klik tab Ports, pilih tab Port C seperti pada gambar, ubah

setting bit 0 – bit 7 sebagai out. Hasil setting ini berpengaruh pada nilai register DDRxn, dan PORTxn.
e) Setting selesai, untuk mengenerate program pilih File >>

Generate, Save, and Exit.
f)

Buat direktori dengan nama io1.

g) Save file CV AVR dengan nama io1.cwp pada direktori io1. h) Save file .C dengan nama io1.c pada direktori io1.
i)

Save file project dengan nama io1.prj pada direktori io1. Page | 11

WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Listing Program
a) Sekarang perhatikan kode bahasa C pada bagian setting register

DDRxn, dan PORTxn, tampak sebagai berikut: b)

c) DDRC = 0xFF yang berarti 8 bit port C difungsikan sebagai output.

PORTC = 0x00 berarti nilai awalan output adalah 0(low). d) Nilai register PORTC diatas adalah nilai awalan pada saat mikrokontroller start-up, kita bisa mengubah nilai output port C dengan mengubah nilai register PORTC pada looping while.

e) Page | 12
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

f) PORTC = 0xCD, nilai output port C adalah CD dalam bentuk hexa atau

11001101 dalam bentuk biner.
g) Program chip dengan memilih menu Project >> Make atau dengan

menekan shift + F9. Jika pada kode masih terdapat kesalahan/error akan terlihat pada message.

h) Klik Program, jika ada kesalahan periksa kembali setting hardware. i) Perhatikan led array, lampu led akan menyala 11001101 jika diurut dari

Port7- Port0. j) Ulangi langkah 2 sampai 6 dengan memberikan nilai PORTC yang berbeda beda pada looping while. Perhatikan perubahan nyala led pada led array.

Project 2: Input ● Setting Hardware Page | 13
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

a) Hubungkan PORTC dengan led array. b) Hubungkan PORTB universal board dengan push button array. c) Hubungkan SPI port pada universal board dengan port USB

Laptop menggunakan downloader.

Programming
a) Buka CV AVR., pilih File->New->Project. b) Klik

YES

ketika

terdapat

option

untuk

meggunakan

codeWizardAVR.
c) Pilih chip yang akan digunakan ATMEGA16 dengan harga clock

12Mhz.
d) Setting port C sebagai output (out). e) Setting port B sebagai Input (in) dan aktifkan pull-up resistor.

(lihat gambar)

Page | 14
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

f) Setting selesai, untuk mengenerate program pilih File >> Generate,

Save, and Exit. g) Buat direktori dengan nama io2. h) Save file CV AVR dengan nama io2.cwp pada direktori io2. i) Save file .C dengan nama io2.c pada direktori io2. j) Save file project dengan nama io2.prj pada direktori io2. Listing Program a) Perhatikan setting register port B dan port C.

Page | 15
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Port B difungsikan sebagai input (DDRB = 0x00) dengan 8 bit pullup resistor diaktifkan (PORTB=0xFF). Port C difungsikan sebagai output (DDRC=0xFF) dengan nilai awalan pada tiap bit 1 (high). b) Pada listing kode diatas kita telah men-set port B sebagai input dengan pull-up resistor dan port C sebagai output. Untuk dapat menunjukkan funggsi input mikrokontroller tambahkan listing kode berikut pada bagian looping while.

maksud dari listing program diatas adalah kita menscan register PINB terus menerus dari PINB.0 – PINB.7. Perhatikan bahwa untuk membaca perubahan keadaan input dari push-button dibaca pada register PINxn bukan pada register PORTxn maupun DDRxn.
c) Program chip dengan memilih menu project >> make atau

dengan menekan shift + F9. Jika pada kode masih terdapat kesalahan/error akan terlihat pada message.

Page | 16
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

d) Klik Program, jika ada kesalahan periksa kembali setting

hardware. e) Jika langkah langkah diatas telah dilakukan dengan benar, maka led pada port C akan menyala sesuai dengan push-button yang ditekan pada port B.

2.2 ADC (Analog to Digital Converter) ADC (Analog to Digital Converter) adalah salah satu fasilitas mikrokontroller ATMEGA16 yang berfungsi untuk mengubah data analog menjadi data digital. ADC memiliki 2 karakter prinsip, yaitu kecepatan sampling dan resolusi. Kecepatan sampling suatu ADC menyatakan seberapa sering sinyal analog dikonversikan ke bentuk sinyal digital pada selang waktu Page | 17
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

tertentu. Kecepatan sampling biasanya dinyatakan dalam sample per second (SPS).

Gambar 4.1: ADC dengan kecepatan sampling rendah dan kecepatan sampling tinggi Resolusi ADC menentukan ketelitian nilai hasil konversi ADC. Sebagai contoh: ADC 8 bit akan memiliki output 8 bit data digital, ini berarti sinyal input dapat dinyatakan dalam 255 (2n – 1) nilai diskrit. ADC 12 bit memiliki 12 bit output data digital, ini berarti sinyal input dapat dinyatakan dalam 4096 nilai diskrit. Dari contoh diatas ADC 12 bit akan memberikan ketelitian nilai hasil konversi yang jauh lebih baik daripada ADC 8 bit. Prinsip kerja ADC adalah mengkonversi sinyal analog ke dalam bentuk besaran yang merupakan rasio perbandingan sinyal input dan tegangan referensi. Sebagai contoh, bila tegangan referensi 5 volt, tegangan input 3 volt, Page | 18
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

rasio input terhadap referensi adalah 60%. Jadi, jika menggunakan ADC 8 bit dengan skala maksimum 255, akan didapatkan sinyal digital sebesar 60% x 255 = 153 (bentuk decimal) atau 10011001 (bentuk biner).

ADC

pada

ATMEGA16

adalah

jenis

10

bit

successive

approximation dengan tegangan referensi maksimum 5 volt. Register-register yang harus di setting adalah ADMUX, ADCSRA, dan SFIOR.

Aplikasi Praktik
● Setting Hardware
a) Hubungkan kaki tengah potensiometer pada channel 1 port A

(PORTA.0), dua kaki lainnya pada ground dan Vcc.
b) Hubungkan PORTB universal board dengan port OUTPUT pada

input/output board ( led array). ● Programming
a) Buka CV AVR., pilih File->New->Project. b) Klik

YES

ketika

terdapat

option

untuk

meggunakan

codeWizardAVR.
c) Pilih chip yang akan digunakan ATMEGA16 dengan harga clock

12 Mhz.
d) Setting port B sebagai output (out). e) Setting port A sebagai ADC, klik tab ADC kemudian setting

seperti pada gambar.

Page | 19
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Page | 20
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

f) Setting selesai, untuk mengenerate program pilih File >>

Generate, Save, and Exit. g) Buat direktori dengan nama adc.
h) Save file CV AVR dengan nama adc pada direktori adc.

i) Save file .C dengan nama adc.c pada direktori adc. j) Save file project dengan nama adc.prj pada direktori adc. Listing Program a) Perhatikan setting register port B. Kita telah men-set port B sebagai output.

b) Perhatikan bagian listing kode ADC Page | 21
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

terlihat

setting

register-register

yang

mempengaruhi,

yaitu

ADMUX, ADCSRA, SFIOR.
c) Sekarang kita mendeklarasikan variable unsigned char didalam

fungsi main. Dipilih unsigned char karena tadi pada saat setting ADC (langkah ke 5) kita meng-enable-kan box use 8 bit, yang berarti kita memilih ADC 8 bit. Berikut pendeklarasian variabelnya.

d) Nilai hasil konversi ADC ditempatkan dengan nama variable

adc_data[n]. Berikut listing kode untuk mendapatkan nilai hasil konversi ADC dan menampilkannya pada 8 bit output port B.

e) Program chip dengan memilih menu project >> make atau

dengan menekan shift + F9. Jika pada kode masih terdapat kesalahan/error akan terlihat pada message.

Page | 22
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

f) Klik Program, jika ada kesalahan periksa kembali setting

hardware.
g) Putar putar potensiometer, jika langkah langkah diatas telah

benar output pada led array akan menunjukkan nilai dari ADC.

Page | 23
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Page | 24
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0 BAB 3

TIMER/COUNTER Timer dan counter adalah dua fasilitas yang memiliki perangkat yang sama, seperti halnya register penampungnya (TCNTx). Ketika difungsikan sebagai timer, maka register penampung tersebut berisikan jumlah waktu yang terlampaui tiap selang waktu tertentu. Besar selang waktu tersebut dapat disetting sesuai dengan kebutuhan. Jika dipakai sebagai counter, maka register penampung tersebut digunakan untuk menyimpan data hasil perhitungan terakhir. Saat difungsikan sebagai counter, maka masuk melewati pin TO dan T1. Register untuk mengatur kapan timer difungsikan sebagai timer dan kapan sebagai counter adalah TCCRx. ATMEGA16 memiliki fasilitas 3 buah timer/counter yaitu timer/counter0 8 bit, timer/counter1 16 bit, dan timer/counter2 8 bit. 8 bit dan 16 bit adalah jumlah data yang bisa ditampung pada register penampungnya. Pada bab ini akan didemonstrasikan 2 aplikasi praktik, dengan tujuan peserta bisa membedakan fungsi dari timer dan counter pada mikrokontroller. Register–register yang digunakan untuk mengatur timer dan counter bisa dilihat pada DATASHEET ATMEGA16. TIMER Menghitung Timer T(timer0) = Tosc*N*(256-TCNT0) T(timer1) = Tosc*N*(65536-TCNT1) T(timer2) = Tosc*N*(256-TCNT2) Tosc = 1/fosc T(timer) : Waktu inerval interupt timer Tosc fosc : Periode clock : Frekuensi clock Page | 25
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

N

: Skala clock (ada dalam datasheet)

Menghitung Timer dengan menggunakan CVAVR T(timer0 interupt) = (1/clock value)*(256 – Timer value) PROJECT 1 MEMBUAT LED BERKEDIP SETIAP 1 DETIK • Setting hardware 1. Hubungkan PORTC universal board dengan port OUTPUT pada input/output board (led array). 2. Hubungkan SPI port pada universal board dengan port USB menggunakan downloader.

Page | 26
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

1. Dengan menggunakan cara yang sama seperti sebelumnya pada CVAVR set timer0 seperti pada gambar. Timer0 akan mengalami overflow interupt setiap 1ms dan gunakan PORTC sebagai output. T(timer0 interupt) = (1/clock value)*(256 – Timer value) 1/46,875kHz * (256 – 209) = 1,00266 ms≈ 1ms
2. Untuk mencapai nilai 1 detik maka diperlukan 1000 kali siklus. Dengan

menambahkan program pada fungsi interrupt [TIM0_OVF] sebagai berikut.

Program ini akan dieksekusi tiap 1ms dan setiap eksekusi nilai varibel cacah akan ditambah terus menerus sampai mencapai nilai 1000. Ketika sudah mencapai nilai 1000 maka varibel data nilainya akan berubah menjadi kebalikannya dan varibel cacah akan direset kembali menjadi nol. Proses akan terus terulang.

3. Gunakan PORTC sebagai output dengan menambahkan program berikut

Page | 27
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Program ini adalah program utama yang mana program ini akan mengeluarkan nilai varibel data ke PORTC. 4. Program dan Jalankan pada KIT.

PROJECT 2 Dengan menggunakan cara dan ketentuan yang sama gunakan timer 1 untuk membuat LED berkedip tiap 2 detik. Nb. Perhitungan Timer 1 T(timer1 interupt) = (1/clock value)*(65536 – Timer value) COUNTER PROJECT 3 • Setting hardware 1. Hubungkan PORTC universal board dengan port OUTPUT pada input/output board (led array). 2. Hubungkan SPI port pada universal board dengan port USB menggunakan downloader. Pada project ini kita akan belajar prinsip kerja counter dengan menggunakan input dari luar. 1. Hubungkan PORTB.0/T0 dengan pushbutton. 2. Seting pada CVAVR sesuai dengan gambar dan gunakan PORTC sebagai output. Anda bisa memilih penambahan nilai akan dieksekusi pada saat tepi naik atau tepi turun.
3. Tambahkan program berikut pada fungsi interrupt [TIM0_OVF]

Page | 28
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Fungsi ini akan dieksekusi ketika tombol T0 ditekan. Ketika T0 ditekan nilai TCNT0 akan bertambah, karena nilai TCNT0 awal adalah FEh maka ketika ditambah satu akan terjadi overflow dan interupsi akan terjadi.

4. Gunakan PORTC sebagai output dan tuliskan program berikut pada fungsi utama

Page | 29
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Program ini berfungsi mengeluarkan nilai variabel data ke PORTC. 5. Program dan jalankan pada KIT

PROJECT 4 Buatlah program dimana nilai dari PORTC akan bertambah jika tombol T1 ditekan sebanyak lima kali! Gunakan Timer1 sebagai counter.

Page | 30
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0
BAB 4

PWM (Pulse Width Modulation)
PWM (Pulse Width Modulation) adalah teknik mendapatkan efek sinyal analog dari sebuah sinyal digital yang terputus-putus. PWM dapat dibangkitkan hanya dengan menggunakan digital i/o yang difungsikan sebagai output

Gambar 4.1 Contoh PWM dengan duty cycle 50%.

Pada contoh gelombang diatas, perbandingan waktu antara sinyal high (1) dan sinyal low (0) adalah sama. Gelombang diatas dikatakan memiliki duty cycle 50%. Duty cycle adalah perbandingan antara lebar sinyal high (1) dengan lebar keseluruhan siklus (cycle). Jika amplitudo gelombang PWM adalah 5 volt, maka tegangan rata rata (seolah olah analog) yang kita dapatkan adalah 2,5 volt. Berikut contoh gelombang PWM dengan duty cycle 10%, jika amplitudo gelombang 5 volt maka akan didapatkan tegangan rata rata analog 0,5 volt.

Gambar 4.2 Contoh PWM dengan duty cycle 10%

Pada ATMEGA 16 ada 2 cara membangkitkan PWM, yang pertama PWM dapat dibangkitkan dari port input/outputnya yang difungsikan sebagai output. Yang kedua adalah dengan memanfaatkan fasilitas PWM dari fungsi timer/counter yang telah disediakan. Dengan adanya fasilitas ini proses pengaturan waktu high/low sinyal digital tidak akan mengganggu urutan program lain yang sedang dieksekusi oleh processor. Selain itu, dengan menggunakan fasilitas ini kita tinggal memasukkan berapa porsi periode waktu

Page | 31
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

on dan off gelombang PWM pada sebuah register. OCR1A, OCR1B dan OCR2 adalah register tempat mengatur duty cycle PWM. Pada bab ini akan diperagakan bagaimana cara mendapatkan sinyal analog dari sebuah sinyal digital dengan menggunakan teknik PWM.

Aplikasi Praktik
● Setting Hardware board 1 2. Hubungkan SPI port pada universal board dengan port USB Laptop menggunakan downloader. ● Programming 0 1. Hubungkan PORTD.4 dan PORTD.5 pada port OUTPUT input/output-

0 1. Buka CV AVR., pilih File->New->Project. 1 2. Klik YES ketika terdapat option untuk meggunakan codeWizardAVR. 2 3. Pilih chip yang akan digunakan ATMEGA16 dengan harga clock 16 Mhz. 3 4. Setting PORTD.4 (OC1B) dan PORTD.5 (OC1A) sebagai output (out).

Page | 32
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

4 5 5. Klik tab Timers, pilih tab timer1 kemudian setting seperti pada gambar. Perhatikan setting mode non-inverted pada out A dan mode inverted pada out B.

Page | 33
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

6 0 7 8 9 6. Setting selesai, untuk mengenerate program pilih File >> Generate, Save, and Exit. 7. Buat direktori dengan nama pwm. 8. Save file CV AVR dengan nama pwm pada direktori pwm. 9. Save file .C dengan nama pwm.c pada direktori pwm. 10. Save file project dengan nama pwm.prj pada direktori pwm. ● 1 2 ● Project Setting 1. Terlihat pada tampilan CV AVR kode yang telah digenerate. Konfigurasi project dengan memilih menu project >> configure. 2. Pilih tab after make, aktifkan program the chip. Listing Program

Page | 34
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

0 1

1. Kita telah menyetting PORTD.4 dan PORTD.5 sebagai output, dengan nilai awal 0 (low).

0 2. Perhatikan register yang mempengaruhi, sama seperti register pada timer/counter pada bab sebelumnya.

0 3. Untuk mengatur porsi on dan off kita berikan nilai pada register OCR1A dan OCR1B pada looping while. Nilai maksimum dari OCR1A dan OCR1B adalah 1023 (10bit) seperti pada setting kita sebelumnya (langkah 5). Tuliskan listing kode seperti dibawah,

1 Page | 35
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

4. Kita telah memberikan nilai 800 pada OCR1A dan 800 pada OCR1B (skala 1023).

1 5. Program chip dengan memilih menu project >> make atau dengan menekan shift + F9. Jika pada kode masih terdapat kesalahan/error akan terlihat pada message. 2 6. Klik Program the chip, jika ada kesalahan periksa kembali setting hardware. 3 7. Amati nyala lampu pada input/output-board. 4 8. Ulangi dengan memberikan nilai OCR1A dan OCR1B yang berbeda beda.

2

10

Page | 36
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0 BAB 5
LCD

Pada software CodeVisionAVR telah disediakan beberapa rutin standar yang dapat langsung digunakan. Anda dapat melihat lebih detil pada manual dari CodeVisionAVR. Beberapa contoh fungsi yang telah disediakan antara lain adalah: 1) Fungsi LCD: Berada pada header lcd.h yang harus di-include-kan sebelum digunakan. Sebelum melakukan include terlebih dahulu disebutkan pada port mana LCD akan diletakkan. Hal ini juga dapat dengan mudah dilakukan dengan menggunakan CodeWizardAVR.

Fungsi-fungsi untuk mengakses LCD diantaranya adalah : • unsigned char lcd_init(unsigned char lcd_columns) Untuk menginisialisasi modul LCD, menghapus layar dan meletakkan posisi karakter pada baris ke-0 kolom ke-0. Jumlah kolom pada LCD harus disebutkan (misal, 16). Kursor tidak ditampakkan. Nilai yang dikembalikan adalah 1 bila modul LCD terdeteksi, dan bernilai 0 bila tidak terdapat modul LCD. Fungsi ini harus dipanggil pertama kali sebelum menggunakan fungsi yang lain. • void lcd_clear(void) Menghapus layar LCD dan meletakkan posisi karakter pada baris ke-0 kolom ke-0. Page | 37
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

• void lcd_gotoxy(unsigned char x, unsigned char y) Meletakkan posisi karakter pada kolom ke-x baris ke-y. Nomor baris dan kolom dimulai dari nol. • void lcd_putchar(char c) Menampilkan karakter c pada LCD. • void lcd_puts(char *str) Menampilkan string yang disimpan pada SRAM pada LCD. 2) Fungsi Delay: Menghasilkan delay dalam program-C. Berada pada header delay.h yang harus di-includekan sebelum digunakan. Sebelum memanggil fungsi, interrupsi harus dimatikan terlebih dahulu, bila tidak maka delay akan lebih lama dari yang diharapkan. Juga sangat penting untuk menyebutkan frekuensi clock chip IC AVR yang digunakan pada menu Project-Configure-C CompilerCode Generation. Fungsi delay yang disediakan adalah: • void delay_us(unsigned int n) menghasilkan delay selama n μ-detik, n adalah nilai konstan • void delay_ms(unsigned int n) menghasilkan delay selama n mili-detik, n adalah nilai konstan. Kedua fungsi tersebut secara otomatis akan me-reset watchdog-timer setiap 1 milidetik dengan mengaktifkan instruksi wdr.

Aplikasi Praktik
● Setting Hardware
a)

Hubungkan PORTC universal board dengan push button

(port INPUT pada input/output-board) menggunakan kabel pita.
b)

Hubungkan PORT D universal board dengan LED Array

(port INPUT pada input/output-board) menggunakan kabel pita. Page | 38
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

c)

Hubungkan PORTB universal board dengan LCD pin

menggunakan kabel pita.

d)

Hubungkan SPI port pada universal board dengan port

USB Laptop menggunakan downloader. e) Hidupkan saklar power, led power pada universal board

harus dalam keadaan nyala.


a) b) c)

Programming Buka CV AVR., pilih File->New->Project.
Klik YES ketika terdapat option untuk meggunakan codeWizardAVR

Pilih chip yang akan digunakan ATMEGA16 dengan harga clock 4 Mhz. kemudian pilih tab Ports, secara default port merupakan pin input, lakukan seting untuk portD sebagai output, lalu pilih tab LCD, gunakan portB karena pada board LCD terhubung dengan portB.

Page | 39
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

d)

Setting selesai, untuk mengenerate program pilih File >> Generate, Save, and Exit.

e)

Simpan pada direktori e:\embedded. Beri nama source file, nama project file, dan nama codewizard project file anda.

f)

Pada header program tambahkan include berikut.

g)

Pada main program sisipkan perintah berikut

Page | 40
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

h)

Sebelum melakukan kompilasi, lakukan seting berikut untuk pertama kali saja. Pilih Project >> Configure. Pastikan pada tab C Compiler nama chip dan clock telah sesuai tombol OK. OK. dengan IC yang terpasang pada tekan board. Dan pada tab After Make pilih Program the Chip. Lalu

Pilih Settings >> Programmer, pilih Kanda System

STK200+/300 untuk AVR Chip.Programmer Type. Lalu tekan tombol

i)

Secara bertahap anda dapat melakukan check syntax, compile, dan make. Atau langsung pilih Project >> Make. Bila tidak ada error maka akan muncul kotak dialog informasi. Siapkan board, nyalakan suplai tegangannya, hubungkan kabel download dari PC ke board. Kemudian tekan tombol Program.

j) “Tekan

Bila tidak ada kesalahan maka pada layar LCD akan ditampilkan tulisan pushbutton”. Cobalah menekan pushbutton (sebelah kanan), maka pada layer LCD akan ditampilkan tulisan “PB1 ditekan” dan LED menyala. Apabila push-button dilepas maka tampilan layar LCD kembali seperti semula dan LED padam.

Page | 41
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA

MODUL TRAINING MIKROKONTROLLER

201 0

Page | 42
WORKSHOP HIMPUNAN MAHASISWA ELEKTRO – FAKULTAS TEKNIK UNIVERSITAS BRAWIJAYA