Download - Dasar Robotika
-
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”