Anda di halaman 1dari 50

POLITEKNIK NEGERI BANDUNG

PROGRAM STUDI TEKNIK ELEKTRONIKA


Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889

Lembar Sampul Dokumen


Judul Dokumen

Dokumen B100: Kendali PID untuk Mengatur posisi Menggunakan


Motor Stepper

Jenis Dokumen

B100

Nomor Dokumen

B100 01

Nomor Revisi

01

Nama File

SKT4C_B100_Rangga Masli Putra_Proyek Mandiri.docx

Tanggal Penerbitan

28 November 2016

Unit Penerbit
Jumlah Halaman

Data Pengusul
Pengusul

Nama

Mahasiswa Elektronika D-IV

Jabatan

Rangga Masli Putra

Tanggal

28 - 11 - 2016

131354025

Tanda Tangan

Lembaga Politeknik Negeri Bandung


Alamat

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.2 Tujuan Penulisan dan Aplikasi/Kegunaan Dokumen


Pembuatan dokumen B100 ditujukan sebagai salah satu bagian dari rangkaian
dokumentasi. Dokumen B100 berisi penjelasan mengenai pendahuluan dan alasan
mengapa tugas mandiri ini dibuat. Dokumen B100 ini juga diharapkan dapat
memberikan pemahaman mengenai sistem kendali posisi yang akan dibuat dan
dikembangkan.

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.

2.2.1 Latar belakang


Pengendalian posisi banyak dibutuhkan di industri untuk melaksanakan proses
produksi yang berkaitan dengan posisi. Proses produksi yang berkaitan contohnya
adalah mesin CNC pengeboran PCB, pengangkat crane, dll.
Suatu sistem pengendali harus memiliki setidaknya jenis teknik pengendalian,
jenis gangguan, nilai input, nilai output serta parameter apa yang akan dikendalikan.
Parameter yang dikendalikan dapat beragam, pada pengendalian posisi, parameter
yang dikontrol yakni posisi. Parameter posisi ini dapat dikontrol oleh beragam teknik
kendali yang dapat digunakan. Salah satu teknik kendali yang paling umum digunakan
adalah teknik kendali PID. Teknik kendali PID menawarkan kemudahan dalam proses
tuning dan memiliki struktur yang paling sederhana dan telah diajarkan atau
dipelajari di perkuliahan.
Program

Studi

D4-Teknik

Elektronika Politeknik

Negeri

Bandung,

mahasiswanya dituntut untuk menempuh kurikulum yang memuat mata kuliah


Sistem Kendali Terdistribusi (SKT). Pada mata kulaih ini terdapat materi tentang
kendali. Untuk memahami cara kerja dari materi kendali teresebut maka dibuat
sebuah alat berjudul Kendali PID untuk Mengatur posisi Menggunakan Motor
Stepper, dimana terdapat posisi yang dikontrol atau dikendalikan menggunakan
program di sebuah mikrokontroler yang didalamnya, projek standalone controller.

Standalone controller merupakan kontroler yang tidak lagi memerlukan dukungan


dari perangkat-perangkat lain seperti komputer dan dapat berdiri hanya dengan
sokongan catu daya.

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.

POLITEKNIK NEGERI BANDUNG


PROGRAM STUDI TEKNIK ELEKTRONIKA
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889

Lembar Sampul Dokumen


Judul Dokumen

Dokumen B200: Kendali PID untuk Mengatur posisi Menggunakan


Motor Stepper

Jenis Dokumen

B200

Nomor Dokumen

B200 01

Nomor Revisi

01

Nama File

SKT4C_B200_Rangga Masli Putra_Proyek Mandiri.docx

Tanggal Penerbitan

28 November 2016

Unit Penerbit
Jumlah Halaman

Data Pengusul
Pengusul

Nama

Mahasiswa Elektronika D-IV

Jabatan

Rangga Masli Putra

Tanggal

28 - 11 - 2016

131354025

Tanda Tangan

Lembaga Politeknik Negeri Bandung


Alamat

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.2 Spesifikasi berdasarkan fungsionalitas

Untuk memperdalam penguasaan materi kendali yang diajarkan pada mata


kuliah Sistem Kendali Terdistribusi (SKT).

Desain dirancang dimaksudkan untuk memberikan pengalaman dan


pemahaman dalam pembuatan sistem kendali PID yang bersifat standalone
control.

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 :

Merancang dan merealisasikan perangkat keras dan perangkat lunak


Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper.

