Mikrokontroler ATMega 8535: Teori dan Konfigurasi
Mikrokontroler ATMega 8535: Teori dan Konfigurasi
LANDASAN TEORI
Mikrokontroler, sesuai namanya adalah suatu alat atau komponen pengontrol atau
pengendali yang berukuran mikro atau kecil. Sebelum ada mikrokontroler, telah ada
terlebih dahulu muncul mikroprosesor. Bila dibandingkan dengan mikroprosesor,
mikrokontroler jauh lebih unggul karena terdapat berbagai alasan, diantaranya :
1. Tersedianya I/O
I/O dalam mikrokontroler sudah tersedia sementara pada mikroprosesor
dibutuhkan IC tambahan untuk menangani I/O tersebut. IC I/O yang dimaksud adalah
PPI 8255.
2. Memori Internal
Memori merupakan media untuk menyimpan program dan data sehingga mutlak harus
ada. Mikroprosesor belum memiliki memori internal sehingga memerlukan IC
memori eksternal. Dengan kelebihan-kelebihan di atas, ditambah dengan harganya
yang relatif murah sehingga banyak penggemar elektronika yang kemudian beralih
kemikrokontroler. Namun demikian, meski memiliki berbagai kelemahan,
mikroprosesortetap digunakan sebagai dasar dalam mempelajari mikrokontroler. Inti
kerja dari keduanya adalah sama, yakni sebagai pengendali suatu sistem.
Mikrokontroler adalah otak dari suatu sistem elektronika seperti halnya mikroprosesor
sebagai otak komputer. Namun mikrokontroler memiliki nilai tambah karena didalamnya
sudah terdapat memori dan sistem input/output dalam suatu kemasan IC. Mikrokontroler
AVR (Alf and Vegard’s RISC processor) standar memiliki arsitektur 8-bit, dimana semua
instruksi dikemas dalam kode 16- bit dan sebagian besar instruksi dieksekusi dalam satu
siklus clock. Berbeda dengan instruksi MCS-51 yang membutuhkan 12 siklus clock karena
memiliki arsitektur CISC (seperti komputer).
Secara umum, AVR dapat dikelompokkan menjadi 4 kelas, yaitu keluarga ATTiny,
keluarga AT90Sxx, keluarga ATMega dan AT89RFxx. Pada dasarnya yang membedakan
masing-masing kelas adalah memori, peripheral, dan fungsinya. Dari segi arsitektur dan
instruksi yang digunakan, mereka bisa dikatakan hampir sama. Oleh karena itu, dipergunakan
salah satu AVR produk Atmel, yaitu ATMega 8535. Selain mudah didapatkan dan lebih
murah ATMega 8535 juga memiliki fasilitas yang lengkap. Untuk tipe AVR ada 3 jenis
• VCC merupakan pin yang berfungsi sebagai pin masukkan catu daya
• GND merupakan pin ground
• Port A (PA0..PA7) merupakan pin I/O dua arah dan pin masukan ADC
• Port B (PB0..PB7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Timer/Counter, Komparator Analog, dan SPI
• Port C (PC0..PC7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu TWI,
Komparator Analog, dan Timer Oscilator
• Port D (PD0..PD7) merupakan pin I/O dua arah dan pin fungsi khusus, yaitu
Komparator Analog, Interupsi Iksternal dan komunikasi serial USART
• Reset merupakan pin yang digunakan untuk mereset mikrokontroler
• XTAL1 dan XTAL2 merupakan pin masukkan clock eksternal (osilator menggunakan
kristal, biasanya dengan frekuensi 11,0592 MHz)
ATMega8535 memiliki dua jenis memori yaitu Data Memory dan Program Memory
ditambah satu fitur tambahan yaitu EEPROM Memory untuk penyimpan data.
Application Flash Section digunakan untuk menyimpan program aplikasi yang dibuat
user. AVR tidak dapat menjalakan program aplikasi ini sebelum menjalankan program Boot
Loader. Besarnya memori Boot Flash Section dapat deprogram dari 128 word sampai 1024
word tergantung setting pada konfigurasi bit di register BOOTSZ. Jika Boot Loader
diproteksi, maka program pada Application Flash Section juga sudah aman.
ATMEGA8535 memiliki EEPROM 8 bit sebesar 512 byte untuk menyimpan data.
Loaksinya terpisah dengan system address register, data register dan control register yang
dibuat khusus untuk EEPROM. Alamat EEPROM dimulai dari $000 sampai $1FF.
Kegunaan LCD banyak sekali dalam perancangan suatu sistem dengan menggunakan
menggunakan mikrokontroler, LCD (Liquid Crysral Display) dapat berfungsi untuk
menampilakan suatu nilai hasil sensor, menampilakan teks, atau menampilakan menu pada
aplikasi mikrokontroler. M1632 merupakan modul LCD matrix dengan konfigurasi 16
karakter dan 2 baris dengan setiap karakternya dibentuk oleh baris pixel dan 5 kolom pixel (1
baris pixel terakhir adalah kursor).
Didalam modul M1632 sudah tersedia HD44780 yang dikeluarkan oleh Hitachi,
Hyundai dan modul-modul M1632 lainnya. HD44780 sebetulnya merupakan mikrokontroler
dirancang khusus untuk mengenendalikan LCD dan mempunyai kemampuan untuk mengatur
proses scanning pada layar LCD yang terbentuk oleh 16 COM dan 40 SEG sehingga
mikrokontroler/perangkat yang mengakses modul LCD ini tidak perlu lagi mengatur scanning
pada layar LCD. Mikrokontroler atau perangkat tersebut hanya mengirim data-data yang
merupakan karakter yang akan ditampilkan pada LCD atau perintah yang mengatur proses
tampilan pada LCD saja.
Modul LCD M1632 memilki beberapa jenis memori yang digunakan untuk menyimpan
atau memproses data-data yang ditampilkan pada layar LCD. Setiap memori mempunyai
fungsi-fungsi tersendiri
b. CGRAM
CGRAM merupakan memori untuk menggambarkan pola seluruh karakter dan bentuk
karakter dapat diubah-ubah sesuai keinginan. Akan tetapi isi memori akan hilang saat power
supplay tidak aktif sehingga pola karakter akan hilang.
c. CGROM
Adalah memori untuk menggambarkan pola sebuah karakter dan pola tersebut ditentukan
secara permanen dari HD44780 sehingga pengguna tidak dapat menubah lagi. Oleh karena
ROM bersifat permanen, pola karakter tersebut akan hilang walaupun power supplay tidak
aktif.
2.3.1 Pendahuluan
C adalah bahasa pemrograman yang dapat dikatakan berada antara bahasa tingkat
rendah (bahasa yang berorientasi pada mesin) dan bahasa tingkat tinggi (bahasa yang
berorientasi pada manusia). Seperti yang diketahui, bahasa tingkat tinggi mempunyai
kompatibilitas antara platform. Karena itu, amat mudah untuk membuat program pada
berbagai mesin. Berbeda halnya dengan menggunakan bahasa mesin, sebab setiap
perintahnya sangat bergantung pada jenis mesin.
Pembuat bahasa C adalah Brian W. Kernighan dan Dennis M. Ritchie pada tahun
1972. C adalah bahasa pemrograman terstruktur, yang membagi program dalam bentuk blok.
Pemberian signed dan unsigned pada tipe data menyebabkan jangkauan dari tipe
berubah. Pada unsigned menyebabkan tipe data akan selalu bernilai positif sedangkan signed
menyebabkan nilai tipe data bernilai negatif dan memungkinkan data bernilai positif.
Perbedaan nilai tipe data dapat kita lihat pada tabel di bawah ini,
Contoh program yang menunjukkan pengaruh signed dan unsigned pada hasil
program,
#include <mega.8535>
#include <delay.h>
Void main (void)
{
int a, b; // pengenal
unsigned d, e;
a = 50;
b = 40;
d = 50;
e = 40;
PORTC = 0x00;
DDRC = 0Xff; //set PORTC sebagai output
PORTB = 0x00;
DDRB = 0Xff; // set PORTB sebagai output
While(1)
{
PORTB = a – b;
PORTC = d – e;
delay_ms(100);
};
Pada program di atas terdapat tulisan //set PORTB sebagai output yang berguna
sebagai komentar yang mana komentar ini tidak mempengaruhi hasil dari program. Ada dua
cara penulisan komentar pada pemrograman bahasa C, yaitu dengan mengawali komentar
dengan tanda “ // “ ( untuk komentar yang hanya satu baris ) dan mengawali komentar dengan
tanda “ /* “ dan mengakhiri komentar dengan tanda “ */ “.
Contoh:
// ini adalah komentar
/* ini adalah komentar
Yang lebih panjang
Dan lebih panjang lagi */
2.3.5 Statement
Statement adalah setiap operasi dalam pemrograman, harus diakhiri dengan [ ; ] atau [
} ]. Statement tidak akan dieksekusi bila diawali dengan tanda [ // ] untuk satu baris. Lebih
dari 1 baris gunakan pasangan [ /* ] dan [ */ ]. Statement yang tidak dieksekusi disebut juga
comments / komentar.
2.3.6 Fungsi
Function adalah bagian program yang dapat dipanggil oleh program utama.
Penulisan :
[tipe data hasil] [nama function]([tipe data input 1],[tipe data input 2])
{
[statement] ;
}
a. Pernyataan if
if ( [pernyaratan] ) {
[statement1];
[statement2];
}
else {
[statement3];
[statement4];
}
b. Pernyataan for
Pernyataan for juga digunakan untuk melakukan pengulangan sebuah pernyataan atau
blok pernyataan, tetapi berapa kali jumah pengulangannya dapat ditentukan secara lebih
spesifik. Bentuk pernyataan for adalah sebagai berikut :
Nilai_awal adalah nilai inisial awal sebuah variabel yang didefenisikan terebih dahulu
untuk menentukan niai variabel pertama kali sebelum penguangan.
Pernyataan while digunakan untuk menguangi sebuah pernyataan atau blok kenyataan
secara terus menerus selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while
adalah sebagai berikut :
while (kondisi)
d. Pernyataan Do While
Pernyataan do while hampir sama dengan pernyataan while, yaitu pernyataan yang
digunakan untuk menguangi sebuah pernyataan atau blok pernyataan secara terus menerus
selama kondisi tertentu masih terpenuhi. Bentuk pernyataan while adalah sebagai berikut :
do {
} while (kondisi).
Yang membedakan antara pernyataan while dengan do..while adalah bahwa pada
pernyataan while pengetesan kondisi dilakukan terlebih dahulu, jika kondisi terpenuhi maka
barulah blok pernyataan dikerjakan. Sebaliknya pada pernyataan do…while blok pernyataan
dikerjakan terebih dahulu setelah itu baru diakukan pengetesan kondisi, jika kondisi terpenuhi
maka dilakukan pengulangan pernyataan atau blok pernyataan lagi. Sehingga dengan
demikian pada pernyataaan do..while blop pernyataan pasti akan dikerjakan minimal satu kali
sedangkan pada pernyataan whilebok pernyataan beum tentu dikerjakan.
Switch (ekspresi)
{
case nilai_1 : pernyataa_1;break;
case nilai_2 : pernyataan_2;break;
case niai_3 : pernyataan_3;break;
…
Defaut : pernyataan_default;break;
}
Contoh :
Switch (PINA)
{
case 0xFE : PORT=0x00;break;
case 0xFD : PORT=0xFF;break;
}
Pernyataan di atas berarti membaca port A, kemudian datanya (PINA) akan dicocokan
dengan nilai case. Jika PINA bernilai 0xFE maka data 0x00 akan dikeluarkan ke port C
kemudian program keluar dari pernyataan switch tetapi jika PINA bernilai 0xFD maka data
0xFF akan dikeluarkan ke port C kemudian program keluar dari pernyataan switch.
Elektroda dari kapasitor ini terbuat dari alumunium yang menggunakan membrane
oksidasi yang tipis. Karakteristik utama dari Electrolytic Capacitor adalah perbedaan
polaritas pada kedua kakinya. Dari karakteristik tersebut kita harus berhati – hati di dalam
pemasangannya pada rangkaian, jangan sampai terbalik. Bila polaritasnya terbalik maka akan
menjadi rusak bahkan meledak. Biasanya jenis kapasitor ini digunakan pada rangkaian power
supply. Kapasitor ini tidak bisa digunakan pada rangkaian frekuensi tinggi. Biasanya
tegangan kerja dari kapasitor dihitung dengan cara mengalikan tegangan catu daya dengan 2.
Misalnya kapasitor akan diberikan catu daya dengan tegangan 5 Volt, berarti kapasitor yang
dipilih harus memiliki tegangan kerja minimum 2 x 5 = 10 Volt.
Untuk mencari nilai dari kapasitor biasanya dilakukan dengan melihat angka/kode
yang tertera pada badan kapasitor tersebut. Untuk kapasitor jenis elektrolit memang mudah,
karena nilai kapasitansinya telah tertera dengan jelas pada tubuhnya. Sedangkan untuk
kapasitor keramik dan beberapa jenis yang lain nilainya dikodekan. Biasanya kode tersebut
terdiri dari 4 digit, dimana 3 digit pertama merupakan angka dan digit terakhir berupa huruf
yang menyatakan toleransinya. Untuk 3 digit pertama angka yang terakhir berfungsi untuk
menentukan 10n, nilai n dapat dilihat pada tabel dibawah.
2.4.4 Resistor
Resistor komponen pasif elektronika yang berfungsi untuk membatasi arus listrik yang
mengalir. Berdasarkan kelasnya resistor dibagi menjadi 2 yaitu : Fixed Resistor dan Variable
R esistor Dan umumnya terbuat dari carbon film atau metal film, tetapi tidak menutup
Pada dasarnya semua bahan memiliki sifat resistif namun beberapa bahan tembaga
perak emas dan bahan metal umumnya memiliki resistansi yang sangat kecil. Bahan–
bahan tersebut menghantar arus listrik dengan baik, sehingga dinamakan konduktor.
Kebalikan dari bahan yang konduktif, bahan material seperti karet, gelas, karbon
memiliki resistansi yang lebih besar menahan aliran elektron dan disebut sebagai
2.5.1 Pendahuluan
Sensor suhu LM35 adalah komponen elektronika yang memiliki fungsi untuk
mengubah besaran suhu menjadi besaran listrik dalam bentuk tegangan. Sensor Suhu LM35
yang dipakai dalam penelitian ini berupa komponen elektronika elektronika yang diproduksi
oleh National Semiconductor. LM35 memiliki keakuratan tinggi dan kemudahan
perancangan jika dibandingkan dengan sensor suhu yang lain, LM35 juga mempunyai
keluaran impedansi yang rendah dan linieritas yang tinggi sehingga dapat dengan mudah
dihubungkan dengan rangkaian kendali khusus serta tidak memerlukan penyetelan lanjutan.
Meskipun tegangan sensor ini dapat mencapai 30 volt akan tetapi yang diberikan ke
sensor adalah sebesar 5 volt, sehingga dapat digunakan dengan catu daya tunggal dengan
ketentuan bahwa LM35 hanya membutuhkan arus sebesar 60 µA hal ini berarti LM35
mempunyai kemampuan menghasilkan panas (self-heating) dari sensor yang dapat
menyebabkan kesalahan pembacaan yang rendah yaitu kurang dari 0,5 ºC pada suhu 25 ºC
2.5.2 Struktur Sensor LM35
VLM35 = Suhu* 10 mV
Gambar diatas kanan adalah gambar skematik rangkaian dasar sensor suhu LM35-DZ.
Rangkaian ini sangat sedeCrhana dan praktis. Vout adalah tegangan keluaran sensor yang
terskala linear terhadap suhu terukur, yakni 10 milivolt per 1 derajad celcius. Jadi jika Vout =
530mV, maka suhu terukur adalah 53 derajat [Link] jika Vout = 320mV, maka suhu
terukur adalah 32 derajad Celcius. Tegangan keluaran ini bisa langsung diumpankan sebagai
masukan ke rangkaian pengkondisi sinyal seperti rangkaian penguat operasional dan
rangkaian filter, atau rangkaian lain seperti rangkaian pembanding tegangan dan rangkaian
Analog-to-Digital Converter.
Rangkaian dasar tersebut cukup untuk sekedar bereksperimen atau untuk aplikasi
yang tidak memerlukan akurasi pengukuran yang sempurna. Akan tetapi tidak untuk aplikasi
yang sesungguhnya. Terbukti dari eksperimen yang telah saya lakukan, tegangan keluaran
1. Memiliki sensitivitas suhu, dengan faktor skala linier antara tegangan dan suhu 10
mVolt/ºC, sehingga dapat dikalibrasi langsung dalam celcius.
2. Memiliki ketepatan atau akurasi kalibrasi yaitu 0,5ºC pada suhu 25 ºC seperti terlihat pada
gambar 2.2.
3. Memiliki jangkauan maksimal operasi suhu antara -55 ºC sampai +150 ºC.
4. Bekerja pada tegangan 4 sampai 30 volt.
5. Memiliki arus rendah yaitu kurang dari 60 µA.
6. Memiliki pemanasan sendiri yang rendah (low-heating) yaitu kurang dari 0,1 ºC pada
udara diam.
7. Memiliki impedansi keluaran yang rendah yaitu 0,1 W untuk beban 1 mA.
8. Memiliki ketidaklinieran hanya sekitar ± ¼ ºC.
Sensor LM35 bekerja dengan mengubah besaran suhu menjadi besaran tegangan.
Tegangan ideal yang keluar dari LM35 mempunyai perbandingan 100°C setara dengan 1
volt. Sensor ini mempunyai pemanasan diri (self heating) kurang dari 0,1°C, dapat
dioperasikan dengan menggunakan power supply tunggal dan dapat dihubungkan antar muka
(interface) rangkaian control yang sangat mudah.
IC LM 35 sebagai sensor suhu yang teliti dan terkemas dalam bentuk Integrated Circuit
(IC), dimana output tegangan keluaran sangat linear terhadap perubahan suhu. Sensor ini
berfungsi sebagai pegubah dari besaran fisis suhu ke besaran tegangan yang memiliki
koefisien sebesar 10 mV /°C yang berarti bahwa kenaikan suhu 1° C maka akan terjadi
kenaikan tegangan sebesar 10 mV.
Untuk mendeteksi suhu digunakan sebuah sensor suhu LM35 yang dapat
dikalibrasikan langsung dalam C (celcius), LM35 ini difungsikan sebagai basic temperature
sensor.
Adapun keistimewaan dari IC LM 35 adalah :
• Kalibrasi dalam satuan derajat celcius.
• Lineritas +10 mV/ º C.
• Akurasi 0,5 º C pada suhu ruang.
• Range +2 º C – 150 º C.
• Dioperasikan pada catu daya 4 V – 30 V.
• Arus yang mengalir kurang dari 60 μA
LM35DZ adalah komponen sensor suhu berukuran kecil seperti transistor (TO-92).
Komponen yang sangat mudah digunakan ini mampu mengukur suhu hingga 100 derajat
Celcius. Dengan tegangan keluaran yang terskala linear dengan suhu terukur, yakni 10
milivolt per 1 derajat Celcius, maka komponen ini sangat cocok untuk digunakan sebagai
teman eksperimen kita, atau bahkan untuk aplikasi-aplikasi seperti termometer ruang digital,
mesin pasteurisasi, atau termometer badan digital.
LM35 dapat disuplai dengan tegangan mulai 4V-30V DC dengan arus pengurasan 60
mikroampere, memiliki tingkat efek self-heating yang rendah (0,08 derajat Celcius),
self-heating adalah efek pemanasan oleh komponen itu sendiri akibat adanya arus yang
bekerja melewatinya. Untuk komponen sensor suhu, parameter ini harus dipertimbangkan
dan diupakara atau di-handle dengan baik karena hal ini dapat menyebabkan kesalahan
pengukuran. Seperti sensor suhu jenis RTD PT100 atau PT1000 misalnya, komponen ini
tidak boleh dieksitasi oleh arus melebihi 1 miliampere, jika melebihi, maka sensor akan
mengalami self-heating yang menyebabkan hasil pengukuran senantiasa lebih tinggi
dibandingkan suhu yang sebenarnya. Gambar itu adalah gambar skematik rangkaian dasar
sensor suhu LM35-DZ. Rangkaian ini sangat sederhana dan praktis. Vout adalah tegangan
keluaran sensor yang terskala linear terhadap suhu terukur, yakni 10 milivolt per 1 derajad
celcius. Jadi jika Vout = 530mV, maka suhu terukur adalah 53 derajad [Link] jika Vout
= 320mV, maka suhu terukur adalah 32 derajad Celcius. Tegangan keluaran ini bisa langsung
diumpankan sebagai masukan ke rangkaian pengkondisi sinyal seperti rangkaian penguat
Rangkaian dasar tersebut cukup untuk sekedar bereksperimen atau untuk aplikasi yang tidak
memerlukan akurasi pengukuran yang sempurna. Akan tetapi tidak untuk aplikasi yang
sesungguhnya. Terbukti dari eksperimen yang telah saya lakukan, tegangan keluaran sensor
belumlah stabil. Pada kondisi suhu yang relatif sama, jika tegangan suplai saya ubah-ubah
(saya naikkan atau turunkan), maka Vout juga ikut berubah. Memang secara logika hal ini
sepertinya benar, tapi untuk instrumentasi hal ini tidaklah diperkenankan. Dibandingkan
dengan tingkat kepresisian, maka tingkat akurasi alat ukur lebih utama karena alat ukur
seyogyanya dapat dijadikan patokan bagi penggunanya. Jika nilainya berubah-ubah untuk
kondisi yang relatif tidak ada perubahan, maka alat ukur yang demikian ini tidak dapat
digunakan.
Secara prinsip sensor akan melakukan penginderaan pada saat perubahan suhu setiap
suhu 1 ºC akan menunjukan tegangan sebesar 10 mV. Pada penempatannya LM35 dapat
ditempelkan dengan perekat atau dapat pula disemen pada permukaan akan tetapi suhunya
akan sedikit berkurang sekitar 0,01 ºC karena terserap pada suhu permukaan tersebut. Dengan
cara seperti ini diharapkan selisih antara suhu udara dan suhu permukaan dapat dideteksi oleh
Jarak yang jauh diperlukan penghubung yang tidak terpengaruh oleh interferensi dari
luar, dengan demikian digunakan kabel selubung yang ditanahkan sehingga dapat bertindak
sebagai suatu antenna penerima dan simpangan didalamnya, juga dapat bertindak sebagai
perata arus yang mengkoreksi pada kasus yang sedemikian, dengan mengunakan metode
bypass kapasitor dari Vin untuk ditanahkan.
Vout=10 mV/oC
Tiap perubahan 1oC akan menghasilkan perubahan tegangan output sebesar 10mV
• Kelebihan:
a. Rentang suhu yang jauh, antara -55 sampai +150 oC
b. Low self-heating, sebesar 0.08 oC
c. Beroperasi pada tegangan 4 sampai 30 V
d. Rangkaian tidak rumit
e. Tidak memerlukan pengkondisian sinyal
• Kekurangan:
Membutuhkan sumber tegangan untuk beroperasi