1659 - Teknik Rancang Bangun Robot Tingkat Dasar PDF
1659 - Teknik Rancang Bangun Robot Tingkat Dasar PDF
,IISTAKAAN
\RSIPAI\
twA
r.8
)
!
TeknikRancang
@ffi
Tingkat Dasar
o
.
o
Andi Nalwan
Perlerbit AN D I Yogyakarta
. :,..1-..f:
.: ,.i.
. n::
.*':
! |
tl
:.
,:i. .it"j. i
Editor
Setting
Desoin Cover
Korektor
:.
: Nikodemus WK
: Sri Sulistiyoni
: Don-dut
: Erong
KATA PENGANTAR
Dunia robot dewasa ini semakin berkembang. Banyak fungsi yang biasa
dilakukan oleh manusia saat ini mulai dikerjakan oleh robot, seperti pada
fungsi pemindahan barang, pengendalian kendaraan, atau pemisahan
barang pada roda berjalan. Kondisi tersebut menuntut kita untuk
memperdalam ilmu robotika dan meningkatkan pendidikan ilmu ini sejak
dini.
Sayang sekali, kit-kit robot untuk edukasi saat ini memiliki harga yang
cukup tinggi sehingga hanya terjangkau oleh kalangan tertentu atau hanya
5528
ANDI OFFSET
JI. Beo 38-40, Telp. (027 4) 56 I 88
PETCCTOKON:
5528 l
Andi Nolwon;
- Ed. l. - Yogyokorro:ANDI,
21 20 19 r8 17 16 15 l4
t3
t2
l0 9
ISBN:978
l.
l.
8 7
-979-
6 5 4
29 - 3097 - 9
.ludul
Robotics
DDC'2I :629.892
berusaha
DELTA ELECTR.ONIC
Kompleks Ruko Manyar Megah lndah Plaza D-22
Ngagel Jaya Selatan
Surabaya, Jawa Timur
+ 62-3 I -5 0202
Telepon:
l0
il
ii
ii
li
:
Situs Web :
DAFTAR ISI
paulus@delta-electronic.com
www.delta-electronic.com
www.robotindonesia. com
demi
1.1 Pendahuluan..........
1.2 Bagian-Bagian Robot.........
"""""""""""
""""'5
"'''""""'5
f.i.l Bagi,anMekanik..
""""""""6
L.2.l.l Motor DC '............
""""""""8
1.2.1.2 Motor Gearbox.....
I.2.1.3 MotorServo.......... ''"'""""'11
""""'14
1.2.1.4 Kerangka Robot....-.'..
""""'27
1.2.2 BagianElektronika
."""""""""""98
1.3 Bagian Pemrograman Robot
BAB
II
BAB
III
SEDERHANA............
.....131
HALANGAN
.......I47
ULTRASONIK...........
..................155
IX
BAB X
BAB
GARIS
161
.......167
81
BAB
XI
BAB
BAB I
DASAR ROBOTIKA
............
LAMPTRAN Ir ..........
TENTANG PENULIS
LAMPIRAN r
CONTROL
...................201
.................211
.................213
................231
1.1 Pendahuluan
Apabila kita mendengar kata robot, perhatian kita pasti tertuju pada sebuah
mesin berbentuk mirip manusia lengkap dengan lengan dan kaki seperti yang
biasa digambarkan dalam film-film fiksi. Namun, dalam aplikasi sebenanrya
robot tidaklah terpaku pada bentuk tersebut.
Untuk mefancang robot yang tepat guna, terlebih dahulu kita harus mengenali
ini. Berdasarkan
berikut:
sebagai
kategori
bentukny4 robot dibedakan menjadi beberapa
1.
tufile
Diciptakan tahun 1970-an. Nama turtle dturrbll dari bentuknya yang mirip
rumah kura-kura.
2.
vehicle
Robot jenis ini berbentuk seperti kendaraan beroda dan bergerak seperti
mobil. Perbedaannya dengan mobil adalah kemampuan terprogmm
(p r o gr amm ab I e\dan sensor-
sensomya.
l
,
;
Dasar Robotika
Rover
Bentuk robot ini cenderung pendek dan juga dilengkapi roda seperti jenis
vehicle, contohnya R2-D2 dalam film Star Wars. Robot jenis ini juga
dilengkapi dengan beberapa firngsi seperti kemampuan untuk mendeteksi
Appendage
norot ini b.-pu lengan yang biasanya digunakan unffi mengambil dan
memindahkan barang. Lengan ini dapat terpasang pada robot yang
bergerak atatpadasebuah tempat yang statis.
Gambar l.ZRobotrover
4.
Walker
Robot jenis ini tidak dilengkapi dengan roda seperti jenis vehicle dan
rover, melainkanbergerak dengan menggunakan kaki. Biasanya robot ini
berbentuk mirip serangga dan dilengkapi dcngan cnarn kaki.
6.
Android
Teleoperuted
1.
Dasar Robotrka
Otomatis
'$6ffi:P6
sensomya.
Contohnya seperti yang tampak pada Gambar 1.5, sebuah robot penjejak
garis yang dilengkapi dengan "sungut" untuk mendeteksi posisi garis.
Robot ini akan bergerak secara otomatis berdasarkan perubahan kondisi
sensor sehingga robot akan mengikuti garis.
1.2.1Bagian Mekanik
Bagian ini merupakgn penggerak atau kerangka robot. Kerangka robot akan
didesain sesuai dengan fungsi robot. Kerangka berbentuk lengan adalah untuk
robot yang bersifat statis, dan kerangka robot berkaki untuk robot yang
bergerak di medan yang tidak rata. Sedangkan bagian penggerak yang
bagaikan otot robot biasa menggunakan motor. Beberapa robot bahkan
Dasar Robotika
menggunakan kawat otot (muscle wire), yaifi kawat yang merapat dan
merenggang saat dialiri arus. Kawat ini lebih menyerupai gerakan otot
dibandingkan motor, namun hargxtya yang cukup mahal mernbuat kawat ini
jarang digunakan pada robot.
l.2.l.l MotorDC
Pada sebuah robot, motor DC merupakan bagian penggerak utama. Hampir
semua robot pasti menggunakan motor DC, kecuali beberapa robot yang
Motor DC terdiri atas sebuah magnet permanen dengan dua kutub dan
1.
Arus mengalir dari sisi kiri cincin belah ke sisi kanan. Arus ini akan
Gambar L.8
2.
3.
DC
4.
5.
Kutub magnet yang sama dengan kutub magnet permanen akan saling
pada posisi
ai / t ',/
,/l
/
I r'1 ---1,,
},
(3) Gerakan
terjadi
Cincin Belah
'
\it<at
Arah putaran motor DC dapat diubah dengan mengganti polaritas aliran arus
yang terhubung dengan sikat-sikatnya, sedangkan kecepatan putar motor
tergantung pada seberapa besar arus yang mengalir.
Dasar Robotika
3519 serta torsi meningkat sebesar 35/9. Kemudian, bagian 15 gigi dai gear
transfer 2 terhubung dengan bagian gear transfer 3 yang memiliki 27 gigi
sehingga diperoleh perbandingan 27:15 yang akan menurunkan kecepatan
sebesar 27115 danmeningkatkan torsi sebesar 27115
1.2.1.2
jrya.
Motor Geurbox
Sering kali gerakan-gerakan pada robot membutuhkan torsi yang cukup besar
dan hal
DC saja. Untuk
ini
dengan
gigi
grgr
//2.As Motor
Gear
JU
30
( o L")
\/ \
rrcnnan
o'i;T;:'"
^aar
l.
l.ll)
Gambar
yang terdiri atas I
Worm gear adalah gigi yang berbenflrk ulir yang berfungsi mengubah arah
2.
3.
Transfer gear adalah gigi yang berfungsi untuk konversi antara gigi
dengan jumlah banyak ke jumlah kecil ataupun sebaliknya.
Gear shaft adalah gigi yang terhubung langsung dengan as atau sumbu
motor.
l.ll
Bagian 14 gigi dari gear transfer 3 terhubung dengan gear shaft dengan 30
gigi sehingga diperoleh perbandingan 30:14. Cara untuk menghitung rasio
total dari gir adalah sebagai berikut. Perhitungan rasio dilakukan pada gigi-gigi
yang saling bersinggungan.
3519
x27ll5 x30ll4:
15
Jadi, rasio dari motor gearbox ini adalah l:15 di mana torsi akan naik 15 kali
lipat dan kecepatan turun 15 kali lipat pula.
Motor DC selalu merqiliki dua kaki (sering kali terhubung juga dengan kabel)
dan terhubung dengan kumparan sehingga cara untuk menguji apakah motor
ini masih dapat bekerja dengan baik adalah sebagai berikut.
10
Dasar Robotika
1.2.1.3
11
Motor Servo
1.
2.
J.
Berbeda dengan motor DC, motor servo tidak bergerak kontinu, melainkan
menuju sudut tertenhr saja dan berhenti di sudut tersebut. Motor ini digrrnakan
untuk aplikasi gerakan-gerakan sudut dari robot, contohnya gerakan lengan,
multimeter digital.
1. J*gk*,
Gambar 1.12 Hubungan multimeter dengan motor DC
4.
terbesar.
bagian,yaitu
akan digerakkan.
2.
tersebut biasa digunakan unhrk enkoder, yaitu bagian dari motor yang
digunakan untuk mengetahui posisi motor (akan dijelaskan pada subbab
selanjutrya). Untuk mengetahui kabel kumparan, pilihlah dua kabel
atas beberapa
3.
/
Teffi<f,ancang Bangun Robot
12
4.
Housing servo,
di
Dasar Robotika
13
V+
6.
GND
Konektor, konektor 3 pin yang terdiri atas input tegangan positif (+), input
tegangan negatif (GND), dan input pulsa (sinyal) dengan konfigurasi
Tidak seperti motor DC, pengendalian motor servo harus dilalnrkan dengan
terlebih dahulu melalui rangkaian pengatur sudut di mana rangkaian ini
Obyek
Jangkar----;
Lubang jangkar
,/1.
t
Sekrup
Motor Servo
)ervo : t,
$eruo Spaed
$peed
Acluator Serus
Servo Position
POS
: iI
G0
$ervo $peed
Hand $eruo
Servo Posilion
$eruo $peed
04
Reor Data
DiEconnect
i
lM
I
Griper Servo
$ervo Posilisn
Senro $pead
li** --
0l
01 07 00
Srip Servo
Seffo Posilion
*,,.,...,::
il
Dasar Robotika
Pada Gambar 1.18 tampak empat buah motor gearboxDC terpasang pada
rangkaian yang sekaligus membentuk kerangka robot vehicle. Pada papan
1.
sekrup tempatbaterai.
Kerangka robotvehicle
SepertiJang telah dijelaskan sebelumnya bahwa robot vehicle berbentuk
mirip mobii dengan roda-rodanya. Konstruksi ini merupakan konsffuksi
robot dengan bagian mekanik yang paling sederhana dan perancangan
yang mudah.
Agar memperoleh desain yang ekonomis dan konstrrksi yang tidak terlalu
banyak bJban, desain kerangka robot vehicle sering kali juga menjadi
bagian elektronika robot.
Sekrup
--_-->
1f-------l
--------->
Dasar Robotika
17
m !n
ll
ffi [[
Jl
Baut besar
.--
6 baut kecir
ilil
<-
Karet Ban
Penghubung As
=
Agar diperoleh efek kelembaman yang baik antara roda dan permukaan
lantai, kita membutuhkan ban dengan lapisan karet seperti pada Gambar
1.20. Ban karet tersebut drjepit oleh dua akrilik bundar dan enam buah
mur baut kecil dan sebuah mur baut besar. Mur baut besar berfungsi untuk
mengunci besi penghubung as dengan ban dan akrilik, sedangkan mur
baut kecil berfungsi untuk mengunci akrilik terhadap ban. Akrilik bundar
berfi.nrgsi untuk menjaga agar besi penghubung as selalu berada pada
Sekrup As
Motor Gearbox
V2
besar dan menjepit kedua akrilik pada ban' Besi penghubung as ini
memiliki lubang sebesar 5 mm dan lubang sekrup Gek*p as) yang dapat
menjepit besi ini terhadap as. Dengan adanya sekrup as, roda ini akan
cukup fleksibel sehingga dapat dihubungkan ke berbagai macam ukuran
as (asalkan di bawah 5 mm).
Kerangka robotwalker
Robot walker adalah robot yang bergerak dengan kaki. Konstnrksi yang
a.
Dasar Robotika
19
di
mana
c.
mur-platl'plaA-bau/'
d.
20
Dasar Robotika
Gambar 1.26 Kaki beruas panjang dan kaki beruas pendek tetpasang
e.
b'
Gamlar
21
h.
Lakukan hal yang sama pada pasangan kaki yang lain sehingga
mendapatkan bentuk seperti gambar berikut.
Dasar Robotika
23
j.
Dasar Robotika
ini
mana bagian aktuator dan bagian basis (6ase) menggunakan motor seryo
yang cukup besar torsinya, yaitu GWS S04BB sebesar 13 kg, sedangkan
ketiga motor servo yang lain sebesar 3 kg.
-"*.duhk*
pada bagian ini akan dibahas lengan robot dengan 5 sumbu gerakan, yaitu
putaran basis (base), gerakan aktuator naik-turun, gerakan tangan naikturun, gerakan gripper memuta4 dan geralan gripper menlepit.
Dengan posisi yang berhadapan gerakan kedua motor servo ini harus
dilakukan dengan arah yang berlawanan dengan resultan sudut yang sama.
-..fi
ii
{i
Bila motor servo di sisi kiri bergerak ke arah CW, motor servo dt
Dasar Robotika
27
*-*
stst
Seperti yang telah dibahas sebelumnya bahwa motor DC, motor gearbox,
maupun motor servo membutuhkan listrik untuk mengatur gerakannya. oleh
karena itu, bagian elektronika merupakan salah satu bagian utama dari sebuah
robot. Fungsi-fungsi rangkaian elektronika adalahsebagai berikut.
1'
2.
Elektronika
3.
Mengatur arah arus pada motor DC atau gearbox sehingga arah putaran
motor juga dapat diatur.
Mengatur besar arus yang mengalir pada motor
kecepatan gerak motor dapat diatur.
Mengatur besar pulsa yang masuk ke motor servo sehingga posisi sudut
servo dapat ditentukan.
4.
5.
7.
output
Dasar Robotika
TABEL
l.
Wa
Resistor
29
rna
1.1
r
E*teug pertama.
Ee
hns
*.*,,
:-t
;#;;;:,fl
.:[T;H;,f
Gefeng Kelrrna
{koefisien suhu}
jenis resistor, namun kita hanya akan membahas jenis resistor yang
digunakan pada robot-robot dalam buku ini, yaitu resistor karbon dan
resistor pasang petmukaan (surface mount devicelsMD).
a.
Resistor karbon
104
'l0s
r 2fl%
Kosong
Gelang Pertama
{tul}
Gelang Kedua
1)
Gelang Ketiga
0elang Keempat
3)
4)
*l
Dasar Robotika
adalah jurnlah pengali. Contoh, pada resistor yang tertulis 153, nilai
103
atau 15 kohm.
/4-
104
O:560 kO
b.
p*l l*
*l l*o
l- ,
DII{=t'lSl
Mh{
L
&4C? 10ES
0sfi3 1S$S
"l/
1.0dl.rs u,5d].{15
1.S*fi I
fr
&$r0
[.3*0
B
0 p5+s.0$
il.S5*fi.nS
n 1$-n 1
3*fi.?
n.{$
satu sisi PCB untuk penyolderan membuat desainnya sangat kecil dan
fi.:.[.1
f'l 1l:fl '1
0.4$$
n5
*4$+0",l
n.4&fi.0$
1.3S.1
1.fi*0.1
0 4SrB.?5
3.?t$.?
:"8*{i.?
n.si{I.?
0.5.8.3
0 6rfi.1
$.0*fi.?
?"S*S.?
*.S*il ?
0 B*il.?
0.S*fi.1
?51 3
s33? s3*8 ?
t 1+{l')
fl 7*fl.?
t] 7*$ ?
0.fr*fi
ft.?"ril ?
1?10 3325
3S1
ff,3-8,1
*4+*:
t14-*
0 5S+0.1
0 55-r fi5
hukumKirchoff:
V:IxR
32
V: sumber tegangan
I : arus yang mengalir
R:
33
Dasar Robotika
=IxR2
Vs2
:0,0004 x 20.000
: 8 volt
nilai resistansi
VRI
vR2 :
Fungsi
Vin
ini
vin ,*R2
(Rl + R2)
V Battery = 6Y
=
Gambar 1.43 Membagi tegangan antara VRI dan VR2
Apabila nilai tegangan Vin
formula
5 volt,
Rl
l0 k dan R2 :20
U" dengan
I x Rtotal
:Ix@1+R2)
:Ix(l0k+20k)
t2
akan diperoleh
r_
12
30k
I:0,00044
Tegangan
rT-
atau 400uA
Vout
- 3 :3
VR
R
-"
100mA
J
R
R:3/l00mA:
30 ohm
il
Teknik Rancang Bangun Robot
35
Dasar Robotika
Kapasitor
Fungsi dasar kapasitor adalah menyimpan muatan listrik, dan satuan
kapasitansi yang digunakan adalah farad. Dengan fungsinya sebagai
penyimpan muatan, maka pada aplikasi dalam rangkaian elektronika
fungsi tersebut dapat dikembangkan menjadi filter, waktu iunda (delay),
Nilaiyang diinginkan
c\
Dalam fi.rngsinya sebagai filter, terutama filter frekuensi rendah (low pass
fi.lter), kapasitor diletakkan secara paralel terhadap bagian-bagian yang
akan difilter. Di sana arus listrik yang tidak stabil akan tersimpan di dalam
kapasitor sehingga diperoleh tegangan yang lebih rata. Semakin besar nilai
kapasitor, semakin ratategangan yang diperoleh. Hal ini biasa digunakan
pada adaptor (trtower supply) DC di mana tegangan yang rata sangat
dibutuhkan.
V
a'
-.-\r- .--\,--\
V6a
R
T:0,7 x Rx
Tegangan dengan
capacitor
Dengan
R:
l0 k dan C :
10 uF, maka
0,7x10.000x10x10{
:0,07 detik atau 70 milisekon.
Aplikasi ini biasanya digunakan unhrk rangkaian reset dari IC.
Pada fungsi kapasitor sebagai pembangkit getaran listrik (osilator), efek
pengisian dan pembuangan muatan pada kapasitorlah yang digunakan.
Dengan adanyagroses pengisian dan pembuangan yang berulang-ulang,
tegangan pada
titik
\
I
36
Dasar Robotika
b.
Kapasitor keramik
Kapasitor keramik didesain dengan menggunakan bahan keramik dan
berkisar pada nilai I pF hingga 680 nF.
CV
R
ffi
Gambar 1.47 Proses osilasr
Gambar 1.49 Kapasitor keramik
menghitung nilai resistor SMD, yaitu dua digit pertama adalah nilai
dan digit ketiga adalah faktor pengali. Contoh, 224 adalah 22 x lff pF
atau 220 nF. Namun, sering kali diperoleh kapasitor dengan satu atau
dua digit saja. Pada kapasitor jenis ini, nilai tersebut adalah nilai
Proses
lainJain.
Berikut adalah jenis-jenis kapasitor.
a.
c.
ini
Kapasitor milar
Kapasitor ini biasanya berkisar antara I nF hingga I uF.
Dibandingkan dengan kapasitor keramik, jenis ini lebih tahan
terhadap suhu panas.
Kapasitorelektrolit
fi
38
d.
39
Dasar Robotika
Kapasitor SMD
T|f'#c-athode
Selain nilai kapasitansi, sahr parameter lain yang tak kalah penting
pada kapasitor adalah nilai tegangan. Pastikan kapasitor memiliki
parameter tegangan yang jauh lebih besar daripada tegangan yang
terjadi pada rangkaian. Jenis keramik dan milar biasanya memiliki
tegangan puluhan volt sehingga tidak memerlukan perhatian khusus
bila Anda bekefa pada rangkaian dengan sumber tegangan baterai 6
atat 12 volt. Namun, untuk jenis elektrolit di mana ada banyak yang
memiliki tegangan 16 atau 25 volt, hal ini perlu mendapat perhatian
khusus dan usahakan untuk menggunakan tegangan yang jauh di atas
sumber daya rangkaian.
harus
Diode
Berbeda dengan resistor dan kapasitor, diode termasuk jenis komponen
aktif dengan fi.ngsi utamanya sebagai penyearah. Arus yang bergerak
melalui diode hanya dapat mengalir searah dari bagian positif ke bagian
negatifrrya, sedangkan arah sebaliknya akan terhambat. Hal ini dapat
dianalogikan dengan pinhr putar pada supermarket yang hanya dapat
berputar searah dan tidak dapat berputar ke arah sebaliknya. Seperti pintu
putar, diode juga akan memberikan sedikit hambatan pada arus yang
mengalir dari positif ke negatif (selanjutnya akan disebut arah maju,
40
Dasar Robotika
41
OV
r@iffi
_"-*.-sso*{
t-------+m
ftSmyS**wts
4.
Dasar Robotika
43
a.
b.
c.
masuknya
Bila pada LED biasa cahaya yang dikeluarkan dapat dilihat oleh mata,
paaaLOO inframerah cahayatersebut tidak tampak oleh mata. Cahaya ini
dapat dilihat dengan menggunakan kamera di mana spekfum cahaya yang
ditangkap melebihi jangkauan spektrum mata kita. LED inframerah
jenis
biasanya memiliki wama bening, namun beberapa jenis, terutama
high power infrared, memiliki wama kebiru-biruan seperti pada Gambar
1.57.
Memiliki spekffum yang terbatas sehingga mudah untuk membedakan antan cahaya biasa dan inframerah.
Gambar 1.56LED
a.
b.
c.
Dasar Robotika
d.
5.
Transistor
Transistor adalah komponen semikonduktor yang dapat digunakan untuk
'qt ql
NPN
COLTECTOR
EMITTER
!r:,!!uirlr1l"
:mrtor
mana kolektor dan emitor seakan terhubung srngkat. Sebaliknya,
kondisi arus basis yang semakin kecil hingga aliran arus terhenti akan
di
(negatif pada kolefttor, positif pada basis, dan negatif pada emitor)
mendapat arus positif dari basis ke emitor, maka kolektor akan terhubung
singkat dengan emitor yang negatif sehingga keduanya menjadi negatil
sedangkan transistor PNP (positif pada kolektor, negatif pada basis, dan
ki
emitor, maka
I r,X{L
r,,'
r'
47
Dasar Robotika
Teknik Rancang
Dalamaplikasirobotik,transistorlebihseringdifungsikansebagaisakelar
titik kolektor ke referensi
di mana transistor NpN-"k;;enghubungkan
dari motor ke referensi
negatif (ground) sehingga *ot-ukP mengalir
ke
negatif, sedangkan t
referensi
positif ke motor.
M1
MO'IOR DC
*'"*l
N41
tvOTOR DC
-=
Gambar 1'61 Transistor sebagai sakelar
selanjutnya.
;;
pada motor'
diperoleh aliran arus yang cukup kuat
sehingga
daripada arus basis dan berbanding lurus. Besar nilai arus tersebut
tergantung pada nilai penguatan GIFE) dari masing-masing transistor yang
dapat dilihat pada lehbar data transistor tersebut.
Ic:
Is x
HpE
Agar diperoleh arus yang sesuai pada basis, dibutuhkan Rs atau resistor
yang terhubung seri dengan basis.
Dasar Robotika
49
Nilai resistor di pasaran yang mendekati nominal tersebut adalah 470 ohm
dan 560 ohm, namun untuk memastikan arus yang lewat pada koleklor
betul-betul lA, sebaiknya gunakan nilai yang sedikit lebih kecil. Perlu
dipastikan agar nilai resistor tersebut tidak terlalu kecil karena ann yang
berlebih akan mengakibatkan kerusakan pada transistor.
tvll
Nil)TOR DC
Q1
NPNI
sor-23
\
\
TO-92
TO-126
T0-220
,Jtt. bt"n
-t
"*
Vns
:Vsu1
:
Ie
-0,7
5,3 volt
IC
HFE
a.
l)
atau
20k.
VRB
IB
0,01
arus
4)
100
5,3
6 volt,
'|
Re
: ,ro
6) Pemeriksaan transistor PNP juga bisa menggunakan langkahlangkah di atas, namun gantikan kabel merah dengan kabel
hitam, dan sebaliknya.
Dasar Robotika
51
1)
Pasang multimeter
st
-ti [/ T
,=.lH
atau
20k.
2)
3)
4)
5)
+L
6)
Pemeriksaan transistor PNP juga bisa menggunakan langkahlangkah di atas, namun gantikan kabel merah dengan kabel
hitam, dan sebaliknya.
F-
I nt e gr at e d c ir c uit (lC)
Integrated circuit QC) atau sirkuit terpadu merupakan rangkaian yang
terintegrasi dan terdiri atas puluhan dan bahkan ratusan transistor yang
terintegrasi dalam satu keping kemasan.
Silicon chip
Fototransistor
Seperti halnya pada transistor, fototransistor juga berfungsi sebagai keran
Titik kecil
ja t, kel"ur*
dahulu.
ke IC penguat terlebih
Kaki IC
no 16
\ \
Kaki IC no
Dasar Robotika
Titik kecil menunjukkan nomor urut pefiama dari kaki IC dan selanjutnya
penomoran kaki akan melingkar mengelilingi bentuk IC, berputar
melawan arah jarum jam, sehingga nomor kaki terbesar akan berada di
seberang kaki nomor satu.
Bagian silicon chip atau keping silikon merupakan bagian inti dari IC di
mana kumpulan transistor terdapat di dalamnya. Kawat-kawat tipis akan
menghubungkan kepingan tersebut dengan kaki-kaki IC.
Selain bentuk DIP, IC juga memiliki bentuk pasang permukaan atau SMD
yang ukuannya jauh lebih kecil dan ringkas.
I{ }Fl'
peuyCIlilet.nfl
b. IC power,
Gambar 1.67IC SMD
didesain untuk langsung disolder ke PCB. Oleh karena itu,
biasanya IC jenis ini memiliki dayatahan panas yang lebih daripada IC
DIP. IC SMD memiliki berbagai macam tipe berdasarkan bentukbentuknya. Berikut ini adalah IC SMD yang sering dijumpaidi pasaran.
IC SMD
a.
biasanya
c.
Selain IC-IC yang memiliki fungsi spesifik tersebut, ada juga IC yang
merniliki fungsi yang lebih universal dan bisa diprogram sehingga kita
dapat membentuk berbagai macam rangkaian hanya dengan mengubah isi
cerdas, yairu
Thin quadJlat pack atau TQFP, IC bentuk ini memiliki kaki yang
mengelilingi seluruh tubuhnya dan biasanya berbentuk bujur
sangkar.
c.
d.
e.
50oh dari bentuk DIP dan memiliki urutan kaki yang sama
ini biasa disebut SO-xx di mana xx
b.
FL{.'{
a. IC
Titilt
53
54
-l
Dasar Robotika
55
Sensor
garis , E--f
Sensor
iarak
tl
Gambar 1.70 DU ISP
Dalam aplikasi robot kali ini, mikrokontroler yang kita gunakan adalah
mikrokontroler keluaran Atmel yang pernrogramannya cukup mudah.
Mikrokontroler ini menggunakan teknik in system programming (ISp)
sehingga tidak membutuhkan perangkat programmer yang eksklusif Kita
cukup menggunakan rangkaian yang mengonversi USB ke koneksi serial
-Jr
-lL
atau
compile.
Sensor jarak
Berdasarkan teknik yang digunakan, ada dua jenis sensor jarak pada
aplikasi robotik, yaitu sensor ultrasonik dan sensor inframerah. Sensor
jarak dengan teknik inframerah bekerja dengan memancarkan cahaya
inframerah ke objek dan mengukur kuat lemah pantulannya.
Dasar Robotika
57
Sudut pantul
a.
Phototransistor
Obyek
Sudut pantul
b.
I
I
LED lnframerah
.)
Phototransistor
pengendali motor.
Obyek
sudut yang sama dengan sudut datang sehingga pantulan akan semakin
menyebar dan intensitasnya melemah. Semakin dekat objek dengan
sensor, semakin kuat pantulan yang diterima dan semakin besar pula arus
bagian
fotoransistor).
Selama digunakan pada medan yang tidak dipengaruhi cahaya-cahaya
inframerah (sinar matahari biasanya mengandung cahaya inframerah),
transmitter dan terpancar menuju objek. Pantulan sinyal dari objek akan
diterima oleh ultrasonic receiver dan melalui bagian penguat diterima
kembali oleh otak robot.
\\
58
Dasar Robotika
59
fL
ULTRASON!C
RECEIVER
'i
Unhrk aplikasi-aplikasi khusus di mana sensor digunakan di medanmedan ekstrem seperti di dalam air, kita dapat menggunakan jenis yang
tahan air (w at erpr o o fl seperti EC40 I 8.
yang diperoleh.
S:Vxt
:34399,22xt
Proses penghitungan jarak ini menggunakan penghitungan waktu dan
selain cukup rumit, sering kali juga cukup menyibukkan otak robot. Untuk
mempermudah proses tersebut digunakan modul elektronik khusus untuk
pengukuran jarak, misalnya D-sonar, seperti yang akan dijelaskan pada
subbab Modul Elektronik. Dengan bantuan modul ini otak robot hanya
perlu memerintahkan pengukuran dan mengambil info jarak yang diterima
tanpa perlu melakukan penghitungan lagi.
Sakelar
Sakelar merupakan komponen pemutus dan penghubung arus pada dua
buah kepingan
lftam
tertentu). Fungsi sakelar pada aplikasi robotika adalah sebagai media input
dari operator agar dapat diterima oleh otak robot. Selain itu, sakelar juga
dapat berfungsi sebagai sensor sederhana di mana robot akan berhenti atau
melakukan sesuatu saat sakelar terbentur. Contohnya pada sakelar yang
60
dipasang di bagian depan robot di mana robot akan berhenti dan mundur
saat sakelar tersebut membentur objek. Sakelar ini biasa disebut sakelar
pembatas atart limit switch.
Berdasarkan proses kontaknya, sakelar dapat dibedakan menjadi beberapa
jenis, yaitu
a.
SPST, single pole single throw atau satu kutub dan satu aksi
gerakan, yangartinya sakelar ini akan mengalirkan arus dari satu
kutub dengan satu gerakan saja.
o
b.
DPST, dual pole single throw atau dtn kutub dan satu aksi
gerakan, yang artinya sakelar ini akan mengalirkan arus dari dua
Dasar Robotika
a.
b.
Push button atat sakelar tekan, ada dua macam, yaitu yang
kembali saat dilepas dan yang harus ditekan lagi untuk melepas.
Sakelar pada jenis kedua dapat dimodifikasi menjadi jenis
pertama dengan melepaskan pengaitnya. Untuk sakelar yang
kembali saat dilepas biasanya digunakan untuk sensor atau
tombol start, sedangkan sakelar push button yang harus ditekan
lagi untuk kembali biasa digun akan tntuk power.
c.
SPDT, single pole dual throw atau satu kutub dan dua aksi
gerakan, yang artinya sakelar ini akan mengalirkan arus dari satu
kutub dengan dua jenis gerakan, yaitu ke kontak NC (normally
closeQ dan ke kontak NO (normally open).
d.
DPDT, dual pole dual throw atau dua kutub dan dua aksi
gerakan, yang artinya sakelar ini akan mengalirkan arus dari dua
kutub dengan dua jenis gerakan, yaitu ke kontak NC (normally
Rocker switch, sama seperti sakelar push button, model ini juga
memiliki jenis yang kembali saat dilepas dan tidak. Namun,
kebanyakan tidak kembali saat dilepas sehingga harus ditekan di
sisi sebelahnya. Sakelar ini biasanya dijumpai pada sakelar power
tegangan 220Y dan kerap kali memiliki tambahan lampu sebagai
indikator.
d.
e.
61
beberapa kontak.
+-S*
-*o>o<-ir
DPST
---,o
NOi
-NC!cr!
doo-
|r
MULTIWAY
SWTCH
-'rDPDT
menjadi keypad.
o
b.
h.
mengetahui sedang
62
Dasar Robotika
**tm
Wsffi ilre
&.tffi
ffi
I
r:'
pt,$fi*ullutl
g*fllcl{
SUOIHG
$ffiTEH
0tpslfffcl{
r*en
ISS ...
V
RoCKEft
SHTCH 19666
s!,Jrrc*
s {#
ffim
l(E?pAB
sritxT
*.rl
rp
i:-
---,_*,,1'
**
""t*_",.,,-*.
n
Ll;
l)
push button
2)
3)
4)
5)
6)
7)
8)
9)
push buttonL2;
push buttonRl;
push button R2:push buttonUp;
push button Down;
push buttonLeft;
push button Right;
push button Triangle;
nf
TRtAflS{,&
frcffi,&
"-.lsIT*"...""j:"
.:s}:tr"-.,"j
J0Y$fiCK
13)
3Er-3CT
SELTCI
TACTILE
SWTCtl
ll)
63
f'
,.,,sffr-**,j
64
65
Dasar Robotika
40KHz
tt|Iullllllllll
ll il
llll
llullll!ll ll-|Iillllll-ll
li llll_ll
lilluultill
tubuh robot.
Sinar inframerah yang dipancarkan pada infrared receiver module sangat
berbeda dengan sinar inl?amerah untuk keperluan sensor jarak. Sinar
kali ini
40 kHz
untuk
ll.
Dasar Robotika
66
Untuk frekuensi 433 MHz dapat digunakan modul Rf'M128 dan untuk
frekuensi 2,4 GHz dapat digunakan TRF-2.4G. Pada frekuensi 433 MHz
juga terdapat RF module khusus untuk daya yang lebih besar, yaitu
RFMI2BP.
RF module
RF module merupakan modul komunikasi data menggunakan radio
frekuensi. Dibandingkan dengan inframerah, media ini jauh lebih fleksibel
karena jaraknya cukup jauh dan dapat menembus halangan. Bila pada
inframerah datayang dikirim dimodulasi dengan frekuensi 40Wl4pada
media radio frekuensi data dikirimkan dengan frekuensi yang jauh lebih
tinggi. Frekuensi 433 Mllz dan 2,4 GIIz adalah frekuensi yang biasa
digunakan untuk aplikasi remote control dan merupakan golongan ultra
highfrequency
ffi
ffiffi
(LItf$.
Rf,IIrtBr
TR"F-:.4G
dengan RF module.
Sensor ini berfirngsi untuk mengetahui sudut putar sebuah motor ataupun
menghitung kecepatan motor. Motor servo yang pengaturan sudubrya
ditentukan oleh lebar pulsa PWM sekalipun sering kali mernbutuhkan
sensor ini. Hal ini karena pengaturan lebar pulsa pada motor servo tidak
selalu menunjukkan sudut tertentu. Sumber tegangan motor atau baterai
yang menurun pun bisa menjadi penyebab perubahan sudut, walaupun
pulsa yang dibangkitkan masih memiliki lebar yang sama.
Beban motor yang membutuhkan torsi lebih besar pun juga dapat menjadi
faktor penyebab perubahan sudut tersebut. Dengan adanya rotary encoder,
otak robot dapatlnengetahui apakah gerakan motor telah mencapai sudut
yang diharapkan sehingga bila diperlukan, lebar pulsa akan diatur kembali
agar sudut tersebut diperoleh.
Dasar Robotika
69
Sudut celah
)'
36
Ll
36
i
iL
lr
ffi
motor. Sebagai contoh, pada motor yang memiliki 10 celah enkoder akan
diperoleh perhitungan bahwa setiap celah mewakili sudut sebagai berikut.
70
Sudut celah
Dasar Robotika
71
360
jumlah celah
:36"
Apabila terdeteksi adanya 3 pulsa, akan diperoleh informasi bahwa motor
telah bergerak 36o x 3 108".
a.
Delta DC driver
ECTHflNE
F$r 3 (fiSLLE*TORI
0.100 [2.s4]
FIN 1 HHODE]
Dasar Robotika
73
Q2
8D139
keluarannya
berada pada kondisi logika yang berbeda. Bila logika 0 atau tegangan
0 volt ada di U3B, logika atau tegangan 5 volt pasti berada pada
bersamaan.
untuk
bagian otak robot, yaifi, delta robo CPU melalui konektor delta robo
CPU port deggan konfigurasi sebagai berkut.
t2v
Right encoder
74
Left Encoder
Right enable
motor kanan
motor kanan
Dasar Robotika
75
nonaktif
0 V : motor kanan maju, 5 V
mundur
Right motor
0V
Left enable
V:
motor kiri
V:
motor kiri
nonaktif
0V
Left motor
mundur
VCC
GND
siEdTE
sn$HFit[-
ffn
O"o,*
lil
t:
|
Itl
--
r'ff
MOmn n=
I lp
il il
,*ffi
I _il
lil
lorr*l
t_l
l.9l
b.
E!
GHD
vce
iloT{}n
ai
EII
ET
tDoltrlr
Gambar
IIit(tr1
,-r-E*,
roolt{I
Moron I l*
rxromn I I
Delta DC driver
sroTotr
ENCODf,tr
i
i
Dasar Robotika
76
77
OUTPUT
INFORIiATIOH
ini
karena modul
ini
DEI]Ib.N,OEO XITS
tersebut.
frogrronlnB
ISP
Prrt
TABEL
P.il
Jumlah
EI
Nama Barang
Parameter
volt
Kode
Buzzer
CI,C2
33 pF SMD0805
C3
100 uF/l 6
C4,C8,C9,CIO,CI3
100 nF
026-0339
C5
l0 uF SMD 0805
026-0338
D13,D14
IN400l
035-0001
D15
ZENERsV/lW
035-0009
JP1,IP2,JP12
Konektorputih 2 pin
029-0001
JP5,JPlO
Konektorputih
029-0003
JP5
Header9 pta
03 1-0001
JP6,JP8,JPI1
Konektorputih l0pin
029-0017
JP1
029-0005
014-000s
ttr\
EE-
Ultrrsplc Tiimducs
Pod
t'l
L IE
na
JI,
B*atery Coiltrealqr
026-0030
u6-02(A
pin
78
Parameter
Nama Barang
Jumlah
pin
029-0007
JP9
Konektorputih
Q2s,Q27
T'tP42
027-0126
Q26,Q28
c9014 SOT-23
027-OtO6
Qze
c9012 soT-23
027-OtO3
lOK SMD
026-0174
11
R23,R24,
O8O5
c.
Kode
Dasar Robotika
R2s.R26.R27.R28,R30
3
D-sonar
Modul elektronik D-sonar berfungsi sebagai sensor pengukur jarak
menggunakan metode ultrasonik. Dalam hal ini, seperti yang telah
dijelaskan sebelumnya, proses pengukuran dilakukan dengan
menghitung waktu yang dimulai saat pertama kali sinyal ultrasonik
026-0027
kkarbon
M0,Rl9,R29
UI
AT89S5I-24PC DIP
014-0457
U2
X24CO8 DIP
015-04il
Y2
ll,0592WIz
low profile
029-0032
- aa].**,**
| - l- l*'*'*t t--=l
- irffi|fc.
TMNSMITTER
,
ITE
'i$o,[i,,
Ill
i.I-"
fffi-fl
t.+ 'fl
u=I
ttt*,
EIf!-
E;
rriE
",T
T--r11..
*:;l'"'il;
-
H;fri*
11
)"I",
urJ
O,^r
1.I
,as_*:]-1 L-r.-r
i
1
il@,*,Q
t1orot
--_lug _,
80
Dasar Robottka
81
XTAL:
P1
F1
XTALl
P3-.181fiX0
P3_t/LEO
F3_2I!IO
Fa-3/tNTl
Fa_+TO
F3 5/T1
positif masuk
Gambar 1.98 Sistem echo
Pada mode ini output D-s onarharus dihubungkan pada bagian
di
-"-*"u.ku,
j'
UART
40 KHz
40 KHz
mI]
ill1[
mt
alouT
R2OUT
RltN
f,2IN
-r
Mrcs2
-'t-
VEC
c6
1uF/iEu
+
I
I
1nn
I irionr
I
kllz
c5
lOO6F
Dasar Robotika
B3
vcr
I
E1
1rt
-l i\
01
EcmT
trensmitter SQ40T.
"-r
_+r_l
i
tN41
cr
_i: 22oF
,I+
-f.
ri
gelombang
z:r
I
_/\ ntl-r
ol
IlriIt -j",*"-l
lJ' 'I ,,J'
\rat :
f"t
r'v\/
."^ -f
;!-l
" 2ur"l_l
'-- ':ll"l .
looiF
II
qn41R
,.
]fri'".':if
il
lll
frl
"1
-,
LM3rs
--,
LMrsA
pulsa negatif yang diawali saat trigger dan diakhiri saat sinyal
ultrasonik diterima.
Dasar Robotika
F1_3
XTAL'I
P1_4
F3_Or$(D
P3*14rXD
P1_&
85
Trigger
P1-5
P1*I
Ft_2ll!$1
F3_3ilHT.l
P3_4iT0
P3".]OITl
Burst 40KHz
P3-7
40 KHz
sd tiggs hingga
doul cmmdtr dftsima
loonF I
1,.
op
AmP
Penguat
output
i,,
outputop
pg :i::
1?ot{ i
Amp
q*
11
UUft
lJ lJ
Comparator
lonF
::1::
Pada Gambar
d.
.t"
-1"
J
c?
33pI
:cl:
33pF
KTAL2
P1.g/AII{g
Pl,lrAlNl
pJ_2
XTAL.I
P3 WRXD
P3-14XD
P3*2i!u.Io
r':3mtr
P1_S
Pl_4
F1_5
Pl-b
P1-7
F3_4/lU
86
Receiver
=!----------=-
,".*
'.::.-::.......-.........-.........
J---------=-o
'oo'''
LED
berkisar tegangan vcc (sekitar 5-6 volt), namun saat tombol tersebut
ditekan, tegangan akan berubah menjadi 0 v. IC ATg9c205r akan
lnframerah
Modul
87
Tffill:'----l
t-
Dasar Robotika
hanyi 20mA
robot.
1)
Bagian kanon
10
02
LED INFRARED
e
^la[
11@ft
Pl
21MC
Pi1
:INrl
Pr
Pr
.a*r
irlNr
'-?
ill
,a
;t
13o^.*o
lJo^,*o
))))))))
P4,,*,***
))))))))
re
o1
,s,
A]lM1
l;
Q1
cm14
vcc
1toF
R1
1M
Mftfr
c9q4
88
Dasar Robotika
89
2) Bagian sensor
c1
33pF
Arus kolektor
c2
33pF
rAL2
KAL1
P3 O/RD
P3_1/DE_
P3_z/INIO
P1 O/AINO
P1_t/AtN1
P1 2
P1_3
P1 4
P1 5
P1_6
P1_7
BZl
BUZZER 5V
P3_ytNT1
P3 4rO
P3
5/T1
D-joy controller
D-iylt c?ntroller merupakan modul erektronik yang
menghubungkan
otak.robot dengan joystick, baik melalui kaLel "(UARTt;;r;
VCC
_L
.
BAMRY
Pada bagian
ini
.^q
+l ^
,.I
'L.t'f
Bila data yang diterima sesuai dengan kanon, buzzer akan aktif. Hal
ini dilalarkan dengan mengubah kondisi logika P1.3 pada bagan
sensormenjadi logika I atau naik ke tegangan 5 V.
.L,
/'ii\':'\
(b)
(a)
secara nirkabel
?,-i:!-
Dasar Robotika
Jv
-"-'--"-,"-,moduleyangterhubungdengan
Dengan teknik ini penggunaan KF module
juga menghindarkan
Selain faklor ekonomis, penggunaan teknik ini
terjadinya benturan liekuensibalam hal ini, apabila masing-masing
datl bersamaan dan
ioystick memiliki RF module dan mengirimkan
r-.--l
rilrn
llllllll
-mengingatlebarpitaliekuensiyangdigirnakanadalahsama'benturan
*k"
"
/,J.
n
l.lll
Gambar
llt
r lL lEl l
"fi
ffiE
Mikrokontroler
rc
s9
PS2 Joystick
ll
4
,/l
.^.
Pc
il
It
=t
secara nirkabel.
Dasar Robotika
Modul ini dapat dipasang pada porta UART dari otak robot sehingga
robot dapat menerima perintah-perintah yang dikirimkan oleh PC
secara nirkabel.
Gambar
l.ll5
93
TABEL
Jumlah
Part
Parameter
Kode
C7,Cl
l0 uF SMD 0805
C2
100 nF
C3,C4,C5
10
C6
100 uF
026-0024
DI
LED SMD
021-0045
JPI
Konektorputih 5p
029-0007
JPz
Konektorputih 2p
029-000r
RI
l00k sMD0805
026-0t72
R5,R2
330 SMD0805
02643s2
R3,R4
l0 k sMD0805
026-0174
R6
27 SMD0805
R7
220 SMD0805
02G0176
UI
MB-CM
0t l-0078
U2
LM3ITTO-220
015-0465
SMD 0805
026-0338
026-0339
pF SMD 0805
nirkabel.
akan
94
Dasar Robotika
95
GND
OUT
VCC
';:;r,,
DSF-01v3 pada
Gambar
l.ll7
robot
ini
berfungsi
r"mtuk
96
Dasar Robotika
Cahaya
memantul
pada obyek
terang
Cahaya
terserap pada
obyek gelap
TABEL
Jumlah
Part
Kode
C1
100 nF SMD0805
0264323
DI
LED SMD
021
ISOI
0l 1-0069
Fototransistor TOPS050TB2
01 1-0019
-0045
Selain itu, modul ini juga dapat mengatur lebar garis yang dilewati
dengan memutar posisi kedua modul sesuai lebar garis yang dideteksi.
Keluaran dari sensor ini sudah berupa kondisi logika dan kompatibel
TTL dengan on board pull up resistor 10 k. Deteksi sensor diperoleh
dengan adanya logika 1 pada pin out. Saat cahaya memantul di bidang
putih dan mengenai sensor kanan, kaki sensor kanan pada konektor
akan berlogika I dan sebaliknya, bila cahaya inframerah tidak
memantul karena melalui bidang hitam.
.",*,*,'{
/\
LM317
015-0465
P1
VR 1K
026-0226
RI
I k sMD080s
026-0167
R2
470 SMD8005
026-0178
R3
100 sMD080s
02G0t73
U1
LM324 SOIC-14
015-0M7
h.
""no,*"^n
[[n!!!
Delta Robo
Mechanic
Sensor kanan
Sensor kiri
vcc
GND
99
Dasar Robotika
98
1.3 Bagian Pemrograman Robot
unsigned char i;
robot'
yang membutuhkan bagian otak
Pada aplikasi robot cerdas'
bagian
yang utama' Seperti pada manusia'
pemrograman menSadi bagian
terlebih dahulu
otak robot ini h;.;;;;rima" pelajaran-pelajaran
proses
sebuah robot proses- ini disebut
sebelum dapat digu;;;'-P;"
dua jenis teknik pemrograman
pemrogramur. S"tu-rJ gu'i' U"tut' .ad1
dan
sintaksis (svntox programmins)
nada robot, yri* ;'i;;;';;;
ri,uuf (vi sual P r o gr amming)'
;;*.;ur
l.
r:x^y.
return(i);
)
Pemrogramansintaksis
Teknik p".n ogturn*
void main(void)
melarui
dalambenhrkHEX'
t
unsigned char hasil;
bahasa C'
hasil:fungsi kali(5'6),
Sg**'l
"1",'h
C dapat dinrlis dengan
penulisan
ffi;;;;il
Berikut
a.
y'u.,g p"rlu
"d"hh
Aturan Penulisan bahasa C
penulisan program daram
terdapat
p'og'u*
\I
perintah yang pcrtam" rt"ii
yang terdapat dalam
dan fungsi'
ili"l"t*an
adaiah
lainnya,
sama seperti penulisan program
Prggraf utama dapat
variabel hli.l.akan
Jika program ini dijalankan'
s"tiup kali plogram a'ualantan,'11f3
utama terletak ai auru-1ii'uin;'
menjalankan perintah
dip.ittutit*
ini
tidak'
dilihat pada
dapat
a**tt funs;i
eror. Contoh ptnrg*l--^"'ia
s"a^" gkin unsigned char adalah
orosram utama 'voio'ffi"intvoiit"
di
dalam contoh /isl program
',ir""*oH
ili;ih*.t
dilalarkan'
r["iia,r.'0ffi;;gu;n'
atas.
I'fl:'XT-
mikrokonffoler
vang digunakan dalam .pemograman
program utama'
ini dapat dipanggrl di mana pun ll dalam
jika terdapat
panjang proglam karena
Fungsi ini dapat mengiiattgi
i"uru u.*tang-urang, perintahperintah yang sama
contoh penggunaan
iJ-a'"pr, Ji**utt u, aau* satu tungsi.
Fungsi
dilf;rjrd
;Jffii
i
I
II
TABEL 1'5'
100
TABEL
Tipe Data
(unsigned) char
Variabel
Panjang
Batas
8 bits
-128
l6 bits
unsigned int
Nilai
0 to 255
signed char
to
127
0 to 65535
- 32768 to 32767
l6 bits
(signed) int
101
Dasar Robotika
0 to 65535
- 32768 to 32767
32 bits
to 4294967295
unsigned char a;
- 2147483648 to
int i;
2147483647
32 bits
9 digit panjang
j:250;
floatr-l.25;
Real
double
64 bits
17
digit pa{ang
long double
64 bits
17
digit panjang
\t
d.
Operator
23
tipe integer, sedangkan bilangan pecahan harus menggunakan tipe data real. Untuk bilangan pecahan ini
penulisannya tidak berbeda. Bilangannya juga dapat ditulis
dengan format ekponensial, contohnya 127 .7 8,125 .5 5 e2.
digunakan dalam C.
102
Dasar Robotika
TABEL
Integer
Tipe Data
Panjang
Batas Nilai
(unsigned) char
8 bits
0 to 255
a#,
-128 to 127
a--;
signed char
unsigned short (int)
16 bits
0 to 65535
)
Setiap kali program menjalankan perintah "a#", maka nilai "a" akan
bertambah satu dan demikian juga sebaliknya.
-32768to32767
l6 bits
(signed) int
0 ro 65535
-32768to32767
32 bits
0 to 4294967295
-2147483648to
2t47483647
Real
103
floal
32 bits
9 digit panjang
double
64 bits
17
digitpanjang
char a;
long double
64 bits
l7 digit panjang
char b;
a:a+b;
Penjumlahan,
pengwangan
b:b-a;
b:a*b;
Operator
aritrnetika biner
u=alb;
Operator geser
kiri, kanan
Fao/ob1'
Operator untuk
operasi bit
Operator relasi
Operator logika
Operator
pemberian nilai
pembagian
dai"a/b".
Operator geqgr kiri atau geser kanan berfirngsi untuk menggeser bit
pada sebuah variabel ke kiri atau ke kanan. Untuk lebih jelasnya, lihat
contoh berikut.
void main ( void )
104
Dasar Robotika
105
char a;
a:0x05;
qz<:1.
4 - - 4r
void hitung(void);
)
Pada saat awal nilai a:0x05, dan
a
a
detik:0 ;
unsigned int menit:0 ;
unsigned int
void hitung(void)
>:
detik:0 ;
if(defik
l)
ini
akan menjalankan
2) Pemyataan "else-if',
ini
sama
3) Pemyataan
){
)
else
Perintah-perintah dalam C
Proses untuk program percabangan dalam C dinyatakan dalam
o'else-if ',
pemyataan "if-else",
dan "switch-case".
s9
menit*+'
unhrk'NOT".
e.
untuk
pemyataan ini.
detik++;
)
intmenit:0
void hitung(void)
{.
i(detik>:59 )
{
detik:0
;
;
106
Dasar Robotika
107
menit#;
misalnya
jika nilai sw:l, nilai ans adalah hasiipengriran
gan a-b. Nilai sw ini
h3nVa-.{an 0-3 saja, jika nilai sw 4 atau s]eUm'au.i
O_:, fungsi
)
else
i(detik>:5 9)&&(menit>:5 9)
eror
akan dijalankan.
detik:0
menit:0;
l)
adarah
.khile,,
terus-
suatu
2)
for
nilai
void sum(void);
unsigned int
void select(void)
total:0
void sum(void)
f
I
switch(sw)
unsigned int
i: I ;
case0:ans:a+f;
break
while(i <:100)
casel:ans:a-b;
+: i ;
i++;
total
break;
case2: ans: a*b
break;
)
case3:ans:a/b;
break;
default:enor0;
break'
pemyataan for.
void sum(void);
dari
sampai tO6,
r:r*
tetafi-#;;
trnsigned int
total:0
Dasar Robotika
ini
akan
void sum(void)
terpenuhi.
i;
fo(i:1;i<:100;i++)
unsigred int
total+:i;
)
)
ar.n dengan
Fungsi contoh program di atas sama dengan c9ntoh.grger.
i
akan terus
Nilai
while, tetapi pemyataannya diganti dengan /or'
dijumlah samPai i>100.
Pemrograman visual
Teknikpelffogramaninijauhlebihmudahdibarrdingkandengart
Dengan
sintaksis, tlrutama untuk para pemula'
;;;d;*
;;;;;rr"'Cortof,nya,
ya
mudah'
,lsr,at pemahaman akan dapat dilalokan dengan
unhrk proses
menggerakkan
-.'i"l't'tu"
Benhrk ini dibutuhkan untuk proses lompatan ke suatu label tertenhr dalam
program yang sedang dirancang.
Pemrograman visual tersebut dapat dilalrukan dengan menggunakan Delta
Dasar Robotika
111
Label
ffiiti
%ff
Fungsi:
Parameter:
t/0
P'1.0. pengatur arah motor kiri. 0 = mundur.
,twlt
Datasheet
http:
//ww.
l"usffi
\1
9:
JMf
$i*1ffiffii,ffi**iffi
= malu
= non aktil
t=
Aktifkan F,vM
,ii,
robolindoresia. comZ2FartjcleZ?Fdcdrva.pdl
t'
M%"
15*-
"J
-sr::l
HarEe 1 -B
di
mana decision
ata.u
iump dapat
ini
sekaligus
BAB
II
Robot penjejak garis adalah robot yang bergerak secara otomatis mengikuti
lika-liku garis di permukaan lantai. untuk mengenali pola garis, digunakan
sensor cahaya yang akan mendeteksi terang gelap permukaan yang ada di
bawahnya. Untuk itu, harus diperoleh perbedaan warna yang mencolok antara
wama garis dan wama permukaan lantai.
Sensor cahaya yang pahng sesuai unhrk aplikasi ini adalah sensor inframerah
Rewor:
$*&*kr
si$lt*r:r
\
;l
il
1fi*]
PsmjsftS G4xs*,:*{}*g tntdtl
114
fototransistor
kolektor ke emitor
phototransistor
terbuka sehingga
iI
N.\
L
=\i
r.,
'\i
i.
t_L l_L
I I Ilmrrmrneratr
--rhl
\/
PhoiobensisiorI
VLL
I
I--1
{{
TOFSOSt}ATB
(3)Tegangan di basis
transistor turun mendekati
0 dan transistor off
,'
\,,
LEO
trmmr
vl.-
oN
115
ru
':
l.*
lz
_t
\,
'i,,.
",.
(3)Tegangan di basis
akan naik hingga 0,7 Volt
dan transistor ON
't't6
Pada saat cahaya mengenai objek gelap, cahaya inframerah akan terserap dan
fotofansistor tidak memperoleh bias sehingga berada pada kondisi cut off.
kanan 0 volt. Motor kiri akan bergerak mundur dan motor kanan
bergerak
maju sehingga robot berputar ke kiri.
Arus tidak lagi mengalir ke emitor, melainkan mengalir ke basis transistor dan
tegangan 0 volt.
I
'lg
Dengan rangkaian sensor ini akan diperoleh tegangan 0 volt sebagai indikasi
adanya wama gelap dan tegangan 5 volt sebagai indikasi adanya warna terang.
Dasar proses penjejak garis secara sederhana adalah berbelok ke kiri saat robot
terlalu kanan dari garis dan berbelok ke kanan saat robot terlalu kiri dari garis.
Robot akan bergerak ke kanan saat sensor kanan mengenai garis dan bergerak
ke kiri saat sensor kiri mengenai garis seperti pada Gambar 2.5.
Motor kanan
*r
ND)nu)0iE+
xJxJuJuJ>
YmYd]oo
s#g#99
l:htsErutu
Robot akan berbelok ke
kanan
EEgHEE
ujmg sungut yang fleksibel akan mengenali berbagai macam ukuran garis
dengan mengatur posisi sungut.
Dalam hal ini, delta DC driver yang berfungsi sebagai dual H-bridge driver
akan menggerakkan motor ke arah belakang saat tegangan di kaki left dan
right motor 0 volt, dan menggerakkan motor ke arah depan saat tegangan di
kakt left dan ight motor 5 volt. Sedangkan kakt lefi dan nght enable
dihubungkan ke ground (0 volt) untuk mengaktifl<an motor. Pada Gambar 2.6
kedua kaki lefi dan right motor dti delta DC diver dihubungkan ke sensor
kiri dan sensor kanan robot. Pada saat sensor kiri mendeteksi garis dan sensor
kanan tidak mendeteksi garis, tegangan sensor kiri adalah 5 volt dan sensor
118
Sebaliknya, saat sensor kanan mendeteksi garis dan sensor kiri tidak, tegangan
sensor kanan adalah 5 volt dan sensor kiri 0 volt. Motor kanan akan bergerak
mundur dan motor kiri bergerak maju sehingga robot berputar ke kiri.
r-tB
,or=
119
EPU
EIT--I
IELTIT
HTs
E[l+O
Bm38
n
EDI{O \-r
il Hil
Ir-I
berikut.
III+EM
I-n
7+L502
10 l0 l0 1000 I
28 28 28 21952 21,952
EEI
rE mrr#E
]T-I
IUIIHI
THffiI
rn
[[
[,,_t
o H
HHl]E"*'
22
Maka, akan diperoleh torsi 22 kali lebih kuat dengan kecepatan 22 kali lebih
Htfrl
t-n
lambat.
F-r
tr]olilI
l-n
2.
Pasang delta robo wheelke delta DC driver dan pastikan kelima konektor
masuk di lubangJubang yang ada pada PCB.
J.
4.
5.
6.
1.
rl
120
,W9,
EgEHEAEE3-.3--92
FTFFUU
ULIILE
l+uOOi!r
--Etru{9
7.
123
.-vcc
..-.---GND
RIGHT
MOTOR
LEFT
MOTOR
Pasang kabel dari part A line follower ke delta DC driver. Bagian sisi
konektor 5 pin dihubungkan ke delta DC driver dan bagian sisi konektor
kancing dihubungkan ke part A linefollower seperti pada Gambar 2.13.
fl
11^
tLa
l.
BAB III
garis'
Aktifkan sakelar baterai dan robot akan bergerak mengikuti likaliku
Aplikasi robot kali ini berbeda dari biasanya, yaitu robot target untuk
sasaran tembak. Dengan menambahkan dua modul delta infrared fire &
target pada robot yang kita rancang pada Bab II, aplikasi robot sasaran
tembak ini dapat dibuat. Bila sebelumnya permainan tembak-menembak
sasaran dilakukan di layar televisi dengan Playstation, pada aplikasi robot
kali ini permainan tersebut dapat dilakukan secara lebih realistis di luar
layar televisi.
126
infrared
fire &
3.
4.
127
Robot hanya akan dapat dijalankan kembali dengan cara merestart sistem,
dan
mengaktifkannya kembali.
karena
penginstalan unit.
Tempat Battery
)G,',
/
Delta lR Fire
& Target
1.
2.
Siapkan deha DC driver dan delta robo wheel set seperti pada
langkah t hingga langkah 8 pada robot penjejak garis (Bab II),
keu:ali part A line follower yang tidak harus dipasang dalam aplikasi
ini.
Siapkan modul delta infrared
Delta DC Driver
bahan baku
Nama Barans
Kode
003-002
004-0001
Delta DC driver
Delta robo wheel
Batterv pack
Delta infrared fire & tarset
Black housins 6 pin
Black housins I oin
014-0022
Jumlah
1
1
2
2
022-0043
022-0031
II;
2. I unit delta robo wheel sel berupa motor, gearbox lengkap dengan
rodanya;
128
J.
129
Hubungkan +6V dan GND dari modul ke VCC dan GND pada porta
delta DC driver (Gambar 3.4).
fire &
target di
4.
5.
6.
Keluaran dari delta infrared fire & target ini akan menghasilkan
tegangan 5 volt saat sinar inframerah mengenai bagian sensornya.
7.
fire &
.ft1
I
r[lx
@nil
If;*
ffiM
IId
ll-
rxr:r:oo Ll
......
- -.1
ilnilil"
Gambar 3.5 Penginstalan modul
8.
9.
10. Pasang sakelar push button di antara P3.0 dan GND (Gambar 3.6).
11. Pasang baterai 6 V di inpttpower delta infraredfire
& target.
130
BAB IV
rf,H-8510
,-lll-'
l-''l l-''l
V ,{ i
l-]
mrr?::u
aF'
t
3 E ii l"':':"i:"?f
sl'.sorr/o
Robot soccer sederhana ini adalah aplikasi dasar dari robot soccer yang
bergerak berdasarkan perintah dari operator. Oleh karena itu, robot ini
termasuk
jenis
teleoperated
sebagai
pengendali.
1.
2.
I
.:j
I
{
sedangkan part
menggiring bola yang ada di depan robot.
Agar empat buah sakelar pada D-logo remote dapat mengendalikan delta
DC driver, kita membutuhkan rangkaian yang dapat mengondisikan hasil
penekanan sakelar-sakelar tersebut menjadi kondisi-kondisi input yang
dibutuhkan oleh delta DC driver. Dengan mengacu pada pembahasan
bagian delta DC driver di Bab I, kita memperoleh gerakan-gerakan motor
yang akan terjadi sesuai TABEL 4.1.
qt
132
Right
Enable
Enable
0
0
0
0
0
0
0
0
Left
Motor
Right
Motor
0
0
I
I
Putar kanan
Putar kiri
Mundur
Gerakan
Robot
Maiu
133
TABEL 4.3Daftar
Jumlah
2
4
bahan baku
Nama Barans
Kode
Delta DC driver
Delta robo wheel
Batterv oack
Tactile switch
003-002
004-0001
Konektor 9 oin
I
Input
3
x
x
x
x
x
x
x
0
x
x
0
x
x
x
x
x
x
x
X
x
x
x
0
x
x
x
x
x
0
x
x
x
x
029-0017
Output
030-0057
IC74HCI47
x
x
x
x
x
x
x
x
X
x
x
x
I
X
0
x
x
x
x
x
X
x
x
x
x
x
x
x
x
I
0
I
. S,,
,0
s
0
0
1.
Siapkan delta DC driver dan delta robo wheel sel seperti pada
langkah I hingga langkah 8 pada robot penjejak garis (Bab II),
kecuali part A line follower yang tidak harus dipasang dalam aplikasi
ini.
2.
,.0
t
4.2.
Pada TABEL 4.7 tampak left enable dan right enable selalu berada pada
kondisi yang sama. Hal ini karena pada aplikasi ini kedua motor selalu
aktif bersamaan, perbedaanhanya terletak pada arahnya. Oleh karena itu,
kedua input ini dapat dihubungkan bersama pada rangkaian dalam D-logo
remote.
3.
{l
I
134
135
4.
5.
Aktifkan
sakelar
6.
Latihan
1.
dengan
gerakan robot!
2.
BAB V
ROBOT SOCCER
DENGAN REMOTE CONTROL INFRAMERAH
Tempat Battery
+\
l-
Delta DC Driver
Part F O-Logo
:':'Il
N
ri,"i' I I
' ;*t* Il
138
(PIN_INFRA:-- I ) ;
for(i:0;i<7;i++) //receive infra command (7bit)
I
I
whi
deltaDCdriver.untutitu,kitaakanmembutuhkankomponencerdas
Seperti yang telah
mikrokontrot", yung i.rdapat dalam delta robo CPU'
Iij"r"rt"" pada-bafian dilta robo CpU di Bab I, modul ini merupakan
dan
otut ,oUoi yurrg ukun menerima respons dari sensor-sensornya
respons
sesuai
memerintahkan detta DC driver untuk bergerak
.dengan
Dalam hal ini, te"ot yang digunakan adalah
Vung ait"ri-a dari sensor.
sinyal-sinyal
infrared receiver modul TSOP4838 yang mengUbah
le
TCNTI:0;
while(PIN_INFRA::0);
if(TCNT I > 1 200) infra_cmdl:0x80;
while(PIN_INFRA::l);
infra_cmd>>:l;
I
TSSOP
/I
AgardeltaroboCP(]dapatberfungsi,terlebihdahulumikrokontrolerhal
yang dalam
yang adadiisi dengan p.oitu- aplikisi yang diinginkan'
ada pada
ini adalah progru^ ,i*ite con-trol inframerah seperti yang
proses unduh
listing berikut. Penjelasan lebih mendetail mengenai
progtu- telah disampaikan di subbab 1'3'
Listing
/Disain by Januar Susanto
#include <avrlio.h>
yg terhubung ke
#define RMT_IN PORTC.T //pin micro
139
TCNTl:O;
while(PIN_INFRA::0);
if(TCNT I > 1 200) infra_address l:0x80;
while(PIN_INFRA::1);
infra address>>:I.
)
infra_cmd&:0x7F;
reading
infra_address>>:2. llfrx
TCCRIB:Ox00;
l*
sony
void ambil remote0 //prosedur mengambil data remote
f
I
unsigned char i;
@8Mhz crystal
TCNTl:O;
while(PIN-INFRA::0)'
if(TCNT1>2400)
{
void main(void)
1;
infra-cmd:0;
infra-address:0;
infra_address&:0x I F;
1'000'000 Khz
I[\
unsigned char temp,count;
while(1)
{
i
temp:ambilremote0;
if(temP>:0x80)
Sbit
PORTD.T:O;
count:200;
switch (temp)
{
case
PORTB.0: 1 ;PORTB.
case
0x90
: 1 ;PORTB.2: ;PORTB.3:0;
break;//belok kiri > Prog +
1
atas.
0x91
Tunggu inframerah
0x93
case
:0;PORTB.2:0;PORTB' 3:0;
break;//mundur > vol +
0xA5
case
PORTB.0:1 ;PORTB. 1: I ;PORTB.2:1 ;PORTB'3: 1 ;
break;//stop > TV/Vid
0xFC
case
PORTB.0: 1 ;PORTB. i :0;PORTB.2:O;PORTB.3:0;
break;llputar kiri > select
PORTB.0:0;PORTB.
ini
case
Jalankan perintah
0x97
)
if(count :: 0)PORTD.1
else count--;
:l;
Jumlah
1
Nama Barang
Delta DC driver
Delta robo wheel
Battery pack
cukup
Re m o te-contro
Part F D-loso
bahan baku
Kode
003-002
004-0001
003-0001
001-0057
I televisi
001-0060
1.
2.
Siapkan delta DC driver dan delta robo wheel sel seperti pada
tangtatr t hingga langkah 8 pada robot penjejak garis (Bab II)'
keJitra;d part Alne fotliwer yaigtidak harus dipasang dalam aplikasi
ini.
Siapkan delta robo CPU danhubungkan ke konektor 9 pinpada delta
DC driver.
143
3.
4.
Kuning
]--.=.-oun,nn
Merah
Hitam
5.
Aktifkan
8.
Ambil remote control televisi dan pasang spacer dengan dua lubang
di depan LED inframerahnYa.
pada
Arahkan LED inframerah ke sensor part c infrared receiver
tombol-tombol
robot dan gerakkan robot dengan menggunakan
sakelar
l.
2.
3.
t_,
1t
\-
1r-
Maju = Vol+
_l_I
Mundur = Vol'
t__l
Stop = TV/Video
t-+
CPr
berikut.
6.
7.
g.
Latihan
konektor
Hubungkan konektor 3 pin dari part c infrared receiver ke
3 pin infrared receiver port dati delta robo CPU'
*l
BAB VI
149
I
I
I
IIII
I
lL
ry
Robot berputar ke
kanan
menghindari
halangan
L+
Robot
maiu
seOit<it
;<z
/----,. '
. --
Robot berputar ke
kiri dan ternyata
masih terhalang
saat maju
sehingga berputar
Robot
maju
sedikit
t
L---
/<4
Robot terlepas
dari halangan
dan bergerak
maju
lagi ke kanan
,I
Listing
iDisain by Januar Susanto
#include<avr\io.h>
#defineMOTbR-KANAN
#define KANAN NYALA
#define SEL{S_KIRI
#define
SENS*KANAN
unsigned char i;
PORTB.2
PORTB.3
PORTB.4
PORTB.5
I */
150
151
if(i::1)
{
KIRI-NYALA:O ;KANAN-NYALA:O ;
MOTOR-KIRI:O ;MOTOR-KANAN:0 ;
if((sENS_KrRr::0) (SENS_KANAN::0)
tt
||
mundur0;
delay(1000);
kanan0;
delay(1000);
KIRI_NYALA:O ;KANAN_NYALA:O ;
MOTOR_KIRI: 1 ;MOTOR-KANAN: I ;
i:l
kiri0;
delay(500);
i:0;
(
1
KIRI-NYALA:O ;KANAN-NYALA:O
MOTOR-KIRI:0 ;MOTOR-KANAN:
if(i::0)
1;
if(SENS_KIRI=:O) l(SENS_KANAN::0))
{
mundur0;
delay(1000);
kanan0;
delay(1000);
KIRI_NYALA:O ;KANAN-NYALA:O ;
MOTOR-KIRI: 1 ;MOTOR-KANAN:0 ;
i:l
KIRI_NYALA: I ;KANAN_NYALA:
\t
l* mainprogram
void main(void)
{
berhenti0;
SENS_KIRI:1;
SENS_KANAN:I;
maju0;
i:0;
while(1)
r,l
)
)
maju0;
di
152
berikut, jika robot terkena halangan, robot berputar ke kanan, terus maju.
dan variabel "i" diberi nilai 1 untuk menandakan robot sudah pernah
terkena halangan. Jika pada saat maju, setelah terkena halangan, sensor
tidak terhalang, robot berputar ke kiri, kemudian maju lagi, variabel "i"
diberi nilai 0 untuk menandakan robot tidak terkena halangan' Jika
sebaliknya, robot berputar ke kanan dan variabel "i" tetap diberi nilai l,
artinya masih ada penghalang di depan robot dan robot berputar ke
kanan, terus maju sampai tidak terkena halangan.
1.
Siapkan delta DC driver dan delta robo wheel sel seperti pada
langkah t hingga langkah 8 pada robot penjejak garis (Bab II).
2.
DC driver.
3.
4.
di bagian
depan
PA3
(Gambar 6.4).
5.
'153
Latihan
1.
2.
Coba buat program di mana robot berbelok ke kanan dan lurus setiap
menemui halangan!
kiri
saat
BAB VII
ROBOT PENGHINDAR HALANGAN
DENGAN ULTRASONIK
saat
D{onar
,.----Delta
Robo CPU
empat Battery
156
1 ;
TCCR0:0x00;
USI:O;
TCNTI:O;
USO:I;
while(!USO);
TCCR0:0x02;
while(USO);
TCCR0:0x00;
157
Listing
/Disain by Januar Susanto
#include <avrlio.h>
mel:a;
me2:b;
md1:c;
md2:d;
)
unsigned char i;
void main0
{
USO:O;
bit x;
while(l)
{
cekjarakQ;
if(TCNT0<2000)
t
{
I maju
if(TCNT0>2000)
oo*TD.7:l;
perjalanan(0,0,1,1);l
while(--tunda):
l;
1.000.000 l{hz
@8Mhz
TCCR0:0x02; llt:um on timer 0; 1.000.000 Khz @8Mhz
TCNTI:O;
*{
PORTD.T:O;
perjalanan(0,0,0,0); // mundur
for(i:O; i< 1 00;i++)delay(6000) ;
PORTD.T:1;
perj alanan(0,0,x,-x) ;l I belok kanan / kiri
159
for(i:0;i<
00 ;i++)delaY(3 000) ;
x:.'x;
delay(1500);
)
pengecekanjarak menggunakan D-sonar dilakukan dalam prosedur "cek
jarak". Hal yang pertama dilakukan adalah sebagai berikut.
1. Aktifkantimer.
2. Bei trigger ke D-sonar untuk melakukan pengukuran
jarak dengan
3.
4.
Bandingkan dengan nilai timer. Jlka timer < D-sonar, robot bergerak
maju. Jika sebaliknya, robot bergerak mundur.
1.
2.
Siapkan delta DC driver dan delta robo wheel sel seperti pada
langkah t hingga langkah 8 pada robot penjejak garis (Bab II),
keclurali part A line follower.
6.
DC driver.
3.
4.
5.
port
dari delta
Latihan
i
I
l.
2.
I
I
kiri
saat
160
BAB VIII
ROBOT BERKAKI ENAM YANG DIKENDALIKAN
REMOTE CONTROL INFRAMERAH
Pada aplikasi kali ini kita menggunakan robot jenis walker, yaitu robot
yang bergerak bukan dengan roda, melainkan dengan kaki. Robot beroda
memang lebih sesuai untuk medan-medan halus dan rata. Untuk medan
yang tidak rata robot berkaki lebih sesuai dan lebih leluasa bergerak
dibandingkan robot beroda. Gambar 8.1 merupakan robot berkaki enam
sederhana yang bergerak dengan mengubah putaran motor menjadi
langkah kaki, baik maju untuk putaran motor ke arah depan maupun
mundur untuk putaran motor ke arah belakang.
Tungkai depan
162
bagian
robot berputar ke
kiri
lnframerah
163
1.
2.
dan
J.
DC driver.
164
lnframerah
Pasang konektor baterai dan part C infrared receiver pada delta robo
CPU.
5,
Hubungkan konektor
merrgenai konfigurasinya
7.
165
166
BAB IX
ROBOT CERDAS PENJEJAK GARIS
Fungsi-fungsi tersebut
di
derivative (PID) yang mengatur agar gerakan robot lebih halus dan fungsi
untuk mengikuti garis yang terputus-putus. Untuk fungsi PID, aplikasi
penjejak garis ini menggunakan lebih dari dua sensor. Di sini digunakan
empat buah DSF-01 Vl, yaitu modul single line follower yang telah
dibahas di Bab I. Empat buah modul ini diletakkan berjajar di bagian
depan seperti yang tampak pada Gambar 9.1.
168
DSF-01 (1)
DSF-01
(3)
DSF-01 (4)
169
OCO,
Keterangan gambar:
1.
2.
follower-}L, .
3. Buzzer,
*."**4. *Jqda..*rtSR,".rrntuLmikrokontroler),
-.-ke.--otaL".robot. {cisree
til
5.
6.
Listing
#include<avrlio.h>
#include<utiVdelay.h>
7.
10. Porta
11. Porta
#definelEFT ENABLE
2
4
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define LEFT_MOTOR
pada line
follower,
12. Project board area,bagianuntuk menyolder rangkaian tambahan bila
diperlukan, dan
RIGHT_MOTOR
RIGHT ENABLE
SENI
SEN2
SEN3
SEN4
32
64
t28
MOTOR_DDR
MOTOR_PORT
MOTOR_PIN PINB
DDRB
PORTB
LEFT_MOTOR_OUT
MOTOR DDRI:LEFT MOTOR
#define LEFT_MOTOR_IN
MOTOR-DDR&:-LEFT-MOTOR
#defi ne LEFT_MOTOR_HIGH
MOTOR_PORT FLEFT_MOTOR
#define LEFT_MOTOR_LOW
MOTOR_PORT&:-LEFT_MOTOR
#define LEFT_MOTOR_PIN
(MOTOR_PIN&LEFT_MOTOR)>>>6
#define RIGHT_MOTOR_OUT
MOTOR_DDRI :RTGHT_MOTOR
#define RIGHT_MOTOR_IN
MOTOR-DDR&:-RIGHT-MOTOR
#define RIGHT_MOTOR*HIGH
MOTOR_PORT :RTGHT_MOTOR
#define RIGHT_MOTOR_LOW
MOTOR-PORT&:-RIGHT-MOTOR
#define RIGHT_MOTOR_PIN
(MOTOR_PIN&RIGHT_MOTOR>>>6
#define LEFT_ENABLE*OUT
MOTOR_DDRI :LEFT_ENABLE
|
16
172
#define LEFT_ENABLE_IN
unsigned char i;
MOTOR_DDR&:-LEFT_ENABLE
#define LEFT_ENABLE_HIGH
MOTOR_PORT :LEFT_ENABLE
#defineLEFT_ENABLE LOW
MOTOR_PORT&-LEFT_ENABLE
#define LEFT_ENABLE_PIN
(MOTOR_PIN&LEFT_ENABLE)>>>6
#define RIGHT_ENABLE_OUT
MOTOR-DDRFRIGHT-ENABLE
#defi ne RIGHT_ENABLE_IN
MOTOR_DDR&-RIGHT_ENABLE
#defi ne RIGHT_ENABLE_HIGH
MOTOR_PORTI :RTGHT_ENABLE
#define RIGHT_ENABLE_LOW
MOTOR_PORT&:-RIGHT_ENABLE
#defi ne RIGHT_ENABLE_PIN
(MOTOR_PIN&RIGHT_ENABLE)>>>6
#define SENI_OUT
MOTOR_DDRFSENl
MOTOR_DDR&-SENI
#define SENI_IN
MOTOR_PORTFSENl
#define SENI_HIGH
MOTOR_PORT&:-SENI
#define SEN1 LOW
(MOTOR_PIN&SENI)>>>6
#define SENI_PIN
#define SEN2_OUT
MOTOR_DDRFSEN2
#define SEN2 IN
MOTOR*DDR&:-SEN2
MOTOR-PORt;:581.12
#define SEN2_HIGH
MOTOR_PORT&-SEN2
#define SEN2 LOW
(MOTOR_PIN&SEN2)>>>6
#define SEN2_PIN
void Mundur(void)
f
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
SEN3_OUT
SEN3_IN
SEN3_HIGH
SEN3 LOW
SEN3_PIN
SEN4_OUT
SEN4_IN
SEN4_HIGH
SEN4 LOW
SEN4 PIN
II
void Maju(void)
{
LEFT-ENABLE-LOW;RIGHT_ENABLE LoW;
LEFT_MOTOR_HIGH ;RIGHT_MOTOR_HIGH;
)
void Kiri(void)
(
I
LEFT-ENABLE LOW;RIGHT-ENABLE-LOW;
LEFT_MOTOR_LOW; RIGHT_MOTOR_HIGH
)
void Kanan(void)
LEFT-ENABLE LOW;RIGHT_ENABLE_LOW;
LEFT_MOTOR_HIGH;RIGHT_MOTOR_LOW;
)void Berhenti(void)
{
MOTOR-DDR;:58*,
MOTOR_PORTFSEN4
MOTOR_PORT&:-SEN4
(MOTOR_PIN&SEN4)>>>6
LEFT_ENABLE-HIGH;RIGHT_ENABLE LoW;
MOTOR_DDR&=-SEN3
MOTOR-PORt;:58113
MOTOR_PORT&:-SEN3
(MOTOR_PIN&SEN3)>>>6
MOTOR_DDRI:SEN4
MOTOR_DDR&-SEN4
LEFT_ENABLE_LOW;RIGHT_ENABLE_LOW;
LEFT_MOTOR_LOW; RIGHT_MOTOR_LOW;
,lrl
il
pid->sumEr6or : 0;
pid->lastProcessValue
: 0;
: p_factor;
pid->I Factor : i_factor;
pid->D_Factor: d ctor;
pid->P_Factor
\t
intl6-t pid-Controller(int16-t
*Pid-st)
struct PID-DATA
return((int 1 6_t)ret)
\t
p_term: MAX-INT;
)
175
pid st->sumError:
0;
else
void main(void)
else {
Berhenti0;
pid_lnit(l,l,l);
while(1)
pid_st->sumError + error;
if(temp > pid-st->maxSumError) {
temp
i_term: MAX-I-TERM;
pid-st->sumError : pid st->maxSumError;
if((sEN
pid-st->sumError
)
else{
pid_st->sumError
:
l_term
i(x>0)
temP;
pid-st->I-Factor * pid-st->sumError;
I
;l
Berhenti0;
II
Kiri0;
st
(pid-st->lastProcessValue
processValue);
pid-st->lastProcessValus
)
processValue;
(p-term
*i
)&&(SE
d-term : pid-st->D-Factor *
-pid-st->maxSumError;
ret
:: l )&&(SEN2::0)&&(SENS3::
i_term: -MAX-I-TERM;
NS4::1))
NS4::l))
176
No
Ref
Nama
Jumoer
Keterangan
Tata Letak
Berfungsi untuk
llMtndur0;
JP3
Berhenti0;
Kanan0;
XTAL Select
memilih kristal
11.0592 atau 8 MHz
)
J
)
if((sEN
::
)&&(SEN2::
))
{Maju0; }
JPI4
USB Power
Enable
Untuk mode
pemrograman dengan
power dari USB PC
(motor tidak boleh
dalam keadaan aktifl
3.
4.
berikut.
Nama
Ref
.Iamner
TP4
Reset Select
Keterangan
Memilih AT89S51
atau ATMega85l5
Tata Letak
los leseu
tdt
JP8
P-g
.,Juryr
pengisia*prograrn
I
fI t-[ [f l
",*
Jum'er
7.
179
Search dan sistem akan mengarah pada driver yang sudah terbentuk
saat penginstalan AVR Studio.
S.BukaprogramAVRStudio4danpilihAutoConnectpadabagian
Tools > Program AVR.
Ith Smh( gldn $*
AvRPng...
ffiq
!U:grdc'.
ms:em.B.JtAGlC
nB Uggad{'.
ABP*E: UBflT'*..
A?ffiP el.[ Up{rid{
AvB
&4sn u?qr*c(
srwur::d.
tuiEffir..'
gsthe,.,
sh6s
(s
ai${n
e.*t
l. Pilih
12.
1.
Klik Program untuk mengunduh fail hex tersebut ke delta robo kits.
t3. Fail hex yang diunduh adalah hasil kompilasi dari listing di
atas.
15.
lebih besar
180
Latihan
1.
Coba tambahkan dua modul DSF-01 lagi pada robot dan modifikasi
program agar gerakannya lebih halus!
2.
Coba jalankan robot pada warna garis yang berbeda dan putar
variabel resistor pada DSF-01 untuk mengatur sensitivitasnya!
BAB X
ROBOT DENGAN GERAKAN YANG
TERPROGRAM OLEH PARAMETER
operator atau perubahan kondisi sensor. Namun, pada aplikasi ini robot
bergerak berdasarkan ingatan yang ditanamkan terlebih dahulu ke salah
satu bagian otak yang berfungsi sebagai media ingatan, yaitu memori.
Proses ini berbeda dengan pemrograman robot. Bila proses pelmograman
robot dianalogikan sebagai menanamkan atau mengajarkan sesuatu pada
seseorang, proses unduh parameter ini dapat dianalogikan sebagai
kegiatan memberikan perintah-perintah pada seseorang untuk diingat dan
dilaksanakan.
182
Parameter
183
Listing
#include<avrlio.h>
#include"moving.h"
#include"delay.h"
#include"i2c.h"
Gambar
10.1.
#define
#define
HEADER
ID 0x0E
0x1E
1.
2.
3.
CPU,
4.
enkoder,
5.
6.
limit switch,
7.
8.
kabel RS232.
#define
START
PORTD.0
#define PROGPORTD.l
extem unsigned char rmt data,rmt_nom;
ser buff[5 0], ser*index,ser_fl ag,stx,ptx;
unsigned char i,command index;
unsigned int interval,duration;
unsigned char count;
unsi gned char
motor driver,
motor dan mekanik roda,
void program(void);
void start(void);
void eep_write(unsigned int eep_addr,unsigned char dat)
(
pagr0;
page:eep_addrl256;
page<<:l;
pagel:0xA0;
12C_s1art0;
I2C_addr(page);
while( ! I2C_check_ack0) ;
12 C_write_byte(e ep_addr)
while( ! I2C_check_ack0);
184
I2C_write_byte(dat);
while( ! I2C_check_ack0)
status:UCSRA;
data:UDR;
retum(data);
12C_stop0;
delay_5ms(2);
ISR(USART*RXC_vect)
status:UCSRA;
ser buff[ser_index]:gPP'
ser-index+*;
page:0;
page:eep_addr/256;
page<<:l;
pagel:0xA0;
I2C start0;
if(ser_index>5
12C_write_byte(page) ;
while( ! I2C_check_ack0) ;
12C_write_byte(eep_addr)
while( ! I2C_check_ack0) ;
C_write_byte(page
ser_index:O
::NOM))
stx:l;
ser_index:3;
)
if((stx:: )&&(ser_index::6))
1
l:0*A
);
while(! I2C_check_ack0);
return (I2C_read_byte0) ;
I2C_ack(l);
f((stx::
12C_stop0;
&&(ser_index::ptx))
ser_flag:l;
void start(void)
UDR:data;
t
unsigned char data, status;
while(!(UCSRA&(l<<RXC\));
data
0)
I2C_start0;
12
'185
ll
duration:eep_read(i*5+3);
duration<<:8;
durationl:eep_read(i * 5 +4) ;
ser_buff[0]:eep_read(i * 5 ) ;
ser_buff[ 1 ]:eep_read(i*5+ I );
1;
186
interval:O;
1gT
ser_flag:0;
stx:0;
ptx:0;
counFl;
while(duration<interval)
t
ser_index:0;
interval:0;
count:1;
i((ser_buff[0]>0x80)&&(ser_buff[ I ]>0x80))maju0 ;
if((ser_buff[0]<0x8 0)&&(ser_buff[ 1 ]<0x80))mundur0;
)
)
void main(void)
count:0;
)
void program(void)
{
while(l)
{
parameter
if(srART::o)
{
delay_5ms(1);
while(START::O);
start0;
tt
if(ser_flag::1)
t
// USART initialization
// Communication Parameters: 8 Data, I Stop, No parity
// USART Receiver: On
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA:0x00'
UCSRB:0x98;
UCSRC:0x86;
UBRRH:0x00;
UBRRL:0x5F;
command index:O;
while(l)
{
if(START::O)
{
delay_5ms(l);
4);
while(START::O);
count:0;
start0;
3l);
)
a,
2l);
eep_write((command_index
)+3,interval>>8
eep_write((command index*5)+4,interval);
command index++;
5
if(PRoG::0)
delay_5ms(l);
whiIe(PROG::O);
program0;
);
Parameter
189
i
I
Program utama pada listing di atas hanyalah untuk mengecek tombol start
atau-program. Jika tombol start ditekan, program akan masuk ke prosedur
start. Pada prosedur start, CPU akan membaca isi memori EEPROM yang
telah diprogram terlebih dahulu, kemudian menjalankan perintah-perintah
yang telah dibaca dari EEPROM tersebut.
adalah
-.-oii
hanya
1.
2.
3.
4.
5.
Tombol Putar
kanan ke depan,
'190
Parameter
191
6.
7.
parameter
&
8.
Part C lnfrared
robo war,
9.
10.
l.
2.
3.
4.
Pasang
5.
6.
4 pin
8.
9.
10. Atur Baud rate pada 600 bps, Parity None, dan Stop bits
bagian
l.
192
BAB XI
ROBOT YANG DIKENDALIKAN
DENGAN BLUETOOTH
robot, tekan
Bluetooth adalah suatu teknologi nirkabel dengan lebar pita frekuensi 2,4
GHz dan biasa digunakan oleh perangkat-perangkat elektronik untuk
saling berhubungan dalam jarak dekat. Komunikasi ini cukup aman
12.
Klik header
robot.
di
mS.
Latihan
1.
meter ke depan
dan
2.
Coba atur robot agar berputar 180 derajat dan perhitungkan berapa
delay yang dibutuhkan!
illllIlll
Gambar 11.1 Komunikasi Bluetooth
t
195
pada Bab
IX,
2.
daya.
AT89S5l.
Pada aplikasi kali ini pemrograman robot akan kita lakukan dengan
perangkat lunak pemrograman visual, yaitu Delta Robo Studio di mana
pendesainan program tidak dilakukan dengan menuliskan instruksiinstruksi, namun dengan menggunakan gambar-gambar dan pengaturan
parameter seperti yang telah dijelaskan pada subbab 1.3.
I
I
2
bahan baku
Nama Barang
Delta robo kits
Kode
010-0144
Pasang spacer penyangga agar robot tidak berlari saat diberi sumber
J.
4.
5.
6.
7.
Klik Add
Command dan
001-0034
1.
untuk
'Kecepatan [0-8J.
D[
Konfigurasi l./0:
- Pl.0, pengatur arah motor kiri. 0 = mundur. 'l = maiu
- P1 .1. pengatur aktivasi motor kiri, 0 = aktif, 1 = non aktil
- Pl.2, pengatur ardh motDr kdnan. 0 = mundur. I = maiu
pada
How to Buy
Datasheet
:i
It--.-.,.,1
t"n""t
AktifkanH#M
]il
Hange
tl"
Gambar 11.3 Node Editor Aktifkan PWM pada Delta Robo Studio
8.
Arahkan mouse ke bawah, klik Add Command dan pilih UART aktif
digunakan adalah 253 untuk baud rate 9600 (untuk informasi yang
lebih mendetail perhitungannya, baca artikel serial port di bagian
Teori Dasar di www.delta-electronic.com/article).
't96
197
ffiw.
ini akan melakukan inisialisasi LIAFT dan dilakukan sebelum
dari mikrokonkoler digunakan.
.ffi
How to Buy
0atasheat
lrUaffi
ron*.ngffi
Gambar 11.5 Diagram alir yang dibentuk Delta Robo Studio
ill'l'ritl'lt!tltltlll.t.t.tl."],.,,,r'i!t!t!t!trltllll,l.l..!...".t.t.t.-
BrudRate
|253
Fange0'?55
14.
Decision
Arahkan mouse ke bagian bawah lagi, klik Add Command dan pilih
Decision.
10.
modul
Bluetooth. Isi Data Bluetooth dengan data "F" di mana data "F" dari
Bluetooth merupakan pernyataan Yes dari Decision ini.
11. Arahkan mouse ke bagian samping Decision,
dan
pilih Decision.
12.
dan
pilih
15. Tambahkan perintah robot gerak maju untuk pernyataan Yes pada
9.
13. Lakukan hal yang sama di bagian samping Decision untuk data "I"
dan "S" di mana "I" untuk belok kanan dan "S" unfuk berhenti
sehingga tampak seperti pada Gambar I 1.5.
Decision "I",
198
199
,l
frffi*
ms@
TT-sdis-l
I
Delay
Lom@l^
"*n/M
Iihe
rrq J
rryql
1i000
+
@
fu:fu
'k
*-*\-/*",.,*,**"ffi*\i-**\"ry
ffi.ffiffire
Gambar 11.6 Hasil akhir diagram alir
20. Lepaskafl spacer penyangga dan kabel USB ,lelta robo kits.
21. Pastikan komputer Anda sudah memiliki fungsi Bluetooth.
22. Btka perangkat lunak Bluetooth Controller.
23. Pilih Baud Rate 9600 dan Com sesuai dengan Bluetooth yang
terdeteksi.
Latihan
1.
2.
200
BAB
XII
juga fungsi untuk mengikuti garis. Fungsi ini dilakukan saat robot
menemui lintasan garis, operator dapat mengaktifkan fungsi penjejak
garis sehingga robot akan bergerak mengikuti lintasan tersebut sampai
operator kembali mengambil alih fungsi.
fl
Lvl
ono
]-
203
Pada diagram alir di Gambar 12.1 saat robot tidak mendeteksi adanya
halangan, robot akan bergerak sesuai kondisi perintah terakhir hingga
perintah dari remote contr"ol diterima. Saat perintah dari remote control
diterima, robot akan menganalisis perintah dan bergerak sesuai dengan
perintah tersebut. Apabila tombol penjejak garis ditekan (tombol power
",o*,
di
operator menekan lagi tornbol remote untuk mengambil alih fungsi. Hal
ini dilakukan apabila ada sesuatu hal yang menyebabkan robot bergerak
tidak sesuai dengan garis dan operator dapat membetulkan gerakannya.
Listing
i* Disain by Januar Susanto
#include<atS9x5l.h> llheader file I/O mcs5l
i
a
Remote Kiri
;+
ke DSONAR
*/
KIRI NYALA
Pl 1
MOTOR_KANAN Pl2
#defineKANAN_NYALA Pl_3
#define
#define
_".;1
#define SENSl
#define SENS2
P1_4
P
#define RMT_IN
P27
1_5
TSSOP
,t.
t
unsigned char i;
unsigned char count;
Adud
rmote?^
KIRI_NYALA:0 KANAN_NYALA=O ;
MOTOR KIRI:0;MOTOR KANAN:O;
r.l
ke
Conhol
2Os
TLO:O;
USO:I;
while(!USO);
TRO:I;
while(USO);
KIRI-NYALA:O ;KANAN-NYALA:O
MOTOR-KIRI:I ;MOTOR-KANAN:
;
1
TRO:O;
void
j ej
ak_garis(void)
While(l)
{
KIRI-NYALA:O ;KANAN_NYALA:O ;
MOTOR-KIRI:O ;MOTOR-KANAN: 1 ;
if(RMT_PrN::0)
{
baca_remote0;
if(rmt_nom::l)
if(rmt_data::0x2 9)break;
KIRI-NYALA:O KANAN-NYALA:O ;
MOTOR-KIRI: 1 ;MOTOR-KANAN:0 ;
;
if((sEN
::
)&&(SEN2::0))
{
KIRI-NYALA: I KANAN-NYALA:
;
//while((SEN1
1
!:l)&&(SEN2!:l))Mundur0;
while(SEN2::0)
//Mundur0;
Berhenti0;
Kiri0;
))break;)
TLl:O;
TRI:1;
while(Tl
< 1 2)
{USI:
1,
\)
)
TR1:O;
if(sEN ::0)&&(sEN2::
USI:O;
THO:O;
206
//while((SEN1 !:1)&&(SEN2!:1))Mundur0;
while(SENl::0)
if(rmt_data::0x I 0)maju0;
i(rmt_data::0x I I )mundur0 ;
//Mundur0;
Berhenti0;
if(rmt_data::0x 1 2)belok_kanan0 ;
if(rmt_data::0x 1 3 )belok_kiri0
if(rmt_data::0x2 5 )berhenti0 ;
KananQ;
for(i:0;i<2
5s
;i++) { i((SEN
::
)&&(SEN2::0))break;
if(rmt*data::0x28)j
)
1
::
for(i:0;i<2
::
;i++) { if((SEN
ak_garis0
ej
)&&( SEN2::0))break; }
)&&(SEN2::0))break; }
)
)
if((SEN
:: I )&&(SEN2::
))
TABEL l2.lDaftar
{Maju0; }
bahan baku
)
)
Jumlah
l*
I
I
void main(void)
D-sonar
IRM85IO
mainprogram
*l
Nama Barang
TMOD:0x21 ;
TCON:0x00;
USO:O;
berhenti0;
1.
Pasang
Kode
001-0034
006-001 8
070-0006
01 1-0007
Gambar 12.2.
while(1)
(
cekjarak0;
if(TH0<2)
{
if(RMT_PIN::0)
t
baca_remote0;
if(rmt_nom::l)
tt
rl
2.
4.
Control
209
5.
6.
7.
Unduh fail hex dari listing program di atas ke delta robo kits dengan
Pasang sungut delta infrared line sensing seperti pada Gambar 12.4.
9.
10.
11.
ri
ini di kehidupan
sehari-
l.
2.
LAMPIRAN I
BAHAN-BAHAN PENUNJANG
Nama Bahan
Hexapod low cosl version
DU-ISP V3.O
Penielasan
Mekanik robot kaki enam
Downloader USB untuk
MCS.5I / AVR
Pensukur iarak ultrasonik
D-sonar
Part C infrared receiver
RFMI28
RI'MI2BP
TM-2.4 GHz
Delta encoder
MOCTO3CY
Delta DC driver
Delta robo CPU
Delta inJrared fire & target
TSOP4838
TSAL44OO
D-jo,- controller
driver
Otak robot
Modul meriam dan sensor
sasaran inframerah
Modul infrared receiver 38
kHz
LED inframerah dava besar
"sungut"
Robot penjejak garis
j
DBM-OI
Delta single line follower
sederhana tanpa
mikrokontroler
Part A line /bllower
Nama Bahan
Robo warfire & target kit
LAMPIRAN II
PROSEDUR PENIDUKTING LISTINGPROGRAM
Penielasan
Robot untuk aplikasi sasaran
tembak
lnfrared
lnfa.c
sensor-sensor dan
D-logo remote
l*
*l
loso robotic
Delta robo kits V2.l
l*Createdby
USB
DU ISP infra
Part B DC motor
Part D D-loso robotic
Part E D-loso robotic
Part F D-logo robotic
l*-
*l
*l
void infra_in(void)
It
unsigned char i;
infra_cmd:0;
infra_address:0;
TCCR1B:0x02; l/tutm on timer l; 1.000.000 Khz @SMhz crystal
TCNTI:O;
while(PIN_INFRA::0);
.if(TCNTI>2400)
besar
*l
: j anuar@delta-electronic.com
#include<avrlio.h>
#include<avrlintemrpt. h>
#include<util/delay.h>
#include"infra.h"
MHz
Delta giant hexapod crawler
januar
serakan
DSR-O8
while(PIN_INFRA::l);
for(i:0;i<7;i++) I lreceive infra command (7bit)
{
il
214
Lampiran ll
TCNTI:O;
while(PIN_INFRA::0);
if(TCNT I > I 200) infra_cmdl:0xS0
while(PIN_INFRA::1);
infra_cmd>>:1;
TCNTO:O;
INFRA-LED LOW;
while(TCNTO<10);
)
TCCR0:Ox00; llttrn off timer 0
TCNTI:O;
while(TCNT1<700);
for(i:O;i<7;i++)
{
switch(cmd&0x01)
address (5bit)
TCNTl:O;
while(PIN_INFRA::0);
i(TCNT I > I 200) infra_addressl-0x80;
while(PIN_INFRA::1);
infra_address>>:
215
case 0:
1.000.000 Y,*hz@8Mhz
'
TCNTI:O;
while(TCNT1<700)
{
TCNTO:O;
INFRA-LED-HIGH;
while(TCNT0<10);
TCNT0:0;
INFRA-LED-LOW;
while(TCNT0<10);
cmd&:0x7F;
address&:0xlF;
cli0;
TCCRIA:0x00;
TCCRIB:0x00;
TIMSK:0x00;
TCCRIB:0x02; lltum on timer l; L000.000 Khz @8Mhz
TCCR0:0x02; llttm on timer 0; 1.000.000 Khz @8Mhz
TCNTI:O;
while(TCNTI<2500)
t
TCNTI:O;
while(TCNT1<1300)
{
TCNTO:O;
INFRA-LED-HIGH;
while(TCNTO<10);
TCNTO:O;
INFRA-LED LOW;
while(TCNT0<10);
TCNTO:O;
)
TCCR0:0x00; lltumoff timer 0
INFRA-LED-HIGH;
while(TCNT0<10);
break;
Lampiran ll
217
while(TCNTI<700);
address>>:1;
\
TCNTl:O;
while(TCNT1<700);
_delay_ms(30);
cmd>>:l;
for(i:0;i<5;i++)
lnfa.h
{
switch(address&0x01)
{
case 0: TCCR0:0x02; llt.xn on timer 0;
1.000.000 Khz @8}l4hz
TCNTI:O;
while(TCNT1<700)
t
TCNTO:O;
INFRA LED-HIGH;
while(TCNT0<10);
TCNTO:O;
INFRA-LED LOW;
while(TCNT0<10);
)
TCCR0:0x00; //turn off timer 0
break;
break;
t
J
TCNTl:O;
#define INFRARED_LED 16
#define INFRARED_LED_OUT DDRDI:INFRARED_LED
#define INFRARED LED_IN DDRD&:-INFRARED_LED
#define INFRARED LED_HIGH PORTDI:INFRARED LED
#define INFRARED_LED_LOW PORTD&:-INFRARED_LED
#define INFRA 4
#define
INFRA_OUT
#define INFRA
DDRDI:INFRA
DDRD&:-INFRA
PORTDI:INFRA
PORTD&:-INFRA
IN
#define INFRA_HIGH
#define INFRA LOW
#define PIN_INFRA (PIND&INFRA)>>2
unsigned char infra_cmd,infra_address;
void infra_in(void);
void infra_out(unsigned char cmd,unsigned char address);
#endif
t2c
#include"i2c.h"
#include"delay.h"
#Include"avrio.h"
void I2C_init(void)
{
SDA:I;
SCL:1;
218
Lampiran ll
219
SDA:I;
void l2C_start(void)
{
SDA:I;
SCL:I;
delay(50);
unsigned char a;
unsigned char b;
unsigned char i;
SCL=I;
SDA:O;
delay(50);
SCL:I;
a:0;
SDA:1;
SCL:O;
delay(50);
void l2C_stop(void)
{
SDA:0;
for(i:O;i<8;ir-r)
SCL:I;
SCL:1;
delay(50);
delay(50);
SCL:I;
SDA:I;
b:SDA;
a:a<<l;
delay(50);
a:alb;
SCL:I;
SCL:O;
delay(50);
)
SDA:I;
retum a;
)
SDA:O;
SCL:O;
delay(50);
for(i:0;i<8;i++)
{
if(addr&(0x8F>i)) SDA:
else SDA:0;
SCL:I;
delay(50);
SCL:O;
delay(50);
unsigned char i;
;
I
I
'
SDA:O;
SCL:O;
delay(100);
for(i:O;i<8;i++)
{
i(d&(0x8F>i)) SDA:I;
else SDA:0;
220
Lampiran ll
221
SCL:I;
SCL:O;
delay(50);
SCL:O;
SDA:I;
t
delaY(50);
I
t2c.h
SDA:I;
#define _i2c_h_INCLUDED_
void I2C_initQ;
void I2C_startQ;
void I2C_stop0;
void I2C-addr(unsigned char addr);
unsigned char l2C read_byte0;
void I2C_write_byte(unsigned char d);
unsigned char I2C_check_ack0;
void l2C_ack(unsigned char ans);
SCL:O;
SCL:1;
for(i=10;i>0;i--)
{
SDA:O;
delay(50);
chk:SDA;
if(chk::O) break;
delay(S0);
itendif
)
Moving.C
SCL=O;
delay(50);
SDA:I;
if(chk::0) return
#include"moving.h"
1;
else return 0;
)
v
void belok_kanan(void)
t
I
t
SCL:O;
SDA:I;
SDA:ans;
delay(50);
.
i
I
MTR-KIRI-NYALA:O;
MTR-KANAN-NYALA:O;
ARAH_MTR_KIRI:1;
ARAH-MTR-KANAN:O;
)
SCL:I;
SDA:ans;
delay(50);
void belok_kiri(void)
(
222
MTR-KIRI_NYALA:O;
MTR_KANAN-NYALA:O;
ARAH_MTR_KIRI:O;
ARAH MTR KANAN:I;
)
void mundur(void)
{
MTR-KIRI-NYALA:O;
MTR_KANAN_NYALA:O;
ARAH-MTR_KIRI:O;
ARAH MTR KANAN:O;
)
void maju(void)
{
MTR_KIRI_NYALA:O;
MTR_KANAN-NYALA:O;
ARAH_MTR_KIRT:I;
ARAH MTR KANAN:I;
)
void berhenti(void)
{
MTR_KIRI-NYALA:1;
MTR KANAN NYALA:I;
)
223
Lampiran ll
while(PIN-INFRA::l)'
for(i:0;i<7;i++) llreceive infra command (7bit)
{
TCNTl:0;
while(PIN_INFRA::0);
if(TCNT 1 > 1 200) rmt-datal:0x80;
while(PIN_INFRA::1)'
rmt_data>>:l;
)
for(i:0 ;i<5 ;i++) //receive infra address (5bit)
{
TCNTl:O;
while(PIN_INFRA::0);
if(TCNT I > 1 200) rmt_noml:0x80;
while(PIN_INFRA::1);
rmt_nom>>:l;
)
)
rmt_data&:0x7F; llfrxTbit
rmt nom&:0xlF;
//turn off timer
TCCRlB=0x00;
)
/*cmd&:0x7F;
void baca_remote(void)
address&:0x1F;
cli0;
TCCRlA:0x00;
TCCRIB:0x00;
TIMSK:0xO0;
unsigned char i;
rmt_data:0;
rmt_nom:0;
TCCR 1 B:0 x02; I I ttxn on timer I ; 1 .000.000 Y:hz @8Mhz crystal
TCNTl:O;
while(PIN-INFRA::0)'
if(TCNT1>2400)
t
TCNTl:O;
while(TCNTI<576)
224
225
Lampinan ll
{
TCNT0:O;
LED_FIRE_HIGH;
while(TCNT0<2);
TCNT0:0;
LED_FIRE LOW;
while(TCNT0<2);
)
TCCR0:0x00; llfitm off timer
TCNTo:o;
LED_FIRE_LOW;
while(TCNT0<10);
)
TCNT1:0;
while(TCNTI<700);
cmd>>:l'
TCNT1:0;
while(TCNTI<175);
for(i:0;i<7;i++)
for(i:0;i<5;i++)
t
switch(address&0x01)
I
i
switch(cmd&Ox01)
It
case 0: TCCR0:0x02; lhllrn on timer 0;
1.000.000 Y:hz@8Mhz
TCNTl:O;
while(TCNT1<700)
It
TCNTO:O;
LED-FIRE_HIGH;
while(TCNT0<10);
TCNTO:O;
LED-FIRE-LOW;
while(TCNT0<10);
case 0: TCCR0:0x02;
1.000.000 Khz@8Mhz
llum
on timer 0;
TCNTl:O;
while(TCNTI<700)
{
TCNTO:O;
LED_FIRE_HIGH;
while(TCNTO<10);
TCNTO:O;
LED-FIRE LOW;
while(TCNT0<10);
)
case
0;
break;
TCNTI:O;
nhile(TCNTI<1300)
t
TCNTO:O;
LED_FIRE_HIGH;
while(TCNTO<10);
TCNTO:O;
LED FIRE LOW;
{
TCNTO:O;
LED-FIRE_HIGH;
while(TCNTO<10);
11
while(TCNT0<10);
)
TCCR0=0x00; //turn off timer 0
break;
while(TCNT0<10);
)
TCCR0:0x00;//turn off timer 0
I
l
break;
case 1:
r ooo
TCNTl:0;
ooo'*'*':rffili;:iroor
while(TCNT1<700);
address>>=l;
\*l
TCNTO:O;
Khz @8Mhz
/*TCCR1B:0x02; //turn on timer 1; 1'000'000
Khz
@8Mhz
TCCRO:0x02; llnmon timer 0; 1'000'000
TCNTT:O;
while(TCNT1<2500)
LED_FIRE-HIGH;
while(TCNT0<10);
TCNTO:O;
LED_FIRE LOW;
while(TCNT0<10);
TCNTO:O;
LED-FIRE-HIGH;
while(TCNT0<10);
break;
TCNTO:O;
TCNTl=0;
while(TCNT1<700);
LED-FIRE-LOW;
while(TCNT0<10);
)
TCCR0:0x00;//turn off timer 0
cmd>>:l'
)
for(i:0;i<5;i++)
TCNTl:0;
while(TCNTl<700);
for(i:O;i<7;i++)
{
switch(address&Ox01)
case 0:
switch(cmd&0x01)
{
1.000.000 Y.lu@&Ilvf.hz
TCNT0=0;
LED_FIRE_HIGH;
while(TCNTO<10);
TCNTO=0;
LED_FIRE LOW;
TCNTl:0;
while(TCNT1<700)
{
TCNT0:0;
LED_FIRE-HIGH;
while(TCNT0<10);
TCNTO:O;
LED-FIRE-LOW;
while(TCNT0<10);
)
228
Lampinan ll
229
#define ARAH_MTR_KIRI
#define MTR_KIRI_NYALA
#define RMT_PIN
#define BZR
break;
case 1: TCCR0:0x02; llatm on timer 0;
TCNTI:O;
while(TCNTI<1300)
t
TCNTO:O;
LED_FIRE-HIGH;
while(TCNT0<10);
TCNTO:O;
LED-FIRE LOW;
while(TCNT0<10);
)
#endif
break;
TCNTl:O;
while(TCNT1<700);
address>>: I ;
) *(/
//
Jt
delay_ms(30);
)
Moving.h
#ifndef _moving_h_INCLUDED_
#defi ne _moving_h_INCLUDED_
DIRR
DIRL
PORTB.3
PORTB.2
ENR
ENL
PORTB.O
PORTB.I
#define ARAH_MTR_KANAN
#define MTR KANAN NYALA
PORTC.T
PORTD.3
void maju(void);
void mundur(void);
void belok_kiri(void);
void belok_kanan(void);
void berhenti(void);
void baca_remote(void);
void infra_out(unsigned char cmd,unsigned char address);
\t
PORTB.O
PORTB.I
PORTB.2
PORTB.3
zov
TENTANG PENULTS