Menguji dan mengevaluasi kinerja dari sistem kendali ini.

Sistem ini nantinya diharapkan dapat membantu bagi pembelajaran


kendali PID khususnya untuk kendali PID posisi menggunakan steppert
sebagai aktuator.

2.3 Ruang Lingkup


Alat ini memiliki batasan-batasan sebagai berikut :

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.

Memudahkan pemahaman penerapan perancangan desain kendali PID


pada plant posisi.

2.4 Deskripsi Sistem


Karakteristik sistem kendali dari alat ini adalah :

Melakukan pengaturan posisi dengan kendali PID untuk menentukan


keluaran sesui dengan set poin yang telah ditentukan.

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.

3.1 Deskripsi Cara Kerja Sistem


Sistem Kendali PID ini bekerja dengan mengatur posisi agar sesuai dengan set
poin yang diberikan. Bila pada sistem terdapat gangguan yang menyebabkan posisi
berubah maka Pengendali PID akan melakukan kompensasi agar posisi diatur
kembali. Semakin cepat sistem kendali PID melakukan kompensasi terhadap
gangguan dan error yang ada maka dapat dikatakan semakin handal. Kehandalan
sistem PID salah satunya ditentukan oleh bagaimana melakukan penentuan parameter
PID dan algoritma pada kontroller digital.

3.2 Deskripsi Perangkat Keras


Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper tersusun
dari perangkat keras :

Stepper Motor bekas PC CD/DVD Driver.

Driver Motor L298.

Potensio.

LCD.

Power Supply 12 V & Regulator 5V.

Arduino UNO.

Potensio Geser.

Wadah Plastik.

Komponen penyusun lainnya.

3.3 Deskripsi Perangkat Lunak


Perangkat lunak yang digunakan yakni IDE Arduino dengan bahasa C
Arduino. Kendali PID untuk Mengatur posisi Menggunakan Motor Stepper tersusun
dari perangkat lunak :

Fungsi Motor Stepper.

Fungsi Pembacaan Sensor.

Fungsi Perhitungan PID.

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.

Sistem Kendali dapat mengatasi gangguan mauapun noise.

Sistem Kendali menunjukkan respon sesuai dengan kebutuhan.

POLITEKNIK NEGERI BANDUNG


PROGRAM STUDI TEKNIK ELEKTRONIKA
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889

Lembar Sampul Dokumen


Judul Dokumen

Dokumen B300: Kendali PID untuk Mengatur posisi Menggunakan


Motor Stepper

Jenis Dokumen

B300

Nomor Dokumen

B300 01

Nomor Revisi

01

Nama File

SKT4C_B300_Rangga Masli Putra_Proyek Mandiri.docx

Tanggal Penerbitan

28 November 2016

Unit Penerbit
Jumlah Halaman

Data Pengusul
Pengusul

Nama

Mahasiswa Elektronika D-IV

Jabatan

Rangga Masli Putra

Tanggal

28 - 11 - 2016

131354025

Tanda Tangan

Lembaga Politeknik Negeri Bandung


Alamat

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.2 Tujuan Penulisan

Untuk memudahkan proses pengembangan dan pembuatan sistem.

Sebagai landasan dalam proses pengerjaan proyek.

Sebagai dokumentasi tahapan dalam perancangan dan pengembangan sebuah


proyek sistem kendali PID posisi.

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

Gambar 1. Diagram rangakaian elektronik

Perancangan Elektronik digambarkan oleh gambar 1. Setpoin ditentukan oleh


nilai tegangan dari potensio kemudian menjadi masukkan ke Arduino UNO. Arduino
mengolah data kemudian memberi masukkan pada driver motor L298. Driver motor
ini dapat mendrive motor sampai 3A. Motor Stepper diberi masukan oleh Driver.
Motor Stepper menggerakan posisi, plant posisi yang bergerak kemudian disensing
oleh potensio geser yang penggesernya menempel pada plant. Diinputkan kembali ke
pengolah data Arduino sebagai umpan balik. Nilai setpoin dan Process Variable
ditampilkan pada LCD agar sistem dapat menjadi suatu sitem yang standalone.

2.2 Perancangan Perangkat Lunak


A

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

Deklarasi variabel variabel


A. Library LCD
B. Variable perhitunga PID
C. Variabel Perhitungan Sampling
D. Variabel Display PV-SV
E. Deklarasi untuk mengendalikan
Looping

