Robot Line Tracer Mikrokontroler Atmega 16 (Sepuluh Sensor)

41

Click here to load reader

description

Robot Line Tracer Mikrokontroler Atmega 16 (Sepuluh Sensor)

Transcript of Robot Line Tracer Mikrokontroler Atmega 16 (Sepuluh Sensor)

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 1

    2015

    MODUL PELATIHAN

    ROBOT LINE TRACER MIKROKONTROLER

    ATMEGA 16 (10 Sensor)

    Universitas Muhammadiyah Sidoarjo

    JURUSAN ELEKTRONIKA

    Kelompok : - Moch. Mashuri (121020100009)

    - Deni Purwanto (121020100010)

    - M.Nurrohman (121020100045)

    2015

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 2

    2015

    ROBOT LINE TRACER

    Robot line tracer disebut juga line follower, dimana robot ini berfungsi

    untuk mengikuti jalur atau garis yang sudah ditentukan/ digambar. Robot ini

    sangat banyak digunakan atau dibuat oleh para penggemar bidang robotika.

    Meskipun bentuknya yang / sederhana, namun dapat dikembangkan menuju bentuk

    yang lebih kompleks.

    Robot line tracer dapat dibagi menjadi dua macam, yaitu robot tanpa

    program (Analog) dan robot dengan program (Mikrokontroler). Bagian-bagian dari

    robot line tracer yang umum digunakan dalam pembelajaran atau lomba antara lain :

    1. Hardware elektronika

    Biasanya terdiri komparator atau pembanding LM324 untuk robot analog dan bisa ada

    tambahan IC mikrokontroler untuk robot yang bisa di program.

    2. Hardware mekanik

    Sebagai badan atau body robot, dan fungsi lainya adalah sebagai tempat

    meletakan beberapa rangkaian robot tersebut.

    3. Software atau program

    Bagian yang tidak bisa dilihat, namun sangat penting untuk robot line tarcer yang bisa

    diprogram. Software ini berisikan program perintah-perintah terhadap robot,

    sehingga robot tersebut dapat bekerja sesuai dengan yang diinginkan atau diperintahkan

    sang programmer.

    Robot Line Tracer

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 3

    2015

    HARDWARE ELEKTRONIKA

    R. Minsys ATmega 16

    R. Power Supply

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 4

    2015

    R. Sensor Depan

    R. Sensor Samping

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 5

    2015

    R. Komparator

    R. LCD Display 16x2

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 6

    2015

    R. DriverT Motor

    Tata Letak Komponen PCB 1

    Tata Letak Komponen PCB 2

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 7

    2015

    Tata Letak Komponen PCB 3

    Tata Letak Komponen PCB 4

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 8

    2015

    Tata Letak Komponen PCB 5

    Tata Letak Komponen PCB 6

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 9

    2015

    Disain PCB 1

    Disain PCB 2

    Disain PCB 3

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 10

    2015

    Disain PCB 4

    Disain PCB 5

    Disain PCB 6

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 11

    2015

    Hardware Mekanik

    Body Acerilic

    Bahan yang dipakai adalah jenis acrelic atau ada yang menyebutnya mika, bahan ini

    banyak dipasaran namun memiliki harga yang lumayan mahal dan warna yang bermacam-

    macam. Bila dalam pembuatan tidak memiliki bahan acrelic, bisa kita ganti dengan

    bahan lain yang sama kuat dan ringannya yaitu bahan triplek (kayu).

    Ukuran yang dipakai adalah 14 cm x 16 cm, namun ukuran ini bisa dirubah

    sesuai

    dengan keadaan atau menyesuaikan dengan bentuk gearbok dan rangkaian elektronik.

    Sedangkan tebalnya bisa 2 atau 3 mm. Tetapi diusahakan jangan terlalu tebal, karena akan

    menambah beban dari robot tersebut.

    Motor DC (Gearbox)

    Motor DC atau gearbok digunakan sebagai penggerak dari robot atau sebagai

    kakinya. Motor DC gearbok bisa kita dapatkan langsung dengan membeli ditoko

    elektronika. Dan Kenali ssesifikasi Motor yag akan di beli karena sangan berpengaruh

    terhadap laju robot line tracer. Kali ini Saya menggunakan Motor yang satu set dengan gear

    boxnya.

    SOFTWARE

    Robot tidak akan bisa berfungsi bila tanpa adanya program atau kumpulan-kumpualan

    perintah yang kita isikan ke dalam IC mikrokontroler. Agar kita bisa membuat program

    tersebut, maka kita harus bisa bahasa pemrograman. Salah satunya bahasa pemrograman

    yang bisa kita gunakan adalah bahasa C. Sedangkan software editor bahasa C adalah

    BASCOM AVR.

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 12

    2015

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 13

    2015

    Listing Program

    'STARDUST 3.0

    'Code Name : Rccslp

    'Programmed by :Mukhammad Nurrohmn (Rccslp)

    'Elektronika

    'Universitas Muhammadiyah Sidoarjo

    '=============================Konfigurasi Mikrokontroller dan Crystal============================

    $regfile = "m16def.dat"

    $crystal = 12000000

    $framesize = 42

    $swstack = 42

    $hwstack = 42

    '===========================================================================================

    '====================================Konfigurasi LCD================================================

    Config Lcdpin = Pin , Db4 = Portb.3 , Db5 = Portb.2 , Db6 = Portb.1 , Db7 = Portb.0 , E = Portb.4 , Rs = Portb.5

    Config Lcdbus = 4

    Config Lcd = 16 * 2

    Cursor Off

    Deflcdchar 0 , 6 , 9 , 22 , 23 , 11 , 5 , 2 , 1 ' replace ? with number (0-7)

    Deflcdchar 1 , 12 , 18 , 13 , 29 , 26 , 20 , 8 , 16 ' replace ? with number (0-7)

    '==================================================================================================

    '===================================Konfigurasi Tombol=======================================

    Config Pinc.0 = Input

    Config Pinc.1 = Input

    Config Pinc.2 = Input

    Config Pinc.3 = Input

    Set Portc.0

    Set Portc.1

    Set Portc.2

    Set Portc.3

    Tombol1 Alias Pinc.0

    Tombol2 Alias Pinc.1

    Tombol3 Alias Pinc.2

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 14

    2015

    Tombol4 Alias Pinc.3

    '===========================================================================================

    '===============================Konfigurasi Direksi Driver Motor================================

    Config Portd.2 = Output

    Config Portd.3 = Output

    Dir_kiri Alias Portd.2

    Dir_kanan Alias Portd.3

    '===========================================================================================

    '======================================Konfigurasi PWM======================================

    Config Timer1 = Pwm , Pwm = 8 , Prescale = 64 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up

    Pwm1a = 0

    Pwm1b = 0

    Config Adc = Single , Prescaler = Auto , Reference = Avcc

    '===========================================================================================

    '==================================Konfigurasi Sensor Samping=================================

    Config Pind.0 = Input

    Config Pind.1 = Input

    Set Portd.0

    Set Portd.1

    Sensorkiri Alias Pind.0

    Sensorkanan Alias Pind.1

    '===========================================================================================

    '=====================================Deklarasi Sub-Program==================================

    Declare Sub Pwm(byval Kiri As Byte , Byval Kanan As Byte)

    Declare Sub Isi_error

    Declare Sub Baca_adc

    Declare Sub Kalibrasi

    Declare Sub Cek_sensor

    Declare Sub Pid

    Declare Sub Cek_adc

    '===========================================================================================

    '======================================Variabel Sensor========================================

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 15

    2015

    Dim Sensor As Byte

    Dim Href(8) As Word

    Dim Lref(8) As Word

    Dim Vref(8) As Word

    Dim Data_adc(8) As Word

    Dim Eepromsens(8) As Eram Word

    Dim Index As Byte , Idx As Byte , Pilih_adc As Byte

    Sensor0 Alias Sensor.0

    Sensor1 Alias Sensor.1

    Sensor2 Alias Sensor.2

    Sensor3 Alias Sensor.3

    Sensor4 Alias Sensor.4

    Sensor5 Alias Sensor.5

    Sensor6 Alias Sensor.6

    Sensor7 Alias Sensor.7

    For Index = 1 To 8

    Href(index) = 800

    Next

    '===========================================================================================

    '=================================Variabel PID dan Setting=====================================

    Dim Kp As Byte , Kpeeprom As Eram Byte , Proportional As Integer

    Dim Ki As Byte , Kieeprom As Eram Byte , Integral As Single

    Dim Kd As Byte , Kdeeprom As Eram Byte , Derivative As Integer

    Dim Sum_error As Integer

    Dim Error As Integer , Delta_error As Integer

    Dim Last_error As Integer

    Dim Pwm_ka_max As Integer , Pwm_ki_max As Integer

    Dim Pwm_ka As Integer , Pwm_ki As Integer

    Dim Pwm_ka2 As Byte , Pwm_ki2 As Byte

    Dim Speed As Byte , Espeed As Eram Byte

    Dim Sampling As Byte , Esampling As Eram Byte , Sam As Byte

    Dim Limit As Byte , Elimit As Eram Byte , Varkanan As Byte , Varkiri As Byte

    Dim Drift As Byte , Edrift As Eram Byte

    '===========================================================================================

    '=================================Mapping Perempatan=======================================

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 16

    2015

    Dim Perempatan As Byte

    Dim Perempatan_ke(8) As Byte

    Dim Status(8) As Byte

    Dim Decision(8) As Byte , Edecision(8) As Eram Byte

    Dim Stat As Byte , Arah As String * 1

    Perempatan = 0

    '===========================================================================================

    '===================================Mapping Pertigaan=======================================

    Dim Pertigaan As Byte

    Dim Pertigaan_ke(8) As Byte

    Dim Status_3(8) As Byte

    Dim Decision_3(8) As Byte , Edecision_3(8) As Eram Byte

    Dim Stat_3 As Byte

    Pertigaan = 0

    '===========================================================================================

    '===================================Inisialisasi Setting Eeprom=================================

    Inisialisasi:

    Kp = Kpeeprom

    Ki = Kieeprom

    Kd = Kdeeprom

    Error = 0

    Last_error = 0

    Speed = Espeed

    Pwm_ka_max = Speed

    Pwm_ki_max = Speed

    Sampling = Esampling

    Drift = Edrift

    Perempatan = 0

    Limit = Speed * 2

    Limit = Limit - Drift

    If Limit > 255 Then Limit = 255

    For Index = 1 To 8

    Vref(index) = Eepromsens(index)

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 17

    2015

    Next

    For Index = 1 To 8

    Decision(index) = Edecision(index)

    Next

    For Index = 1 To 8

    Decision_3(index) = Edecision_3(index)

    Next

    For Index = 1 To 8

    Perempatan_ke(index) = Decision(index)

    Next

    For Index = 1 To 8

    Pertigaan_ke(index) = Decision_3(index)

    Next

    For Index = 1 To 8

    Status(index) = 0

    Next

    For Index = 1 To 8

    Status_3(index) = 0

    Next

    Call Pwm(0 , 0)

    '===========================================================================================

    '================================Tampilan Awal (Standby)=====================================

    Standby:

    Cls

    Locate 1 , 1

    Lcd " LT Rccslp"

    Locate 2 , 1

    Lcd " Setting " ; Chr(0) ; Chr(1) ; " Go!! "

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 18

    2015

    Do

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Goto Setting

    End If

    If Tombol2 = 0 Then

    Bitwait Tombol2 , Set

    Goto Setting_mapping

    End If

    If Tombol3 = 0 Then

    Bitwait Tombol3 , Set

    Goto Setting_mapping_3

    End If

    If Tombol4 = 0 Then

    Cls

    Locate 1 , 1

    Lcd " I'm Ready...!!"

    Locate 2 , 1

    Lcd " Let's Goo...!!"

    Bitwait Tombol4 , Set

    Cls

    Locate 1 , 1

    Lcd " >> LT Rccslp

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 19

    2015

    Call Isi_error

    If Error = 0 Then Sum_error = 0

    Isi_pwm:

    Proportional = Kp * Error

    Delta_error = Error - Last_error

    Derivative = Kd * Delta_error

    'Sum_error = Sum_error + Error

    'Integral = Ki * Sum_error

    'Integral = Integral / 8

    Pwm_ka = Pwm_ka_max - Proportional

    Pwm_ki = Pwm_ki_max + Proportional

    Pwm_ka = Pwm_ka - Derivative

    Pwm_ki = Pwm_ki + Derivative

    'Pwm_ka = Pwm_ka - Integral

    'Pwm_ki = Pwm_ki + Integral

    If Pwm_ka > Limit Then

    Varkanan = Pwm_ka - Limit

    Pwm_ka = Limit

    End If

    If Pwm_ka < Limit Then Varkanan = 0

    If Pwm_ki > Limit Then

    Varkiri = Pwm_ki - Limit

    Pwm_ki = Limit

    End If

    If Pwm_ki < Limit Then Varkiri = 0

    Pwm_ka2 = Pwm_ka + Varkiri

    Pwm_ki2 = Pwm_ki + Varkanan

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 20

    2015

    Last_error = Error

    If Pwm_ka >= 0 And Pwm_ki >= 0 Then Gosub Maju

    If Pwm_ka < 0 And Pwm_ki >= 0 Then Gosub Kanan

    If Pwm_ka >= 0 And Pwm_ki < 0 Then Gosub Kiri

    If Pwm_ka < 0 Then Pwm_ka = 0 - Pwm_ka

    If Pwm_ki < 0 Then Pwm_ki = 0 - Pwm_ki

    If Pwm_ka > Pwm_ka_max Then Pwm_ka = Pwm_ka_max

    If Pwm_ki > Pwm_ki_max Then Pwm_ki = Pwm_ki_max

    If Pwm_ka2 > Limit Then Pwm_ka2 = Limit

    If Pwm_ki2 > Limit Then Pwm_ki2 = Limit

    Pwm1a = Pwm_ka2

    Pwm1b = Pwm_ki2

    Sam = 0

    For Sam = 0 To Sampling

    Call Cek_sensor

    If Sensor = &B00000000 And Sensorkanan = 1 And Sensorkiri = 0 Then Goto Kanan45

    If Sensor = &B00000000 And Sensorkanan = 0 And Sensorkiri = 1 Then Goto Kiri45

    If Sensor = &B01111110 Or Sensor = &B10011001 Or Sensor = &B01100110 Then Goto Nambah

    If Sensor = &B00011110 Or Sensor = &B00011001 Or Sensor = &B01111000 Or Sensor = &B10011000 Then Goto Nambah_3

    If Perempatan_ke(perempatan) = 1 And Status(perempatan) = 0 Then Goto Kiri_mapping

    If Perempatan_ke(perempatan) = 2 And Status(perempatan) = 0 Then Goto Kanan_mapping

    If Perempatan_ke(perempatan) = 3 And Status(perempatan) = 0 Then Goto Stops

    If Pertigaan_ke(pertigaan) = 1 And Status_3(pertigaan) = 0 Then Goto Kiri_mapping

    If Pertigaan_ke(pertigaan) = 2 And Status_3(pertigaan) = 0 Then Goto Kanan_mapping

    If Pertigaan_ke(pertigaan) = 3 And Status_3(pertigaan) = 0 Then Goto Stops

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 21

    2015

    'If Perempatan = 3 And Stat1 = 0 Then Goto Kiri_mapping

    'If Perempatan = 4 Then Goto Stops

    Waitus 150

    Next

    'If Sam = Sampling Then Goto Utama

    Loop

    '===========================================================================================

    '=====================================Counter Perempatan====================================

    Nambah:

    Incr Perempatan

    Waitms 50

    Goto Utama

    '===========================================================================================

    '=====================================Counter Pertigaan======================================

    Nambah_3:

    Incr Pertigaan

    Waitms 50

    Goto Utama

    '===========================================================================================

    '==========================================Stop=============================================

    Stops:

    Cls

    Reset Dir_kanan

    Set Dir_kiri

    Call Pwm(80 , 80)

    Waitms 50

    Locate 1 , 1

    Lcd " Tugas Selesai"

    Locate 2 , 1

    Lcd " Dilaksanakan"

    Do

    Call Pwm(0 , 0)

    Wait 1

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 22

    2015

    Loop

    '===========================================================================================

    '=====================================Belok Kanan 45 Derajad=================================

    Kanan45:

    Reset Dir_kanan

    Set Dir_kiri

    Call Pwm(limit , Limit)

    Waitms 80

    Do 'For Index = 0 To 16

    Reset Dir_kanan

    Reset Dir_kiri

    Call Pwm(50 , 60)

    Waitms 10

    Call Pwm(0 , 0)

    Waitms 5

    Call Cek_sensor

    Loop Until Sensor 0 'Next

    Goto Utama

    '===========================================================================================

    '=====================================Belok Kiri 45 Derajad=================================

    Kiri45:

    Reset Dir_kanan

    Set Dir_kiri

    Call Pwm(limit , Limit)

    Waitms 80

    Do 'For Index = 0 To 16

    Set Dir_kanan

    Set Dir_kiri

    Call Pwm(60 , 50)

    Waitms 10

    Call Pwm(0 , 0)

    Waitms 5

    Call Cek_sensor

    Loop Until Sensor 0 'Next

    Goto Utama

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 23

    2015

    '===========================================================================================

    '=====================================Belok Kanan mapping======================================

    Kanan_mapping:

    Reset Dir_kanan

    Set Dir_kiri

    Call Pwm(80 , 80)

    Waitms 80

    Do 'For Index = 0 To 16

    Reset Dir_kanan

    Reset Dir_kiri

    Call Pwm(40 , 50)

    Waitms 5

    Call Pwm(0 , 0)

    Waitms 5

    Call Cek_sensor

    Loop Until Sensor = &B10000000 Or Sensor = &B11000000 Or Sensor = &B01100000 'Next

    Status(perempatan) = 1

    Status_3(pertigaan) = 1

    Goto Utama

    '===========================================================================================

    '=====================================Belok Kiri mapping======================================

    Kiri_mapping:

    Reset Dir_kanan

    Set Dir_kiri

    Call Pwm(80 , 80)

    Waitms 80

    Do 'For Index = 0 To 16

    Set Dir_kanan

    Set Dir_kiri

    Call Pwm(50 , 40)

    Waitms 5

    Call Pwm(0 , 0)

    Waitms 5

    Call Cek_sensor

    Loop Until Sensor = &B00000001 Or Sensor = &B00000011 Or Sensor = &B00000110 'Next

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 24

    2015

    Status(perempatan) = 1

    Status_3(pertigaan) = 1

    Goto Utama

    '===========================================================================================

    '==========================================Navigasi=========================================

    Maju:

    Set Dir_kanan

    Reset Dir_kiri

    Return

    Kiri:

    Set Dir_kanan

    Set Dir_kiri

    Return

    Kanan:

    Reset Dir_kanan

    Reset Dir_kiri

    Return

    '===========================================================================================

    '========================================Sub PWM===========================================

    Sub Pwm(byval Kiri As Byte , Byval Kanan As Byte)

    Pwm1a = Kanan

    Pwm1b = Kiri

    End Sub

    '===========================================================================================

    '========================================Sub Isi Error=========================================

    Sub Isi_error:

    Select Case Sensor

    'Case &B00011111 : Error = -15

    'Case &B00001111 : Error = -15

    'Case &B00011110 : Error = -15

    Case &B00000111 : Error = -18

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 25

    2015

    Case &B00011110 : Error = -17

    Case &B00000001 : Error = -15

    Case &B00000011 : Error = -10

    Case &B00001110 : Error = -7

    Case &B00000010 : Error = -5

    Case &B00000110 : Error = -4 '-15

    Case &B00000100 : Error = -3

    Case &B00001100 : Error = -2

    Case &B00001000 : Error = -1

    Case &B00011000 : Error = 0

    Case &B00010000 : Error = 1

    Case &B00110000 : Error = 2

    Case &B00100000 : Error = 3

    Case &B01100000 : Error = 4 ' 15

    Case &B01000000 : Error = 5

    Case &B01110000 : Error = 7

    Case &B11000000 : Error = 10

    Case &B10000000 : Error = 15

    Case &B01111000 : Error = 17

    Case &B11100000 : Error = 18

    'Case &B01111000 : Error = 15

    'Case &B11110000 : Error = 15

    'Case &B11111000 : Error = 15

    Case &B11111101 : Error = -5

    Case &B11111001 : Error = -4

    Case &B11111011 : Error = -3

    Case &B11110011 : Error = -2

    Case &B11110111 : Error = -1

    Case &B11100111 : Error = 0

    Case &B11101111 : Error = 1

    Case &B11001111 : Error = 2

    Case &B11011111 : Error = 3

    Case &B10011111 : Error = 4

    Case &B10111111 : Error = 5

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 26

    2015

    End Select

    End Sub

    '===========================================================================================

    '=======================================Pilihan Setting========================================

    Setting:

    Cls

    Locate 1 , 1

    Lcd "Sensor ----- PID"

    Locate 2 , 1

    Lcd "--- Kalibrasi --"

    Do

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Goto Cek_adc

    End If

    If Tombol2 = 0 Then

    Bitwait Tombol2 , Set

    Call Kalibrasi

    End If

    If Tombol3 = 0 Then

    Bitwait Tombol3 , Set

    Goto Set_pid

    End If

    If Tombol4 = 0 Then

    Bitwait Tombol4 , Set

    Goto Standby

    End If

    Loop

    '===========================================================================================

    '=====================================Sub Baca Nilai ADC Sensor================================

    Sub Baca_adc:

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 27

    2015

    Start Adc

    For Idx = 0 To 7

    Index = Idx + 1

    Data_adc(index) = Getadc(idx)

    Next Idx

    Stop Adc

    End Sub

    '===========================================================================================

    '=======================================Sub Kalibrasi Otomatis================================

    Sub Kalibrasi:

    Cls

    Locate 1 , 1

    Lcd "Proses Kalibrasi"

    Locate 2 , 1

    Lcd " Sensor"

    Do

    Call Baca_adc

    For Index = 1 To 8

    If Data_adc(index) < Href(index) Then Lref(index) = Data_adc(index)

    Next

    For Index = 1 To 8

    If Data_adc(index) > Lref(index) Then Href(index) = Data_adc(index)

    Next

    Waitms 50

    Loop Until Tombol1 = 0

    For Index = 1 To 8

    Vref(index) = Lref(index) + Href(index)

    Next

    For Index = 1 To 8

    Vref(index) = Vref(index) / 2

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 28

    2015

    Next

    For Index = 1 To 8

    Eepromsens(index) = Vref(index)

    Next

    Waitms 100

    Cls

    Locate 1 , 1

    Lcd "Kalibrasi Sensor"

    Locate 2 , 1

    Lcd " Selesai"

    Wait 1.5

    Cls

    Do

    Call Cek_sensor

    Locate 1 , 5

    Lcd Bin(sensor)

    Locate 2 , 8

    Lcd Sensorkanan

    Locate 2 , 9

    Lcd Sensorkiri

    Waitms 50

    Loop Until Tombol1 = 0

    Goto Setting

    End Sub

    '===========================================================================================

    '===================================Sub Cek Sensor (Nilai Biner)================================

    Sub Cek_sensor

    Call Baca_adc

    If Data_adc(1) > Vref(1) Then

    Sensor.0 = 1

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 29

    2015

    Else

    Sensor.0 = 0

    End If

    If Data_adc(2) > Vref(2) Then

    Sensor.1 = 1

    Else

    Sensor.1 = 0

    End If

    If Data_adc(3) > Vref(3) Then

    Sensor.2 = 1

    Else

    Sensor.2 = 0

    End If

    If Data_adc(4) > Vref(4) Then

    Sensor.3 = 1

    Else

    Sensor.3 = 0

    End If

    If Data_adc(5) > Vref(5) Then

    Sensor.4 = 1

    Else

    Sensor.4 = 0

    End If

    If Data_adc(6) > Vref(6) Then

    Sensor.5 = 1

    Else

    Sensor.5 = 0

    End If

    If Data_adc(7) > Vref(7) Then

    Sensor.6 = 1

    Else

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 30

    2015

    Sensor.6 = 0

    End If

    If Data_adc(8) > Vref(8) Then

    Sensor.7 = 1

    Else

    Sensor.7 = 0

    End If

    End Sub

    '===========================================================================================

    '================================Rutin Untuk Mengecek Nilai Sensor=============================

    Cek_adc:

    Cls

    Do

    Call Baca_adc

    Call Cek_sensor

    Locate 2 , 8

    Lcd Sensorkanan

    Locate 2 , 9

    Lcd Sensorkiri

    Locate 1 , 5

    Lcd Bin(sensor)

    Waitms 100

    If Tombol4 = 0 Then

    Bitwait Tombol4 , Set

    Goto Setting

    End If

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Goto Cek_adc2

    End If

    Loop

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 31

    2015

    Cek_adc2:

    Cls

    Pilih_adc = 0

    Do

    Call Baca_adc

    Call Cek_sensor

    If Tombol3 = 0 Then

    Bitwait Tombol3 , Set

    Incr Pilih_adc

    End If

    If Tombol2 = 0 Then

    Bitwait Tombol2 , Set

    Decr Pilih_adc

    End If

    If Pilih_adc > 8 Then Pilih_adc = 1

    If Pilih_adc < 1 Then Pilih_adc = 8

    Select Case Pilih_adc

    Case 1 : Locate 1 , 1

    Lcd " ADC.0 : " ; Data_adc(1) ; " "

    Locate 2 , 1

    Lcd " Vref.0 : " ; Vref(1) ; " "

    Case 2 : Locate 1 , 1

    Lcd " ADC.1 : " ; Data_adc(2) ; " "

    Locate 2 , 1

    Lcd " Vref.1 : " ; Vref(2) ; " "

    Case 3 : Locate 1 , 1

    Lcd " ADC.2 : " ; Data_adc(3) ; " "

    Locate 2 , 1

    Lcd " Vref.2 : " ; Vref(3) ; " "

    Case 4 : Locate 1 , 1

    Lcd " ADC.3 : " ; Data_adc(4) ; " "

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 32

    2015

    Locate 2 , 1

    Lcd " Vref.3 : " ; Vref(4) ; " "

    Case 5 : Locate 1 , 1

    Lcd " ADC.4 : " ; Data_adc(5) ; " "

    Locate 2 , 1

    Lcd " Vref.4 : " ; Vref(5) ; " "

    Case 6 : Locate 1 , 1

    Lcd " ADC.5 : " ; Data_adc(6) ; " "

    Locate 2 , 1

    Lcd " Vref.5 : " ; Vref(6) ; " "

    Case 7 : Locate 1 , 1

    Lcd " ADC.6 : " ; Data_adc(7) ; " "

    Locate 2 , 1

    Lcd " Vref.6 : " ; Vref(7) ; " "

    Case 8 : Locate 1 , 1

    Lcd " ADC.7 : " ; Data_adc(8) ; " "

    Locate 2 , 1

    Lcd " Vref.7 : " ; Vref(8) ; " "

    End Select

    Waitms 100

    If Tombol4 = 0 Then

    Bitwait Tombol4 , Set

    Goto Setting

    End If

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Goto Cek_adc

    End If

    Loop

    '===========================================================================================

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 33

    2015

    '==================================Rutin Untuk Menyeting nilai PID=============================

    Set_pid:

    '===KP===

    Cls

    Do

    If Tombol3 = 0 Then

    Waitms 50

    Incr Kp

    End If

    If Tombol2 = 0 Then

    Waitms 50

    Decr Kp

    End If

    Locate 1 , 1

    Lcd "KP : " ; Kp ; " "

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Kpeeprom = Kp

    Waitms 50

    Exit Do

    End If

    Loop

    '=======

    '===KI===

    Cls

    Do

    If Tombol3 = 0 Then

    Waitms 50

    Incr Ki

    End If

    If Tombol2 = 0 Then

    Waitms 50

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 34

    2015

    Decr Ki

    End If

    Locate 1 , 1

    Lcd "KI : " ; Ki ; " "

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Kieeprom = Ki

    Waitms 50

    Exit Do

    End If

    Loop

    '=======

    '===KD===

    Cls

    Do

    If Tombol3 = 0 Then

    Waitms 50

    Incr Kd

    End If

    If Tombol2 = 0 Then

    Waitms 50

    Decr Kd

    End If

    Locate 1 , 1

    Lcd "KD : " ; Kd ; " "

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Kdeeprom = Kd

    Waitms 50

    Exit Do

    End If

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 35

    2015

    Loop

    '=======

    '===Sampling===

    Cls

    Do

    If Tombol3 = 0 Then

    Waitms 50

    Incr Sampling

    End If

    If Tombol2 = 0 Then

    Waitms 50

    Decr Sampling

    End If

    Locate 1 , 1

    Lcd "Sampling : " ; Sampling ; " "

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Esampling = Sampling

    Waitms 50

    Exit Do

    End If

    Loop

    '=======

    '===Drift===

    Cls

    Do

    If Tombol3 = 0 Then

    Waitms 50

    Incr Drift

    End If

    If Tombol2 = 0 Then

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 36

    2015

    Waitms 50

    Decr Drift

    End If

    Locate 1 , 1

    Lcd "Drift : " ; Drift ; " "

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Edrift = Drift

    Waitms 50

    Exit Do

    End If

    Loop

    '=======

    '===Speed===

    Cls

    Do

    If Tombol3 = 0 Then

    Waitms 50

    Incr Speed

    End If

    If Tombol2 = 0 Then

    Waitms 50

    Decr Speed

    End If

    Limit = Speed * 2

    Limit = Limit - Drift

    If Limit > 255 Then Limit = 255

    Locate 1 , 1

    Lcd "Speed : " ; Speed ; " "

    Locate 2 , 1

    Lcd "Limit : " ; Limit ; " "

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 37

    2015

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Espeed = Speed

    Waitms 50

    Goto Setting

    End If

    Loop

    '=======

    '============================Setting Path Planning Perempatan=================================

    Setting_mapping:

    Cls

    Perempatan = 1

    Do

    If Tombol3 = 0 Then

    Bitwait Tombol3 , Set

    Incr Perempatan

    End If

    If Perempatan > 8 Then Perempatan = 1

    If Tombol2 = 0 Then

    Bitwait Tombol2 , Set

    Decr Perempatan

    End If

    If Perempatan < 1 Then Perempatan = 8

    If Perempatan Stat Then Decision(perempatan) = Edecision(perempatan)

    If Tombol4 = 0 Then

    Bitwait Tombol4 , Set

    Incr Decision(perempatan)

    End If

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 38

    2015

    If Decision(perempatan) > 4 Then Decision(perempatan) = 1

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Edecision(perempatan) = Decision(perempatan)

    Perempatan_ke(perempatan) = Decision(perempatan)

    Waitms 100

    Incr Perempatan

    End If

    Locate 1 , 1

    Lcd "Perempatan" ; Perempatan ; " : " ; Decision(perempatan) ; " "

    Locate 2 , 1

    Lcd "1:L 2:R 3:X 4:S"

    Stat = Perempatan

    Loop

    '===========================================================================================

    '=============================Setting Path Planning Pertigaan==================================

    Setting_mapping_3:

    Cls

    Pertigaan = 1

    Do

    If Tombol3 = 0 Then

    Bitwait Tombol3 , Set

    Incr Pertigaan

    End If

    If Pertigaan > 8 Then Pertigaan = 1

    If Tombol2 = 0 Then

    Bitwait Tombol2 , Set

    Decr Pertigaan

    End If

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 39

    2015

    If Pertigaan < 1 Then Pertigaan = 16

    If Pertigaan Stat_3 Then Decision_3(pertigaan) = Edecision_3(pertigaan)

    If Tombol4 = 0 Then

    Bitwait Tombol4 , Set

    Incr Decision_3(pertigaan)

    End If

    If Decision_3(pertigaan) > 4 Then Decision_3(pertigaan) = 1

    If Tombol1 = 0 Then

    Bitwait Tombol1 , Set

    Edecision_3(pertigaan) = Decision_3(pertigaan)

    Pertigaan_ke(pertigaan) = Decision_3(pertigaan)

    Waitms 100

    Incr Pertigaan

    End If

    Locate 1 , 1

    Lcd "Pertigaan" ; Pertigaan ; " : " ; Decision_3(pertigaan) ; " "

    Locate 2 , 1

    Lcd "1:L 2:R 3:X 4:S"

    Stat_3 = Pertigaan

    Loop

    '===========================================================================================

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 40

    2015

    HASIL PEMBUATAN

    Berikut ini merupakan kumpulan gambar-gambar hasil pembuatan robot line tracer,

    untuk disain mekanik bisa dilakukan perubahan sesuai keinginan masing-

    masing pembuatnya. Namun ada beberapa acuan yang harus diperhatikan dalam

    pembuatanya, karena bila hanya asal saja pembuatanya robot dalam bekerja atau

    berjalan tidak akan bisa maksimal atau bisa tidak bergerak sama sekali.

  • ROBOT LINE TRACER MIKROKONTROLER ATMEGA 16

    ROBOT LINE TRACER / LT RCCSLP 41

    2015

    ARENA ROBOT LINE TRACER

    Arena bisa kita buat dari papan triplek melamin atau bisa sesuatu yang berwarna

    putih, sedangkan garis berwarna hitam dengan cara menempelkan isolasi lakban

    hitam. Untuk warna sebenarnya tidak harus berwarna putih dan hitam, warna lain

    juga bisa digunakan asal warna lain tersebut satu warna menyerap cahaya, dan

    warna satunya memantulkan cahaya (berlainnan sifat terhadap cahaya). Contohnya

    warna putih, dll. hijau dengan

    http://rccslp17.blogspot.com