Anda di halaman 1dari 122

MIKROPROSESOR

Penyusun:
DYAH LESTARI

UNIVERSITAS NEGERI MALANG


FAKULTAS TEKNIK
JURUSAN TEKNIK ELEKTRO
PROGRAM STUDI S1 PENDIDIKAN TEKNIK ELEKTRO
2013

Dyah Lestari, 2013 i


KATA PENGANTAR

Puji syukur kami panjatkan kepada Allah SWT atas segala limpahan rahmat, taufik,
dan hidayah-Nya, sehingga penyusun dapat menyelesaikan penulisan modul ajar
Mikroprosesor ini dengan baik. Modul ajar ini disusun sebagai salah satu sumber belajar
mahasiswa yang menempuh mata kuliah Mikroprosesor. Modul ajar ini juga merupakan
salah satu kegiatan yang dilakukan oleh para tenaga fungsional akademik di bidang
pengajaran.
Penyusunan buku ajar ini tidak lepas dari kerja yang baik dari berbagai pihak. Oleh
karena itu perkenankan kami sampaikan terima kasih yang sedalam-dalamnya kepada:
1. Para pimpinan dan staf Fakultas Teknik Universitas Negeri Malang yang telah
memberi bantuan dan kemudahan sejak awal penyusunan hingga penyelesaian
modul ajar.
2. Barisan asisten praktikum Mikroprosesor: Daniel, Frebu, Ian, Ganjar, Ginanjar dan
Anto yang membantu dalam proses penyusunan bahan ajar dan pelaksanaan
praktikum di Laboratorium Mikroprosesor.
3. Bapak Teguh Prianto sebagai Laboran Laboratorium Mikroprosesor yang telah
membantu dalam pembuatan modul praktikum dan pelaksanaan praktikum di
Laboratorium Mikroprosesor.
4. Semua pihak yang secara langsung ataupun tidak langsung telah membantu
kelancaran penyusunan modul ajar ini.
Walaupun modul ajar ini telah sesuai dengan yang direncanakan, namun disadari
masih banyak kekurangan-kekurangannya. Oleh karena itu saran dari semua pihak sangat
diharapkan. Akhirnya harapan penyusun, semoga modul ajar ini dapat berguna bagi
kemajuan pengajaran dan pendidikan.

Malang, Nopember 2013

Penyusun

Dyah Lestari, 2013 ii


DAFTAR ISI

MODUL 1 ............................................................................................................................. 1
MIKROPROSESOR DAN MIKROKONTROLER ............................................................. 1
A. Pengertian Mikroprosesor, Mikrokomputer dan Mikrokontroler ............................... 1
B. Perkembangan Mikroprosesor dan Mikrokontroler ................................................... 3
1. Perkembangan Mikroprosesor ................................................................................ 3
2. Perkembangan Mikrokontroler ............................................................................... 4
C. Persamaan dan Perbedaan Mikroprosesor dan Mikrokontroler ................................. 4
1. Persamaan Mikroprosesor dan Mikrokontroler ...................................................... 4
2. Perbedaan Mikroprosesor dan Mikrokontroler ....................................................... 4
D. Aplikasi Mikrokontroler ............................................................................................. 5
E. Sistem Mikroprosesor ................................................................................................. 5
MODUL 2 ............................................................................................................................. 8
MIKROKONTROLER AVR ................................................................................................ 8
A. Mikrokontroler AVR .................................................................................................. 8
B. Fitur Mikrokontroler ATmega8535 ............................................................................ 9
C. Arsitektur Mikrokontroler AVR ............................................................................... 10
D. Konfigurasi Pin ATmega8535 .................................................................................. 12
E. Register Status .......................................................................................................... 15
F. Memori Mikrokontroler AVR .................................................................................. 16
1. In System Programmable Flash EEPROM ........................................................... 16
2. Static Random Access Memory ............................................................................ 17
3. Byte-Addressable EEPROM................................................................................. 19
G. Rangkaian Sistem Minimum ATmega 8535 ............................................................ 20
MODUL 3 ........................................................................................................................... 23
ANTARMUKA MIKROKONTROLER DENGAN LED DAN TOGGLE SWITCH ....... 23
A. Sistem Port................................................................................................................ 23
B. Antarmuka dengan Piranti LED ............................................................................... 26
1. Rangkaian Antarmuka Mikrokontroler dengan LED ........................................... 26
2. Perintah Dasar Mengeluarkan Data ...................................................................... 28
C. Antarmuka dengan Piranti Switch ............................................................................ 29

Dyah Lestari, 2013 iii


1. Jenis-Jenis Switch ................................................................................................. 29
2. Switch Debouncing ............................................................................................... 30
3. Rangkaian Antarmuka Mikrokontroler dengan Toggle Switch ............................ 31
4. Perintah Dasar Membaca Data ............................................................................. 32
MODUL 4 ........................................................................................................................... 35
ANTARMUKA MIKROKONTROLER DENGAN SEVEN SEGMEN ........................... 35
A. Karakteristik Seven Segmen ..................................................................................... 35
B. Rangkaian Antarmuka dengan Seven Segmen ......................................................... 36
C. Program Untuk Menampilkan Angka ke Seven Segmen ......................................... 39
MODUL 5 ........................................................................................................................... 41
ANTARMUKA MIKROKONTROLER DENGAN KEYPAD MATRIKS ...................... 41
A. Prinsip Kerja Keypad Matriks .................................................................................. 41
B. Program Untuk Membaca Keypad Matriks .............................................................. 44
MODUL 6 ........................................................................................................................... 46
ANTARMUKA MIKROKONTROLER DENGAN DISPLAY LCD 16x2 ....................... 46
A. LCD (Liquid Crystal Display) .................................................................................. 46
1. DDRAM (Display Data Random Access Memory) .............................................. 47
2. CGRAM (Character Generator Random Access Memory) ................................. 48
3. CGROM (Character Generator Read Only Memory) .......................................... 48
B. Rangkaian Antarmuka Mikrokontroler dengan LCD16x2 ....................................... 49
C. Instruksi yang Digunakan untuk Menampilkan Karakter......................................... 49
MODUL 7 ........................................................................................................................... 52
MENGGUNAKAN FITUR INTERRUPT EKSTERNAL DALAM MIKROKONTROLER
AVR ..................................................................................................................................... 52
A. Teori Interrupt........................................................................................................... 52
B. Sistem Interrupt Mikrokontroler ATmega8535 ........................................................ 53
C. Register- register yang Digunakan dalam Interrupt ................................................. 55
1. MCU Control Register-MCUCR .......................................................................... 55
2. MCU Control and Status Register-MCUCSR ...................................................... 55
3. Status Register-SREG ........................................................................................... 55
4. General Interrupt Control Register-GICR ............................................................ 56
5. General Interrupt Flag Register-GIFR .................................................................. 56
D. Memprogram Interrupt ............................................................................................. 56
MODUL 8 ........................................................................................................................... 58

Dyah Lestari, 2013 iv


MENGGUNAKAN FITUR ADC DALAM MIKROKONTROLER AVR ....................... 58
A. Teori Konversi Analog ke Digital ............................................................................ 59
1. Sinyal Analog Versus Sinyal Digital .................................................................... 59
2. Sampling, Quantization, dan Encoding ................................................................ 60
3. Resolusi dan Data Rate ......................................................................................... 63
B. Proses Konversi Analog ke Digital .......................................................................... 64
C. Teknologi Konversi ADC......................................................................................... 64
1. Successive Approximation .................................................................................... 64
2. Integration ............................................................................................................ 66
3. Counter-Based Conversion ................................................................................... 66
4. Parallel Conversion .............................................................................................. 66
D. Sistem ADC ATmega8535 ....................................................................................... 67
1. Block Diagram ...................................................................................................... 68
2. Register ................................................................................................................. 68
3. Programming the ADC ......................................................................................... 72
MODUL 9 ........................................................................................................................... 74
MENGGUNAKAN FITUR TIMER/COUNTER DALAM MIKROKONTROLER AVR 74
A. Istilah yang Berkaitan dengan Timing ..................................................................... 75
1. Frekuensi ............................................................................................................... 75
2. Periode .................................................................................................................. 75
3. Siklus Kerja (Duty Cycle) ..................................................................................... 75
B. Sistem Timing .......................................................................................................... 76
C. Aplikasi..................................................................................................................... 78
1. Input Capture---Measuring External Timing Event ............................................. 78
2. Menghitung Event................................................................................................. 79
3. Output Compare---Generating Timing Signals to Interface External Devices..... 80
4. Industrial Implementation Case Study (PWM)..................................................... 81
D. Timer Mikrokontroler AVR ..................................................................................... 82
E. Sistem Timer 0 ......................................................................................................... 83
1. Modes of Operation .............................................................................................. 85
2. Timer 0 Registers .................................................................................................. 86
F. Register Timer 1 ....................................................................................................... 90
G. Register Timer 2 ....................................................................................................... 95

Dyah Lestari, 2013 v


H. Memrogram Sistem Timer ....................................................................................... 99
1. Precision Delay ..................................................................................................... 99
2. Pulse Width Modulation ..................................................................................... 101
3. Input Capture Mode ............................................................................................ 102
MODUL 10 ....................................................................................................................... 106
ANTARMUKA MIKROKONTROLER DENGAN MOTOR DC ................................... 106
A. Prinsip Kerja Motor DC ......................................................................................... 106
B. Rangkaian Antarmuka Mikrokontroler dengan Motor DC .................................... 107
1. Driver Motor DC (On/Off) ................................................................................. 107
2. Driver Motor DC dengan Relay (Forward/Reverse) .......................................... 108
3. Driver Motor DC dengan Rangkaian H Bridge .................................................. 109
4. Driver Motor DC dengan IC L293D ................................................................... 111
C. Program Mikrokontroler untuk Menggerakkan Motor DC .................................... 112

Dyah Lestari, 2013 vi


DAFTAR TABEL

Tabel 1.1 Perkembangan Mikroprosesor ............................................................................... 3


Tabel 2.1 Varian Mikrokontroler AVR ................................................................................. 9
Tabel 2.2 Fungsi Alternatif Port A ...................................................................................... 13
Tabel 2.3 Fungsi Alternatif Port B ...................................................................................... 14
Tabel 2.4 Fungsi Alternatif Port C ...................................................................................... 14
Tabel 2.5 Fungsi Alternatif Port D ...................................................................................... 15
Tabel 3.1 Konfigurasi Pin Port ............................................................................................ 25
Tabel 3.2 Konfigurasi Pengaturan Port I/O ......................................................................... 28
Tabel 4.1 Kode heksadesimal untuk angka 0-9 ................................................................... 38
Tabel 6.1 Konfigurasi Pin LCD M1632 .............................................................................. 47
Tabel 10.1 Kombinasi Kondisi MOSFET ......................................................................... 111

Dyah Lestari, 2013 vii


DAFTAR GAMBAR

Gambar 1.1 Sistem Minimum Mikroprosesor ....................................................................... 6


Gambar 2.1 Blok Diagram Internal Mikrokontroler AVR .................................................. 11
Gambar 2.3 Peta Memori Program ...................................................................................... 17
Gambar 2.4 Peta memori data SRAM ................................................................................. 18
Gambar 2.5 General Purpose Working Register ................................................................. 19
Gambar 2.6 Peta Memori Data EEPROM ........................................................................... 19
Gambar 2.7 Sistem Minimum Mikrokontroler ATmega 8535 ............................................ 20
Gambar 2.8 Rangkaian Osilator Kristal .............................................................................. 21
Gambar 3.1. Skema pin I/O ................................................................................................. 24
Gambar 3.2 LED ................................................................................................................. 26
Gambar 3.3 Rangkaian antarmuka mikrokontroler dengan LED ........................................ 27
Gambar 3.4 Rangkaian LED dalam trainer I/O ................................................................... 27
Gambar 3.5 Antarmuka dengan switch (a) Macam-macam switch, (b) Antarmuka dengan
switch, dan (c) Antarmuka dengan switch yang dilengkapi dengan rangkaian debouncing29
Gambar 3.6 Saklar toggle .................................................................................................... 31
Gambar 3.7 Rangkaian saklar toggle ................................................................................... 32
Gambar 4.1 Seven segment ................................................................................................. 36
Gambar 4.2 Rangkaian Antarmuka Seven Segmen............................................................. 37
Gambar 4.3 Rangkaian penampil seven segment ................................................................ 38
Gambar 5.1 Keypad 4x4 ...................................................................................................... 42
Gambar 5.2 Prinsip Kerja Keypad Matriks ......................................................................... 43
Gambar 6.1 Modul LCD M1632 ......................................................................................... 47
Gambar 6.2 Posisi DDRAM ................................................................................................ 48
Gambar 6.3 Pola Karakter dalam CGROM ......................................................................... 48
Gambar 6.4 Rangkaian LCD ............................................................................................... 49
Gambar 7.1 Respon interrupt dalam mikrokontroler........................................................... 53
Gambar 8.1 Dua penyelam melompat dari platform: (a) gerakan cepat dan (b) gerakan
lambat. ................................................................................................................................. 60
Gambar 8.2 Kuantisasi ........................................................................................................ 61
Gambar 8.3 Kuantisasi dengan sedikit bit ........................................................................... 62
Gambar 8.4 Enkoding .......................................................................................................... 63

Dyah Lestari, 2013 viii


Gambar 8.5 Empat teknologi yang digunakan untuk mengonversi sinyal analog ke sinyal
digital: (a) successive approximation converter, (b) integration-based converter, (c)
counter-based converter, and (d) parallel ........................................................................... 65
Gambar 8.6 Blok diagram ADC .......................................................................................... 68
Gambar 9.1 Dua sinyal dengan periode yang sama tetapi beda siklus kerja: (a) sinyal
periodik dengan siklus kerja 50% dan (b) sinyal periodik dengan siklus kerja 25% .......... 76
Gambar 9.2 Diagram sistem output timer ........................................................................... 77
Gambar 9.3 Menggunakan sistem timer I/O mikrokontroler. Sinyal sebelah atas
dimasukkan ke timer. ........................................................................................................... 78
Gambar 9.4 The figure shows the speed profile of a DC motor over time when a pulse-
width modulated signal is applied to the motor................................................................... 81
Gambar 9.5 Atmel timer system overview. ......................................................................... 83
Gambar 9.6 Timer 0 block diagram. ................................................................................... 84
Gambar 9.7 Timer 0 modes of operation ............................................................................. 85
Gambar 10.1 Konstruksi Motor DC .................................................................................. 107
Gambar 10.2 Rangkaian ON/OFF Motor DC ................................................................... 108
Gambar 10.3 Mengubah Polaritas Mengatur Arah Putaran Motor DC ............................. 108
Gambar 10.4 Rangkaian Driver Motor DC dengan Relay ............................................... 108
Gambar 10.5 Rangkaian Driver Motor DC dengan MOSFET .......................................... 109
Gambar 10.6 Motor DC bergerak searah jarum jam ......................................................... 110
Gambar 10.7 Motor DC bergerak berlawanan dengan arah jarum jam............................. 111
Gambar 10.8 Rangkaian Driver Motor dengan L293D ..................................................... 112

Dyah Lestari, 2013 ix


MODUL 1
MIKROPROSESOR DAN MIKROKONTROLER

Pertemuan ke :1
Topik : 1. Pengertian mikrokontroler dan mikroprosesor.
2. Perkembangan mikroprosesor dan mikrokontroler.
3. Persamaan dan perbedaan antara mikroprosesor dan
mikrokontroler.
4. Bagian-bagian sistem mikroprosesor secara umum serta
fungsinya.
Alokasi Waktu : 2 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan pengertian mikrokontroler dan
mikroprosesor.
2. Mahasiswa mampu menjelaskan perkembangan mikroprosesor
dan mikrokontroler.
3. Mahasiswa mampu menjelaskan persamaan dan perbedaan
antara mikroprosesor dan mikrokontroler.
4. Mahasiswa mampu menjelaskan bagian-bagian sistem
mikroprosesor secara umum serta fungsinya.

Pendahuluan
Dalam bab ini akan dibahas mengenai pengertian mikrokontroler dan
mikroprosesor, perkembangan mikroprosesor dan mikrokontroler mulai dari muncul
pertama kali sampai saat ini, persamaan dan perbedaan antara mikroprosesor dan
mikrokontroler, serta sistem mokroprosesor secara umum.

A. Pengertian Mikroprosesor, Mikrokomputer dan Mikrokontroler


Komputer hadir dalam kehidupan manusia baru 50 tahun terakhir, namun efeknya
sangat besar dalam mengubah kehidupan manusia, bahkan melebihi penemuan manusia
lainnya seperti radio, telepon, automobil, dan televisi. Begitu banyak aplikasi

Dyah Lestari, 2013 1


memanfaatkan komputer, terutama dalam pemanfaatan kemampuan chip mikroprosesor di
dalamnya yang dapat melakukan komputasi sangat cepat, dapat bekerja sendiri dengan
diprogram, dan dilengkapi memori untuk menyimpan begitu banyak data. Seiring dengan
perkembangan zaman, semakin luaslah kebutuhan akan kemampuan seperti yang dimiliki
oleh komputer, sehingga menyebabkan munculnya terobosan-terobosan baru yang salah
satunya adalah dibuatnya chip mikrokontroler.
Untuk memperjelas pengertiannya, ada 3 istilah yang harus didefinisikan yang
saling berkaitan, yaitu mikroprosesor, mikrokomputer dan mikrokontroler:
Mikroprosesor merupakan pemroses mikro atau pengolah mikro. Secara fisik,
mikroprosesor adalah sebuah chip yang merupakan perpaduan dari suatu rangkaian
elektronika yang rumit yang dirancang atau dibuat untuk mengolah atau
memproses pekerjaan-pekerjaan yang cukup kompleks. Jadi, istilah mikro pada
mikroprosesor sangat terkait dengan ukuran fisik mikroprosesor yang kecil.
Mikroprosesor merupakan otak dan pusat pengendali komputer yang didukung
oleh komponen lainnya. Mikroprosesor adalah chip yang sering disebut prosesor
yang sekarang ukurannya sudah mencapai Gigahertz (GHz). Ukuran tersebut
adalah hitungan kecepatan prosesor dalam mengolah data atau informasi. Merk
prosesor yang banyak beredar di pasaran adalah AMD, Apple, Cyrix VIA, IBM,
IDT, dan Intel.
Mikrokomputer merupakan sebuah sistem yang berbasis mikroprosesor. Sebuah
Personal Computer atau laptop merupakan contoh mikrokomputer. Mikroprosesor
terletak pada socket yang telah disediakan oleh motherboard dimana
mikroprosesor ini dapat diganti dengan mikroprosesor yang lain asalkan sesuai
dengan socket yang ada pada motherboard. Jenis dan kapasitas mikroprosesor
mempengaruhi kecepatan komputer.
Mikrokontroler merupakan sebuah chip yang terdiri atas mikroprosesor, RAM,
ROM, dan piranti I/O sehingga biasanya disebut single chip microcomputer. Salah
satu keunggulan mikrokontroler adalah adanya RAM, ROM dan piranti I/O dalam
sebuah chip sehingga tidak perlu menambahkan komponen-komponen tersebut
secara fisik.

Dyah Lestari, 2013 2


B. Perkembangan Mikroprosesor dan Mikrokontroler
1. Perkembangan Mikroprosesor
Mikroprosesor pertama adalah Intel 4004 yang dikenalkan tahun 1971, tetapi
kegunaan mikroprosesor ini masih sangat terbatas, hanya dapat digunakan untuk operasi
penambahan dan pengurangan. Mikroprosesor pertama yang digunakan untuk komputer di
rumah adalah Intel 8080, merupakan komputer 8 bit dalam satu chip yang diperkenalkan
pada tahun 1974. Tahun 1979 diperkenalkan mikroprosesor baru yaitu 8088.
Mikroprosesor 8088 mengalami perkembangan menjadi 80286, berkembang lagi menjadi
80486, kemudian menjadi Pentium, dari Pentium I sampai dengan sekarang, Pentium IV.
Untuk lebih lengkapnya, bisa dilihat dalam Tabel 1.1.

