dan perangkat lunak. langkah berikutnya adalah mengambil ...repository.dinamika.ac.id/540/7/bab...

22
39 BAB III METODE PENELITIAN Metode penelitian yang digunakan pada pembuatan perangkat keras dan perangkat lunak adalah studi kepustakaan dan penelitian laboratorium. Dengan cara ini penulis berusaha untuk mendapatkan dan mengumpulkan data-data, informasi, konsep-konsep yang bersifat teoretis dari buku, bahan-bahan kuliah, dan referensi dari internet yang berkaitan dengan permasalahan. Penelitian laboratorium dilakukan dengan perancangan perangkat keras dan perangkat lunak, kemudian melakukan pengujian terhadap perangkat keras dan perangkat lunak. Langkah berikutnya adalah mengambil atau mengumpulkan data hasil percobaan. Langkah terakhir adalah melakukan evaluasi dan analisis terhadap hasil data yang dikumpulkan. Diagram blok yang digunakan dalam sistem dengan menggunakan kendali PID dan fuzzy untuk optimalisasi kecepatan mobile robot menggunakan komunikasi SPI (Serial Peripheral Interface), dapat dilihat pada Gambar 3.1 : STIKOM SURABAYA

Upload: others

Post on 19-Oct-2020

7 views

Category:

Documents


0 download

