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
Perangkat lunak yang digunakan merupakan program open-source dengan nama Arduino. 24 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); pinmode(5, INPUT); pinmode(12, OUTPUT); // inisialisasi baudrate komunikasi serial. // set pin no. 5 Arduino sebagai Input. // 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,
encoder tersebut memiliki keluaran sebanyak 2 channel, A dan B, yang dibutuhkan oleh rangkaian Motor Driver. 33 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.