You are on page 1of 18
PANDUAN PRAKTIS MIKROKONTROLER KELUARGA AVR MENGGUNAKAN DT-COMBO AVR-51 STARTER KIT DAN DT-COMBO AVR EXERCISE KIT PANDUAN PRAKTIS MIKROKONTROLER KELUARGA AVR MENGGUNAKAN DT-COMBO AVR-51 STARTER KIT DAN DT-COMBO AVR EXERCISE KIT Didik Wiyono, S.T. ©2007, Innovative Electronics Tak Cipta dilindungi undang-undang Sampul & Tata Letak : Gersom Sutedjo, S.T. Diterbitkan pertama kali oleh Innovelive Electronics, Surabaya 2007 Website : www.innovativeclectronies. Semua pertanyaan tentang produk ini dapat dikirimkan melalui e-mail ke: support@innovativeclectronics.com Dilarang mengutip, memfovokopi, atau memperbanyak sebagian atau seluruh isi buku ini tanpa izin tertulis dari penerbit. AVR adalah merk dagang terdaftar dari Atmel Corporation. CodeVision AVR adalah hak cipta dari Pavel Haidue, ITP InfoTech s.r. Windows adalah merk dagang terdaftar dari Microsoft Corporation. MCS-51 adalah merk dageng terdaftar dari Intel Corporation KATA PENGANTAR Puji Syukur kepada Tuhan Yang Maha Kuasa atas berkat yang telah diberikanNya dalam penyusunan Panduan Praktis Mikrokontroler Keluarga AVR ini. Terima kasih juga kepada semua pihak yang telah membantu baik secara langsung maupun tidak. Panduan Praktis Mikrokontroler Keluarga AVR ini digunakan berdampingan dengan DT-COMBO AVR-51 Starier Kit dan DT-COMBO AVR Exercise Kit, Panduan ini mengandung beberapa bagian bahasan mengenai fitur-fitur yang dimiliki mikrokontroler AVR®. Masing-masing bagian akan dijelaskan sccara singkat dan disertai dengan contoh program dan soal latihan yang menggunakan CodeVisionAVR® yang berjalan pada sistem opcrasi Windows”. Besar harapan penyusun agar para Pengguna, baik Praktikan maupun Pembimbing, dapat memberikan kritik dan sarz Panduan Praktis Mikrokontroler Keluarga AVR i Akhir kata, penyusun mengucapkan terima kasih kepada para Pengguna, Selamat berlatih! mengenai isi ataupun penyusunan Surabaya, Maret 2007 Tim Penyusun HALAMAN JUDUL ----. KATA PENGANTAR | DAFTAR IST DAFTAR GAMBAR -._ DAFTAR TABEL... DAFTAR ISI PENDAHULUAN . 1.1. TUJUAN- 1.2. RUANG LINGKUP__ 1.3. SISTEMATIKA PANDU. JAN PRAKTIS MIKROKONTROLER KELUARGA AVR. PENJELASAN PERANGKAT KERAS PENJELASAN PERANGKAT LUNAK.------- 3.1. INSTALASI CODEVISIONAVR C COMPILER 3.2. CARA MEMBUAT PROYEK BARU . 1) Tanpa CodeWizardAVR - 2) Dengan CodeWizardAVR PEMROGRAMAN MIKROKONTROLER AVR DENGAN DT-HIQ AVR IN SYSTEM PROGRAMMER MELALUI CODEVISIONAVR ---. 34. CARA MENGGUNAKAN PROGRAM TERMINAL PADA CODEVISIONAVR BASIC INPUT/OUTPUT. 4.1. TUJUAN - 42. DASAR TEORI-- 43. SKEMATIK DAN CONTOH PROGRAM 1) Pin I/O sebagai Output untuk Mengendalikan LED -- 2) Pin VO sebagai Input untuk Membaca Penekanan Saklar.... 3) Pin /O scbagai Output untuk Mengendalikan Relay - 4.4. SOAL LATITIAN xi SCANNING (7 SEGMENT, DOT MATRIX, dan KEYPAD) 5.1. TUJUAN... 5.2. DASAR TEORI 5.3. SKEMATIK DAN CONTOII PROGRAM - 1) Scanning 7 Segment 2) Scanning Dot Matrix 3) Scanning Keypad .-- 53.4. SOAL LATIHAN-- 6.1. TUJUAN -.- 62. DASARTEORIL- 63. SKEMATIK DAN CONTOH PROGRAM. 1) Display LCD - 2) Memori RAM 64. SOAL LATIHAN-- USART.- TA TUJUAN - 7.2. DASAR TEORI .. 73 SKEMATIK DAN CONTOIL PROGRAM TA SOAL LATIIAN ____- =... ADC (Analog-to-Digital Converter) 81, 8.2, 83 SKEMATIK DAN CONTOH PROGRAM... 1) Pengukuran Suhu dengan Sensor Suhu LM 2) Pengukuran Intensitas Cahaya dengan Sensor cahaya LDR (Light Dependent Resistor) 84. SOAL LATIHAN SERIAL (SPI dan TW1) 9.1. TUJUAN.... 9.2. DASAR TEORI. 9.3. SKEMATIK & CONTOH PROGRAM... 1) Penggunaan Komunikasi SPI Mikrokontroler AVR ATMEGA8535 untuk Membaca Tanda Pengenal (Read Signature) Mikrokontroler AVR ATTINY2313 dan Menulis (Write) Suatu Data ke Memori Program (Flash) 45 101 110 ii i Wi 113 14 120 125 126 126 126 133 2) Penggunaan TWI Mikrokontroler AVR ATMEGA8535 untuk Menulis atau Membaca Data pada Memori EEPROM. 24C01A 9.4, SOALLATITIAN_ 10. MOTOR (DC, STEPPER, dan SERVO)... 10.1, TUIUAN 10,2. 10.3. SKEMATIK DAN CONTOH PROGRAM 1) Penggunaan 16-bit Timer/Counter] sebagai PWM pada Mikrokontroler AVR ATMEGA8535 untuk Mengendalikan Kecepatan Putar Suatu Motor DC 2) Penggunaan Pin I/O Mikrokontroler untuk Menggerakkan Motor Stepper serta Menggunakan 8-bit Timer/Counter0 untuk Mengatur Kecepatan Putar Motor Stepper. os 3) Penggunaan Pin I/O Mikrokontroler untuk Menggerakkan Motor Servo serta 8-bit Timer/Counter2 sebagai Waktu Tunda _ 10.4. SOAL LATINA? 11, DAC ( Digital-to-Analog Conver 11.1. TUTUAN... 11.2. DASAR TEORT 11.3. SKEMATIK DAN CONTOH PROGRAM 11.4. SOAL LATIHAN PENUTUP--. DAFTAR PUSTAKA vi 143 150 162 170 174 175 175 175 175 184 185 DAHULUAN LL, TUJUAN 1.2. 13. Tujuan dari keseluruban panduan ini adalah agar Pengguna mampu memprogram mikrokontroler keluarga AVR menggunakan fitur-fitur yang dimiliki oleh DT- COMBO AVR-51 Starter Kit dalam program-program berbahasa C dengan bantuan DT-COMBO AVR Exercise Kit RUANG LINGKUP Panduan ini mencakup percobaan menggunakan DT-COMBO AVR-51 Starter Kit, DT-COMBO AVR Exercise Kit, dengan bantuan Personal Computer (PC) dan software CodeVisionAVR' SISTEMATIKA PANDUAN PRAKTIS MIKROKONTROLER KELUARGA AVR Panduan Praktis Mikrokontroler Keluarga AVR ini terbagi dalam 11 bab. Adapun garis besar masing-masing bab adalah scbagai berikut: a, Bab I PENDAHULUAN: Membahas mengenai tujuan, ruang lingkup, scrta sistematika Panduan Praktis Mikrokontroler Keluarga AVR. b. Bab Il PENJELASAN PERANGKAT KERAS: Menjelaskan mengenai fitur-fitur DT-COMBO AVR-S1 Starter Kit dan cara menghubungkan perangkat keras. c. Bab Il] PENJELASAN PERANGKAT LUNAK: Menjelaskan mengenai cara penggunaan Code VisionAVR® dan fiturnya. d. Bab IV BASIC INPUT/OUTPUT. Membahas teori dan latihan mengenai penggunaan Port sebagai jalur input dan output secara per bit dan per byte. e. Bab V SCANNING (7 SEGMENT, DOT MATRIX, dan KEYPAD): Membahas teori dan latihan mengenai teknik scanning menggunakan delay dan timer untuk membaca penckanan tombol keypad, menyalakan 7 segment dan menyalakan dot matrix. f. Bab VI PARALEL (LCD & EXTERNAL DATA MEMORY): Membahas teori dan latihan mengenai penggunaan pin I/O AVR untuk mengakses LCD (Liquid Crystal Display) dan memori ckster g. Bab VII USAR Membahas tcori dan latihan mengenai penggunaan komunikasi scrial USART untuk berkomunikasi dengan komputer, h. Bab VII ADC (Analog-1o-Digital Converter): Membahas teori dan latihan mengenai penggunaan ADC untuk mengkenversi input tegangan analog menjadi nilai digital Bab IX SERIAL (SPI dan TW): Membahas tcori dan latihan mengenai penggunaan SPI (Serial Peripheral Interface) dan TWI (1wo-Wire serial Interface) untuk mengakses device lain. Bab X MOTOR (DC, STEPPER, dan SERVO) Membahas teori dan latihan mengenai pengendalian motor DC, motor stepper, dan motor servo dengan bantuan timer. Bab XI DAC ( Digital-to-Analog Converter ) Membahas teori dan latihan mengenai pengendalian DAC untuk menghasilkan tegangan analog. 111, 11.2. 11,3. 11, DAC ( Digital-to-Analog Converter ) TUJUAN + Mampu membuat program untuk mengakses DAC menggunakan pin /O AVR. + Mampu membuat program untuk menghasilkan suatu sinyal segitiga dengan menggunakan DAC. DASAR TEORL + DAC berfungsi untuk menghasilkan tegangan analog dari nilai digital, merupakan kebalikan dari ADC yang mengkonversi tegangan analog menjadi nilai digital + Seperti pada ADC yang membutuhkan tegangan referensi untuk konversi tegangan analog menjadi nilai digital maka DAC juga membutuhkan tegangan referensi untuk konversi dari nilai digital menjadi tegangan analog. Pada DAC, tegangan referensi digunakan untuk resolusi perubahan tegangan output dan sebagai batas tegangan owtput maksimum DAC. Namun output DAC dapat diperbesar dengan menggunakan rangkaian amplifier (penguat) seperti rangkaian op-amp inverting amplifier, op-amp non-inverting amplifier, dan sebagainya. Dengan rangkaian tambahan, tegangan maksimum DAC dapat diatur dari rangkaian amplifier, tetapi resolusi perubahan tegangan ez¢pur akan berubah sesuai dengan nilai penguatan pada rangkaian amplifier. » SKEMATIK DAN CONTOH PROGRAM + Contoh program menggunakan ADC pada ATMEGA8535. Agar contoh program. dapat berjalan dengan baik dan benar (hasil konversi ADC benar) maka pastikan bahwa pengaturan jumper tegangan referensi ADC pada DT-COMBO AVR- SL STARTER KIT terhubung dengan tegangan 5 volt (AVCC), yaitu posisi jumper J12 (ADC Ref Voltage) pada pin 1-2. + Skematik untuk rangkaian DAC dengan mikrokontroler ATMEGA8535 terdapat pada gambar 11.1. Tipe DAC yang digunakan yaitu DACO832 dengan resolusi sebesar 8-bit. Keterengan yang lebih lengkap terdapat pada datasheet DACO832 tentang Analog Considerations (Using the DAC0830 in a Voltage Switching Configuration). Tegangan output DAC (Vou) pada gambar 11.1 dapat dihitung dengan menggunakan persamaan: Nilai D merupakan nilai digital input untuk DAC yaitu bernilai 0 sampai 255. Agar ouput DAC sesuai dengan persamaan di atas, tegangan referensi harus diatur sebesar 2,5 volt pada pin 11 DAC0832. Untuk mendapatkan tegangan referensi sebesar 2,5 volt yaitu dengan mengatur (memutar) resistor variabel VRI, lihat pada gambar 11.1. Pada gambar 11.1, op-amp LM358 serta resistor R1 dan R2 dirangkai sedemikian rupa sebingga membentuk rangkaian non-inverting ampilfier dengan penguatan sebesar 2x jika nilai R1 dan R2 sama. Pemilihan resistor RI dan R2 sebesar 1 MQ agar didapatkan impedansi ouput rangkaian op-amp yang besar yaitu sebesar 1 MQ. Resistor R3 digunakan untuk mengurangi owfput tegangan saturasi dari op-amp pada saat input op-amp 0 volt. Untuk mengubah nilai digital dari mikrokontroler pada DAC yaitu dengan mengirimkan nilai digital terlebih dahulu (pin DIO-DI7) kemudian memberikan sinyal write ke DAC (pin WRI diberi logika ‘0°). Setelah beberapa waktu (minimal sinyal write (tps) 320 ns, dengan Vee DAC sebesar 12 volt), pin WRI diberi logika ‘1’. Tegangan output DAC dapat diukur pada pin | pada LM358 (Vou). lihat pada gambar 11.3. Komponen yang dibutuhkan: Resistor 1 MOQ (warna: coklat, hitam, hijau, emas) 2 buah - Resistor 10 kQ (warna: coklat, hitam, jingga, emas) 1 buah - Resistor 2,2 kQ (warna: merah, merah, merah, emas) 1 buah - VR10kQ 1 buah - LM336—2,5 volt 1 buah - Op Amp LM358 1 buah - DACO0832 1 buah Vout 2.5V (4 R2R1)N* Gambar 11,1, Rangkaian DAC0832 dengan Mikrokontroler ATMEGA8535 176 + Gambar rangkaian DACO832 dengan mikrokontroler ATMEGA8535 yang dirangkai pada papan proyck (project hoard) ditunjukkan pada gambar 11.2. Pc PD AUX Ef... 456701234567123 Vout 099000000000 9900000000 909000000) FOSASILOSS7H6SASZILIOGCY Lk NT SWITCH 3% LED °" pe Gambar 11.2. Tata Letak Komponen pada Project Board untuk DAC0832 + Program | adalah contoh program untuk mengirimkan nilai digital mutai dari 0 sampai 255 ke DAC0832. Sctiap nilai digital yang dikirimkan ke DACO832 dibaca kembali oleh ADC mikrokontroler ATMEGA8535. Hasil pembacaan ADC dikirimkan ke komputer melalui USART. Untuk melihat hasil pengiriman hasil ADC mikrokontrolcr pada komputer menggunakan program terminal. Program 1, Program untuk mengirimkan nilai dig ital ke DAC. #include #include #include #include define WR PORIC.0 #define PortDAC PORTB 177 unsign' int hasil; //Fargsi mengubah input birer 16 bit menje /[berzuk 3CD 5 dig: arnsigned long int bin23CD (unsigned int input) hasi2=((iaput/10000) *65 (( (inpul&20000) /1000) 4096) + ((((input'$10000) #1000) /1060) *256) + (((( (inpuL&20000) $1000) $106) /10) #16) + ((((inpul%10000) L000) 100) %10); return (nasil); 6)+ oferensi : pin AREF //4asil konversi ADC : right adjusted #define ADC VREF TY 0x00 //Beagsi untuk membaca tegangan input ADC (konversi //BDC) unsigned int read_ade (un ned. unsigned char temp; unsigned int data_ade; ADMUX=acc_input.|ADC_VREF_TY //Scart konversi ADC ADCSRA|=0x40; //BDCSRA // (ABCSRA-ADCSRA | 0x40) //Tunggu sampai konversi ADC selesai (flag ADLE} while ((ADCSRA & 0x10) 0); ADCSRA|~0x10; //Clear fleg ADLE data_ade-0x0000; temp-ADCL; //Bacé ADC Data Register LOW data adc=ADCE; //3aca ADC Data Register EIGE data adc<<=38; //Geser data adc HIGH ke kiri //8 kali data adc|=temp; //Aasil xonversi ADC= 0000 //00xx Xx: return / (Right adjusted unsigned char string[]= {"Hasil ADCO : "); 178 *lash unsigned char string’ |.- "Tnpul DAC ; #d 7 " sid main{vo'd) { unsiqned char temp,ade !nput,da DDRA=0x00; DORB=0xF= C=0x //PCO sebagai output PORTB. /Tegangan referens: ADC : pin AREF ADMUX: | VREF_TYPE; /Inisialisai ADC (Enable ADC) //Prekuensi clock ADC : 31.250 kHz (4MHz/128) ADCSRA=0%87; SFIOR&=0xEF; //Sumber trigger : Pree //Running mo i/ alisasi JSART §-N-1 dengan baud rate // 9609 bps (4NHz) UCSRB-9x90; UCSRB-9x18; UCSRC=0x86; UBRRH-9x90; UBRRL=9. dac=0x00; i awal data DAC while { printf (stringl,dac) ; PortDAC=dac; //Kirim nilai digital ke //DACI832 asm ("nop"); //Data setup time (tDS) dasm("nop") ; WR=0; #asm ("nop"); #asm ("nop"); WR=1; dac++; printf (string); ade_input-0x00; 179 adc (ade_input); ca tegangan pac lasi l=nasil*49; //Hasil pembacaan //dikalikan dengan 7 LSB 1asil=bin23CD(hasil); //%oaversi hasil ADC ke format BCD cemp=(nasil>>16 & Ox0F)+0x30; //Ubak format BCD ke ASCII putchar (temp) ; //Kizim ASCII ke USART r(',)F (nasil>>12 & Ox0F) 10x30; r (temp) + (nasil>>8 & 0x0F)+0x30; pin abco 4 & 040F)+0x30; nar (temo) ; tvemp-(hasil & 0x0 putonar ( nar )+0x%30; c CV; (0x00) ¢ //Kirim ENTER pada termina //untuk baris baru putenar pucehar (0x0A) 7 delay ms (200); } Program 2 merupakan contoh program untuk membuat sinyal segitiga sama kaki menggunakan DAC. Nilai digital mulai dari 0 sampai 255 dikirimkan ke DAC, setclah sampai ke nilai 255, nilai digital mulai dari 254 sampai 0 dikirimkan ke DAC, kemudian kembali ke nilai 0 sampai 255, demikian scterusnya. Jadi nilai 0 sampai 255 kemudian 254 sampai 0 dikitimkan berulang- ulang schingga tegangan owfput DAC dapat membentuk segitiga sama kaki. Apabila tombol yang terhubung dengan pin PC6 ditckan maka bentuk segitiga akan semakin landai (pengiriman nilai digital ke DAC diperlambat dengan menambah delay’, sebaliknya apabilz tombol yang terhubung dengan pin PC7 ditekan maka bentuk segitiga akan semakin lancip (pengiriman nilai digital ke DAC dipercepat dengan mengurangi delay). Catatan: - Contoh program ini menggunakan tombol push-button yang terhubung dengan pin PC6 dan PC7 untuk membuat sinyal segitiga semakin landai 180 181 atau lancip. Agar tombol push-button dapat berfungsi maka hubungkan header “PORTC” dengan header “SWITCH™ menggunakan kabel 10-pin atau kabel pita/flat ribben cable - Voltmeter dapat digunakan untuk memeriksa tegangan keluaran DAC. Jika naik/turunnya tegangan makin cepat, berarti segitiga makin lancip. Jika naik/turunnya tegangan makin pelan, berarti segitiga makin landai. Program 2. Program untuk mengirimkan sebuah kata ke komputer. 8535 .h> fdefine WR POR" tdefine PorlDAC POR’ input diner unsigned BCD (unsigned hasil=((inpul/19090) *65536) + inout%10009) /1909) *4096) + ( t%10090) $1090) /100) *256) 1 ((input%10008) $2909) 2200) /10) *16) + (input210090) $1090) $100) 10); urn(hesil); CC CC (( CC //Tegangan referens: //Hasil konvers: ADC : right a #define ADC VREF CxO //Pungsi untuk menace tegangan input ADC //(konversi ARC) unsigned int cread_ade (unsigned char adc_inpu.) pin ARE? justed unsigned char temp; unsigned int data ade; ADMUX=ade input|ADC VREF TYPE; //Stert konversi AIC ADCSRA|-0x407 //ADCSRA di-or-kan dengan 40H // (ADCSRA=ADCSRA | 0x40) //Tanggu sampai konversi ADC selesai (flag ADIF) while ((ADCSRA & Sx10)==0); ADCSRA | =0x10; //Clear flag ADIF data_adc-0x0000; temp ADC; //Baca ADC Data Register LOW data_ade-A. //Baca ADC Dala Register NIGH data_adc< //Ges data_ade [NIGH //ke kiri 8 kali emp; //ilasil konversi ADC= 9090 (/00KK XXXX KXXX //Right adjusted return data_a t f ash unsigned chav string|_— {"Hes flash unsigned char str (1 "Input DAC : sd; "} bit i; void main (void) { uns‘ gned DDRA=0x06; DDRB=0xF2; DDRC=0x01; //2?CO0 sebagai output, //2?C1-2C7 sebagai input 1 Anco : "he av temp,dly,2 PORTB.O=1; //Tegangan referensi ADC : pin Al ABMUX-ADC_VRREF_TYPR; //Inisialisai [DC (Enable ABC //Prekuensi clock 31.250 kilz (411z/128) ADCSRA=0x87; SFIORS=0x! //Sumber trigger : Free //Running mode // Tnisialisasi USART 8-N-1 dengan baud rate //Nilai awal data DAC //Javiabel dac --> i ement. //Nilai awal variabel delay printf (scring1,dae); PortDAC=cac;//Kirim ni lai digital ke //DACO832 ;//Data setup time (tDS) (/iirite DAC i//Write time (tw) a 183 Ga if (dac==0) i=0; } printf (string); ace_inwut-0«00; nasil-read_ade( //3Baca t nasil=hasil*49; //Aasi hasil=pin2BCD (hasil); //Xeaversi hasil ADC ke format BCD temp (hesil>>16 & OxOF)+0x3 //Upah format BCD ke A tchar (temp); //Kirim ASCII ke USART atchart',"); il>>12 & 0x0F)+0«30; putchar (temp) terp-{hesil>>8 § 0x0) +0x30; & Ox0F) 40x30; putchar (temp) ; temp=(hasil & Ox0F) 10x30; tchar (temp) ; rel"); putchar('V"); putchar (0x0D) ; //Kirim ENTER pada terminal //antuk baris baru tchar (OxOA) ; if (PINC.6==0) //Jika tombol yang //texhubung dengan 2cé { //ditekan maka sinyal //segitiga semakin landai aly; if (dly 00) dly=0xFF; } if (PINC 1) delzy_ms(dly); } 11.4, SOAL LATIHAN Buatlah program untuk membuat sinyal segitiga seperti ditunjukkan pada gambar 11.3 dengan lebar periode (T) dapat diatur, Jadi mikrokontroler memberikan nilai digital sebesar 255 kemudian turun sampai 0, kemudian kembali lagi ke nilai 255 sampai 0 demikian seterusnya. Pemberian nilai digital ini merupakan kebalikan dari contoh program 1. Pengaturan lebar periode yaitu dengan menunda pemberian nilai digital ke DAC seperti pada contoh program 2, gunakan tombol PC6 untuk memperlebar periode (clelay diperbesar schingga sinyal segitiga somakin landai) dan tombol PC7 untuk memperkecil periode (delay diperkecil schingga sinyal segitiga scmakin lancip). Vout —_——_—> T i Gambar 11.3. Bentuk Sinyal Segitiga untuk Soal 1. 184

You might also like