Mikrokontroler HASIL DAN PEMBAHASAN

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