Anda di halaman 1dari 6

MODUL 04

PERANCANGAN POLE PLACEMENT SEBAGAI PENGENDALI


POSISI MOTOR DC

Artha Tiara (13212047)


Asisten: Fakih Irsyadi
Tanggal Percobaan: 12/11/2015
EL4124-Praktikum Perancangan Sistem Embedded
Labkom - Sekolah Teknik Elektro dan Informatika ITB

Abstrak
Pada praktikum ini, praktikan
merancang sebuah pengendali untuk
mengendalikan posisi dari motor DC.
Pengendali berupa pengaturan letak
pole (pole placement) dari sistem
sehingga sistem menghasilkan respon
sesuai dengan yang diharapkan. Lalu,
praktikan mencoba memberi gangguan
pada motor dan mencatat respon yang
diberikan. Praktikan juga menentukan Gambar Atmega8535
deadband dari motor DC tersebut.
Kata kunci: Deadband, Pole Placement,
Posisi.

1. PENDAHULUAN
Setelah praktikum ini dilakukan, diharapkan
praktikan:
- dapat memodelkan motor dc ke
persamaan state space
- Mampu menganalisis kinerja sistem
melalui pemodelan sistem tersebut
Gambar Atmega16
- Merancang sistem pengendali pole
placement posisi motor DC
- Mengimplementasikan rancangan 2.2 LCD
pengendali yang sudah dibuat.
LCD yang digunakan dalam praktikum ini
adalah LCD yang berbasis pada HD44780
2. STUDI PUSTAKA
LCD controller. Sebelum praktikum, praktikan
diharuskan untuk membaca dan memahami
2.1 AVR
proses untuk menjalankan LCD yang
AVR merupakan seri mikrokontroler CMOS 8- diuraikan pada datasheet HD44780 tersebut.
bit buatan atmel yang paling sering dipakai
pada bidang elektronika dan instrumentasi. 2.3 MOTOR DC
Mikrokontroler ATMega8535/ATMega16
adalah salah satu mikrokontroler dari Persamaan fungsi transfer kecepatan dari
keluarga AVR processor. Arsitektur dari motor DC adalah
mikrokontroler ini adalah RISC 8 bit. K
H(s) =
s+1
Persamaan fungsi transfer posisi dari motor
DC adalah

Laporan Praktikum - Labkom STEI ITB 1


K Merancang pole placement pada sismin:
H(s) =
s 2+ s Nilai error = input tegangan (set point)
feedback motor.
2.4 POLE PLACEMENT Feedback motor = k * (feedback tachometer
-state space 512) + k.feedback potensiometer.
*feedback tachometer dan feedback
potensiometer dalam satuan digital
*feedback tachometer dikurang 512 karena
feedback tachometer dihasilkan oleh
pengendali sinyal, jadi harus dikurang 2.5 V
(512) agar nilai feedback yang didapat
sismin bekisar dari 0-5V.
Lalu nilai error ini dijadikan sebagai nilai
compare untuk menentukan nilai PWM
(%tegangan) yang akan diberikan.
Dengan pole placement, letak pole dapat kita
tentukan sesuai dengan karakteristik yang
diinginkan. Namun, state yang dihasilkan Hasil Simulasi:
haruslah terukur (observability) dan dapat
dikontrol (controllabilty).
Observability; apabila seluruh state variable
A=
[ 1.659 0.6594
1 0 ] ,

yang kita definisikan mempunyai efek ke


output. Misal pada DC motor model kita telah
mendefinikan state variabel yaitu w (omega)
dan i (arus). Kedua state ini harus
B=
[ 0.0625
0 ] ,

memberikan efek atau kontribusi ke output C= [ 0.04856 0.04228 ] ,


(w), jika salah satu state tidak mempunyai
kontribusi terhadap output maka sistem ini D = 0,
dikatakan unobservable. Dengan waktu sampling = 0.5 s
Controllability; apabila setiap state yang Maka didapatkan,
didefenisikan harus dapat dikontrol oleh
input. K= [ 5.4163 2.605 ]
Nu = 249,5364

3. METODOLOGI
Alat-alat yang digunakan:
Nx =
[ 0
23.652 ]
Nbar = 311.1502
- 1 set komputer dan software
winAVR/CodevisionAVR.
- ATMega8535 (sismin) dan Trainer Respon motor DC ketika diberi initial state
Board. (referensi input tidak digunakan).
- H-Bridge L298N.
- Servo Amplifier dan motor DC
- Potensiometer
- Power Supply DC.
- Osiloskop.
- Kabel-kabel penghubung.

