Post on 05-Apr-2018
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:office@hpinfotech.ro
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