Jenis Dokumen
B100
Nomor Dokumen
B100 01
Nomor Revisi
01
Nama File
Tanggal Penerbitan
28 November 2016
Unit Penerbit
Jumlah Halaman
Data Pengusul
Pengusul
Nama
Jabatan
Tanggal
28 - 11 - 2016
131354025
Tanda Tangan
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889
Telepon : 022-2013789
Faks : 022-2013889
Email : polban@polban.ac.id
DAFTAR ISI
1. Pengantar ............................................................................................................................... 3
1.1 Ringkasan Isi Dokumen ............................................................................................... 3
1.2 Tujuan Penulisan dan Aplikasi/Kegunaan Dokumen .................................................. 3
1.3 Referensi ....................................................................................................................... 3
2. Proposal Pengembangan ....................................................................................................... 4
2.1 Pendahuluan ................................................................................................................. 4
2.2 Desain Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper ................ 4
2.2.1 Latar belakang .................................................................................................. 4
2.2.2 Konsep ............................................................................................................. 5
3. Penutup .................................................................................................................................. 5
1. Pengantar
1.1 Ringkasan Isi Dokumen
Dokumen B100 yang dibuat berisi gagasan atau ide tentang tugas mandiri
berupa standalone sistem kendali PID. Dan berisi tentang latar belakang dan konsep
dari Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper.
1.3 Referensi
electronics-diy.com. Driving CDROM Stepper Motor with Arduino. electronicsdiy.com. [Online] Online Shop and Electronics Blog. [Dikutip: 28 November 2016.]
http://electronics-diy.com/driving-cdrom-stepper-motor-with-arduino.php.
Jenkins, Dr. Hodge. Mercer University. [Online] [Dikutip: 28 November 2016.]
http://faculty.mercer.edu/jenkins_he/documents/TuningforPIDControllers.pdf.
Motor Stepper : Teknologi, Metoda, dan Rangkaian Kontrol. Syahrul. 2011. 2,
Bandung : s.n., 9 Mei 2011, Majalah Ilmiah Unikom, Vol. 6, hal. 187 - 202.
2. Proposal Pengembangan
2.1 Pendahuluan
Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper merupakan
sebuah sistem kendali yang melakukan kendalian posisi dengan sebuah aktuator
berupa motor stepper. Kendalian menggunakan kendali PID menggunakan metode
Zieger-Nichols dalam perancangannya.
2.2 Desain Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper
Desain Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper
merupakan sebuah sistem yang menggunakan Arduino Uno sebagai kontroler yang
mengontrol aktuator stepper yang menggerakan posisi secara horizontal (searah) dan
masukan diberikan oleh pembagi tegangan dari potensio geser. Terdapat juga
gangguan yang akan diberikan yaitu berupa penggeseran posisi secara manual.
Studi
D4-Teknik
Elektronika Politeknik
Negeri
Bandung,
2.2.2 Konsep
Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper dengan
teknik PID ini merupakan proses kontrol posisi menggunakan aktuator berupa motor
stepper yang nilai error posisi di-sensing oleh potensio geser. Sistem kendali ini dibuat
untuk memahami konsep standalone PID control secara lebih mendalam, dimana
yang semua tugas pengontrolan dari sistem dilakukan oleh Arduino Uno.
3. Penutup
Demikian dokumen B100 ini dibuat untuk selanjutnya dapat dijadikan acuan
untuk pengembangan-pengembangan bagi tahapan dan dokumentasi berikutnya.
Jenis Dokumen
B200
Nomor Dokumen
B200 01
Nomor Revisi
01
Nama File
Tanggal Penerbitan
28 November 2016
Unit Penerbit
Jumlah Halaman
Data Pengusul
Pengusul
Nama
Jabatan
Tanggal
28 - 11 - 2016
131354025
Tanda Tangan
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889
Telepon : 022-2013789
Faks : 022-2013889
Email : polban@polban.ac.id
DAFTAR ISI
1. Pengantar ............................................................................................................................... 3
1.1 Ringkasan Isi Dokumen ............................................................................................... 3
1.2 Spesifikasi berdasarkan fungsionalitas ........................................................................ 3
1.3 Referensi ..................................................................................................................... 3
2. Pendahuluan .......................................................................................................................... 4
2.1 Gambaran Umum......................................................................................................... 4
2.2 Tujuan .......................................................................................................................... 4
2.3 Ruang Lingkup ............................................................................................................ 4
2.4 Deskripsi Sistem .......................................................................................................... 5
3. Spesifikasi Keseluruhan ........................................................................................................ 5
3.1 Deskripsi Cara Kerja Sistem ........................................................................................ 5
3.2 Deskripsi Perangkat Keras ........................................................................................... 5
3.3 Deskripsi Perangkat Lunak .......................................................................................... 6
3.4 Verifikasi ..................................................................................................................... 6
1. Pengantar
1.1 Ringkasan Isi Dokumen
Dokumen B200 yang dibuat berisi spesifikasi alat yang meliputi spesifikasi dan
detail dari sistem yang akan dibuat. Dan berisi tentang mekanisme sistem dengan
standalone control yang berjudul Kendali PID untuk Mengatur posisi Menggunakan
Motor Stepper .
1.3 Referensi
electronics-diy.com. Driving CDROM Stepper Motor with Arduino. electronicsdiy.com. [Online] Online Shop and Electronics Blog. [Dikutip: 28 November 2016.]
http://electronics-diy.com/driving-cdrom-stepper-motor-with-arduino.php.
Jenkins, Dr. Hodge. Mercer University. [Online] [Dikutip: 28 November 2016.]
http://faculty.mercer.edu/jenkins_he/documents/TuningforPIDControllers.pdf.
Motor Stepper : Teknologi, Metoda, dan Rangkaian Kontrol. Syahrul. 2011. 2,
Bandung : s.n., 9 Mei 2011, Majalah Ilmiah Unikom, Vol. 6, hal. 187 - 202.
2. Pendahuluan
2.1 Gambaran Umum
Dokumen ini berisi spesifikasi sistem kendali posisi yang ditujukan sebagai
dokumentasi dari tugas mandiri pada matakuliah sistem kendali terdistribusi (SKT).
Spesifikasi yang meliputi spesifikasi sistem dalam mengembangkan alat ini, serta
detail dari alat yang akan dibuat dengan nama Kendali PID untuk Mengatur posisi
Menggunakan Motor Stepper. Dokumen ini lebih menitik beratkan pada pembahasan
spesifikasi perancangan produk. spesifikasi perancangan produk tersebut dibagi
menjadi beberapa bagian meliputi deskripsi cara kerja sistem, deskripsi perangkat
keras dan deskripsi perangkat lunak. Selain itu, dalam dokumen ini juga dijelaskan
rencana-rencana untuk melakukan verifikasi terhadap sistem yang dibuat untuk
menentukan pemenuhan sistem terhadap spesifikasi yang telah ditentukan.
2.2 Tujuan
Tujuan utama dari dibuatnya alat ini adalah :
Teknis :
o Sistem kendali, standalone hanya akan melakukan kendali terhadap posisi
horizontal saja.
o Aktuator dan plant menjadi satu kesatuan oleh karenanya jarak posisi yang
dikendalikan sangat kecil.
Konten :
o Target penggunaan dari alat ini adalah dapat membantu memahami bahan
ajar kendali PID.
Umpan balik yang dterima oleh pengontrol yakni nilai pembagi tegangan
dari pembacaan potensio geser.
3. Spesifikasi Keseluruhan
Pada bab ini akan dibahas mengenai spesifikasi keseluruhan dari Kendali PID
untuk Mengatur posisi Menggunakan Motor Stepper sebagai suatu sistem kendali
dan komponen-kompoanen penyusunnya. Hal-hal yang akan dijelaskan antara lain :
o Deskripsi cara kerja sistem : menjelaskan mengenai cara kerja secara umum
dari sistem alat ini.
o Deskripsi perangkat keras : menjelaskan perangkat keras yang digunakan
dalam sistem ini.
o Deskripsi perangkat lunak: menjelaskan diagram blok perangkat lunak yang
akan disusun pada sistem ini.
Potensio.
LCD.
Arduino UNO.
Potensio Geser.
Wadah Plastik.
Fungsi Scaling.
3.4 Verifikasi
Verifikasi merupakan suatu pengujian untuk menentukan bahwa sistem
berjalan sesuai dengan perencanaan. Beberapa tumpuan tercapainya sistem kendali
posisi ini ditentukan :
Sistem Kendali dapat membuat posisi sesuai denga set poin yang
diharapkan.
Jenis Dokumen
B300
Nomor Dokumen
B300 01
Nomor Revisi
01
Nama File
Tanggal Penerbitan
28 November 2016
Unit Penerbit
Jumlah Halaman
Data Pengusul
Pengusul
Nama
Jabatan
Tanggal
28 - 11 - 2016
131354025
Tanda Tangan
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889
Telepon : 022-2013789
Faks : 022-2013889
Email : polban@polban.ac.id
DAFTAR ISI
1. Pengantar ............................................................................................................................... 3
1.1 Ringkasan Isi Dokumen ............................................................................................... 3
1.2 Tujuan Penulisan ......................................................................................................... 3
1.3 Referensi .................................................................................................................... 3
2. Perancangan Keseluruhan ..................................................................................................... 4
2.1 Perancangan Sistem Elektronik ................................................................................... 4
2.2 Perancangan Perangkat Lunak ..................................................................................... 5
2.3 Perancangan Mekanik .................................................................................................. 6
2.4 Perancangan Kendali ................................................................................................... 6
1. Pengantar
1.1 Ringkasan Isi Dokumen
Dokumen B300 yang dibuat berisi detail perancangan yang meliputi
perancangan sistem elektronik, perangkat lunak, mekanik dan kendali.
1.3 Referensi
electronics-diy.com. Driving CDROM Stepper Motor with Arduino. electronicsdiy.com. [Online] Online Shop and Electronics Blog. [Dikutip: 28 November 2016.]
http://electronics-diy.com/driving-cdrom-stepper-motor-with-arduino.php.
Jenkins, Dr. Hodge. Mercer University. [Online] [Dikutip: 28 November 2016.]
http://faculty.mercer.edu/jenkins_he/documents/TuningforPIDControllers.pdf.
Motor Stepper : Teknologi, Metoda, dan Rangkaian Kontrol. Syahrul. 2011. 2,
Bandung : s.n., 9 Mei 2011, Majalah Ilmiah Unikom, Vol. 6, hal. 187 - 202.
2. Perancangan Keseluruhan
2.1 Perancangan Sistem Elektronik
Potensio
sebagai input
LCD
Power Supply
12 V
Backpack I2C
LCD
Regulator 5 V
Arduino
Driver Motor
L298
Motor Stepper
Sensor
Potensio geser
Start
A. Baca nilai SV
B. Baca nilai PV
C. Hitung Ts
D. Hitung Error
E. Hitung Integral Error
D. Hitung Differential Error
Hitung PID
Hitung waktu
display
y
IE >= EL ?
Ditampilkan SP,
PV didisplay
serial plotter
Reset IE untuk counting
ulang
A. Output diset 0
B. Reset perhitungan IE untuk periode display
C. Reset nilai perhitungan PID
D. Setting time sampling
E. Tetap menampilkan SV dan PV
Start = 1 ?
y
A
Perncangan mekanik pada sistem kendali ini yakni motor stepper telah
terhubung langsung untuk menggerakan posisi, seperti ditunjukkan pada gambar 3.
SV
E = SV - PV
MV
Potensio
Arduino UNO
PV
Driver L298
Motor Stepper
Plant Posisi
Sensor Pontensio
Geser
Jenis Dokumen
B400
Nomor Dokumen
B400 01
Nomor Revisi
01
Nama File
Tanggal Penerbitan
5 Desember 2016
Unit Penerbit
Jumlah Halaman
11
Data Pengusul
Pengusul
Nama
Jabatan
Tanggal
5 - 12 - 2016
131354025
Tanda Tangan
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889
Telepon : 022-2013789
Faks : 022-2013889
Email : polban@polban.ac.id
DAFTAR ISI
1. Pengantar ............................................................................................................................... 3
1.1 Ringkasan Isi Dokumen .......................................................................................................... 3
1.2 Tujuan Penulisan ..................................................................................................................... 3
1. Pengantar
1.1 Ringkasan Isi Dokumen
Dokumen ini berisi realisasi dan pengujian sub sistem dari proyek mandiri yang
berjudul Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper. Deskripsi
dan gambaran umum proyek telah diuraikan pada dokumen B100, spesifikasi telah
diuraikan pada dokumen B200, dan desain telah diurakan pada dokumen B300..
Isi dokumen ini secara garis besar berisi dua bagian yakni hasil realisasi dan
Pengujian sub sistem. dibagi menjadi empat bagian kecil yaitu mekanik, elektronik,
dan komputer. Bagian mekanik akan menjelaskan implementasi di bagian mekanik
yang digunakan pada sistem ini. Bagian elektronik menjelaskan perangkat-perangkat
elektronik yang digunakan dan fungsinya. Bagian komputer menjelaskan
implementasi pemrograman software sistem ini. Bagian kontrol menjelaskan alur
pengontrolan sistem ketika bergerak.
Pengujian sub sistem menjelaskan berbagai macam test yang akan dilakukan
untuk performa suatu sistem. Ukuran tersebut dapat berupa bekerja atau tidaknya
suatu sub sistem yang menyusun sistem yang dirancang.
1.3 Referensi
electronics-diy.com. Driving CDROM Stepper Motor with Arduino. electronicsdiy.com. [Online] Online Shop and Electronics Blog. [Dikutip: 28 November 2016.]
http://electronics-diy.com/driving-cdrom-stepper-motor-with-arduino.php.
2. Realisasi
2.1 Mekanik
Gambar 2 merupakan realisasi mekanik untuk bagian aktuator dan sensor serta
plant yang dibuat dilihat pada tampak atas. Seluruh tadi disusun dan disesuaikan
dengan sistem kendali posisi. Sistem kendali posisi memerlukan sebuah acuan posisi
yang direalisasikan berupa skala pada penggaris. Skala pada penggaris tersebut agak
lebih besar (5 cm) dari jarak jangkauan motor stepper yakni 3.8 cm. Skala penggaris
akan disesuaikan nilainya dengan sensor (pcb merah) yang direkatkan dengan posisi
motor stepper dan nilainnya akan masuk pada sebuah kontroler.
2.2 Elektronik
Arduino UNO
2.3 Komputer
Program yang direalisasikan yakni program pengujian keseluruhan komponen.
Pada program ini akan dilakukan tes terhadap, pembacaan sensor, pembacaan setpoin,
pergerakan stepper motor.
Program pengujian keseluruhan komponen
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
//catatan:
//semakin kecil time maka semakin cepat torsi makin kecil
#define time 5 // time in miliseconds between each motor's step
#define
#define
#define
#define
#define
#define
StepperA1
StepperA2
StepperB1
StepperB2
pwmA 5
pwmB 6
9
10
11
12
pinMode(StepperB2, OUTPUT);
pinMode(pwmA, OUTPUT);//pwm
pinMode(pwmB, OUTPUT);
n_pwmA = 255;
n_pwmB = n_pwmA;
analogWrite(pwmA, n_pwmA);
analogWrite(pwmB, n_pwmB);
F_state = 0;
R_state = 0;
delay(700);
lcd.clear();
lcd.print("tes Stepper");
forward(43);
back(43);
lcd.clear();
lcd.print("Mulai program");
delay(700);
n_pwmA = 0;
n_pwmB = n_pwmA;
analogWrite(pwmA, n_pwmA);
analogWrite(pwmB, n_pwmB);
lcd.clear();
lcd.setCursor(0,0);
lcd.print("Sen:");
lcd.setCursor(0,1);
lcd.print("SV :");
}
void loop() {
// put your main code here, to run repeatedly:
sensor = analogRead(A0);
SV = map(analogRead(A1),0,1023,0,255);
n_pwmA = SV;
n_pwmB = SV;
analogWrite(pwmA, n_pwmA);
analogWrite(pwmB, n_pwmB);
lcd.setCursor(5,0);
lcd.print(sensor);
lcd.print(" ");
lcd.setCursor(5,1);
lcd.print(SV);
lcd.print(" ");
if(F_state == 0){
forward(1);
if (sensor >= 947){
F_state = 1;
R_state = 1;
}
}
if(R_state == 1){
back(1);
if(sensor <= 29){
R_state = 0;
F_state = 0;
}
}
// forward(1) ke kanan ;
// back(1) ke kiri;
}
void forward(int number){//forward function, you can choose the number
of steps when calling the function
int i=0;//to control the number of steps
while(i<number){
digitalWrite(StepperA1, HIGH); //this sequence is part of the basic
algoritm to control a bipolar stepper motor.
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(time);//wait the time defined.
digitalWrite(StepperA1, HIGH);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, HIGH);
delay(time);
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, HIGH);
delay(time);
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(time);
i++;
}
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, LOW);
}
void back(int number){//As the forward function, but makes the reverse
sequence.
int i=0;
while(i<number){
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(time);
digitalWrite(StepperA1,
digitalWrite(StepperA2,
digitalWrite(StepperB1,
digitalWrite(StepperB2,
delay(time);
LOW);
HIGH);
LOW);
HIGH);
digitalWrite(StepperA1,
digitalWrite(StepperA2,
digitalWrite(StepperB1,
digitalWrite(StepperB2,
delay(time);
HIGH);
LOW);
LOW);
HIGH);
digitalWrite(StepperA1,
digitalWrite(StepperA2,
digitalWrite(StepperB1,
digitalWrite(StepperB2,
delay(time);
HIGH);
LOW);
HIGH);
LOW);
i++;
}
digitalWrite(StepperA1,
digitalWrite(StepperA2,
digitalWrite(StepperB1,
digitalWrite(StepperB2,
LOW);
LOW);
LOW);
LOW);
Pengujian sub sistem ini dilakukan dengan men-download program cek port ke
dalam arduino. Hasil dari pengukuran akan menunjukkan bahwa port I/O berfungsi
dengan baik atau tidak.
Pengujian dan Analisa Driver L298 & Motor Stepper
Pengujian pada sub sistem penguat daya dan aktuator ini dilakukan dengan
menggunakan realisasi program pada bagian realisasi bagian komputer yang
sebelumnya telah dijelaskan. Pengujian ini menggerakan motor stepper ke kiri dan ke
kanan dengan mengubah nilai pwm sesuai dengan set poin.
Pengujian dan Analisa Catu Daya
Pada pengujian catu daya dilakukan pengukuran langsung pada keluaran catu
daya. Hasil yang diperoleh dari hasil pengukuran yakni 12 V. Hasil pengukuran ini
menunjukkan bahwa catu daya berfungsi dengan baik.
Pengujian dan Analisa Regulator
Pada pengujian catu daya dilakukan pengukuran langsung pada keluaran
regulator. Hasil yang diperoleh dari hasil pengukuran yakni 4.98 V. Hasil pengukuran
ini menunjukkan bahwa catu daya berfungsi dengan cukup baik mendekati 5 V.
Pengujian dan Analisa LCD (penampil data)
Pengujian pada sub sistem penampil data ini dilakukan dengan menggunakan
realisasi program pada bagian realisasi bagian komputer. Pengujian menampilkan
setpoin dan pembacaan nilai sensor.
Pengujian dan Analisa Potensiometer Sensor dan Setpoin
Pengujian pada sensor dam setpoin diolah dan ditampilkan pada LCD. Hasil
yang ditunjukkan untuk nilai maksimum dan minum yakni
Potensio
Minimum
maksimum
Sensor
28
958
Setpoin
20
1023
Hasil Pengujian
No
Hasil pengujian
baik
baik
Catu daya 12 V
baik
Regulator output 5 V
Cukup baik
baik
baik
ket
4.98 V
Dari hasil pengujian yang didapat yakni hampir seluruh sub sitem dapat bekerja
dengan baik.
Jenis Dokumen
B500
Nomor Dokumen
B500 01
Nomor Revisi
01
Nama File
Tanggal Penerbitan
5 Desember 2016
Unit Penerbit
Jumlah Halaman
11
Data Pengusul
Pengusul
Nama
Jabatan
Tanggal
5 - 12 - 2016
131354025
Tanda Tangan
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889
Telepon : 022-2013789
Faks : 022-2013889
Email : polban@polban.ac.id
DAFTAR ISI
1. Pengantar ............................................................................................................................... 3
1.1 Ringkasan Isi Dokumen .......................................................................................................... 3
1.2 Tujuan Penulisan ..................................................................................................................... 3
1. Pengantar
1.1 Ringkasan Isi Dokumen
Dokumen ini berisi desain kendali PID dari proyek mandiri yang berjudul
Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper.
1.3 Referensi
electronics-diy.com. Driving CDROM Stepper Motor with Arduino. electronicsdiy.com. [Online] Online Shop and Electronics Blog. [Dikutip: 28 November 2016.]
http://electronics-diy.com/driving-cdrom-stepper-motor-with-arduino.php.
Jenkins, Dr. Hodge. Mercer University. [Online] [Dikutip: 28 November 2016.]
http://faculty.mercer.edu/jenkins_he/documents/TuningforPIDControllers.pdf.
Motor Stepper : Teknologi, Metoda, dan Rangkaian Kontrol. Syahrul. 2011. 2,
Bandung : s.n., 9 Mei 2011, Majalah Ilmiah Unikom, Vol. 6, hal. 187 - 202.
Garis miring diberikan pada bagian transisi kenaikan dari respon, garis
horizontal diberikan pada bagian steady state respon. Setelah itu diberikan dua
buah garis vertikal sebagai garis bantu pemotong agar terlihat dua titik yang jadi
acuan untuk mencari nilai T & L. Nilai nilai yang didapat yakni x1 = 33.51 dan
x2 = 40 dengan titik awal x0 = 30.
L = x1 1 = 33.51 30 = 3.51 dan T yang didapat ialah
T = x2 x1 = 40 33.51 = 7.51
Jadi nilai yang didapat ialah L = 3.51 dan T = 7.51.
Satuan waktu matlab terhitung tidak tepat satu detik karena sangat tergantung
pada kecepatan sampling dari PC atau Laptop yang digunakan. Oleh karena sebab
itu, maka perlu dilakukan perbandingan waktu untuk mendapat nilai konversi,
nantinya nilai itu dapat digunakan untuk menentukan waktu secara real time atau
dalam satuan detik. Berikut hasil perhitungan waktunya.
Nilai waktu matlab = 100
Nilai ukur Stopwatch 1 = 18.63 detik
Nilai ukur Stopwatch 2 = 18.40 detik
Nilai ukur Stopwatch rata - rata = 18.515 detik
Maka,
100
= 5.401
18.515
0.15
Berikut cara pengkonversian waktu dari matlab ke real. Jika pada matlab
menunjukkan sumbu x sebesar 100.
= 100 () 0.185 (
) = 18.5
Dari gambar 1 dapat terlihat bahwa dari nilai L & T yang telah didapat, dapat
dilakukan perhitungan untuk mendapatkan nilai Kp, Ti, dan Td. Nilai nilai ini
yang kemudian akan digunakan untuk menset nilai pada Blok PID. Berikut
penjabaran hasil perhitungannya :
Kendali P
Mencari nilai Kp
=
1.389
=
= 2.140
0.649
Kendali PI
Mencari nilai Kp
= 0.9
1.389
= 0.9
= 1.926
0.649
Mencari nilai Ti
=
0.649
=
= 2.165
0.3
0.3
2.568
=
= 0.890 1
2.165
Kendali PID
Mencari nilai Kp
= 1.2
1.389
= 1.2
= 2.568
0.649
Mencari nilai Ti
= 2 = 2 0.649 = 1.299
Mencari nilai Td
= 0.5 = 0.5 0.649 = 0.325
Selain perhitungan tersebut, untuk memudahkan saat tuning maka perlu
menentukan nilai Ki dan Kd.
=
2.568
=
= 1.977 1
1.299
Hasil Kendali PI
Gambar 2 s.d 6 merupakan gambar hasil desain kendali P, PI dan PID. Untuk
garis biru merupakan SV dan garis oranye merupakan PV. Dari hasil di atas
yang diperoleh, bahwa respon yang paling cepat yakni kendali PID untuk Kendali
PID untuk Mengatur posisi Menggunakan Motor Stepper.
Jenis Dokumen
B600
Nomor Dokumen
B600 01
Nomor Revisi
01
Nama File
Tanggal Penerbitan
5 Desember 2016
Unit Penerbit
Jumlah Halaman
14
Data Pengusul
Pengusul
Nama
Jabatan
Tanggal
20 - 12 - 2016
131354025
Tanda Tangan
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889
Telepon : 022-2013789
Faks : 022-2013889
Email : polban@polban.ac.id
DAFTAR ISI
1. Pengantar ............................................................................................................................... 3
1.1 Ringkasan Isi Dokumen .......................................................................................................... 3
1.2 Tujuan Penulisan ..................................................................................................................... 3
1. Pengantar
1.1 Ringkasan Isi Dokumen
Dokumen ini berisi pengujian, tuning, dan tes gangguan untuk kendali PID dari
proyek mandiri yang berjudul Kendali PID untuk Mengatur posisi Menggunakan
Motor Stepper.
1.3 Referensi
electronics-diy.com. Driving CDROM Stepper Motor with Arduino. electronicsdiy.com. [Online] Online Shop and Electronics Blog. [Dikutip: 28 November 2016.]
http://electronics-diy.com/driving-cdrom-stepper-motor-with-arduino.php.
Jenkins, Dr. Hodge. Mercer University. [Online] [Dikutip: 28 November 2016.]
http://faculty.mercer.edu/jenkins_he/documents/TuningforPIDControllers.pdf.
Motor Stepper : Teknologi, Metoda, dan Rangkaian Kontrol. Syahrul. 2011. 2,
Bandung : s.n., 9 Mei 2011, Majalah Ilmiah Unikom, Vol. 6, hal. 187 - 202.
Gambar 2.Respon PI
Pertama tama sebelum dilakukan tuning yakni dibandingkan antara respon desain PID dan
PI. Respon PID memiliki nilai antaralain Kp = 2.568, Ti = 1.299, Td = 0.325 sedangkan respon PI
memiliki nilai antara lain Kp = 1.926, Ti = 2.165, Td = 0. Dari dua nilai Respon PID & PI diperoleh
seperti gambar 1 & 2. Dari kedua gambar tersebut dapat terlihat bahwa gerakan naik turun respon lebih
sedikit pada gambar 2 ketika nilai Td dihilangkan. Oleh karena itu, maka dipilih kendali dengan desain
PI yang akan dituning.
Gambar 3. Menunjukkan respon setelah dituning dengan mengubah nilai menjadi Kp = 1.926,
Ti = 2, Td = 0. Respon terlihat menjadi semakin smooth.
Pengujian Kendali
Pengujian kendali diuji dengan berbagai tipe advance PID. Advance PID yang digunakan
antara lain tipe A, B, C, F, dan ISA.
Program
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27, 16, 2);
float PID;
float et, et_1;
float eint, eint_1, eint_update;
float edif;
float PVdif;
float Kp, Ti, Td, Ki, Kd;
float SV, PV, PV_1;
int MV;
int b_a, b_b;
unsigned long t;
double t_1, Ts;
float interval_elapsed;
float interval_limit;
//catatan:
//semakin kecil time maka semakin cepat torsi makin kecil
// time in miliseconds between each motor's step
#define StepperA1 9
#define StepperA2 10
#define StepperB1 11
#define StepperB2 12
#define pwmA 5
#define pwmB 6
int n_pwmA, n_pwmB;
bool F_state, R_state;
float fc, RC;
float a, b;
float ef, ef_1;
float et_p;
float et_d;
float alpha;
float gamma;
void setup() {
// put your setup code here, to run once:
lcd.begin();
// Turn on the blacklight and print a message.
lcd.backlight();
lcd.print("Hello, world!");
pinMode(StepperA1, OUTPUT);//Stepper motor pins as output
pinMode(StepperA2, OUTPUT);
pinMode(StepperB1, OUTPUT);
pinMode(StepperB2, OUTPUT);
pinMode(pwmA, OUTPUT);//pwm
pinMode(pwmB, OUTPUT);
n_pwmA = 0;
n_pwmB = n_pwmA;
analogWrite(pwmA, n_pwmA);
analogWrite(pwmB, n_pwmB);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("SV :");
lcd.setCursor(0, 1);
lcd.print("PV :");
lcd.setCursor(12, 0);
lcd.print("cm");
lcd.setCursor(12, 1);
lcd.print("cm");
// Kp = 2.568;
// Ti = 1.299;
// Td = 0.325;
// Kp = 1.926;
// Ti = 2.165;
// Td = 0;
Kp = 1.787;//2.140;
Ti = 2;//2
Td = 0;
b_b = -1;
b_a = 4;
if (Ti == 0) {
Ki = 0;
} else {
Ki = Kp / Ti;
}
Kd = Kp * Td;
et_1 = 0;
eint_1 = 0;
interval_limit = 0.1;
interval_elapsed = 0;
t = millis();
delay(100);
Ts = 0.01;
Serial.begin(9600);
fc = 0.4;//1;
RC = 1 / (6.28 * fc);
a = RC / Ts;
b = a + 1;
ef_1 = 0;
float alpha = 0.8;
float gamma = 0.5;
}
void loop() {
// put your main code here, to run repeatedly:
PV = (analogRead(A0) + analogRead(A2)) / 2;
PV = map(analogRead(A0), 23, 948, 0, 1023) * 0.004887;
PV = PV * 0.76;
SV = map(analogRead(A1), 0, 997, 0, 1023) * 0.004887;
SV = SV * 0.76;
// SV = 2;
t_1 = t;
t = millis();
Ts = (t - t_1) / 1000;
et = SV - PV;
PID_B();
} else {
interval_elapsed = interval_elapsed;
}
PV_1 = PV;
et_1 = et;
eint_1 = eint;
t_1 = t;
ef_1 = ef;
// forward(1) ke kanan ;
// back(1) ke kiri;
}
void forward(int number, float waktu) { //forward function, you can choose the number of steps when
calling the function
int i = 0; //to control the number of steps
while (i < number) {
digitalWrite(StepperA1, HIGH); //this sequence is part of the basic algoritm to control a bipolar stepper
motor.
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(waktu);//wait the time defined.
digitalWrite(StepperA1, HIGH);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, HIGH);
delay(waktu);
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, HIGH);
delay(waktu);
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(waktu);
i++;
}
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, LOW);
}
void back(int number, float waktu) { //As the forward function, but makes the reverse sequence.
int i = 0;
while (i < number) {
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(waktu);
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, HIGH);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, HIGH);
delay(waktu);
digitalWrite(StepperA1, HIGH);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, HIGH);
delay(waktu);
digitalWrite(StepperA1, HIGH);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, HIGH);
digitalWrite(StepperB2, LOW);
delay(waktu);
i++;
}
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, LOW);
}
void PID_A() {
eint_update = ((et + et_1) * Ts) / 2;
eint = eint_1 + eint_update;
edif = (et - et_1) / Ts;
PID = Kp * et + Ki * eint + Kd * edif;
}
void PID_B() {
eint_update = ((et + et_1) * Ts) / 2;
eint = eint_1 + eint_update;
PVdif = (PV - PV_1) / Ts;
PID = Kp * et + Ki * eint - Kd * PVdif;
}
void PID_C() {
eint_update = ((et + et_1) * Ts) / 2;
eint = eint_1 + eint_update;
PVdif = (PV - PV_1) / Ts;
PID = Ki * eint - Kp * PV - Kd * PVdif;
}
void PID_F() {
eint_update = ((et + et_1) * Ts) / 2;
eint = eint_1 + eint_update;
ef = (et + a * ef_1) / b;
edif = (ef - ef_1) / Ts;
PID = Kp * et + Ki * eint + Kd * edif;
}
void PID_ISA() {
et_p = (alpha * SV) - PV;
eint_update = ((et + et_1) * Ts) / 2;
eint = eint_1 + eint_update;
et_d = (gamma * SV) - PV;
ef = (et_d + a * ef_1) / b;
edif = (ef - ef_1) / Ts;
PID = Kp * et_p + Ki * eint + Kd * edif;
}
Kendali A
Kendali B
Kendali C
Kendali F
3. Tes Gangguan
Gambar 10 menunjukkan bahwa respon bila diberi gangguan dari luar, dapat mengatasi
gangguan tersebut dengan cepat.