• Tidak ada hasil yang ditemukan

BAB III PERENCANAAN DAN PEMBUATAN SISTEM

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PERENCANAAN DAN PEMBUATAN SISTEM"

Copied!
68
0
0

Teks penuh

(1)

PERENCANAAN DAN PEMBUATAN SISTEM

3.1.Perencanaan Sistem

Perencanaan sistem kendali otomatis antenna parabola dengan cara kerja mikrokontroller arduino mega 2560 R3 memerintahkan dan menerima informasi dari GPS shield Ublox LEA-5H, kemudian informasi ini diolah dan dipilah- pilah menjadi informasi lokasi keberadaan stasiun bumi yaitu tempat Sistem Kendali Otomatis Antenna Parabola sedang beroperasi, kemudian dengan berdasarkan informasi koordinat lokasi stasiun bumi dan koordinat satelit yang dituju, dapat diperoleh nilai sudut azimuth dan elevasi dengan berdasarkan sumbu utara bumi. Dengan demikian diperlukan sensor kompas untuk melakukan koreksi sudut azimuth dan elevasi untuk pergerakan servo antenna parabola. Dan dengan variasi kemiringan tempat stasiun bumi, dapat menyebabkan pembacaan arah mata angin meleset, sehingga diperlukan sensor akselerometer yang dapat mengurangi ketidak akuratan pembacaan arah mata angin akibat kemiringan lokasi. Setelah didapatkan nilai azimuth dan elevasi yang tepat, nilai ini harus dikonversikan kedalam derajat pergerakan servo antenna parabola. Terdapat dua servo di sistem kendali otomatis antenna parabola yang dibuat, yaitu servo azimuth dan servo elevasi yang masing- masing bergerak secara terpisah sesuai dengan perintah mikrokontroller.

(2)

Gambar 3.1 berikut menjelaskan bagan alur kerja sistem kendali otomatis antenna parabola yang dirancang,

Menyiapkan Sistem

Perhitungan sudut azimuth dan elevasi Antena Melakukan pengumpulan

data dari Sensor GPS, Sensor Accelerometer (kemiringan) dan Sensor

mata angin (kompas)

Kumpulkan data parameter sensor Eksekusi posisi Antena Mulai Selesai Pengaturan manual posisi

Antena Parabola

Data OK? Ulangi pengumpulan

Data

Mengulangi proses dari Awal

Eksekusi

(3)

3.1.1. Pembacaan Koordinat satelit dengan sensor GPS

a. Metode Pembacaan kode GPS dan pemisahan baris kode untuk

pembacaan koordinat GPS

Informasi yang didapatkan oleh mikrokontroller dari sensor GPS merupakan suatu deret kode data NMEA (The National Marine Electronics Association) yang harus dipisah- pisahkan menjadi beberapa informasi yaitu UTC (Penunjuk Waktu Universal berdasarkan lokasi), Latitude (Lintang Bumi), Longitude (Bujur Bumi), Latitude Direction (Orientasi arah Lintang), Longitude Direction (Orientasi arah Bujur), Altitude (Tinggi permukaan tempat GPS receiver beroperasi), Kecepatan gerak GPS receiver, Hari dan Tanggal pada posisi GPS receiver beroperasi, dan informasi lainnya. Sensor GPS yang digunakan pada arduino mega 2560 R3 sistem kendali otomatis antenna parabola ini adalah arduino shield dari Ublox LEA-5H. Gambar 3.2 menunjukkan perangkat gps shield untuk arduino dengan chip Ublox LEA-5H sebagai GPS receiver.

(4)

Gambar 3.2 GPS Shield Ublox LEA-5H dari DFRduino

Modul chip Ublox LEA-5H adalah modul yang didesain sebagai perangkat penerima GPS dengan performat tinggi, GPS receiver ini memiliki memori flash yang tertanam didalam chip yang memudahkan dalam pembaruan firmware dan pengaturan kerja modul penerima GPS. Berikut spesifikasi dari gps shield ublox LEA-5H,

• Teknologi kickstart untuk mempercepat penerimaan informasi GPS meskipun dalam kondisi sinyal yang lemah

• Tegangan operasi pada 2,7 hingga 3,6V

• Frekuensi rentang pembaruan posisi 2Hz

• Memiliki memori flash untuk pembaruan firmware dan penyimpanan untuk menyimpan pengaturan

(5)

• Perlindungan dan deteksi short dan open circuit pada antenna eksternal

• Memiliki interface UART 1 buah, USB 1 buah dan DDC 1 buah

• Sudah mendukung GALILEO

• Mampu menampung 50 kanal

• Sensitifitas dalam ruangan -160 dBm

• Mendukung SBAS

• Rentang temperatur kerja -40°C hinggan 85°C

Informasi yang dikirimkan oleh satelit kepada GPS receiver berupa baris informasi NMEA. Berikut adalah contoh informasi yang diterima oleh GPS dari satelit dan akan diproses menjadi informasi- informasi yang terpisah

Dari baris kode NMEA tersebut dapat diambil beberapa informasi yang terpisah oleh tanda “ , ”diantaranya adalah:

• 225446 = menunjukkan waktu UTC pada lokasi yaitu pukul 22:54:46

• A = peringatan pada penerima GPS yang menunjukkan kode A yang berarti posisi valid, jika V berarti peringatan

• 4916.45, N = menunjukkan koordinat lintang dengan format derajat waktu menit yaitu 49 derajat 16.45 menit Lintang Utara yang ditunjukkan oleh kode N yang berarti North

(6)

• 12311.12,W = menunjukkan koordinat bujur dengan format derajat waktu menit yaitu 123 derajat 11.12 menit Bujur Barat yang

ditunjukkan oleh kode W yang berarti West

• 000.5 = menunjukkan kecepatan diatas permukaan tanah, dalam satuan knot

• 054.7 = Panduan arah derajat mata angin dari kutub utara bumi, tidak cukup akurat, oleh karena itu lebih akurat menggunakan sensor kompas

• 191194 = menunjukkan tanggal bulan dan hari sesuai UTC yaitu 19 Nopember 1994

• 020.3,E = menunjukkan variasi medan magnet di lokasi sebesar 20.3 derajat timur, yang berguna untuk faktor koreksi kompas didaerah tersebut

• *68 = kode penanda sebagai bit koreksi dalam pengiriman informasi

Dari contoh diatas dapat diperoleh beragam informasi dari satelit GPS, yang kemudian dapat diolah kembali untuk mendapatkan nilai sudut azimuth dan elevasi dari perhitungan bersama dengan nilai arah mata angin.

b. Konversi sudut derajat waktu ke sudut derajat desimal

Informasi koordinat lintang dan bujur yang diterima oleh mikrontroller dari sensor GPS masih berupa dalam satuan derajat menit dan detik

(7)

sehingga perlu diubah menjadi derajat satuan desimal, untuk melakukan perubahan satuan tersebut maka perlu diketahui jika, pergeseran satu derajat koordinat bumi sama dengan 60 menit dan sama dengan 3600 detik sehingga 1º = 60' = 3600" dan satu menit sama dengan 1/60 derajat = 0.01666667º, sedangkan satu detik sama dengan 1/3600 derajat = 2.77778e-4º = 0.0000277778º. sehingga untuk mengubah nilai satuan derajat menit detik menjadi derajat desimal menggunakan persamaan berikut,

• Bentuk satuan derajat menit detik = dº m' s"

• Bentuk satuan derajat desimal = dd

• Sehingga dapat diketahui nilai derajat desimal adalah

𝑑𝑑𝑑𝑑 = 𝑑𝑑 + 𝑚𝑚 60 +

𝑠𝑠

3600 … … … (3.1)

Contoh:

Konversi koordinat 6 derajat 10 menit 45 detik menjadi derajat desimal,

d = 6°, m=10, s=45

𝑑𝑑𝑑𝑑 = 𝑑𝑑 + 𝑚𝑚/60 + 𝑠𝑠/3600 = 6° + 10′/60 + 45"/3600

= 6.179° ≅ 6.18°

Pembacaan koordinat dalam derajat desimal berfungsi untuk memudahkan dalam perhitungan untuk mencari derajat nilai sudut

(8)

azimuth dan elevasi. Serta pembacaan dalam derajat desimal juga dapat memudahkan pembacaan koordinat oleh pengguna karena tidak perlu memperhatikan dan menghitung lagi nilai menit dan detik.

3.1.2. Pembacaan Sensor Kompas

Sensor kompas berguna untuk membaca arah prototype sistem kendali otomatis Antena Parabola menghadap, sehingga dapat menentukan jumlah derajat sudut yang diperlukan untuk mengarah ke sudut azimuth dan elevasi yang tepat. Sensor kompas yang digunakan pada tugas akhir ini adalah sensor kompas HMC5983,

Gambar 3.3 Sensor kompas HMC5983

Beberapa fitur dari modul sensor kompas HMC5983 adalah sebagai berikut,

• Kompensasi offset otomatis

(9)

• Tingkat keluaran maksimum pada frekuensi kerja 220Hz

• Memiliki fitur pengujian diri atau kalibrasi

• Tegangan operasi rendan antara 2,16V hingga 3,6V dengan arus rendah 100µA

• Medan magnet jangkauan lebar +- 8 Oe

Spesifikasi pin dari sensor kompas HMC5983 adalah sebagai berikut,

VIN = pin power input bekerja pada tegangan 3-5V DC • GND = Ground

3vo = pin output power tegangan 3,3V dengan arus 100mA untuk mensupplai tegangan perangkat lain

SDA dan SCL = pin i2C data dan Clock yang digunakan untuk mengirim dan menerima data dari modul ke mikrokontroller.

Menggunakan pull up resistor 10KΩ dari Vin ke pin SDA dan SCL • RDY = merupakan pin output “data ready”.

dengan tiga sumbu axis yaitu X, Y dan Z. Sensor kompas akan menghasilkan informasi arah mata angin dalam format sumbu X, Y, dan Z, informasi ini berisi besaran medan magnet yang ada di masing- masing sumbu X, Y dan Z.