4. HASIL DAN ANALISIS


*Percobaan ini hanya dilakukan dengan simulasi, saat
percobaan di lab, motor tidak merespon sama sekali dan
terkadang selalu berputar dengan kecepatan konstan.

Laporan Praktikum - Labkom STEI ITB 2


5. KESIMPULAN
- Praktikan mendapatkan persamaan
fungsi transfer dari Motor DC.
- Praktikan mampu membuat
pengendali pole placement dan state
space.
- Praktikan memahami cara kerja
pengendali posisi.

DAFTAR PUSTAKA
[1] http://maxembedded.com/2012/01/a
vr-timers-pwm-mode-part-ii/
[2] http://www.electroschematics.com/
10053/avr-adc/
[3] http://maxembedded.com/2011/06/t
he-adc-of-the-avr/

Laporan Praktikum - Labkom STEI ITB 3


LAMPIRAN
(Source Code)
Tugas 1.A
#include <stdio.h>
#include <delay.h>
#include <mega16.h>

// Alphanumeric LCD functions


#include <alcd.h>

#define ADC_VREF_TYPE 0x00

// Declare your global variables here


unsigned int X;
unsigned int V;
char str[10], vtr[10];
int PWM,AD;
float error,N_bar = 10.3715, kteta = 0.677, komega = -0.3256;

// Read the AD conversion result


unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
// Delay needed for the stabilization of the ADC input voltage
delay_us(10);
// Start the AD conversion
ADCSRA|=0x40;
// Wait for the AD conversion to complete
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{

// Alphanumeric LCD initialization


// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTC Bit 0
// RD - PORTC Bit 1
// EN - PORTC Bit 2
// D4 - PORTC Bit 4
// D5 - PORTC Bit 5
// D6 - PORTC Bit 6
// D7 - PORTC Bit 7
// Characters/line: 16
lcd_init(16);
ADCSRA=0b10000111;
DDRB=0b00001000;
TCCR0=0x69;
DDRD=0xFF;
OCR0=64;
PWM = 0;

while (1)
{
lcd_init(16);
lcd_clear();

error = 200 - ((read_adc(0)/4)*kteta + ((read_adc(1) - 512)/4)*komega);


/*if(error <31 && error >-31)
error = 0;
*/

if ((int) error < 0){


PORTD = 0b00000010;
lcd_gotoxy(1,1);
lcd_putsf("A"); }
else {
PORTD = 0b00000001;
lcd_gotoxy(1,1);
lcd_putsf("B");}

//OCR0 = (int)PID;
OCR0 = (int) error;
PWM=OCR0;
//D=OCR0;
X = 200;

V=PWM*100/256;
AD= (X*5/255);

lcd_gotoxy(0,0);
lcd_putsf("err=");
sprintf(vtr,"%d ",(int) error);
lcd_gotoxy(6,0);
lcd_puts(vtr);

// lcd_gotoxy(0,1);
/* lcd_putsf("VPSO=");
sprintf(str,"%d ",AD);
lcd_gotoxy(6,1);
lcd_puts(str);
lcd_gotoxy(8,1);
lcd_putsf("V");*/
delay_ms(1000);
}
}

Source Code MATLAB

%Transfer Function motor DC (continuous)%


G = tf(0.833,[1, 0.833, 0])

%Transfer Function motor DC (discrete)%


G_zbaru = c2d(G,0.5)

%State space%
MG_zbaru = ss(G_zbaru)
A = [1.659 -0.6594; 1 0]
B = [0.5; 0]

%matriks characteristic (pole yang diinginkan)%


charc = tf(1, [1 1.4 1])
charc_z = c2d(charc,0.5)

%mencari nilai K%
K = acker(A,B,pole(charc_z))

%matriks A,B,C,D
matrikz = [1.659 -0.6594 0.5; 1 0 0; 0.1821 0.1585 0]
inv_matrikz = inv(matrikz)

%Mencari Nu dan Nx
NuNx = inv_matrikz*[0;0;1]
Nu = 8.32
Nx = [0;6.3]

%Mencari Nbar
Nbar = Nu - K*Nx

Anda mungkin juga menyukai