A. Membatasi keluaran PID sesuai plant


posisi yang dibuat
B. Penyesuaian dengan kondisi
embeded system
Setup / Input nilai awal
A. Setup parameter PID
B. Setup Display
C. Setup Time Sampling
D. Setup pinout
E. Setup serial dan pengaturan looping

Hitung waktu
display
y
IE >= EL ?

Baca nilai start di pin 8

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 ?

Set nilai variabel untuk perhitungan selanjutnya


Et_1 = et, eint_1 eint, t_1 = t

y
A

Gambar 2. Diagram alir perancangan perangkat lunak

Gambar 2. Menjelaskan tentang diagram alur perancangan pada perangkat lunak


yang akan dibuat pada Arduino. Diagram Alur tersebut menggambarakan algoritma
pembuatan kendali digital PID yang disesuaikan dengan plant kendali posisi. Nilai Pid
kemudian akan diberikan pada driver untuk menentukan posisi oleh stepper.

2.3 Perancangan Mekanik

Gambar 3. Perancangan Mekanik Plant posisi

Perncangan mekanik pada sistem kendali ini yakni motor stepper telah
terhubung langsung untuk menggerakan posisi, seperti ditunjukkan pada gambar 3.

2.4 Perancangan Kendali

SV

E = SV - PV

MV

Potensio

Arduino UNO

PV
Driver L298

Motor Stepper

Plant Posisi

Sensor Pontensio
Geser

Gambar 4. Perancangan Kendali

Perancangan kendali posisi digambarakan oleh gambar 4. Set poin Variabel


(SV) diberikan oleh potensio dilakukan summing dengan PV dari pembacaan sensor
poensio geser. Untuk Kontroller digunakan Arduino UNO yang dilakukan program
PID digital, kemudian diperoleh MV yang akan diinputkan pada Driver yang akan
menggerakan stepper sesuai dengan kebutuhan.

POLITEKNIK NEGERI BANDUNG


PROGRAM STUDI TEKNIK ELEKTRONIKA
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889

Lembar Sampul Dokumen


Judul Dokumen

Dokumen B400: Kendali PID untuk Mengatur posisi Menggunakan


Motor Stepper

Jenis Dokumen

B400

Nomor Dokumen

B400 01

Nomor Revisi

01

Nama File

SKT4C_B400_Rangga Masli Putra_Proyek Mandiri.docx

Tanggal Penerbitan

5 Desember 2016

Unit Penerbit
Jumlah Halaman

11

Data Pengusul
Pengusul

Nama

Mahasiswa Elektronika D-IV

Jabatan

Rangga Masli Putra

Tanggal

5 - 12 - 2016

131354025

Tanda Tangan

Lembaga Politeknik Negeri Bandung


Alamat

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. Realisasi ................................................................................................................................ 4
2.1 Mekanik.................................................................................................................................... 4
2.2 Elektronik ................................................................................................................................ 5
2.3 Komputer.................................................................................................................................. 6

3. Pengujian Sub Sistem ........................................................................................................... 9

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.2 Tujuan Penulisan


Tujuan penulisan dokumen ini secara umum adalah melanjutkan proses
perancangan dan realisasi dari proyek mekatronika dalam hal realisasi dan
implementasi hardware serta sistem elektronikanya dalam hal pengembangan dari
konsep dan ide pada dokumen sebelumnya, sehingga proyek ini bisa terelalisasikan.
Sedangkan tujuan khusus dari dokumen ini adalah

Untuk memudahkan proses pengembangan dan pembuatan sistem.

Sebagai landasan dalam proses pengerjaan proyek.

Sebagai tolak ukur fungsionalitas setiap sub sistem

Sebagai dokumentasi tahapan dalam perancangan dan pengembangan sebuah


proyek sistem kendali PID posisi.

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. Realisasi

Gambar 1. Realisasi keseluruhan

Gambar 1 merupakan gambar yang menunjukkan hasil realisasi secara


keseluruhan dilihat dari tampak depan. Hasil realisasi lebih detail dijelaskan pada sub
bab Realisasi.

2.1 Mekanik

Gambar 2. Mekanik posisi tampak atas

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.

Gambar 3. Mekanik posisi tampak atas

2.2 Elektronik

Gambar 4. Realisasi Elektronik secara keseluruhan

Gambar 4 meruapakan gambar realisasi elektronik yang terdiri dari beberapa


komponen penyusun antara lain

