BAB VI PERANCANGAN, PENGUJIAN, DAN ANALISIS PERANGKAT KERAS INVERTED PENDULUM
5.1 5.1.1
Perancangan Perangkat Keras Sistem Inverted Pendulum Desain Global
Diagram blok dari sistem inverted pendulum yang dikembangkan dalam tugas akhir ini diperlihatkan dalam Gambar 5-1 berikut.
MCS-51 (Pengontrol fuzzy)
Sudut bandul
ATTiny2313 (Sensor sudut bandul)
Sudut bandul
Posisi pedati Posisi pedati
Voltase PWM
ATTiny2313 (Sensor posisi pedati)
ATTiny2313 (Pengontrol posisi pedati)
Gaya pada pedati
Gambar 5-1 Diagram blok sistem inverted pendulum secara keseluruhan
Pada tugas akhir ini akan digunakan empat buah mikrokontroller yaitu satu buah mikrokontroller DT-51 dengan frekuensi kristal osilator 12 MHz dan tiga buah mikrokontroller tipe ATTiny2313 dengan frekuensi kristal osilator 20 MHz. Dua dari tiga mikrokontroller ATTiny2313 berfungsi sebagai sensor posisi pedati dan sudut bandul
5-1
5-2
pada sistem. Informasi sudut dan posisi ini kemudian akan diteruskan oleh mikrokontroller ATTiny2313 ke mikrokontroller pusat yaitu DT-51. Dari data-data yang telah diterima, mikrokontroller DT-51 kemudian melakukan proses fuzzy control dan akan mengeluarkan sebuah nilai yang menandakan gaya yang harus diaplikasikan pada kereta. Nilai ini diterima oleh mikrokontroller ATTiny2313 yang ketiga dan kemudian ia akan mengeluarkan sinyal PWM untuk mengontrol posisi pedati.
5.1.2
Desain Sistem Inverted Pendulum
Pada sub-bab ini akan dijelaskan secara lebih terperinci desain dari perangkat keras sistem inverted pendulum. Sistem inverted pendulum terdiri dari dua bagian utama yaitu pedati dan bandul. Pedati digerakkan menggunakan motor DC dan posisinya dideteksi menggunakan sensor rotary shaft encoder. Bandul merupakan sebuah benda yang menempel pada poros pedati dan dapat bergerak dengan satu derajat kebebasan (searah atau berlawanan arah dengan jarum jam). Posisi bandul dideteksi menggunakan sensor rotary shaft encoder.
5.1.2.1 Pedati
Pedati merupakan sebuah benda yang dapat bergerak translasi dalam arah horizontal pada suatu lintasan. Pedati yang akan digunakan adalah sebuah linear actuator yang didesain oleh Yaskawa Electric Corporation dan bertipe UGTMEM-03LSK21. Linear Actuator ini didesain menggunakan sebuah motor DC 24V, memiliki sebuah optical encoder sebagai sensor posisi pedati, dan menggunakan mekanisme ball screw pada lintasan pedatinya. Mekanisme ball screw ini menggunakan prinsip ulir dan mur sehingga seolah-olah mengakibatkan posisi kereta menjadi terkunci ketika motor tidak dijalankan. Hal ini mengakibatkan kereta memiliki impulse yang besar
5-3
ketika akan berbalik arah. Arah gerak pedati dapat dikontrol menggunakan rangkaian H-Bridge. Pedati memiliki panjang 48.5 cm. Gambar 5-2 menunjukkan Yaskawa linear actuator yang akan digunakan sebagai pedati pada tugas akhir ini.
Gambar 5-2 Yaskawa Linear Actuator
Posisi optical encoder pada linear actuator tersebut ditunjukkan oleh Gambar 5-3.
Gambar 5-3 Posisi optical encoder pada linear actuator
5.1.2.2 Bandul
Bandul merupakan sebuah benda yang menempel pada poros pedati dan dapat bergerak dengan satu derajat kebebasan (searah atau berlawanan arah dengan jarum jam). Bandul yang akan digunakan pada tugas akhir ini menggunakan sebuah batang alumunium dengan panjang 81 cm. Bandul diletakkan pada poros sebuah optical encoder sehingga dimungkinkan diketahuinya sudut bandul dengan presisi secara real-time. Gambar 5-4 menunjukkan bandul yang diletakkan pada poros sebuah encoder.
5-4
Gambar 5-4 Bandul yang diletakkan pada poros sebuah encoder
Encoder yang digunakan untuk menempelkan bandul ini sebenarnya adalah satu kesatuan dengan motor DC. Motor DC terdapat pada bagian depan dan encoder sebagai sensor terletak pada bagian belakang. Dikarenakan encoder dan motor tidak dapat dipisah, maka komponen yang akan digunakan hanyalah bagian belakang saja yaitu encoder. Motor dan encoder sebagai satu kesatuan dapat dilihat pada Gambar 55(a), encoder yang terletak pada bagian belakang motor dapat dilihat pada Gambar 55(b).
(a)
(b)
Gambar 5-5 (a) Motor dan Encoder (b) Optical encoder
5.1.2.3 Motor Penggerak Pedati (Motor DC)
Motor penggerak yang digunakan adalah motor DC yang menggunakan brush, yaitu motor yang digerakkan oleh arus searah (direct current) dan menggunakan komutator. Motor DC merupakan suatu aktuator yang dapat mengkonversi energi listrik menjadi energi mekanik. Skema motor DC dapat dilihat pada Gambar 5.6.
5-5
Armature merupakan komponen yang bergerak dalam motor dan tempat untuk melilitkan kawat. Tiap bagian kawat dihubungkan ke komutator yang menempel pada brush. Kutub-kutub baterai atau sumber tegangan dihubungkan pada brush. Prinsip kerja motor DC merupakan aplikasi dari Hukum Ampere yang melukiskan hubungan kuantitatif antara arus dan medan magnet. Ketika koil dialiri listrik, maka medan magnet akan tercipta pada lilitan kawat. Medan magnet ini akan berinteraksi dengan medan magnet yang dihasilkan oleh magnet permanen di kedua sisi armature. Interaksi ini menghasilkan gaya tarik-menarik dan tolak-menolak pada armature mengakibatkan armature berputar.
Gambar 5-6 Skema motor DC beserta komponen pendukungnya
Cara kerja motor DC ini dapat dilihat pada Gambar 5-7 [URL-02]. Pada Gambar 57(a), ketika koil dialiri listrik maka akan dihasilkan medan magnet di sekitar armature. Bagian kiri dari armature terdorong oleh magnet kiri dan menyebabkan armature berputar ke arah kanan, sehingga mengakibatkan terjadinya rotasi. Gambar 5-7(b) menunjukkan armature terus berputar. Pada Gambar 5-7(c), ketika armature sejajar horizontal dengan magnet permanen maka komutator akan membalikkan arus yang mengalir pada koil sehingga akan membalikkan medan magnet pada armature.
5-6
Hal ini akan menyebabkan proses pada Gambar 5-7(a) terulang. Penjelasan lebih detail tentang motor DC dapat dilihat pada [URL-03].
(a)
(b)
(c)
Gambar 5-7 Cara Kerja motor DC sederhana
5.1.2.4 Rotary Shaft Encoders [URL-05]
Encoder adalah sebuah sensor yang berfungsi untuk mengukur besar putaran sebuah roda. Encoder dapat dibuat dengan menggunakan berbagai metode seperti magnetik dan optical. Pada bagian ini akan dibahas mengenai optical encoder. Ada dua macam encoder yang terdapat dipasaran, yaitu absolute dan relatif. Absolute encoder memberikan sebuah kode yang menandakan posisi roda saat ini. Incremental encoder hanya mengukur seberapa jauh roda telah bergerak. Incremental encoder biasanya dipakai untuk mengukur seberapa jauh perpindahan roda robot ketika bergerak. Sensor optical encoder memiliki tiga bagian utama, yaitu piringan encoder, LED (Light Emiting Diode) dan fototransistor. Piringan encoder berupa lingkaran dengan lubang-lubang pada bagian pinggirnya. Pada jalur lubang-lubang ini, ditempatkan fototransistor dan LED. LED merupakan dioda yang dapat memancarkan cahaya, cahaya yang dihasilkan oleh LED merupakan energi yang dihasilkan akibat perpindahan elektron dari orbital luar ke orbital yang lebih dalam. Fototransistor merupakan transistor yang aktif jika terkena cahaya. Dua buah contoh rangkaian
5-7
mekanik dari sensor incremental optical encoder ini dapat dilihat pada Gambar 5-8. Pada masing-masing contoh tersebut, berkas cahaya dipancarkan dan dideteksi menggunakan photo detector.
Gambar 5-8 Skema rangkaian sensor incremental optical encoder
Pada Gambar 5-8 kiri, berkas cahaya melewati lubang yang berada pada piringan encoder. Pada Gambar 5-8 kanan, berkas cahaya dipantulkan oleh bagian terang dan gelap dari piringan yang akan menyebabkan perbedaan intensitas cahaya. Rangkaian sirkuit tambahan pada encoder kemudian akan mengubah sinyal dari photo detector ini menjadi tegangan 0 atau 5 volt dc. Gambar 5-9 menunjukkan bagaimana photo detector melihat bagian terang dan gelap (atau lubang) dari piringan dan hasil tegangan yang dihasilkannya. Bagian gelap dan terang merepresentasikan bagian lubang atau solid pada piringan encoder. Ketika bagian gelap berada di depan detektor maka tegangan keluaran adalah low (0 vdc). Ketika bagian terang berada di depan detektor maka tegangan keluaran adalah high (5 vdc).
5-8
Gambar 5-9 Optical encoder dengan satu sensor
Pulsa yang terbentuk dapat dibaca dan dihitung dengan mudah menggunakan processor atau mikrokontroller dengan menggunakan berbagai macam teknik yang berbeda. Ketika diketahui berapa banyak pulsa yang terdeteksi dan berapa keliling roda, maka dapat diketahui pula berapa jauh roda telah bergerak (mengukur jarak perpindahan roda). Kelemahan optical encoder dengan satu sensor ini adalah mikrokontroller akan menerima pulsa yang terlihat sama ketika roda berputar searah ataupun berlawanan jarum jam sehingga mikrokontroller tidak dapat membedakan arah gerakan dari roda. Untuk dapat membedakan arah gerakan roda, maka diperlukan tipe encoder lain yang lebih canggih, yaitu quadrature encoder. Tidak seperti encoder biasa, quadrature encoder memiliki satu buah sensor tambahan guna memberikan informasi arah putaran. Gambar 5-10 mengilustrasikan cara kerja quadrature encoder dengan dua buah sensor. Detektor A diletakkan pada permulaan strip putih dan detektor B diletakkan pada bagian tengah strip hitam. Perbedaan offset peletakan detektor inilah yang akan memberikan penambahan informasi arah gerak. Jika strip hitam/putih bergerak ke kiri (dari kanan ke kiri), maka mikrokontroller akan menerima pulsa dari detektor A yang pada mula-mula berada pada strip putih (seperti terlihat pada Gambar 5-10, pulsa A). Pada saat yang bersamaan, detektor B berada pada pertengahan strip hitam sehingga menghasilkan pulsa B seperti yang terlihat pada Gambar 5-10, pulsa B. Hal yang sama pun terjadi ketika strip hitam/putih bergerak ke
5-9
kanan (dari kiri ke kanan). Ketika detektor A berada pada permulaan strip putih, detektor B berada pada pertengahan strip putih. Sehingga arah putaran dapat ditentukan dengan cara melihat status detektor B pada saat terjadi perubahan status pada detektor A, atau sebaliknya. Hal ini dapat dirumuskan dengan aturan berikut ini: Ketika terjadi perubahan status pulsa pada detektor A (dari 0→1, atau 1→0): Jika (status detector B adalah high) maka counter=counter+1 Jika (status detector B adalah low) maka counter=counter-1
Gambar 5-10 Ilustrasi cara kerja quadrature encoder
Encoder yang berada di pasaran biasanya memiliki 5 buah kabel, yaitu: ground, vcc, dua buah signal pulsa untuk detektor A dan B, dan satu buah kabel disebut sebagai index. Kabel index akan menghasilkan pulsa ketika encoder berada pada posisi tertentu. Posisi ini biasa disebut sebagai posisi nol encoder.
5.1.3
Mikrokontroller
Mikrokontroller, atau microcomputer, ialah sistem yang terdiri dari CPU (Central Processing Unit), RAM (Random Access Memory), ROM (Read Only Memory), bus (untuk address/alamat, data, sinyal kontrol), dan divais I/O (input/output) yang dikemas dalam suatu IC (Integrated Circuit) [MAC-95]. Mikrokontroller yang akan
5-10
digunakan dalam tugas akhir ini ialah AT89C51 (keluarga MCS-51® 1 ) dan ATTiny2313 (keluarga AVR) yang keduanya diproduksi oleh Atmel Corporation.
5.1.3.1 Atmel AT89C51
Dalam tugas akhir ini akan digunakan DT-51 Minimum System Ver 3.0 dari Inovative Electronics [URL-06]. Gambar 5-11 memperlihatkan board DT-51 yang dapat diperoleh secara langsung dari Innovative Electronics. DT-51 ini memiliki desain kompak (ukuran board hanya 8.5 x 9.5 cm), menggunakan non-volative memory, memiliki system downloading, dan debugger kernel.
Gambar 5-11 DT-51 Mikrokontroller Berbasis 89C51
Fitur 89C51 ini adalah memiliki internal program memory sebesar 4 kilo-byte, internal data memory sebesar 256 byte, memiliki timer/counter, interrupt, serial interface, port input/output, dan special function [URL-07]. Panduan dasar keluarga mikrokontroller MCS-51 ini dapat diunduh pada [URL-07].
1
MCS-51 merupakan merek dagang dari Intel Corporation
5-11
5.1.3.2 Atmel ATTiny2313 [ATT-06]
Selain DT-51, mikrokontroller yang digunakan untuk tugas akhir ini adalah Atmel ATTiny2313. Gambar 5-12 menunjukkan chip IC ATTiny2313 model PDIP/SOIC yang memiliki 20 buah kaki.
Gambar 5-12 IC Atmel ATTiny2313
ATTiny2313 memiliki spesifikasi dasar sebagai berikut: 1. Mikrokontroller AVR 8-bit dengan daya rendah dan performansi tinggi dan memiliki arsitektur RISC (Reduce Instruction Set Computer) tingkat lanjut.
•
Memiliki 120 buah instruksi, yang sebagian besar memiliki waktu eksekusi satu clock cycle.
•
Memiliki 32 x 8 buah register umum yang dapat digunakan.
2. Nonvolatile program dan data memori. 3. Tegangan kerja:
•
Rentang tegangan kerja ATTiny2313V yaitu 1.8 - 5.5V
•
Rentang tegangan kerja ATTiny2313 yaitu 2.7 - 5.5V
4. Frekuensi Osilator
•
ATTiny2313V : 0 - 4 MHz @ 1.8 – 5.5V, 0 – 10 MHz @ 2.7 – 5.5V
•
ATINY2313 : 0 – 10 MHz @ 2.7 – 5.5V, 0 – 20 MHz @ 4.5 – 5.5V
5-12
5. Fasilitas yang lain:
•
Satu buah timer/counter 8-bit dengan prescaler yang terpisah dan compare mode.
•
Satu buah timer/counter 16-bit dengan prescaler yang terpisah, compare dan capture mode.
•
Empat kanal PWM (Pulse Width Modulation).
•
USI (Universal Serial Interface).
•
Full Duplex USART (Universal Synchronous and Asynchronous serial Receiver and Transmitter) yang dapat diprogram
Pada tugas akhir ini, fitur mikrokontroller ATTiny2313 yang akan digunakan adalah akses port I/O, PWM (Pulse Width Modulation), dan Interrupt. Panduan dasar dari mikrokontroller ini dapat diunduh pada [URL-08].
5.1.4
Skematik Rangkaian dan Konfigurasi Kabel
Skema rangkaian yang akan dibahas adalah rangkaian H-Bridge untuk mengontrol pedati, rangkaian sensor left default pedati untuk mengetahui posisi paling kiri dari pedati, dan rangkaian opsional komunikasi serial MAX232 pada ATTiny2313 untuk keperluan proses debugging. Konfigurasi hubungan-hubungan kabel antara komponen satu dengan yang lain pun akan dijelaskan pada sub-bab ini.
5.1.4.1 Rangkaian H-Bridge
Pada prinsipnya H-Bridge adalah konfigurasi dari 4 buah switch yang disusun sedemikian rupa untuk mengatur arah arus yang mengalir pada motor. Pada motor
5-13
DC dengan brush, arah rotasi dari armature diubah dengan cara mengubah arah arus yang mengalir padanya. Gambar 5-13 menunjukkan cara kerja H-Bridge secara sederhana. Pada Gambar 5-13, terdapat 2 buah kemungkinan jalur arus, yaitu jalur merah dan jalur hijau. Jalur merah melalui switch S3 dan S2 sehingga motor berputar searah jarum jam. Jalur hijau melalui switch S1 dan S4 sehingga motor berputar berlawanan arah jarum jam. Pada tahap implementasi semua switch akan digantikan oleh transistor sehingga kecepatan dan arah motor dapat dikendalikan secara langsung melalui mikrokontroller.
Gambar 5-13 Diagram H-Bridge sederhana
Rangkaian H-Bridge digunakan untuk mengatur arah putaran motor DC. Rangkaian ini bertindak sebagai sebuah saklar yang mengubah arah arus yang melalui motor. Desain rangkaian H-Bridge yang akan digunakan pada tugas akhir ini adalah hak cipta dari Ibrahim Kamal dan dikenal sebagai rangkaian H-Bridge IkaLogic yang dapat diakses melalui [URL-11]. Rangkaian H-Bridge IkaLogic yang dipakai memiliki keunggulan sebagai berikut:
•
Dapat dialiri arus kontinu sampai 5A dan arus puncak 8A.
•
Voltase maksimum adalah 24V.
•
Sistem pendingin yang digunakan memiliki performansi tinggi.
•
Desain yang kompak.
5-14
•
Komponen yang digunakan relatif murah.
Rangkaian skematik H-Bridge IkaLogic ini dapat dilihat pada Gambar 5-14. Gambar ini terdiri dari 3 bagian, yaitu: 1. Rangkaian proteksi dan logika
Rangkaian skematik ini dapat dilihat pada Gambar 5-14 yang diarsir dengan warna kuning. Fungsi dari rangkaian ini adalah untuk melindungi rangkaian HBridge dari kerusakan fatal akibat kesalahan pemberian instruksi oleh device pengontrol, seperti menghidupkan empat buah transistor secara bersamaan (hal ini akan mengakibatkan short circuit dan dapat merusak satu atau dua dari empat transistor). Fungsi lain adalah memungkinkan pengontrol seperti mikrokontroller untuk mengatur empat buah transistor melalui gerbang-gerbang logika. Masingmasing empat buah transistor yang berada pada tahap paling akhir, yaitu: Q1, Q2, Q3, dan Q4 (lihat Gambar 5-14) memiliki fungsi untuk membalikkan signal dan melakukan amplifikasi tegangan dan arus. Transistor Q1, Q2, Q3, dan Q4 ini memakai prinsip kerja active turn OFF dan menghasilkan keluaran melalui resistor pull-up atau pull-down. Ketika transistor dalam keadaan ON, maka ia akan mematikan device apapun yang terhubung dengannya. Active turn OFF akan memperkecil waktu transistor untuk OFF sehingga meningkatkan perfomansi dari H-Bridge. Resistor R2, R4, R5, dan R10 haruslah memiliki daya minimal ½ watt, terutama ketika dipakai catu daya 24V. Transistor Q2, Q4, Q9, dan Q10 adalah NPN bertipe 2N2222. Tabel kebenaran yang menggambarkan hubungan dari 3 buah masukan pada gerbang logika (P1, P2, P3) dan keluaran pada transistor Q1, Q2, Q3, dan Q4 digambarkan pada Tabel 5-1. Tabel 5-1 Hubungan P3, P2, P1 terhadap Q1, Q2, Q3, Q4
Masukan P3 P1 P2 0 X X
Keluaran Q1 Q2 Q3 Q4 1 0 1 0
Hasil pada H-Bridge
Motor bebas bergerak
5-15
1 1 1 1
0 0 1 1
0 1 0 1
1 1 0 0
1 1 0 0
1 0 1 0
1 0 1 0
Motor direm Motor bergerak searah jarum jam Motor bergerak berlawanan jarum jam Motor direm
Pin P3 berfungsi sebagai saklar ON/OFF dan biasanya dihubungkan dengan pin PWM pada mikrokontroller. Ketika P3 diberikan masukan OFF maka motor tidak bergerak, sama seperti tidak dihubungkan pada rangkaian apapun. Pin P1 dan P2 berfungsi untuk menentukan arah gerak dari motor, yaitu searah atau berlawanan arah jarum jam.
Gambar 5-14 Rangkaian skematik H-Bridge IkaLogic
2. Rangkaian H-Bridge
Rangkaian skematik ini dapat dilihat pada Gambar 5-14 yang diarsir dengan warna merah. Rangkaian ini terdiri dari empat buah transistor, yaitu dua buah
5-16
transistor TIP122 (NPN) dan dua buah transistor TIP127 (PNP) yang memiliki penguatan arus sampai 1000. Diode D2 sampai D5 sangat penting untuk melindungi transistor dari voltase back EMF (ElectroMagnetic Force) yang dihasilkan dari Motor DC yang dihidupkan dan dimatikan secara bergantian. J5 adalah konektor untuk dihubungkan dengan motor.
3. Rangkaian kipas pendingin
Rangkaian skematik ini dapat dilihat pada Gambar 5-14 yang diarsir dengan warna biru. Rangkaian ini berfungsi untuk mendinginkan transistor dan memiliki led sebagai indikator bahwa H-Bridge dalam keadaan ON atau OFF.
Gambar 5-15 memperlihatkan implementasi perangkat keras rangkaian H-Bridge IkaLogic yang digunakan pada tugas akhir ini.
(a)
(b)
Gambar 5-15 Perangkat Keras H-Bridge IkaLogic (a) Tampak atas (b) Tampak samping
5.1.4.2 Rangkaian Sensor Left Default Pedati
Rangkaian ini digunakan untuk medeteksi posisi paling kiri dari pedati (posisi nol). Hal ini diperlukan pada saat pedati digerakkan ke posisi tengah kereta sebelum sistem
5-17
inverted pendulum dijalalankan. Diagram skematik rangkaian sensor left default menggunakan sebuah sensor opto-interrupter H21A1 yang diproduksi oleh perusahaan semikonduktor Fairchild. Skematik dan bentuk komponen optointerrupter dapat dilihat pada Gambar 5-16. Rangkaian transistor untuk mencuplik sinyal menggunakan konfigurasi common emitter amplifier dan berlaku sebagai saklar yang akan terbuka apabila terdapat benda di antara diode dan fototransistor. Ketika pedati berada di posisi paling kiri, maka lempengan logam yang disisipkan pada pedati akan menutup ruang kosong antara diode dan fototransistor pada opto-interrupter sehingga menyebabkan sinyal yang diamati menjadi berubah.
Gambar 5-16 Komponen opto-interrupter
Rangkaian skematik untuk sensor left default pedati diperlihatkan oleh Gambar 5-17. Perubahan sinyal akan diamati oleh mikrokontroller pada saat ruang kosong antara diode dan fototransistor pada opto-interrupter tertutup.
Gambar 5-17 Skema rangkaian sensor left default pedati
5-18
Gambar 5-18 memperlihatkan perangkat keras sensor left default pedati yang ditempatkan pada posisi paling kiri dari lintasan pedati.
Gambar 5-18 Perangkat keras sensor left default pedati
5.1.4.3 Rangkaian Reset DT-51 dan Start Pendulum
Rangkaian reset DT-51 berguna untuk mengembalikan program mikrokontroller DT51 ke kondisi semula. Reset tidak mempengaruhi internal program memory. Reset terjadi jika pin RST pada DT-51 bernilai high selama minimal 2 machine cycle lalu kembali bernilai low. Diagram skematik rangkaian reset ditunjukkan oleh Gambar 519(a) dan Gambar perangkat keras reset ditunjukkan oleh Gambar 5-19(b).
(a)
(b)
Gambar 5-19 Reset DT-51 (a) Diagram Skematik (b) Perangkat keras
5-19
Rangkaian start pendulum adalah sebuah switch atau trigger yang berguna untuk menginformasikan mikrokontroller DT-51 bahwa sistem telah siap dijalankan. Rangkaian ini dibangun hanya dengan menggunakan sebuah switch dan pull-up pada salah satu pin DT-51. Diagram skematik dan Gambar perangkat keras rangkaian start pendulum dapat dilihat pada Gambar 5-20(a) dan 5-20(b) berurutan.
(a)
(b)
Gambar 5-20 Start pendulum (a) Diagram skematik (b) Perangkat keras
5.1.4.4 Rangkaian MAX232
Koneksi serial pada mikrokontroller masih mempunyai keluaran berlogika Transistor Transistor Logic (TTL) sehingga apabila data akan dikirim ke komputer melalui konektor DB-9 dibutuhkan suatu konverter tegangan. Rangkaian MAX232 ini berfungsi sebagai konverter logika dari TTL menjadi RS232. Tegangan yang dikeluarkan dari komponen ini mempunyai nilai -10V dan 10V. Rangkaian MAX232 adalah rangkaian opsional yang diperlukan hanya untuk kemudahan proses debugging pada mikrokontroller ATTiny2313. Skema rangkaian dapat dilihat pada Gambar 521.
5-20
Gambar 5-21 Skema rangkaian MAX232
5.1.4.5 Konfigurasi Pin
Pada sub-bab ini akan dibahas konfigurasi penggunaan pin pada setiap mikrokontroller dan hubungannya dengan komponen-komponen lain yang terlibat dalam sistem inverted pendulum. Pertama-tama komunikasi antara mikrokontroller pusat (DT-51) dengan ketiga mikrokontroller ATTiny2313 menggunakan komunikasi paralel dengan besar data 1 byte (8 jalur kabel). Mikrokontroller ATTiny2313 motor (ATTiny2313 yang tugasnya mengontrol motor) dan ATTiny2313 sensorPedati (ATTiny2313 yang tugasnya membaca sensor encoder pedati) berkomunikasi hanya melalui 2 jalur kabel pada saat permulaan inisialisasi posisi pedati di tengah-tengah lintasan. Mikrokontroller-mikrokontroller yang digunakan dapat dilihat pada Gambar 5-22. Konfigurasi pin antara mikrokontroller dapat dilihat pada Tabel 5-2.
5-21
(b)
(a)
(c)
(d)
Gambar 5-22 Mikrokontroller (a)DT-51 (b)ATTiny2313 Motor (c)ATTiny2313 sensorBandul (d)ATTiny2313 sensorPedati
Tabel 5-2 Konfigurasi kabel antara mikrokontroller
Mikrokontroller1 DT-51 PA.0 ... PA.7
DT-51 PB.0 ... PB.7
Mikrokontroller2 ATTiny2313 motor PB.0 PB.1 PD.0 PB.3 ... PB.7 ATTiny2313 sensorBandul PB.0 ... PB.7
DT-51 PC.0 ... PC.7
ATTiny2313 sensorPedati PB.0 ... PB.7
DT-51 P1.2
ATTiny2313 motor PD.6
DT-51 P1.4
ATTinny2313 sensorPedati PD.6
ATTiny2313 sensorPedati PD.1
ATTiny2313 motor PD.5
Keterangan Komunikasi paralel 8 jalur antara DT-51 dengan ATTiny2313 motor Komunikasi paralel 8 jalur antara DT-51 dengan ATTiny2313 sensorBandul Komunikasi paralel 8 jalur antara DT-51 dengan ATTiny2313 sensorPedati Toggle status pin yang dihasilkan DT-51 ketika akan menulis besaran PWM pada ATTiny2313 motor Toggle status pin yang dihasilkan DT-51 ketika akan membaca posisi kereta pada ATTiny2313 sensorPedati Status pin yang dihasilkan oleh ATTiny2313 motor dan diterima oleh ATTiny2313 sensorPedati. Status pin ini berfungsi untuk mendeteksi posisi paling kiri dari pedati pada
5-22
ATTiny2313 sensorPedati PD.0
ATTiny2313 motor PD.4
proses inisialisasi. Status pin yang dihasilkan oleh ATTiny2313 sensorPedati dan diterima oleh ATTiny2313 motor. Status pin ini berfungsi untuk menempatkan pedati pada posisi tengahtengah lintasan.
Selain hubungan antara mikrokontroller satu dengan yang lain, juga terdapat hubungan mikrokontroller dengan komponen-komponen lain seperti H-Bridge, sensor left default pedati, komponen reset DT-51, start pendulum, dan lain-lain. Hubungan ini dapat dilihat pada Tabel 5-3. Tabel 5-3 Konfigurasi kabel antara mikrokontroller dengan komponen-komponen
Mikrokontroller ATTiny2313 sensorBandul PD.2 ATTiny2313 sensorBandul PD.3 ATTiny2313 sensorPedati PD.2 ATTiny2313 sensorPedati PD.4 ATTiny2313 motor PD.1 ATTiny2313 motor PD.3 ATTiny2313 motor PB.2 ATTiny2313 motor PD.2 DT-51 P1.0 DT-51 RST
Komponen Encoder bandul Kabel putih Encoder bandul Kabel biru Encoder pedati Kabel biru Encoder pedati Kabel kuning H-Bridge Kabel hijau H-Bridge Kabel kuning H-Bridge Kabel orange Sensor left default pedati Kabel putih Start pendulum Kabel biru (Vout) Reset DT-51 Kabel biru (RST)
Keterangan Sensor encoder bandul channel A Sensor encoder bandul channel B Sensor encoder pedati channel A Sensor encoder pedati channel B Penentu arah motor DC (gerakan pedati) Penentu arah motor DC (gerakan pedati) Sinyal ON/OFF (PWM) untuk H-Bridge Sensor posisi nol pedati
Trigger proses stabilisasi pendulum Trigger untuk proses reset DT-51
5-23
5.1.5
Diagram Alir
Bagian ini akan menjelaskan diagram alir dari program yang digunakan untuk sistem inverted pendulum. Program yang diunduh dari komputer ke mikrokontroller terdapat empat buah, yaitu satu buah untuk mikrokontroller DT-51 dan tiga buah untuk mikrokontroller ATTiny2313. 5.1.5.1 DT-51
Diagram alir program pada mikrokontroller DT-51 dapat dilihat pada Gambar 5-23. Pertama-tama
mikrokontroller
DT-51
melakukan
inisialisasi
FuzzyTech
menggunakan built-in library FuzzyTech, yaitu _initfuzzy1. Setelah itu DT-51 melakukan inisialisasi pemilihan port input dan output (PortA, PortB, dan PortC) untuk komunikasi paralel dengan ketiga mikrokontroller ATTiny2313. DT-51 akan bekerja setelah pengguna menekan tombol ON (start pendulum). Proses yang dilakukan adalah DT-51 menerima dua masukan dari ATTiny2313 yaitu sudut bandul dan posisi pedati. Setelah itu ia akan menghitung perubahan sudut bandul (thetaDot) dan perubahan posisi pedati (Xdot). Kemudian keempat data ini akan menjadi masukan ke FuzzyTech. FuzzyTech kemudian akan melakukan proses fuzzy control terhadap keempat input tersebut dan dihasilkanlah sebuah keluaran output yang bernama force. Force ini akan diberikan oleh DT-51 kepada ATTiny2313 motor yang selanjutnya akan digunakan untuk menggerakkan pedati. Siklus ini berulang dengan cara DT-51 membaca kedua input kembali.
5-24
Gambar 5-23 Diagram alir pada mikrokontoller DT-51
5.1.5.2 ATTiny2313 Motor
Diagram alir pada mikrokontroller ATTiny2313 motor dapat dilihat pada Gambar 524. Pertama-tama ATTiny2313 motor melakukan inisialisasi guna menempatkan posisi pedati tepat di tengah-tengah lintasan. Hal ini dicapai dengan cara komunikasi antara dua mikrokontroller terpisah yaitu: ATTiny2313 motor (untuk menggerakkan
5-25
motor) dan ATTiny2313 sensorPedati (untuk mengetahui posisi pedati). Diagram alir ini dapat dilihat pada Gambar 5-24 dan 5-25 pada bagian prosedur inisialisasi posisi pedati. Pada prinsipnya inisialisasi posisi pedati pada tengah-tengah lintasan dilakukan dengan cara menggerakkan pedati (dilakukan oleh ATTiny2313 motor) sampai ke ujung paling kiri lintasan (dideteksi menggunakan sensor left default pedati) kemudian pedati digerakkan sampai posisi tengah-tengah lintasan (dideteksi oleh ATTiny2313 sensorPedati). Berikut ini akan dijelaskan proses inisialisasi secara lebih detail pada mikrokontroller ATTiny2313 motor. SET_COUNTER adalah sebuah pin pada mikrokontroller ATTiny2313 motor (berfungsi sebagai output) yang berhubungan secara langsung dengan pin ATTiny2313 sensorPedati yaitu GET_0_COUNTER (berfungsi sebagai input).
Fungsi
SET_COUNTER
adalah
untuk
menginformasikan
kepada
ATTiny2313 sensorPedati bahwa posisi pedati telah berada di posisi paling kiri lintasan (sensor left default pedati bernilai 1). ATTiny2313 sensorPedati kemudian akan melakukan proses reset counter (counter=0). Hal ini menandakan bahwa posisi nol pedati adalah pada ujung paling kiri lintasan. Setelah pedati berada di posisi paling kiri maka ATTiny2313 motor akan menggerakkan pedati ke arah kanan, sampai posisi pedati berada tepat di tengah-tengah lintasan. Posisi pedati yang berada di tengah-tengah lintasan ditandai oleh pin STOP_CART pada mikrokontroller ATTiny2313 motor yang bernilai satu. STOP_CART adalah sebuah pin yang menghubungkan antara mikrokontroller ATTiny2313 motor (berfungsi sebagai input) dan ATTiny2313 sensorPedati yaitu SET_STOP_CART (berfungsi sebagai output). Setelah posisi pedati berada di tengah-tengah lintasan, pedati kemudian berhenti dan proses inisialisasi selesai.
5-26
Gambar 5-24 Diagram alir pada mikrokontoller ATTiny2313 motor
Setelah proses inisialisasi posisi pedati selesai, maka ATTiny2313 motor akan membaca input force yang dikeluarkan oleh DT-51. Force ini kemudian digunakan untuk menentukan arah dan seberapa jauh kereta akan bergerak. Untuk kemudahan program maka dipilih posisi nol force adalah 128. Pedati akan berhenti ketika pin
5-27
STOP_CART bernilai satu. Hal ini mengindikasikan bahwa pedati telah menabrak ujung paling kiri atau kanan lintasan.
5.1.5.3 ATTiny2313 SensorPedati
Diagram alir pada mikrokontroller ATTiny2313 sensorPedati dapat dilihat pada Gambar 5-25. Pertama-tama ATTiny2313 sensorPedati melakukan inisialisasi guna menempatkan posisi pedati tepat di tengah-tengah lintasan. Hal ini dicapai dengan cara komunikasi antara dua mikrokontroller terpisah yaitu: ATTiny2313 motor (untuk menggerakkan motor) dan ATTiny2313 sensorPedati (untuk mengetahui posisi pedati). Diagram alir ini dapat dilihat pada Gambar 5-24 dan 5-25 pada bagian prosedur inisialisasi posisi pedati. Berikut ini akan dijelaskan proses inisialisasi secara lebih detail pada mikrokontroller ATTiny2313 sensorPedati. SET_STOP_CART adalah pin yang berada pada ATTiny2313 sensorPedati (berfungsi sebagai output) yang berhubungan dengan pin ATTiny2313
motor
yaitu
STOP_CART
(berfungsi
sebagai
input).
SET_STOP_CART mula-mula diberi nilai nol, yang menandakan bahwa posisi pedati belum berada di tengah-tengah lintasan. Pedati sekarang bergerak ke ujung paling kiri lintasan dan mikrokontroller ATTiny2313 terus menerus mengamati status pin GET_0_COUNTER. GET_0_COUNTER adalah pin yang berada pada ATTiny2313 sensorPedati (berfungsi sebagai input) yang berhubungan dengan pin ATTiny2313 motor yaitu SET_COUNTER (berfungsi sebagai output). Ketika pedati telah berada diujung paling kiri, maka pin GET_0_COUNTER akan bernilai satu sehingga ATTiny2313 sensorPedati akan melakukan proses reset counter (counter=0) untuk menandakan posisi nol dari pedati adalah ketika ia berada pada ujung paling kiri lintasan. Setelah itu, pedati akan bergerak ke arah kanan dan ATTiny2313 sensorPedati akan mengubah status pin SET_STOP_CART menjadi satu ketika posisi pedati telah berada ditengah-tengah lintasan. Setelah delay tertentu, status
5-28
SET_STOP_CART akan diubah kembali menjadi nol dan proses inisialisasi pun selesai. Inisialisasi Posisi Pedati
Main
Interupsi 0: EXT_INT0
SET_STOP _CART=0
Inisialisasi Posisi Pedati
tidak
PIN_EA=1?
ya Posisi pedati berada diujung paling kiri atau kanan track?
GET_0_COUNTER = 1?
tidak
tidak PIN_EB=1?
counter=counter-1
tidak ya ya ya counter=counter+1
Counter=0
RETI
SET_STOP _CART=1 tidak Apakah kereta berada di posisi tengahtengah track?
tidak
PIN_EB=1?
End
counter=counter+1
ya ya counter=counter-1
Output posisi pedati saat ini
SET_STOP _CART=1
dellay
SET_STOP _CART=0
RET
Gambar 5-25 Diagram alir pada mikrokontroller ATTiny2313 sensorPedati
Setelah proses inisialisasi selesai, maka tugas mikrokontroller ini adalah untuk mengeluarkan informasi posisi pedati pada mikrokontroller DT-51. Ketika posisi
RETI
5-29
pedati berada di ujung paling kiri atau kanan lintasan, maka ATTiny2313 sensorPedati akan mengubah status SET_STOP_CART menjadi satu yang menandakan bahwa pedati harus berhenti. Proses pembacaan sensor encoder untuk posisi pedati ini menggunakan interupsi eksternal INT0 pada mikrokontroller ATTiny2313 sensorPedati. Algoritma yang digunakan untuk mencacah posisi pedati ini pada dasarnya sama seperti dengan yang telah dijelaskan pada Subbab 5.1.2.4, hanya saja kali ini ketelitian pembacaan encoder lebih tinggi.
5.1.5.4 ATTiny2313 SensorBandul
Diagram alir pada mikrokontroller ATTiny2313 sensorBandul dapat dilihat pada Gambar 5-26. Kegunaan mikrokontroller ATTiny2313 sensorBandul ini hanya untuk mendeteksi sudut bandul saat kini. Untuk memudahkan pembuatan program maka posisi nol bandul diambil pada posisi tegak vertikal terbalik. Mula-mula ATTiny2313 sensorBandul mereset variabel counter menjadi nol. Variable counter digunakan untuk mencacah sinyal yang dikeluarkan oleh encoder bandul. Proses pembacaan sensor encoder untuk sudut bandul ini menggunakan interupsi eksternal INT0 pada mikrokontroller ATTiny2313 sensorBandul. Setiap kali interupsi selesai maka ATTiny2313 sensorBandul akan mengeluarkan informasi sudut bandul ini (counter) pada mikrokontroller DT-51. Algoritma yang digunakan untuk mencacah sudut bandul ini pada dasarnya sama seperti dengan yang telah dijelaskan pada Subbab 5.1.2.4, hanya saja kali ini ketelitian pembacaan encoder lebih tinggi.
5-30
Main
Interupsi 0: EXT_INT0
1
Output sudut bandul (counter) pada DT-51
counter=0 tidak
PIN_CHA=1? RETI
Output sudut bandul (counter) pada DT-51
ya
tidak PIN_CHB=1?
counter=counter-1
END ya
counter=counter+1
1
tidak PIN_CHB=1?
counter=counter+1
ya
counter=counter-1
1
Gambar 5-26 Diagram alir pada mikrokontroller ATTiny2313 sensorBandul
5.1.6
Membership Function & Rule Pada Perangkat Lunak FuzzyTech
FuzzyTech 2 adalah sebuah perangkat lunak yang dapat mengimplementasikan fuzzy logic pada bermacam-macam tipe mikrokontroller yang berbeda-beda. FuzzyTech menyediakan editor grafik yang akan memudahkan user untuk mendesain sistem
2
FuzzyTech adalah merk dagang dari Inform Software Corporation
5-31
fuzzy, melakukan proses debugging, optimasi, dan verifikasi. Setelah desain fuzzy selesai dibangun, kemudian perangkat lunak FuzzyTech dapat dengan mudah mengenerate kode assembly sesuai dengan tipe mikrokontroller yang dipilih. Pada tugas akhir ini akan digunakan FuzzyTech ver 5.5 MCU-51 yang kompatibel dengan mikrokontroller DT-51. Perangkat lunak FuzzyTech merupakan produk komersial dan dapat diakses pada [URL-09]. Panduan lengkap cara penggunaan perangkat lunak ini terdapat pada FuzzyTech User Manual dan dapat diunduh pada [URL-10]. Panduan proses mengintegrasikan kode assembly yang digenerate oleh FuzzyTech dengan kode user pada DT-51 dapat dilihat pada lampiran A. Panduan penginstallan MCU-51 pada FuzzyTech dapat dilihat pada lampiran B. Perangkat
lunak
FuzzyTech
pada
tugas
akhir
ini
digunakan
untuk
mengimplementasikan konsep fuzzy control guna mengontrol kestabilan sistem inverted pendulum. Proses desain membership function dan pembangunan aturan fuzzy pada perangkat lunak ini sangatlah mudah sekali karena didukung oleh GUI (Graphic User Interface) yang memadai. Setelah proses desain fuzzy selesai dibangun, kemudian perangkat lunak FuzzyTech pun dapat dengan mudah mengenerate kode assembly untuk mikrokontroller DT-51. Secara umum masukan pada sistem fuzzy terdiri dari empat buah variabel, yaitu Angle, Angle_dot, x, dan x_dot. Keluaran dari sistem fuzzy ini hanya satu buah variabel yaitu force. Sistem fuzzy ini dikenal juga sebagai sistem MISO (Multiple Input Single Output). Gambar 5-27 memperlihatkan desain umum sistem inverted pendulum pada perangkat lunak FuzzyTech. Empat variabel masukan pada fuzzy menggunakan method: Fast Compute MBF. Output defuzzification menggunakan metode COM (Center of Maximum). Setiap variabel pada FuzzyTech memiliki dua buah nilai yaitu shell values dan code values. Shell values adalah nilai yang digunakan pada editor, debugger, dan analyzer pada GUI FuzzyTech. Code values adalah nilai yang digunakan oleh FuzzyTech ketika men-generate code assembly. Sebagai contoh ambil variabel input angle dari
5-32
sistem inverted pendulum. Misalkan batas dari linguistic variabel ini adalah dari -90 sampai 90 derajat. Pada saat implementasi perangkat keras, sudut ini diukur oleh sensor incremental yang misalnya menghasilkan output dari 240 sampai 1400. Maka dari itu proses konversi diperlukan oleh perangkat lunak FuzzyTech dengan mengambil shell values pada batas [-90o, +90o] dan code values dari [240, 1400].
Gambar 5-27 Desain sistem inverted pendulum pada perangkat lunak FuzzyTech
Shell values dan code values untuk variabel Angle, Angle_dot, x, x_dot, dan Force dari sistem inverted pendulum ini dapat dilihat pada Gambar 5-28 (a), (b), (c), (d), dan (e) secara berurutan.
5-33
(a)
(b)
(c)
(d)
5-34
(e) Gambar 5-28 Shell values dan code values untuk : (a) Angle, (b) AngleDot, (c) x, (d) x_dot, dan (e) Force
Membership function yang digunakan terdiri dari lima buah yaitu angle (sudut bandul), angle_dot (perubahan sudut bandul), x (posisi pedati), x_dot (perubahan posisi pedati), dan force (gaya pada pedati). Masing-masing bentuk membership function dapat dilihat pada Gambar 5-29 (a), (b), (c), (d), dan (e) secara berurutan. FuzzyTech memiliki keterbatasan dalam jumlah keanggotaan dalam suatu membership function. Jumlah keanggotaan maksimum yang diperbolehkan adalah sebanyak delapan buah. Selain itu FuzzyTech yang digunakan kali ini adalah edisi MCU-51 yang mengharuskan semua variabel yang dideskripsikan hanya sebesar 1 byte.
5-35
(a)
(c)
(b)
(d)
(e) Gambar 5-29 Membership Function untuk: (a) Angle (b) AngleDot (c) X (d) Xdot (e) Force
5-36
Aturan fuzzy yang digunakan terdiri dari 225 buah dan kode program untuk menghasilkan aturan ini dapat dilihat pada program rule.c yang dilampirkan pada CD. Gambar 5-30 memperlihatkan sepotong aturan fuzzy yang digunakan pada perangkat lunak FuzzyTech.
Gambar 5-30 Contoh aturan fuzzy yang digunakan pada FuzzyTech
5.2
Pengujian dan Analisis Perangkat Keras Sistem Inverted Pendulum
Pengujian perangkat keras sistem inverted pendulum akan dilakukan secara kualitatif dengan melampirkan CD video percobaan. Data percobaan secara kuantitatif tidak dapat disampaikan pada laporan kali ini karena berbagai alasan teknis. Untuk mengambil data percobaan, variabel theta, theta_dot, x, dan x_dot pada setiap iterasi perlu diambil oleh komputer. Komunikasi antara mikrokontroller dengan komputer akan memakan waktu yang signifikan sehingga hal ini akan sangat menganggu kestabilan sistem.
5-37
Hasil percobaan inverted pendulum dengan menggunakan dua buah variabel yaitu theta dan theta_dot adalah sudut bandul dapat distabilkan pada posisi vertikal terbalik, tetapi posisi pedati tidak dapat distabilkan pada posisi tengah-tengah lintasan sehingga pedati akan terus menerus bergerak menuju akhir lintasan. Hasil percobaan ini sesuai dengan hasil simulasi dengan dua buah variabel di mana posisi pedati (x) bergerak menuju tak hingga. Dengan menggunakan empat buah variabel yaitu theta, theta_dot, x, dan x_dot, baik sudut bandul maupun posisi pedati dapat distabilkan dengan baik. Hasil simulasi untuk empat variabel menunjukkan bahwa sistem dapat distabilkan dalam jangka waktu yang lama, tetapi tidak demikian dengan hasil implementasi perangkat kerasnya. Implementasi perangkat keras sistem inverted pendulum ini memiliki berbagai keterbatasan seperti: sudut bandul mula-mula haruslah kecil (<±5 derajat) dan bandul dapat distabilkan pada posisi vertikal terbaliknya hanya dalam jangka waktu yang pendek. Berbagai kendala yang dihadapi pada saat pembangunan perangkat keras sistem inverted pendulum ialah: 1. Keterbatasan perangkat lunak FuzzyTech yang mengharuskan besar variabel adalah 1 byte untuk edisi FuzzyTech MCU-51 sehinggga mengakibatkan keakuratan data menjadi berkurang. 2. Keterbatasan perangkat lunak FuzzyTech yang mengharuskan jumlah derajat keanggotaan maksimum sebanyak 8 buah sehingga variasi keluaran nilai force menjadi berkurang. 3. Kompensasi antara kestabilan bandul dan posisi pedati. Proses penstabilan posisi pedati sebenarnya merupakan sebuah gangguan lain (disturbance) pada proses penstabilan sudut bandul, sehingga perlu ditelaah lebih lanjut bagaimana kompensasi untuk kestabilan keduanya.
5-38
4. Perbedaan parameter (berat pedati, berat bandul, panjang bandul, dan sebagainya) yang besar antara simulasi dan perangkat keras sehingga mengakibatkan perbedaan parameter-parameter fuzzy (membership function) yang cukup besar antara keduanya. Selain itu simulasi menggunakan model ideal (seluruh gesekan diabaikan) sedangkan kenyataannya pada perangkat keras gesekan sangat berpengaruh terhadap perfomansi sistem. Perangkat keras memerlukan proses tuning parameter tersendiri. 5. Mekanisme pedati memakai prinsip ball screw yang mengakibatkan impulse pada bandul menjadi besar saat pedati berganti arah, sehingga waktu kestabilan inverted pendulum menjadi relatif pendek. 6. Gaya maksimum yang dihasilkan motor pedati tidaklah cukup kuat untuk mengejar perubahan sudut bandul yang relatif besar. 7. Proses tuning variabel dan aturan fuzzy dilakukan secara manual sehingga mengakibatkan tidak dapat diperolehnya solusi global optimum dari masalah. Proses tuning variabel sebaiknya menggunakan algoritma lain seperti genetic algorithms atau jaringan saraf tiruan.