(10)

Gambar 3.4 Sumbu X, Y, dan Z pada kompas

Arah mata angin merupakan nilai dari besaran magnet sumbu X, Y dan Z yang diolah melalui perhitungan sehingga didapatkan arah mata angin dengan patokan sumbu utara kutub bumi,

sehingga untuk mendapatkan nilai derajat arah mata angin dari sumbu utara diperlukan persamaan berikut,

𝐴𝐴𝐴𝐴𝐴𝐴ℎ𝑚𝑚𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎

=𝐴𝐴𝐴𝐴𝑎𝑎 𝑚𝑚𝐴𝐴𝑎𝑎 (𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑋𝑋) … … … (3.2)

3.1.3. Pembacaan Sensor Akselerometer

Pada pembahasan sebelumnya sensor kompas berfungsi untuk menentukan nilai arah mata angin, maka sensor akselerometer berfungsi untuk mengukur gaya percepatan gravitasi pada sumbu- sumbunya. Gaya percepatan gravitasi ini merupakan gaya konstan dan statik seperti medan gravitasi, dan dapat pula dinamis jika disebabkan oleh getaran atau pergerakan akselerometer. Dengan pengukuran

(11)

percepatan gravitasi statis dapat ditemukan nilai sudut kemiringan benda terhadap permukaan bumi, sedangkan dengan melakukan perhitungan percepatan dinamis dapat dianalisa arah pergerakan benda. Prinsip kerja akselerometer adalah seperti sebuah bola yang melayang berada dalam kotak jika tidak ada pergerakan dan gravitasi sama dengan nol.

Gambar 3.5 Ilustrasi kerja akselerometer gravitasi nol

Dan jika kotak ini dipindahkan dari posisi sekarang ke posisi lain, meskipun tidak ada gravitasi, posisi bola akan terpengaruh dan bergerak ke arah sumbu X, Y atau Z sesuai pergerakan dan perpindahan kotak.

(12)

Gambar 3.6 Ilustrasi kerja akselerometer ketika benda bergerak Akselerometer selalu bekerja dan mendeteksi gaya berlawanan dengan arah gerak benda.

Kemudian jika diibaratkan kotak berisi bola yang mengapung tersebut ditempatkan pada bidang bergravitasi misalkan bumi, maka gambar 3.7 dapat menjelaskan kondisi tersebut,

(13)

Akselerometer dalam keadaan diam masih bekerja dan membaca nilai gravitasi sebesar -1g pada sumbu Z. tekanan bola dalam kotak pada bidang Z disebabkan oleh gravitasi. Medan magnet juga dapat berpengaruh pada akselerometer, sehingga jika diletakkan logam bermedan magnet disalah satu sisi kotak, maka bola akan bergerak ke arah medan magnet tersebut. Begitu pula ketika akselerometer diputar maka bola akan selalu bergerak mengikuti medan magnet atau gravitasi.

Gambar 3.8 Ilustrasi kerja Akselerometer ketika berguling dalam medan gravitasi

Pada sistem kendali otomatis antenna parabola, akselerometer bekerja sebagai faktor koreksi pembacaan arah mata angin pada kompas.

(14)

Prinsip kerja dari gabungan sensor kompas dan akselerometer adalah sebagai berikut,

• Sensor kompas membaca arah mata angin berdasarkan perhitungan dari nilai medan magnet di sumbu X, Y dan Z berdasarkan kutub- kutub magnet bumi

• Sensor akselerometer berfungsi untuk membaca faktor kemiringan dari sensor kompas terhadap permukaan bumi.

• Sensor akselerometer akan menjadi seperti waterpass yang mengkoreksi kemiringan bumi hingga derajat tertentu.

• Berdasarkan nilai kemiringan yang diberikan sensor akselerometer, sensor kompas dapat memberikan nilai arah mata angin lebih akurat.

Pada perancangan sistem kendali otomatis antenna parabola berbasis arduino, digunakan sensor akselerometer ADXL345.

(15)

Gambar 3.9 Sensor Akselerometer ADXL345

Untuk melakukan kompensasi pembacaan nilai arah mata angin sensor kompas, diperlukan nilai pitch dan roll dari akselerometer. Gambar 3.10 menunjukkan ilustrasi dari pitch dan roll pada akselerometer. Dan gambar 3.11 menunjukkan sumbu X, Y, dan Z pada akselerometer.

(16)

Gambar 3.11 Sumbu X, Y, dan Z pada akselerometer

Nilai pitch dan roll dapat dihitung melalu perhitungan sebagai berikut,

𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛 (𝑑𝑑𝐴𝐴𝑛𝑛𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑑𝑑𝑎𝑎𝐴𝐴𝑎𝑎)

= 𝐴𝐴𝐴𝐴𝑎𝑎𝑚𝑚𝐴𝐴𝑎𝑎 (𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑍𝑍)… … … (3.3)

𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ (𝑑𝑑𝐴𝐴𝑛𝑛𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑑𝑑𝑎𝑎𝐴𝐴𝑎𝑎)

= 𝐴𝐴𝐴𝐴𝑎𝑎𝑚𝑚𝐴𝐴𝑎𝑎 (𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑍𝑍)… … … (3.4)

Setelah menghitung nilai pitch dan roll. Dapat dihitung nilai derajat toleransi sumbu X dan sumbu Y pada sensor kompas. Yaitu dengan persamaan berikut, 𝑁𝑁𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑚𝑚𝑅𝑅𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 =𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗ cos(𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ) +𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑍𝑍𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗ sin(𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ)… … … (3.5) 𝑁𝑁𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑚𝑚𝑅𝑅𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 = (𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗ sin(𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛)∗sin (𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ)) + (𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗

(17)

cos(𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛))−(𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑍𝑍𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗sin(𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛)∗

cos(𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ))… … … (3.6)

Sehingga dengan demikian dapat dihitung arah mata angin sensor kompas dengan toleransi dari sensor akselerometer kemiringan benda terhadap permukaan bumi dengan menggunakan persamaan 3.2.

Rangkaian untuk menggabungkan sensor GPS, sensor kompas, dan sensor accelerometer menggunakan komunikasi i2c dapat dilhat pada gambar 3.12, koneksi i2c dengan menggunakan pin SDA dan SCL

pada masing- masing sensor terhubung paralel terhadap pin SDA dan

SCL pada arduino mega 2560 R3, menggunakan resistor 4,7KΩ

sebagai pull up resistor untuk menjaga supaya keadaan pin SDA dan SCL ketika tidak ada perintah dari arduino untuk melakukan instruksi selalu dalam keadaan HIGH-STATE, dan ketika ada instruksi menjadi LOW-STATE, dengan demikian tidak terjadi keadaan mengambang yang menyebabkan komponen aktif secara tidak sengaja dikarenakan short dalam circuit.

(18)

Gambar 3.12 Rangkaian koneksi i2c sensor GPS, kompas, dan accelerometer dengan arduino PWM COMUNICATION D IG IT A L ANALOG IN ATMEGA2560 16AU 1126 T X0 T X3 T X2 T X1 SD A SC L R X0 R X3 R X2 R X1 P D 0 /S C L /I N T 0 2 1 P D 1 /S D A /I N T 1 2 0 P D 2 /R X D 1 /I N T 2 1 9 P D 3 /T X D 1 /I N T 3 1 8 P H 0 /R X D 2 1 7 P H 1 /T X D 2 1 6 P J 0 /R X D 3 /P C IN T 9 1 5 P J 1 /T X D 3 /P C IN T 1 0 1 4 P E 0 /R X D 0 /P C IN T 8 0 P E 1 /T X D 0 /P D O 1 P E 4 /O C 3 B /I N T 4 2 P E 5 /O C 3 C /I N T 5 3 P G 5 /O C 0 B 4 P E 3 /O C 3 A /A IN 1 5 P H 3 /O C 4 A 6 P H 4 /O C 4 B 7 P H 5 /O C 4 C 8 P H 6 /O C 2 B 9 P B 4 /O C 2 A /P C IN T 4 1 0 P B 5 /O C 1 A /P C IN T 5 1 1 P B 6 /O C 1 B /P C IN T 6 1 2 P B 7 /O C 0 A /O C 1 C /P C IN T 7 1 3 A R E F PA0/AD0 22 PA1/AD1 23 PA2/AD2 24 PA3/AD3 25 PA4/AD4 26 PA5/AD5 27 PA6/AD6 28 PA7/AD7 29 PC6/A14 31 PC5/A13 32 PC4/A12 33 PC3/A11 34 PC2/A10 35 PC1/A9 36 PC0/A8 37 PD7/T0 38 PG2/ALE 39 PG1/RD 40 PG0/WR 41 PL7 42 PL6 43 PL5/OC5C 44 PL4/OC5B 45 PL3/OC5A 46 PL2/T5 47 PL1/ICP5 48 PL0/ICP4 49 PB3/MISO/PCINT3 50 PB2/MOSI/PCINT2 51 PB1/SCK/PCINT1 52 PB0/SS/PCINT0 53 P K 7 /A D C 1 5 /P C IN T 2 3 A 1 5 P K 6 /A D C 1 4 /P C IN T 2 2 A 1 4 P K 5 /A D C 1 3 /P C IN T 2 1 A 1 3 P K 4 /A D C 1 2 /P C IN T 2 0 A 1 2 P K 3 /A D C 1 1 /P C IN T 1 9 A 11 P K 2 /A D C 1 0 /P C IN T 1 8 A 1 0 P K 1 /A D C 9 /P C IN T 1 7 A 9 P K 0 /A D C 8 /P C IN T 1 6 A 8 P F 7 /A D C 7 /T D I A 7 P F 6 /A D C 6 /T D O A 6 P F 5 /A D C 5 /T M S A 5 P F 4 /A D C 4 /T C K A 4 P F 3 /A D C 3 A 3 P F 2 /A D C 2 A 2 P F 1 /A D C 1 A 1 P F 0 /A D C 0 A 0 R E S E T PC7/A15 30 M IK R O K O N T R O L L E R A R D U IN O M E G A 2 5 6 0 R 3 V C C = 9 V F R O M A C A D A P T E R R2 4.7K R3 4.7K R4 4.7K R5 4.7K R6 4.7K R7 4.7K GPS SHIELD UBLOX LEA-5H