Power supply 12 V 3A dengan masukan 220 VAC

Modul Regulator 5V dan 3.3V

Arduino UNO

I2C LCD backpack + LCD sebagai penampil

Potensio sebagai setpoin

Sensor Potensio geser

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

byte n_pwmA, n_pwmB;


int sensor, SV;
bool F_state, R_state;
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 = 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);

3. Pengujian Sub Sistem


3.1 Sasaran Pengujian
Pada pengujian yang akan dilakukan suatu pengujian yang diuji untuk melihat
apakah hasil realisasi dari perancangan dapat memenuhi sasaran yang ditentukan.
Adapun sasaran dari pengujian yang akan dilakukan adalah sebagai berikut:
Arduino Uno dapat mengendalikan kinerja motor Stepper dengan driver L298.
Motor Stepper dapat bergerak untuk melakukan pengaturan posisi.
Catu daya dapat mengeluarkan tegangan +12V.
Regulator dapat meregulasi daya menjadi +5V
LCD dapat menampilkan data dengan sesuai.
Potensiometer Sensor dan setpoin diuji nilai yang terbaca.

3.2 Pengujian dan Analisa


Pengujian dan Analisa Rangkaian Sistem Arduino Uno
Pengujian sub sistem arduino uno dilakukan dengan pengecekan setiap port
output. Adapun langkah yang harus dilakukan dalam pengujian ini adalah sebagai
berikut :

Memberikan catu daya pada Arduino Uno.

Membuat seluruh pin digital yang digunakan berlogika 1.

Dilakukan pengukuran setiap tegangan keluaran.

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

Tabel 1. Nilai potensio

Hasil Pengujian
No

Hasil yang diharapkan

Hasil pengujian

Arduino Uno dapat berfungsi


dengan baik

baik

Motor stepper dapat bekerja geser


kiri kanan

baik

Catu daya 12 V

baik

Regulator output 5 V

Cukup baik

LCD menampilkan data dengan


sesuai

baik

Mendapat nilai pembacaan


potensio

baik

ket

4.98 V

Dari hasil pengujian yang didapat yakni hampir seluruh sub sitem dapat bekerja
dengan baik.

POLITEKNIK NEGERI BANDUNG


PROGRAM STUDI TEKNIK ELEKTRONIKA
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889

Lembar Sampul Dokumen


Judul Dokumen

Dokumen B500: Kendali PID untuk Mengatur posisi Menggunakan


Motor Stepper

Jenis Dokumen

B500

Nomor Dokumen

B500 01

Nomor Revisi

01

Nama File

SKT4C_B500_Rangga Masli Putra_Proyek Mandiri.docx

Tanggal Penerbitan

5 Desember 2016

Unit Penerbit
Jumlah Halaman

11

Data Pengusul
Pengusul

Nama

Mahasiswa Elektronika D-IV

Jabatan

Rangga Masli Putra

Tanggal

5 - 12 - 2016

131354025

Tanda Tangan

Lembaga Politeknik Negeri Bandung


Alamat

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. Desain Sistem Kendali .......................................................................................................... 3
3. Hasil Desain Sistem Kendali ................................................................................................ 6

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.2 Tujuan Penulisan


Tujuan penulisan dokumen ini secara umum adalah memaparkan tentang
penjelasan desain kendali. Sedangkan tujuan khusus dari dokumen ini adalah

Untuk memudahkan proses pengembangan dan pembuatan sistem.

Sebagai landasan dalam proses pengerjaan proyek.

Sebagai dokumentasi tahapan dalam perancangan dan pengembangan sebuah


desain PID dari proyek sistem kendali PID posisi.

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. Desain Sistem Kendali


Desain sistem kendali yang digunakan yakni menggunakan metode zieger
Nichols 1 Step Response. Metode ini digunakan untuk menentukan parameter PID.
Untuk mencari nilai parameter PID dibutuhkan terlebih dahulu nilai T dan L dari
step respon sistem open loop, karena kendali posisi maka dalam keadaan open loop
dengan penguatan 1. Berikut dicarikan nilai T dan L :

Gambar 1. Mencari nilai T & L

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

Selain perhitungan tersebut, untuk memudahkan saat tuning maka perlu


menentukan nilai Ki dan Kd.
=

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

= = 2.568 0.325 = 0.834

3. Hasil Desain Sistem Kendali


Hasil Kendali P

Gambar 2. Respon Kendali P

Hasil Kendali PI

