Anda di halaman 1dari 9

LAPORAN PRAKTIKUM

MODUL 4 SISTEM KENDALI PID KASUS P

MATA KULIAH SISTEM KENDALI


KELOMPOK 6 GELAYY
ANGGOTA :
1. RENY LILIK BADRIYAH 6702193064
2. SITI REDYTA CAHYANI 6702190024

D3 TEKNOLOGI KOMPUTER
FAKULTAS ILMU TERAPAN
UNIVERSITAS TELKOM
2021
1. JUDUL PRAKTIKUM
Sistem Kendali PID Kasus P, I, dan D dengan EEPROM
2. MAKSUD DAN TUJUAN
Maksud dan tujuan dari praktikum ini adalah :
1. Mahasiswa dapat memahami fungsi dan cara kerja PID pada motor DC
2. Mahasiswa dapat membuat program berbasis timer untuk melakukan algoritma PID.
3. Mahasiswa dapat menggunakan peripheral berupa push button untuk menambah konstanta
Kp, Ki, dan Kd.
3. PERALATAN DAN KOMPONEN PRAKTIKUM
1. Laptop
2. Software Tinkercad
4. DASAR TEORI
Jika dengan kasus P dan D telah mengendalikan pergerakan robot dengancukup smooth, maka
penambahan Integratif menjadi opsional. Komponen Integratif (I) digunakan untuk
mengakumulasi error dan mengetahui durasi error. Dengan menjumlahkan error disetiap
pembacaan process value (PV) akan memberikan akumulasi offset yang harus diperbaiki
sebelumnya. Saat robot bergerak menjauhi garis, maka nilai error akan bertambah. Semakin lama
tidak mendapatkan set point (SP), maka semakin besar nilai I. Dengan mendapatkan nilai Ki yang
Program Studi D3 Teknologi Komputer   Fakultas Ilmu Terapan   2019   Hal 12      tepat, imbas
dari Integratif bisa dikurangi. Nilai akumulasi error didapat dari: error + last_error. Proses
perhitungan integral secara intuitif melibatkan komponen waktu, sehingga implementasinya
dibutuhkan suatu fungsi timer pada mikrokontroler. Dalam Arduino untuk menghitung waktu
atau fungsi timer digunakan fungsi millis() menghasilkan jumlah milidetik semenjak program
berjalan. Fungsi ini memiliki tipe data Unsigned Long. Jumlah milidetik yang dihasilkan ini harus
dicatat dalam setiap perulangan program. Nilai konstanta perhitungan PID di-tuning secara trial
and error dan proses ini dilakukan dengan metode eksperimental. Nilai proporsional, derivative,
dan integratif pada algoritma PID diujicoba hingga ditemukan hasil sistem yang stabil. Adapun
cara yang dilakukan untuk men-tuning PID pada robot line follower adalah sebagai berikut: 1.
Langkah awal gunakan kontrol proporsional terlebih dahulu, abaikan konstanta integratif dan
derivatifnya dengan memberikan nilai nol pada integratif dan derivatif. 2. Tambahkan terus
konstanta proporsional maksimum hingga keadaan stabil namun robot masih berosilasi. 3. Untuk
meredam osilasi, tambahkan konstanta derivatif dengan membagi dua nilai proporsional, amati
keadaan sistem robot hingga stabil dan lebih responsif. 4. Jika sistem robot telah stabil, kontrol
integratif dapat menjadi opsional, dalam artian jika ingin mencoba-coba tambahkan kontrol
integratif tersebut, namun pemberian nilai integratif yang tidak tepat dapat membuat sistem robot
menjadi tidak stabil. 5. Nilai set point kecepatan dan nilai batas bawah/atas memberikan patokan
kecepatan robot. 6. Nilai time sampling (waktu cuplik) juga mempengaruhi perhitungan PID,
tentunnya saat penggunaan kontrol integratif dan derivatif. 7. Periksa kembali perfoma sistem
hingga mendapatkan hasil yang memuaskan.
5. FOTO PERALATAN DAN BAHAN PRAKTIKUM
Foto peralatan dan Bahan praktikum
 Arduino Uno

 Project board

 2 Motor dc with encoder

 Jumper

 Sensor photodiode
 Resistor kapasitas 33 kΩ

 H-bridge motor driver L293D

 Pushbutton

 Resistor 330 Ω

 Rangkaian