TRANSCRIPT

  • 39

    BAB III

    METODE PENELITIAN

    Metode penelitian yang digunakan pada pembuatan perangkat keras dan

    perangkat lunak adalah studi kepustakaan dan penelitian laboratorium. Dengan

    cara ini penulis berusaha untuk mendapatkan dan mengumpulkan data-data,

    informasi, konsep-konsep yang bersifat teoretis dari buku, bahan-bahan kuliah,

    dan referensi dari internet yang berkaitan dengan permasalahan.

    Penelitian laboratorium dilakukan dengan perancangan perangkat keras

    dan perangkat lunak, kemudian melakukan pengujian terhadap perangkat keras

    dan perangkat lunak. Langkah berikutnya adalah mengambil atau mengumpulkan

    data hasil percobaan. Langkah terakhir adalah melakukan evaluasi dan analisis

    terhadap hasil data yang dikumpulkan.

    Diagram blok yang digunakan dalam sistem dengan menggunakan

    kendali PID dan fuzzy untuk optimalisasi kecepatan mobile robot menggunakan

    komunikasi SPI (Serial Peripheral Interface), dapat dilihat pada Gambar 3.1 :

    STIK

    OM S

    URAB

    AYA

  • 40

    Input : jarak

    dan waktu

    Motor kanan

    Motor kiri

    Minimum sistem

    slave

    Proses PID

    Minimum sistem

    slave

    Proses PID

    Minimum sistem

    master

    Proses Fuzzy

    Feedback

    kecepatan

    Feedback

    kecepatan

    spi

    spi

    Feedback

    jarak

    Sensor

    jarak

    Gambar 3.1 Diagram blok sistem keseluruhan

    Dari blok diagram pada Gambar 3.1 dapat dilihat porsi untuk masing-

    masing sistem kendali PID dan fuzzy. Pada sistem ini memiliki input berupa jarak

    dan waktu yang kemudian akan menjadi input fuzzy yang diproses oleh

    microcontroller ATmega16 sebagai Master. Metode fuzzy yang digunakan adalah

    metode Sugeno. Setelah proses fuzzy selesai dilakukan oleh microcontroller

    Master, maka microcontroller Master akan mengeluarkan output berupa

    kecepatan (dalam satuan rpm) yang kemudian akan dikirim ke dua buah

    microcontroller ATmega8 sebagai Slave. Microcontroller Slave pada tugas akhir

    STIK

    OM S

    URAB

    AYA

  • 41

    kali ini berfungsi sebagai pengontrol motor kanan dan motor kiri yang satu sama

    lain tidak berkomunikasi secara langsung.

    Pada microcontroller Slave dilakukan proses kendali PID yang digunakan

    untuk mengontrol motor kanan dan motor kiri. Di mana proses PID mendapatkan

    input berasal dari microcontroller Master yang mengirimkan kecepatan yang

    selalu berubah-ubah sesuai dengan output fuzzy yang dihasilkan.

    3.1 Perancangan Perangkat Keras

    3.1.1 Perancangan Mekanik Robot

    Robot yang digunakan penulis terdiri atas 2 buah roda disertai motor yang

    terletak disisi kiri dan kanan bagian base robot digunakan untuk menjalankan

    robot. Berikut arsitektur robot secara detail adalah sebagai berikut.

    Ukuran dimensi

    Ukuran Robot : 500 mm x 600 mm x 100 mm

    Struktur Material

    Bahan Material yang digunakan :

    a. Bagian Rangka

    1. Aluminium Profile.

    2. Aluminium Sheet.

    3. Bearing.

    4. Mur dan Baut.

    b. Bagian dari Penggerak Robot :

    1. Motor DC 12 Volt.

    2. Aluminium.

    STIK

    OM S

    URAB

    AYA

  • 42

    3. Roda dari karet Silikon.

    4. Roda Bebas.

    5. Belt.

    6. Gear.

    Berikut arsitektur robot secara detail adalah sebagai berikut :

    Gambar 3.2 Desain robot keseluruhan

    3.1.2 Perancangan Minimum System

    Rangkaian minimum system dibuat untuk mendukung kerja dari microchip

    ATmega dimana microchip tidak bisa berdiri sendiri melainkan harus ada

    rangkaian dan komponen pendukung seperti halnya rangakaian catu daya, kristal

    dan lain sebagainya yang biasanya disebut minimum system.

    STIK

    OM S

    URAB

    AYA

  • 43

    Microchip berfungsi sebagai otak dalam mengolah semua instruksi baik

    input maupun output seperti halnya pemroses data input fuzzy maupun PID yang

    kemudian menghasilkan output yang digunakan untuk menjalankan motor.

    Minimum system yang dirancang penulis dalam tugas akhir kali ini

    menggunakan minimum system dengan komunikasi SPI (Serial Peripheral

    Interface) yang terdiri dari satu buah microcontroller ATmega16 sebagai

    microcontroller Master dan dua buah ATmega8 sebagai microcontroller Slave.

    Dalam komunikasi SPI terdapat satu Minimum system sebagai Master dan dua

    minimum system sebagai Slave.

    Pada rangkaian minimum system ini penulis memberikan pin VCC

    masukan tegangan operasi berkisar antara 4,5 Volt sampai dengan 5 Volt. pin

    reset berfungsi untuk masukan reset program secara otomatis atau manual.

    Sedangkan pin MOSI (Master Output Slave Input), MISO (Master Input Slave

    Output), dan SCK (Signal Clock) digunakan untuk keperluan pemrograman

    microcontroller dan sebagai komunikasi antara Master dan Slave (komunikasi

    SPI), sedangkan pin SS (Slave Select) digunakan oleh Master sebagai selektor

    antara Slave 1 dan slave 2. Untuk melakukan proses downloading program dari

    komputer ke microcontroller harus dilakukan secara terpisah antara Master dan

    Slave.

    STIK

    OM S

    URAB

    AYA

  • 44

    Minimum sistem

    master

    (Proses fuzzy)

    Minimum sistem

    slave

    (proses PID)

    Minimum sistem

    slave

    (proses PID)

    SPI

    SPI

    Driver motor

    Driver motor

    Motor DC

    Motor DC

    Rotary

    encoder

    Rotary

    encoder

    Rotary

    encoder

    Gambar 3.3 Diagram blok rancangan Minimum system keseluruhan

    A. Minimum System Master

    Gambar 3.2 Rangkaian skematik minimum system Master

    cap 100u

    ss

    ATMega16

    12345678

    9

    12

    13

    1415161718192021

    10

    11

    31

    3334353637383940

    2223242526272829

    30

    32

    PB0/(XCK/T0)PB1/(T1)PB2/(INT2/AIN0)PB3/(OC0/AIN1)PB4/(SS)PB5/(MOSI)PB6/(MISO)PB7/(SCK)

    RESET

    XTAL2

    XTAL1

    PD0/(RXD)PD1/(TXD)PD2/(INT0)PD3/(INT1)PD4/(OC1B)PD5/(OC1A)PD6/(ICP)PD7/(OC2)

    VC

    CG

    ND

    GN

    D

    PA7/(ADC7)PA6/(ADC6)PA5/(ADC5)PA4/(ADC4)PA3/(ADC3)PA2/(ADC2)PA1/(ADC1)PA0/(ADC0)

    PC0/(SCL)PC1/(SDA)PC2/(TCK)PC3/(TMS)PC4/(TDO)PC5/(TDI)

    PC6/(TOSC1)PC7/(TOSC2)

    AVCC

    AREF

    cap

    10uF/16v

    R 330

    reset

    cry stal

    11.0952.000

    ss1

    5v

    A

    1 1Saturday , August 11, 2012

    Title

    Size Document Number Rev

    Date: Sheet of

    DIODE

    5v

    T1 M

    pu

    sh

    bu

    tto

    n

    5v

    mosi

    f use

    12

    sck

    R 10k

    cap

    30pf

    reset

    LED

    R 100

    2200uF/25vmiso

    12v regulatorLM7805

    1

    2

    3VI

    GN

    D

    VO

    12v

    470uf /16v

    cap

    30pf

    sumber tegangan 12v

    12

    5 V

    STIK

    OM S

    URAB

    AYA

  • 45

    Minimum system Master menggunakan microcontroller ATmega16 yang

    mempunyai 40 pin I/O dan salah satunya terdapat fasilitas untuk berkomunikasi

    antar microcontroller yaitu komunikasi SPI. Dalam komunikasi SPI minimum

    system Master merupakan salah satu komponen penting, dimana dalam tugas

    akhir ini Minimum system Master digunakan sebagai pemroses fuzzy yang

    mempunyai input berupa jarak dan waktu seperti yang telah digambarkan pada

    blok diagram dan akan menghasilkan output berupa kecepatan yang akan

    dikirimkan ke minimum system Slave. Tabel di bawah ini merupakan pin I/O yang

    digunakan penulis dalam pembuatan tugas akhir pada minimum system Master.

    Tabel 3.1 Pin I/O Minimum system Master

    Pin I/O Fungsi

    Vcc Power 5v

    Gnd Ground

    PA0-PA7 LCD

    PB2 Sebagai slave select (selektor) ke microcontrollerkontroler

    slave 1

    PD2 Sebagai slave select (selektor) ke microcontrollerkontroler

    slave 2

    T1/PB1 Sebagai counter 16 bit nilai jarak dari rotary encoder

    Mosi/PB5 Master out, slave in (digunakan dalam komunikasi SPI)

    Miso/PB6 Master in, salve out (digunakan dalam komunikasi SPI)

    Sck/PB7 Serial Clock (digunakan dalam komunikasi SPI)

    Reset Mereset program

    PC0-PC7 Digunakan sebagai keypad

    STIK

    OM S

    URAB

    AYA

  • 46

    B. Minimum System Slave

    Gambar 3.3 Rangkaian skematik Minimum system slave

    Pada Gambar 3.3 merupakan rangkaian skematik minimum system slave,

    minimum system Slave disini menggunakan microcontroller ATmega8 yang

    mempunyai 28 pin I/O dan salah satunya terdapat fasilitas untuk berkomunikasi

    antar microcontroller yaitu komunikasi SPI. Dalam komunikasi SPI minimum

    system Slave merupakan salah satu komponen penting, dimana dalam tugas akhir

    ini Minimum system Slave digunakan sebagai pemroses kendali PID yang

    mempunyai input berupa kecepatan yang berasal dari minimum system Master dan

    menghasilkan output berupa PWM yang akan digunakan untuk mengendalikan

    motor DC. Tabel di bawah ini merupakan pin I/O yang digunakan penulis dalam

    pembuatan tugas akhir pada minimum system Slave.

    miso

    LED

    12v

    pu

    shb

    utt

    on

    100

    reset

    12vCap 2200uF/25v

    pwm1

    A

    1 1Tuesday , August 14, 2012

    Title

    Size Document Number Rev

    Date: Sheet of

    cap 30 pF

    R 10k

    sck

    DIODE

    reset

    IC4

    ATmega8

    123456789

    1011121314 15

    16171819202122232425262728

    PC6 (RESET)PD0 (RxD)PD1 (TxD)PD2 (INT0)PD3 (INT1)PD4 (XCK/T0)VCCGNDPB6 (XT1/TOSC1)PB7 (XT2/TOSC2)PD5 (T1)PD6 (AIN0)PD7 (AIN1)PB0 (ICP) (OC1A) PB1

    (SS/OC1B) PB2(OC2/MOSI) PB3

    (MISO) PB4(SCK) PB5

    AVCCAREFAGND

    (ADC0) PC0(ADC1) PC1(ADC2) PC2(ADC3) PC3

    (SDA/ADC4) PC4(SCL/ADC5) PC5

    5v

    Cap 470uf /16v

    miso

    RegulatorLM7805

    1

    2

    3VI

    GN

    D

    VO

    mosi

    cry stal

    11.0592 Mhz

    5v

    sck

    cap 100ureset

    sumber tegangan 12V

    12

    konektor f use

    12

    5v5 V

    R 330

    T0 S1

    5v

    downloader

    123456

    mosiss Cap

    10uF/16v

    dir1dir2cap 30 pF

    STIK

    OM S

    URAB

    AYA

  • 47

    Tabel 3.2 Pin I/O Minimum system slave

    Pin I/O Fungsi

    Vcc Power 5v

    Gnd Ground

    PB1/OR1A Sebagai output pwm 8 bit atau 10 bit

    T0/PC4 Sebagai counter 8 bit nilai rpm dari rotary encoder

    Mosi/PB3 Master out, slave in (digunakan dalam komunikasi SPI)

    Miso/PB4 Master in, salve out (digunakan dalam komunikasi SPI)

    Sck/PB5 Serial clock (digunakan dalam komunikasi SPI)

    Reset Mereset program

    PB2/SS Sebagai Slave select dari microcontrollerkontroler Master

    3.1.3 Perancangan Driver Motor L298

    Driver motor merupakan salah satu komponen terpenting dalam

    pengerjaan tugas akhir kali ini, di mana driver motor digunakan sebagai

    pengendali motor DC. Dalam konteks tugas akhir kali ini driver motor yang

    digunakan penulis adalah driver motor L298.

    Driver motor L298 diparalel agar mendapatkan arus yang besar untuk

    menjalankan motor DC. Driver motor L298 mempunyai dua channel output

    motor, dalam satu channel mempunyai arus sebesar 2A, sedangkan untuk

    menjalankan motor DC yang ada pada robot, penulis membutuhkan arus yang

    lebih besar guna menstabilkan motor pada robot. Maka solusi yang tepat adalah

    memparalel dua channel output driver motor tersebut agar menjadi satu untuk

    mendapatkan arus sebesar 4A. Berikut gambar rangkaian driver motor yang telah

    diparalel. STIK

    OM S

    URAB

    AYA

  • 48

    Gambar 3.4 Rangkaian driver motor L298

    3.1.4 Program kendali Fuzzy

    Program kendali fuzzy terdiri atas fuzzification, evaluasi aturan,

    mekanisme pengambilan keputusan metode Sugeno. Keluaran pada proses

    mekanisme pengambilan keputusan metode Sugeno merupakan hasil dari proses

    kendali fuzzy secara keseluruhan untuk mendapatkan nilai tegasnya yaitu sinyal

    kontrol (rpm). Blok diagram program kendali fuzzy diperlihatkan pada Gambar

    3.9.

    miso

    LED

    12v

    pu

    shb

    utt

    on

    100

    reset

    12vCap 2200uF/25v

    pwm1

    A

    1 1Tuesday , August 14, 2012

    Title

    Size Document Number Rev

    Date: Sheet of

    cap 30 pF

    R 10k

    sck

    DIODE

    reset

    IC4

    ATmega8

    123456789

    1011121314 15

    16171819202122232425262728

    PC6 (RESET)PD0 (RxD)PD1 (TxD)PD2 (INT0)PD3 (INT1)PD4 (XCK/T0)VCCGNDPB6 (XT1/TOSC1)PB7 (XT2/TOSC2)PD5 (T1)PD6 (AIN0)PD7 (AIN1)PB0 (ICP) (OC1A) PB1

    (SS/OC1B) PB2(OC2/MOSI) PB3

    (MISO) PB4(SCK) PB5

    AVCCAREFAGND

    (ADC0) PC0(ADC1) PC1(ADC2) PC2(ADC3) PC3

    (SDA/ADC4) PC4(SCL/ADC5) PC5

    5v

    Cap 470uf /16v

    miso

    RegulatorLM7805

    1

    2

    3VI

    GN

    D

    VO

    mosi

    cry stal

    11.0592 Mhz

    5v

    sck

    cap 100ureset

    sumber tegangan 12V

    12

    konektor f use

    12

    5v5 V

    R 330

    T0 S1

    5v

    downloader

    123456

    mosiss Cap

    10uF/16v

    dir1dir2cap 30 pF

    STIK

    OM S

    URAB

    AYA

  • 49

    Gambar 3.5 Flowchart Logika Fuzzy

    STIK

    OM S

    URAB

    AYA

  • 50

    Pada gambar 3.5 dapat dijelaskan sebagai berikut :

    1. Input fuzzy diperoleh dari penekanan keypad berupa nilai jarak dan waktu.

    Adapaun program penekanan keypad sebagai berikut.

    unsigned int tekan_keypad(unsigned char tanda)

    {

    unsigned int itung = 0,x = 6; //Deklarasi variabel

    unsigned int hasil;

    unsigned char buffer;

    unsigned char temp_hasil[3],temp_hasil1[5];

    while(1){

    buffer = '-';

    colom1 = 1; //output keypad

    colom2 = 0; //output keypad

    colom3 = 1; //output keypad

    colom4 = 1; //output keypad

    if (!row1) {buffer = '#',waiting();} //input keypad

    else if (!row2) {buffer = '9',waiting();}//input keypad

    else if (!row3) {buffer = '6',waiting();}//input keypad

    else if (!row4) {buffer = '3',waiting();}//input keypad

    delay_ms(50);

    colom1 = 1;

    colom2 = 1;

    colom3 = 0;

    colom4 = 1;

    if (!row1) {buffer = '0',waiting();}

    else if (!row2) {buffer = '8',waiting();}

    else if (!row3) {buffer = '5',waiting();}

    else if (!row4) {buffer = '2',waiting();}

    delay_ms(50);

    colom1 = 1;

    colom2 = 1;

    colom3 = 1;

    colom4 = 0;

    if (!row1) {buffer = '*',waiting();}

    else if (!row2) {buffer = '7',waiting();}

    else if (!row3) {buffer = '4',waiting();}

    else if (!row4) {buffer = '1',waiting();}

    if(tanda == 0) {

    lcd_gotoxy(x,0);

    lcd_putchar('_');

    }

    if (tanda == 1){

    Lcd_gotoxy(x,1);

    Lcd_putchar('_');

    }

    if (buffer == '#')goto exit; //keluar dari fungsi tekan

    //keypad

    if (buffer != '-'){

    if (tanda == 0 ){

    temp_hasil[itung++] = buffer;

    lcd_gotoxy(x++,0);

    lcd_putchar(buffer);

    STIK

    OM S

    URAB

    AYA

  • 51

    }

    else if(tanda == 1) {

    temp_hasil1[itung++] = buffer;

    lcd_gotoxy(x++,1);

    lcd_putchar(buffer);

    }

    else{

    temp_hasil[itung++] = buffer;

    }

    }

    }

    exit:

    lcd_gotoxy(x,0);

    lcd_putchar(' ');

    if(tanda == 1)

    {

    hasil = atoi(temp_hasil1);

    }

    else

    {

    hasil = atoi(temp_hasil);

    }

    return hasil;

    }

    2. Fuzzification adalah proses pemetaan input crisp ke dalam himpunan-

    himpunan fuzzy dalam bentuk fungsi keanggotaan. Tujuan dari fuzzification

    adalah untuk mendapatkan derajat keanggotaan dari hasil pemetaan input

    crisp kedalam fungsi keanggotaan yang bersesuaian. Derajat keanggotaan

    bernilai antara 0 dan 1. Tahapan awal proses fuzzification adalah menentukan

    parameter-parameter fungsi keanggotaan pada setiap himpunan fuzzy

    masukan. Pada pemrograman fuzzification ini digunakan parameter fungsi

    keanggotaan masukan berupa nilai jarak dan nilai waktu. Gambar 3.6 dan

    Gambar 3.7 merupakan parameter fungsi keanggotaan jarak dan waktu.

    Gambar 3.6 Fungsi keanggotaan jarak

    STIK

    OM S

    URAB

    AYA

  • 52

    Gambar 3.7 Fungsi keanggotaan waktu

    Pada Gambar 3.6 dan 3.7 adalah fungsi keanggotaan dari jarak dan waktu

    yang merupakan suatu variabel linguistic. Nilai linguistic S (jarak) = {Habis,

    Dekat, Sedang, Jauh) dan T (waktu) = {Selesai, Habis, Sedang, Lama},

    dimana nilai semesta pembicaraanya terletak antara -4 sampai 20. Distribusi

    fungsi keanggotaannya adalah fungsi segitiga dan fungsi trapesoid. Fungsi

    trapesoid mempunyai empat parameter = [a, b, c, d], dimana a, b, c dan d

    adalah proyeksi titik-titik sudut trapesium pada sumbu mendatar, contohnya

    pada fungsi trapesoid keanggotaan sedang jarak terdapat empat parameter

    nilai yaitu [4, 8, 12, 16]. Penggunaan rumus fungsi segitiga dan trapesoid

    sama dibedakan hanya parameter segitiga b dan c berhimpit sehingga dalam

    fungsi segitiga nilai b dan c bernilai sama. Untuk mencari nilai bobot dari

    derajat keanggotaan masing-masing fungsi menggunakan rumus trapesoid

    yaitu :

    ( ) ( (

    ) ) (3.1)

    Keterangan :

    1. u(x) adalah nilai derajat keanggotaan

    2. x adalah nilai input crisp atau nilai tegas

    STIK

    OM S

    URAB

    AYA

  • 53

    3. a, b, c, d merupakan parameter nilai dari fungsi trapesoid

    Sedangkan realisasi proses memperoleh derajat keanggotaan dari masing–

    masing fungsi keanggotaan adalah sebagai berikut.

    /*variable array dk[0] sampai dk[3] merupakan nilai derajat

    keanggotaan dari jarak sedangkan dk[4] sampai dk[7] merupakan

    nilai derajat keanggotaan dari waktu

    Untuk nilai parameter fungsi keanggotaan jarak dikalikan 100

    karena sensor membacanya dalam centimeter

    */

    dk[0] = derajat_keanggotaan(-900,-800,0,100,s_jarak);

    dk[1] = derajat_keanggotaan(0,400,400,800,s_jarak);

    dk[2] = derajat_keanggotaan(400,800,1200,1600,s_jarak);

    dk[3] = derajat_keanggotaan(1200,1600,3000,3400,s_jarak);

    dk[4] = derajat_keanggotaan(-20,-16,0,1,t_waktu);

    dk[5] = derajat_keanggotaan(0,4,4,8,t_waktu);

    dk[6] = derajat_keanggotaan(4,8,12,16,t_waktu);

    dk[7] = derajat_keanggotaan(12,16,30,34,t_waktu);

    /*fungsi dari program yang digunakan untuk memperoleh nilai

    derajat keanggotaan */

    float derajat_keanggotaan (float a,float b,float c,float

    d,float input)

    {

    float m1,m2,m3,m4,m5,m6,m7;

    m1 = b-a;

    m7 = d-c;

    if (m1!=0){m2 = (input-a)/(b-a);}

    else {m2=0;}

    if (m7!=0){m3 = (d-input)/(d-c);}

    else {m3=0;}

    m4 = fmin(m2,1);

    m5 = fmin(m4,m3);

    m6 = fmax(m5,0);

    return m6;

    }

    3. Rule set atau evaluasi aturan adalah proses mengevaluasi derajat keanggotaan

    tiap-tiap fungsi keanggotaan himpunan fuzzy masukan ke dalam basis aturan

    yang telah ditetapkan. Tujuan dari evaluasi aturan ini adalah menentukan

    derajat keanggotaan dari keluaran fuzzy. Sebelum melakukan evaluasi aturan

    terlebih dahulu ditetapkan basis aturan. Basis aturan merupakan keseluruhan

    aturan dari kombinasi dua masukan yang mungkin. Secara lengkap, jumlah

    kombinasi yang mungkin dari dua himpunan fuzzy masukan dengan masing-

    STIK

    OM S

    URAB

    AYA

  • 54

    masing empat fungsi keanggotaan sehingga jumlah aturannya adalah

    enambelas aturan. Basis aturan yang dibuat berdasarkan tingkah laku plant

    yang diinginkan. Pada bentuk yang lebih sederhana, sembilan aturan kendali

    fuzzy dapat dilihat pada tabel 3.1

    Tabel 3.1 Basis aturan kendali fuzzy

    Jarak

    Waktu

    Selesai Dekat Sedang Jauh

    Selesai Berhenti Berhenti Berhenti Berhenti

    Habis Berhenti Lambat Sedang Cepat

    Sedang Berhenti Lambat Sedang Cepat

    Lama Berhenti Lambat Lambat Lambat

    Berhenti, Lambat, Sedang, Cepat merupakan konstanta konsekuen dari

    anteseden dan masing-masing konstanta memiliki nilai yaitu Berhenti = 0,

    Lambat = 500, Sedang = 850, Cepat = 1000.

    Setelah proses fuzzification dieksekusi, dilakukan proses agregasi dengan

    mengambil nilai maksimal dari masing–masing fungsi keanggotaan variable

    keluaran. Realisasi proses evaluasi aturan dalam bentuk program adalah

    sebagai berikut.

    /*mencari nilai korelasi AND antara fungsi keanggotaan jarak

    dan waktu*/

    nilai_penyebut = k = 0;for (i = 0; i < 4; i++)

    {

    for (j = 4; j < 8; j++)

    {

    u[k] = rule_set(dk[i],dk[j]);

    nilai_penyebut = nilai_penyebut + u[k++];

    }

    }k=0;

    float rule_set(float a,float b)

    {

    float nilai;

    nilai = fmin(a,b);

    STIK

    OM S

    URAB

    AYA

  • 55

    return nilai;

    }

    4. Defuzzification adalah kebalikan dari proses fuzzification, yaitu mengubah

    himpunan Fuzzy keluaran menjadi keluaran tegas (crisp). Pengubahan ini

    diperlukan karena konstanta kendali PID hanya mengenal nilai tegas sebagai

    variable sinyal kontrol. Perancangan ini, menggunakan sebuah himpunan

    fuzzy keluaran dengan fungsi keanggotaannya berupa singleton yaitu fungsi

    keanggotaan keluaran sinyal control dapat dilihat pada Gambar 3.8

    Gambar 3.8 Fungsi keanggotaan keluaran sinyal control

    Hasil keluaran crisp output akan dikirim ke Slave dengan komunikasi SPI

    sebagai sinyal kontrol PID. Realisasi proses pengambilan keputusan metode

    sugeno menjadi bentuk crisp output dalam bentuk program adalah sebagai

    berikut :

    u[0] = u[0] * berhenti;

    u[1] = u[1] * berhenti;

    u[2] = u[2] * berhenti;

    u[3] = u[3] * berhenti;

    u[4] = u[4] * berhenti;

    u[5] = u[5] * lambat;

    u[6] = u[6] * lambat;

    u[7] = u[7] * lambat;

    u[8] = u[8] * berhenti;

    u[9] = u[9] * sedang;

    u[10] = u[10] * sedang;

    STIK

    OM S

    URAB

    AYA

  • 56

    u[11] = u[11] * lambat;

    u[12] = u[12] * berhenti;

    u[13] = u[13] * cepat;

    u[14] = u[14] * cepat;

    u[15] = u[15] * lambat;

    nilai_pembilang = 0;

    for (i=0;i < 16; i++) nilai_pembilang = nilai_pembilang +

    u[i];

    if(nilai_penyebut!=0)RPMdata = nilai_pembilang/nilai_penyebut;

    else RPMdata = 0;

    3.1.5 Kontroler PID (Proportional Integral Derivative)

    Dalam pengontrolan PID dapat dinyatakan dengan persamaan differensial

    sebagai berikut :

    ( ) * ( )

    ∫ ( )

    ( )

    + (3.2)

    Dimana e(t) = r(t) – c(t), r(t) adalah setpoint, c(t) adalah variable proses

    dan m(t) adalah variable manipulasi. Dan untuk mengimplementasikan kontrol

    PID dengan perangkat digital, maka haus dilakukan konversi dari bentuk kontinu

    ke bentuk diskrit. Dengan melihat bahwa :

    ( )

    ∫ ( ) ∑

    (3.3)

    Maka persamaan diatas menjadi persamaan PID diskrit :

    ( ) * (

    )

    ∑ + (3.4)

    Dimana m(n) menyatakan nilai m pada suatu interval n∆t, dengan n bilangan

    bulat. Dengan memperkenalkan parameter :

    (

    ) (3.5)

    (

    ) (3.6)

    STIK

    OM S

    URAB

    AYA

  • 57

    Dimana Ts = ∆t = waktu sampling dari input, maka persamaan PID diskrit di atas

    dapat dinyatakan dalam sebuah algoritma perumusan sebagai berikut :

    (3.7)

    ( ) ( ) (3.8)

    Dimana Sn = jumlah seluruh nilai error pada interval 0 sampai nTs

    Pada desain tugas akhir kali ini kontrol PID mendapat input yang berasal

    dari metode fuzzy yang sebelumnya melakukan proses perhitungan fuzzification

    yang menghasilkan output berupa kecepatan (Rpm). Gambar 3.9 merupakan

    formula kendali kontrol PID yang digambarkan melalui sebuah flowchart adalah

    sebagai berikut :

    STIK

    OM S

    URAB

    AYA

  • 58

    Start

    Error = sp - pv

    P = kp*error

    Sn = Sn_lm + error

    Over flow Sn = 1023YN

    I = ki*Sn

    D_error = error – error_lm

    Over flow D_error = 1023YN

    D = kd*D_error

    PID = P + I + D

    error_lm = error

    pwm = pwm + PID

    Input :

    sp=output

    fuzzy

    Inisialisasi :

    kp,ki,kd

    Sn < 0Sn = 0

    Y

    N

    D_error < 0D_error = 0

    N

    Y

    Sn_lm = Sn

    Gambar 3.9 Flowchart Kontrol PID

    STIK

    OM S

    URAB

    AYA

  • 59

    Dari program flowchart di atas dapat dilihat bahwa input kontrol PID

    berasal dari output fuzzy berupa kecepatan yang kemudian diolah melalui

    perumusan kontrol PID.

    Pada kontrol PID terdapat feedback atau yang disebut dengan PV (present

    value) dari motor DC yang telah diolah oleh sensor rotary encoder yang akan

    digunakan sebagai perhitungan kontrol PID. Berikut merupakan cuplikan program

    pengambilan feedback oleh sensor optocoupler :

    Pv = 0;

    delay_ms(100); //time sampling data pv

    pv = TCNT0*10; //rumus perhitungan rps dimana 10

    //didapatkan dari jumlah time sampling

    //dikali 10 agar mendapatkan waktu 1

    //detik.

    pv = (pv/55)*60; //rumus perhitungan rpm

    Berikut merupakan cuplikan program kontrol P, kontrol I, dan kontrol D

    sebagai berikut :

    1. Kontrol P

    kp = 0.5; //nilai kp didapatkan dari trial error

    error = sp - pv; //sp didapatkan dari inputan dari fuzzy

    p = kp*error;

    2. Kontrol I

    Ki = 0.00001; //nilai ki didaptkan dari trial error

    sn = sn_lm + error;//sn adalah jumlah keselutuhan dari error

    if (sn > 1023)

    {

    sn = 1023;

    }

    else if (sn < 0)

    {

    sn = 0;

    }

    pi = ki*sn;

    3. Kontrol D

    kd = 0.0001; //nilai kd didapatkan dari trial error

    delta_e = error - error_lm;

    if (delta_e > 1023)

    STIK

    OM S

    URAB

    AYA

  • 60

    {

    delta_e = 1023;

    }

    else if (delta_e < 0)

    {

    delta_e = 0;

    }

    d = kd*delta_e;

    4. Kontrol PID

    pid = (kp*error)+(ki*sn)+(kd*delta_e);

    pwm = pwm_lm + pid;

    if (pwm > 1023)

    {

    pwm = 1023;

    }

    else if (pwm < 0)

    {pwm = 0;}

    STIK

    OM S

    URAB

    AYA