Dasar Robotika

Embed Size (px)

Citation preview

  • 8/17/2019 Dasar Robotika

    1/40

    1

    Mada Sanjaya WS, Ph.D

    2012 WORKSHOP ROBOTIKA DASAR I 

  • 8/17/2019 Dasar Robotika

    2/40

    2

    PENGENALAN ROBOT

    Rekan-rekan pasti telah mengenal istilah robot??

    Robot sering sekali di jadikan tema

    utama dalam film-film Hollywood,

    Semua mungkin tahu robot

    transformer, RoboCOP, wall-E,

    DoraEMON, ataupun astroBOY.Robot menjadi trend, kemungkinan

    karena robot adalah perwujudan

    dari teknologi futuristic yang

    paling canggih.

    Gambar 1. Wall-E robot yang bisa jatuh cinta

    Perkembangan Dunia Robot

    Trend perkembangan dunia robot, tidak hanya ada pada angan-angan

    pembuat film Hollywood, Tetapi merupakan hasil nyata dari kerja

    panjang para peneliti dan teknokrat yang bergelut di bidang otomasi dan

    kecerdasan buatan. Perkembangan dunia robot salah satunya dapat

    Robot menurut kamus bahasa, berasal dari kata robota yang artinyapekerja. Sehingga robot dapat didefinisikan sebagai sebuah alat mekanikyang dapat bekerja secara terus menerus untuk membantu pekerjaanmanusia, yang dalam menjalankan tugasnya dapat dikontrol langsung olehmanusia ataupun bekerja secara otomatis sesuai program yang telahditanamkan pada chip kontroler robot.

  • 8/17/2019 Dasar Robotika

    3/40

    3

    terlihat dari perkembangan robot ASIMO milik Honda yang telah

    menghabiskan waktu riset selama 20 tahun.

    Gambar 2. Perkembangan ASIMO

    Kecerdasan Buatan

    Mungkinkah robot akan dapat berfikir dan dapat berinteraksi dengan

    manusia. Wahhh,,,itu sudah terjadi, meski masih sangat sederhana.

    KISMET adalah robot social pertama yang dapat berinteraksi dengan

    manusia. KISMET adalah robot buatan Dr. Cynthia Breazeal yang

    merupakan salah satu ilmuwan robot wanita di Dunia. Beliau bekerja di

    lab kecerdasan buatan MIT (ITB-nya Amrik).

  • 8/17/2019 Dasar Robotika

    4/40

    4

    Gambar 3. Interaksi KISMET dan Dr. Cynthia Breazeal 

    Saat ini, dunia robotika terus berkembang, bukan hanya robot

    humanoid, robot berkembang dalam berbagai kondisi dan kebutuhan

    manusia, seperti terlihat pada ilustrasi berikut.

    Gambar 4. Bidang-bidang robotika

    Secara umum robot terdiri dari tiga bagian utama yaitu mekanik,

    elektronik, dan pemrograman/kontrol.

  • 8/17/2019 Dasar Robotika

    5/40

    5

    ROBOT MOBIL KONTROL

    ANALOG

    (Remote Control Analog Mobile Robot)

    Tentu rekan-rekan sudah tidak asing lagi dengan mobil atau pesawat

    remot kontrol, mobil remot kontrol merupakan salah satu jenis robot

    teleoperated. Yang dapat di kendalikan arah geraknya. Mobil tersebut

    dapat dikendalikan maju, mundur, belok kiri, ataupun belok kanan.

    Gambar 1. Satu set mobil remot kontrol

    Pada pembahasan kali ini, kita akan membuat sebuah robot remot

    kontrol sederhana yang sangat mudah untuk dibuat.

    Simulasi Proteus

    Berikut adalah sebuah desain sederhana dari robot kontrol analog.

    (Untuk simulasinya dapat di lihat pada CD lampiran)

  • 8/17/2019 Dasar Robotika

    6/40

    6

    Gambar 2. Desain dan simulasi robot kontrol analog sederhana

    Desain Aktual

    Untuk membuat desain actual robot, dalam buku ini dibuat

    menggunakan software Fritzing.

  • 8/17/2019 Dasar Robotika

    7/40

    7

    Gambar 3. Desain aktual robot kontrol analog sederhana

    Robot kontrol analog ini dapat dibuat modifikasi dengan berbagai

    bentuk dan fungsi, misalnya robot soccer, walking robot kontrol dan

    lainnya. Berikut adalah robot beetlebot yang siap untuk di uji coba.

    (a) (b)

  • 8/17/2019 Dasar Robotika

    8/40

    8

    (c)

    Gambar 4. Robot mobil kontrol analog

    Walking Robot Kontrol Analog 4 Kaki

    Dengan sedikit memodifikasi roda menjadi bentuk kaki, maka akan

    diperoleh walking robot kontrol analog berikut:

    Gambar 5. Robot berkaki empat dengan kontrol analog

    Ayo tunjukkan kreativitasmu !!!

  • 8/17/2019 Dasar Robotika

    9/40

    9

    PENGENALAN ELEKTRONIKADIGITAL: BERMAIN

    DENGAN LED

    Gambar 1. Ilustrasi aplikasi teknologi digital

    Berbagai jenis aplikasi teknologi yang ada saat ini, sebagian besar

    merupakan produk teknologi digital. Begitupula dengan bidang robotika,

    sebagian besar merupakan pengembangan teknologi digital yang

    dikombinasikan dengan kecerdasan buatan (soft computing).

    PENGENALAN PROGRAM CODE VISION AVR

    CodeVisionAVR merupakan salah satu software untuk menmprogram

    mikrokontroler yang berfungsi sebagai text editor dalam menulis baris

    perintah sekaligus sebagai compiler yang dapat mengubah file sumber

  • 8/17/2019 Dasar Robotika

    10/40

    10

    menjadi file hexa. Software CodeVision AVR versi demo dapat di unduh

    dari http://www.hpinfotech.ro/html/cvavr.htm.

    CodeVisionAVR menyediakan berbagai fasilitas yang memudahkan

    pengguna. Salah satunya adalah CodeWizardAVR yang memberikan

    kemudahan dalam melakukan konfigurasi fungsi-fungsi pin dan fitur

     yang yang ingin digunakan. Selain itu juga CodeVisionAVR menyediakan

    toolbar yang memudahkan pengguna untuk melakukan berbagai interaksi

     yang diinginkan.

    Berikut adalah metode penulisan program pada CV AVR:

    PROYEK DIGITAL 1. MEMBUAT BLINKING LED

    Memulai Program

    1.  Double klik CodeVisionAVR Evaluation V2.05.0 untuk memulai

    program

    #include

     //deklarasi variabel global dapat dituliskan disini.……

    void main(void){

     //deklarasi variabel local dapat dituliskan disini.

    …… // kode-kode yang dihasilkan CodeWizard

    ……..

    while (1){

     //program utama dapat dituliskan disini.

    ……}

    }

  • 8/17/2019 Dasar Robotika

    11/40

    11

    2.  Membuat new file

    3.  Kemudian akan muncul dialog, pilih project, klik OK.

    4.  Kemudian muncul pula dialog confirm, klik Yes.

    5.  Setelah itu akan muncul dialog CodeWizardAVR, pilih AT90,

    ATtiny, ATmega, FPSLIC, klik OK.

    6.  Maka akan muncul file CodeWizard-untitled.cwp , setelah itu buka

    chip, kemudian isikan dengan jenis mikrokontroler yang digunakan,

  • 8/17/2019 Dasar Robotika

    12/40

    12

    dalam eksperimen ini kita gunakan ATmega16 dengan Clock dari

    crystal sebesar 12 MHz.

    7. 

    Untuk menyimpan file, pilih program, pilih Generate, Save andExit seperti berikut

    8. 

    Setelah itu, isikan nama file yang ingin digunakan dengan mengisikotak dialog berikut

  • 8/17/2019 Dasar Robotika

    13/40

    13

    9.  File yang tersimpan terdiri dari tiga file, dengan masing-masing

    nama ditulis sama, dan klik save. Setelah itu akan tampil

    running_led.prj yang merupakan file program project yang siap

    untuk diisi logika program. Kemudian isikan Keterangan Project,

    Version, Author, Company, Comment sesuai kebutuhan.

    10. 

    Kemudian lengkapi program sesuai project yang dibuat,

    dalam eksperimen membuat rangkaian blinking LED kita dapat

    menambahkan kode program pada Preprocessor (#), inisialisasi

    pada bagian void main(void), serta program utama dalam while(1).Berikut adalah contoh tambahan kode program untuk membuat

    rangkaian blinking LED./*****************************************************This program was produced by theCodeWizardAVR V2.05.0 ProfessionalAutomatic Program Generator

  • 8/17/2019 Dasar Robotika

    14/40

    14

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

    Project : Blinking LEDVersion : IDate : 11/17/2012

    Author : Mada Sanjaya WS, Ph.DCompany : Bolabot Techno Robotic SchoolComments: "SEMANGAT!!!"

    Chip type : ATmega16Program type : ApplicationAVR Core Clock frequency: 12.000000 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 256*****************************************************/

    #include

    #include

    void main(void){

    //mendefinisikan output berupa LEDDDRD=0xFF;

    while (1){

    PORTD=0x00; // LED menyaladelay_ms(1000); // LED menyala selama satu detikPORTD=0xFF; // LED matidelay_ms(1000); // LED mati selama satu detik

    }}

    11. Setelah semua kode program ditulis dengan benar. Tekan tombol

    F9 untuk compile, maka akan muncul kotak informasi ada tidaknya

    error. Jika sudah tidak ada error klik OK.

  • 8/17/2019 Dasar Robotika

    15/40

    15

    12.  Program siap di upload pada hardware mikrokontroler untuk

    menghidupkan sistem yang telah dibuat.

    Simulasi Proteus Program Blinking LED

    Gambar 2. Simulasi proteus rangkaian blinking led

  • 8/17/2019 Dasar Robotika

    16/40

    16

    Cara mengcompile program CV AVR ke Proteus 

    1.  Klik kanan, pada bagian mikrokontroler, kemudian pilih edit

    properties

    2.  Cari program file, berupa file Exe, dari program yang telah dibuat,

    dalam proyek ini, file bernama running_led.hex. Kemudian klik OK.

    3. 

    Kemudian klik Play untuk memulai simulasi, dan Stop untuk

    menghentikan simulasi Proteus.

  • 8/17/2019 Dasar Robotika

    17/40

    17

    PROYEK DIGITAL 2. MENYALAKAN LED DENGAN TOMBOL 

    Simulasi Proteus Menghidupkan LED dengan Tombol

    Gambar 3. Simulasi Proteus menghidupkan LED dengan tombol

    Membuat Program

    Untuk langkah 1-8, prosedurnya sama dengan proyek digital 1.

    9. Isikan nama tiga file: tombol_led.c, tombol_led.cwp, tombol_led.prj.

    10. Isikan program berikut:

    /*****************************************************This program was produced by theCodeWizardAVR V2.05.0 ProfessionalAutomatic Program Generator© Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.http://www.hpinfotech.com

    Project : Menghidupkan LED dengan tombolVersion : I

  • 8/17/2019 Dasar Robotika

    18/40

    18

    Date : 11/17/2012Author : Mada Sanjaya WS, Ph.DCompany : Bolabot Techno Robotic SchoolComments: "SEMANGAT!!!"

    Chip type : ATmega16

    Program type : ApplicationAVR Core Clock frequency: 12.000000 MHzMemory model : SmallExternal RAM size : 0Data Stack size : 256*****************************************************/

    #include

    void main(void){// Mendefinisikan input tombol

    DDRB.0=0;DDRB.1=0;

    //Mendefinisikan output LEDDDRD.1=1;DDRD.2=1;DDRD.3=1;DDRD.4=1;

    //kondisi awal PORTPORTD.1=1; //semua led matiPORTD.2=1;

    PORTD.3=1;PORTD.4=1;

    while (1){

    if (PINB.0==0){PORTD.1=0; //led biru nyalaPORTD.2=0; //led biru nyalaPORTD.3=1; //led kuning matiPORTD.4=1; //led kuning mati}

    else if (PINB.1==0){PORTD.1=1; //led biru matiPORTD.2=1; //led biru matiPORTD.3=0; //led kuning nyalaPORTD.4=0; //led kuning nyala}else{

  • 8/17/2019 Dasar Robotika

    19/40

    19

    PORTD.1=1; //semua led matiPORTD.2=1;PORTD.3=1;PORTD.4=1;}

    }

    }

    SELAMAT MENCOBA !!! (^v^)

  • 8/17/2019 Dasar Robotika

    20/40

    20

    ROBOT KONTROL DIGITALREMOTE KABEL

    Film Real steel !!?, Gambar

    disamping menampilkan impian

    robot masa depan yang dapat

    dikontrol langsung mengikuti

    gerak manusia yang menjadi

    pengontrolnya.

    Gambar 1. Ilustrasi robot kontrol

    Secara umum robot tergolong menjadi dua bagian yaitu robot otomatis dan robot

    teleoperated. Robot otomatis dapat bekerja tanpa kontrol langsung oleh manusia, robot

    tersebut bekerja berdasarkan program yang ditanamkan seperti robot line follower,

    robot avoider obstacle, robot humanoid, lampu lalu lintas, pintu otomatis, dan

    sebagainya. Sedangkan robot teleoperated harus  dikontrol langsung oleh manusia,

    seperti robot kontrol, televisi, komputer dan lainnya.

  • 8/17/2019 Dasar Robotika

    21/40

    21

    Pada eksperimen dalam bab ini, kita akan membuat robot digital

    teleoperated sederhana yang dapat dikontrol untuk bergerak maju,

    mundur, belok kiri, belok kanan, serta berputar.

    Untuk robot kontrol dalam eksperimen didalam bab ini masih

    menggunakan kontrol berbasis kabel.

    Tombol Push Button

    Push button merupakansebuah device untuk menghubungkan dan

    memutuskan rangkaian listrik antara 2

    titik. Penggunaan push button dikehidupan

    sehari-hari hampir menyentuh semua

    bidang. Di bidang komputer dengan

    keyboard dan mouse, dibidang otomotif

    dengan panel-panel kontrolnya, bahkan

    diperalatan rumah tangga sekalipun seperti kontrol peralatan listrik juga menggunakan push button.

    Aktif high pushbutton

    Aktif high pushbutton merupakan push button yang memiliki

    karakteristik saat tidak ada penekanan maka dalam keadaan

    terputus (off) sedangkan saat ditekan akan tersambung (on).

    Gambar 2. Bentuk Fisik Push Button 4 pin

  • 8/17/2019 Dasar Robotika

    22/40

    22

    Aktif low pushbutton

    Aktif low push button merupakan push button yang memiliki

    karakteristik saat tidak ada penekanan maka dalam keadaan

    tersambung (on) sedangkan saat ditekan akan terputus (off).

    Desain Lengkap Robot Kontrol Digital

    Gambar 3. Skema proteus robot kontrol digital

    Sesuai desain pada tombol gerak kiri dihubungkan dengan PIN D.0,

    tombol gerak kanan dihubungkan dengan PIN D.1, tombol gerak maju

    dihubungkan dengan PIN D.2, serta gerak mundur dihubungkan dengan

    PIN D.3. Motor kiri diatur oleh PORTD.5 dan PORTD.6, sedangkan

    motor kanan diatur oleh PORTD.7 dan PORTB.0. Logika yang dibuat

  • 8/17/2019 Dasar Robotika

    23/40

    23

    untuk membuat sebuah robot kontrol dapat diringkas dalam tabel

    berikut

    Tabel 1. Kondisi Gerak Motor dan Kondisi Logika Tiap Pin Motor

    Kondisi Tombol

    Push-Button

    D.5 D.6 D.7 B.0

    Maju D.2 = 0 1 0 1 0

    Belok Kiri D.0 = 0 1 0 0 0

    Belok Kanan D.1 = 0 0 0 1 0

    Mundur D.3 = 0 0 1 0 1

    Membuat Program Robot Kontrol Digital dengan CV AVR

    /*****************************************************

    This program was produced by the

    CodeWizardAVR V2.05.0 Professional

    Automatic Program Generator

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com

    Project : Robot Kontrol Digital

    Version : I

    Date : 11/20/2012

    Author : Mada Sanjaya WS, Ph.D

    Company : Bolabot Techno Robotic School

    Ingat motor hanya akan

    bergerak jika diberi beda

    polaritas antara dua pin

  • 8/17/2019 Dasar Robotika

    24/40

    24

    Comments: Bekerja untuk Kebangkitan Teknologi Indonesia

    Chip type : ATmega8

    Program type : Application

    AVR Core Clock frequency: 12.000000 MHz

    Memory model : Small

    External RAM size : 0

    Data Stack size : 256

    *****************************************************/

    #include

    #include

    // Declare your global variables here

    void main(void)

    {

    // Declare your local variables here

    // Input/Output Ports initialization

    // Port B initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=Out Func1=Out Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=0 State1=0 State0=TPORTB=0x00;

    DDRB=0x06;

    // Port C initialization

    // Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTC=0x00;

    DDRC=0x00;

    // Port D initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTD=0x00;

  • 8/17/2019 Dasar Robotika

    25/40

    25

    DDRD=0x00;

    // Timer/Counter 0 initialization

    // Clock source: System Clock

    // Clock value: Timer 0 Stopped

    TCCR0=0x00;

    TCNT0=0x00;

    // Timer/Counter 1 initialization

    // Clock source: System Clock

    // Clock value: 11.719 kHz

    // Mode: Fast PWM top=0x00FF

    // OC1A output: Non-Inv.

    // OC1B output: Non-Inv.

    // Noise Canceler: Off

    // Input Capture on Falling Edge

    // Timer1 Overflow Interrupt: Off

    // Input Capture Interrupt: Off

    // Compare A Match Interrupt: Off

    // Compare B Match Interrupt: Off

    TCCR1A=0xA1;TCCR1B=0x0D;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;

    OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;OCR1BL=0x00;

    // Timer/Counter 2 initialization

    // Clock source: System Clock

    // Clock value: Timer2 Stopped

  • 8/17/2019 Dasar Robotika

    26/40

    26

    // Mode: Normal top=0xFF

    // OC2 output: Disconnected

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

    OCR2=0x00;

    // External Interrupt(s) initialization

    // INT0: Off

    // INT1: Off

    MCUCR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization

    TIMSK=0x00;

    // USART initialization

    // USART disabled

    UCSRB=0x00;

    // Analog Comparator initialization

    // Analog Comparator: Off// Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;

    SFIOR=0x00;

    // ADC initialization

    // ADC disabled

    ADCSRA=0x00;

    // SPI initialization

    // SPI disabled

    SPCR=0x00;

    // TWI initialization

  • 8/17/2019 Dasar Robotika

    27/40

    27

    // TWI disabled

    TWCR=0x00;

    DDRD.0=0; // mendefinisikan sebagai input dari tombol gerak ke kiri

    DDRD.1=0; // mendefinisikan sebagai input dari tombol gerak ke kanan

    DDRD.2=0; // mendefinisikan sebagai input dari tombol gerak maju

    DDRD.3=0; // mendefinisikan sebagai input dari tombol gerak mundur

    DDRD.5=1; // mendefinisikan sebagai ouput motor kiri

    DDRD.6=1; // mendefinisikan sebagai ouput motor kiri

    DDRD.7=1; // mendefinisikan sebagai ouput motor kanan

    DDRB.0=1; // mendefinisikan sebagai ouput motor kanan

    PORTD.0=1; // kondisi awal

    PORTD.1=1;

    PORTD.2=1;

    PORTD.3=1; 

    PORTD.5=1;

    PORTD.6=1;

    PORTD.7=1;

    PORTB.0=1;

    OCR1A=200; // pengatur kecepatan motor menggunakan PWM untuk motor kiri

    OCR1B=200;  // pengatur kecepatan motor menggunakan PWM untuk motor kanan

    while (1)

    {

    if (PIND.0==0) //robot gerak ke kiri

    {

    PORTD.5=1;

    PORTD.6=0;

    PORTD.7=0;

    PORTB.0=0;}

    else if (PIND.1==0) //robot gerak ke kanan

    {

    PORTD.5=0;

    PORTD.6=0;

  • 8/17/2019 Dasar Robotika

    28/40

    28

    PORTD.7=1;

    PORTB.0=0;

    }

    else if (PIND.2==0) //robot gerak maju

    {

    PORTD.5=1;

    PORTD.6=0;

    PORTD.7=1;

    PORTB.0=0;

    }

    else if (PIND.3==0) //robot gerak mundur

    {

    PORTD.5=0;

    PORTD.6=1;

    PORTD.7=0;

    PORTB.0=1;

    }

    else //robot diam

    {

    PORTD.5=0;

    PORTD.6=0;PORTD.7=0; 

    PORTB.0=0;

    }

    }

    }

  • 8/17/2019 Dasar Robotika

    29/40

    29

    ROBOT LINE FOLLOWER

    DIGITAL DENGAN IC KOMPARATOR

    Line follower Robot  (Robot Pengikut Garis) adalah robot yang dapat

    berjalan mengikuti sebuah lintasan, ada yang menyebutnya dengan Line

    Tracker, Line Tracer Robot dan sebagainya. Garis yang dimaksud adalah

    garis berwarna hitam diatas permukaan berwarna putih atau sebaliknya,

    ada juga lintasan dengan warna lain dengan permukaan yang kontras

    dengan warna garisnya. Ada juga garis yang tak terlihat yang digunakan

    sebagai lintasan robot, misalnya medan magnet.

    Gambar 1. Ilustrasi robot line follower

    dengan posisi sensor di atas permukaan

    putih

    Seperti layaknya manusia, bagaimana manusia dapat berjalan mengikuti

     jalan yang ada tanpa menabrak dan sebagainya, tentunya karena manusia

    memiliki “mata” sebagai penginderanya. Begitu juga robot line follower

  • 8/17/2019 Dasar Robotika

    30/40

    30

    ini, dia memiliki sensor garis yang berfungsi seperti “mata” pada

    manusia. Sensor garis ini mendeteksi adanya garis atau tidak pada

    permukaan lintasan robot tersebut, dan informasi yang diterima sensor

    garis kemudian diteruskan ke prosesor untuk diolah sedemikian rupa

    dan akhirnya hasil informasi hasil olahannya akan diteruskan ke

    penggerak atau motor agar motor dapat menyesuaikan gerak tubuh

    robot sesuai garis yang dideteksinya.

    Untuk merangkai rangkaian

    elektroniknya kita perlu

    tahu dulu diagram blok

    sistem yang akan kita

    bangun, dengan demikian

    akan menjadi mudah

    mengerjakannya. Blok

    sistem yang akan kita bagun

    paling tidak tampak seperti gambar berikut. Sistemnya terdiri dari

    sensor garis, rangkaian komparator, sistem minimum AT Mega 16 dan

    motor driver.

    Gambar 2. Diagram blok robot line follower 

  • 8/17/2019 Dasar Robotika

    31/40

    31

    Skema Lengkap Line follower Digital IC Komparator

    Pada skema lengkap robot line follower didesain dengan posisi sensor di

    atas permukaan putih. Dua buah sistem sensor di pasang pada pin B.0

    dan B.1, sedangkan sistem actuator motor DC dipasang pada Port D.0

    dan D.1 untuk motor kiri, D.2 dan D.3 untuk motor kanan. Prinsip kerja

    robot line follower  berikut adalah saat sistem sensor berada di atas

    permukaan putih, akan ada pantulan cahaya dari LED yang akan

    mengenai sensor cahaya LDR sehingga resistansi sensor LDR berkurang

    sehingga arus bergerak melalui LDR. Kondisi tersebut menyebabkan

    arus output sensor menuju IC komparator LM 393 menjadi minimum,

    oleh IC LM 393, arus di non-inverting sehingga output menuju pin

    mikrokontroler menjadi LOW (0). Sebaliknya, saat sistem sensor

    berada di atas garis hitam, tidak akan ada pantulan cahaya dari LED

     yang akan mengenai sensor cahaya LDR sehingga resistansi sensor LDR

    sangat besar sehingga arus tidak akan melalui LDR. Kondisi tersebut

    menyebabkan arus output sensor menuju IC komparator LM 393

    menjadi maksimum, oleh IC LM 393, arus di non-inverting sehingga

    output menuju pin mikrokontroler menjadi HIGH (1). Olehmikrokontroler data logika pin tersebut kemudian diolah untuk

    mengerakan motor, motor akan bergerak jika kedua pin motor tersebut

  • 8/17/2019 Dasar Robotika

    32/40

    32

    memiliki beda polaritas. Selengkapnya mengenai logika gerak robot

    dapat dilihat pada Tabel 1 dan 2.

    Tabel 1. Kondisi Gerak Motor dan pengaruh Sensor

    Kondisi B.0 = 0 B.0 =1

    B.1 = 0 Maju Belok Kiri

    B.1 = 1 Belok Kanan Mati

    Tabel 2. Kondisi Gerak Motor dan Kondisi Logika Tiap Pin Motor

    Kondisi D.0 D.1 D.2 D.3

    Maju 0 1 0 1

    Belok Kiri 0 0 0 1

    Belok Kanan 0 1 0 0

    Mati 1 1 1 1

  • 8/17/2019 Dasar Robotika

    33/40

    33

    Gambar 3. Skema lengkap robot line follower menggunakan AT Mega 16

    Bentuk Robot Line Follower

    Gambar 4. Bentuk jadi robot line follower menggunakan AT Mega 16

  • 8/17/2019 Dasar Robotika

    34/40

    34

    Membuat Program Robot Line Follower dengan CV AVR

    /*****************************************************

    This program was produced by the

    CodeWizardAVR V2.05.0 Professional

    Automatic Program Generator

    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.

    http://www.hpinfotech.com

    Project : Robot Line follower  

    Version : I

    Date : 11/8/2012

    Author : Mada Sanjaya WS, Ph.D

    Company : Bolabot Techno Robotic School

    Comments: www. bolabot. com

    Chip type : ATmega16

    Program type : Application

    AVR Core Clock frequency: 12.000000 MHz

    Memory model : Small

    External RAM size : 0

    Data Stack size : 256

    *****************************************************/

    #include

    # include //tambahan program untuk membuat waktu tunda

    // Alphanumeric LCD Module functions

    #include

    // Declare your global variables here

    void main(void)

  • 8/17/2019 Dasar Robotika

    35/40

    35

    {

    // Declare your local variables here

    // Input/Output Ports initialization

    // Port A initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTA=0x00;

    DDRA=0x00;

    // Port B initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTB=0x00;

    DDRB=0x00;

    // Port C initialization

    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T

    PORTC=0x00;

    DDRC=0x00;

    // Port D initialization

    // Func7=In Func6=In Func5=Out Func4=Out Func3=In Func2=In Func1=In Func0=In

    // State7=T State6=T State5=0 State4=0 State3=T State2=T State1=T State0=T

    PORTD=0x00;

    DDRD=0x30;

    // Timer/Counter 0 initialization// Clock source: System Clock

    // Clock value: Timer 0 Stopped

    // Mode: Normal top=0xFF

    // OC0 output: Disconnected

    TCCR0=0x00;

  • 8/17/2019 Dasar Robotika

    36/40

    36

    TCNT0=0x00;

    OCR0=0x00;

    // Timer/Counter 1 initialization

    // Clock source: System Clock

    // Clock value: 11.719 kHz

    // Mode: Fast PWM top=0x00FF

    // OC1A output: Non-Inv.

    // OC1B output: Non-Inv.

    // Noise Canceler: Off

    // Input Capture on Falling Edge

    // Timer1 Overflow Interrupt: Off

    // Input Capture Interrupt: Off

    // Compare A Match Interrupt: Off

    // Compare B Match Interrupt: Off

    TCCR1A=0xA1;

    TCCR1B=0x0D;

    TCNT1H=0x00;

    TCNT1L=0x00;

    ICR1H=0x00;

    ICR1L=0x00;OCR1AH=0x00;

    OCR1AL=0x00;

    OCR1BH=0x00;

    OCR1BL=0x00;

    // Timer/Counter 2 initialization

    // Clock source: System Clock

    // Clock value: Timer2 Stopped// Mode: Normal top=0xFF

    // OC2 output: Disconnected

    ASSR=0x00;

    TCCR2=0x00;

    TCNT2=0x00;

  • 8/17/2019 Dasar Robotika

    37/40

    37

    OCR2=0x00;

    // External Interrupt(s) initialization

    // INT0: Off

    // INT1: Off

    // INT2: Off

    MCUCR=0x00;

    MCUCSR=0x00;

    // Timer(s)/Counter(s) Interrupt(s) initialization

    TIMSK=0x00;

    // USART initialization

    // USART disabled

    UCSRB=0x00;

    // Analog Comparator initialization

    // Analog Comparator: Off

    // Analog Comparator Input Capture by Timer/Counter 1: Off

    ACSR=0x80;

    SFIOR=0x00;

    // ADC initialization

    // ADC disabled

    ADCSRA=0x00;

    // SPI initialization

    // SPI disabled

    SPCR=0x00;

    // TWI initialization

    // TWI disabled

    TWCR=0x00;

  • 8/17/2019 Dasar Robotika

    38/40

    38

    // Alphanumeric LCD initialization

    // Connections 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); 

    // Tambahan kode mendefinisikan input output

    DDRB.0=0;

    DDRB.1=0;

    DDRD.0=1;

    DDRD.1=1;

    DDRD.2=1;

    DDRD.3=1;

    // Tambahan kode mendefinisikan kecepatan motor PWMOCR1A=200;

    OCR1B=200;

    // Tambahan kode mendefinisikan kondisi awal

    PORTB.0=1; //sensor kiri

    PORTB.1=1; //sensor kanan

    PORTD.0=0;

    PORTD.1=0;

    PORTD.2=0;PORTD.3=0;

    while (1)

    {

    if (PINB.0==1 & PINB.1==0) // Tambahan kode sensor kiri hitam, kanan putih, maka belok kiri

    {

  • 8/17/2019 Dasar Robotika

    39/40

    39

    PORTD.0=0;

    PORTD.1=0;

    PORTD.2=0;

    PORTD.3=1;

    lcd_clear ();

    lcd_gotoxy(0,0); 

    lcd_putsf("B0=1 B1=0");

    lcd_gotoxy(0,1);

    lcd_putsf("BELOK KIRI");

    delay_ms(100);

    }

    else if (PINB.0==0 & PINB.1==1) // Tambahan kode sensor kiri putih, kanan hitam, maka belok

    kanan

    {

    PORTD.0=0;

    PORTD.1=1;

    PORTD.2=0;

    PORTD.3=0;

    lcd_clear();

    lcd_gotoxy(0,0);

    lcd_putsf("B0=0 B1=1");lcd_gotoxy(0,1);

    lcd_putsf("BELOK KANAN");

    delay_ms(100);

    }

    else if (PINB.0==1 & PINB.1==1) // Tambahan kode sensor kiri hitam, kanan hitam, maka mati

    {

    PORTD.0=0;

    PORTD.1=0;PORTD.2=0;

    PORTD.3=0;

    lcd_clear ();

    lcd_gotoxy(0,0);

    lcd_putsf("B0=1 B1=1");

  • 8/17/2019 Dasar Robotika

    40/40

    lcd_gotoxy(0,1);

    lcd_putsf("MATI");

    delay_ms(100);

    }

    else // Tambahan kode sensor kiri putih, kanan putih, maka bergerak maju

    {

    PORTD.0=0;

    PORTD.1=1;

    PORTD.2=0; 

    PORTD.3=1;

    lcd_clear();

    lcd_gotoxy(0,0);

    lcd_putsf("B0=0 B1=0");

    lcd_gotoxy(0,1);

    lcd_putsf("MAJU");

    delay_ms(100);

    }

    }

    }

    SELAMAT MENCOBA…

    MARI BERJUANG BERSAMA BOLABOT

    “BEKERJA UNTUK KEBANGKITAN

    TEKNOLOGI INDONESIA”