6. HASIL PRAKTIKUM
 KODE PROGRAM
//=========================================================
=
//=========================================================
=
// KELOMPOK 6 GELAYY
// ANGGOTA
// Nama : Reny Lilik Badriyah
// NIM : 6702193064
//========================================
// Nama : Siti Redyta Cahyani
// NIM :
//========================================
// Kelas : D3TK43-03
//=========================================================
=
//=========================================================
=
// Deklarasi Variabel Sensor
//motor directory
#define CW 0
#define CCW 1

// motor control pin


#define motorDirPin 7
#define motorPWMPin 9
#define EnablePin 8
#define motorDirPin2 6
#define motorPWMPin2 5
// encoder pin
#define encoderPinA 2
#define encoderPinB 4
#define encoderPinA2 10
#define encoderPinB2 11

//encoder var
int encoderPos = 0;

// PID control
float Kp = 1;
int targetPos = 100;
int error;
int control;
int velocity;
//sensor
int sensor1 = A0;
int sensor2 = A1;
int sensor3 = A2;
int sensor4 = A3;
int sensor5 = A4;
int sensor6 = A5;

void doEncoderA()
{
digitalRead(encoderPinB)?encoderPos--:encoderPos++;
digitalRead(encoderPinB2)?encoderPos--:encoderPos++;
}

void setup()
{
//setup interrupt
pinMode(encoderPinA, INPUT_PULLUP);
pinMode(encoderPinB, INPUT_PULLUP);
pinMode(encoderPinA2, INPUT_PULLUP);
pinMode(encoderPinB2, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(encoderPinA), doEncoderA, RISING);
attachInterrupt(digitalPinToInterrupt(encoderPinA2), doEncoderA, RISING);
//setup motor driver
pinMode (motorDirPin, OUTPUT);
pinMode (motorDirPin2, OUTPUT);
pinMode (EnablePin, OUTPUT);
digitalWrite (EnablePin, HIGH);
//sensor
pinMode(sensor1, INPUT);
pinMode(sensor2, INPUT);
pinMode(sensor3, INPUT);
pinMode(sensor4, INPUT);
pinMode(sensor5, INPUT);
pinMode(sensor6, INPUT);
Serial.begin(9600);
}

void loop()
{
error = targetPos - encoderPos;
control = (Kp*error);
velocity = min(max(control,-255), 255);
if(velocity>=0)
{
digitalWrite(motorDirPin, CW);
analogWrite(motorPWMPin, velocity);
}
else
{
digitalWrite(motorDirPin, CCW);
analogWrite(motorPWMPin,(255+velocity));
}
velocity = min(max(control,255), -255);
if(velocity>=0)
{
digitalWrite(motorDirPin2, CW);
analogWrite(motorPWMPin2, velocity);
}
else
{
digitalWrite(motorDirPin2, CCW);
analogWrite(motorPWMPin2,(255+velocity));
}
Serial.println(encoderPos);
}

7. KESIMPULAN
Komponen Integratif (I) digunakan untuk mengakumulasi error dan mengetahui durasi
error. Dengan menjumlahkan error disetiap pembacaan process value (PV) akan
memberikan akumulasi offset yang harus diperbaiki sebelumnya. Saat robot bergerak
menjauhi garis, maka nilai error akan bertambah. Semakin lama tidak mendapatkan set
point (SP), maka semakin besar nilai I. Dengan mendapatkan nilai Ki yang    Program
Studi D3 Teknologi Komputer   Fakultas Ilmu Terapan   2019   Hal 12      tepat, imbas
dari Integratif bisa dikurangi. Nilai akumulasi error didapat dari: error + last_error.

Anda mungkin juga menyukai