VCC 1 GND 2 SDA 4 SCL 5 GPS1 GPS SHIELD VCC 1 GND 3 SDA 5 SCL 4 COMP1 COMPASS ACCELEROMETER ADXL345 VCC 2 GND 1 SDA 7 SCL 8 ACC1 ACCELEROMETER 5V FROM ARDUINO SDA SCL SDA SCL

(19)

3.1.4. Pengendalian motor Servo

Sistem Kendali Otomatis Antenna Parabola menggunakan motor servo sebagai mesin mekanik penggerak antenna, dengan spesifikasi pergerakan maksimal ayunan adalah 180 derajat berlawanan arah jarum jam. Servo yang digunakan adalah jenis servo untuk RC. Untuk mengendalikan gerak servo dapat menggunakan kode sederhana sebagai berikut, #include <Servo.h> Servo myservo; void setup() { myservo.attach(9);

myservo.write(90); // atur servo bergerak ke titik tengah }

void loop() {}

Kode program diatas berfungsi untuk memerintahkan servo pada pin 9 pada arduino untuk bergerak sebesar 90 derajat. Namun dengan menggunakan kode program diatas, gerak servo akan tidak akurat pada sudut- sudut minimum dan maksimum, sehingga untuk meningkatkan akurasi gerak servo, perlu menggunakan fungsi pulsa pada servo. Kode program untuk menggerakan servo dengan fungsi pulsa pada satuan waktu milidetik adalah sebagai berikut,

#include <Servo.h> Servo myservo; void setup() {

myservo.attach(9);

myservo.writeMicroseconds(1500); // atur pergerakan servo ke titik tengah

(20)

void loop() {}

Kode program diatas berfungsi sama seperti kode program yang dicantumkan sebelumnya, yaitu menggerakan servo pin 9 pada arduino ke titik tengah, namun perbedaan terdapat pada perintah

myservo.writeMicroseconds(1500); pernyataan ini berisi perintah

untuk menggerakan motor servo selama 1500 milidetik kemudian berhenti dan menahan posisi sampai ada perintah lebih lanjut.

Pengiriman pulsa pada waktu milidetik menyebabkan servo bergerak sesuai dengan perintah pulsa yang dikirimkan oleh mikrokontroller pada rentang waktu milidetik. Namun setiap servo memiliki nilai pulsa yang berbeda untuk mencapai sudut 0, sudut 90, dan sudut 180, sehingga perlu dilakukan percobaan berkali- kali untuk mendapatkan nilai pulsa, dan waktu yang tepat untuk mencapai sudut yang sesuai dan akurat.

3.2.Parameter Desain

Sistem kendali otomatis antenna parabola menggunakan desain parameter input terdiri dari sensor GPS, sensor kompas, dan sensor accelerometer serta keypad sebagai input perintah yang diberikan pada arduino, dengan parameter proses pada mikrokontroller arduino mega 2560 R3, dan output ditampilkan pada display LCD dan motor servo sebagai penggerak utama antenna parabola. Gambar 3.13 menunjukkan gambar model desain sistem kendali

(21)

otomatis antenna parabola yang dibuat. Sistem kendali dibuat menggunakan media akrilik, dua motor servo sebagai alat simulasi penggerak antenna parabola azimuth dan elevasi, dua penggaris busur 360 derajat digunakan sebagai alat ukur untuk meneliti tingkat akurasi sudut yang dihasilkan program sesuai dengan yang digerakan oleh motor servo.

Gambar 3.13 Desain sistem kendali otomatis antenna parabola berbasis arduino

(22)

3.2.1. Sistem Kendali Gabungan Kerja sensor GPS, Kompas, Akselerometer dan motor Servo

Parameter desain sistem kendali otomatis antenna parabola berbasis arduino terbagi menjadi tiga bagian proses, yaitu input, proses, dan output. Bagian input berisi komponen yang berfungsi menyediakan informasi untuk diolah pada bagian proses yaitu sensor GPS, sensor kompas, sensor akselerometer dan keypad.

Bagian proses merupakan mikrokontroller arduino mega 2560 R3 yang merupakan pusat pengolahan informasi yang diterima dari bagian input yang kemudian memberikan instruksi pada komponen- komponen pada bagian output, yaitu servo dan LCD display.

Servo berfungsi sebagai perangkat mekanik penggerak antenna parabola bergerak azimuth dan elevasi mengarah ke satelit yang digunakan. Sedangkan LCD Display sebagai fungsi interface untuk menampilkan informasi dan perintah- perintah yang dilaksanakan oleh sistem kendali otomatis antenna parabola. Gambar 3.14 menunjukkan bagan hubungan kerja sistem kendali otomatis antenna parabola.

(23)

Gambar 3.14 Bagan hubungan kerja sistem kendali otomatis antenna parabola

3.2.2. Fungsi Interface Sistem Kendali Otomatis Antenna Parabola

dengan LCD dan Keypad

Fungsi interface sistem kendali otomatis antenna parabola terdiri dari dua komponen yaitu LCD display dan keypad. Keypad yang digunakan adalah keypad matrix 4x4 yang dapat digunakan untuk memasukkan input numerik koordinat satelit, koordinat lokasi,

(24)

besaran offset antenna, mengatur gerak servo, menggerakan servo azimuth dan elevasi secara manual, serta untuk melakukan perpindahan menu pada layar.

LCD display berfungsi untuk menampilkan proses yang dikerjakan dari mikrokontroller sehingga pengguna dapat lebih mudah memahami proses yang terjadi pada sistem kendali otomatis antenna parabola.

Susunan menu interface sistem kendali otomatis antenna parabola disusun sebagai berikut,

• Menu Utama

- Menu Otomatis (berisi pengaturan otomatis untuk menggerakan antenna parabola)

 Ant. Center Fokus (pilihan menu otomatis untuk tipe antenna center fokus)

 Palapa D

 Telkom 1

 Telkom 2

 Asiasat 3

 Asiasat 5

 Input Manual (menu untuk melakukan input manual koordinat lokasi, koordinat satelit, dan offset antenna)

 Ant. Offset Fokus (pilihan menu otomatis untuk tipe antenna offset fokus)

(25)

 Palapa D

 Telkom 1

 Telkom 2

 Asiasat 3

 Asiasat 5

 Input Manual (menu untuk melakukan input manual koordinat lokasi, koordinat satelit, dan offset antenna) - Menu Manual (berisi pengaturan manual terkait pergerakan

servo)

- Panduan pengguna (berisi tutorial penggunaan alat) - Tentang skripsi (berisi informasi tentang alat)

- Tentang saya (berisi informasi tentang penulis yang membuat tugas akhir sistem kendali otomatis antenna parabola)

Komponen LCD display yang digunakan adalah LCD numerik 4 baris 20 kolom atau 20 karakter per baris. Fungsi menu interface yang digunakan pada tugas akhir ini menggunakan library program menu buatan Liu yaitu Phi Interface

