robot line tracer mikrokontroler atmega 16 (sepuluh sensor)
DESCRIPTION
Robot Line Tracer Mikrokontroler Atmega 16 (Sepuluh Sensor)TRANSCRIPT
-
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