Pengertian Mikrokontroler
Mikrokontroler merupakan sebuah sistem komputer yang seluruh atau sebagian besar
elemennya dikemas dalam satu chip IC, sehingga sering disebut
single chip microcomputer. Lebih lanjut, mikrokontroler merupakan sistem komputer yang
mempunyai satu atau beberapa tugas yang sangat spesifik, berbeda dangan PC (Personal
Computer) yang memiliki beragam fungsi. Perbedaan lainnya adalah perbandingan RAM dan
ROM yang sangat berbeda antara komputer dengan mikrokontroler.
Mikrokontroler adalah sebuah system microprocessor dimana didalamnya sudah terdapat
CPU, ROM, RAM, I/O, Clock dan peralatan internal lainnya yang sudah saling terhubung dan
terorganisasi (teralamati) dengan baik oleh pabrik pembuatnya dan dikemas dalam satu chip
yang siap pakai. Sehingga kita tinggal memprogram isi ROM sesuai aturan penggunaan oleh
pabrik yang membuatnya menurut Winoto (2008:3).
Teknologi yang digunakan pada mikrokontroler AVR berbeda dengan mikrokontroler seri
MCS-51. AVR berteknologi RISC (Reduced Instruction Set Computer), sedangkan seri MCS-51
berteknologi CISC (Complex Instruction Set Computer). Mikrokontroler AVR dapat dikelompokkan
menjadi empat kelas, yaitu keluarga ATtiny, keluarga AT90Sxx, keluarga ATMega, dan keluarga
AT89RFxx. Pada dasarnya yang membedakan masing-masing kelas adalah memori, kelengkapan
periperal dan fungsi-fungsi tambahan yang dimiliki. Berikut ini penjelasan lebih lengkap
mengenai Mikrokontroler ATMega8535:
A. Mikrokontroler ATMega8535
ATMega8535 adalah mikrokontroler CMOS 8 bit daya rendah berbasis arsitektur RISC.
Instruksi dikerjakan pada satu siklus clock, ATMega8535 mempunyai throughput mendekati 1
MIPS per MHz, hal ini membuat ATMega8535 dapat bekerja dengan kecepatan tinggi walaupun
dengan penggunaan daya rendah. Mikrokontroler ATmega8535 memiliki beberapa fitur atau
spesifikasi yang menjadikannya sebuah solusi pengendali yang efektif untuk berbagai keperluan.
Fitur-fitur tersebut antara lain:
Saluran I/O sebanyak 32 buah, yang terdiri atas Port A, B, C dan D
ADC (Analog to Digital Converter)
Tiga buah Timer/Counter dengan kemampuan perbandingan
CPU yang terdiri atas 32 register
Watchdog Timer dengan osilator internal
SRAM sebesar 512 byte
Memori Flash sebesar 8kb dengan kemampuan read while write
Unit Interupsi Internal dan External
Port antarmuka SPI untuk men-download program ke flash
EEPROM sebesar 512 byte yang dapat diprogram saat operasi
Antarmuka komparator analog
Port USART untuk komunikasi serial.
GND Ground
Input reset level rendah, pada pin ini selama lebih dari panjang pulsa
minimum akan menghasilkan reset walaupun clock sedang berjalan.
RESET RST pada pin 9 merupakan reset dari AVR. Jika pada pin ini diberi
masukan low selama minimal 2 machine cycle maka sistem akan di-
reset
pin untuk analog ground. Hubungkan kaki ini ke GND, kecuali jika
AGND
board memiliki analog ground yang terpisah
Berikut ini adalah penjelasan dari pin mikrokontroler ATMega8535 menurut port-nya masing-
masing:
1. Port A
Pin33 sampai dengan pin 40 merupakan pin dari port A. Merupakan 8 bit directional port
I/O. Setiap pin-nya 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 di-setting terlebih dahulu sebelum port A
digunakan. Bit-bit DDRA diisi 0 jika ingin memfungsikan pin-pin port A yang disesuaikan sebagai
input, atau diisi 1 jika sebagai output. Selain itu, pin-pin pada port A juga memiliki fungsi-fungsi
alternatif khusus seperti yang dapat dilihat dalam tabel:
Tabel Penjelasan pin pada port A
Pin Keterangan
Pin Keterangan
3. Port C
Pin 22 sampai dengan pin 29 merupakan pin dari port C. Port C sendiri merupakan port
input atau output. Setiap pin-nya 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 di-setting terlebih dahulu sebelum port
C digunakan. Bit-bit DDRC diisi 0 jika ingin memfungsikan pin-pin port C yang disesuaikan
sebagai input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki fungsi-
fungsi alternatif khusus seperti yang dapat dilihat dalam tabel II.6:
Tabel Penjelasan pin pada port C
Pin Keterangan
4. Port D
Pin 14 sampai dengan pin 20 merupakan pin dari port D. Merupakan 8 bit directional port
I/O. Setiap pin-nya 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 di-setting terlebih dahulu sebelum port D
digunakan. Bit-bit DDRD diisi 0 jika ingin memfungsikan pin-pin port D yang disesuaikan sebagai
input, atau diisi 1 jika sebagai output. Selain itu, pin-pin port D juga memiliki fungsi-fungsi
alternatif khusus seperti yang dapat dilihat dalam tabel:
Tabel Penjelasan pin pada port D
Pin Keterangan
Converter
Alat bantu digital yang paling penting untuk teknologi kontrol proses adalah yang
menerjemahkan informasi digital ke bentuk analog dan juga sebaliknya. Sebagian besar
pengukuran variabel-variabel dinamik dilakukan oleh piranti ini yang menerjemahkan
informasi mengenai vaiabel ke bentuk sinyal listrik analog. Untuk menghubungkan sinyal ini
dengan sebuah komputer atau rangkaian logika digital, sangat perlu untuk terlebih dahulu
melakukan konversi analog ke digital (A/D). Hal-hal mengenai konversi ini harus diketahui
sehingga ada keunikan, hubungan khusus antara sinyal analog dan digital.
Analog To Digital Converter (ADC) adalah pengubah input analog menjadi kode kode
digital. ADC banyak digunakan sebagai Pengatur proses industri, komunikasi digital dan
rangkaian pengukuran/ pengujian. Umumnya ADC digunakan sebagai perantara antara sensor
yang kebanyakan analog dengan sistim komputer seperti sensor suhu, cahaya, tekanan/ berat,
aliran dan sebagainya kemudian diukur dengan menggunakan sistim digital (komputer).
ADC (Analog to Digital Converter) memiliki 2 karakter prinsip, yaitu kecepatan sampling dan
resolusi.
Resolusi ADC
Resolusi ADC menentukan ketelitian nilai hasil konversi ADC. Sebagai contoh: ADC 8
bit akan memiliki output 8 bit data digital, ini berarti sinyal input dapat dinyatakan dalam 255
(2n 1) nilai diskrit. ADC 12 bit memiliki 12 bit output data digital, ini berarti sinyal input
dapat dinyatakan dalam 4096 nilai diskrit. Dari contoh diatas ADC 12 bit akan memberikan
ketelitian nilai hasil konversi yang jauh lebih baik daripada ADC 8 bit.
Prinsip kerja ADC adalah mengkonversi sinyal analog ke dalam bentuk besaran yang
merupakan rasio perbandingan sinyal input dan tegangan referensi. Sebagai contoh, bila tegangan
referensi 5 volt, tegangan input 3 volt, rasio input terhadap referensi adalah 60%. Jadi, jika
menggunakan ADC 8 bit dengan skala maksimum 255, akan didapatkan sinyal digital sebesar 60%
x 255 = 153 (bentuk decimal) atau 10011001 (bentuk biner).
Komparator ADC
Bentuk komunikasi yang paling mendasar antara wujud digital dan analog adalah piranti
(biasanya berupa IC) disebut komparator. Piranti ini, yang diperlihatkan secara skematik pada
gambar dibawah, secara sederhana membandingkan dua tegangan pada kedua terminal inputnya.
Bergantung pada tegangan mana yang lebih besar, outputnya akan berupa sinyal digital 1 (high)
atau 0 (low). Komparator ini digunakan secara luas untuk sinyal alarm ke komputer atau sistem
pemroses digital. Elemen ini juga merupakan satu bagian dengan konverter analog ke digital dan
digital ke analog yang akan didiskusikan nanti.
Gambar diatas memperlihatkan sebuah komparator merubah keadaan logika output sesuai fungsi
tegangan input analog. Sebuah komparator dapat tersusun dari sebuah opamp yang memberikan
output terpotong untuk menghasilkan level yang diinginkan untuk kondisi logika (+5 dan 0 untuk
TTL 1 dan 0). Komparator komersil didesain untuk memiliki level logika yang dperlukan pada
bagian outputnya.
Jenis-Jenis ADC (Analog to Digital Converter)
ADC Simultan
ADC Simultan atau biasa disebut flash converter atau parallel converter. Input analog Vi
yang akan diubah ke bentuk digital diberikan secara simultan pada sisi + pada komparator tersebut,
dan input pada sisi tergantung pada ukuran bit converter. Ketika Vi melebihi tegangan input
dari suatu komparator, maka output komparator adalah high, sebaliknya akan memberikan output
low.
ADC Simultan
Bila Vref diset pada nilai 5 Volt, maka dari gambar 3 dapat didapatkan :
Misal :
Vin diberi sinyal analog 3 Volt, maka output dari C7=0, C6=0, C5=0, C4=1, C3=1, C2=1,
C1=1, sehingga didapatkan output ADC yaitu 100 biner
Ada beberapa konsep dasar dari ADC adalah dengan cara Counter Ramp ADC, Successive
Aproximation ADC dan lain sebagainya.
Misal akan dikonversi tegangan analog 2 volt, dengan mengasumsikan counter reset,
sehingga keluaran pada DAC juga 0 volt. Apabila konversi dimulai maka counter akan naik dari
0000 ke 0001 karena mendapatkan pulsa masuk dari Clock oscillator dimana saat itu keluaran
Comparator = 1, karena mendapatkan kombinasi biner dari counter 0001 maka tegangan keluaran
DAC naik dan dibandingkan lagi dengan tegangan masukan demikian seterusnya nilai counter
naik dan keluaran tegangan DAC juga naik hingga suatu saat tegangan masukan dan tegangan
keluaran DAC sama yang mengakibatkan keluaran komparator = 0 dan Clock tidak dapat masuk.
Nilai counter saat itulah yang merupakan hasil konversi dari analog yang dimasukkan.
Kelemahan dari counter tersebut adalah lama, karena harus melakukan trace mulai dari
0000 hingga mencapai tegangan yang sama sehingga butuh waktu.
Untuk mempermudah pengertian dari metode ini diberikan contoh seperti pada timing
diagram gambar 6 Misal diberi tegangan analog input sebesar 6,84 volt dan tegangan referensi
ADC 10 volt sehingga apabila keluaran tegangan sbb :
Setelah diberikan sinyal start maka konversi dimulai dengan memberikan kombinasi 1000
0000 ternyata menghasilakan tegangan 5 volt dimana masih kurang dari tegangan input 6,84 volt,
kombinasi berubah menjadi 1100 0000 sehingga Vout = 7,5 volt dan ternyata lebih besar dari 6,84
sehingga kombinasi menjadi 1010 0000 tegangan Vout = 6,25 volt kombinasi naik lagi 1011 0000
demikian seterusnya hingga mencapai tegangan 6,8359 volt dan membutuhkan hanya 8 clock.
Uraian diatas merupakan konsep dasar dari ADC (Analog to Digital Converter), untuk
pengembangan atau aplikasi ADC dan ADC dalam bentuk lain akan ditulis dalam artikel berbeda
dengan tujuan dapat memberikan penjelasan yang lebih lengkap dari ADC (Analog to Digital
Converter).
TUJUAN
1 set PC/Laptop yang sudah berisi program Code Vision dan Khazama
1 buah catu daya DC +5V
1 buah multimeter
1 buah ISP Downloader AVR
1 buah sistem minimum AVR
1 buah I/O
1 buah kabel printer USB
1 buah kabel pita hitam
1 buah potensiometer
PROSEDUR
1. Rangkailah peralatan yang diperlukan seperti dalam Gambar diatas. Hubungkan soket jumper
PORTC pada minimum system dengan soket jumper pada OUTPUT LED. Vout pada rangkaian
potensiometer dihubungkan pada PORTA.0 (ADC channel 0).
Potensio
meter
7. Program berikut merupakan deklarasi variabel hasil konversi ADC. Tuliskan variabel berikut di luar
program utama.
8. Buatlah program utama dan inisialisasikan PORT C sebagai output dengan kondisi awal LOW.
11. Tuliskan program berikut dalam program utama tepatnya di dalam while(1).
12. Compile dan Build program jika ada yang error perbaiki program. Masukkan file hex menggunakan
Khanzama AVR Programer. Klik auto program.
13. Hubungkan output potensiometer pada PORTA.0.
14. Ukur tegangan potensiometer (kaki tengah) sebesar 0-5V (sesuai tabel).
15. Lepas probe AVO Meter lalu perhatikan dan catat nyala LED dan konversi nilai dalam desimal.
16. Hitung perhitungan nilai digital dalam desimal dengan rumus berikut:
Vdigital = Vukur / Vcc *255
Contoh: misal tegangan analog yang diukur 1 V, maka tegangan digital adalah:
V = 1/5 *255 = 51 desimal, atau 33H atau 00110011B
DATA HASIL PERCOBAAN
Tabel ADC
Tegangan Tampilan LED Nilai digital Nilai digital
No
analog (0-5V) (bit7-bit0) LED (decimal) perhitungan (desimal)
1 0 00000000 0 0
2 0.5 00011011 27 27
3 1 00110111 55 54
4 1.5 01010001 81 81
5 2 01101111 111 109
6 2.5 10000111 135 136
7 3 10100001 161 163
8 3.5 10111101 189 190
9 4 11011001 219 217
10 4.5 11110011 243 244
11 4.7 11111111 255 255
ANALISIS
Program 1
Pada praktikum kali ini kelompok kami mempraktikkan mikrokontroller dengan sumber
input ADC dan output menggunakan LED 8bit. Yang pertama kita akan membuat program
unntuk input ADC dan output LED 8bit, dari output 8bit LED ini kita akan mengetahui nilai
digital dari ADC. Kita menggunakan ADC dalam mikrokontroller untuk merubah nilai analog
dari sensor menjadi nilai digital yang dapat dilihat nilainya dengan mata manusia.
Dalam membuat program pertama-tama kita harus melakukan inisialisasi terlebih dahulu
#include <mega8535.h>
#include <delay.h>
#define ADC_VREF_TYPE 0x60; type header ini menggunakan Vref artinya kita bisa memasukkan
tegangan Vref yang diinginkan fungsi dari Vref adalah sebagai perscaler dari tiap-tiap data. Maksudnya
tingkatan perubahan yang terjadi setiap data masukan ADC dari nilai satu ke nilai yang lainnya.
sehingga makin kecil perscaler makan akan lebih kelihatan perubahan yang terjdi, dan makin presisi.
untuk 0x06 maksudnya adalah berdasarkan register dari ADC itu sendiri. disetting untuk menentukan
nilai REFS1 dan REFS2 dapat diatur berdasarkan tabel datasheet.
Selanjutnya membuat program baca ADC. Fungsi program ini adalah melakukan pembacaan
ADC berdasarkan pin masukan ADC, program ini harus ada setiap melakukan pembacaan ADC.
ADMUX=adc_input | (ADC_VREF_TYPE&0xFF);
delay_us(10);
ADCSRA|=0x40;
ADCSRA|=0x10;
return ADCH;
langkah ketiga:
pada main program kita akan memangil inisialisasi ADC dengan:
PORTC=0x00;
DDRC=0xFF;
ADCSRA=0xA7;
SFIOR&=0x0F;
dimana ADMUX akan diisi dengan 0x60 berdasarkan setingan register awal tadi.
selanjutnya menjalankan program ADC pada main program:
while(1)
{
adcdt=read_adc(0);
PORTC=adcdt;
}
dapat dilihat read_adc akan memanggil pin ADC 0 nol sebagai masukan tegangan, yang
kemudian di tampilkan dalam bentuk biner pada PORTB. Program diatas harus dilakukan
pengulangan secara terus menerus while(1).
Analisis Tabel
1. Bila tegangan analog bernilai 0 maka tampilan LED adalah 00000000, lalu diubah menjadi
nilai digital LED (desimal) adalah 0. Dari hasil perhitungan nilai digital (desimal) adalah 0.
2. Bila tegangan analog bernilai 0,5 maka tampilan LED adalah 00011011, lalu diubah
menjadi nilai digital LED (desimal) adalah 27. Dari hasil perhitungan nilai digital (desimal)
adalah 27.
3. Bila tegangan analog bernilai 1 maka tampilan LED adalah 00110111, lalu diubah menjadi
nilai digital LED (desimal) adalah 55. Dari hasil perhitungan nilai digital (desimal) adalah 54.
4. Bila tegangan analog bernilai 1,5 maka tampilan LED adalah 01010001, lalu diubah
menjadi nilai digital LED (desimal) adalah 81. Dari hasil perhitungan nilai digital (desimal)
adalah 81.
5. Bila tegangan analog bernilai 2 maka tampilan LED adalah 01101111, lalu diubah menjadi
nilai digital LED (desimal) adalah 111. Dari hasil perhitungan nilai digital (desimal) adalah
109.
6. Bila tegangan analog bernilai 2,5 maka tampilan LED adalah 10000111, lalu diubah
menjadi nilai digital LED (desimal) adalah 135. Dari hasil perhitungan nilai digital (desimal)
adalah 136.
7. Bila tegangan analog bernilai 3 maka tampilan LED adalah 10100001, lalu diubah menjadi
nilai digital LED (desimal) adalah 161. Dari hasil perhitungan nilai digital (desimal) adalah
163.
8. Bila tegangan analog bernilai 3,5 maka tampilan LED adalah 10111101, lalu diubah
menjadi nilai digital LED (desimal) adalah 189. Dari hasil perhitungan nilai digital (desimal)
adalah 190.
9. Bila tegangan analog bernilai 4 maka tampilan LED adalah 11011001, lalu diubah menjadi
nilai digital LED (desimal) adalah 219. Dari hasil perhitungan nilai digital (desimal) adalah
217.
10. Bila tegangan analog bernilai 4,5 maka tampilan LED adalah 11110011, lalu diubah
menjadi nilai digital LED (desimal) adalah 243. Dari hasil perhitungan nilai digital (desimal)
adalah 244.
11. Bila tegangan analog bernilai 4,7 maka tampilan LED adalah 11111111, lalu diubah
menjadi nilai digital LED (desimal) adalah 255. Dari hasil perhitungan nilai digital (desimal)
adalah 255.
KESIMPULAN
1. Perbedaan (selisih) yang terjadi dari data hasil output LED dan hasil perhitungan
dikarenakan adanya human error (kesalahan manusia). Seperti halnya sewaktu mengatur
output potensiometer yang seharusnya 5 volt tepat, tapi sulit untuk melakukan hal tersebut.
Maka adapun kurang dan lebihnya dari 5 volt yang 1 angka di belakang koma biasanya
diabaikan, namun akan berdampak pada pembacaan mikrokontroller karena mikrokontroller
bisa menghitung dengan lebih detail.
2. Perbedaan putsf dan puts adalah bila putsf dapat mengubah dalam data saat program
berjalan, sedangkan puts pada saat program berjalan tidak dapat merubah data tersebut.
3. Ketelitian pada konversi sinyal analog ke digital dipengaruhi oleh jumlah bit yang
digunakan, jika semakin banyak bit maka akan semakin akurat pula proses pada konversinya.
LAMPIRAN
TEGANGAN
FOTO PRAKTIKUM SIMULASI
ANALOG
0 VOLT
0,5 VOLT
1 VOLT
1,5 VOLT
2 VOLT
2,5 VOLT
3 VOLT
3,5 VOLT
4 VOLT
4,5 VOLT
4,7 VOLT
SYNTAX PROGRAM