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.