Gambar 3. Respon Kendali PI pengujian 1

Gambar 4. Respon Kendali PI pengujian 2

Hasil Kendali PID

Gambar 5. Respon Kendali PID pengujian 1

Gambar 6. Respon Ke ndali PID pengujian 2

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.

POLITEKNIK NEGERI BANDUNG


PROGRAM STUDI TEKNIK ELEKTRONIKA
Jln. Gegerkalong Hilir, Ds. Ciwaruga Bandung 40012, Kotak Pos 1234,
Telepon (022) 2013789, Fax. (022) 2013889

Lembar Sampul Dokumen


Judul Dokumen

Dokumen B600: Kendali PID untuk Mengatur posisi Menggunakan


Motor Stepper

Jenis Dokumen

B600

Nomor Dokumen

B600 01

Nomor Revisi

01

Nama File

SKT4C_B600_Rangga Masli Putra_Proyek Mandiri.docx

Tanggal Penerbitan

5 Desember 2016

Unit Penerbit
Jumlah Halaman

14

Data Pengusul
Pengusul

Nama

Mahasiswa Elektronika D-IV

Jabatan

Rangga Masli Putra

Tanggal

20 - 12 - 2016

131354025

Tanda Tangan

Lembaga Politeknik Negeri Bandung


Alamat

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. Tuning & Pengujian Kendali ................................................................................................ 4
3. Tes Gangguan ..................................................................................................................... 14

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.2 Tujuan Penulisan


Tujuan penulisan dokumen ini secara umum adalah memaparkan tentang
penjelasan tuning, hasil pengujian dan tes gangguan dari desain kendali. Sedangkan
tujuan khusus dari dokumen ini adalah

Untuk memudahkan proses pengembangan dan pembuatan sistem.

Sebagai landasan dalam proses pengerjaan proyek.

Sebagai dokumentasi tahapan dalam perancangan dan pengembangan sebuah


desain PID dari proyek sistem kendali PID posisi.

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. Tuning & Pengujian Kendali


Gambar gambar respon yang ditunjukkan merupakan gambar hasil yang telah diperoleh dalam
bentuk grafik serial plotter. Untuk garis biru merupakan SV dan garis oranye merupakan PV.
Tuning

Gambar 1.Respon PID

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.Respon PI yang telah 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();

if (PID > 3.8) {


PID = 3.8;
} else if (PID < 0) {
PID = -PID;
} else if (PID < -3.8) {
PID = 3.8;
} else {
PID = PID;
}
// PID = PID * 1.3297;
// PID = PID * 1.31579; // 8
PID = PID * 2.6316 ;
// PID = PID * 0.52631 ;
// PID = PID * 0.39473 ;
MV = PID;
// PID = PID / 2;
// PID = PID * 51;
// PID = 220 + (7*PID);
n_pwmA = 255;
n_pwmB = 255;
analogWrite(pwmA, n_pwmA);
analogWrite(pwmB, n_pwmB);
if (et < 0) {
back(1, MV);
} else if (et > 0) {
forward(1, MV);
} else {
digitalWrite(StepperA1, LOW);
digitalWrite(StepperA2, LOW);
digitalWrite(StepperB1, LOW);
digitalWrite(StepperB2, LOW);
}
interval_elapsed = interval_elapsed + Ts;
if (interval_elapsed >= interval_limit) {
// delay(2);
Serial.print(SV);
Serial.print(" ");
Serial.println(PV);
// Serial.print(" ");
// Serial.print(b_a);
// Serial.print(" ");
// Serial.println(b_b);
lcd.setCursor(5, 1);
lcd.print(PV);
lcd.print(" ");
lcd.setCursor(5, 0);
lcd.print(SV);
lcd.print(" ");
interval_elapsed = 0;

} 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

Gambar 5.Respon tipe A

Kendali B

Gambar 6.Respon tipe B

Kendali C

Gambar 7.Respon tipe C

Kendali F

Gambar 8.Respon tipe F

Kendali F dirancang dengan menggunakan Fc = 0.4


Kendali ISA

Gambar 9.Respon tipe ISA

Kendali ISA dirancang dengan menggunakan Fc = 0.4, a = 0.8 & b = 0.5;

3. Tes Gangguan

Gambar 10.Gambar Respon yang diberi gangguan

Gambar 10 menunjukkan bahwa respon bila diberi gangguan dari luar, dapat mengatasi
gangguan tersebut dengan cepat.