Tabel 1.1 Perkembangan Mikroprosesor


Nama Tahun Jumlah Transistor Micron Clock Speed Data Width MIPS
Prosesor Keluar

4004 1971 2.300 4 bit 0,06

8008 1972 8 bit 0,06

8080 1974 6.000 6 2 MHz 8 bit 0,64

8086,8088 1979 29.000 3 5 MHz 16 bit, 8 bit 0,33


bus

80286 1982 134.000 1,5 6 MHz 16 bit 1

80386 1985 275.000 1,5 16 MHz 32 bit 5

80486 1989 1.200.000 1 25 MHz 32 bit 20

Pentium 1993 3.100.000 0,8 60 MHz 32 bit, 64 bit 100

Pentium II 1997 7.500.000 0,35 233 MHz 32 bit, 64 bit 400


bus

Pentium III 1999 9.500.000 0,25 450 MHz 32 bit, 64 bit 1.000
bus

Sumber : www.intel.com
Keterangan Tabel :
1. Transistor berbentuk seperti tabung yang sangat kecil, terdapat pada Chip.
2. Micron adalah ukuran dalam Micron (10 pangkat -6), merupakan kabel terkecil dalam Chip
3. Clock Speed = kecepatan maksimal sebuah prosesor
4. Data width = lebar dari Arithmatic Logic Unit (ALU) / Unit pengelola aritmatika, untuk proses
pengurangan, pembagian, perkalian dan sebagainya.
5. MIPS = Millions of Instructions Per Second / Jutaan perintah per detik.

Dyah Lestari, 2013 3


2. Perkembangan Mikrokontroler
Karena kebutuhan yang tinggi terhadap chip-chip pintar dengan berbagai
fasilitasnya, maka berbagai vendor juga berlomba untuk menawarkan produk-produk
mikrokontrolernya. Hal tersebut terjadi semenjak tahun 1970-an. Motorola mengeluarkan
seri mikrokontroler 6800 yang terus dikembangkan hingga sekarang menjadi 68HC05,
68HC08, 68HC11, 68HC12, dan 68HC16. Zilog juga mengeluarkan seri mikroprosesor
Z80-nya yang terkenal dan terus dikembangkan hingga kini menjadi Z180 dan kemudian
diadopsi juga oleh mikroprosesor Rabbit. Intel mengeluarkan mikrokontrolernya yang
populer di dunia yaitu 8051, yang karena begitu populernya maka arsitektur 8051 tersebut
kemudian diadopsi oleh vendor lain seperti Phillips, Siemens, Atmel, dan vendor-vendor
lain dalam produk mikrokontroler mereka. Selain itu masih ada mikrokontroler populer
lainnya seperti Basic Stamps, PIC dari Microchip, MSP 430 dari Texas Instrument dan
masih banyak lagi.
Selain mikroprosesor dan mikrokontroler, sebenarnya telah bemunculan chip-chip
pintar lain seperti DSP prosesor dan Application Spesific Integrated Circuit (ASIC). Di
masa depan, chip-chip mungil berkemampuan sangat tinggi akan mendominasi semua
desain elektronik di dunia sehingga mampu memberikan kemampuan komputasi yang
tinggi serta meminimumkan jumlah komponen-komponen konvensional.

C. Persamaan dan Perbedaan Mikroprosesor dan Mikrokontroler


1. Persamaan Mikroprosesor dan Mikrokontroler
Mikroprosesor dan mikrokontroler merupakan IC yang dapat diprogram dan supaya
aplikasi yang diinginkan dapat berjalan, maka memori program harus diisi program
tertentu.

2. Perbedaan Mikroprosesor dan Mikrokontroler


Terdapat perbedaan yang signifikan antara mikrokontroler dan mikroprosessor.
Perbedaan yang utama antara keduanya dapat dilihat dari dua faktor utama yaitu arsitektur
perangkat keras (hardware architecture) dan aplikasi masing-masing.
a. Ditinjau dari segi arsitekturnya, mikroprosesor hanya merupakan single chip CPU,
sedangkan mikrokontroler dalam IC-nya selain CPU juga terdapat piranti lain yang
memungkinkan mikrokontroler berfungsi sebagai suatu single chip computer. Dalam

Dyah Lestari, 2013 4


sebuah IC mikrokontroler telah terdapat ROM, RAM, EPROM, serial interface dan
paralel interface, timer, interrupt controller, konverter Analog ke Digital, dan lainnya
(tergantung fitur yang melengkapi mikrokontroler tersebut).
b. Dari segi aplikasinya, mikroprosessor hanya berfungsi sebagai Central Processing
Unit yang menjadi otak komputer, sedangkan mikrokontroler, dalam bentuknya yang
mungil, pada umumnya ditujukan untuk melakukan tugastugas yang berorientasi
kontrol pada rangkaian yang membutuhkan jumlah komponen minimum dan biaya
rendah (low cost).

D. Aplikasi Mikrokontroler
Karena kemampuannya yang tinggi, bentuknya yang kecil, konsumsi dayanya yang
rendah, dan harga yang murah maka mikrokontroler begitu banyak digunakan di dunia.
Mikrokontroler digunakan mulai dari mainan anak-anak, perangkat elektronik rumah
tangga, perangkat pendukung otomotif, peralatan industri, peralatan telekomunikasi,
peralatan medis dan kedokteran, sampai dengan pengendali robot serta persenjataan
militer. Terdapat beberapa keunggulan yang diharapkan dari alat-alat yang berbasis
mikrokontroler (microcontroller-based solutions) :
Kehandalan tinggi (high reliability) dan kemudahan integrasi dengan komponen
lain (high degree of integration)
Ukuran yang semakin dapat diperkecil (reduced in size)
Penggunaan komponen dipersedikit (reduced component count) yang juga akan
menyebabkan biaya produksi dapat semakin ditekan (lower manufacturing cost)
Waktu pembuatan lebih singkat (shorter development time) sehingga lebih cepat
pula dijual ke pasar sesuai kebutuhan (shorter time to market)
Konsumsi daya yang rendah (lower power consumption)

E. Sistem Mikroprosesor
Sebuah sistem minimum mikroprosesor memerlukan perangkat-perangkat seperti
mikroprosesor, unit memori, unit masukan dan keluaran, dan rangkaian pendukung lain.
Diagram blok rangkaian sistem minimum mikroprosesor diperlihatkan dalam Gambar 1.1.

Dyah Lestari, 2013 5


Gambar 1.1 Sistem Minimum Mikroprosesor

Dalam sistem mikroprosesor prinsip kerjanya adalah mengolah suatu data masukan,
yang kemudian hasil olahan tersebut akan menghasilkan keluaran yang dikehendaki.
Proses pengolahan datanya dapat difungsikan sesuai dengan instruksi yang diprogramkan .
Masing-masing mikroprosesor memiliki bahasa pemrograman yang berbeda-beda. Namun
secara prinsip, dasar dari tiap mikroprosesor adalah sama. Tiap mikroprosesor memiliki
satu bus data, satu bus alamat dan satu bus kendali. Dalam mikroprosesor terdapat suatu
unit untuk mengerjakan fungsi fungsi logika dan aritmetika, register register untuk
menyimpan data sementara dan unit pengendalian .
Bus data terdiri biasanya 4, 8, 16 atau 32 jalur (bit), 64 bit, tergantung dari jenis
mikroprosesornya. Bus data berfungsi memuat data dari dan ke mikroprosesor. Arah panah
menunjukkan arah data dikirim/diterima. Bus alamat merupakan bus yang berisi alamat-
alamat yang datanya akan dikirim/diterima oleh mikroprosesor. Bus kendali digunakan
untuk mensinkronkan kerja antara mikroprosesor dengan dunia luar sistem. Pada beberapa
aplikasi ada yang disebut dengan istilah jabat tangan, seperti misalnya pada penerapan
hubungan dengan pencetak (printer).
Dalam sistem kerjanya mikroprosesor didukung oleh unit memori (untuk
menyimpan program tetap/sementara dan menyimpan data), unit masukan dan keluaran yang
berfungsi sebagai antar muka dengan dunia luar. Catu daya, rangkaian pembangkit
detak (clock), rangkaian pengawas sandi (address decoder), penyangga (buffer) dan

Dyah Lestari, 2013 6


penahan (latch) juga diperlukan mikroprosesor untuk mendukung operasi kerja sebagai satu
rangkaian yang solid.

Rangkuman
Dalam bab ini telah disampaikan mengenai pengertian mikrokontroler dan
mikroprosesor, perkembangan mikroprosesor dan mikrokontroler mulai dari muncul
pertama kali sampai saat ini, persamaan dan perbedaan antara mikroprosesor dan
mikrokontroler, serta sistem mikroprosesor secara umum. Di bab berikutnya akan dibahas
mengenai mikrokontroler AVR.

Soal Latihan
1. Apakah yang dimaksud dengan mikrokomputer ?
2. Apakah yang dimaksud dengan mikrokontroler?
3. Apakah perbedaan antara mikroprosesor dan mikrokontroler?
4. Fungsi ALU dalam mikrokontroler adalah ...
5. Yang digunakan oleh mikroprosesor untuk mengirim informasi alamat memori atau
port I/O adalah ...

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Heryanto, M.A. dan Adi, W.P. 2008. Pemrograman Bahasa C untuk Mikrokontroler
ATmega8535. Yogyakarta: CV. Andi Offset.

Andrianto, Heri. 2008. Pemrograman Mikrokontroler Avr ATmega16. Bandung:


Informatika Bandung.

Dyah Lestari, 2013 7


MODUL 2
MIKROKONTROLER AVR

Pertemuan ke : 2-3
Topik : 1. Fitur mikrokontroler AVR.
2. Arsitektur mikrokontroler AVR.
3. Konfigurasi pin mikrokontroler AVR.
4. Memori dalam mikrokontroler AVR.
5. Rangkaian sistem minimum mikrokontroler AVR.
Alokasi Waktu : 4 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan fitur mikrokontroler AVR.
2. Mahasiswa mampu menjelaskan arsitektur mikrokontroler AVR.
3. Mahasiswa mampu menjelaskan konfigurasi pin mikrokontroler
AVR.
4. Mahasiswa mampu menjelaskan memori dalam mikrokontroler
AVR.
4. Mahasiswa mampu menyebutkan komponen dalam rangkaian
sistem minimum mikrokontroler AVR.

Pendahuluan
Dalam bab ini akan dibahas mengenai fitur mikrokontroler AVR, arsitektur
mikrokontroler AVR, konfigurasi pin mikrokontroler AVR, jenis, fungsi, kapasitas, range
alamat memori dalam mikrokontroler AVR, serta rangkaian sistem minimum
mikrokontroler AVR.

A. Mikrokontroler AVR
Mikrokontroler ATmega8535 merupakan salah satu anggota keluarga
mikrokontroler AVR yang arsitekturnya menjadi andalan Atmel. Arsitektur ini dirancang
memiliki berbagai kelebihan dan merupakan penyempurnaan dari arsitektur
mikrokontroler-mikrokontroler yang sudah ada. Berbagai seri mikrokontroler AVR telah

Dyah Lestari, 2013 8


diproduksi oleh Atmel dan digunakan di dunia sebagai mikrokontroler yang bersifat low
cost dan high performance. Di Indonesia, mikrokontroler AVR banyak dipakai karena
fiturnya yang cukup lengkap, mudah untuk didapatkan, dan harganya yang relatif
terjangkau.
Antar seri mikrokontroler AVR memiliki beragam tipe dan fasilitas, namun
kesemuanya memiliki arsitektur yang sama, dan juga set instruksi yang relatif tidak
berbeda. Tabel 2.1 membandingkan beberapa seri mikrokontroler AVR buatan Atmel.

Tabel 2.1 Varian Mikrokontroler AVR

Seri Flash RAM EEPROM Pin Timer Timer USART PWM ADC SPI ISP
(kbytes) (bytes) (kbytes) I/O 16-bit 8-bit 10-bit
ATmega8 8 1024 0.5 23 1 1 1 3 6/8 1 Ya
ATmega8535 8 512 0.5 32 2 2 1 4 8 1 Ya
ATmega16 16 1024 0.5 32 1 2 1 4 8 1 Ya
ATmega162 16 1024 0.5 35 2 2 2 6 8 1 Ya
ATmega32 32 2048 1 32 1 2 1 4 8 1 Ya
ATmega128 128 4096 4 53 2 2 2 8 8 1 Ya
ATtiny12 1 - 0.0625 6 - 1 - - - - Ya
ATtiny2313 2 128 0.125 18 1 1 1 4 - 1 Ya
ATtiny44 4 256 0.25 12 1 1 - 4 8 1 Ya
ATtiny84 8 512 0.5 12 1 1 - 4 8 1 Ya

Keterangan:
Flash adalah suatu jenis Read Only Memory yang biasanya diisi dengan program hasil buatan
manusia yang harus dijalankan oleh mikrokontroler
RAM (Random Acces Memory) merupakan memori yang membantu CPU untuk penyimpanan data
sementara dan pengolahan data ketika program sedang running
EEPROM (Electrically Erasable Programmable Read Only Memory) adalah memori untuk
penyimpanan data secara permanen oleh program yang sedang running
Port I/O adalah kaki untuk jalur keluar atau masuk sinyal sebagai hasil keluaran ataupun masukan
bagi program
Timer adalah modul dalam hardware yang bekerja untuk menghitung waktu/pulsa
USART (Universal Synchronous Asynchronous Receiver Transmitter) adalah jalur komunikasi data
khusus secara serial asynchronous
PWM (Pulse Width Modulation) adalah fasilitas untuk membuat modulasi pulsa
ADC (Analog to Digital Converter) adalah fasilitas untuk dapat menerima sinyal analog dalam
range tertentu untuk kemudian dikonversi menjadi suatu nilai digital dalam range tertentu
SPI (Serial Peripheral Interface) adalah jalur komunikasi data khusus secara serial secara serial
synchronous
ISP (In System Programming) adalah kemampuan khusus mikrokontroler untuk dapat diprogram
langsung dalam sistem rangkaiannya dengan membutuhkan jumlah pin yang minimal

B. Fitur Mikrokontroler ATmega8535


Dalam mata kuliah ini dipilih ATmega8535 sebagai perwakilan dari mikrokontroler
AVR, dengan harapan tidak akan menemui kesulitan ketika menggunakan mikrokontroler
AVR yang lain dengan fitur yang berbeda. Fitur mikrokontroler ATmega8535 mencakup:

Dyah Lestari, 2013 9


Mikrokontroler 8-bit dengan performansi tinggi dan disipasi daya rendah.
Arsitektur RISC lanjut:
130 set instruksi, hampir semuanya dieksekusi dalam satu siklus clock
32 x 8 general purrpose working register
Kecepatan mengakses data sampai 16 MIPS dengan kristal 16 MHz
Memori:
Flash memory 8kbyte dengan batas tulis/hapus 10.000 kali
512 Byte EEPROM, yang dapat ditulis/dihapus sebanyak 100.000 kali
512 Byte SRAM internal
2 Timer/Counter 8-bit dan 1 Timer/Counter 16 bit yang dapat digunakan untuk
Timer, Counter, dan PWM 4 kanal
ADC 10-bit, 8 kanal
Komunikasi Serial 2 kabel (Two Wire Serial Interface)
USART
Master/Slave SPI Serial Interface
Watchdog Timer yang dapat diprogram
Komparator Analog
Interrupt Internal dan Eksternal
Enam sleep mode: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
dan Extended Stanby

C. Arsitektur Mikrokontroler AVR


ATmega8535 merupakan mikrokontroler yang arsitekturnya berbasis register,
dimana baik kedua operand dalam sebuah operasi disimpan dalam register dalam CPU. Ini
artinya, sebelum sebuah operasi dijalankan, computer mengambil semua data yang
diperlukan ke dalam CPU. Hasil sebuah operasi juga tersimpan dalam register. Selama
eksekusi program, CPU berinteraksi dengan register serta meminimalkan akses memori
yang lebih lambat.
Selain arsitektur yang berbasis register, mikokontroler ATmega8535 juga berbasis
set instruksi yaitu RISC (Reduced Instruction Set Computer). Prosesor RISC mempunyai
operasi yang simpel dan efisien untuk mengefisienkan operasi program. Mikrokontroler
ATmega8535 dilengkapi dengan 131 instruksi bertipe RISC yang hampir semuanya dapat

Dyah Lestari, 2013 10


dieksekusi dalam satu siklus clock. ATmega8535 juga dilengkapi dengan rangkaian
tambahan untuk memungkinkan jalannya operasi perkalian dalam dua siklus clock.

Gambar 2.1 Blok Diagram Internal Mikrokontroler AVR

Dyah Lestari, 2013 11


ATmega8535 dilengkapi dengan 32 register 8-bit general purpose yang dikopel pada ALU
di dalam CPU. Prosesor ATmega8535 juga didesain sesuai dengan arsitektur Harvard,
dimana terdapat memori dan bus yang terpisah untuk program dan data. Penggabungan
arsitektur Harvard dan RISC memungkinkan eksekusi program yang cepat dan efisien serta
memungkinkan menjalankan sebuah instruksi bahasa assembly dilakukan dalam satu siklus
clock. Sebagai gambaran, ATmega8535 dapat mengeksekusi 12 juta instruksi setiap detik
pada kecepatan clock 12 MHz.
Blok diagram internal mikrokontroler AVR dapat dilihat dalam Gambar 2.1.
Seperti yang terlihat dalam Gambar 2.1, ATmega8535 mempunyai koneksi untuk catu
daya (VCC, GND, AVCC, dan AREF, AGND), kristal untuk sumber clock (XTAL1 dan
XTAL2), reset prosesor (RESET aktif LOW), 4 buah port 8-bit (PA0-PA7, PC0-PC7, PB0-
PB7, dan PD0-PD7), yang digunakan untuk berinteraksi dengan rangkaian di luar
mikrokontroler. Port I/O ini dapat digunakan untuk input/output digital atau digunakan
untuk fungsi alternatifnya. Port-port ini dihubungkan dengan CPU ATmega8535 dan
subsistem internal melalui bus data internal. ATmega8535 juga mempunyai subsistem
timer, ADC, interrupt, memori dan komunikasi.

D. Konfigurasi Pin ATmega8535


Dalam Gambar 2.2 ditunjukkan konfigurasi pin mikrokontroler ATmega8535
dalam kemasan DIP. Dalam Gambar 2.2 terlihat bahwa fitur-fitur yang sudah disebutkan di
atas, juga tertulis di nama pin-pin mikrokontroler ATmega8535.

Gambar 2.2. Konfigurasi Pin ATmega8535

Dyah Lestari, 2013 12


Berikut adalah penjelasan fungsi tiap pin ATmega535:
VCC Catu daya digital

GND Ground

Port A Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port A dapat
memberi arus 20 mA dan dapat mengendalikan display LED secara
langsung. Data Direction Register port A (DDRA) harus disetting terlebih
dahulu sebelum Port A digunakan. Bit-bit DDRA diisi 0 jika ingin
memfungsikan pin-pin port A yang bersesuaian sebagai input, atau diisi 1
jika sebagai output. Selain itu, kedelapan pin port A juga digunakan untuk
masukan sinyal analog bagi A/D converter. Tabel 2.2 memperlihatkan
fungsi alternatif Port A.

Tabel 2.2 Fungsi Alternatif Port A


Pin Port Fungsi Alternatif
PA7 ADC7 (input ADC kanal 7)
PA6 ADC6 (input ADC kanal 6)
PA5 ADC5 (input ADC kanal 5)
PA4 ADC4 (input ADC kanal 4)
PA3 ADC3 (input ADC kanal 3)
PA2 ADC2 (input ADC kanal 2)
PA1 ADC1 (input ADC kanal 1)
PA0 ADC0 (input ADC kanal 0)
Port B Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port B dapat
memberi arus 20 mA dan dapat mengendalikan display LED secara
langsung. Data Direction Register port B (DDRB) harus disetting terlebih
dahulu sebelum Port B digunakan. Bit-bit DDRB diisi 0 jika ingin
memfungsikan pin-pin port B yang bersesuaian sebagai input, atau diisi 1
jika sebagai output. Pin-pin port B juga memiliki untuk fungsi-fungsi
alternatif seperti yang dapat dilihat dalam Tabel 2.3.

