A. Mikrokontroler ATMEGA16
Mikrokontroler adalah sebuah sistem komputer lengkap dalam satu serpih (chip). Mikrokontroler lebih dari sekedar sebuah mikroprosesor karena sudah terdapat atau berisikan ROM (Read-Only Memory), RAM (Read-Write Memory), beberapa bandar masukan maupun keluaran, dan beberapa peripheral seperti pencacah/pewaktu, ADC (Analog to Digital converter), DAC (Digital to Analog converter) dan serial komunikasi.
Salah satu mikrokontroler yang banyak digunakan saat ini yaitu mikrokontroler AVR. AVR adalah mikrokontroler RISC (Reduce Instuction Set Compute) 8 bit berdasarkan arsitektur Harvard. Secara umum mikrokontroler AVR dapat dapat dikelompokkan menjadi 3 kelompok, yaitu keluarga AT90Sxx, ATMega dan ATtiny. Pada dasarnya yang membedakan masing-masing kelas adalah memori, peripheral, dan fiturnya
Seperti mikroprosesor pada umumnya, secara internal mikrokontrolerATMega16 terdiri atas unit-unit fungsionalnya Arithmetic and Logical Unit (ALU), himpunan register kerja, register dan dekoder instruksi, dan pewaktu beserta komponen kendali lainnya. Berbeda dengan mikroprosesor, mikrokontroler menyediakan memori dalam serpih yang sama dengen prosesornya (in chip).
B. Arsitektur ATMEGA16
Mikrokontroler ini menggunakan arsitektur Harvard yang memisahkan memori program dari memori data, baik bus alamat maupun bus data, sehingga pengaksesan program dan data dapat dilakukan secara bersamaan (concurrent).
Secara garis besar mikrokontroler ATMega16 terdiri dari :
1. Arsitektur RISC dengan throughput mencapai 16 MIPS pada frekuensi 16Mhz.
2. Saluran I/O 32 buah, yaitu Bandar A, Bandar B, Bandar C, dan Bandar D.
3. CPU yang terdiri dari 32 buah register.
2. User interupsi internal dan eksternal
3. Bandar antarmuka SPI dan Bandar USART sebagai komunikasi serial
4. Fitur Peripheral
• Dua buah 8-bit timer/counter dengan prescaler terpisah dan mode compare
• Satu buah 16-bit timer/counter dengan prescaler terpisah, mode compare, dan
mode capture
• Real time counter dengan osilator tersendiri
• Empat kanal PWM dan Antarmuka komparator analog
• 8 kanal, 10 bit ADC
• Byte-oriented Two-wire Serial Interface
• Watchdog timer dengan osilator internal
C. DESKRIPSI MIKROKONTROLER ATMEGA16
• VCC (Power Supply) dan GND(Ground)
• Bandar A (PA7..PA0)
Bandar A berfungsi sebagai input analog pada konverter A/D. Bandar A juga sebagai suatu bandar I/O 8-bit dua arah, jika A/D konverter tidak digunakan. Pena - pena Bandar dapat menyediakan resistor internal pull-up (yang dipilih untuk masing-masing bit). Bandar A output buffer mempunyai karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan sumber. Ketika pena PA0 ke PA7 digunakan sebagai input dan secara eksternal ditarik rendah, pena–pena akan memungkinkan arus sumber jika resistor internal pull-up diaktifkan. Pena Bandar A adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
• Bandar B (PB7..PB0)
Bandar B adalah suatu bandar I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). Bandar B output buffer mempunyai karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pena Bandar B yang secara eksternal ditarik rendah akan arus sumber jika resistor pull-up diaktifkan. Pena Bandar B adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
• Bandar C (PC7..PC0)
Bandar C adalah suatu bandar I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). Bandar C output buffer mempunyai karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pena bandar C yang secara eksternal ditarik rendah akan arus sumber jika resistor pull-up diaktifkan. Pena bandar C adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
• Bandar D (PD7..PD0)
Bandar D adalah suatu bandar I/O 8-bit dua arah dengan resistor internal pull-up (yang dipilih untuk beberapa bit). Bandar D output buffer mempunyai karakteristik gerakan simetris dengan keduanya sink tinggi dan kemampuan sumber. Sebagai input, pena bandar D yang secara eksternal ditarik rendah akan
arus sumber jika resistor pull-up diaktifkan. Pena Bandar D adalah tri-stated manakala suatu kondisi reset menjadi aktif, sekalipun waktu habis.
• AVCC adalah pena penyedia tegangan untuk bandar A dan Konverter A/D.
• AREF adalah pena referensi analog untuk konverter A/D.
D. Memori Program
Arsitektur ATMega16 mempunyai dua memori utama, yaitu memori data dan memori program. Selain itu, ATMega16 memiliki memori EEPROM untuk menyimpan data. ATMega16 memiliki 16K byte On-chip In-System Reprogrammable Flash Memory untuk menyimpan program. Instruksi ATMega16 semuanya memiliki format 16 atau 32 bit, maka memori flash diatur dalam 8K x 16 bit. Memori flash dibagi kedalam dua bagian, yaitu bagian program boot dan aplikasi. Bootloader adalah program kecil yang bekerja pada saat sistem dimulai yang dapat memasukkan seluruh program aplikasi ke dalam memori prosesor.
E. LCD
LCD (Liquid Crystal Display) adalah modul penampil yang banyak digunakan karena tampilannya menarik. LCD yang paling banyak digunakan saat ini ialah LCD M1632 refurbish karena harganya cukup murah. LCD M1632 merupakan modul LCD dengan tampilan 2x16 (2 baris x 16 kolom) dengan konsumsi daya rendah. Modul tersebut dilengkapi dengan mikrokontroler yang didesain khusus untuk mengendalikan LCD.
LCD yang umum, ada yang panjangnya hingga 40 karakter (2x40 dan 4x40), dimana kita menggunakan DDRAM untuk mengatur tempat penyimpanan karakter tersebut.
F. Susunan Alamat Pada LCD
Alamat awal karakter 00H dan alamat akhir 39H. Jadi, alamat awal di baris kedua dimulai dari 40H. Jika Anda ingin meletakkan suatu karakter pada baris ke-2 kolom pertama, maka harus diset pada alamat 40H. Jadi, meskipun LCD yang digunakan 2x16 atau 2x24, atau bahkan 2x40, maka penulisan programnya sama saja.
CGRAM merupakan memori untuk menggambarkan pola sebuah karakter, dimana bentuk dari karakter dapat diubah-ubah sesuai dengan keinginan. Namun, memori akan hilang saat power supply tidak aktif sehingga pola karakter akan hilang. Berikut tabel pin untuk LCD M1632. Perbedaannya dengan LCD standar adalah pada kaki 1 VCC, dan kaki 2 Gnd. Ini kebalikan dengan LCD standar.
Perlu
diketahui, driver LCD seperti HD44780 memiliki dua register yang
aksesnya diatur menggunakan pin RS. Pada saat RS berlogika 0, register
yang diakses adalah perintah, sedangkan pada saat RS berlogika 1,
register yang diakses adalah register data.
Agar
dapat mengaktifkan LCD, proses inisialisasi harus dilakukan dengan cara
mengeset bit RS dan meng-clear-kan bit E dengan delay minimal 15 ms.
Kemudian mengirimkan data 30H dan ditunda lagi selama 5 ms. Proses ini
harus dilakukan tiga kali, lalu mengirim inisial 20H dan interface data
length dengan lebar 4 bit saja (28H). Setelah itu display dimatikan
(08H) dan di-clear-kan (01H). Selanjutnya dilakukan pengesetan display
dan cursor, serta blinking apakah ON atau OFF.
G. CONTOH PERENCANAAN DAN REALISASI
Spesifikasi Alat
Berikut ini adalah spesifikasi dari sistem yang akan direalisasikan :
1. Tegangan Operasional Sistem : 12VDC
2. Sumber : Adaptor
3. Mikrokontroler : ATMEGA16
4. Output : Layar LCD
5. Range Berat : 0 – 50 Kg
Diagram Blok Sistem Kontrol Alat Bantu Penyebrangan
Minsis
ATMEGA16 berfungsi sebagai pengendali utama untuk mengendalikan system
secara keseluruhan. Ketika potensiometer berubah posisinya, maka
masukan input dari ADC internal yang di miliki Atmega16 juga berubah
yang menyebabkan perubahan nilai berat yang ditampilkan LCD.
Potensiomter berfungsi untuk menentukan nilai berat yang akan
ditampilkan oleh LCD
Cara kerja Rangkaian
Jenis timbangan yang digunakan adalah jenis timbangan pegas. Timbangan berfungsi sebagai alat pokok dalam sistem ini. Di dalam timbangan ini dipasang sebuah potensiometer geser.
Ketika timbangan mendapatkan beban, jarum yang ada di timbangan akan
berputar dan mengubah resistansi pada potensiometer. Karena adanya
perubahan pada resistansi, berubah pula tegangan yang di berikan ke AVR
Atmega 16. Di dalam AVR sudah terintegrasi rangkaian ADC yang mengubah
data analog menjadi data digital yang nantinya bisa di program di dalam
AVR. Output dari AVR masuk ke dalam LCD. Nilai berat yang diterima
ditampilkan oleh LCD.
G. CONTOH PERANCANGAN HARDWARE
3 Timbangan dan Potensiometer
Jenis timbangan yang digunakan adalah jenis timbangan pegas yang dapat menimbang hingga berat maksimal 30
kg. Timbangan berfungsi sebagai alat pokok dalam sistem ini. Di dalam
timbangan ini dipasang sebuah potensiometer geser yang biasa digunakan
untuk equalizer pada sebuah pemutar audio seperti tape, radio dan
lain-lain. Potensiometer dipasang secara permanen yang apabila timbangan
diberi beban maka pegas akan menurun dan ikut menggerakan potensiometer
tersebut. Semakin berat beban yang diberikan semakin besar hambatan
yang dihasilkan oleh potensiometer.
Mikrokontroler
Minimum system yang ingin digunakan adalah berupa modul mikrokontroler AT8MEGA16, mikrokontroler ini memiliki 4 Port, ( Port A sampai port D ), semuanya ada 40 pin input output
Gambar 3.1 Skematik Rangkaian
Tabel 3.2 Port – port yang ingin digunakan pada Modul ATMEGA16
Port
|
Fungsi
|
Keterangan
|
Port A
|
Input
|
Input dari Potensiometer
|
Port C.0 – C.7
|
Output
|
Inisial LCD
|
Foto Alat
H. CONTOH PERANCANGAN SOFTWARE
Flowchart Program
Sesuai
perancangan hardware, maka dapat dirancang flowchart program yang
sesuai dengan fungsi alat yang diinginkan, berikut gambar rancangan
flowchart program :
Listing Program
Dari
rancangan flowchart program diatas, dapat dirancang program seperti
yang diinginkan, berikut adalah listing program pada mikrokontroler
sesuai dengan rancangan flowchart :
#include
#include
#include
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include
#define
ms delay_ms
#define ADC_VREF_TYPE 0x40
unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}
int x,bar;
float berat;
char buf[33];
void baca_sensor(){
x=read_adc(0);
berat=(x-500)*1.3;
if (berat
berat=x*0 ;}
}
void display_sensor(){
lcd_gotoxy(0,0);lcd_putsf("Beratnya:");
lcd_gotoxy(0,1);sprintf(buf,"%0.0f kilogram",berat);lcd_puts(buf);
}
void opening(){
lcd_gotoxy(0,0);lcd_putsf("Author:");
ms(1000);
lcd_gotoxy(0,1);lcd_putsf("Zali");
ms(1000);
lcd_clear();
lcd_gotoxy(0,0);lcd_putsf("Loading");
for(bar=0;bar<=15;bar++){
lcd_gotoxy(bar,1);
lcd_putsf("\xFF");
lcd_gotoxy(5,0);
delay_ms(40);
}
ms(1000);
lcd_clear();
}
void main(void)
{
PORTA=0x00;
DDRA=0x00;
PORTB=0x00;
DDRB=0x00;
PORTD=0x1C;
DDRD=0xFF;
TCCR1A=0x81;
TCCR1B=0x0D;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;
lcd_init(16);
opening();
while (1)
{
baca_sensor();
display_sensor();
};
}
....................................................................................................................................................................
Ini adalah posting pertamaku tentang Mikrokontroler ATMEGA16, yang saya kutip dari http://ayo-baca-aja.blogspot.com/2012/01/timbangan-buah-digital-berbasis.html , guna memenuhi tugas dari Pak Fudin, guru master robotik di sekolahku. Em...tapi kayaknya nggak ini deh yang harusya aku posting. Gimana lagi udah terlanjur, harusnya itu penggunaan chip mikrokontroler ATMEGA16, tapi belum ketemu artikelnya. Ya sudahlah seadanya dulu, ntar ditambahi lagi yang bener.
Pengen deh rasanya sepintar beliau, pengen mahir utak atik and ikutan robotik tapi hehe......^_^
#ada deh pokoknya :P
Semoga bermanfaat.
^_^
Ghani Sana Absari/ XII TKJ2/14
ghanisana@ymail.com
Komentar
Posting Komentar