line tracker robot dewata

Upload: edysersan2879

Post on 05-Apr-2018

231 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/2/2019 Line Tracker Robot Dewata

    1/16

    Membuat Sendiri Robot Line Tracker

    Robot Line TrackerPada project kali ini kita akan membahas cara membuat robot line tracker yang

    dapat bergerak mengikuti track berupa garis hitam setebal 3 cm. Garis hitam tersebut disusunmembentuk sejumlah persimpangan-persimpangan. Robot diprogram untuk dapat menghitung jumlahpersimpangan yang sudah dilaluinya, kemudian belok sesuai dengan arah yang diinginkan.Untuk membaca garis, robot dilengkapi dengan sensor proximity yang dapat membedakanantara garis hitam dengan lantai putih. Sensor proximity ini dapat dikalibrasi untuk menyesuaikanpembacaan sensor terhadap kondisi pencahayaan ruangan. Sehingga pembacaan sensor selaluakurat.

    Agar pergerakan robot menjadi lebih halus, maka kecepatan robot diatur sesuaidengan kondisi pembacaan sensor proximity. Jika posisi robot menyimpang dari garis, makarobot akanmelambat. Namun jika robot tepat berada diatas garis, maka robot akan bergerak cepat. Robot jugadapat kembali ke garis pada saat robot terlepas sama sekali dari garis. Hal ini bisa dilakukankarena robot selalu mengingat kondisi terakhir pembacaan sensor. Jika terakhir kondisinya adalahdisebelahkiri garis, maka robot akan bergerak ke kanan, demikian pulasebaliknya.

    Gambar 1. Robot LineTracker

    SensorProximitySensor proximity bisa kita buat sendiri. Prinsip kerjanya sederhana, hanya

    memanfaatkan sifat cahaya yang akan dipantulkan jika mengenai benda berwarna terang danakan diserap jika mengenai benda berwarna gelap. Sebagai sumber cahaya kita gunakan LED(Light Emiting Diode) yang akan memancarkan cahaya merah. Dan untuk menangkap pantulancahaya LED, kita gunakan photodiode. Jika sensor berada diatas garis hitam maka photodiodaakan menerima sedikit sekali cahaya pantulan. Tetapi jika sensor berada diatas garis putihmaka photodioda akan menerima banyak cahaya pantulan. Berikut adalah ilustrasinya :

    LED Photodioda LED Photodioda

    Garis Hitam

    Gambar 1. Cahaya pantulan sedikit

    Garis Putih

    Gambar 2. Cahaya pantulan banyak

    Gambar 2. Prinsip Kerja Sensor Proximity

    Page 1 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    2/16

    3

    12

    3

    12

    3

    12

    3

    12

    3

    12

    3

    12

    +

    Sifat dari photodioda adalah jika semakin banyak cahaya yang diterima, maka nilai resistansidiodanya semakin kecil. Dengan melakukan sedikit modifikasi, maka besaran resistansitersebut dapat diubah menjadi tegangan. Sehingga jika sensor berada diatas garis hitam, makategangan keluaran sensor akan kecil, demikian pula sebaliknya. Berikut adalah gambarrangkaian sensor proximity yang digunakan pada robot ini :

    +5V +5V

    +5V +5V +5VVR1

    10K

    +5V

    R3

    470 +5V +5V +5V VR1

    10K

    +5V

    R3

    470

    R1

    220

    R2

    10K

    U1A

    LM339

    D3

    LED R1

    220

    R2

    10K

    U1D

    LM339

    D3

    LED

    7 +1

    KeAVR (PD.0 )6

    -

    1113

    10-

    Ke AVR(PD.3)

    D1 D2

    LED PD

    +5V

    D1 D2

    LED PD

    +5V

    +5V +5V +5V VR2

    10K

    +5V

    R6

    470 +5V +5V +5V VR2

    10K

    +5V

    R6

    470

    R4

    220

    R5

    10K

    U1B

    LM339

    D6

    LED R4

    220

    R5

    10K

    U2A

    LM339

    D6

    LED

    5+

    2KeAVR (PD.1 )

    4-

    7+

    1Ke AVR (PD.4)

    6-

    D4 D5

    LED PD

    +5V

    D4 D5

    LED PD

    +5V

    +5V +5V +5V VR2

    10K

    +5V

    R6

    470 +5V +5V +5V VR2

    10K

    +5V

    R6

    470

    R4

    220

    R5

    10K

    U1C

    LM339

    D6

    LED R4

    220

    R5

    10K

    U2B

    LM339

    D6

    LED

    9+

    14

    8-

    Ke AVR (PD.2 )

    5+

    2Ke AVR (PD.5)

    4-

    D4 D5

    LED PD

    D4 D5

    LED PD

    Gambar 3. Rangkaian SensorProximity

    Agar dapat dibaca oleh mikrokontroler, maka tegangan sensor harus disesuaikandengan level tegangan TTL yaitu 0 1 volt untuk logika 0 dan 3 5 volt untuk logika 1. Hal ini bisa

    dilakukan dengan memasang operational amplifier yang difungsikan sebagai komparator.Output dari photodiode yang masuk ke input inverting op-amp akan dibandingkan dengantegangan tertentu dari variable resistor VR. Tegangan dari VR inilah yang kita atur agarsensor proximity dapat menyesuaikan dengan kondisi cahaya ruangan.

    Gambar 4. Posisi Pemasangan Sensor Proximity PadaRobot

    Page 2 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    3/16

    Sensor proximity terdiri dari 6 pasang LED dan photodiode yang disusun sedemikianrupa sehingga jarak antara satu sensor dengan yang lainnya lebih kecil dari lebar garis hitam.Perhatikan gambar berikut :

    Sensor LineLineTrack

    SkiXX SkiX

    PIND.5 PIND.4Ski Ska

    PIND.3 PIND.2SkaX SkaXX

    PIND.1 PIND.0

    Gambar 5. Jarak Antar Sensor Proximity

    Rancangan Mekanik Robot

    Freewheel

    Proximity Sensor

    Baterai 12VRangkaianElektronika

    Motor

    Kiri

    Motor

    Kanan

    Robot Tampak Atas

    Gambar 6. MekanikRobot

    Robot Tampak Samping

    Page 3 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    4/16

    3

    4

    7

    Algoritma Pergerakan Robot

    Sebelum membuat program, maka kita perlu mendefinisikan seluruh kemungkinanpembacaan sensor proximity. Dengan demikian kita dapat menentukan pergerakan robotyang tujuannya adalah menjaga agar robot selalu berada tepat diatas garis. Berikut adalahbeberapa kemungkinan pembacaan garis oleh sensor proximity :

    SkiXX SkiX Ski Ska SkaX SkaXX

    1SkiXX SkiX Ski Ska SkaX SkaXX

    2

    SkiXX SkiX Ski Ska SkaX SkaXX

    SkiXX SkiX Ski Ska SkaX SkaXX

    SkiXX SkiX Ski Ska SkaX SkaXX

    5

    SkiXX SkiX Ski Ska SkaX SkaXX

    6SkiXX SkiX Ski Ska SkaX SkaXX

    Gambar 7. Kemungkinan Posisi Sensor Proximity PadaLine

    Setelah mengetahui kemungkinan-kemungkinan posisi sensor, maka selanjutnyaharus didefinisikan aksi dari setiap kondisi tersebut. Perhatikan tabel berikut ini :

    Tabel 1. Aksi PergerakanRobotPosisiSensor Aksi Robot Roda Kiri Roda Kanan

    1 Belok Kanan Tajam Maju cepat Berhenti2 Belok Kanan Sedang Maju cepat Maju lambat3 Belok Kanan Ringan Maju cepat Maju sedang4 Maju Lurus Maju cepat Maju cepat5 Belok Kiri Ringan Maju sedang Maju cepat6 Belok Kiri Sedang Maju lambat Maju cepat7 Belok Kiri Tajam Berhenti Maju cepat

    Page 4 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    5/16

    Lapangan Uji Coba

    Lapangan berupa garis-garis hitam diatas lantai berwarna putih. Garis hitam disusunmembentuk banyak persimpangan. Ukuran tiap kotak adalah 30 cm x 30 cm. Ketebalan garishitam adalah 3 cm. Garis hitam ini bisa dibuat menggunakan isolasi hitam kemudian ditempel padalantai atau kertas karton berwarna putih.

    30 cm

    30 cm

    Gambar 8. Lapangan UjiCoba

    Dalam aplikasi ini, robot akan bergerak mengikuti kotak terluar lapangan. Posisi awalrobot seperti terlihat pada gambar berikut ini :

    Gambar 9. Pergerakan Robot di Lapangan

    Page 5 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    6/16

    3

    14

    1E

    7

    12

    11

    Driver MotorDC

    Untuk menggerakkan dua buah motor dc, digunakan IC H-Bridge Motor Driver L298, yangmampu memberikan arus maksimum sebesar 1A ke tiap motor. Input L298 ada 6 jalur, terdiridari input data arah pergerakan motor dan input untuk PWM (Pulse Width Modulation). Untukmengatur kecepatan motor, pada input PWM inilah akan diberikan lebar pulsa yangbervariasi dari mikrokontroler.

    +12V

    1N4001 1N4001

    1N4001MOTORKIRI

    1N4001

    Ke AVR (PC.0)KeAVR (PC.1)

    Ke AVR (PC.2)KeAVR (PC.3)

    Ke AVR (PC.4)

    KeAVR (PC.5)

    U1

    51A11A2

    102A12A2

    61EN2EN

    1Y 12

    1Y 2

    2Y 113

    2Y 2

    1

    2E15

    +12V

    L2981N4001

    1 11N4001

    1N4001MOTORKANAN

    1N4001

    Gambar 10. Rangkaian Driver Motor DC

    Untuk menentukan arah pergerakan motor maka pada input L298 harus diberikankondisi sesuai dengan tabel berikut :

    Tabel 2. Tabel Kebenaran Driver Motor

    Motor1 Motor2Input Output Input Output

    I1A1 1A2 1EN 1Y1 1Y2 Aksi Motor 2A1 2A2 2EN 2Y1 2Y2 Aksi Motor0 0 1 0 0 Free

    RunningStop

    0 0 1 0 0 FreeRunningStop

    0 1 1 0 12V CW 0 1 1 0 12V CW1 0 1 12V 0 CCW 1 0 1 12V 0 CCW1 1 1 12V 12V Fast Stop 1 1 1 12V 12V Fast Stopx x 0 0 0 FreeRunning

    Stopx x 0 0 0 FreeRunning

    Stop

    Page 6 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    7/16

    (SDA) PC.123

    25

    36

    16

    18

    AVR Microcontroller

    Sebagai otak robot digunakan mikrokontroler AVR jenis ATmega8535 yang akan membacadata dari sensor proximity, mengolahnya, kemudian memutuskan arah pergerakan robot.

    Gambar 11. Mikrokontroler ATmega8535 Pada Robot

    Pada robot line track ini, keluaran sensor proximity dihubungkan ke PortD.0 dan PortD.5pada mikrokontroler. Sedangkan driver motor dihubungkan ke PortC.0 s/d PortC.5 seperti terlihatpada gambar berikut :

    +5V

    10K

    SPIPORT

    1234

    MOSIMISOSCK RESET U1 VCC 1 40

    5GND 2

    PB.0(XCK/T0)

    (ADC0) PA.039

    63

    PB.1(T1)

    4PB.2 (INT2/AIN0)

    (ADC1)PA.138

    (ADC2) PA.2 37

    MOSI5 PB.3(OC0/AIN1)

    6PB.4(SS)

    (ADC3) PA.3(ADC4) PA.4

    35

    S1 10uF/16V

    +5V MISOSCK

    7PB.5

    (MOSI)

    8 PB.6(MISO)

    9 PB.7(SCK)

    10 RESET

    11 VCC

    12 GND

    (ADC5) PA.534

    (ADC6) PA.633

    (ADC7) PA.7 32AREF 31

    GND 30 AVC C 29

    +5V

    13XTAL2 (TOSC2) PC.7 28

    33pFXTAL

    Ke SensorProximity 14

    XTAL1PD.0(RXD)

    (TOSC1) PC.627

    PC.5 Ke Driv erMotor

    33pF

    11.0592MHz

    Ke Sensor ProximityKe Sensor ProximityKe Sensor ProximityKe Sensor ProximityKeSensorProximity

    15PD.1(TXD)

    17PD.2

    (INT2) PD.3(INT1)

    19PD.4

    (OC1B)

    20 PD.5(OC1A)PD.6(ICP1)

    PC.426

    PC.324

    PC.2

    22(SCL) PC.0

    21(OC2)PD.7

    Ke Driv erMotorKe Driv er MotorKe Driv er MotorKe Driv er MotorKe Driv erMotor

    ATmega8535

    Gambar 12. Mikrokontroler ATmega8535

    Page 7 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    8/16

    Membuat Source CodeSource code secara lengkap dapat dilihat pada Lampiran A. Source code dibuatdengan menggunakan software CodeVisionAVR dengan langkah-langkah sebagai berikut :

    1. Jalankan CodeVisionAVR, kemudian klik File -> New, Pilih Project

    2. Do you want to use the CodeWizardAVR? Klik Yes3. Pilih Chip yang digunakan, chip : ATmega8535L, clock : 11.059200 MHz

    4. Lakukan setting sebagai berikut :Port : Port C sebagai Output dan Port D sebagai Input PullupTimers : Timer 0 dengan Clock Value 10,800 KHz, aktifkan Overflow Interrupt

    Page 8 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    9/16

    5. Klik File -> Generate, Save and Exit

    6. Buatlah source code seperti pada Lampiran A.7. Setelah selesai membuat source code, klik Setting -> Programmer8. Pilih AVR Chip Programmer Type : Kanda System STK200+/300 dan pilih Printer Port pada

    LPT1 : 378h

    9. Klik Project -> Configure, kemudian pilih menu After Make dan aktifkan Program the Chip.Klik OK jika sudah.PERHATIAN ! Jangan mengubah setting apapun pada menu ini. Jika salahmemilih, chip Anda tidak bisa digunakan lagi !!

    10. Untuk meng-compile project, klik Project -> Make11. Jika tidak ada error maka file siap didownload ke chip. Pastikan koneksi kabel

    downloader dan chip sudah terpasang dengan benar.

    12. Nyalakan power supply dan klik Program. Tunggu hingga proses download selesai.

    Page 9 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    10/16

    Penjelasan Source CodeBerikut adalah penjelasan tiap bagian dari source code.

    1. Membuat definisi port yang digunakan sebagai berikut :

    #define SkiXX#define SkiX#define Ski#define Ska

    #define SkaX#define SkaXX

    PIND.0PIND.1PIND.2PIND.3

    PIND.4PIND.5

    // Sensor kiri terluar// Sensor kiri luar// Sensor kiri tengah// Sensor kanan tengah

    // Sensor kanan luar// Sensor kanan terluar

    #define EnKi#define dirA_Ki#define dirB_Ki#define EnKa#define dirC_Ka#define dirD_Ka

    PORTC.4PORTC.0PORTC.1PORTC.5PORTC.2PORTC.3

    // Enable L298 untuk motor kiri// Direction A untuk motor kiri// Direction B untuk motor kiri// Enable L298 untuk motor kanan// Direction C untuk motor kanan// Direction D untuk motor kanan

    2. Menentukan library yang digunakan:#include // Library untuk chip ATmega8535#include // Library delay

    3. Membuat variable sebagai pengingat kondisi pembacaan sensor line terakhir.bit x;

    4. Membuat ISR Timer 0 / Interrupt Service Routine Timer 0. ISR ini digunakan untuk menghasilkan pulsa PWM untuk mengendalikan motor kiri dan

    kanan melalui bit EnKi dan EnKa.

    ISR Timer 0 dieksekusi secara periodik ketika Timer 0 overflow. Lamanya tergantung nilaiTimer/Counter 0 (TCNT0).

    Periode pulsa ditentukan oleh TCNT0. Nilai maksimumnya 0xFF atau 255d. Duty cycle PWM untuk motor kiri ditentukan oleh nilai lpwm. Maksimum 255. Duty cycle PWM untuk motor kanan ditentukan oleh nilai rpwm. Maksimum 255.unsigned char xcount,lpwm,rpwm; // Definisi variable// Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] voidtimer0_ovf_isr(void){// Place your code herexcount++; // xcount=xcount+1

    if(xcount

  • 8/2/2019 Line Tracker Robot Dewata

    11/16

    Pada program diatas, tampak ada 2 for while yang masing-masing diulang 1000 kali untukmemastikan bahwa sensor benar-benar membaca sebuah garis, bukan noda ataukotoran yang ada di lapangan.

    for(i=0;i

  • 8/2/2019 Line Tracker Robot Dewata

    12/16

    }

    }

    Variable count digunakan untuk menentukan jumlah persimpangan yang harus dilewati.Variable xx berisi jumlah persimpangan yang telah dilewati. Nilainya akan bertambah 1ketika kondisi 4 sensor tengah membaca garis hitam semua kemudian membaca garis putihsemua.

    10. Membuat main program

    void main(void)

    {....while (1)

    {// Place your code herescan_count(3); // Maju 3 persimpanganbelok_kanan(); // Belok kanan

    };}

    Page 12 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    13/16

    Lampiran A. Source Code Line Tracker Robot

    /*********************************************This program was produced by theCodeWizardAVR V1.24.0 StandardAutomatic Program Generator Copyright 1998-2003 HP InfoTechs.r.l. http://www.hpinfotech.roe-mail:[email protected]

    Project :Version :Date : 17/11/2007Author : hendawanCompany :Comments:

    Chip type : ATmega8535LProgram type : ApplicationClock frequency : 11,059200 MHzMemory model : SmallExternal SRAM size : 0Data Stack size : 128*********************************************/ #define SkiXX PIND.0#define SkiX PIND.1#define Ski PIND.2

    #define Ska PIND.3#define SkaX PIND.4#define SkaXX PIND.5

    #define EnKi PORTC.4#define dirA_Ki PORTC.0#define dirB_Ki PORTC.1#define EnKa PORTC.5#define dirC_Ka PORTC.2#define dirD_Ka PORTC.3#include #include bit x;unsigned char xcount,lpwm,rpwm;// Timer 0 overflow interrupt service routineinterrupt [TIM0_OVF] voidtimer0_ovf_isr(void){// Place your codehere xcount++;

    if(xcount

  • 8/2/2019 Line Tracker Robot Dewata

    14/16

    dirC_Ka=0;dirD_Ka=1;for(i=0;i

  • 8/2/2019 Line Tracker Robot Dewata

    15/16

    // Timer/Counter 0initialization// Clock source: SystemClock// Clock value: 10,800kHz// Mode: Normaltop=FFh// OC0 output:DisconnectedTCCR0=0x05;TCNT0=0x00;

    OCR0=0x00;

    // Timer/Counter 1initialization

    // Clock source: System Clock// Clock value: Timer 1 Stopped// Mode: Normal top=FFFFh// OC1A output: Discon.// OC1B output: Discon.// Noise Canceler: Off// Input Capture on Falling EdgeTCCR1A=0x00;TCCR1B=0x00;TCNT1H=0x00;TCNT1L=0x00;OCR1AH=0x00;OCR1AL=0x00;

    OCR1BH=0x00;OCR1BL=0x00;

    // Timer/Counter 2 initialization// Clock source: System Clock// Clock value: Timer 2 Stopped// Mode: Normal top=FFh// OC2 output: DisconnectedASSR=0x00;TCCR2=0x00;TCNT2=0x00;OCR2=0x00;

    // External Interrupt(s) initialization// INT0: Off// INT1: Off// INT2:Off

    MCUCR=0x00;MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initializationTIMSK=0x01;

    // Analog Comparator initialization// Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: Off// Analog Comparator Output: OffACSR=0x80;SFIOR=0x00;

    // Global enable interrupts#asm("sei")

    while (1){

    // Place your codehere scan_count(3);belok_kanan();

    };}

    Page 15 of 15

  • 8/2/2019 Line Tracker Robot Dewata

    16/16