31
4.3 Mikrokontroler
4.3.1 Port Input dan Output Mikrokontroler AT89S51 memiliki 4 buah Port InputOutput bebas dengan setiap Port
memiliki 8 buah pin. Terdapat beberapa pin yang digunakan untuk melakukan proses penghitungan counter, pin untuk pengatur kecepatan putar motor pompa. Tabel berikut berisi daftar penggunaan
port inputoutput dalam penelitian ini. Tabel 17. Pin AT89S51 yang digunakan dalam sistem
Jenis InputOutput Nomor Port
Sensor Magnet Counter Port 1 Pin 3
PWM pompa 2 Port 3 Pin 5
4.3.2 Counter Terdapat dua buah variabel counter yang ada pada program mikrokontroler, keduanya secara
berturut-turut adalah iCount dan sCount. iCount merupakan variabel counter yang mengatur kapan sebuah citra lahan diambil dari sebuah direktori oleh aplikasi pengolah citra. Sedangkan sCount
berfungsi untuk mengatur kapan mikrokontroler akan meminta data tingkat kepadatan gulma dari aplikasi pengolah citra.
Port 3 Pin 1 pada mikrokontroler dihubungkan dengan kabel pada salah satu sisi sensor magnet. Pada sisi lainnya, sensot magnet dihubungkan dengan sumber tegangan 5V yang ada pada
catu daya. Pada awal proses, seluruh pin pada Port 1 bernilai 0. Setiap mikrokontroler mengangkap
tegangan 5V pada pin ini atau dengan kata lain ketika kedua sisi sensor terhubung, setiap nilai variabel Counter pada program akan bertambah sebanyak 1 satuan. Berikut potongan program yang
menjalankan proses pencacahan pada mikrokontroler.
temp1=P1_3; iftemp1==1 temp2==0
{
icount=icount+1; scount=scount+1;
} temp2=temp1;
Penggunaan dua buah variabel tambahan yaitu temp1 dan temp2 dimaksudkan untuk mengurangi kesalahan pencacahan yang dapat disebabkan oleh clockspeed mikrokontroler yang cepat
yaitu sebesar 11,059MHz. 4.3.3 Pengaturan Komunikasi Data
Mikrokontroler AT89S51 memiliki fitur pengiriman dan penerimaan data yang terbagi menjadi dua, yaitu komunikasi data serial dan komunikasi data paralel. Pada penelitian ini digunakan
komunikasi data serial pada mikrokontroler dan komunikasi data USB pada komputer jinjing. Kedua device dihubungkan oleh sebuah konverter yaitu Prolific USBtoSerial yang mengubah signal serial
menjadi signal usb ataupun sebaliknya.
32
Pada penelitian ini, serial port diatur dengan menggunakan mode 1 dan mengaktifkan penerimaan data REN sehingga pengalamatan SCON adalah pada 50H. Karena mode yang
digunakan adalah mode 1, pengaturan baudrate dari komunikasi data ini harus dilakukan dengan mengatur nilai dari Timer1 yang merupakan fitur dari mikrokontroler AT89S51. Penentuan nilai dari
Timer1 dapat dilakukan sebagai berikut: TMOD bernilai 21H yang berarti bahwa Timer1 yang digunakan adalah pada mode 2 yaitu 8-
bit timer auto reload. Karena tanpa melalui inisialisasi awal, nilai dari PCON.7 SMOD = 0 dan baud rate yang digunakan adalah 9600, maka
TH1 = 256 – Crystal384 Baud Rate
TH1 = 256 – 11059000384 9600
TH1 = 256 – 287999600
TH1 = 256 – 3 = 253 = FDH
Potongan program dibawah ini menunjukkan proses inisialisi oleh mikrokontroler untuk pengaktifan serial port
void InitSerial { TMOD = 0x21;
TL1 = 0xFD; TH1 = 0xFD;
SCON = 0x50; TR1 = 1;
}
4.3.4 Pengiriman Data Mikrokontroler bertugas untuk mengirimkan dua buah jenis data, masing-masing berupa
sebuah karakter yaitu karakter “A” dan karakter “C” dengan menggunakan nilai ASCII. Pengiriman karakter “A” bertujuan untuk memicu program pengolah citra untuk mengambil sebuah citra dari
direktori dan melakukan proses penentuan tingkat kepadatan gulma. Sedangkan pengiriman karakter “C” bertujuan untuk memicu program pengolah data untuk mengirimkan tingkat kepadatan gulma
baris selanjutnya yang tersimpan pada sebuah variabel matriks.
void SendIDat { unsigned char dat;
dat = 65; SBUF = dat;
whileTI==0; TI=0;
} void SendSDat {
unsigned char dat; dat = 67;
SBUF = dat; whileTI==0;
TI=0; }
33
4.3.5 Penerimaan Data Tidak hanya mengirim data, mikrokontroler juga berfungsi untuk menerima data yang dikirim
oleh program pengolah citra. Data tersebut adalah sebuah karakter huruf kecil dari „a‟ sampai „p‟ yang memiliki arti kombinasi dari dua perlakuan penyemprotan sebagai hasil dari pengolahan citra yang
menunjukkan tingkat kepadatan gulma pada lahan terbuka pada bagian kiri dan kanan. Kombinasi tersebut dapat dilihat pada tabel 14.
Setelah data diterima, kombinasi-kombinasi tersebut akan dikirim ke pin PWM dengan nilai antara 0-255 yang merepresentasikan kecepatan putar motor pompa sprayer yang akan dijelaskan
pada subbab berikutnya. 4.3.6 Pengaturan Modulasi Lebar Pulsa
Penggunaan lebar pulsa pada mikrokontroler diterapkan pada Timer0, karena Timer1 telah digunakan untuk pengaturan komunikasi serial. Pengaturan yang dilakukan pada Timer0 melalui
program adalah sebagai berikut:
void pwm_setup { TMOD = 0x21;
IP = 0x10; IE = 0x92;
TR0 = 1; }
TMOD = 21H menunjukkan bahwa Timer0 yang digunakan memakai mode 2. IP=01H menunjukkan bahwa mikrokontroler akan melaksanakan interupsi dari ROM internal. IE=92H
berfungsi untuk mengaktifkan interupsi pada Timer0 dan Serial Port. Terakhir, TR0=1 bertujuan untuk mengaktifkan Timer0 itu sendiri.
Setelah proses inisialisasi di atas, PWM dijalankan dengan memanfaatkan fitur interupsi yang ada pada mikrokontroler seperti yang ditunjukkan oleh potongan program berikut:
void timer0 interrupt 1 { ifpwm_flag {
pwm_flag = 1; PWMPIN = 1;
TH0 = 255 - pwm_width; TF0 = 0;
return; }
else { pwm_flag = 0;
PWMPIN = 0; TH0 = pwm_width;
TF0 = 0; return;
} }
34
Tegangan +5V akan dialirkan ke pin PWM ketika pwm_flag bernilai 1 dan sebaliknya aliran arus melalui pin PWM akan terputus ketika pwm_flag bernilai 0. Nilai TH0 menunjukkan nilai awal
dari timer untuk mencapai overflow. TF0 untuk menghapus overflow dan memulai kembali Timer0 dari nilai awal.
4.4 Penentuan Nilai Modulasi Lebar Pulsa