DST UNIPROG V2.8 FULL VERSION

software yang digunakan penulis untuk menanamkan program robot kedalam mikrokontroler.

4.2.1 DST UNIPROG V2.8 FULL VERSION

Modul DST Uniprog Full Version adalah merupakan modul Development System sekaligus Universal Programmer. Dengan bantuan Modul DST AVR Converter, Development System tersebut juga dapat digunakan untuk mikrokontroler keluarga MCS-51 maupun AVR yang lain. Gambar 4.10 Modul DST AVR Converter Penulis menggunakan DST-51 USB Version tanpa memerlukan modul tambahan. Lankah-langkahnya sebagai berikut : A. Mikrokontroler ATMEL 89S51 dipasang. Gambar 4.11 Rangkaian ATMEL 89S51 dan DST-51 USB B. Pasang Kabel USB dan aktifkan Power Supply. Apabila aplikasi ini tidak membutuhkan arus yang besar anda dapat menggantikan power supply tersebut dengan power dari USB dengan cara memasang Jumper Power Enable yang ada di dekat connector USB. C. Buka program AVR Studio 4 dan pilih auto connect pada bagian Tools – Program AVR. Gambar 4.12 AVR Studio D. memilih Mikrokontroler yang akan di gunakan pada bagian Device and Signature Bytes. Gambar 4.13 Pemilihan Mikrokontroler E. Untuk AT89S51 diatur frekwensi ISP maksimum 125 KHz. F. Pilih Tab Program dan load file hex pada bagian program serta klik Program untuk download. G. Koneksi AVR ke Motor Gambar 4.14 Koneksi AVR Ke Motor Dari srcrip diatas adalah untuk meng-conectkan program AVR ke motor Robot. Berikut Potongan Source codenya : ifndef _moving_h_INCLUDED_ define _moving_h_INCLUDED_ Koneksi AVR ke Motor ------------------------ DIRR PORTB.3 DIRL PORTB.2 ENR PORTB.0 ENL PORTB.1 Koneksi AVR ke Motor ------------------------ define DIRR 2 define ENR 3 define DIRL 0 define ENL 1 define MTR_DDR DDRB define MTR_PORT PORTB define ENR_OUT MTR_DDR|=1ENR define ENL_OUT MTR_DDR|=1ENL define ENR_IN MTR_DDR=~1ENR define ENL_IN MTR_DDR=~1ENL define DIRR_OUT MTR_DDR|=1DIRR define DIRL_OUT MTR_DDR|=1DIRL . . . . . define ENR_HIGH MTR_PORT|=1ENR define ENL_HIGH MTR_PORT|=1ENL define ENR_LOW MTR_PORT=~1ENR define ENL_LOW MTR_PORT=~1ENL define DIRL_HIGH MTR_PORT|=1DIRL define DIRR_HIGH MTR_PORT|=1DIRR define DIRL_LOW MTR_PORT=~1DIRL define DIRR_LOW MTR_PORT=~1DIRR void forwardvoid; void reversevoid; void leftvoid; void rightvoid; void stopvoid; endif H. Scrip Untuk Pergerakan Motor Gambar 4.15 Script Pergerakan Motor Gambar di atas adalah gambar scrip untuk mengontrol pergerakan motor DC supaya robot dapat bergerak sesuai keinginan penulis. Berikut Potongan Source codenya : includeavrio.h includemoving.h void rightvoid { ENL_OUT; ENR_OUT; DIRR_OUT; DIRL_OUT; ENL_LOW; ENR_LOW; DIRL_LOW; DIRR_HIGH; } void leftvoid { ENL_OUT; ENR_OUT; DIRR_OUT; DIRL_OUT; ENL_LOW; ENR_LOW; DIRL_HIGH; DIRR_LOW; } void reversevoid { ENL_OUT; ENR_OUT; DIRR_OUT; DIRL_OUT; ENL_LOW; ENR_LOW; DIRL_LOW; DIRR_LOW; } void forwardvoid { ENL_OUT; ENR_OUT; DIRR_OUT; DIRL_OUT; ENL_LOW; ENR_LOW; DIRL_HIGH; DIRR_HIGH; } void stopvoid { ENL_OUT; ENR_OUT; DIRR_OUT; DIRL_OUT; ENL_HIGH; ENR_HIGH; } I. Script Bahasa C untuk kipas angin apabila kamera mendeteksi titik api. Gambar 4.16 Script Untuk Kamera Dari script diatas adalah pergerakan robot pemadam api mendeteksi titik api dia akan berjalan menuju sumber titik api tersebut lalu memadamkannya dengan menggunakan kipas angin. Berikut Potongan source codenya : includeavrio.h includeutildelay.h includeavrinterrupt.h includeavrpgmspace.h includestring.h includemoving.h includeUART_routines.h define FAN 4 define FAN_DDR DDRB define FAN_PORT PORTB define FAN_OUT FAN_DDR|=1FAN define FAN_HIGH FAN_PORT|=1FAN define FAN_LOW FAN_PORT=~1FAN; define LED 5 define LED_DDR DDRB define LED_PORT PORTB define LED_OUT LED_DDR|=1LED define LED_HIGH LED_PORT|=1LED define LED_LOW LED_PORT=~1LED; define LED_INV LED_PORT=1LED; define TPA81 0xD0 define SCL 5 define SDA 4 define I2CPORT PORTD define I2CDDR DDRD define I2CPIN PIND define SCL_OUT I2CDDR|=1SCL define SCL_IN I2CDDR=~1SCL define SCL_HI I2CPORT|=1SCL define SCL_LW I2CPORT=~1SCL define SDA_OUT I2CDDR|=1SDA define SDA_IN I2CDDR=~1SDA define SDA_HI I2CPORT|=1SDA define SDA_LW I2CPORT=~1SDA define SER_BUFFER_SIZE 30 Volatile unsigned char ser_index,ser_data [SER_BUFFER_SIZE]; unsigned char i2c_data[10]; ISRUSART_RX_vect { char data; data=UDR; ser_data[ser_index]=data; ser_index++; ifser_index==SER_BUFFER_SIZEser_index=0; } void I2CInitvoid { SCL_OUT; SDA_OUT; SCL_LW; SDA_LW; } void I2CStartvoid { SCL_OUT; SDA_OUT; SDA_HI; _delay_us10; SCL_HI; _delay_us10; SDA_LW; _delay_us10; SCL_LW; _delay_us10; } void I2CStopvoid { SCL_OUT; SDA_OUT; SDA_LW; _delay_us10; SCL_HI; _delay_us10; SDA_HI; _delay_us10; } unsigned char I2CReadchar ack { char x,d=0; SDA_IN; SDA_HI; forx=0; x8; x++ { d= 1; do { SCL_IN; _delay_us1; SCL_HI; } whileI2CPIN1SCL; _delay_us10; ifI2CPIN1SDA d |= 1; SCL_OUT; SCL_LW; } SDA_OUT; ifack SDA_LW; else SDA_HI; SCL_HI; _delay_us10; SCL_LW; SDA_HI; return d; } unsigned char I2CWriteunsigned char d { char x; static unsigned char b; SCL_OUT; SDA_OUT; forx=8; x; x-- { ifd0x80 SDA_HI; else SDA_LW; _delay_us10; SCL_HI; _delay_us10; d=1; SCL_LW; } SDA_IN; SDA_HI; SCL_HI; _delay_us10; b=I2CPIN1SDA; SCL_LW; return b; } void ReadTPA81void { unsigned char i; I2CStart; I2CWriteTPA81; I2CWrite0; I2CStart; I2CWriteTPA81+1; fori=0;i9;i++{i2c_data[i]=I2CRead1;} i2c_data[9]=I2CRead0; I2CStop; } int mainvoid { unsigned char i,d,j; UCSRA=0x00; UCSRB=0x98; UCSRC=0x86; UBRRH=0x00; UBRRL=0x0C; LED_OUT; LED_HIGH; FAN_OUT; FAN_HIGH; I2CInit; _delay_ms1000; sei; STROutFlashPSTRRS; SerialOut13; whileser_data[ser_index-1]=:; while1 { LED_INV; STROutFlashPSTRL1 ; ifj==0j=1; else j=0; SerialOutj+0x30; SerialOut13; whileser_data[ser_index-1]=:; _delay_ms40; . . . . . . . . . d=2; fori=2;i10;i++ { SerialOuti2c_data[i]; ifi2c_data[i]i2c_data[d] { d=i; } } ifd==2||d==3 { left; } ifd==8||d==9 { right; } if d3d8 i2c_data[d]0x30 { forward; if i2c_data[4]0x90i2c_data[5]0x90 { stop; FAN_LOW; while i2c_data[4]0x22i2c_data[5]0x22 { _delay_ms40; ReadTPA81; } FAN_HIGH; reverse; _delay_ms3000; } } } } 44

BAB IV IMPLEMENTASI SISTEM

Pada bab ini penulis menjelaskan tentang implementasi dari perancangan perangkat keras dan implementasi dari perancangan perangkat lunak dari bab sebelumnya.

4.1 Implementasi Perangkat Keras

Pada bagian implementasi perangkat keras penulis coba menerapkan perancangan peangkat keras yang telah dibahas di bab sebelumnya, yaitu implementasi dari perancangan perangkat kerangka robot. Mikrokontoler ATMEL 89S51, driver motor, dan CMU CAM 3.

4.1.1 Kerangka Robot

Di bagian perangcangan telah dibahas tentang perancangan kerangka robot yang penulis buat dan pada bagian ini adalah gambar-gambar dari implementasi dari perancangan perangkat keras untuk kerangka robot yang penulis buat.