Dyah Lestari, 2013 13


Tabel 2.3 Fungsi Alternatif Port B
Pin Port Fungsi Alternatif
PB7 SCK (SPI bus serial clock)
PB6 MISO (SPI bus master input / slave output)
PB5 MOSI (SPI bus master output / slave input)
PB4 SS (SPI slave select input)
PB3 AIN1 (analog comparator negative input)
PB2 AIN0 (analog comparator positive input)
INT2 (External Interrupt 2 Input)
PB1 T1 (timer/counter 0 external counter input)
PB0 T0 (timer/counter 0 external counter input)
XCK (USART External Clock Input/Output)
Port C Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port C dapat
memberi arus 20 mA dan dapat mengendalikan display LED secara
langsung. Data Direction Register port C (DDRC) harus disetting terlebih
dahulu sebelum Port C digunakan. Bit-bit DDRC diisi 0 jika ingin
memfungsikan pin-pin port C yang bersesuaian sebagai input, atau diisi 1
jika sebagai output. Selain itu, dua pin port C (PC6 dan PC7) juga
memiliki fungsi alternatif sebagai oscillator untuk timer/counter 2. Fungsi
Alternatif Port C dapat dilihat dalam Tabel 2.4.

Tabel 2.4 Fungsi Alternatif Port C


Pin Port Fungsi Alternatif
PC7 TOSC2 (Timer Oscillator Pin 2)
PC6 TOSC1 (Timer Oscillator Pin 1)
PC1 SDA (Two Wire Serial Bus Data Input/Output Line)
PC0 SCL (Two Wire Serial Bus Clock Line)
Port D Merupakan 8-bit directional port I/O. Setiap pinnya dapat menyediakan
internal pull-up resistor (dapat diatur per bit). Output buffer Port D dapat
memberi arus 20 mA dan dapat mengendalikan display LED secara
langsung. Data Direction Register port D (DDRD) harus disetting terlebih
dahulu sebelum Port D digunakan. Bit-bit DDRD diisi 0 jika ingin
memfungsikan pin-pin port D yang bersesuaian sebagai input, atau diisi 1
jika sebagai output. Selain itu, pin-pin port D juga memiliki untuk fungsi-
fungsi alternatif khusus seperti yang dapat dilihat dalam Tabel 2.5.

Dyah Lestari, 2013 14


Tabel 2.5 Fungsi Alternatif Port D
Pin Port Fungsi Alternatif
PD7 OC2 (Timer/Counter2 output compare match output)
PD6 ICP (Timer/Counter1 input capture pin)
PD5 OC1A (Timer/Counter1 output compareA match output)
PD4 OC1B (Timer/Counter1 output compareB match output)
PD3 INT1 ( external interrupt 1 input )
PD2 INT0 ( external interrupt 0 input )
PD1 TDX (UART output line)
PD0 RDX (UART input line)
RESET RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi

masukan low selama minimal 2 machine cycle maka system akan di-reset.

XTAL1 XTAL1 adalah masukan ke inverting oscillator amplifier dan input ke


internal clock operating circuit.

XTAL2 XTAL2 adalah output dari inverting oscillator amplifier.

AVCC AVCC adalah kaki masukan tegangan bagi A/D Converter. Kaki ini harus
secara eksternal terhubung ke Vcc melalui lowpass filter.

AREF AREF adalah kaki masukan referensi bagi A/D Converter. Untuk
operasionalisasi ADC, suatu level tegangan antara AGND dan Avcc harus
diberikan ke kaki ini.

E. Register Status
Register status berisi informasi tentang hasil operasi aritmatika yang baru
berlangsung. Informasi tersebut dapat digunakan untuk mengubah alur program untuk
melakukan operasi kondisional.

Bit 7 I: Global Interrupt Enable


Bit I harus diset jika mengaktifkan interrupt. Kontrol enable interrupt tertentu secara
individu harus dilakukan di register kontrol yang terkait. Bit I akan di-clear oleh
hardware setelah interrupt selesai dan diset dengan instruksi RETI untuk mengaktifkan
interrupt berikutnya. Bit I juga dapat diset dan di-clear dengan instruksi SEI dan CLI.

Dyah Lestari, 2013 15


Bit 6 T: Bit Copy Storage
Instruksi Bit Copy BLD (Bit Load) dan BST (Bit STore) menggunakan bit T sebagai
sumber atau tujuan untuk bit yang dioperasikan. Sebuah bit dari file register dapat
disalin ke bit T dengan instruksi BST, dan sebuah bit dalam bit T dapat disalin ke
sebuah bit dalam sebuah register dalam file register dengan instruksi BLD.
Bit 5 H: Half Carry Flag
Bit ini meingindikasikan sebuah Half Carry dalam operasi aritmatika. Half carry
digunakan dalam aritmatika bilangan BCD.
Bit 4 S: Sign Bit, S = N V
Bit S adalah exclusive or dari bit N dan bit V.
Bit 3 V: Twos Complement Overflow Flag
Bit V mendukung aritmatika komplemen dua.
Bit 2 N: Negative Flag
Bit ini menunjukkan hasil negatif dari operasi artimatika atau logika.
Bit 1 Z: Zero Flag
Bit ini menunjukkan hasil nol dari operasi artimatika atau logika.
Bit 0 C: Carry Flag
Bit ini menunjukkan sebuah carry yang dihasilkan dari operasi artimatika atau logika.

F. Memori Mikrokontroler AVR


ATmega8535 dilengkapi dengan 3 bagian memori utama:
- Flash Electrically Erasable Programmable Read-Only Memory (EEPROM)
- Static Random Access Memory (SRAM), dan
- EEPROM

1. In System Programmable Flash EEPROM


Flash EEPROM digunakan untuk menyimpan program. Memori ini dapat
digunakan untuk menyimpan program, dapat dihapus dan diprogram sebagai bagian
tersendiri. Jika di dalam sebuah program terdapat sejumlah konstanta, konstanta ini dapat
dimasukkan dalam variabel global bersamaan dengan program utama dan diprogram ke
dalam Flash EEPROM. Program yang disimpan dalam Flash EEPROM tidak dapat hilang

Dyah Lestari, 2013 16


(nonvolatile), artinya program akan tetap ada walaupun catu daya mikrokontroler
dimatikan.

Gambar 2.3 Peta Memori Program

Kapasitas flash EEPROM ini besarnya 8kbyte dengan 16 bit setiap lokasi memori.
Range alamat dimulai dari 000H FFFH (Gambar 2.3). Flash EEPROM ini merupakan in-
system programmable memory, yang berarti mikrokontroler dapat diprogram ketika berada
dalam rangkaiannya. Mikrokontroler tidak harus dipindahkan dari rangkaiannya ketika
pemrograman memori flash. Sebuah PC dihubungkan dengan mikrokontroler melalui kabel
untuk men-download program ke mikrokontroler. Memori flash mempunyai kemampuan
untuk ditulisi atau dihapus sebanyak 10.000 kali. Untuk keamanan software, memori flash
dibagi menjasi dua bagian, yaitu: bagian Boot Program dan bagian Application Program.

2. Static Random Access Memory


SRAM bersifat volatile, artinya jika daya pada mikrokontroler dihilangkan, maka
data yang ada dalam memori SRAM akan hilang. ATmega8535 dilengkapi dengan 608
byte lokasi memori (000H -25FH). 32 byte SRAM digunakan untuk general purpose
register 00H 1FH) dan 64 byte digunakan untuk subsistem peripheral dan I/O (20H
5FH). 512 byte sisanya digunakan untuk menyimpan data, misalnya global variabel,
variabel lokal, dan stack. Peta memori data dapat dilihat dalam Gambar 2.4.

Dyah Lestari, 2013 17


Gambar 2.4 Peta memori data SRAM

General Purpose Register File


Sebagian besar instruksi yang mengoperasikan Register File mempunyai akses
langsung ke semua register dan hampir semuanya adalah instruksi satu siklus clock.
Seperti terlihat dalam Gambar 2.5, setiap register disediakan untuk pengalamatan memori
data, pengalamatannya secara langsung ke dalam 32 lokasi pertama pada Data Space.

Dyah Lestari, 2013 18


Pengorganisasian memori ini memberikan fleksibilitas tinggi dalam mengakses resister,
misalnya register pointer X, Y, dan Z dapat diset ke register indeks apapun.

Gambar 2.5 General Purpose Working Register

3. Byte-Addressable EEPROM

Gambar 2.6 Peta Memori Data EEPROM

Byte-addressable memory digunakan untuk menyimpan dan mengambil


variabel/data secara permanen selama eksekusi program. EEPROM ini bersifat nonvolatile.
Memori ini khususnya berguna untuk menyimpan data system malfunction dan kesalahan

Dyah Lestari, 2013 19


data selama eksekusi program. Memori ini juga berguna untuk menyimpan data yang harus
tetap ada selama catu daya tidak ada tetapi data tersebut perlu diubah secara periodik.
Contohnya, memori ini digunakan untuk menyimpan parameter sistem, kombinasi kunci
elektronik, urutan membuka kunci pintu garasi elektronik secara otomatis. ATmega8535
mempunyai EEPROM 512 byte, dengan range alamat 00H FFH (Gambar 2.6).

G. Rangkaian Sistem Minimum ATmega 8535

Gambar 2.7 Sistem Minimum Mikrokontroler ATmega 8535

Dyah Lestari, 2013 20


Sistem minimum mikrokontroler adalah rangkaian elektronik minimum yang
diperlukan untuk beroperasinya IC mikrokontroler. Sistem minimum ini kemudian bisa
dihubungkan dengan rangkaian lain untuk menjalankan fungsi tertentu. Di keluarga
mikrokontroler AVR, Atmega 8535 adalah salah satu seri yang banyak digunakan.
Untuk membuat rangkaian sismin Atmel ATmega 8535 diperlukan beberapa
komponen yaitu:
IC mikrokontroler ATmega8535
1 XTAL 4 MHz atau 8 MHz (XTAL1)
kapasitor kertas yaitu dua 22 pF (C2 dan C3) serta 100 nF (C4)
1 kapasitor elektrolit 4.7 uF (C12) 2 resistor yaitu 100 ohm (R1) dan 10 Kohm (R3)
1 tombol reset pushbutton (PB1)
Selain itu tentunya diperlukan power suply yang bisa memberikan tegangan 5V
DC. Rangkaian minimum sistem mikrokontroler AVR dapat dilihat dalam Gambar 2.7.
Rangkaian osilator kristal dapat dilihat dalam Gambar 2.8. Nilai kapasitor yang
digunakan bergantung pada frekuensi kristal yang digunakan.

Gambar 2.8 Rangkaian Osilator Kristal


Rangkuman
Dalam bab ini telah dijelaskan fitur mikrokontroler AVR, arsitektur mikrokontroler
AVR, konfigurasi pin mikrokontroler AVR, jenis, fungsi, kapasitas, range alamat memori
dalam mikrokontroler AVR, serta rangkaian sistem minimum mikrokontroler AVR.
Informasi yang diberikan dalam bab ini dapat diaplikasikan untuk varian dari
mikrokontroler AVR yang lain. Dalam bab selanjutnya akan dibahas antarmuka
mikrokontroler ATmega8535 dengan LED dan toggle switch.

Soal Latihan
1. Sebutkan 5 fitur dalam mikrokontroler Atmega8535.
2. Apakah yang dimaksud dengan prosesor berarsitektur RISC?

Dyah Lestari, 2013 21


3. Bagaimana ATmega8535 berinteraksi dengan rangkaian di luar sistem minimum?
4. Jelaskan berbagai metode untuk memberikan sumber clock pada ATmega8535.
5. Sebutkan tiga jenis memori dalam mikrokontroler ATmega8535. Jelaskan fungsi,
kapasitas, serta range alamat memori tersebut.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 22


MODUL 3
ANTARMUKA MIKROKONTROLER DENGAN LED DAN
TOGGLE SWITCH

Pertemuan ke :4
Topik : 1. Karakteristik port I/O mikrokontroler AVR.
2. Rangkaian antarmuka mikrokontroler dengan LED.
3. Rangkaian antarmuka mikrokontroler dengan toggle switch.
4. Program untuk mengirim data ke LED dan membaca data dari
toggle switch.
Alokasi Waktu : 2 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan karakteristik port I/O
mikrokontroler AVR.
2. Mahasiswa mampu menjelaskan rangkaian antarmuka
mikrokontroler dengan LED.
3. Mahasiswa mampu menjelaskan rangkaian antarmuka
mikrokontroler dengan toggle switch.
4. Mahasiswa mampu menjelaskan program untuk mengirim data
ke LED dan membaca data dari toggle switch.

Pendahuluan
Dalam bab ini akan dibahas mengenai karakteristik port I/O mikrokontroler AVR,
rangkaian antarmuka mikrokontroler dengan LED, rangkaian antarmuka mikrokontroler
dengan toggle switch, serta bagaimana memrogram mikrokontroler untuk mengirim data
ke LED dan membaca data dari toggle switch.

A. Sistem Port
Mikrokontroler AVR dilengkapi dengan 4 port 8-bit general purpose, yang
digunakan untuk port I/O digital, yaitu PORTA, PORTB, PORTC, dan PORTD. Semua
port ini mempunyai fungsi alternatif. Dalam bagian ini akan dijelaskan tentang fitur port

Dyah Lestari, 2013 23


untuk I/O digital. Semua port tersebut mempunyai fungsi Read-Modify-Write ketika
digunakan untuk port I/O digital umum. Itu berarti arah sebuah pin port dapat diubah
secara langsung. Hal yang sama juga beraku ketika mengganti nilai output atau
mengaktifkan/tidak mengaktifkan resistor pull-up ketika difungsikan sebagai input. Setiap
pin dapat digunakan untuk menyalakan LED secara langsung. Setiap pin port mempunyai
resistor pull-up dan diode pengaman yang diletakkan antara Vcc dan ground. Skema setiap
pin port dapat dilihat dalam Gambar 3.1.

Gambar 3.1. Skema pin I/O

Masing-masing port I/O mempunyai 3 register, yaitu:


- Data Register (PORTx) yang digunakan untuk menulis data output ke port.

- Data Direction Register (DDRx) digunakan untuk mengeset pin port sebagai
output (1) atau input (0).

- Input Pin Address (PINx) digunakan untuk membaca data input dari port.

Dyah Lestari, 2013 24


Tabel 3.1 Konfigurasi Pin Port

Gambar 3.1 memperlihatkan setting yang diperlukan untuk mengkonfigurasi pin


port tertentu menjadi output atau input. Jika dipilih sebagai input, pin tersebut dapat dipilih
sebagai pin input atau beroperasi dalam mode impedansi tinggi. Dalam mode impedansi
tinggi, input terlihat sebagai impedansi tinggi oleh pin tertentu. Jika dipilih sebagai output,
pin tersebut dapat dikonfigurasikan berlogika LOW atau HIGH. Konfigurasi ini pada
umumnya diletakkan di awal program. Berikut ini merupakan contoh konfigurasi port
dalam bahasa C.

Dyah Lestari, 2013 25


B. Antarmuka dengan Piranti LED
1. Rangkaian Antarmuka Mikrokontroler dengan LED
Sebelum menghubungkan piranti eksternal dengan mikrokontroler, harus dilakukan
analisis antarmuka yang cermat untuk meyakinkan bahwa tegangan, arus dan pewaktuan
yang diperlukan memenuhi persyaratan yang diberikan oleh mikrokontroler maupun
piranti eksternal tersebut. Berikut ini akan dibahas bagaimana menghubungkan LED
dengan mikrokontroler AVR.
Sebuah LED (Light Emitting Diode) adalah sebuah sumber cahaya yang terbuat dari
semikonduktor. Biasanya LED digunakan sebagai lampu indikator logika 1 atau logika 0
pada pin tertentu di mikrokontroler, dan mulai banyak digunakan sebagai penerangan/lampu.
Gambar 3.2 memperlihatkan bentuk fisik LED dan simbol rangkaiannya. Sebuah LED
mempunyai 2 kaki yaitu anoda atau kaki positif dan katoda atau kaki negatif. Untuk
menyalakan LED, maka kaki anoda harus diberi tegangan 1.7 V - 2.2 V lebih besar daripada
kaki katoda. Tegangan ini disebut tegangan maju (Vf). Arus LED juga harus dibatasi oleh
besar arus tertentu yang disebut arus maju (If). Tegangan maju dan arus maju biasanya
tercantum dalam datasheet LED tersebut.

(a) LED warna merah, hijau dan biru


(b)

(b) Simbol elektronik


Gambar 3.2 LED

Contoh rangkaian LED dapat dilihat dalam Gambar 3.3. Logika 1 diberikan oleh
mikrokontroler ke masukan inverter. Inverter akan memberikan logika 0 pada output-nya

Dyah Lestari, 2013 26


sehingga akan memberikan virtual ground pada kaki katoda LED. Resistor membatasi arus
yang melewati LED tersebut. Nilai resistor dapat dihitung dari persamaan (3.1).
R = (VDD VDIODE)/IDIODE (3.1)

Gambar 3.3 Rangkaian antarmuka mikrokontroler dengan LED

Gambar 3.4 Rangkaian LED dalam trainer I/O

Penting untuk diingat bahwa IC inverter 7404 harus digunakan karena kemampuannya
untuk memberikan arus 16 mA dengan aman. Sebagai alternatif, dapat digunakan transistor
NPN seperti 2N2222 (PN2222 atau MPQ2222) sebagai pengganti inverter seperti yang
ditunjukkan dalam Gambar 3.3.

Dyah Lestari, 2013 27


Dalam trainer I/O yang digunakan, rangkaian antarmuka mikrokontroler dengan LED
yang dihubungkan dengan kedelapan pin sebuah port dapat dilihat dalam Gambar 3.4.
Dalam modul trainer I/O yang dipakai dalam praktikum, kedelapan rangkaian LED
tersebut dihubungkan ke sebuah soket jumper bernama OUTPUT.

2. Perintah Dasar Mengeluarkan Data


Sebelum mulai menulis program dengan bahasa C, perlu diketahui bahwa
mikrokontroler AVR perlu diset isi register DDR dan PORT agar bisa digunakan
sebagaimana mestinya, seperti yang terlihat dalam Tabel 3.2.

Tabel 3.2 Konfigurasi Pengaturan Port I/O


DDR bit = 1 DDR bit = 0
PORT bit = 1 Output ; High Input; R pull up
PORT bit = 0 Output; Low Input, Floating

Untuk mengirim data byte dalam bentuk bilangan heksadesimal ke PORTX (X=A,
B, C, D) digunakan statement:
PORTX = 0xdata;
Contohnya:
PORTB = 0xaa;
Untuk mengirim data byte dalam bentuk bilangan biner ke PORTX (X=A, B, C, D)
digunakan statement:
PORTX = 0bdata;
Contohnya:
PORTB = 0b10101010;
Untuk mengirim data per bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 , 3, 4, 5,
6, 7) digunakan statement:
PORTX.Y = data;
Dimana data bisa berupa 0 atau 1.
Contohnya:
PORTB.1 = 0;

Dyah Lestari, 2013 28


C. Antarmuka dengan Piranti Switch
1. Jenis-Jenis Switch
Switch mempunyai bermacam-macam jenis. Sebagai desainer sistem, kita memilih
switch sesuai dengan kebutuhan. Beberapa switch yang digunakan dalam aplikasi
mikrokontroler dapat dilihat dalam Gambar 3.5. Berikut ini merupakan beberapa jenis
switch.
Slide switch: Sebuah switch yang mempunyai dua posisi yang berbeda, yaitu on dan off
Switch ini dipindahkan dari satu posisi ke posisi yang lain secara manual. Untuk aplikasi
mikrokontroler, biasanya tersedia dalam bentuk DIP seukuran IC. Ada yang berisi 4 switch
dan ada yang berisi 8 switch.

