BAB 3 PERANCANGAN SISTEM
3.1
Blok Diagram Perangkat Keras
Sistem perangkat keras yang digunakan dalam penelitian ini ditunjukkan oleh blok diagram berikut: Computer
Parallel Port
Serial Port
ICSP
Level Converter
Microcontroller
Motor Driver Encoder DC Motor Gambar 3.1: Blok Diagram Perangkat Keras
3.1.1
Computer Computer merupakan perangkat lunak yang digunakan untuk mengendalikan
Microcontroller dalam hal pengaturan posisi dari DC Motor. Selain itu, Computer juga digunakan untuk membaca data yang diterima dari Encoder oleh Microcontroller.
23
24 Perangkat lunak yang digunakan merupakan program open-source dengan nama Arduino.
3.1.1.1 Arduino Programming Tool Arduino merupakan perangkat pemrograman mikrokontroler jenis AVR yang tersedia secara bebas (open-source) untuk membuat prototip elektronika dengan menggunakan bahasa pemrograman C. Program ini ditujukan untuk siapa saja yang ingin membuat perangkat elektronika yang dapat berinteraksi dengan keadaan sekitarnya. Arduino dapat menerima input dari berbagai jenis sensor dan mengendalikan lampu, motor, dan aktuator lainnya.
Gambar 3.2: Tampilan Utama Aplikasi Arduino
25 Layar utama Arduino terdiri dari 4 bagian, yaitu: 1. Toolbar
Gambar 3.3: Toolbar pada Aplikasi Arduino 1) Verify Tombol ini digunakan untuk meng-compile program yang telah dibuat. Compile berguna untuk mengetahui apakah program yang dibuat telah benar atau masih memiliki kesalahan. Apabila ada kesalahan yang terjadi, bagian Message akan menampilkan letak kesalahan tersebut. 2) Stop Tombol ini digunakan untuk membatalkan proses Verify yang sedang berlangsung. 3) New Tombol ini digunakan untuk membuat coding pada window yang baru. 4) Open Tombol ini digunakan untuk membuka coding yang sudah disimpan sebelumnya. 5) Save Tombol ini digunakan untuk menyimpan coding yang sedang dikerjakan. 6) Upload Tombol ini digunakan untuk mengirim coding yang sedang dikerjakan ke mikrokontroler. 7) Serial Monitor
26 Tombol ini digunakan untuk melihat aktivitas komunikasi serial dari mikrokontroler baik yang dikirim oleh user ke mikrokontroler maupun sebaliknya.
2. Coding area Bagian ini merupakan tempat penulisan coding dengan menggunakan bahasa pemrograman C. Coding di dalam Arduino memiliki 2 (dua) bagian utama, yaitu: 1) void setup() Bagian ini merupakan inisialisasi yang diperlukan sebelum program utama dijalankan. Contoh: void setup() { Serial.begin(19200);
// inisialisasi baudrate komunikasi serial.
pinMode(5, INPUT);
// set pin no. 5 Arduino sebagai Input.
pinMode(12, OUTPUT);
// set pin no. 12 Arduino sebagai Output.
}
2) void loop() Bagian ini merupakan fungsi utama yang dijalankan terus menerus selama modul Arduino terhubung dengan power supply. Contoh: void loop() { digitalWrite(13, HIGH);
// memberikan logic High pada pin 13.
delay(1000);
// menunda selama 1 detik.
27 digitalWrite(13, LOW);
// memberikan logic Low pada pin 13.
delay(1000);
// menunda selama 1 detik.
}
3. Application status Bagian ini memberikan informasi kepada pengguna mengenai tugas yang sedang dijalankan oleh aplikasi Arduino.
4. Message Bagian ini memberikan informasi kepada pengguna mengenai besarnya ukuran file dari coding yang dibuat dan letak kesalahan yang terjadi pada coding.
3.1.1.2 Modul Arduino Modul Arduino yang paling sederhana adalah modul versi S3v3 dengan tampilan board sebagai berikut:
Gambar 3.4: Tampilan Atas Board Arduino Versi S3v3 Setiap modul Arduino menggunakan 2 (dua) buah koneksi dengan komputer, paralel dan serial. Komunikasi paralel digunakan untuk burn bootloader, program
28 inisialiasi mikrokontroler agar dapat menggunakan koneksi serial dalam hal pemrograman, sehingga mikrokontroler dapat diprogram secara serial maupun komunikasi data antara mikrokontroler dan komputer menggunakan aplikasi Arduino. Selain itu, komunikasi paralel dapat juga digunakan untuk memprogram mikrokontroler secara paralel. Tabel berikut ini menunjukkan penomoran setiap pin pada Arduino: PIN ATmega168 PIN Arduino PIN ATmega168 PIN Arduino 1
15
9 (PWM)
2
0 (RX)
16
10 (PWM)
3
1 (TX)
17
11 (PWM)
4
2
18
12
5
3 (PWM)
19
13
6
4
20
7
21
8
22
9
23
1 analog in
10
24
2 analog in
11
5 (PWM)
25
3 analog in
12
6 (PWM)
26
4 analog in
13
7
27
5 analog in
14
8
28
6 analog in
Tabel 3.1: Penomoran PIN pada Arduino
Tabel di atas digunakan sebagai referensi untuk menentukan nomor pin pada mikrokontroler ATmega168 yang akan dipakai pada aplikasi Arduino. Contoh:
29 pinMode(5, INPUT); Artinya, membuat pin nomor 11 pada ATmega168 sebagai input.
3.1.2
Parallel Port Untuk memprogram bootloader ke dalam mikrokontroler ATmega168,
diperlukan komunikasi paralel dengan konfigurasi sebagai berikut:
R1 = R2 = R3 = R4 = 100 Ω Gambar 3.5: Parallel Programmer
Selain untuk memprogram, parallel port juga digunakan untuk mengirimkan pulsa STEP dan DIRECTION ke mikrokontroler yang nantinya akan digunakan sebagai penentu arah dan posisi dari motor DC.
3.1.3
ICSP ICSP atau In-Circuit System Programming merupakan metode pemrograman
mikrokontroler secara langsung menggunakan komunikasi paralel. Ada 3 (tiga) parameter yang diperhatikan pada ICSP, yaitu: 1) MOSI (Master Out Slave In)
30 Merupakan jalur transmisi data dari komputer ke mikrokontroler. Berfungsi untuk mengirim program yang akan disimpan ke dalam ROM mikrokontroler. 2) MISO (Master In Slave Out) Merupakan jalur transmisi data dari mikrokontroler ke komputer. Berfungsi untuk mengkonfirmasi program yang sudah diterima melalui MOSI. 3) SCK (Serial Clock) Timing yang diberikan oleh komputer untuk sinkronisasi data antara komputer dan mikrokontroler sehingga seluruh data dapat dikirim dan diterima dengan benar.
3.1.4
Serial Port Komunikasi serial digunakan untuk memprogram mikrokontroler langsung dari
aplikasi Arduino. Selain itu, komunikasi serial juga digunakan untuk mengirim dan menerima data antara mikrokontroler dan komputer melalui fasilitas Serial Monitor yang terdapat pada aplikasi Arduino.
3.1.5
Level Converter Karena adanya perbedaan tegangan logic antara TTL dan komputer, maka
diperlukan suatu rangkaian untuk mengkonversi tegangan tersebut. Berikut ini adalah rangkaian yang diperlukan:
31
Gambar 3.6: Level Converter
3.1.6
Microcontroller Mikrokontroler yang digunakan adalah jenis AVR dengan tipe ATmega168.
Jenis mikrokontroler AVR memiliki fungsi PWM (Pulse Width Modulation) yang menghasilkan output digital dengan besar tegangan yang menyerupai output analog.
3.1.7
Motor Driver Rangkaian motor driver yang digunakan adalah sebagai berikut:
Gambar 3.7: Tampilan Atas Modul Motor Driver
32
Rangkaian di atas disediakan secara open-source melalui forum komunikasi CNCzone.com.
3.1.8 DC Motor Jenis motor DC yang akan digunakan adalah brushed dc motor buatan Yaskawa dengan tipe UGRMEM02SAK0E - UTOPI 080.
Gambar 3.8: Yaskawa Minertia RM Series
Motor DC ini telah memiliki optical encoder yang terhubung dengan rotornya.
3.1.9
Encoder Encoder yang digunakan adalah encoder optik dengan resolusi 800
pulses/revolution. Encoder ini sudah ada di dalam motor DC yang digunakan. Selain itu,
33 encoder tersebut memiliki keluaran sebanyak 2 channel, A dan B, yang dibutuhkan oleh rangkaian Motor Driver.
3.2
Skematik Perangkat Keras
Secara keseluruhan, skematik dari rangkaian driver DC servo motor adalah sebagai berikut:
Gambar 3.9: Skematik Perangkat Keras Secara Keseluruhan
Skematik di atas disediakan secara open-source melalui forum komunikasi CNCzone.com.
34 3.2.1
Level Converter
Gambar 3.10: Level Converter
3.2.2
Microcontroller
Gambar 3.11: Mikrokontroler
35 3.2.3
H-Bridge
Berikut ini merupakan skematik dari H-bridge dan encoder reception yang digunakan:
Gambar 3.12: H-Bridge
Gambar 3.13: Encoder Reception
36 3.3
Blok Diagram Perangkat Lunak STEP/DIR In
Serial In
Encoder In
PID Calc.
Serial Out
Backward
Stop
Forward
Gambar 3.14: Blok Diagram Perangkat Lunak
3.3.1
STEP/DIR In
STEP/DIR In merupakan fungsi untuk menerima pulsa step dan direction dari parallel port PC untuk menentukan arah gerak motor DC.
3.3.2
Serial In
Serial In merupakan fungsi untuk meminta input dari user. Input yang diberikan oleh user menentukan fungsi mana yang akan dijalankan berikutnya.
3.3.3
Backward
Backward merupakan fungsi untuk memutar motor dc berlawanan arah jarum jam dengan jumlah step tertentu.
3.3.4
Stop
Stop merupakan fungsi untuk menghentikan putaran motor DC apabila telah mencapai set-point yang diberikan dan mempertahankan posisinya dari gangguan luar.
37
3.3.5
Forward
Forward merupakan fungsi untuk memutar motor dc searah jarum jam dengan jumlah step tertentu.
3.3.6
Encoder In
Encoder In atau Encoder Input merupakan fungsi untuk mengolah sinyal – sinyal yang dihasilkan oleh encoder untuk menentukan posisi dari motor DC.
3.3.7
Serial Out
Serial Out merupakan fungsi untuk menampilkan posisi akhir dari motor dc beserta besarnya error yang terjadi.
3.3.8 PID Calc. PID Calc. atau PID Calculation merupakan fungsi untuk membandingkan posisi encoder dengan set-point dan menghasilkan nilai PWM tertentu untuk mengatur arah dan kecepatan motor DC berdasarkan perhitungan sistem kendali lup tertutup.
38 3.4
Diagram Alur Perangkat Lunak
Secara ringkas, diagram alur dari program pengendalian posisi motor dc adalah sebagai berikut:
Gambar 3.15: Diagram Alur Program Mikrokontroler
3.5
Program Lengkap Mikrokontroler
Coding dapat dilihat pada lampiran.