(http://liudr.wordpress.com/libraries/phi_interfaces).

Dengan menggunakan library tersebut dapat memudahkan dalam pembuatan interface menu bertingkat, dan memaksimalkan kinerja keypad dan LCD untuk beragam fungsi yang berbeda.

(26)

3.3. Pembuatan Sistem Kendali Otomatis Antenna Parabola

Sistem kendali otomatis antenna parabola berbasis arduino telah dibuat dengan menggunakan rancangan desain penggerak motor servo untuk azimuth dan elevasi, keypad matrix 4x4, lcd display, dan sensor – sensor. Dalam suatu rangkaian kerja sistem, gambar 3.15 menunjukkan rangkaian sistem kendali otomatis antenna parabola secara keseluruhan.

Tegangan suplai mikrokontroller arduino dihasilkan dari adapter AC to DC 9V 1A, yang diinputkan pada arduino yang kemudian menyuplai daya pada sensor GPS, sensor kompas, sensor accelerometer dan motor servo azimuth dan elevasi dengan tegangan 5V, dengan banyak komponen yang terpasang, menjadikan display LCD mendapatkan arus tegangan yang tidak stabil sehingga dibuat percabangan keluaran adapter AC to DC 9V menggunakan rangkaian regulator menjadi tegangan 5V secara terpisah untuk mensuplai daya display LCD.

Rangkaian regulator sederhana menggunakan kapasitor 10µF pada sisi input dan output regulator IC 7805 sebagai pengurang ripple tegangan, dan dilengkapi LED disusun seri dengan resistor sebagai indikator tegangan keluaran regulator. Tegangan 5V keluaran regulator menjadi suplai utama LCD, dan input karakter berasal dari arduino, untuk

mengatur kecerahan layar menggunakan potensiometer 10KΩ terhubung

pada pin 3 LCD.

Sisi motor servo dilengkapi diode 1N007 dengan arah arus masuk ke motor, digunakan untuk mencegah arus balik ke sistem yang diakibatkan

(27)

gerakan motor dari pengaruh eksternal seperti memutar- mutar motor servo dengan tangan yang mengakibatkan motor menghasilkan arus listrik yang mengalir ke sistem mikrokontroller.

Kapasitor sebesar 100µF dipasang pada antara input Vcc dan GND pada motor servo untuk menstabilkan ripple yang terjadi akibat instruksi yang diberikan oleh arduino.

(28)

PWM COMUNICATION D IG IT A L ANALOG IN ATMEGA2560 16AU 1126 T X0 T X3 T X2 T X1 SD A SC L R X0 RX3 R X2 R X1 P D 0 /S C L /I N T 0 2 1 P D 1 /S D A /I N T 1 2 0 P D 2 /R X D 1 /I N T 2 1 9 P D 3 /T X D 1 /I N T 3 1 8 P H 0 /R X D 2 1 7 P H 1 /T X D 2 1 6 P J 0 /R X D 3 /P C IN T 9 1 5 P J 1 /T X D 3 /P C IN T 1 0 1 4 P E 0 /R X D 0 /P C IN T 8 0 P E 1 /T X D 0 /P D O 1 P E 4 /O C 3 B /I N T 4 2 P E 5 /O C 3 C /I N T 5 3 P G 5 /O C 0 B 4 P E 3 /O C 3 A /A IN 1 5 P H 3 /O C 4 A 6 P H 4 /O C 4 B 7 P H 5 /O C 4 C 8 P H 6 /O C 2 B 9 P B 4 /O C 2 A /P C IN T 4 1 0 P B 5 /O C 1 A /P C IN T 5 1 1 P B 6 /O C 1 B /P C IN T 6 1 2 P B 7 /O C 0 A /O C 1 C /P C IN T 7 1 3 A R E F PA0/AD0 22 PA1/AD1 23 PA2/AD2 24 PA3/AD3 25 PA4/AD4 26 PA5/AD5 27 PA6/AD6 28 PA7/AD7 29 PC6/A14 31 PC5/A13 32 PC4/A12 33 PC3/A11 34 PC2/A10 35 PC1/A9 36 PC0/A8 37 PD7/T0 38 PG2/ALE 39 PG1/RD 40 PG0/WR 41 PL7 42 PL6 43 PL5/OC5C 44 PL4/OC5B 45 PL3/OC5A 46 PL2/T5 47 PL1/ICP5 48 PL0/ICP4 49 PB3/MISO/PCINT3 50 PB2/MOSI/PCINT2 51 PB1/SCK/PCINT1 52 PB0/SS/PCINT0 53 P K 7 /A D C 1 5 /P C IN T 2 3 A 1 5 P K 6 /A D C 1 4 /P C IN T 2 2 A 1 4 P K 5 /A D C 1 3 /P C IN T 2 1 A 1 3 P K 4 /A D C 1 2 /P C IN T 2 0 A 1 2 P K 3 /A D C 1 1 /P C IN T 1 9 A 11 P K 2 /A D C 1 0 /P C IN T 1 8 A 1 0 P K 1 /A D C 9 /P C IN T 1 7 A 9 P K 0 /A D C 8 /P C IN T 1 6 A 8 P F 7 /A D C 7 /T D I A 7 P F 6 /A D C 6 /T D O A 6 P F 5 /A D C 5 /T M S A 5 P F 4 /A D C 4 /T C K A 4 P F 3 /A D C 3 A 3 P F 2 /A D C 2 A 2 P F 1 /A D C 1 A 1 P F 0 /A D C 0 A 0 R E S E T PC7/A15 30 M IK R O K O N T R O L L E R A R D U IN O M E G A 2 5 6 0 R 3 V C C = 9 V F R O M A C A D A P T E R D 7 1 4 D 6 1 3 D 5 1 2 D 4 1 1 D 3 1 0 D 2 9 D 1 8 D 0 7 E 6 R W 5 R S 4 V S S 1 V D D 2 V E E 3 LCD DISPLAY GND POTENSIO 10K +88.8 SERVO AZIMUTH TGY-R5180-MG +88.8 SERVO ELEVASI TGY-R5180-MG A B C D 1 2 3 3 9 8 7 6 5 4 2 1 # 0 A B C D 1 2 3 4 A C B D 4 B C D 1 A 3 2 4 MKP1 KEYPAD-4X4ABCD R2 4.7K R3 4.7K R4 4.7K R5 4.7K R6 4.7K R7 4.7K LCD 5V C3 100u C4 100u 5V FROM ARDUINO GND

GPS SHIELD UBLOX LEA-5H

VCC 1 GND 2 SDA 4 SCL 5 GPS1 GPS SHIELD VCC 1 GND 3 SDA 5 SCL 4 COMP1 COMPASS ACCELEROMETER ADXL345 VCC 2 GND 1 SDA 7 SCL 8 ACC1 ACCELEROMETER 5V FROM ARDUINO SDA SCL SDA SCL VI 1 VO 3 G N D 2 REGULATOR 7805 C1 10u C210u R1 100Ohm D1 LED-RED 9V FROM AC ADAPTER LCD 5V D2 DIODE D3 DIODE KONVERTER TEGANGAN 9V KE 5V SUPLAI TEGANGAN KE LCD TERPISAH DARI SISTEM SUPAYA TIDAK TERJADI BAD CHARACTER DISPLAY

PENGGERAK MOTOR ANTENNA

KEYPAD PENGENDALI SISTEM BAGIAN SENSOR PENERIMAAN SINYAL GPS, KOMPAS, DAN GRAVITASI

DISPLAY MENAMPILKAN MENU DAN PROSES KERJA SISTEM

SISTEM KENDA LI OT OM A TIS A NTENNA P A RA BOLA BERBA SIS A RDUINO UNTUK SA TELLITE GA THERING NEW S V A N UNIT PT M EDIA TELEVISI INDONESIA G am ba r 3.1 5 R an g k ai an S ist em K en d al i O to m at is A n ten n a P ar ab o la b er b asi s A rd u in o

(29)

3.3.1. Bagian Pembacaan Koordinat Lokasi Stasiun Bumi

a. Pembacaan koordinat lokasi dengan sensor GPS

Perancangan pembacaan koordinat lokasi sudah dijelaskan pada bagian metode pembacaan koordinat GPS dari baris informasi NMEA yang dikirimkan oleh satelit GPS ke perangkat GPS receiver, yaitu dengan memisah- misahkan informasi berdasarkan tanda pemisah “,”. Dengan demikian dapat dibuat program untuk memisah- misahkan informasi yang dikirimkan menjadi beberapa informasi terpisah yang dapat digunakan kembali dalam proses mendapatkan nilai sudut azimuth dan elevasi.

Untuk melakukan pembacaan informasi dari satelit GPS, komunikasi menggunakan wire i2c, yaitu port SDA pada pin 20 arduino Mega 2560 R3 dengan jumper dihubungkan dengan port SDA pada GPS shield Ublox LEA-5H pada pin 5, dan port SCL pada pin 21 arduino Mega 2560 R3 dengan jumper dihubungkan dengan port SCL pada GPS shield Ublox LEA-5H pada pin 4.

(30)

Gambar 3.16 Koneksi jumper i2C arduino dengan GPS shield Berikut kode program untuk memanggil dan memerintahkan GPS Shield,

(31)

#if defined(ARDUINO) && ARDUINO >= 100 #include "Arduino.h"

#define WireSend(args) Wire.write(args) //menyederhanakan perintah Wire.write menjadi WireSend

#define WireRead(args) Wire.read(args) //menyederhanakan perinta Wire.read menjadi WireRead

#define printByte(args) Serial.write(args) //menyederhanakan perintah Serial.write menjadi printByte

#define printlnByte(args) Serial.write(args),Serial.println() #else

#include "WProgram.h"

#define WireSend(args) Wire.send(args) #define WireRead(args) Wire.receive(args) #define printByte(args) Serial.print(args,BYTE) #define printlnByte(args) Serial.println(args,BYTE)

//menyederhanakan perintah Serial.println menjadi printlnByte #endif

#include <Wire.h>

#define BUFFER_LENGTH 10//Menentukan panjang buffer sebesar 10bit untuk mencakup seluruh kode informasi dari satelit ke GPS

int GPSAddress = 0x42; //Menentukan alamat i2C pada GPS yang akan diakses

Arduino mega 2560 R3 menggunakan library Arduino.h, Wprogram.h dan Wire.h untuk melakukan komunikasi wire i2c antar dua sistem pada alamat 0x42 yang merupakan alamat i2c unik pada sensor GPS ublox LEA-5h, menggunakan lebar buffer 10bit cukup untuk menampung deret kode informasi yang diterima oleh sensor GPS yang kemudian dikirimkan ke mikrokontroller untuk kemudian diolah lebih lanjut. Dan untuk memulai pengambilan data menggunakan kode berikut beserta penjelasan,

(32)

//Inisialisasi data logging dari GPS

double Datatransfer(char *data_buf,char num) { double temp=0.0;

unsigned char i,j; if(data_buf[0]=='-') { i=1; while(data_buf[i]!='.') temp=temp*10+(data_buf[i++]-0x30); for(j=0;j<num;j++) temp=temp*10+(data_buf[++i]-0x30); for(j=0;j<num;j++) temp=temp/10; temp=0-temp; } else { i=0; while(data_buf[i]!='.') temp=temp*10+(data_buf[i++]-0x30); for(j=0;j<num;j++) temp=temp*10+(data_buf[++i]-0x30); for(j=0;j<num;j++) temp=temp/10 ; } return temp; }

Pada baris program diatas membuat fungsi Datatransfer dengan definisi *data_buf dan num sebagai char, sedangkan temp sebagai definisi sementara dari baris informasi yang diterima dari GPS yang kemudian akan dipisah- pisah menjadi informasi tersendiri. Pada baris program diatas berisi perintah untuk menyusun deret informasi dari satelit GPS ke GPS receiver.

Pada baris kode berikut berisi baris program void rec_init() yang memerintahkan GPS shield untuk memulai transmisi dengan wire dengan melakukan permintaan kode $GPGGA (Global Positioning System Fix Data)

(33)

void rec_init() { Wire.beginTransmission(GPSAddress); WireSend(0xff); Wire.endTransmission(); Wire.beginTransmission(GPSAddress); Wire.requestFrom(GPSAddress,10); } char ID() { char i = 0; char value[7]={ '$','G','P','G','G','A',',' }; char buff[7]={ '0','0','0','0','0','0','0' }; while(1) { rec_init(); while(Wire.available()) { buff[i] = WireRead(); if(buff[i]==value[i]) { i++; if(i==7) { Wire.endTransmission(); return 1; } } else i=0; } Wire.endTransmission(); } }

Setelah arduino melalui GPS shield melakukan pengiriman permintaan informasi lokasi ke satelit, maka perlu perintah pembacaan informasi dari GPS, pada baris program berikut void rec_data() berfungi untuk merekam informasi yang dikirim satelit ke GPS shield, ketika format permintaan $GPGGA dikirimkan GPS shield akan selalu melakukan perintah pengiriman informasi melalui rec_init(); dan sementara dilakukan hubungan wire, mikrokontroller akan selalu menyimpan informasi yang diterima dengan penanda “,” sehingga jika masih

(34)

terdapat tanda “,” pada informasi yang dikirimkan maka penerimaan informasi per karakter akan selalu direkam, dan jika selama perekaman informasi jumlah karakter yang diterima sudah habis maka transmisi komunikasi wire dihentikan.

void rec_data(char *buff,char num1,char num2) { char i=0,count=0; if(ID()) { while(1) { rec_init(); while(Wire.available()) { buff[i] = WireRead(); if(count!=num1) { if(buff[i]==',') count++; } else { i++; if(i==num2) { Wire.endTransmission(); return; } } } Wire.endTransmission(); } } }

Setelah informasi lokasi diterima oleh mikrokontroller dari GPS shield, informasi yang diterima dipilih berdasarkan kebutuhan. Sistem kendali otomatis antenna parabola berbasis arduino yang dirancang hanya menggunakan informasi koordinat lintang dan bujur, sehingga hanya diperlukan baris program sebagai berikut yaitu void latitiude()

untuk menentukan koordinat lintang, void lat_dir() untuk menentukan orientasi arah lintang, void longitude() untuk menentukan koordinat

(35)

bujur bumi, dan void lon_dir() untuk menentukan orientasi arah bujur bumi,

void latitude() {

char dir[1]={'0'}; //membuat karakter dir untuk arah lintang terdiri dari satu karakter

rec_data(dir,2,1); //mengambil data dari rec_data() pada posisi titik koma kedua (karakter koma ketiga karena dalam desimal bilangan dimulai dari nol)

char lat[10]={

'0','0','0','0','0','0','0','0','0','0' }; //membuat karakter lat untuk lintang sebanyak 10 karakter

rec_data(lat,1 ,10); //mengambil data dari rec_data() pada posisi titik koma kesatu sebanyak 10 karakter

// konversi nilai char lintang menjadi string String latstring = lat;

// konversi string menjadi bilangan angka karena string tidak dapat dimasukkan dalam format kalkulasi angka

latstring.toCharArray(lat, sizeof(lat));

// pemisahan nilai koordinat dan proses pengubahan nilai derajat detik menit menjadi derajat desimal

float lat2floatawal = atof(lat); //mengubah nilai lintang menjadi tipe float

int lat2digitawal = lat2floatawal/100; //mempersiapkan bilangan untuk digit awal derajat

float latfloat = (lat2floatawal - lat2digitawal*100)/60; //mempersiapkan bilangan untuk bilangan desimal

float latdeg=lat2digitawal + latfloat; //menggabungkan bilangan derajat dengan bilangan desimal

switch (dir[0]) {

case 'N': latdeg=latdeg; //jika orientasi arah sama dengan utara nilai lintang positif

case 'S': latdeg=-1*latdeg; //jika orientasi arah sama dengan selatan nilai lintang negatif

default : break; }

koordinat_lat=latdeg; //hasil akhir koordinat lintang }

void lat_dir() {

char lintang;

char dir[1]={'0'}; //membuat karakter dir untuk arah lintang terdiri dari satu karakter

rec_data(dir,2,1); //mengambil data dari rec_data() pada posisi titik koma kedua (karakter koma ketiga karena dalam desimal bilangan dimulai dari nol)

switch (dir[0]) {

(36)

// mengubah tanda baca utara dan selatan dari north dan south untuk memudahkan pembacaan

case 'N': lintang = 'U'; case 'S': lintang = 'S'; default : break; } arah_lat=lintang; } void longitude() {

char dir[1]={'0'}; //membuat karakter dir untuk arah bujur terdiri dari satu karakter

rec_data(dir,4,1); //mengambil data dari rec_data() pada posisi titik koma keempat (karakter koma kelima karena dalam desimal bilangan dimulai dari nol)

char lon[11]={

'0','0','0','0','0','0','0','0','0','0','0' }; //membuat karakter lon untuk bujur sebanyak 10 karakter

rec_data(lon,3,11); //mengambil data dari rec_data() pada posisi titik koma ketiga sebanyak 10 karakter

// konversi nilai char lintang menjadi string String lonstring = lon;

// konversi string menjadi bilangan angka karena string tidak dapat dimasukkan dalam format kalkulasi angka

lonstring.toCharArray(lon, sizeof(lon));

// pemisahan nilai koordinat dan proses pengubahan nilai derajat detik menit menjadi derajat desimal

float lon2floatawal = atof(lon); //mengubah karakter longitude menjadi float

int lon2digitawal = lon2floatawal/100; //memisahkan karakter derajat awal dengan desimal setelah koma

float lonfloat = (lon2floatawal - lon2digitawal*100)/60; //mengubah bilangan menit menjadi desimal

float londeg = lon2digitawal + lonfloat; //menggabungkan bilangan derajat dengan bilangan desimal

switch (dir[0]) //mengubah nilai bujur berdasarkan orientasi arah {

case 'W': londeg=-1*londeg; //jika berada di barat, bujur bernilai negatif

case 'E': londeg=londeg; //bujur bernilai posifit jika bujur timur default : break;

}

koordinat_long=londeg; //hasil akhir koordinat bujur }

void lon_dir()

{

(37)

char dir[1]={'0'}; //membuat karakter dir untuk arah bujur terdiri dari satu karakter

rec_data(dir,4,1); //mengambil data dari rec_data() pada posisi titik koma keempat (karakter koma kelima karena dalam desimal bilangan dimulai dari nol)

switch (dir[0]) {

// mengubah tanda baca barat dan timur dari west dan east untuk memudahkan pembacaan

case 'W': bujur = 'B'; case 'E': bujur = 'T'; default : break; }

arah_long=bujur; }

//Selesai

b. Data koordinat Satelit yang digunakan unit Van SNG PT MEDIA

TELEVISI INDONESIA

Sistem kendali otomatis Antenna Parabola berbasis Arduino untuk unit Van SNG PT MEDIA TELEVISI INDONESIA menggunakan beberapa satelit yang digunakan untuk mengirimkan informasi video dan audio melalui transmisi satelit ke studio.

(38)

Satelit Palapa D pada koordinat 113° Bujur Timur

Gambar 3.17 Satelit Palapa D pada situs lyngsat.com

Satelit Palapa D dibuat oleh Thales Alenia Space Prancis dan diluncurkan di cina pada 31 agustus 2009. Satelit mulai melayani secara komersial pada lintasan orbit 113° Bujur timur sejak 14 Nopember 2009. Satelit Palapa D memberikan pelayanan pada sektor penyiaran, akses internet, VSAT dan layanan backbone jaringan seluler.

(39)

Gambar 3.18 Coverage Satelit Palapa D Lingkup Asia Pasifik

Gambar 3.19 Coverage Satelit Palapa D Lingkup ASEAN

(40)

Satelit Telkom 1 dan Telkom 2

Satelit Telkom 1 beroperasi pada 108° Bujur Timur sedangkan Satelit Telkom 2 beroperasi pada 118° Bujur Timur.

Gambar 3.21 Satelit Telkom 1 pada situs lyngsat.com

Gambar 3.22 Satelit Telkom 2 pada situs lyngsat.com

Satelit Telkom 1 diluncurkan pada 12 Agustus 1999 sedangkan Satelit Telkom 2 diluncurkan pada 16 Nopember 2005. Kedua satelit ini

(41)

berguna untuk melayani berbagai siaran televisi di indonesia, internet, layanan telekomunikasi, dan komunikasi militer. Cakupan wilayah coverage dan beberapa fitur satelit Telkom adalah seperti ditunjukkan pada gambar 3.23 dan gambar 3.24.

Gambar 3.23 Ruang lingkup jangkauan dan fitur Satelit Telkom 1

(42)

Satelit Asiasat 3S dan Asiasat 5

Satelit Asiasat 3S beroperasi pada koordinat 120° Bujur Timur sedangkan Satelit Asiasat 5 beroperasi pada koordinat 100,5° Bujur Timur. Satelit Asiasat 3S diluncurkan pada 21 maret 1999 sedangkan satelit Asiasat 5 diluncurkan pada 11 agustus 2009. Satelit Asiasat digunakan untuk transmisi video dan audio dari stasiun televisi di luar negeri ke studio stasiun televisi di PT MEDIA TELEVISI INDONESIA.

Gambar 3.25 Satelit Asiasat 3S pada situs lyngsat.com

(43)

3.3.2. Bagian Perhitungan nilai sudut Azimuth, dan Elevasi Antenna Parabola

a. Pembacaan sensor Kompas, dan Akselerometer

Sedangkan untuk membaca informasi arah mata angin dari chip HMC5983 pada mikrokontroller arduino diperlukan kode program sebagai berikut,

#include <Wire.h> #include "compass.h" void setup(){

Serial.begin(9600); //memulai komunikasi serial Wire.begin(); //memulai komunikasi wire i2c

//data perbaikan offset dan error pada kompas untuk memperbaiki pembacaan kompas compass_x_offset = 122.17; compass_y_offset = 230.08; compass_z_offset = 389.85; compass_x_gainError = 1.12; compass_y_gainError = 1.13; compass_z_gainError = 1.03;

compass_init(2); //menjalankan kompas setelah dua detik

compass_debug = 1; // masukkan angka 1 untuk menjalankan debug kompas dan mendapatkan nilai offset dan error yang dapat dimasukkan pada baris program, angka 0 untuk menon aktifkan fungsi debug compass_offset_calibration(3); // fungsi kalibrasi kompas berjalan setelah 3 detik, ketika menjalankan kalibrasi putar sensor kompas 360 derajat perlahan selama 2 menit

}

void loop(){

compass_scalled_reading(); //memanggil nilai baca kompas pada sumbu X, Y, dan Z Serial.print("x = "); Serial.println(compass_x_scalled); Serial.print("y = "); Serial.println(compass_y_scalled); Serial.print("z = "); Serial.println(compass_z_scalled);

compass_heading(); // memanggil nilai baca arah mata angin kompas Serial.print ("Heading angle = ");

Serial.print (bearing); Serial.println(" Degree");

delay(3000); // delay selama 3 detik per operasi program }

(44)

Program diatas merupakan referensi program kompas dari module chip kompas HMC5983 yang kemudian akan dimodifikasi supaya sesuai dengan penggunaan pada sistem kendali otomatis antenna parabola. Pada pembahasan selanjutnya, sensor kompas memiliki kendala ketika berada pada kemiringan tertentu maka sensor kompas akan mengalami kesalahan perhitungan, sehingga untuk meminimalisir masalah tersebut diperlukan sensor akselerometer.

Sensor akselerometer pada bagian perancangan telah dibahas berfungsi untuk mentoleransi pembacaan sensor kompas akibat kemiringan sehingga nilai arah mata angin yang dibaca lebih akurat. Dengan menggunakan persamaan 3.2, 3.5 dan 3.6,

𝑁𝑁𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑚𝑚𝑅𝑅𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 =𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗

cos(𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ) +𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑍𝑍𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗sin(𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ)

𝑁𝑁𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑚𝑚𝑅𝑅𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 = (𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑋𝑋𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗

sin(𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛)∗sin (𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ)) + (𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗

cos(𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛))−(𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑍𝑍𝑎𝑎𝑅𝑅𝑚𝑚𝑘𝑘𝐴𝐴𝑠𝑠 ∗sin(𝑅𝑅𝑅𝑅𝑛𝑛𝑛𝑛)∗cos(𝑃𝑃𝑎𝑎𝑚𝑚𝑎𝑎ℎ))

𝐴𝐴𝐴𝐴𝐴𝐴ℎ𝑚𝑚𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎= 𝐴𝐴𝐴𝐴𝑎𝑎tan(𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑛𝑛𝐴𝐴𝑎𝑎𝑚𝑚𝑅𝑅𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝑠𝑠𝑎𝑎𝑚𝑚𝑅𝑅𝑛𝑛𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝑠𝑠𝑎𝑎𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑠𝑚𝑚𝑠𝑠𝑠𝑠𝑌𝑌𝑋𝑋)

Dan memasukkan kedalam kode program sensor arah mata angin melalui arduino IDE, maka dapat dibuat baris program sebagai berikut

(45)

// Program Kompas dan Akselerometer // Mengambil data Kompas

void kompas() {

compass_scalled_reading();

//Pembacaan sumbu X, Y, Z kompas float Xcom=compass_x_scalled; float Ycom=compass_y_scalled; float Zcom=compass_z_scalled;

//Mengambil data Accelerometer sensors_event_t event; accel.getEvent(&event);

//Pembacaan sumbu X, Y, Z accelerometer float Xacc=event.acceleration.x; float Yacc=event.acceleration.y; float Zacc=event.acceleration.z;

Sebagai program terpisah untuk memudahkan memahami alur kerja sistem, dibuat void kompas(), pada bagian awal program dibuat pembacaan kompas pada sumbu X, Y dan Z serta pembacaan sensor akselerometer pada sumbu X, Y dan Z, kemudian dengan memperhitungkan roll dan pitch dari sensor accelerometer, dapat dihitung nilai toleransi sumbu X dan sumbu Y sensor kompas berdasarkan perhitungan terhadap roll dan pitch sensor akselerometer.

//Menghitung Pitch dan Roll accelerometer float rollRadians = atan2 (Yacc, Zacc) ; float pitchRadians = atan2 (Xacc, Zacc) ;

//Menghitung arah kompas dengan toleransi Accelerometer float cosRoll = cos(rollRadians);

float sinRoll = sin(rollRadians); float cosPitch = cos(pitchRadians); float sinPitch = sin(pitchRadians);

float Xtol = Xcom * cosPitch + Zcom * sinPitch;

float Ytol = Xcom * sinRoll * sinPitch + Ycom * cosRoll - Zcom * sinRoll * cosPitch;

mata_angin=atan2(Ytol, Xtol);

Perhitungan program diatas telah menghasilkan nilai arah mata angin yang telah ditoleransi kemiringan benda oleh sensor kompas, namun untuk menambah akurasi pembacaan sensor kompas terhadap gaya tolak

(46)

medan magnet lokasi perlu ditambahkan parameter gaya tolak medan magnet yang dapat diperoleh nilai dari situs

www.magnetic-declination.com , melalui situs tersebut besaran gaya tolak medan magnet

di kota jakarta didapatkan senilai 0° 46 menit, bilangan tersebut perlu diubah menjadi satuan derajat desimal menggunakan persamaan 3.1 sehingga didapat nilai gaya tolak medan magnet sebesar

𝑑𝑑𝑑𝑑𝐴𝐴𝐴𝐴𝑑𝑑𝐴𝐴𝑚𝑚𝑑𝑑𝑑𝑑𝑠𝑠𝑎𝑎𝑚𝑚𝐴𝐴𝑛𝑛 = 0° +4660= 0° + 0.7667° =0,7667°

Gambar 3.27 Besaran gaya tolak medan magnet Jakarta Barat di situs

(47)

Kemudian memasukkan parameter gaya tolak medan magnet kedalam program beserta perubahan nilai radian menjadi derajat desimal dan penyesuaian jika nilai mata angin yang didapat melebihi 360° menjadi sebagai berikut,

// Koreksi sudut dengan pengaruh deklinasi magnetik dari www.magnetic-declination.com

float sudut_deklinasi = 0.7667;

mata_angin = mata_angin + sudut_deklinasi;

// Perbaikan jika simbol negatif if(mata_angin < 0)

mata_angin = mata_angin + 2*PI;

// Cek penambahan deklinasi if(mata_angin > 2*PI)

mata_angin = mata_angin - 2*PI;

// Ubah nilai radians ke degree untuk mempermudah pembacaan mata_angin = mata_angin * 180/PI;

//koreksi sumbu Utara karena Antena mengarah ke Barat mata_angin = mata_angin - 90;

//koreksi jika mata_angin bernilai negatif if (mata_angin<0) mata_angin = mata_angin+360; }

// Selesai

b. Perhitungan nilai sudut Azimuth dan Elevasi dengan menggunakan

faktor koreksi dari Arah Mata Angin

Sudut azimuth dan sudut elevasi pada sistem kendali otomatis antenna parabola dapat diperoleh dengan menggunakan persamaan 2.1 dan 2.2 pada bab 2. Pada Arduino IDE persamaan tersebut dapat dimasukkan kedalam baris pemrograman seperti berikut,

// Perhitungan rumus azimuth dan elevasi void perhitungan_az_el()

{

float beda_long=(koordinat_long-satelit)/57.29578; //menghitung selisih koordinat bujur satelit dengan bujur stasiun bumi dalam derajat, 1 derajat = 57.29578 radian

Azimuth=180+57.29578*atan(tan(beda_long)/sin((koordinat_lat/57.2957 8)));

if (koordinat_lat<0) Azimuth=Azimuth-180; // jika orientasi lintang negatif (selatan khatulistiwa) azimuth dikurangi 180

(48)

derajat

if (Azimuth<0) Azimuth=Azimuth+360.0; //jika azimuth bernilai negatif tambahkan 360 derajat

float koordinat_latr=koordinat_lat/57.29578; //mengubah koordinat lintang kedalam radian

float r1=1+35786/6378.16; //parameter radian keliling bumi float v1=r1*cos(koordinat_latr)*cos(beda_long)-1;

float

v2=r1*sqrt(1-cos(koordinat_latr)*cos(koordinat_latr)*cos(beda_long)*cos(beda_lon g));

Elevasi=57.29578*atan(v1/v2)-ant_offset; //mengubah nilai elevasi dari radian ke derajat dengan mengalikan terhadap 57.29578 dan menambahkan parameter antena offset

if (Elevasi < 0) Elevasi = NAN; // jika elevasi kurang dari nol, tampilkan error kode NAN yang berarti satelit berada sangat jauh dari stasiun bumi atau berada pada sisi lain bumi

//perhitungan polar, display opsional untuk parameter polar Polar=-57.29578*atan(sin(beda_long)/tan(koordinat_latr)); }

Baris program diatas menunjukkan perhitungan nilai sudut azimuth dan elevasi, namun nilai tersebut adalah nilai sudut azimuth dan elevasi terhadap sumbu arah utara kutub bumi, sehingga untuk membuat antenna parabola bergerak ke sudut azimuth dan elevasi yang tepat meski alat sistem kendali otomatis antenna parabola menghadap kearah mana saja perlu ditambahkan parameter nilai arah mata angin dari sensor kompas. Penggunaan sensor kompas untuk mendapatkan nilai derajat yang diperlukan untuk pergerakan servo azimuth dan elevasi memerlukan beberapa kriteria disebabkan pergerakan servo yang terbatas 180° berlawanan arah jarum jam. Servo yang digunakkan untuk prototype sistem kendali otomatis antenna parabola ini adalah servo turnigy TGY-R5180MG. Gambar 3.28 menunjukkan servo yang digunakkan dalam

(49)

model prototype sistem kendali otomatis antenna parabola berbasis arduino.

Gambar 3.28 Motor Servo Turnigy TGY-R5180MG Dikarenakan keterbatasan pergerakan servo tersebut, maka harus dimasukkan beberapa parameter perhitungan untuk mendapatkan nilai derajat servo azimuth dan elevasi yang tepat untuk mencapai nilai sudut azimuth dan elevasi satelit. Berikut 4 kondisi keadaan posisi stasiun bumi dibandingkan dengan posisi sudut azimuth dan sudut elevasi,

(50)

• Stasiun bumi berada pada arah mata angin selisih kurang dari 180° sudut azimuth

Gambar 3.29 Selisih arah mata angin kurang dari 180° sudut azimuth

Kondisi ini terjadi ketika stasiun bumi menghadap kearah lebih barat daripada arah sudut azimuth hasil perhitungan, dan selisih derajat arah mata angin dengan sudut azimuth hasil perhitungan kurang dari 180° sehingga motor servo masih dapat bergerak ke sudut azimuth hasil perhitungan karena masih dalam rentang batas gerak motor servo yaitu 180° berlawanan arah jarum jam. Sehingga dapat diketahui derajat pergerakan motor servo azimuth dan elevasi melalui persamaan berikut,

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

=𝐴𝐴𝐴𝐴𝐴𝐴ℎ𝑚𝑚𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎

− 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ… … … (3.7)

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎

=𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎… … … (3.8) Arah mata angin

(51)

• Stasiun bumi berada pada arah mata angin selisih lebih dari 180° hingga kurang dari 360° sudut azimuth

Gambar 3.30 Selisih arah mata angin lebih dari 180° dan kurang dari 360° sudut azimuth

Kondisi ini terjadi ketika stasiun bumi menghadap kearah lebih barat daripada arah sudut azimuth hasil perhitungan, dan selisih derajat arah mata angin dengan sudut azimuth hasil perhitungan lebih dari 180° dan kurang dari 360° sehingga motor servo tidak dapat mencapai sudut azimuth hasil perhitungan karena gerakan servo diluar rentang batas gerak motor servo yaitu 180° berlawanan arah jarum jam. Sehingga untuk dapat mencapai sudut azimuth yang tepat, dapat dilakukan dengan memutar balik 180° motor servo elevasi dan menggerakan motor servo azimuth hingga selisih antara sudut azimuth dan antenna parabola adalah 180° sehingga dapat diketahui derajat pergerakan motor servo azimuth dan elevasi melalui persamaan berikut,

(52)

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

= 𝐴𝐴𝐴𝐴𝐴𝐴ℎ𝑚𝑚𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 − 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

−180° … … … (3.9)

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎

= 180°− 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎… (3.10)

• Stasiun bumi berada pada arah mata angin selisih kurang dari 0° hingga lebih dari -180° sudut azimuth

Gambar 3.31 Selisih arah mata angin kurang dari 0° dan lebih dari -180° sudut azimuth

Kondisi ini terjadi ketika stasiun bumi menghadap kearah lebih timur daripada arah sudut azimuth hasil perhitungan, dan selisih derajat arah mata angin dengan sudut azimuth hasil perhitungan kurang dari 0° dan lebih dari -180° sehingga motor servo tidak dapat mencapai sudut azimuth hasil perhitungan karena gerakan servo diluar rentang batas gerak motor servo yaitu 180° berlawanan arah jarum jam. Sehingga untuk dapat mencapai

(53)

sudut azimuth yang tepat, dapat dilakukan dengan memutar balik 180° motor servo elevasi dan menggerakan motor servo azimuth hingga selisih antara sudut azimuth dan antenna parabola adalah 180° sehingga dapat diketahui derajat pergerakan motor servo azimuth dan elevasi melalui persamaan berikut,

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

= 𝐴𝐴𝐴𝐴𝐴𝐴ℎ𝑚𝑚𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 − 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

+ 180° … … … (3.11)

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎

= 180°− 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎… (3.12)

• Stasiun bumi berada pada arah mata angin selisih kurang dari -180° hingga lebih dari -360° sudut azimuth

Gambar 3.32 Selisih arah mata angin kurang dari -180° dan lebih dari -360° sudut azimuth

Kondisi ini terjadi ketika stasiun bumi menghadap kearah lebih timur daripada arah sudut azimuth hasil perhitungan, dan selisih derajat arah mata angin dengan sudut azimuth hasil perhitungan

(54)

kurang dari -180° dan lebih dari -360° sehingga motor servo masih dapat bergerak ke sudut azimuth hasil perhitungan karena masih dalam rentang batas gerak motor servo yaitu 180° berlawanan arah jarum jam. Sehingga dapat diketahui derajat pergerakan motor servo azimuth dan elevasi melalui persamaan berikut,

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

= 𝐴𝐴𝐴𝐴𝐴𝐴ℎ𝑚𝑚𝐴𝐴𝑚𝑚𝐴𝐴𝐴𝐴𝑎𝑎𝑎𝑎𝑎𝑎𝑎𝑎 − 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝐴𝐴𝑎𝑎𝑎𝑎𝑚𝑚𝑠𝑠𝑚𝑚ℎ

+ 360° … … … (3.13)

𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑘𝑘𝑑𝑑𝐴𝐴𝑎𝑎𝑑𝑑𝐴𝐴𝐴𝐴𝑎𝑎𝐴𝐴𝑎𝑎𝑠𝑠𝑑𝑑𝐴𝐴𝑠𝑠𝑅𝑅𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎 = 𝑠𝑠𝑠𝑠𝑑𝑑𝑠𝑠𝑚𝑚𝑑𝑑𝑛𝑛𝑑𝑑𝑠𝑠𝐴𝐴𝑠𝑠𝑎𝑎… (3.14)

Setelah mengetahui parameter gerak motor servo dengan menggunakan parameter nilai arah mata angin dan perhitungan sudut azimuth dan elevasi, dapat dibuat kode program yang sesuai sebagai berikut,

// Parameter pergerakan azimuth dan elevasi ke servo dikarenakan pergerakan servo terbatas 180 derajat berlawanan arah jarum jam, sedangkan azimuth searah jarum jam hingga 360 derajat

void arah_servo() {

float koreksi=mata_angin-Azimuth; if(koreksi >= 0 && koreksi <= 180) {

az=koreksi; el=Elevasi; }

if(koreksi > 180 && koreksi < 360) {

az=koreksi-180; el=180-Elevasi; }

if(koreksi <= 0 && koreksi >= -180) {

az=180+koreksi; el=180-Elevasi; }

(55)

if(koreksi < -180 && koreksi > -360) { az=360+koreksi; el=Elevasi; } } // Selesai

c. Konversi Sudut Azimuth dan Elevasi ke Pergerakan motor Servo

Pembahasan perhitungan nilai sudut Azimuth dan Elevasi dengan menggunakan faktor koreksi dari Arah Mata Angin telah memberikan nilai pergerakan yang tepat bagi motor servo untuk bergerak ke sudut azimuth dan sudut elevasi sesuai perhitungan, sehingga dapat dibuat kode program pergerakan servo sebagai berikut,

// Pergerakan Servo void servo_elevasi() { //elevasi pulse_el = sudut_el * 5.58 + 935; servo_elev.writeMicroseconds(pulse_el); delay(15); } void servo_azimuth() { //azimuth pulse_az = sudut_az * 5.49 + 974; servo_azim.writeMicroseconds(pulse_az); delay(15); }

Melalui percobaan beberapa kali untuk mendapatkan pulsa milidetik pergerakan servo didapatkan servo elevasi memerlukan waktu 935 milidetik untuk mencapai sudut 0° dan maksimum 1940 milidetik untuk mencapai 180° sedangkan servo azimuth memerlukan waktu 974 milidetik untuk mencapai sudut 0° dan maksimum 1962 milidetik untuk mencapai 180°. Nilai tersebut diperoleh setelah melalui program Arduino IDE dilakukan input penulisan program berulang- ulang pada

(56)

motor servo untuk mendapatkan waktu yang tepat untuk mencapai nilai titik tengah pergerakan motor servo yaitu 90°.

Pergerakan motor servo sudah sesuai ke sudut azimuth dan sudut elevasi yang tepat, kemudian supaya motor servo tidak selalu bergerak kembali ke posisi 0° ketika terjadi perubahan data dan perintah pergerakan servo, maka perlu dibuat karakter bersama pulsa sudut azimuth dan sudut elevasi. Kemudian implementasi untuk pergerakan servo tersebut dapat dibuat dalam kode program berikut,

// Pergerakan servo otomatis mengingat berdasarkan nilai sudut ter set sebelumnya void servo_otomatis() { if (el<0) el=0; if (el>180) el=180; if (az<0) az=0; if (az>180)az=180; if (sudut_az<az) { for(sudut_az=sudut_az;sudut_az<=az;sudut_az++) { servo_azimuth(); } sudut_az=az; } if(sudut_az>az) { for(sudut_az=sudut_az;sudut_az>=az;sudut_az--) { servo_azimuth(); } sudut_az=az; } if(sudut_el<el) { for(sudut_el=sudut_el;sudut_el<=el;sudut_el++) { servo_elevasi(); } sudut_el=el; } if(sudut_el>el) { for(sudut_el=sudut_el;sudut_el>=el;sudut_el--) { servo_elevasi(); } sudut_el=el; } }

(57)

Kemudian pada program yang dibuat, motor servo juga dapat dikendalikan secara manual melalui keypad yaitu pergerakan servo elevasi dan azimuth dengan pertambahan dan pengurangan 1°, fitur ini berguna untuk melakukan koreksi manual sudut antenna parabola sehingga sinyal penerimaan yang diterima dari satelit menjadi lebih baik. Berikut baris program untuk mengimplementasikan fungsi tersebut,

void gerak_servo_manual() {

while(1) {

char temp=my_btns.getKey(); //membuat karakter sementara temp sebagai input penerima dari keypad

switch(temp) {

case 'B': //tombol B berfungsi untuk kembali return;

break;

case '2': //tombol 2 berfungsi untuk menggerakan servo elevasi +1 derajat

el++;

servo_otomatis(); break;

case '8': //tombol 8 berfungsi untuk menggerakan servo elevasi -1 derajat

el--;

servo_otomatis(); break;

case '6': //tombol 6 berfungsi untuk menggerakan servo azimuth +1 derajat

az++;

servo_otomatis(); break;

case '4': //tombol 4 berfungsi untuk menggerakan servo azimuth -1 derajat

az--;

servo_otomatis(); break;

default: //jika tidak ada input yang sesuai dengan pilihan sebelumnya maka sistem break

break; } }}

(58)

3.3.3. Bagian Fungsi Interface Keypad dan LCD

a. Pembuatan tampilan LCD

Sistem kendali otomatis antenna parabola yang dibuat dirancang untuk dapat menampilkan berbagai informasi dan memiliki berbagai fungsi untuk dijalankan, sehingga display LCD diperlukan sebagai penunjuk bagi pengguna yang menggunakan alat ini. Lcd yang digunakan adalah LCD alphanumerik 4x20 dengan 16 pin konektor yang harus dihubungkan ke mikrokontroller arduino mega 2560 R3. Gambar 3.33 menunjukkan LCD display 4x20 dan gambar 3.34 wiring ke mikrokontroller.

(59)

Gambar 3.34 Koneksi jalur LCD ke Arduino Mega 2560 R3

Interface yang digunakan pada tugas akhir ini menggunakan library interface buatan Dr. Liu

(http://liudr.wordpress.com/libraries/phi_interfaces/) yang sudah

disertakan dalam paket library program menu, kendali keypad, dan kendali LCD. Pengaturan penggunaan LCD pada library di Arduino IDE adalah dengan mengubah beberapa baris program dari File > Examples > Phi_Prompt > dan pilih contoh program library untuk LCD 4x20. Gambar 3.35 menunjukkan menu pilihan pada Arduino IDE,

(60)

Gambar 3.35 Arduino IDE Phi Prompt Interface

Kemudian dengan memodifikasi beberapa baris pada bagian LCD sesuai dengan sistem yang akan dibuat yaitu sebagai berikut,

//Inisialisasi LCD #define lcd_rows 4 #define lcd_columns 20 #define LCD_RS 22 #define LCD_EN 24 #define LCD_D4 26 #define LCD_D5 28 #define LCD_D6 30 #define LCD_D7 32 #include "LCD.h" #include "LiquidCrystal.h" LiquidCrystal lcd(LCD_RS,LCD_EN,LCD_D4,LCD_D5,LCD_D6,LCD_D7); // Selesai

Baris program diatas mengatur mikrokontroller untuk menggunakan LCD dengan baris 4 dan kolom 4, pin RS LCD pada pin 22 arduino, pin Enable LCD pada pin 24, pin D4, D5, D6 dan D7 LCD berurutan pada pin 26,28,30 dan 32 pada board arduino. Backlight LCD display

menggunakan potensiometer 10KΩ yang terhubung pada pin 3 LCD seperti ditunjukkan pada gambar 3.34

(61)

b. Pembuatan fungsi perintah Keypad

Interface keypad pada sistem kendali otomatis antenna parabola menggunakan phi interface sebagai library pengendali. Keypad matrix 4x4 digunakan pada tugas akhir ini, fungsi yang diberikan dijelaskan pada bagian 3.2.2 Fungsi Interface Sistem Kendali Otomatis

Antenna Parabola dengan LCD dan Keypad. Gambar 3.36

menunjukkan keypad matrix 4x4 yang sudah dimodifikasi mengikuti fungsi yang diimplementasikan pada sistem kendali otomatis antenna parabola yang dibuat

Gambar 3.36 Keypad matrix 4x4

Gambar 3.37 menunjukkan hubungan rangkaian pada keypad terhadap arduino. Rangkaian keypad matrix menggunakan metode matrix untuk mengaktifkan tombol yang dipilih, merupakan rangkaian switch

sederhana yang terhubung paralel dengan resistor, yang bekerja jika satu tombol ditekan, akan mengaktifkan dua switch resistor yang tersusun

(62)

secara matrix dan mengirimkan pesan pada mikrokontroller tombol mana yang diaktifkan.

Gambar 3.37 Rangkaian keypad terhadap arduino

Baris program pada phi interface perlu diubah karena secara default, program library menggunakan switch button. Berikut baris program yang sudah dimodifikasi supaya mikrokontroller dapat mengenali input dari keypad.

// Inisialisasi Keypad dan Menu Navigasi

PWM COMUNICATION D IG IT A L ANALOG IN ATMEGA2560 16AU 1126 T X0 T X3 T X2 T X1 SD A SC L R X0 R X3 R X2 R X1 P D 0 /S C L /I N T 0 2 1 P D 1 /S D A /I N T 1 2 0 P D 2 /R X D 1 /I N T 2 1 9 P D 3 /T X D 1 /I N T 3 1 8 P H 0 /R X D 2 1 7 P H 1 /T X D 2 1 6 P J 0 /R X D 3 /P C IN T 9 1 5 P J 1 /T X D 3 /P C IN T 1 0 1 4 P E 0 /R X D 0 /P C IN T 8 0 P E 1 /T X D 0 /P D O 1 P E 4 /O C 3 B /I N T 4 2 P E 5 /O C 3 C /I N T 5 3 P G 5 /O C 0 B 4 P E 3 /O C 3 A /A IN 1 5 P H 3 /O C 4 A 6 P H 4 /O C 4 B 7 P H 5 /O C 4 C 8 P H 6 /O C 2 B 9 P B 4 /O C 2 A /P C IN T 4 1 0 P B 5 /O C 1 A /P C IN T 5 1 1 P B 6 /O C 1 B /P C IN T 6 1 2 P B 7 /O C 0 A /O C 1 C /P C IN T 7 1 3 A R E F PA0/AD0 22 PA1/AD1 23 PA2/AD2 24 PA3/AD3 25 PA4/AD4 26 PA5/AD5 27 PA6/AD6 28 PA7/AD7 29 PC6/A14 31 PC5/A13 32 PC4/A12 33 PC3/A11 34 PC2/A10 35 PC1/A9 36 PC0/A8 37 PD7/T0 38 PG2/ALE 39 PG1/RD 40 PG0/WR 41 PL7 42 PL6 43 PL5/OC5C 44 PL4/OC5B 45 PL3/OC5A 46 PL2/T5 47 PL1/ICP5 48 PL0/ICP4 49 PB3/MISO/PCINT3 50 PB2/MOSI/PCINT2 51 PB1/SCK/PCINT1 52 PB0/SS/PCINT0 53 P K 7 /A D C 1 5 /P C IN T 2 3 A 1 5 P K 6 /A D C 1 4 /P C IN T 2 2 A 1 4 P K 5 /A D C 1 3 /P C IN T 2 1 A 1 3 P K 4 /A D C 1 2 /P C IN T 2 0 A 1 2 P K 3 /A D C 1 1 /P C IN T 1 9 A 11 P K 2 /A D C 1 0 /P C IN T 1 8 A 1 0 P K 1 /A D C 9 /P C IN T 1 7 A 9 P K 0 /A D C 8 /P C IN T 1 6 A 8 P F 7 /A D C 7 /T D I A 7 P F 6 /A D C 6 /T D O A 6 P F 5 /A D C 5 /T M S A 5 P F 4 /A D C 4 /T C K A 4 P F 3 /A D C 3 A 3 P F 2 /A D C 2 A 2 P F 1 /A D C 1 A 1 P F 0 /A D C 0 A 0 R E S E T PC7/A15 30 M IK R O K O N T R O L L E R A R D U IN O M E G A 2 5 6 0 R 3 V C C = 9 V F R O M A C A D A P T E R D 7 1 4 D 6 1 3 D 5 1 2 D 4 1 1 D 3 1 0 D 2 9 D 1 8 D 0 7 E 6 R W 5 R S 4 V S S 1 V D D 2 V E E 3 LCD DISPLAY POTENSIO 10K A B C D 1 2 3 3 9 8 7 6 5 4 2 1 # 0 A B C D 1 2 3 4 A C B D 4 B C D 1 A 3 2 4 MKP1 KEYPAD-4X4ABCD LCD 5V SDA SCL

Gambar

Gambar 3.1 berikut  menjelaskan  bagan alur kerja sistem kendali otomatis  antenna parabola yang dirancang,
Gambar 3.5 Ilustrasi kerja akselerometer gravitasi nol
Gambar 3.6 Ilustrasi kerja akselerometer ketika benda bergerak  Akselerometer selalu bekerja dan mendeteksi gaya berlawanan dengan  arah gerak benda
Gambar 3.8 Ilustrasi kerja Akselerometer ketika berguling dalam  medan gravitasi
+7

Referensi

Dokumen terkait

Peneliti ingin membantah dukungan dari data dari penelitian yang dilakukan oleh Ariestya Ayu Permata S.IIP dalam penelitiannya yang berjudul pemanfaatan media untuk jual

ROTI memiliki indikator Stoc osc ,Macd dan Rsi mengindikasikan pola Uptrend, ROTI belum berhasil menembus Resistance di level harga 1590 sehingga terbuka peluang untuk menguji

Hasil studi ini memperlihatkan bahwa pemanfaatan selulosa dari limbah organik masih belum layak untuk digunakan dalam sintesis selulosa asetat, hal ini disebabkan karena

Sebelumnya berdasarkan Gambar 1. Selama periode tahun 2000-2011 tercatat telah terjadi sepuluh kali perubahan harga BBM dan tujuh kali perubahan TDL. Untuk itu

Usaha ini akan memproduksi dan menjual tanaman/hasil tanaman hidroponik yang kami garap, bahan bakunya adalah seperti paralon, lampu, bahan material, polibek, dan lain sebagainya. Produk yang dihasilkan dapat digunakan sepraktis

Yang pertama, dilaksanakan ketika memberikan kuasa penuh ke penjual tiket untuk memilihkan tempat duduk, diusahakan mendapatkan kursi yang berdekatan sesuai jumlah tiket

Penanaman padi dengan jarak tanam 25 x 25 cm dengan metode penggenangan air pada saat umur tanam 35 hss sangat efektif dalam metode penggenangan air serta

alat hiburan, tetapi juga sebagai bentuk seni yang mempelajari dan meneliti segi-segi kehidupan dan nilai-nilai baik buruk (moral) dalam kehidupan ini dan