Gambar 3.5 Antarmuka dengan switch (a) Macam-macam switch, (b) Antarmuka dengan
switch, dan (c) Antarmuka dengan switch yang dilengkapi dengan rangkaian debouncing

Dyah Lestari, 2013 29


Momentary contact push-button switch: momentary contact push-button switch
mempunyai 2 macam switch, yaitu normally closed (NC) dan normally open (NO). Switch
NO tidak menghubungkan rangkaian antara kedua kontaknya. Ketika tombolnya ditekan,
maka akan terjadi hubungan antara kedua kontaknya. Hubungan tersebut akan tetap ada
selama tombol ditekan. Ketika tombol dilepas, maka hubungan akan terbuka. Hal yang
sebaliknya berlaku untuk switch NC. Untuk aplikasi mikrokontroler, push-button switch
dalam konfigurasi small tact type switch.
Push on/push off switches: Tipe switch ini juga tersedia dalam konfigurasi NO atau NC.
Untuk konfigurasi NO, tombol ditekan untuk menghubungkan kedua kontaknya. Tombol
ditekan lagi untuk melepas hubungan antara kedua kontak tersebut.
Hexadecimalrotaryswitches: Rotary switch berbentuk kecil tersedia untuk aplikasi
mikrokontroler. Switch ini umumnya mempunyai posisi switch 16 berbentuk lingkaran.
Jika switch diputar ke setiap posisi, maka kode biner 4-bit akan dihasilkan oleh kontak
switch.
Antarmuka dengan switch secara umum ditunjukkan dalam Gambar 3.5 (b).
Antarmuka ini memberikan logika 0 atau 1 ke pin port input. Rangkaian antarmuka dasar
terdiri atas switch yang diseri dengan resistor pembatas arus. Titik antara switch dan
resistor dihubungkan ke pin input mikrokontroler. Dalam konfigurasi yang ditunjukkan,
resistor menarik input mikrokontroler ke tegangan sumber VDD. Jika switch ditutup, maka
titik tersebut terhubung ke ground dan mikrokontroler mendapat logika 0 di pin inputnya.
Untuk membalik logika pada rangkaian tersebut, maka posisi resistor dan switch dapat
ditukar.

2. Switch Debouncing
Switch mekanik tidak memberikan transisi yang bagus dari satu posisi (on) ke
posisi yang lain (off). Jika sebuah switch berpindah dari satu posisi ke posisi yang lain, hal
ini membuat kontak menutup dan membuka beberapa kali. Kondisi ini terjadi selama kira-
kira 10 ms. Mikrokontroler bekerja relatif cepat dibandingkan dengan bekerjanya switch
tersebut. Oleh karena itu, mikrokontroler dapat mengenali setiap switch bounce sebagai
transisi terpisah. Untuk memperbaiki fenomena switch bounce tersebut, maka diperlukan
rangkaian tambahan atau teknik pemrograman tertentu untuk mengatasinya. Rangkaian
switch debounce diilustrasikan dalam Gambar 3.5 (c). Titik antara switch dan resistor

Dyah Lestari, 2013 30


pembatas arus dihubungkan dengan rangkaian low pass filter (LPF) yang disusun oleh
resistor 470 k dan kapasitor. LPF mencegah agar perubahan yang tidak diinginkan
(bounce) pada sinyal input ke mikrokontroler tidak terjadi. Output LPF kemudian
dimasukkan ke IC Schmitt Trigger 74HC14, sebagai inverter tegangan yang dilengkapi
dengan histerisis. Hal ini akan membatasi switch bouncing dengan lebih baik.
Switch juga dapat di-debounce menggunakan software. Hal ini dapat dicapai
dengan menyisipkan delay 30 ms 50 ms pada pembacaan pin port. Delay ini akan
mencegah mikrokontroler merespon transisi switch yang berulang akibat bouncing. Kita
harus mempertimbangkan dengan baik akan menerapkan switch debouncing menggunakan
hardware atau software. Yang perlu diingat adalah setiap switch menghasilkan fenomena
bounce, oleh karena itu harus di-debounce.

3. Rangkaian Antarmuka Mikrokontroler dengan Toggle Switch


Saklar toggle adalah salah satu saklar elektrik yang digerakkan secara manual oleh
batang mekanik. Saklar toggle tersedia dalam berbagai bentuk dan ukuran, serta digunakan
dalam berbagai aplikasi. Gambar 3.6 memperlihatkan bentuk fisik dan simbol saklar toggle.

(a) Salah satu toggle switch

(b) Simbol elektronik


Gambar 3.6 Saklar toggle

Dalam trainer I/O yang dipakai dalam praktikum, saklar toggle yang digunakan
diberi rangkaian tambahan berupa rangkaian LED untuk melihat secara langsung logika

Dyah Lestari, 2013 31


yang ada pada saklar. Kedelapan rangkaian saklar tersebut dihubungkan ke sebuah soket
jumper bernama INPUT (Gambar 3.7).

Gambar 3.7 Rangkaian saklar toggle

4. Perintah Dasar Membaca Data


