T1__BAB III Institutional Repository | Satya Wacana Christian University: Trainer Sistem Pengendali Posisi pada Motor DC Menggunakan Kendali PID T1 BAB III
BAB III
PERANCANGAN
Pada bab ini akan dijelaskan mengenai perancangan Sistem Pengendali Posisi
Motor DC, perancangan Sistem Pengendali Posisi Motor DC dalam skripsi ini terdiri dari
perancangan mekanik, perancangan elektronik, dan perancangan perangkat lunak.
Secara keseluruhan, blok diagram sistem terdiri atas dua buah entitas utama, yaitu
pusat kontrol (kotak trainer ) dan Plant. Pada pusat kontrol terdapat sebuah
mikrokontroler Arduino MEGA 2560 sebagai kontroler, sebuah driver motor, sebuah
toggle switch untuk memilih mode, empat buah potensiometer untuk mengatur set point,
KP, KD, dan KI, sebuah display untuk menampilkan set point, posisi aktual motor,
parameter PID, serta grafik set point dan posisi aktual motor terhadap waktu.
Pada bagian Plant, terdapat sebuah motor DC yang akan dikontrol oleh pusat
kontrol, serta sebuah rotary encoder yang berfungsi untuk mengetahui posisi motor
sebenarnya. Blok diagram dari sistem yang dirancang dapat dilihat di Gambar 3.1.
Gambar 3.1 Blok diagram Sistem Pengendali Posisi Motor DC
13
3.1 Perancangan Sistem Mekanik Pengendali Posisi Motor DC
Mekanik merupakan bagian fisik dari sistem Pengendali Posisi Motor DC yang
terdiri dari box trainer dan motor DC.
3.1.1 Box Trainer
Pada box trainer terdapat sebuah switch untuk menghidupkan dan mematikan
sistem kontrol, sebuah toggle switch untuk memilih mode, empat buah potensio untuk
mengatur set point, KP, KD, dan KI, serta sebuah konektor DB9. Tampilan dari box trainer
dapat dilihat pada gambar 3.2.
P
SP
I
DB9
D
Toggle switch
Switch on/of
Gambar 3.2 Tampilan dalam box trainer
Berikut merupakan penjelasan dari setiap komponen pada box trainer :
1. Switch on/off, berfungsi untuk menghidupkan dan mematikan sistem kontrol.
2. Toggle switch, berfungsi untuk memilih mode kontrol, open-loop atau closedloop.
3. SP, merupakan potensiometer untuk mengatur nilai set point.
4. P, merupakan potensiometer untuk mengatur nilai KP.
5. D, merupakan potensiometer untuk mengatur nilai KD.
14
6. I, merupakan potensiometer untuk mengatur nilai KI.
7. DB9, digunakan untuk menghubungkan box trainer dengan motor DC.
3.1.2 Motor DC
Motor DC dipasang pada sebuah dudukan berukuran 8cm × 4,5cm × 9cm. Pada
shaft motor dipasang sebuah piringan dengan diameter 9cm yang digunakan untuk
melihat posisi shaft motor lebih mudah. Terdapat pula sebuah kabel DB9 yang digunakan
untuk menghubungkan motor dengan box trainer .
3.2 Perancangan Sistem Elektronik Pengendali Posisi Motor DC
Pada bagian ini akan dibahas mengenai modul yang digunakan untuk perancangan
sistem elektronik dari sistem Pengendali Posisi Motor DC.
3.2.1 Mikrokontroler
Modul mikrokontroler pada sistem Pengendali Posisi Motor DC ini berfungsi untuk
mengendalikan kecepatan motor melalui driver motor, pembacaan sensor rotary encoder ,
dan perhitungan alogaritma PID.
Modul Mikrokontroler yang digunakan dalam perancangan skripsi ini adalah
Arduino MEGA 2560 yang merupakan mikrokontroler berbasis Atmega2560. Alasan
dipilihnya Arduino sebagai Mikrokontroler yang digunakan dalam perancangan ini
adalah desain yang compact dan standar serta kemampuan komunikasi serial dengan
device lain.
Alasan lain dipilihnya Arduino adalah kemudahan dalam perancangan perangkat
lunak dikarenakan ketersediaan Perangkat lunak developement tools yang relatif mudah
digunakan serta library open source yang banyak dan lengkap. Bahasa pemrograman
Arduino merupakan bahasa yang memiliki basis bahasa pemrograman C dan C++.
15
Tabel 3.1 Konfigurasi penggunaan pin mikrokontroler
Pin
Keterangan
A0
SP
A1
Toggle switch
A2
KP
A3
KD
A4
KI
INT0 Encoder A
INT1 Encoder B
TX2
RX Nextion
RX2
TX Nextion
4
Kontrol Arah Motor 1
5
Kontrol PWM Motor 1
3.2.2 Driver Motor
Untuk mengatur kecepatan motor DC digunakan L298P Shield V1.2 yang
merupakan driver H-bridge 2A berbasis L298P yang didesain untuk menghasilkan arus
dua arah dengan besar arus kontinu sampai dengan 2A. Terdapat dua buah mode pada
driver , yaitu mode PWM dan PLL. Kegunaan pin pada mode PWM adalah seperti pada
Tabel 3.1 dan tabel kebenaran modul H-bridge adalah seperti Tabel 3.2.
Tabel 3.2 Kegunaan pin pada mode PWM
Pin
Fungsi
Digital 4
Kontrol Arah Motor 1
Digital 5
Kontrol PWM Motor 1
Digital 6
Kontrol PWM Motor 2
Digital 7
Kontrol Arah Motor 2
16
Tabel 3.3 Tabel kebenaran dari modul L298P Shield V1.2
E1
M1
L
X
H
PWM
Keterangan
E2
M2
Keterangan
Motor 1 Disabled
L
X
Motor 2 Disabled
H
Motor 1 Backward
H
H
Motor 2 Backward
X
PWM Speed Control PWM
X
PWM Speed Control
Keterangan:
H
: High
L
: Low
PWM
: Sinyal Pulse Width Modulation
X
: Sembarang nilai tegangan
3.2.3 Rotary Encoder
Untuk mengetahui posisi putar shaft motor, digunakan sensor rotary encoder
berupa 48 CPR quadrature encoder yang sudah terpasang pada motor. Tampilan dari
sensor rotary encoder dapat dilihat pada Gambar 3.3.
Gambar 3.3 Sensor rotary encoder
17
Tabel 3.4 Konfigurasi kabel rotary encoder
Warna
Keterangan
Putih
Encoder A
Kuning
Encoder B
Biru
VCC encoder 5 Volt
Hijau
Ground encoder
Hitam
Ground Motor
Merah
VCC Motor
3.2.4 Display
Digunakan Nextion NX8048T050 untuk menampilkan set point, posisi aktual
motor, nilai KP, KD, dan KI, rise time, settling time, serta grafik set point dan posisi aktual
motor terhadap waktu.
Tabel 3.5 Konfigurasi kabel display
Kabel
Keterangan
VCC
5 Volt Arduino
TX
RX2 Arduino
RX
TX2 Arduino
GND
Ground Arduino
3.3 Perancangan Perangkat Lunak
Perancangan perangkat lunak pada skripsi ini terdiri dari perancangan perangkat
lunak mikrokontroler dan peranangan perangkat lunak display.
3.3.1 Mikrokontroler
Perancangan perangkat lunak mikrokontroler meliputi akuisisi data sensor, kontrol
display, dan alogaritma PID. Hal itu direalisasikan dengan menggunakan pemrograman
berbahasa C pada Arduino MEGA 2560. Flow chart dari sistem Pengendali Posisi Motor
DC dapat dilihat pada Gambar 3.4.
18
Start
Inisialisasi Sistem
Ambil nilai SP, KP, KI, dan KD
Open-loop atau
Closed-loop
closed-loop
open-loop
Kontrol PID
Kontrol open-loop
Tampilkan ke display
Tampilkan ke display
sudah
belum
belum
sudah
Sudah 5 detik?
Sudah 5 detik?
Gambar 3.4 Flow chart sistem Pengendali Posisi Motor DC
19
Berikut merupakan penjelasan dari flow chart di atas:
Ketika sistem dinyalakan, akan dilakukan inisialisasi sistem.
Sistem akan mengambil nilai SP, KP, KD, dan KI.
Sistem akan melihat apakah pengguna memilih mode open-loop atau closedloop.
Jika mode yang dipilih adalah open-loop, maka sistem akan menjalankan proses
sebagai berikut:
Hitung error.
Hitung proporsi waktu yang dibutuhkan.
Nyalakan motor.
Tampilkan parameter ke display.
Cek apakah proses sudah berjalan selama 5 detik atau belum.
Jika sudah, sistem akan mengambil nilai SP, KP, KD, dan KI yang
baru.
Jika belum, sistem akan mengulangi dari langkah menampilkan
parameter ke display.
Jika mode yang dipilih adalah closed-loop, maka sistem akan mejalankan proses
sebagai berikut:
Menentukan arah gerak motor.
Hitung error.
Hitung nilai PWM yang dibutuhkan.
Bangkitkan PWM.
Tampilkan parameter ke display.
Cek apakah proses sudah berjalan selama 5 detik atau belum.
Jika sudah, sistem akan mengambil nilai SP, KP, KD, dan KI yang
baru.
Jika belum, sistem akan mengulangi dari langkah menentukan arah
gerak motor.
Pemberian delay selama 5 detik dilakukan agar nilai rise time dan settling time
dihitung seperti yang seharusnya, seperti pada BAB II. Jika perhitungan dilakukan tanpa
delay, maka sangat sulit menentukan posisi awal sehingga akan terjadi error pada
perhitungan rise time dan settling time.
20
Akuisisi Data Sensor
Proses ini dilakukan oleh mikrokontroler untuk memperoleh data sensor yang
nantinya akan digunakan sebagai input sistem. Terdapat sebuah rotary encoder dan 4
buah potensiometer.
Rotary Encoder
Untuk memperoleh data dari rotary encoder dimanfaatkan pin INT0 dan INT1 yang
merupakan pin interrupt eksternal dari mikrokontroler. Setiap kali terjadi interrupt (rising
edge atau falling edge), maka sebuah interrupt service routine (ISR) yang berisi variabel
counter akan dibangkitkan.
Fungsi-fungsi yang digunakan untuk memperoleh data dari rotary encoder adalah sebagai
berikut:
1. doEncoder(), merupakan fungsi yang dipanggil ketika terjadi interrupt pada
pin INT0. Fungsi ini berguna untuk menambahkan maupun mengurangi
variabel counter .
2. doEncoder2(), merupakan fungsi yang dipanggil ketika terjadi interrupt pada
pin INT1. Memiliki fungsi yang sama seperti fungsi doEncoder().
Potensiometer
Untuk memperoleh data dari potensio meter dimanfaatkan pin A0 sampai A4 yang
dapat berguna sebagai Analog to Digital Converter (ADC).
Perhitungan Sudut Posisi Motor
Terdapat sebuah variabel counter yang digunakan untuk mengetahui sudut posisi
motor. Dalam satu putaran, rotary encoder akan menghasilkan 3591 count.
Mikrokontroler akan melakukan perhitungan proporsi sebagai berikut:
�� � � �� � =
�
21
��
3591
× 360
(3)
Penentuan Arah Gerak Motor
Mikrokontroler menentukan arah gerak motor dengan cara membandingkan set
point dengan posisi motor saat itu. Jika posisi motor lebih kecil dari set point, maka motor
akan bergerak searah jarum jam (CW). Jika posisi motor lebih besar dari set point, maka
motor akan bergerak berlawanan arah jarum jam (CCW).
3.3.2 Display
Sistem Pengendali Motor DC dilengkapi dengan sebuah display untuk
menampilkan set point, posisi aktual motor, nilai KP, KD, dan KI, rise time, settling time,
serta grafik set point dan posisi aktual motor terhadap waktu. Tampilan display dapat
dilihat pada Gambar 3.5.
Gambar 3.5 Tampilan display
22
PERANCANGAN
Pada bab ini akan dijelaskan mengenai perancangan Sistem Pengendali Posisi
Motor DC, perancangan Sistem Pengendali Posisi Motor DC dalam skripsi ini terdiri dari
perancangan mekanik, perancangan elektronik, dan perancangan perangkat lunak.
Secara keseluruhan, blok diagram sistem terdiri atas dua buah entitas utama, yaitu
pusat kontrol (kotak trainer ) dan Plant. Pada pusat kontrol terdapat sebuah
mikrokontroler Arduino MEGA 2560 sebagai kontroler, sebuah driver motor, sebuah
toggle switch untuk memilih mode, empat buah potensiometer untuk mengatur set point,
KP, KD, dan KI, sebuah display untuk menampilkan set point, posisi aktual motor,
parameter PID, serta grafik set point dan posisi aktual motor terhadap waktu.
Pada bagian Plant, terdapat sebuah motor DC yang akan dikontrol oleh pusat
kontrol, serta sebuah rotary encoder yang berfungsi untuk mengetahui posisi motor
sebenarnya. Blok diagram dari sistem yang dirancang dapat dilihat di Gambar 3.1.
Gambar 3.1 Blok diagram Sistem Pengendali Posisi Motor DC
13
3.1 Perancangan Sistem Mekanik Pengendali Posisi Motor DC
Mekanik merupakan bagian fisik dari sistem Pengendali Posisi Motor DC yang
terdiri dari box trainer dan motor DC.
3.1.1 Box Trainer
Pada box trainer terdapat sebuah switch untuk menghidupkan dan mematikan
sistem kontrol, sebuah toggle switch untuk memilih mode, empat buah potensio untuk
mengatur set point, KP, KD, dan KI, serta sebuah konektor DB9. Tampilan dari box trainer
dapat dilihat pada gambar 3.2.
P
SP
I
DB9
D
Toggle switch
Switch on/of
Gambar 3.2 Tampilan dalam box trainer
Berikut merupakan penjelasan dari setiap komponen pada box trainer :
1. Switch on/off, berfungsi untuk menghidupkan dan mematikan sistem kontrol.
2. Toggle switch, berfungsi untuk memilih mode kontrol, open-loop atau closedloop.
3. SP, merupakan potensiometer untuk mengatur nilai set point.
4. P, merupakan potensiometer untuk mengatur nilai KP.
5. D, merupakan potensiometer untuk mengatur nilai KD.
14
6. I, merupakan potensiometer untuk mengatur nilai KI.
7. DB9, digunakan untuk menghubungkan box trainer dengan motor DC.
3.1.2 Motor DC
Motor DC dipasang pada sebuah dudukan berukuran 8cm × 4,5cm × 9cm. Pada
shaft motor dipasang sebuah piringan dengan diameter 9cm yang digunakan untuk
melihat posisi shaft motor lebih mudah. Terdapat pula sebuah kabel DB9 yang digunakan
untuk menghubungkan motor dengan box trainer .
3.2 Perancangan Sistem Elektronik Pengendali Posisi Motor DC
Pada bagian ini akan dibahas mengenai modul yang digunakan untuk perancangan
sistem elektronik dari sistem Pengendali Posisi Motor DC.
3.2.1 Mikrokontroler
Modul mikrokontroler pada sistem Pengendali Posisi Motor DC ini berfungsi untuk
mengendalikan kecepatan motor melalui driver motor, pembacaan sensor rotary encoder ,
dan perhitungan alogaritma PID.
Modul Mikrokontroler yang digunakan dalam perancangan skripsi ini adalah
Arduino MEGA 2560 yang merupakan mikrokontroler berbasis Atmega2560. Alasan
dipilihnya Arduino sebagai Mikrokontroler yang digunakan dalam perancangan ini
adalah desain yang compact dan standar serta kemampuan komunikasi serial dengan
device lain.
Alasan lain dipilihnya Arduino adalah kemudahan dalam perancangan perangkat
lunak dikarenakan ketersediaan Perangkat lunak developement tools yang relatif mudah
digunakan serta library open source yang banyak dan lengkap. Bahasa pemrograman
Arduino merupakan bahasa yang memiliki basis bahasa pemrograman C dan C++.
15
Tabel 3.1 Konfigurasi penggunaan pin mikrokontroler
Pin
Keterangan
A0
SP
A1
Toggle switch
A2
KP
A3
KD
A4
KI
INT0 Encoder A
INT1 Encoder B
TX2
RX Nextion
RX2
TX Nextion
4
Kontrol Arah Motor 1
5
Kontrol PWM Motor 1
3.2.2 Driver Motor
Untuk mengatur kecepatan motor DC digunakan L298P Shield V1.2 yang
merupakan driver H-bridge 2A berbasis L298P yang didesain untuk menghasilkan arus
dua arah dengan besar arus kontinu sampai dengan 2A. Terdapat dua buah mode pada
driver , yaitu mode PWM dan PLL. Kegunaan pin pada mode PWM adalah seperti pada
Tabel 3.1 dan tabel kebenaran modul H-bridge adalah seperti Tabel 3.2.
Tabel 3.2 Kegunaan pin pada mode PWM
Pin
Fungsi
Digital 4
Kontrol Arah Motor 1
Digital 5
Kontrol PWM Motor 1
Digital 6
Kontrol PWM Motor 2
Digital 7
Kontrol Arah Motor 2
16
Tabel 3.3 Tabel kebenaran dari modul L298P Shield V1.2
E1
M1
L
X
H
PWM
Keterangan
E2
M2
Keterangan
Motor 1 Disabled
L
X
Motor 2 Disabled
H
Motor 1 Backward
H
H
Motor 2 Backward
X
PWM Speed Control PWM
X
PWM Speed Control
Keterangan:
H
: High
L
: Low
PWM
: Sinyal Pulse Width Modulation
X
: Sembarang nilai tegangan
3.2.3 Rotary Encoder
Untuk mengetahui posisi putar shaft motor, digunakan sensor rotary encoder
berupa 48 CPR quadrature encoder yang sudah terpasang pada motor. Tampilan dari
sensor rotary encoder dapat dilihat pada Gambar 3.3.
Gambar 3.3 Sensor rotary encoder
17
Tabel 3.4 Konfigurasi kabel rotary encoder
Warna
Keterangan
Putih
Encoder A
Kuning
Encoder B
Biru
VCC encoder 5 Volt
Hijau
Ground encoder
Hitam
Ground Motor
Merah
VCC Motor
3.2.4 Display
Digunakan Nextion NX8048T050 untuk menampilkan set point, posisi aktual
motor, nilai KP, KD, dan KI, rise time, settling time, serta grafik set point dan posisi aktual
motor terhadap waktu.
Tabel 3.5 Konfigurasi kabel display
Kabel
Keterangan
VCC
5 Volt Arduino
TX
RX2 Arduino
RX
TX2 Arduino
GND
Ground Arduino
3.3 Perancangan Perangkat Lunak
Perancangan perangkat lunak pada skripsi ini terdiri dari perancangan perangkat
lunak mikrokontroler dan peranangan perangkat lunak display.
3.3.1 Mikrokontroler
Perancangan perangkat lunak mikrokontroler meliputi akuisisi data sensor, kontrol
display, dan alogaritma PID. Hal itu direalisasikan dengan menggunakan pemrograman
berbahasa C pada Arduino MEGA 2560. Flow chart dari sistem Pengendali Posisi Motor
DC dapat dilihat pada Gambar 3.4.
18
Start
Inisialisasi Sistem
Ambil nilai SP, KP, KI, dan KD
Open-loop atau
Closed-loop
closed-loop
open-loop
Kontrol PID
Kontrol open-loop
Tampilkan ke display
Tampilkan ke display
sudah
belum
belum
sudah
Sudah 5 detik?
Sudah 5 detik?
Gambar 3.4 Flow chart sistem Pengendali Posisi Motor DC
19
Berikut merupakan penjelasan dari flow chart di atas:
Ketika sistem dinyalakan, akan dilakukan inisialisasi sistem.
Sistem akan mengambil nilai SP, KP, KD, dan KI.
Sistem akan melihat apakah pengguna memilih mode open-loop atau closedloop.
Jika mode yang dipilih adalah open-loop, maka sistem akan menjalankan proses
sebagai berikut:
Hitung error.
Hitung proporsi waktu yang dibutuhkan.
Nyalakan motor.
Tampilkan parameter ke display.
Cek apakah proses sudah berjalan selama 5 detik atau belum.
Jika sudah, sistem akan mengambil nilai SP, KP, KD, dan KI yang
baru.
Jika belum, sistem akan mengulangi dari langkah menampilkan
parameter ke display.
Jika mode yang dipilih adalah closed-loop, maka sistem akan mejalankan proses
sebagai berikut:
Menentukan arah gerak motor.
Hitung error.
Hitung nilai PWM yang dibutuhkan.
Bangkitkan PWM.
Tampilkan parameter ke display.
Cek apakah proses sudah berjalan selama 5 detik atau belum.
Jika sudah, sistem akan mengambil nilai SP, KP, KD, dan KI yang
baru.
Jika belum, sistem akan mengulangi dari langkah menentukan arah
gerak motor.
Pemberian delay selama 5 detik dilakukan agar nilai rise time dan settling time
dihitung seperti yang seharusnya, seperti pada BAB II. Jika perhitungan dilakukan tanpa
delay, maka sangat sulit menentukan posisi awal sehingga akan terjadi error pada
perhitungan rise time dan settling time.
20
Akuisisi Data Sensor
Proses ini dilakukan oleh mikrokontroler untuk memperoleh data sensor yang
nantinya akan digunakan sebagai input sistem. Terdapat sebuah rotary encoder dan 4
buah potensiometer.
Rotary Encoder
Untuk memperoleh data dari rotary encoder dimanfaatkan pin INT0 dan INT1 yang
merupakan pin interrupt eksternal dari mikrokontroler. Setiap kali terjadi interrupt (rising
edge atau falling edge), maka sebuah interrupt service routine (ISR) yang berisi variabel
counter akan dibangkitkan.
Fungsi-fungsi yang digunakan untuk memperoleh data dari rotary encoder adalah sebagai
berikut:
1. doEncoder(), merupakan fungsi yang dipanggil ketika terjadi interrupt pada
pin INT0. Fungsi ini berguna untuk menambahkan maupun mengurangi
variabel counter .
2. doEncoder2(), merupakan fungsi yang dipanggil ketika terjadi interrupt pada
pin INT1. Memiliki fungsi yang sama seperti fungsi doEncoder().
Potensiometer
Untuk memperoleh data dari potensio meter dimanfaatkan pin A0 sampai A4 yang
dapat berguna sebagai Analog to Digital Converter (ADC).
Perhitungan Sudut Posisi Motor
Terdapat sebuah variabel counter yang digunakan untuk mengetahui sudut posisi
motor. Dalam satu putaran, rotary encoder akan menghasilkan 3591 count.
Mikrokontroler akan melakukan perhitungan proporsi sebagai berikut:
�� � � �� � =
�
21
��
3591
× 360
(3)
Penentuan Arah Gerak Motor
Mikrokontroler menentukan arah gerak motor dengan cara membandingkan set
point dengan posisi motor saat itu. Jika posisi motor lebih kecil dari set point, maka motor
akan bergerak searah jarum jam (CW). Jika posisi motor lebih besar dari set point, maka
motor akan bergerak berlawanan arah jarum jam (CCW).
3.3.2 Display
Sistem Pengendali Motor DC dilengkapi dengan sebuah display untuk
menampilkan set point, posisi aktual motor, nilai KP, KD, dan KI, rise time, settling time,
serta grafik set point dan posisi aktual motor terhadap waktu. Tampilan display dapat
dilihat pada Gambar 3.5.
Gambar 3.5 Tampilan display
22