Anda di halaman 1dari 5

LAPORAN PRAKTIKUM 8

SOFTWARE APLIKASI SISTEM KENDALI


DAN INSTRUMENTASI
Kendali PID menggunakan Arduino
(Kontroller P)

Disusun Oleh:
Rangga Masli Putra (131354025)
3C
Dosen Pembimbing Lab :
Rida Hudaya, DUTech., ST., DEA.
Dadan Nurdin Bagenda, ST., MT.

POLITEKNIK NEGERI BANDUNG


JURUSAN TEKNIK ELEKTRO
PRODI ELEKTRONIKA
2016

laporan 8

Kendali PID Menggunakan Arduino


(Kontroller P )
I.

Tujuan

II.

Alat dan komponen yang digunakan

III.

Mahasiswa dapat memahami fungsi penggunaan kontroller P pada Ardunio .


Mahasiswa dapat mengimplementasikan pengunaan kontroller P pada Arduino
dan memperlihatkannya pada osiloskop berupa keluaran PWM.

Seperangkat Komputer/Laptop.
Arduino IDE.
Osiloskop.
Kabel Penghubung & Probe Osiloskop.

Hasil Percobaan

Gambar 1

Untuk memulai percobaan implementasi kendali P, rangkaian disusun seperti


gambar 1 dan output PWM 5 yang memiliki frekuensi 500 Hz dihubungkan ke
Osiloskop untuk menampilkan keluarannya. Setelah rangkaian disusun sesuai maka
selanjutnya program PID dibawah diupload dan mengosonkan nilai ki dan kd.
Program :

// variabel - variabel ini ditentukan dengan kebutuhan


float SetPt = 0;
float ScaleFactor = 1;
// variabel yang harus di-tuning (blm di-tuning)
float IntThresh = 255;

float kP = 1;
float kI = 0;
float kD = 0;
//==================================================
float Actual , Last, Error, Integral, P, I, D, Drive;
int sensorValue = 0;
int outputValue1 = 0;
int buffer[20];
void setup() {
Serial.begin(9600);
}
void loop() {
//-------------------- Penghitungan nilai PID -------------------Actual = 0;
//tanpa feedback
sensorValue = analogRead(0); // potensiometer sebagai set point
SetPt = map(sensorValue, 0, 1023, 0, 255); // mapping ke nilai 0 - 255
outputValue1 = map(sensorValue, 0, 1023, 0, 5); // mapping ke nilai 0 - 5
Error = SetPt - Actual;
if (abs(Error) < IntThresh){
// mencegah nilai integral membuat nilai
yang meluas 'windup'
Integral = Integral + Error;
// akumulasi eror dan integral
}
else {
Integral=0;
// nol jika di luar batas
}
P = Error*kP;
// perhitungan untuk proporsional
I = Integral*kI;
// perhitungan untuk Integral
D = (Last-SetPt)*kD;
// perhitungan untuk Derivatif
Drive = I;
// Total drive = P+I+D
Drive = Drive*ScaleFactor;
// mengatur skala agar berada pada
range 0-255
if (abs(Drive)>255) {
Drive=255;
}
Last = SetPt;
analogWrite(5, Drive); //generate nilai PWM
Serial.print("sensor = " );
Serial.print(sensorValue);
Serial.print("\t output = ");
Serial.print(Drive);
Serial.print("\t output1 = ");
Serial.println(outputValue1);
}

a. Nilai Kp = 1

Gambar 2

Jika potensiometer pada posisi tdk diputar atau skala 0/4, maka pwm yang
ditunjukkan adalah pwm dgn duty cycle 0 %.

Gambar 3

Jika potensiometer pada posisi skala 2/4, maka pwm yang ditunjukkan adalah pwm
dgn duty cycle 50 %.

Gambar 4

Jika potensiometer pada posisi skala 3/4, maka pwm yang ditunjukkan adalah pwm
dgn duty cycle 75 %.

Gambar 5

Jika potensiometer pada posisi skala 4/4, maka pwm yang ditunjukkan adalah pwm
dgn duty cycle 100 %.
b. Kp = 2

Gambar 6

Sebagai sampel contoh untuk Kp = 2 diset potensiometer dengan posisi skala 1/4
maka didapat duty cycle 50 %.
IV.

Analisa & Kesimpulan


Jadi berdasarkan percobaan yang telah dilakukan maka dapat diambil kesimpulan
bahwa :
Nilai Kp yang ada pada program arduino dengan set poin dari pontensiometer
yakni berfungsi sebagai gain, jika pada Kp = 1 skala potensio duty cycle yang
diperoleh 25 %. Maka jika pada Kp = 2 skala potensio diset sama menghasilkan nilai
duty cycle dua kali semula yakni 50%.