Sebelum membaca data, perlu dibuat deklarasi variabel untuk data yang dimasukkan.
Data bisa bertipe char. Deklarasi variabel diletakkan di variabel lokal pada main program.
void main (void)
{
//Declare your local variables here
unsigned char data_in;

Untuk membaca data byte ke PORTX (X=A, B, C, D) digunakan statement:
data_in = PINX;
Contoh:
data_in = PINB;

Dyah Lestari, 2013 32


Untuk membaca data bit ke PORTX.Y (X=A, B, C, D, dan Y=0, 1, 2 , 3, 4, 5, 6, 7)
digunakan statement:
data_in = PINX.Y;

Contoh:
data_in = PINB.1

Rangkuman
Dalam bab ini telah dijelaskan mengenai karakteristik port I/O mikrokontroler
AVR, rangkaian antarmuka mikrokontroler dengan LED, rangkaian antarmuka
mikrokontroler dengan toggle switch, serta bagaimana memrogram mikrokontroler untuk
mengirim data ke LED dan membaca data dari toggle switch. Dalam bab selanjutnya akan
dijelaskan bagaimana mengantarmukakan mikrokontroler dengan seven segmen.

Soal Latihan
1. Dapatkan sebuah LED dengan resistor pembatas arus yang dihubungkan seri secara
langsung dihubungkan dengan mikrokontroler AVR?.
2. Dengan kata-katamu sendiri, jelaskan setiap parameter elektrik mikrokontroler
AVR.
3. Apakah switch bounce itu? Jelaskan 2 teknik yang digunakan untuk
meminimalisisir switch bounce.
4. Berapa syarat arus yang melewati transistor 2N2222 dan 2N2907 yang digunakan
dalam rangkaian LED? Buktikan jawabanmu.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 33


Dyah Lestari, 2013 34
MODUL 4
ANTARMUKA MIKROKONTROLER DENGAN SEVEN
SEGMEN

Pertemuan ke :5
Topik : 1. Rangkaian antarmuka mikrokontroler AVR dengan seven
segmen.
2. Perintah untuk menampilkan angka ke seven segmen.
Alokasi Waktu : 2 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan rangkaian antarmuka
mikrokontroler AVR dengan seven segmen.
2. Mahasiswa mampu menjelaskan perintah untuk menampilkan
angka ke seven segmen.

Pendahuluan
Dalam bab ini akan dijelaskan tentang karakteristik seven segmen, rangkaian
antarmuka dengan mikrokontroler, serta bagaimana memprogram mikrokontroler supaya
seven segmen bisa mengeluarkan angka tertentu.

A. Karakteristik Seven Segmen


Penampil seven segment adalah sebuah piranti penampil untuk menampilkan angka
desimal. Penampil seven segment banyak digunakan dalam jam digital, meter elektronik,
dan piranti elektronik yang lain. Gambar 4.1 memperlihatkan bentuk fisik dan layout dasar
penampil seven segment. Penampil seven segment terdiri atas 8 LED yang disusun seperti
dalam Gambar 4.1(b). Setiap LED diidentifikasi sebagai huruf a, b, c, d, e, f, g, yang dimulai
dari huruf a di sebelah atas. Di sebelah kanan terdapat satu LED tambahan yang digunakan
sebagai koma (dp). Untuk menampilkan data angka, misalnya angka 5, maka segmen a, c,
d, f dan g harus menyala. Display seven segmen ada dua macam, yaitu dalam konfigurasi
common cathode (CC) and common anode (CA).

Dyah Lestari, 2013 35


(a) Penampil seven segment

(b) Layout LED


Gambar 4.1 Seven segment

B. Rangkaian Antarmuka dengan Seven Segmen


Dengan konfigurasi CC, maka ketujuh katoda setiap segmen dihubungkan menjadi
satu. Oleh karena mikrokontroler tidak mampu mengendalikan segmen LED secara
langsung, maka diperlukan rangkaian antarmuka seperti yang terlihat dalam Gambar 4.2 (a).
IC buffer/driver 74LS244 digunakan untuk memenuhi kebutuhan arus LED. 74LS244
mampu memberikan arus 15 mA per segmen (IOH) pada VOH 2,0 V. Resistor pembatas arus
diperlukan untuk setiap segmen untuk membatasi arus yang masuk ke setiap LED, Resistor
tersebut sudah tersedia dalam bentuk 8 DIP. Jika display seven segmen yang dibutuhkan
lebih dari satu, maka satu port mikrokontroler digunakan untuk data, dan sebagian port yang
lain digunakan untuk mengontrol nyala masing-masing seven segmen seperti yang
ditunjukkan dalam Gambar 4.2 (b). Sebuah transistor NPN (untuk seven segmen CC)
dihubungkan dengan kaki common setiap seven segmen. Kaki common ini diaktifkan secara
berurutan, sehingga jika mikrokontroler mengaktifkan kaki common ini dalam kecepatan
lebih dari 30 Hz, maka nyala seven segmen akan terlihat stabil (tidak berkedip).
Dalam trainer I/O yang dipakai dalam praktikum, seven segment yang digunakan ada
2 buah, semuanya bertipe common anoda. Kedua seven segment tersebut dimultipleks
sehingga data diperoleh dari satu kaki (D0-D7), sedangkan untuk menyalakannya digunakan
kaki kontrol yang berbeda (DO1 dan DO2). Rangkaian lengkap seven segment dapat dilihat

Dyah Lestari, 2013 36


dalam Gambar 4.3. Untuk menampilkan sebuah karakter, minimal 2 LED harus dinyalakan.
Tabel 4.1 memperlihatkan kode heksadesimal untuk menampilkan angka 0 sampai 9.

(a) Antarmuka dengan Seven Segmen

(b) Antarmuka dengan 4 Seven Segmen


Gambar 4.2 Rangkaian Antarmuka Seven Segmen

Dyah Lestari, 2013 37


Tabel 4.1 Kode heksadesimal untuk angka 0-9

Digit Gfedcba g F e d C b A
0 0x3F off on on on on on on
1 0x06 off off off off on on off
2 0x5B on off on on off on on
3 0x4F on off off on on on on
4 0x66 on on off off on on off
5 0x6D on on off on on off on
6 0x7D on on on on on off on
7 0x07 off off off off on on on
8 0x7F on on on on on on on
9 0x6F on on off on on on on

Gambar 4.3 Rangkaian penampil seven segment

Dalam Gambar 4.3, kaki a, b, c, d, e, f, g, dp dihubungkan ke soket jumper DATA


7S, sedangkan kaki kontrol (DO1 dan DO2 dihubungkan dengan soket jumper I/P S KEY.

Dyah Lestari, 2013 38


C. Program Untuk Menampilkan Angka ke Seven Segmen
Bagian program untuk inisialisasi seven segmen yang datanya dihubungkan dengan
PORTB serta PORTC digunakan untuk mengontrol nyala seven segmen.
//untuk data 7s
PORTB=0x00;
DDRB=0xff; //portb sebagai output, 0b11111111
//untuk kontrol DO1, DO2
PORTC=0xf0;
DDRC=0xf0; //portc sebagai input dan output, 0b11110000
Program berikut digunakan untuk menampilkan angka 8 pada seven segmen
sebelah kanan.
//Menampilkan angka 8 pada seven segmen sebelah kanan.
while (1)
{
PORTC.7=1; //nonaktifkan seven segment kiri
PORTC.6=0; //aktifkan seven segmen kanan
PORTB=0x7f; //tampilkan data angka 8
delay_ms(10);
}
Program berikut digunakan untuk menampilkan angka 4 pada seven segmen
sebelah kiri.
//Menampilkan angka 4 pada seven segmen sebelah kiri.
while (1)
{
PORTC.7=0; //aktifkan seven segment kiri
PORTC.6=1; //nonaktifkan seven segmen kanan
PORTB=0x66; //tampilkan data angka 4
delay_ms(10);
}

Rangkuman
Dalam bab ini telah dijelaskan mengenai karakteristik seven segmen, rangkaian
antarmuka mikrokontroler dengan seven segmen, serta bagaimana memrogram
mikrokontroler untuk menampilkan karakter angka ke seven segmen. Dalam bab
selanjutnya akan dijelaskan bagaimana mengantarmukakan mikrokontroler dengan keypad.

Dyah Lestari, 2013 39


Soal Latihan
1. Gambarkan rangkaian antarmuka mikrokontroler dengan 4 digit seven-segment display.
Tuliskan semua komponen yang digunakan.
2. Tuliskan program untuk menampilkan ATmega.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 40


MODUL 5
ANTARMUKA MIKROKONTROLER DENGAN KEYPAD
MATRIKS

Pertemuan ke :6
Topik : 1. Cara kerja keypad matriks.
2. Cara mengantarmukakan keypad matriks dengan mikrokontroler.
3. Algoritma pembacaan keypad matriks.
4. Program mikrokontroler untuk membaca input dari keypad
matriks.
Alokasi Waktu : 2 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan cara kerja keypad matriks.
2. Mahasiswa mampu menjelaskan cara mengantarmukakan
keypad matriks dengan mikrokontroler.
3. Mahasiswa mampu menjelaskan algoritma pembacaan keypad
matriks.
4. Mahasiswa program mikrokontroler untuk membaca input dari
keypad matriks.

Pendahuluan
Dalam bab ini akan dijelaskan tentang karakteristik keypad matriks, cara kerjanya,
cara mengantarmukakan keypad matriks dengan mikrokontroler, algoritma pembacaan
keypad matriks, serta program mikrokontroler untuk membaca input dari keypad matriks.

A. Prinsip Kerja Keypad Matriks


Keypad merupakan tombol push button yang disusun sebagai baris dan kolom
sehingga membentuk matriks. Keypad banyak digunakan sebagai piranti input dalam piranti
elektronik. Gambar 5.1 memperlihatkan bentuk fisik keypad. Keypad ini memiliki 16 tombol
yaitu 0,1,2,3,4,5,6,7,8,9,A,B,C, D,* dan #.

Dyah Lestari, 2013 41


Gambar 5.1 Keypad 4x4

Keypad merupakan kumpulan beberapa switch yang disusun dalam bentuk baris
dan kolom. Konfigurasi dan antarmuka keypad secara umum dapat dilihat dalam Gambar
5.2. Dalam Gambar 5.2 terlihat keypad heksadesimal yang diantarmukakan ke
mikrokontroler. Prinsip kerja pembacaan keypad dapat dijelaskan sebagai berikut.
Keempat baris keypad tersebut dihubungkan dengan port output mikrokontroler dan
keempat kolomnya dihubungkan ke port input mikrokontroler. Sebuah baris diberi input
berupa logika 0, kemudian keempat kolomnya dibaca oleh mikrokontroler. Jika sebuah
tombol ditekan, maka logika kolom dimana tombol itu ditekan akan terbaca logika 0 sama
seperti logika barisnya. Kombinasi baris dan kolom yang berlogika 0 akan menentukan
tombol mana yang ditekan, seperti diilustrasikan dalam tabel. Baris keypad secara
kontinyu diberi logika 0 secara berurutan. Oleh karena keypad juga merupakan switch,
maka teknik debouncing juga harus diterapkan. Keypad digunakan untuk memberikan
input ke mikrokontroler. Sebagai contoh, keypad digunakan untuk memberikan kombinasi
PIN (Personal Identification Number) untuk transaksi keuangan.

Dyah Lestari, 2013 42


Gambar 5.2 Prinsip Kerja Keypad Matriks

Dyah Lestari, 2013 43


B. Program Untuk Membaca Keypad Matriks
Untuk mempermudah pembacaan keypad, maka proses pembacaan keypad dibuat
dalam bentuk function yang akan mengembalikan nilai sesuai dengan tombol yang ditekan.
Pertama-tama, perlu didefinisikan nama function yang dibuat beserta nilai yang
dikembalikan dalam variabel global sebagai berikut.
unsigned char keypad();
Kemudian tuliskan function yang dibuat di luar program utama sebagai berikut.
unsigned char keypad()
{
PORTB = 0b11111110; //aktifkan baris1 (memberi logika 0
//ke baris1)
delay_ms(100);
if(PINB.7==0) return (10);
if(PINB.6==0) return (3);
if(PINB.5==0) return (2);
if(PINB.4==0) return (1);
//========================
PORTB = 0b11111101; //aktifkan baris2
delay_ms(100);
if(PINB.7==0) return (11);
if(PINB.6==0) return (6);
if(PINB.5==0) return (5);
if(PINB.4==0) return (4);
//========================
PORTB = 0b11111011; //aktifkan baris3
delay_ms(100);
if(PINB.7==0) return (12);
if(PINB.6==0) return (9);
if(PINB.5==0) return (8);
if(PINB.4==0) return (7);
//========================
PORTB = 0b11110111; //aktifkan baris4
delay_ms(100);
if(PINB.7==0) return (13);
if(PINB.6==0) return (15);
if(PINB.5==0) return (0);

Dyah Lestari, 2013 44


if(PINB.4==0) return (14);
}
Di dalam function yang dibuat, keypad dihubungkan dengan PORTB dimana PORTB.0-
PORTB.3 dihubungkan ke baris dan PORTB.4-PORTB.7 dihubungkan ke kolom. Di awal
function, yang diberi logika 0 adalah baris1, kemudian dilakukan pengecekan pada semua
kolom yang terhubung ke baris 1. Jika ada kolom yang berlogika sama dengan baris 1, maka
function akan mengembalikan nilai sesuai dengan tombol yang ditekan. Jika tidak ada
tombol yang ditekan pada baris 1, maka berikutnya baris 2 diberi logika 0 dan dilakukan
pengecekan pada semua kolom yang terhubung ke baris 2. Jika ada kolom yang berlogika
sama dengan baris 2, maka function akan mengembalikan nilai sesuai dengan tombol yang
ditekan. Kemudian dilakukan hal yang sama untuk baris 3 dan 4 untuk mendeteksi kolom
yang terhubung ke baris 3 dan 4.

Rangkuman
Dalam bab ini telah dijelaskan mengenai karakteristik keypad matriks, cara
kerjanya, cara mengantarmukakan keypad matriks dengan mikrokontroler, algoritma
pembacaan keypad matriks, serta program mikrokontroler untuk membaca input dari
keypad matriks. Dalam bab selanjutnya akan dijelaskan bagaimana mengantarmukakan
mikrokontroler dengan display LCD.

Soal Latihan
1. Jelaskan prinsip kerja keypad.
2. Jelaskan algoritma pembacaan keypad oleh mikrokontroler.
3. Jelaskan teknik untuk debouncing keypad.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 45


MODUL 6
ANTARMUKA MIKROKONTROLER DENGAN DISPLAY
LCD 16x2

Pertemuan ke :7
Topik : 1. Karakteristik display LCD.
2. Cara mengantarmukakan mikrokontroler dengan display LCD.
3. Program mikrokontroler untuk mengeluarkan karakter ke display
LCD.
Alokasi Waktu : 2 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan karakteristik display LCD.
2. Mahasiswa mampu menjelaskan cara mengantarmukakan
mikrokontroler dengan display LCD.
3. Mahasiswa mampu menjelaskan program mikrokontroler untuk
mengeluarkan karakter ke dislay LCD.

Pendahuluan
Dalam bab ini akan dijelaskan tentang karakteristik display LCD, rangkaian
antarmuka display LCD dengan mikrokontroler, serta bagaimana memprogram
mikrokontroler supaya display LCD bisa mengeluarkan karakter yang diinginkan.

A. LCD (Liquid Crystal Display)


Sebuah LCD adalah piranti output yang menampilkan informasi dalam bentuk teks.
Ada bermacam-macam LCD, ada yang hanya bisa menampilkan karakter, ada yang bisa
menampilkan grafik. Ada yang hanya bisa menampilkan 1 baris, ada yang lebih dari satu
baris. LCD yang paling banyak digunakan adalah LCD dengan format 16 x 2, artinya LCd
tersebut dapat menampilkan 2 baris, masing-masing baris dapat menampilkan 16 karakter.
Setiap karakter dikirim dalam satu saat ke LCD dengan format ASCII (American Standard
Code for International Interchange). Sebuah mikrokontroler yang diletakkan di panel
belakang LCD menerjemahkan data karakter ASCII tersebut dan mengirim sinyal kontrol

Dyah Lestari, 2013 46


untuk menampilkan karakter ke LCD. LCD dapat dikonfigurasi untuk mengirim data
dalam format paralel atau serial.
Modul LCD M1632 seperti dalam Gambar 6.1 merupakan modul LCD dengan
tampilan 16 x 2 baris dengan konsumsi daya yang rendah. Modul ini dilengkapi dengan
mikrokontroler yang didisain khusus untuk mengendalikan LCD. Mikrokontroler HD44780
buatan Hitachi yang berfungsi sebagai pengendali LCD ini mempunyai CGROM (Character
Generator Read Only Memory), CGRAM (Character Generator Random Access Memory),
dan DDRAM (Display Data Random Access Memory).

Gambar 6.1 Modul LCD M1632

LCD ini memiliki 16 kaki, sebagaimana ditunjukkan dalam Tabel 6.1.

Tabel 6.1 Konfigurasi Pin LCD M1632


No Kaki Deskripsi
1 Vss 0V (GND)
2 Vcc +5V
3 VLC LCD Contrast Voltage
4 RS Register Select; H: Data Input; L: Instruction Input
5 RD H:Read; L: Write
6 EN Enable Signal
7 D0 Data Bus 0
8 D1 Data Bus 1
9 D2 Data Bus 2
10 D3 Data Bus 3
11 D4 Data Bus 4
12 D5 Data Bus 5
13 D6 Data Bus 6
14 D7 Data Bus 7
15 V+BL Positive Backlight Voltage
16 V-BL Negative Backlight Voltage

1. DDRAM (Display Data Random Access Memory)


DDRAM adalah merupakan memori tempat karakter yang ditampilkan berada.
Contoh, untuk karakter A atau 41H yang ditulis pada alamat 00, maka karakter tersebut
akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut

Dyah Lestari, 2013 47


ditulis di alamat 40, maka karakter tersebut akan tampil pada baris kedua kolom pertama
dari LCD. Posisi ini ditunjukkan dalam Gambar 6.2.

Gambar 6.2 Posisi DDRAM

2. CGRAM (Character Generator Random Access Memory)


CGRAM adalah merupakan memori untuk menggambarkan pola sebuah karakter di
mana bentuk dari karakter dapat diubah-ubah sesuai keinginan. Namun memori ini akan
hilang saat power supply tidak aktif, sehingga pola karakter akan hilang.

3. CGROM (Character Generator Read Only Memory)

Gambar 6.3 Pola Karakter dalam CGROM

Dyah Lestari, 2013 48


CGROM adalah merupakan memori untuk menggambarkan pola sebuah karakter di
mana pola tersebut sudah ditentukan secara permanen dari HD44780 sehingga pengguna
tidak dapat mengubah lagi. Namun karena ROM bersifat permanen, maka pola karakter
tersebut tidak akan hilang walaupun power supply tidak aktif. Pada Gambar 6.3, tampak
terlihat pola-pola karakter yang tersimpan dalam lokasi-lokasi tertentu dalam CGROM. Pada
saat HD44780 akan menampilkan data 41H ke DDRAM, maka HD44780 akan mengambil
data di alamat 41H (0100 0001) yang ada pada CGROM yaitu pola karakter A.

B. Rangkaian Antarmuka Mikrokontroler dengan LCD16x2


Dalam Gambar 6.4 modul LCD dihubungkan ke PORTB mikrokontroler dimana
kaki RS, RD, EN terhubung ke PORTB.0-PORTB.2 dan D4, D5, D6, D7 terhubung ke
PORTB.4-PORTB.7. Dalam rangkaian ini digunakan mode pengiriman data paralel 4-bit.

Gambar 6.4 Rangkaian LCD

C. Instruksi yang Digunakan untuk Menampilkan Karakter


Ada beberapa instruksi yang bisa digunakan untuk menampilkan karakter ke LCD,
yaitu:
lcd_init(a); //inisialisasi LCD
lcd_gotoxy(x,y); //menempatkan kursor di baris y
//kolom x

Dyah Lestari, 2013 49


lcd_putchar(char); //menampilkan 1 karakter
lcd_clear(); //membersihkan layar LCD
lcd_putsf(string); //menampilkan string yang sudah
//tersimpan di memori flash
lcd_puts(string); //menampilkan string untuk data yang
//ada ketika program sedang berjalan

Contoh penggunaan instruksi:


1. Menampilkan 1 karakter
lcd_gotoxy(0,0); //menempatkan kursor di kolom 0 baris 0
lcd_putchar(0x41); //menampilkan string A
2. Menampilkan string
lcd_gotoxy(0,1); //menempatkan kursor di kolom 0 baris 1
lcd_putsf("Antarmuka LCD"); //menampilkan string
//Antarmuka LCD
3. Menampilkan angka dalam bentuk karakter
char temp[8]; //deklarasi variabel tempat karakter
//suhu
lcd_putsf("TEMP: ");
ftoa(value,1,temp); //float to array, mengubah data suhu
//(float) ke karakter (array)
lcd_gotoxy(6,0);
lcd_puts(temp); //menampilkan data suhu
lcd_gotoxy(11,0);
lcd_putchar(0xdf); //menampilkan karakter derajat
lcd_putsf("C");

Rangkuman
Dalam bab ini telah dijelaskan karakteristik display LCD, rangkaian antarmuka
display LCD dengan mikrokontroler, serta bagaimana memprogram mikrokontroler supaya
display LCD bisa mengeluarkan karakter yang diinginkan. Dalam bab selanjutnya akan
dijelaskan bagaimana menggunakan fitur interrupt dalam mikrokontroler AVR.

Dyah Lestari, 2013 50


Soal Latihan
1. Gambarkan rangkaian antarmuka mikrokontroler dengan display LCD 16x2. Tuliskan
semua komponen yang digunakan.
2. Tuliskan program untuk menampilkan ATmega.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Anonim. 2002. M1632 Liquid Crystal Display Module Users Manual. Seiko Instruments.

Dyah Lestari, 2013 51


MODUL 7
MENGGUNAKAN FITUR INTERRUPT EKSTERNAL
DALAM MIKROKONTROLER AVR

Pertemuan ke :8
Topik : 1. Pengenalan interrupt.
2. Respons interrupt dalam mikrokontroler.
3. Cara mengonfigurasi interrupt eksternal.
4. Program interrupt eksternal dalam mikrokontroler AVR.
Alokasi Waktu : 2 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan mengapa mikroprosesor
memerlukan interrupt.
2. Mahasiswa mampu mendeskripsikan prosedur respons interrupt
dalam mikrokontroler.
3. Mahasiswa mampu menjelaskan cara mengonfigurasi interrupt
eksternal.
4. Mahasiswa mampu memrogram interrupt eksternal dalam
mikrokontroler AVR.

Pendahuluan
Dalam bab ini akan dijelaskan tentang mengapa mikroprosesor memerlukan
interrupt, prosedur respons interrupt dalam mikrokontroler, bagaimana cara mengonfigurasi
interrupt eksternal, dan bagaimana memrogram interrupt eksternal dalam mikrokontroler
AVR.

A. Teori Interrupt
Mikrokontroler secara normal mengeksekusi instruksi dalam urutan fetch-decode-
execute seperti dituliskan oleh program yang ditulis oleh pengguna seperti dapat dilihat
dalam Gambar 7.1. Akan tetapi, mikrokontroler harus bisa menangani kejadian yang
mempunyai prioritas lebih tinggi yang mungkin terjadi di dalam atau di luar mikrokontroler.

Dyah Lestari, 2013 52


Untuk memroses kejadian tersebut, mikrokontroler memerlukan sistem interrupt. Sistem
interrupt dalam mikrokontroler mengijinkan program untuk merespon kejadian yang
mempunyai prioritas lebih tinggi. Kejadian tersebut direncanakan, akan tetapi kita tidak
pernah tahu kapan kejadian tersebut akan terjadi. Ketika interrupt terjadi, maka
mikrokontroler secara normal akan menyelesaikan instruksi pada saat itu, dan kemudian
mengerjakan tugas tertentu sesuai dengan interrupt yang terjadi. Tugas yang dikerjakan
ketika terjadi interrupt ini disebut interrupt service routine (ISR). Setiap interrupt
mempunyai masing-masing ISR. Setelah ISR selesai, maka mikrokontroler akan
meneruskan proses dimana tadi ditinggal sebelum interrupt terjadi.

Gambar 7.1 Respon interrupt dalam mikrokontroler

B. Sistem Interrupt Mikrokontroler ATmega8535


Mikrokontroler ATmega8535 mempunyai 21 sumber interrupt. Tiga dari interrupt
tersebut merupakan sumber interrupt eksternal, sedangkan 18 interrupt yang lainnya
mendukung operasi periferal yang ada dalam mikrokontroler. Sumber interrupt
mikrokontroler ATmega8535 dapat dilihat dalam Tabel 7.1. Interrupt disusun menurut
prioritasnya mulai dari prioritas tertinggi. Dalam Tabel 7.1 terlihat bahwa RESET
mempunyai prioritas tertinggi, diikuti oleh interrupt eksternal INT0, INT1 dan INT2.
Sumber interrupt sisanya adalah sumber interrupt internal.

Dyah Lestari, 2013 53


Ketika interrupt terjadi, mikrokontroler menyelesaikan instruksi yang sedang
dikerjakan, menyimpan alamat berikutnya di stack, kemudian mulai mengeksekusi
instruksi dalam ISR sesuai dengan sumber interrupt. Hal ini juga menonaktifkan interrupt
untuk mencegah interrupt lain terjadi ketika sebuah interrupt sedang dilaksanakan.
Eksekusi ISR dilakukan dengan mengisi alamat awal ISR ke dalam program counter yang
sesuai dengan interrupt-nya. ISR akan dilaksanakan sampai bertemu dengan instruksi
RETI. Program control kemudian mengembalikan ke program utama.

Tabel 7.1 Interrupt dalam mikrokontroler ATmega8535

PORT yang berfungsi sebagai interrupt eksternal adalah:


PORTD.2 (PD2), pin no 16 External Interrupt 0 Input (INT0)
PORTD.3 (PD3), pin no 17 External Interrupt 1 Input (INT1)
PORTB.2 (PB2), pin no 3 External Interrupt 2 Input (INT2)

Dyah Lestari, 2013 54


C. Register- register yang Digunakan dalam Interrupt
1. MCU Control Register-MCUCR

Bit 3,2 ISC11, ISC10: Interrupt Sense Control 1 Bit 1 dan Bit 0

Bit 1,0 ISC01, ISC00: Interrupt Sense Control 0 Bit 1 dan Bit 0

2. MCU Control and Status Register-MCUCSR

ISC2 = 0, a falling edge on INT2 activates the interrupt


ISC2 = 1, a rising edge on INT2 activates the interrupt
Lebar pulsa minimum: 50 ns

3. Status Register-SREG

Bit 7 I: Global Interrupt Enable

Dyah Lestari, 2013 55


4. General Interrupt Control Register-GICR

Bit 7 - INT1:eksternal interrupt request 1 enable


Bit 6 INT0 :eksternal interrupt request 0 enable
Bit 5 INT2 : eksternal interrupt request 2 enable

5. General Interrupt Flag Register-GIFR

Bit 7 - INT1:eksternal interrupt flag 1 enable


Bit 6 INT0 :eksternal interrupt flag 0 enable
Bit 5 INT2 : eksternal interrupt flag 2 enable

D. Memprogram Interrupt
Untuk memprogram interrupt, pengguna harus melakukan hal-hal berikut:
Meyakinkan bahwa ISR untuk interrupt dialamatkan pada interrupt vector address
yang benar, dimana menunjukkan awal alamat ISR.
Meyakinkan bahwa sistem interrupt sudah secara global diaktifkan. Hal ini
dilakukan dengan memberikan instruksi bahasa assembly SEI.
Meyakinkan bahwa subsistem interrupt secara lokal sudah diaktifkan.
Meyakinkan bahwa register yang berkaitan dengan interrupt tertentu sudah
dikonfigurasi dengan benar.

Rangkuman
Dalam bab ini telah dijelaskan mengenai mengapa mikroprosesor memerlukan
interrupt, prosedur respons interrupt dalam mikrokontroler, bagaimana cara mengonfigurasi
interrupt eksternal, dan bagaimana memrogram interrupt eksternal dalam mikrokontroler
AVR. Dalam bab selanjutnya akan dijelaskan bagaimana menggunakan fitur ADC dalam
mikrokontroler.

Dyah Lestari, 2013 56


Soal Latihan
1. Apa tujuan interrupt?
2. Deskripsikan alur kejadian ketika terjadi interrupt.
3. Deskripsikan fitur interrupt yang ada di mikrokontroler ATmega8535.
4. Apakah yang disebut priorotas interrupt? Bagaimana prioritas itu ditentukan?
5. Langkah-langkah apa yang diperlukan oleh pengguna untuk mengkonfigurasi sebuah
interrupt?
6. Bagaimana interrupt diaktifkan dan dinonaktifkan?

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 57


MODUL 8
MENGGUNAKAN FITUR ADC DALAM
MIKROKONTROLER AVR

Pertemuan ke : 9-10
Topik : 1. Perbedaan antara sinyal analog dan digital.
2. Ilustrasi proses ADC.
3. Menilai kualitas ADC menggunakan ukuran sampling rate, level
kuantisasi, jumlah bit yang digunakan untuk enkoding, dan
dynamic range.
4. Register yang digunakan untuk konfigurasi ADC.
5. Langkah-langkah menggunakan ADC dalam mikrokontroler
AVR.
6. Program mikrokontroler untuk fungsi ADC.
Alokasi Waktu : 4 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan perbedaan antara sinyal analog
dan digital.
2. Mahasiswa mampu mengilustrasikan proses ADC.
3. Mahasiswa mampu menilai kualitas ADC menggunakan ukuran
sampling rate, level kuantisasi, jumlah bit yang digunakan untuk
enkoding, dan dynamic range
4. Mahasiswa mampu menjelaskan register yang digunakan untuk
konfigurasi ADC.
5. Mahasiswa mampu mendeskripsikan langkah-langkah
menggunakan ADC dalam mikrokontroler AVR.
6. Mahasiswa mampu memrogram mikrokontroler untuk fungsi
ADC.

Dyah Lestari, 2013 58


Pendahuluan
Dalam bab ini akan dijelaskan tentang perbedaan antara sinyal analog dan digital,
proses ADC, menilai kualitas ADC menggunakan ukuran sampling rate, level kuantisasi,
jumlah bit yang digunakan untuk enkoding, dan dynamic range, register yang digunakan
untuk konfigurasi ADC, langkah-langkah menggunakan ADC dalam mikrokontroler AVR,
memrogram mikrokontroler untuk fungsi ADC.

Mikrokontroler digunakan untuk memroses informasi dari dunia luar, membuat


keputusan berdasarkan informasi yang dikumpulkan, kemudian mengeluarkan sinyal
kontrol untuk melaksanakan keputusan tersebut. Karena infromasi dari dunia luar pada
umumnya berbentuk analog atau kontinyu, sedangkan mikrokontroler adalah pemroses
berbasis digital atau diskrit, diperlukan metode untuk mengonversi sebuah sinyal analog
menjadi sinyal digital. Sebuah sistem ADC (Analog to Digital Converter) melakukan hal
ini, sedangkan DAC (Digital to Analog Converter) melakukan hal yang sebaliknya.

A. Teori Konversi Analog ke Digital


1. Sinyal Analog Versus Sinyal Digital
Sebuah sinyal merupakan kumpulan nilai yang merepresentasikan kondisi variabel
fisik. Kumpulan nilai tersebut dapat berupa satu nilai saja, sedikit, atau banyak tergantung
data yang dibutuhkan. Dalam bidang teknik, biasanya kita menyusun nilai-nilai tersebut
secara urut, misalnya sebagai fungsi waktu atau ruang untuk menampilkan informasi.
Variabel waktu atau ruang disebut variabel bebas, karena tidak terpengaruh oleh variabel
fisik. Sebagai contoh, suhu yang berubah setiap waktu. Suhu yang terukur tidak
bergantung pada waktu, ataupun sebaliknya. Sinyal digital juga penting karena semua
sinyal yang digunakan dalam sistem digital, komputer, dan mikrokontroler adalah dalam
bentuk digital. Yang paling penting adalah bagaimana merepresentasikan sinyal analog
menggunakan sinyal digital. Sebagai contoh, suara manusia harus dikonversi menjadi
sinyal digital yang sesuai sebelum diteruskan ke rangkaian switching digital dalam sistem
komunikasi telepon. Dengan cara yang sama, komando suara ke robot harus dikonversi ke
bentuk digital supaya robot dapat memahami komando tersebut. Hal ini menunjukkan
bahwa ADC sangat penting dalam sistem digital yang berinteraksi dengan dunia analog.

Dyah Lestari, 2013 59


2. Sampling, Quantization, dan Encoding
Dalam bagian ini akan dijelaskan tiga proses penting yang berhubungan dengan
ADC. Proses yang pertama adalah sampling. Bayangkan kita sebagai fotografer di stadion
Olimpiade. Tugas kita adalah mengurutkan gambar-gambar untuk mengonstruksi gerakan
setiap penyelam. Urutan gambar-gambar tersebut menyusun gerakan penyelam tersebut.
Jika seorang penyelam melakukan gerakan yang komplek dan kita ingin mengonstruksi
gerakan tersebut, maka kita harus mengambil sejumlah gambar yang cukup mulai dari
awal menyelam sampai akhir menyelam. Jika penyelam tersebut melakukan gerakan yang
umum, maka kita hanya perlu mengambil beberapa gambar selama periode menyelamnya.
Dua gerakan berbeda tersebut dapat dilihat dalam Gambar 8.1. Jeda waktu yang sama
digunakan untuk menangkap kedua gerakan tersebut. Seperti yang terlihat dalam Gambar
8.1, dalam frame (a) gerakan tidak dapat direkonstruksi dari sampel yang ada, sedangkan
gerakan dalam frame (b) dapat dengan jelas direkonstruksi dari jumlah sampel yang sama
untuk menangkap kedua gerakan tersebut.

Gambar 8.1 Dua penyelam melompat dari platform: (a) gerakan cepat dan (b) gerakan
lambat.

Sampling adalah proses menangkap snapshot sebuah sinyal pada satu waktu. Secara
alami, ketika kita menyampel sebuah sinyal, kita ingin menyampel secara maksimal
supaya kita dapat menangkap sinyal tersebut. Dengan kata lain, kita ingin meminimalisir

Dyah Lestari, 2013 60


jumlah sampel yang digunakan untuk merekonstruksi sinyal aslinya. Kesimpulannya,
kecepatan perubahan sinyal akan menentukan jumlah sampel yang dibutuhkan untuk
merekonstruksi sinyal tersebut. Sampling sangat penting karena ketika kita akan
merepresentasikan sinyal analog ke sinyal digital, seperti komputer, kita harus
menggunakan kecepatan sampling yang sesuai untuk menangkap sinyal analog yang
sesungguhnya supaya bisa direpresentasikan dalam sistem digital.

Gambar 8.2 Kuantisasi

Proses yang kedua adalah kuantisasi (quantization). Setiap sistem digital


mempunyai sejumlah bit, yang digunakan untuk merepresentasikan data. Bit adalah satuan
dasar ketika menggunakan informasi dalam bentuk biner, 1 atau 0. Nibble disusun dari 4
bit biner, sedangkan byte disusun dari 8 bit biner. Ketika sebuah sinyal disampel, sistem
digital diperlukan untuk merepresentasikan sampel yang diambil. Kuantisasi sebuah sinyal
sampel adalah bagaimana sinyal tersebut merepresentasikan satu level kuantisasi. Misalnya
kita punya satu bit saja untuk merepresentasikan sebuah sinyal, maka kita hanya punya 2
macam angka, yaitu 0 dan 1. Jika kita mempunyai 2 bit representasi sinyal, maka kita dapat
merepresentasikan sinyal menjadi empat level yang berbeda, yaitu 00, 01, 10, dan 11. Jika

Dyah Lestari, 2013 61


kita mempunyai 3 bit representasi sinyal, maka kita dapat merepresentasikan sinyal
menjadi delapan level yang berbeda, yaitu 000, 001, 010, 011, 100, 101, 110, dan 111.
Dapat disimpulkan bahwa dengan mempunyai n bit, maka kita mempunyai 2n level yang
berbeda. Gambar 8.2 menunjukkan bahwa n bit dapat menguantisasi berbagai range nilai.
Dalam sistem digital, sinyal yang masuk adalah tegangan yang diperoleh dari sinyal fisik
dengan bantuan transduser, seperti mikrofon, sensor sudut, dan sensor infrared. Tegangan
tersebut kemudian dikondisikan untuk dipetakan ke dalam sistem digital, yaitu mulai 0 V
5 V. Dalam Gambar 8.2, n bit dapat membuat kita membagi sinyal input menjadi sistem
digital menjadi 2n level kuantisasi yang berbeda. Seperti yang terlihat dalam Gambar 8.2,
semakin tinggi level kuantisasi, semakin bagus pemetaan sinyal input sehingga bisa
mendekati nilai sebenarnya.

Gambar 8.3 Kuantisasi dengan sedikit bit

Yang terakhir adalah proses encoding yang mengonversi sinyal terkuantisasi menjadi
bilangan biner. Misalkan kita menggunakan 8 bit untuk kuantisasi sinyal analog. Level
kuantisasi ditentukan oleh 8 bit tersebut, sehingga setiap sampel sinyal dikuantisasi sebagai

Dyah Lestari, 2013 62


salah satu dari 256 level. Lihatlah contoh dalam Gambar 8.3. Sampel pertama dipetakan
menjadi kuantisasi level 2 dan sinyal kedua dikuantisasi menjadi level 198. Dalam Gambar
8.3 ditunjukkan masing-masing sampel tersebut mempunyai error tertentu.Dengan
membandingkan Gambar 8.3 dan 8.4, dapat dilihat bahwa, error kuantisasi berbanding
terbalik dengan jumlah bit yang digunakan untuk menguantisasi sinyal. Ketika sebuah
sinyal dikuantisasi, proses encoding mencakup merepresentasikan level kuantisasi dengan
bit yang ada. Sehingga, untuk sampel pertama, nilai sampel terkode yaitu 00000001,
sedangkan nilai sampel terkode untuk sampel kedua adalah 11000110. Sebagai hasil proses
encoding, sinyal analog sampel sekarang direpresentasikan dengan sederetan bilangan
biner.

Gambar 8.4 Enkoding

3. Resolusi dan Data Rate


Resolusi adalah ukuran yang digunakan untuk menguantisasi sinyal analog.
Misalnya kita mempunyai range 5 V dan 1 bit untuk merepresentasikan sinyal analog.
Resolusi dalam kasus ini adalah 2.5 V, sebuah resolusi yang buruk. Error maksimum, atau
yang disebut error resolusinya adalah 2,5 V, yaitu 50% dari total range sinyal input.

Dyah Lestari, 2013 63


Misalkan kita punya 4 bit untuk merepresentasikan level kuantisasi, maka resolusinya
sekarang menjadi 1,25 V atau 25% dari range input. Misalkan kita punya 20 bit untuk level
kuantisasinya, maka resolusinya sekarang menjadi 4,77 106, atau 9,54 105% dari
range total. Contoh di atas menunjukkan bahwa jika kita meningkatkan jumlah level
kuantisasinya, maka jarak antara level yang berdekatan berkurang, mengurangi error
kuantisasi dari sinyal sampel, sehingga representasi sinyal analog tersampel semakin
akurat.
Sekarang kita diskusikan tentang data rate. Definisi data rate adalah jumlah data
yang dibangkitkan oleh sistem per satuan waktu. Secara umum, jumlah bit atau byte per
detik digunakan sebagai satuan data rate. Dapat dilihat bahwa semakin banyak bit yang
digunakan dalam level kuantisasi, maka semakin akurat sinyal analog dapat
direpresentasikan.

B. Proses Konversi Analog ke Digital


Tujuan proses ADC adalah untuk merepresentasikan sinyal analog ke sinyal digital
dengan akurat. Langkah pertama proses ADC adalah menyampel sinyal analog. Setelah
sinyal analog telah disampel, maka terjadilah proses kuantisasi. Jika level kuantisasi sudah
ditentukan, maka kita dapat mengkodekan menggunakan bit yang sudah dipilih.

C. Teknologi Konversi ADC


ATmega8535 menggunakan teknik successive approximation converter untuk
mengonversi sampel menjadi representasi digital 10-bit. Teknologi untuk mengonversi
terbagi menjadi dua yaitu konversi langsung dan konversi tidak langsung. Successive
approximation conversion, counter-based conversion, dan parallel conversion
menggunakan teknik mengonversi sinyal input analog menjadi digital secara langsung.
Metode integrasi menggunakan waktu konversi artinya secara tidak langsung mengukur
besarnya sinyal analog. Gambar 8.5 menunjukkan berbagai macam metode konversi
tersebut.

1. Successive Approximation
Teknik successive approximation menggunakan DAC, kontroler, dan komparator
untuk melakukan proses ADC. Mulai dari MSB ke LSB, kontroler mengubah setiap bit

Dyah Lestari, 2013 64


pada satu waktu dan membangkitkan sinyal analog, dengan bantuan DAC, dibandingkan
dengan sinyal analog input yang asli. Berdasarkan hasil pembandingan, kontroler
mengubah atau membiarkan bit tersebut dan berpindah ke bit MSB berikutnya. Proses
tersebut berlanjut sampai keputusan untuk setiap bit diambil. Metode successive
approximation bekerja dengan cara MSB digunakan untuk membagi range input ADC
menjadi setengahnya, MSB kedua membagi menjadi 2/4, dan seterusnya. Gambar 8.5
(a) menunjukkan arsitektur konverter tipe successive approximation. Kelebihan teknik ini
adalah waktu konversi sama untuk semua input, tetapi kekurangannya adalah, teknologi ini
memerlukan perangkat keras yang kompleks dalam implementasinya.

Gambar 8.5 Empat teknologi yang digunakan untuk mengonversi sinyal analog ke sinyal
digital: (a) successive approximation converter, (b) integration-based converter, (c) counter-
based converter, and (d) parallel

Dyah Lestari, 2013 65


2. Integration
Teknik integrasi menggunakan integrator, komparator, dan kontroler untuk
mengonversi sinyal analog menjadi sinyal digital. Sampel sinyal analog diintegrasi selama
periode yang tetap, misalnya n siklus clock sistem digital. Sinyal referensi yang tetap
lainnya diintegrasi setiap waktu dan dibandingkan dengan sinyal input analog yang sudah
diintegrasi. Meskipun nilai sinyal referensi lebih kecil dari sinyal analog input, sinyal
referensi secara kontinyu diintegrasi, dan waktu intuk mengintegrasi diukur. Ketika kedua
nilai terintegrasi sama, waktu yang terukur dikonversi menjadi nilai digital. Gambar 8.5 (b)
menunjukkan komponen sistem konverter jenis ini. Kekurangan teknik ini adalah waktu
untuk proses konversi yang bervariasi. Nilai analog yang kecil akan memerlukan waktu
yang lebih sedikit dibandingkan dengan nilai yang besar.

3. Counter-Based Conversion
Teknik ketiga adalah mengonversi sinyal analog menjadi snyal digital berbasis
pada counter-based conversion. Konversi jenis ini dilakukan dengan bantuan counter,
DAC, dan komparator. Counter mulai dari 0 dan menghitung naik. Ketika counter
menghitung naik, nilai yang sesuai dikonversi menjadi nilai analog dan dibandingkan
dengan sinyal analog input. Selama sinyal analog input lebih besar daripada sinyal yang
dibangkitkan oleh DAC, counter terus menghitung dan proses terus berjalan. Ketika
komparator mendeteksi bahwa sinyal dari DAC lebih besar daripada sinyal analog input,
nilai counter akan dikonversi menjadi nilai digital yang merepresentasikan sampel sinyal
analog. Gambar 8.5 (c) menunjukkan arsitektur keseluruhan dari konverter jenis ini. Mirip
dengan konverter yang berbasis prinsip integrasi, kekurangan konverter jenis ini adala
waktu konversi yang bervariasi.

4. Parallel Conversion
Teknik terakhir yang mempunyai waktu konversi paling cepat dibandingkan
dengan teknik yang lain adalah parallel conversion. Konverter paralel menggunakan
sejumlah komparator dan rangkaian untuk secara simultan mengukur sinyal input dan
mengonversinya menjadi nilai digital. Kekurangan teknik ini adalah biaya yang digunakan
untuk membangun rangkaiannya. Gambar 8.5 (d) memperlihatkan arsitektur konverter
jenis ini.

Dyah Lestari, 2013 66


D. Sistem ADC ATmega8535
Mikrokontroler ATmega8535 dilengkapi dengan sistem ADC yang mempunyai
fitur sebagai berikut:
resolusi 10-bit
ketelitian absolut 2 LSB
waktu konversi 13 ADC siklus clock
8 multiplexed single-ended input channels,
pilihan right or left result justification
ADC input voltage range 0 to Vcc.
Resolusi didefinisikan sebagai:
resolution = (VRH VRL)/2b.
Dimana: VRH dan VRL adalah tegangan referensi ADC high dan low
b adalah jumlah bit yang digunakan untuk konversi
Untuk ATmega8535, tegangan referensi adalah 5 VDC, 0 VDC, serta tersedia pilihan
konversi 10 bit dan 8 bit, sehingga resolusi tertinggi adalah 4.88 mV.
Ketelitian absolut dispesifikasikan 2 LSB, artinya 9.76 mV pada resolusi 10 bit.
ADC ini memerlukan 13 sikus clock untuk mengonversi sinyal analog ke sinyal digital.
Akan tetapi sistem ADC dapat menggunakan frekuensi clock yang lebih rendah daripada
sumber clock mikrokontroler. Sumber clock mikrokontroler dibagi oleh bit ADC Prescaler
Select (ADPS[2:0]) dalam ADC Control and Status Register A (ADCSRA).
ADC dilengkapi dengan single successive approximation converter. Hanya satu kanal
ADC dapat dikonversi dalam satu waktu. Input ADC dilengkapi dengan multilekser 8
input analog. Input analog yang dikonversi dipilih melalui bit MUX[4:0] dalam ADC
Multiplexer Selection Register (ADMUX).
Hasil proses konversi 8-bit atau 10 bit diletakkan di ADC Data Registers, ADCH
dan ADCL. Kedua register ini menyediakan 16 bits untuk hasil 10 bit. Hasil konversi bisa
ditata rata kiri dengan mengeset bit ADLAR (ADC Left Adjust Result) dalam register
ADMUX. Rata kanan dapat diperoleh dengan membuat bit ini berlogika 0.
Tegangan input analog harus berada diantara 0 dan Vcc V. Jika tidak, maka harus
ditambahkan rangkaian di luarnya supaya tegangan input analog berada dala range
tersebut.

Dyah Lestari, 2013 67


1. Block Diagram
Diagram blok ADC dalam mikrokontroler ATmega8535 dapat dilihat dalam
Gambar 8.6. Bagian sisi kiri diagram memperlihatkan hubungan eksternal ke pin
mikrokontroler untuk mengakses ADC. Delapan kanal input analog terletak di ADC[7:0],
dan tegangan referensi ADC terletak di AREF dan AVCC.

Gambar 8.6 Blok diagram ADC

2. Register
Ada beberapa langkah yang harus dilakukan untuk inisialisasi ADC, yaitu penentuan
clock, tegangan referensi, format data output dan mode pembacaan. Inisialisasi ini dilakukan
pada register-register berikut:

Dyah Lestari, 2013 68


ADMUX (ADC Multiplexer Selection Register)
ADMUX merupakan register yang mengatur tegangan referensi yang digunakan
ADC, format data output dan saluran ADC.

REFS0-1 (Reference Selection Bits)


REFS0-1 adalah bit-bit pengatur mode tegangan referensi ADC.

ADLAR (ADC Left Adjust Result)


ADLAR adalah bit keluaran ADC. Jika ADC telah selesai konversi, maka data ADC
akan diletakkan di 2 register, yaitu ADCH dan ADCL dengan format sesuai ADLAR.
Format data ADC jika ADLAR=0

Format data ADC jika ADLAR=1

Dyah Lestari, 2013 69


MUX0-4 (Analog Channel and Gain Selection Bits)
MUX0-4 adalah bit-bit pemilih saluran pembacaan ADC.

ADCSRA (ADC Control and Status Register A)


ADCSRA adalah register 8 bit yang berfungsi untuk melakukan manajemen sinyal
kontrol dan status ADC.

ADEN (ADC Enable)


ADEN merupakan bit pengatur aktivasi ADC. Jika bernilai 1 maka ADC akan aktif.

Dyah Lestari, 2013 70


ADCS (ADC Start Conversion)
ADCS merupakan bit penanda dimulainya konversi ADC. Selama konversi
berlogika 1 dan akan berlogika 0 jika selesai konversi.
ADATE (ADC Auto Trigger Enable)
ADATE merupakan bit pengatur aktivasi picu otomatis. Jika bernilai 1 maka
konversi ADC akan dimulai pada saat tepi positif pada sinyal trigger yang digunakan.
ADIF (ADC Interrupt Flag)
ADIF merupakan bit penanda akhir konversi ADC. Jika bernilai 1 konversi ADC
pada suatu saluran telah selesai dan siap diakses.
ADIE (ADC Interrupt Enable)
ADIE merupakan bit pengatur aktivasi interupsi. Jika bernilai 1 maka interupsi
penandaan telah selesai. Konversi ADC diaktifkan.
ADPS0-2 (ADC Prescaler Select Bit)
ADPS0-2 merupakan bit pengatur clock ADC.

SFIOR (Special Function IO Register)


SFIOR adalah register 8 bit yang mengatur sumber pemicu ADC. Jika bit ADATE
pada register ADCSRA bernilai 0 maka ADTS0-2 tidak berfungsi.

Dyah Lestari, 2013 71


3. Programming the ADC
Di bawah ini dijelaskan dua fungsi untuk mengoperasikan ADC.
initADC()
Yaitu menginisialisasi ADC dengan menentukan clock, tegangan referensi, format
data output dan mode pembacaan. Contoh inisialisasi ADC pada CodeVision:
// ADC initialization
// ADC Clock frequency: 31.250 kHz
// ADC Voltage Reference: AVCC pin
// ADC High Speed Mode: Off
// ADC Auto Trigger Source: Free Running
// Only the 8 most significant bits of
// the AD conversion result are used
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0xA7;
SFIOR&=0x0F;
readADC(unsigned char)
Yaitu membaca tegangan analog dari kanal ADC dan dikonversi menjadi sinyal
digital. Contoh readADC pada CodeVision:
unsigned char read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input
// voltage
delay_us(10);
// Start the AD conversion

Dyah Lestari, 2013 72


ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCH;
}

Rangkuman
Dalam bab ini telah dijelaskan tentang perbedaan antara sinyal analog dan digital,
proses ADC, menilai kualitas ADC menggunakan ukuran sampling rate, level kuantisasi,
jumlah bit yang digunakan untuk enkoding, dan dynamic range, register yang digunakan
untuk konfigurasi ADC, langkah-langkah menggunakan ADC dalam mikrokontroler AVR,
memrogram mikrokontroler untuk fungsi ADC. Dalam bab selanjutnya akan dijelaskan
bagaimana menggunakan fitur Timer/Counter dalam mikrokontroler AVR.

Soal Latihan
1. Jika sebuah sinusoida dengan frekuensi 500 HZ, berapa frekuensi sampling minimum
untuk ADC supaya dapat merekonstruksi sinyal analog setelah dikonversi?
2. Jika 12 bit digunakan untuk menguantisasi sinyal sapel, berapa junlah level
kuantisasinya? Berapakan resolusinya jika input range ADCnya 10 V.
3. Jika range input ADC 12 V dan resolusi yang diinginkan 0.125 V, berapa jumlah bit
yang digunakan untuk konversi?
4. Jika sinyal analog dikonversi oleh ADC menjadi representasi biner dan kemudian
dikembalikan ke tegangan analog menggunakan DAC, apakah tegangan input analog
yang asli bisa sama dengan tegangan output yang dihasilkan? Jelaskan.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 73


MODUL 9
MENGGUNAKAN FITUR TIMER/COUNTER DALAM
MIKROKONTROLER AVR

Pertemuan ke : 11-13
Topik : 1. Fitur timer/counter mikrokontroler.
2. Fungsi timer/counter untuk delay time.
3. Fungsi timer/counter untuk membuat counter.
4. Fungsi timer/counter untuk membangkitkan sinyal dengan mode
CTC.
5. Fungsi timer/counter untuk membangkitkan sinyal dengan mode
PWM.
Alokasi Waktu : 6 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan fitur timer/counter
mikrokontroler.
2. Mahasiswa mampu menjelaskan fungsi timer/counter untuk
delay time.
3. Mahasiswa mampu menjelaskan fungsi timer/counter untuk
membuat counter.
4. Mahasiswa mampu menjelaskan fungsi timer/counter untuk
membangkitkan sinyal dengan mode CTC.
5. Mahasiswa mampu menjelaskan fungsi timer/counter untuk
membangkitkan sinyal dengan mode PWM.

Pendahuluan
Dalam bab ini akan dijelaskan tentang istilah yang berkaitan dengan timer, keempat
mode timer/counter, komponen mikrokontroler untuk fungsi timer, mendeskripsikan
prosedur untuk menangkap sinyal dari luar, mendeskripsikan prosedur untuk
membangkitkan sinyal, mendeskripsikan register yang digunakan untuk Timer 0, Timer 1,
dan Timer 2, serta memrogram timer dalam mikrokontroler AVR.

Dyah Lestari, 2013 74


Salah satu alasan penting menggunakan mikrokontroler dalam sistem tertanam
adalah kemampuan mikrokontroler untuk melakukan tugas-tugas berbasis waktu. Dalam
aplikasi sederhana, seseorang dapat memrogram mikrokontroler untuk menyalakan atau
mematikan piranti eksternal pada waktu tertentu yang sudah diprogram. Untuk aplikasi
lain, mikrokontroler dapat digunakan untuk membangkitkan gelombang dengan variasi
lebar pulsa untuk mengontrol kecepatan motor DC.

A. Istilah yang Berkaitan dengan Timing


1. Frekuensi
Frekuensi adalah banyaknya sinyal dalam periode 1 detik. Satuan frekuensi adalah
Hertz, atau siklus per detik. Sebagai contoh, sinyal sinusoida dengan frekuensi 60 Hz,
berarti bahwa satu periode sinyal berulang 60 kali setiap detik, atau setiap 16,67 ms.

2. Periode
Kebalikan frekuensi adalah periode. Jika sebuah kejadian terjadi setiap 1 Hz, maka
peride kejadian itu adalah 1 detik. Untuk memperoleh periode dari nilai frekuensi, atau
sebaliknya, maka digunakan persamaan:
f = 1/T
dimana f dan T melambangkan frekuensi dan periode.
Kedua istilah ini digunakan dalam hal-hal yang berkaitan dengan timing dalam sistem
tertanam.

3. Siklus Kerja (Duty Cycle)


Dalam banyak aplikasi, pulsa periodik digunakan sebagai sinyal kontrol.
Contohnya pulsa periodik yang diberikan kepada motor servo. Untuk mengontrol arah dan
kecepatan motor, digunakan pulsa periodik dengan variasi siklus kerja. Sinyal pulsa
periodik yang ditunjukkan dalam Gambar 9.1 (a) ON selama 50% dari periode sinyal dan
OFF untuk periode sisanya. Gambar 9.1 (b) ON hanya 25% dari periode yang sama dan
OFF untuk 75% dari periodenya. Siklus kerja didefinisikan sebagai persentase satu periode
sinyal ON. Oleh karena itu, sinyal dalam Gambar 9.1 (a) mempunyai siklus kerja 50% dan
Gambar 9.1 (b) mempunyai siklus kerja 25%.

Dyah Lestari, 2013 75


B. Sistem Timing
Inti dari sistem timing adalah kristal. Frekuensi kristal digunakan untuk
membangkitkan sinyal clock. Untuk sistem timer, clock sistem digunakan untuk meng-
update isi register khusus yang disebut free-running counter. Tugas free-running counter
adalah menghitung (increment) setiap kali counter melihat tepi naik (atau tepi turun) dari
sinyal clock. Oleh karena itu jika sistem clock bekerja pada kecepatan 2 MHz, free-
running counter akan menghitung setiap 0.5 s.

Gambar 9.1 Dua sinyal dengan periode yang sama tetapi beda siklus kerja: (a) sinyal
periodik dengan siklus kerja 50% dan (b) sinyal periodik dengan siklus kerja 25%

Semua bagian yang berhubungan dengan timer, merujuk pada isi free-running
counter untuk melakukan aktivitas yang terkait dengan I/O: pengukuran periode,
menangkap event timing, dan sinyal yang berhubungan dengan pembangkitan sinyal.
Untuk aktivitas yang berkaitan dengan masukan pewaktu, mikrokontroler pada umunya
mempunyai komponen perangkat keras pewaktu yang mendeteksi perubahan logika sinyal
pada satu atau lebih pin input. Komponen tersebut bergantung pada free-running counter
untuk menangkap kejadian eksternal yang dapat digunakan untuk mengukur periode sinyal
yang masuk, lebar sebuah pulsa, dan kapan logika sebuah sinyal berubah. Untuk fungsi
timer output, mikrokontroler menggunakan komparator, free-running counter, switch
logika, dan special-purpose register untuk membangkitkan sinyal yang berkaitan dengan

Dyah Lestari, 2013 76


waktu pada satu atau lebih pin output. Komparator mengecek nilai free-running counter
untuk dibandingkan dengan isi special-purpose register yang lain dimana programer
menyimpan waktu tertentu dalam nilai free-running counter. Proses pengecekan dilakukan
setiap siklus clock dan ketika nilai yang sama terjadi, sistem perangkat keras yang sesuai
akan menimbulkan perubahan logika pada pin port output. Menggunakan kemampuan
tersebut, seseorang dapat membangkitkan perubahan logika pada waktu tertentu, pulsa
dengan lebar pulsa tertentu, atau sinyal PWM untuk mengontrol motor servo atau motor
DC. Pengguna juga dapat menggunakan sistem input timer untuk mengukur lebar pulsa
sebuah sinyal periodik. Sebagai contoh, waktu untuk tepi naik dan tepi turun sebuah sinyal
adalah 1,5 detik dan 1,6 detik. Nilai ini dapat digunakan untuk secara mudah menghitung
lebar pulsa 0.1 detik.

Gambar 9.2 Diagram sistem output timer

Tujuan kedua dari sistem timer adalah untuk membangkitkan sinyal untuk
mengontrol piranti eksternal. Sekali lagi, event, berarti perubahan kondisi logika pada pin
output mikrokontroler pada saat tertentu. Lihat Gambar 9.2. Misalkan piranti eksternal
terhubung dengan mikrokontroler memerlukan sinyal pulsa untuk mengaktifkan piranti
tersebut. Misalkan lebar pulsa yang diperlukan oleh piranti itu adalah 2 ms. Dalam situasi
tersebut, kita dapat menggunakan nilai free-running counter untuk sinkronisasi perubahan
kondisi logika waktu yang diinginkan. Secara alami, dengan menggunakan kemampuan

Dyah Lestari, 2013 77


yang sama, juga dapat dibangkitkan pulsa periodik dengan siklus kerja yang tetap atau
bervariasi.

C. Aplikasi
1. Input Capture---Measuring External Timing Event
Dalam banyak aplikasi, dapat diukur waktu yang diperlukan atau frekuensi sebuah
event eksternal menggunakan mikrokontroler. Dengan menggunakan perangkat keras dan
unit fungsional yang didiskusikan di bagian sebelunya, akan dijelaskan prosedur untuk
mencapa tugas menghitung frekuensi sinyal yang masuk. Gambar 9.3 memperlihatkan
sinyal periodik yang masuk ke mikrokontroler.

Gambar 9.3 Menggunakan sistem timer I/O mikrokontroler. Sinyal sebelah atas dimasukkan
ke timer.

Langkah-langkah yang dilakukan adalah:


Mengaktifkan sistem timer dan memilih kecepatan clock.
Konfigurasi port mana yang akan digunakan untuk sinyal input.
Program input event untuk capture. Sinyal yang ditangkap secara urut digunakan
untuk menghitung frekuensi sinyal input. The signal on the bottom is generated
using the timer output system. The signal is used to control an external device. For
example, we should capture two consecutive rising edges or falling edges of the
incoming signal. Again, the programming portion is done by storing an appropriate
setup value to a special register.
Now that the input timer system is configured appropriately, you now have two
options to accomplish the task. The first one is the use of a polling technique; the

Dyah Lestari, 2013 78


microcontroller continuously polls a flag, which holds a logic high signal when a
programmed event occurs on the physical pin. Once the microcontroller detects the
flag, it needs to clear the flag and record the time when the flag was set using
another special register that captures the time of the associated free-running counter
value. The program needs to continue to wait for the next flag, which indicates the
end of one period of the incoming signal. A programmer then needs to record the
newly acquired captured time represented in the form of a free-running counter
value again. The period of the signal can now be computed by computing the time
difference between the two captured event times, and based on the clock speed of
the microcontroller, the programmer can compute the actual time changes and
consequently the frequency of the signal.
In many cases, a microcontroller cannot afford the time to poll for one event. Such
situation introduces the second method: interrupt systems. Most microcontroller
manufacturers have developed built-in interrupt systems with their timer input
modules. Instead of continuously polling for a flag, a microcontroller performs
other tasks and relies on its interrupt system to detect the programmed event. The
task of computing the period and the frequency is the same as the first method,
except that the microcontroller will not be tied down constantly checking the flag,
increasing the efficient use of the microcontroller resources. To use interrupt
systems, of course, we must pay the price by appropriately configuring the interrupt
systems to be triggered when a desired event is detected. Typically, additional
registers must be configured, and a special program called an ISR must be written.
Suppose that for an input capture scenario, the two captured times for the two rising
edges are $1000 and $5000, respectively.Note that these values are not absolute
times but the representations of times reflected as the values of the free-running
counter. The period of the signal is $4000, or 16384 in a decimal form. If we
assume that the timer clock runs at 10 MHz, the period of the signal is 1.6384 ms,
and the corresponding frequency of the signal is approximately 610.35 Hz.

2. Menghitung Event
The same capability of measuring the period of a signal can also be used to simply
count external events. Suppose we want to count the number of logic state changes of an

Dyah Lestari, 2013 79


incoming signal for a given period. Again, we can use the polling technique or the interrupt
technique to accomplish the task. For both techniques, the initial steps of turning on a timer
and configuring a physical input port pin are the same. In this application, however, the
programmed event should be any logic state changes instead of looking for a rising or a
falling edge as we have done in the previous section. If the polling technique is used, at
each event detection, the corresponding flag must be cleared and a counter must be
updated. If the interrupt technique is used, one must write an ISR within which the flag is
cleared and a counter is updated.

3. Output Compare---Generating Timing Signals to Interface External Devices


In the previous two sections,we considered two applications of capturing external
incoming signals. In this subsection and the next one, we consider how a microcontroller
can generate time critical signals for external devices. Suppose in this application, we want
to send a signal shown in Gambar 9.3 to turn on an external device. The timing signal is
arbitrary, but the application will show that a timer output system can generate any desired
time-related signals permitted under the timer clock speed limit of the microcontroller.
Similar to the use of the timer input system, one must first turn on the timer system and
configure a physical pin as a timer output pin using special registers. In addition, one also
needs to program the desired external event using another special register associated with
the timer output system. To generate the signal shown in Gambar 9.3, one must compute
the time required between the rising and the falling edges. Suppose that the external device
requires a pulse that is 2 ms wide to be activated. To generate the desired pulse, one must
first program the logic state for the particular pin to be low and set the time value using a
special registerwith respect to the contents of the free-running counter. As was mentioned
in Section B, at each clock cycle, the special register contents are compared with the
contents of the free-running counter, and when a match occurs, the programmed logic state
appears on the designated hardware pin. Once the rising edge is generated, the program
then must reconfigure the event to be a falling edge (logic state low) and change the
contents of the special register to be compared with the free-running counter. For the
particular example in Gambar 9.3, let us assume that the main clock runs at 2MHz, the
free-running counter is a 16-bit counter, and the name of the special register (16-bit
register) where we can put appropriate values is output timer register. To generate the

Dyah Lestari, 2013 80


desired pulse, we can put $0000 first to the output timer register, and after the rising edge
has been generated, we need to change the program event to a falling edge and put $0FA0
or 4000 in decimal to the output timer register. As was the case with the input timer system
module, we can use output timer system interrupts to generate the desired signals as well.

4. Industrial Implementation Case Study (PWM)


In this section, we discuss a well-knownmethod to control the speed of a DC motor
using a PWM signal. The underlying concept is as follows. If we turn on a DC motor and
provide the required voltage, the motor will run at its maximum speed. Suppose we turn
the motor on and off rapidly by applying a periodic signal. The motor at some point cannot
react fast enough to the changes of the voltage values and will run at the speed proportional
to the average time the motor was turned on. By changing the duty cycle, we can control
the speed of a DC motor as we desire. Suppose again we want to generate a speed profile
shown in Gambar 9.4. As shown in the figure, we want to accelerate the speed, maintain
the speed, and decelerate the speed for a fixed amount of time.

Gambar 9.4 The figure shows the speed profile of a DC motor over time when a pulse-width
modulated signal is applied to the motor.

Dyah Lestari, 2013 81


The first task necessary is again to turn on the timer system, configure a physical
port, and program the event to be a rising edge.As a part of the initialization process, we
need to put $0000 to the output timer registerwe discussed in the previous subsection.Once
the rising edge is generated, the program then needs to modify the event to a falling edge
and change the contents of the output timer register to a value proportional to a desired
duty cycle. For example, if we want to start off with 25% duty cycle, we need to input
$4000 to the register, provided that we are using a 16-bit free-running counter. Once the
falling edge is generated, we now need to go back and change the event to be a rising edge
and the contents of the output timer counter value back to $0000. If we want to continue to
generate a 25% duty cycle signal, then we must repeat the process indefinitely. Note that
we are using the time for a free-running counter to count from $0000 to $FFFF as one
period. Now suppose we want to increase the duty cycle to 50% over 1 s and that the clock
is running at 2 MHz. This means that the free-running counter counts from $0000 to
$FFFF every 32.768 ms, and the free-running counter will count from $0000 to $FFFF
approximately 30.51 times over the period of 1 s. That is, we need to increase the pulse
width from $4000 to $8000 in approximately 30 turns, or approximately 546 clock counts
every turn.

D. Timer Mikrokontroler AVR


The Atmel ATmega16 is equipped with a flexible and powerful three-channel
timing system. The timer channels are designated Timer 0, Timer 1, and Timer 2. In this
section, we review the operation of the timing system in detail.We begin with an overview
of the timing systemfeatures, followed by a detailed discussion of timer channel 0. Space
does not permit a complete discussion of the other two timing channels; we review their
complement of registers and highlight their features not contained in our discussion of
timer channel 0. The information provided on timer channel 0 is readily adapted to the
other two channels.
The features of the timig system are summarized in Gambar 9.5. Timer 0 and Timer
2 are 8-bit timers, whereas Timer 1 is a 16-bit timer. Each timing channel is equipped with
a prescaler. The prescaler is used to subdivide the main microcontroller clock source
(designated fclk I/O in upcoming diagrams) down to the clock source for the timing system
(clkTn).

Dyah Lestari, 2013 82


Gambar 9.5 Atmel timer system overview.

Each timing channel has the capability to generate PWM signals, generate a periodic signal
with a specific frequency, count events, and generate a precision signal using the output
compare channels. Additionally, Timer 1 is equipped with the Input Capture feature.
All of the timing channels may be configured to operate in one of four operational modes
designated : Normal (Mode 0), Clear Timer on Compare Match (CTC) (Mode 1), Fast
PWM (mode 2), and Phase Correct PWM (mode 3).

E. Sistem Timer 0
In this section, we discuss the features, overall architecture, modes of operation,
registers, and programming of Timer 0. This information may be readily adapted to Timer
1 and Timer 2. A Timer 0 block diagram is shown in Figure 5.6. The clock source for
Timer 0 is provided via an external clock source at the T0 pin (PB0) of the microcontroller.
Timer 0 may also be clocked internally via the microcontrollers main clock ( fclk I/O).
This clock frequency may be too rapid for many applications. Therefore, the timing system
is equipped with a prescaler to subdivide the main clock frequency down to timer system
frequency (clkTn). The clock source for Timer 0 is selected using the CS0[2:0] bits
contained in the Timer/Control Register (TCCR0). The TCCR0 register also contains the
WGM0[1:0] and the COM0[1:0] bits, which are used to select the mode of
operation for Timer 0 as well as tailor waveformgeneration for a specific application.
The timer clock source (clkTn) is fed to the 8-bit Timer/Counter Register (TCNT0). This

Dyah Lestari, 2013 83


register is incremented (or decremented) on each clkTn clock pulse. Timer 0 is also
equipped with an 8-bit comparator that constantly compares the counts of TCNT0 to the
Output Compare Register (OCR0). The compare signal fromthe 8-bit comparator is fed to
the waveformgenerator. The waveform generator has a number of inputs (top, bottom,
WGM0[1:0], and COM0[1:0]) to perform different operations with the timer system.
The BOTTOM signal for the waveform generation and the control logic, shown in Gambar
9.6, is asserted when the timer counter TCNT0 reaches all 0s (0x00). The MAX signal for
the control logic unit is asserted when the counter reaches all 1s (0xFF). The TOP signal
for the waveform generation is asserted by either reaching the maximum count values of
0xFF on the TCNT0 register or reaching the value set in the OCR0. The setting for the
TOP signal will be determined by the timers mode of operation.
Timer 0 also uses certain bits within the Timer/Counter Interrupt Mask Register
(TIMSK) and the Timer/Counter Interrupt Flag Register (TIFR) to signal interrupt-related
events. Timer 0 shares these registers with the other two timer channels.

Gambar 9.6 Timer 0 block diagram.

Dyah Lestari, 2013 84


1. Modes of Operation
Each of the timer channels may be set for a specific mode of operation: normal,
CTC, fast PWM, and Phase Correct PWM. The system designer chooses the correct mode
for the application at hand. The timer modes of operation are summarized in Figure 5.7. A
specificmode of operation is selected using theWaveform Generation Mode,WGM00
andWGM01, bits located in TCCR0.

a. Normal Mode.

Gambar 9.7 Timer 0 modes of operation

In the normal mode, the timer will continually count from 0x00 (BOTTOM)
to 0xFF (TOP). When the TCNT0 returns to 0 on each cycle of the counter, the

Dyah Lestari, 2013 85


Timer/Counter Overflow Flag (TOV0) will be set. The normalmode is useful for
generating a periodic clock tick that may be used to calculate elapsed real time or
provide delays within a system.

b. Clear Timer on Compare Match


In the CTC modem, the TCNT0 timer is reset to 0 every time the TCNT0 counter
reaches the value set in OCR0. The Output Compare Flag 0 (OCF0) is set when this event
occurs. The OCF0 flag is enabled by asserting the Timer/Counter 0 Output Compare Math
Interrupt Enable (OCIE0) flag in the TIMSK and when the I-bit in the Status Register is set
to 1.
The CTC mode is used to generate a precision digital waveform such as a periodic
signal or a single pulse. The user must describe the parameters and key features of the
waveform in terms of Timer 0 clock ticks. When a specific key feature is reached
within the waveform, the next key feature may be set into the OCR0 register.

c. Phase Correct PWM Mode


In the Phase Correct PWM mode, the TCNT0 register counts from 0x00 to 0xFF
and back down to 0x00 continually. Every time the TCNT0 value matches the value set in
the OCR0 register, the OCF0 flag is set and a change in the PWM signal occurs.

d. Fast PWM
The fast PWMmode is used to generate a precision PWMsignal of a desired
frequency and duty cycle. It is called the fast PWM because its maximum frequency is
twice that of the Phase Correct PWM mode. When the TCNT0 register value reaches the
value set in the OCR0 register, it will cause a change in the PWM output as prescribed by
the system designer. It continues to count up to the TOP value, at which time the
Timer/Counter 0 Overflow Flag (TOV0) is set.

2. Timer 0 Registers
TCCR0 - Timer/Counter Control Register 0

Dyah Lestari, 2013 86


Bit 7 FOC0 : Force Output Compare
Bit 6,3 WGM01:0 : Waveform Generation Mode
Bit ini mengontrol kenaikan dari counter, sumber dari nilai maksimum counter,
dan tipe dari jenis timer/counter yang dihasilkan, yaitu mode normal, clear
timer, mode compare match, dan dua tipe dari PWM

Bit 5,4 : COM01:COM00 : Compare Match Output Mode


Bit ini mengontrol pin OC0 (Output Compare pin). Apabila kedua bit tersebut
nol atau clear, maka pin OC0 berfungsi sebagai pin biasa. Namun jika salah
satu bit diset, maka fungsi pin tergantung pada setting bit pada WGM00 dan
WGM01.

Dyah Lestari, 2013 87


Bit 2,1,0 CS02; CS01; CS00: Clock Select
Ketiga bit ini memilih sumber clock yang akan digunakan oleh Timer/Counter.

TCNT0-Timer/Counter Register 0

OCR0-Output Compare Register 0

Isi register ini akan selalu dibandingkan dengan nilai counter TCNT. Nilai yang
sama akan menimbulkan interrupt atau membangkitkan sinyal di pin OC0.

Dyah Lestari, 2013 88


TIMSK Timer/Counter Interrupt Mask Register

Bit 1-OCIE0: Timer/Counter0 Output Compare Match Interrupt Enable


Timer/Counter0 Output Compare Match Interrupt service routine akan
dijalankan jika bit OCF0 berlogika 1
Bit 0 TOIE0: Timer/Counter0 Overflow Interrupt Enable
Timer/Counter0 Overflow Interrupt service routine akan dijalankan jika bit
TOV0 berlogika 1

TIFR Timer/Counter Interrupt Flag Register

Bit 1-OCF0: Output Compare Flag 0


Bit OCF00 berlogika 1 jika terjadi Compare Match antara Timer/Counter0 dan
OCR0. OCF0 akan berlogika 1 jika interrupt sudah dijalankan.
Bit 0 TOV0: Timer/Counter0 Overflow Flag 0
Bit ini berlogika 1 jika terjadi overflow di Timer/Counter0

SFIOR Special Function IO Register

Dyah Lestari, 2013 89


F. Register Timer 1
TCCR1A - Timer/Counter1 Control Register A

Dyah Lestari, 2013 90


Dyah Lestari, 2013 91
TCCR1B - Timer/Counter1 Control Register B

Dyah Lestari, 2013 92


TCNT1H dan TCNT1L - Timer/Counter1

Dyah Lestari, 2013 93


OCR1AH dan OCR1AL Outpur Compare Register 1 A

OCR1BH dan OCR1BL Output Compare Register 1 B

ICR1H dan ICR1L Input Capture Register 1

TIMSK Timer/Counter Interrupt Mask Register

Dyah Lestari, 2013 94


TIFR Timer/Counter Interrupt Flag Register

G. Register Timer 2
TCCR2 Timer/Counter Control Register

Dyah Lestari, 2013 95


Dyah Lestari, 2013 96
TCNT2 Timer/Counter Register

OCR2 Output Compare Register

Dyah Lestari, 2013 97


TIMSK Timer/Counter Interrupt Mask Register

TIFR Timer/Counter Interrupt Flag Register

SFIOR Special Function Register

Dyah Lestari, 2013 98


H. Memrogram Sistem Timer
In this section, we provide several representative examples of using the timer
system for various applications.We will provide examples of using the timer systemto
generate a prescribed delay and a PWM signal and to capture an input event.

1. Precision Delay
In this example, we program the ATmega16 to provide a delay of some number of
6.55-ms interrupts. The Timer 0 overflow is configured to occur every 6.55 ms. The
overflow flag is used as a clock tick to generate a precision delay. To create the delay
the microcontroller is placed in a while loop waiting for the prescribed number of Timer 0
overflows to occur.
//Function prototypes
void delay(unsigned int number_of_6_55ms_interrupts);
void init_timer0_ovf_interrupt(void);
void timer0_interrupt_isr(void);
//interrupt handler
//definition
#pragma interrupt_handler timer0_interrupt_isr:10
//door profile data
//****************************************************************
//int_timer0_ovf_interrupt(): The Timer0 overflow interrupt is
//being employed as a time base for a master timer for this
//project. The ceramic resonator operating at 10 MHz is divided
//by 256. The 8-bit Timer0 register (TCNT0) overflows every 256
//counts or every 6.55 ms.
//****************************************************************
void init_timer0_ovf_interrupt(void)
{

Dyah Lestari, 2013 99


TCCR0 = 0x04; //divide timer0 timebase by 256, overflow occurs
//every 6.55ms
TIMSK = 0x01; //enable timer0 overflow interrupt
asm("SEI"); //enable global interrupt
}
//****************************************************************
//****************************************************************
//timer0_interrupt_isr:
//Note: Timer overflow 0 is cleared by hardware when executing the
//corresponding interrupt handling vector.
//****************************************************************
void timer0_interrupt_isr(void)
{
input_delay++; //input delay processing
}
//****************************************************************
//****************************************************************
//delay(unsigned int num_of_6_55ms_interrupts): this generic delay
//function provides the specified delay as the number
//of 6.55 ms "clock ticks" from the Timer0 interrupt.
//Note: this function is only valid when using a 10 MHz crystal or
// ceramic resonator
//****************************************************************
void delay(unsigned int number_of_6_55ms_interrupts)
{
TCNT0 = 0x00; //reset timer0
input_delay = 0;
while(input_delay <= number_of_6_55ms_interrupts)
{
;
}
}
//****************************************************************

Dyah Lestari, 2013 100


2. Pulse Width Modulation
The function provided below is used to configure output compare Channel B to
generate a PWM signal. An analog voltage provided to ADC channel 3 is used to set the
desired duty cycle from 50% to 100%. Note how the PWM ramps up from 0 to the desired
speed.
//Function Prototypes
void PWM(unsigned int PWM_incr)
{
unsigned int Open_Speed_int;
float Open_Speed_float;
int gate_position_int;
PWM_duty_cycle = 0;
InitADC(); //Initialize ADC
//Read "Open Speed" volt
//setting PA3
Open_Speed_int = ReadADC(0x03); //Open Speed Setting
//unsigned int
//Convert to max duty
//cycle setting 0 VDC =
//50% = 127, 5 VDC =
//100% = 255
Open_Speed_float = ((float)(Open_Speed_int)/(float)(0x0400));
//convert volt to
//PWM constant 127-255
Open_Speed_int = (unsigned int)((Open_Speed_float * 127) + 128.0);
//Configure PWM clock
TCCR1A = 0xA1; //freq = resonator/510
// = 10 MHz/510
//freq = 19.607 kHz
TCCR1B = 0x01; //no clock source
//division
//Initiate PWM duty cycle
//variables
PWM_duty_cycle = 0;
OCR1BH = 0x00;
OCR1BL = (unsigned char)(PWM_duty_cycle);//set PWM duty cycle CH

Dyah Lestari, 2013 101


//B to 0%
//Ramp up to Open Speed
//in 1.6s
OCR1BL = (unsigned char)(PWM_duty_cycle);//set PWM duty cycle CH
//B
while (PWM_duty_cycle < Open_Speed_int)
{
if(PWM_duty_cycle < Open_Speed_int) //increment duty cycle
PWM_duty_cycle=PWM_duty_cycle + PWM_open_incr;
OCR1BL = (unsigned char)(PWM_duty_cycle);//set PWM duty cycle
//CH B
}
//Gate continues to open at specified upper speed (PA3)
:
:
:
//****************************************************************

3. Input Capture Mode


This example was developed by Julie Sandberg, BSEE, and Kari Fuller, BSEE, at
the University of Wyoming as part of their senior design project. In this example, the input
capture channel is being used to monitor the heart rate (typically 50--120 beats per minute)
of a patient. The microcontroller is set to operate at an internal clock frequency of 1 MHz.
//****************************************************************
//****************************************************************
//initialize_ICP_interrupt: Initialize Timer/Counter 1
//for input capture
//****************************************************************
void initialize_ICP_interrupt(void)
{
TIMSK=0x20; //Allows input capture
//interrupts
SFIOR=0x04; //Internal pull-ups disabled
TCCR1A=0x00; //No output comp or waveform
//generation mode
TCCR1B=0x45; //Capture on rising edge,

Dyah Lestari, 2013 102


//clock prescalar=1024
TCNT1H=0x00; //Initially clear timer/
//counter 1
TCNT1L=0x00;
asm("SEI"); //enable global interrupts
}
//****************************************************************
void Input_Capture_ISR(void)
{
if(first_edge==0)
{
ICR1L=0x00; //clear ICR1 and TCNT1
//on first edge
ICR1H=0x00;
TCNT1L=0x00;
TCNT1H=0x00;
first_edge=1;
}
else
{
ICR1L=TCNT1L; //capture time from TCNT1
ICR1H=TCNT1H;
TCNT1L=0x00;
TCNT1H=0x00;
first_edge=0;
}
heart_rate(); //calculate the heart rate
TIFR=0x20; //clear the input capture flag
asm("RETI"); //resets the I flag to allow
//global interrupts
}
/****************************************************************/
void heart_rate(void)
{
if(first_edge==0)
{
time_pulses_low = ICR1L; //Read 8 low bits first

Dyah Lestari, 2013 103


time_pulses_high = ((unsigned int)(ICR1H << 8));
time_pulses = time_pulses_low | time_pulses_high;
if(time_pulses!=0) //1 counter increment = 1.024 ms
{ //divide by 977 to get seconds/
//pulse
HR=60/(time_pulses/977); //(secs/min)/(secs/beat) =bpm
}
else
{
HR=0;
}
}
else
{
HR=0;
}
}
/****************************************************************/

Rangkuman
Dalam bab ini telah dijelaskan tentang istilah yang berkaitan dengan timer, keempat
mode timer/counter, komponen mikrokontroler untuk fungsi timer, mendeskripsikan
prosedur untuk menangkap sinyal dari luar, mendeskripsikan prosedur untuk
membangkitkan sinyal, mendeskripsikan register yang digunakan untuk Timer 0, Timer 1,
dan Timer 2, serta memrogram timer dalam mikrokontroler AVR. Dalam bab selanjutnya
akan dijelaskan bagaimana mengantarmukakan mikrokontroler dengan motor DC.

Soal Latihan
1. Given an 8-bit free-running counter and a systemclock rate of 24MHz, find the time
required for the counter to count from 0 to its maximum value.
2. If we desire to generate periodic signals with periods ranging from 125 ns to 500 s,
what is the minimum frequency of the system clock?
3. Describe how you can compute the period of an incoming signal with varying duty
cycles.

Dyah Lestari, 2013 104


4. Describe how one can generate an aperiodic pulse with a pulse width of 2 min.
5. Program the output compare system of the ATmega16 to generate a 1-kHz signal with
a 10% duty cycle.
6. Design a microcontroller system to control a sprinkler controller that performs the
following tasks. We assume that your microcontroller runs with a 10-MHz clock and it
has a 16-bit free-running counter. The sprinkler controller system controls two
different zones by turning sprinklers within each zone on and off. To turn on the
sprinklers of a zone, the controller needs to receive a 152.589-Hz PWMsignal from
your microcontroller. To turn off the sprinklers of the same zone, the controller needs
to receive the PWM signal with a different duty cycle. Your microcontroller needs to
provide the PWM signal with 10% duty cycle for 10 ms to turn on the sprinklers in
zone 1. After 15 min, your microcontroller must send the PWM signal with 15% duty
cycle for 10 ms to turn off the sprinklers in zone 1. After 15 min, your microcontroller
must send the PWM signal with 20% duty cycle for 10 ms to turn on the sprinklers in
zone 2. After 15 min, your microcontroller must send the PWM signal with 25% duty
cycle for 10 ms to turn off the sprinklers in zone 2.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 105


MODUL 10
ANTARMUKA MIKROKONTROLER DENGAN MOTOR
DC

Pertemuan ke : 14-15
Topik : 1. Prinsip kerja motor DC.
2. Rangkaian antarmuka mikrokontroler dengan motor DC.
3. Pemrograman mikrokontroler untuk mengatur arah putaran
motor DC.
4. Pemrograman mikrokontroler untuk mengatur kecepatan putaran
motor DC dengan PWM (Pulse Width Modulation).
Alokasi Waktu : 4 x 50 menit
Tujuan : 1. Mahasiswa mampu menjelaskan prinsip kerja motor DC.
2. Mahasiswa mampu menjelaskan rangkaian antarmuka
mikrokontroler dengan motor DC.
3. Mahasiswa mampu menjelaskan pemrograman mikrokontroler
untuk mengatur arah putaran motor DC.
4. Mahasiswa mampu menjelaskan pemrograman mikrokontroler
untuk mengatur kecepatan putaran motor DC dengan PWM
(Pulse Width Modulation).

Pendahuluan
Dalam bab ini akan dijelaskan tentang prinsip kerja motor DC, rangkaian antarmuka
motor DC dengan mikrokontroler, serta bagaimana memprogram mikrokontroler untuk
mengatur arah putaran motor DC tanpa PWM dan dengan PWM (Pulse Width Modulation).

A. Prinsip Kerja Motor DC


Motor DC atau motor arus searah adalah suatu mesin listrik yang dapat mengubah
energi listrik yang berupa listrik arus searah menjadi energi mekanik (gerak). Energi
mekanik tersebut berupa putaran dari rotor.

Dyah Lestari, 2013 106


Motor DC memerlukan suplai tegangan searah pada kumparan medan untuk diubah
menjadi energi mekanik. Kumparan medan pada motor DC disebut stator (bagian yang tidak
berputar dan kumparan jangkar disebut rotor (bagian yang berputar). Jika terjadi putaran
pada kumparan jangkar dalam medan magnet, maka akan timbul tegangan (GGL) yang
berubah-ubah arah pada setiap setengan putaran, sehingga menghasilkan tegangan bolak-
balik.

Gambar 10.1 Konstruksi Motor DC

Catu tegangan DC dari baterai menuju ke lilitan melalui sikat yang menyentuh
komutator, dua segmen yang terhubung dengan dua ujung lilitan. Kumparan satu lilitan pada
Gambar 10.1 disebut angker dinamo. Angker dinamo adalah sebutan untuk komponen yang
berputar di antara medan magnet.
Cara kerja motor DC: (1) Arus medan (DC) yang mengalir pada belitan medan akan
menghasilkan medan magnet. Medan magnet ini akan memotong belitan jangkar yang ada
di rotor motor DC; (2) Belitan jangkar dialiri arus listrik. Karena belitan berarus listrik ini
berada dalam pengaruh medan magnet, maka pada belitan akan timbul gaya magnet yang
selanjutnya akan menimbulkan torsi; (3) Jika torsi awal yang dihasilkan lebih besar daripada
torsi beban, maka jangkar akan berputar.

B. Rangkaian Antarmuka Mikrokontroler dengan Motor DC


1. Driver Motor DC (On/Off)
Gambar 10.2 menujukkan rangkaian yang digunakan untuk memutar dan
menghentikan motor. Rangkaian ini terdiri atas rangkaian transistor sebagai saklar. Jika
diinginkan gerakan motor dengan arah yang berlawanan, misalnya searah jarum jam atau
berlawanan dengan arah jarum jam, maka tegangan yang diberikan perlu diubah kutub

Dyah Lestari, 2013 107


positif dan negatifnya. Pengaturan arah putar motor DC dapat dilakukan dengan cara
membalik polaritas motor DC.

Gambar 10.2 Rangkaian ON/OFF Motor DC

CW CCW
Gambar 10.3 Mengubah Polaritas Mengatur Arah Putaran Motor DC

2. Driver Motor DC dengan Relay (Forward/Reverse)

Gambar 10.4 Rangkaian Driver Motor DC dengan Relay

Dyah Lestari, 2013 108


Supaya mudah mengatur arah putaran motor tanpa mengubah polaritas motornya,
maka bisa digunakan rangkaian berikut, dimana digunakan relay untuk mengubah polaritas
tegangan rangkaian drivernya.

3. Driver Motor DC dengan Rangkaian H Bridge


H-bridge adalah sebuah perangkat keras berupa rangkaian yang berfungsi untuk
menggerakkan motor. Rangkaian ini diberi nama H-bridge karena bentuk rangkaiannya yang
menyerupai huruf H seperti pada Gambar 10.5. Rangkaian ini terdiri dari dua buah MOSFET
kanal P dan dua buah MOSFET kanal N.

Gambar 10.5 Rangkaian Driver Motor DC dengan MOSFET

Prinsip kerja rangkaian ini adalah dengan mengatur mati-hidupnya ke empat


MOSFET tersebut. Huruf M pada Gambar 10.5 adalah motor DC yang akan dikendalikan.
Pada saat MOSFET A dan MOSFET D on sedangkan MOSFET B dan MOSFET C off, maka
sisi kiri dari gambar motor akan terhubung dengan kutub positif dari catu daya, sedangkan
sisi sebelah kanan motor akan terhubung dengan kutub negatif dari catu daya sehingga motor
akan bergerak searah jarum jam dijelaskan pada Gambar 10.6.
Jika MOSFET B dan MOSFET C on sedangkan MOSFET A dan MOSFET D off,
maka sisi kanan motor akan terhubung dengan kutub positif dari catu daya sedangkan sisi

Dyah Lestari, 2013 109


kiri motor akan terhubung dengan kutub negatif dari catu daya. Maka motor akan bergerak
berlawanan arah jarum jam dijelaskan pada Gambar 10.7.
Konfigurasi lainnya adalah apabila MOSFET A dan MOSFET B on sedangkan
MOSFET C dan MOSFET D off. Konfigurasi ini akan menyebabkan sisi kiri dan kanan
motor terhubung pada kutub yang sama yaitu kutub positif sehingga tidak ada perbedaan
tegangan diantara dua buah polaritas motor, sehingga motor akan diam. Konfigurasi seperti
ini disebut dengan konfigurasi break.
Begitu pula jika MOSFET C dan MOSFET D saklar on, sedangkan MOSFET A dan
MOSFET C off, kedua polaritas motor akan terhubung pada kutub negatif dari catu daya.
Maka tidak ada perbedaan tegangan pada kedua polaritas motor, dan motor akan diam.
Konfigurasi yang harus dihindari adalah pada saat MOSFET A dan MOSFET C on secara
bersamaan atau MOSFET B dan MOSFET D on secara bersamaan. Pada konfigurasi ini
akan terjadi hubungan arus singkat antara kutub positif catu daya dengan kutub negatif catu
daya. Tabel 10.1 menunjukkan kombinasi ABCD untuk menghasilkan arah putaran motor
DC.

Gambar 10.6 Motor DC bergerak searah jarum jam

Dyah Lestari, 2013 110


Gambar 10.7 Motor DC bergerak berlawanan dengan arah jarum jam

Tabel 10.1 Kombinasi Kondisi MOSFET

4. Driver Motor DC dengan IC L293D


Rangkaian yang paling sederhana adalah rangkaian dengan menggunakan IC H-
bridge dengan menggunakan L293D. IC ini dapat digunakan untuk mengontrol arah dan
kecepatan dua buah motor DC. Input yang dibutuhkan adalah 3 masukan, 2 masukan
untuk input H bridge, dan 1 masukan untuk enable. Output IC ini langsung dihubungkan ke

Dyah Lestari, 2013 111


kaki motor DC. Gambar 10.8 memperlihatkan rangkaian L293D untuk mengontrol motor
DC.

Gambar 10.8 Rangkaian Driver Motor dengan L293D

C. Program Mikrokontroler untuk Menggerakkan Motor DC


Untuk mengontrol arah putaran motor DC, maka diberikan program sebagai berikut:
OCR1A=255; // motor putaran penuh
PORTD.0=1; // motor putar searah jarum jam
PORTD.1=0;

Jika nilai di PORT D.0 dan PORTD.1 ditukar maka motor akan berputar berlawanan dengan
arah jarum jam.
OCR1A=255; // motor putaran penuh
PORTD.0=0; // motor putar berlawanan dengan arah
// jarum jam
PORTD.1=1;

Untuk mengubah arah putar sekaligus mengubah kecepatan motor DC, maka digunakan fitur
ADC dan PWM dalam Timer/Counter.
OCR1A=read_adc(0); // kecepatan motor bergantung
// pada nilai OCR yang
// dihasilkan dari konversi ADC
PORTD.0=1; // motor putar searah jarum jam
PORTD.1=0;

Dyah Lestari, 2013 112


Rangkuman
Dalam bab ini telah dijelaskan mengenai prinsip kerja motor DC, rangkaian
antarmuka motor DC dengan mikrokontroler, serta bagaimana memprogram
mikrokontroler untuk mengatur arah putaran motor DC tanpa PWM dan dengan PWM
(Pulse Width Modulation). Materi mikrokontroler selanjutnya dapat dibaca dalam modul
Mikroprosesor Lanjut.

Soal Latihan
1. Gambarkan rangkaian antarmuka mikrokontroler dengan motor DC dengan rangkaian
H-bridge. Tuliskan semua komponen yang digunakan.
2. Buatlah program untuk memutar motor searah dan berlawanan dengan arah jarum jam.

Daftar Rujukan
Barret, Steven F. dan Pack, Daniel J. 2008. Atmel AVR Microcontroller Primer:
Programming and Interfacing. USA: Morgan and Claypool Publishers.

Anonim. 2006. ATmega8535 Datasheet. Atmel Corporation.

Dyah Lestari, 2013 113

Anda mungkin juga menyukai