Friday, February 27, 2009

LINE TRAKING ROBOT

Project ini adalah salah satu project yang sangat digemari mulai dari saat awal-awal robot diperkenalkan sampai saat ini. Para peserta didik baik anak-anak ataupun mahasiswa juga senang membuat robot jenis ini. Jenis robot line traking dilihat dari komponen penyusunnya juga bermacam-macam ada yang sudah berupa kid seperti LEGO, berupa mikrokontroler biasa dipakai di tingkat mahasiswa. Ataupun yang berupa rangkaian analog seperti yang akan kita buat sekarang.

Robot line traking dengan rangkaian analog berarti tidak perlu memasukkan program seperti pada LEGO. Dengan komponen elektronik yang dipasang pada body robot sudah cukup untuk membedakan warna hitam dan putih berjalan maju, mundur, belok kanan dan belok kiri.

ü Robot mempunyai 2 motor, kanan dan kiri. Setiap motor akan terhubung ke roda melalui gear. Kedua motor ini merupakan penggerak utama dan diletakkan pada bagian depan robot.

ü Roda ke-3 diletakkan dibelakang sebagai roda bebas. Gerakan roda ini akan mengikuti ke arah mana robot bergerak.

ü Ada 2 light sensor yang diletakkan dibagian kanan dan kiri robot. Kedua sensor ini berfungsi sebagai mata untuk melihat jalur.

GAMBAR RANGKAIAN

Rangkaian robot sangat sederhana, seperti tampak pada gambar di bawah


Pada bagian input merupakan rangkaian light sensor yang berfungsi untuk mendeteksi jalur. Untuk bagian proses terdiri dari rangkaian op amp. Sedangkan output merupakan kombinasi transistor untuk mendriver motor.

Rangkaian 2 merupakan rangkaian untuk satu sensor dan satu motor, untuk membuar line traking diperlukan 2 rangkan yang sama satu untuk sebelah kanan satu untuk kiri.


CARA KERJA RANGKAIAN

Untuk memudahkan memahami cara kerja rangkaian maka lebih baik kita pelajari per bagian dulu. Rangkaian line traking ada 2 bagaian utrama yaitu rangkaian sensor (input), rangkaian pembanding (proses) dan rangkaian driver (ouuput).

Ø Rangkaian sensor

Komponen utama pada bagian ini adalah phototransistor atau photodioda. Komponen ini kita gunakan sebagai sensor cahaya. Jika tidak ada cahaya yang mengenainya maka alat ini OFF sehingga rangkaian sensor terbuka atau tegangan ouput yang dikirim ke rangkaian pembanding adalah 0. tetapi jika ada cahaya maka prototansistor aktif dan rangkaian sensor tertutup sehingga ada tegangan sekitar 5 volt yang mengalir ke rangkaian pembanding. Selanjutnya ada tidaknya tegangan dari rangkaian sensor akan diproses dengan IC op amp pada rangkaian pembanding.

Ø Rangkaian pembanding

Pada rangkaian proses digunakan IC OP amp yang difungsikan sebai komparator. Salah satu kemampuan op amp adalah membandingkan besar dua potensial yang diberikan. Seperti gambar berikut:

Cara kerja dari komparator adalah membandingkan tegangan yang diberiikan pada terminal A(-) dan B (+). Jika terminal yang (-) lebih besar maka output bernilai 0. sebaliknya jika terminal (+) > (-) maka output akan saturasi (mencapai nilai maksimum) biasanya sekitar 5 vollt, tergantung dari input yang diberikan.

Fungsi potensio adalah untuk mengatur nilai yang diberikan pada terminal yang lain. Contoh (lihat gambar 3) jika terminal A mendapat tegangan dari sensor maka terminal B dapat tegangan dari potensio. Nilai B dapat di atur. Dengan mengubah-ubah nilai potensio kita dapat menentukan :

- sensitivitas sensor

- Arah gerak motor terhadap lintasan. Kita bisa menentukan apakah robot akan mengikuti garis hitam atau garis putih, dengan men- setting nilai potensio.

Pada rangkaian proses akan dihasilkan tegangan yang akan dikirim ke rangkaian driver motor. Untuk mengirimkan ke rangkaian driver ada 2 jalur A dan B. Jika dikirimkan melalui jalur A maka motor berputar CW sebalikanya jika menggunakan jalur B yang digunakan maka putaran motor akan berbalik. Untuk setiap waktu hanya satu jalur yang bisa dilewati (tidak mungkin dua-duanya).

Ø Rangkaian driver

Rangkaian ini merupakan rangkaian penggerak motor. Dengan memanfaatkan transistor sebagai switch maka motor dapat berputar 2 arah, CW atau CCW.

ALAT DAN KOMPONEN YANG DIBUTUHKAN

Setelah melihat gambar rangkaian maka kita akan tahu komponen apa saja yang dibutuhkan. Bisakah kalian mendaftar komponen apa saja yang diperlukan?

Alat yang di butuhkan antara lain:

Ø Power supply ( catu daya/ baterai )

Ø 1 Multi meter (digital atau analog )

Ø Solder dan timah

Ø Penyedot timah

Ø PCB 1 buah

Rangkaian di atas memerlukan :

Ø Resistor 560 ohm 2 buah

Ø Resistor 10 kohm 2 buah

Ø Resistor 1 K 12 buah

Ø VR 50k 2buah

Ø LED 8

Ø LM 324

Ø 8 buah transistor c9013

Ø Header/ terminal block secukupnya

LANGKAH-LANGKAH MEMBUAT LINE TRAKING

Dalam pembuatan line traking ini dapat dibedakan 2 macam pengerjaannya:

  1. Pengerjaan board rangkaian elektronik
  2. Pengerjaan mekanik

1.1 Pengerjaan board rangkaian elektronik

Pada tahap ini kalian akan memasang dan menyolder komponen seperti IC, resistor, kapasitor pada PCB yang telah disediakan. Mungkin kalian sudah tahu bahwa jalan tidaknya rangkaian tetgantung dari benar tidaknya kalian memasang komponen. Oleh karena itu sebaiknya kalian berhati-hati dalam pengerjaan nanti dan ikuti intruksi berikut langkah per langkah.

  1. Persiapkan rangkaian line trak yang akan digunakan.
  2. Persiapkan alat dan bahan yang akan digunakan.
  3. Pasang komponen yang di gunakan ke PCB yang ada. Sebaiknya kalian pasang dulu resistor, setelah itu pasang IC dan terakhir transistor. Untuk pemasangan resistor cek dulu 2-3 kali sampai kalian yakin baru disolder pada PCB.
  4. Solder semua komponen yang ada di pcb.
  5. Pasang led yang di inginkan ke dalam lubang layout yang ada.
  6. Pasang sumber tegangan, ingat untuk rangkaian driver sumber tegangannya disendirikan.

1.2 Pengerjaan mekanik

  1. kita akan menggunakan bagian dalam mobil mainan
  2. bagian itu antara laian gear, motor, body, termasuk roda.
  3. Untuk motor kita sambungkan pada board elektronik yang telah dibuat.
  4. Untuk pemasangan sensor letakkan pada bagian bawah mobil dan menghadap ke lantai
  5. Pastikan pantulan cahaya LED masih dapat dijangkau oleh phototransitor.
  6. Setting potensio sampai didapatkan hasil yang sesuai




Tuesday, February 10, 2009

Pemancar 100-108 MHz FM

Pemancar mini yang dapat memancarkan suara ke radio FM terdekat pada frekuensi 100-108 MHza.

Jarak maksimum yang dapat dijangkau sekitar 300 m. Untuk mengubah frekuensi digunakan variabel kapasitor (sebagai tuning) 25 pF.

D FLIP/FLOP


D flip/flop juga dapat menghasilkan sinyal kotak.

Monday, February 9, 2009

Ossilator Clock dengan Gerbang NOT


Jika kita ingin membuat sinyal kotak memang caranya sangat banyak. cara yang paling umum adalah dengan menggunakan xtal atai LM555. Tapi dengan artikel ini maka kita tidak perlu lagi menggunakan ke dua cara diatas. alasannya :
1, cara ini lebih murah
2. hasilnya tetap berkualitas
3. mudah membuatnya

Murah karena menggunakan IC 74HC14 yaitu inverter seperti tampak pada gambar dibawah.


frekuensi sinyal kotak yang hasilkan mengikuti persamaan:

f=1/T=1/CR

f adalah frekuensi output
C adalah nilai kapasitor (F)
R adalah nilai resistor

Hasilnya akan nampak:




Prinsip kerjanya adalah logika NOT adan prinsip umpan balik. saan input dapat "1" maka output "0". nilai "0" dimasukkan input maka dihasilkan output "1". begitu seterusnya sehingga terbentuk sinyal kotak. untuk mengubah frekuensi digunakan prinsip charge dan discharge kapasitor.Add to Technorati Favorites

Wednesday, February 4, 2009

LCD DAN KEYPAD



program yang digunakan :
---------------------------

;* Description: Test program with AT90S2313 AVR RISC Processor,
;* LCD display using 4-wire interface and 4x4 keypad.
;*
;* Writed at: 27-05-2003
;* Target: AT 90s2313
;* Author: tom
;*
;* Home page: electronicindonesia.blogspot.com
;*
;* LCD rs pin connected to PD6
;* LCD r/w pin connected to PD5
;* LCD e pin connected to PD4
;* D4-D7 FROM LCD IS CONNECTED TO PORTD PD0-PD3
;* The 4x4 keypad is conected to PortB pins (PB0-PB7)
;* PB0,PB1,PB2,PB3 inputs, PB4,PB5,PB6,PB7 outputs
;*
;*
;*
;***************************************************************************

.include "2313def.inc" ;Define chip particulars


;***** Global register variables
.def wreg =R16 ;General use working register
.def timeout =R17 ;Timeout value passed to subroutine
.def lcdstat =R18 ;LCD busy/wait status
.def longtime=R19 ;Long timer for powerup
.def temp =R20
.def test =R21 ;test register
.def monades =R22
.def dekades =R23

;***** Other equates
.equ lcdrs =PD6 ;LCD rs pin connected to PD6
.equ lcdrw =PD5 ;LCD r/w pin connected to PD5
.equ lcde =PD4 ;LCD e pin connected to PD4
.equ line1 =0x80 ;1ç ãñáììç ôïõ LCD
.equ line2 =0xC0 ;2ç ãñáììç ôïõ LCD
.equ col1 =0b11101111 ;Êïëüíá 1
.equ col2 =0b11011111 ;Êïëüíá 1
.equ col3 =0b10111111 ;Êïëüíá 1
.equ col4 =0b01111111 ;Êïëüíá 1



; Main program entry point on reset

reset:


ldi temp,RAMEND
out SPL,temp ;Init Stack Pointer


rcall longdelay ;Delay some time
ldi temp,0b11110000 ;PB0,1,2,3 inputs, PB4,5,6,7 outputs
out DDRB,temp
ldi temp,0b00001111 ;enable internal pull-ups on PB0-PB4
out PORTB,temp

rcall lcdinit ;Initialize LCD module
again: ldi monades,$30
ldi dekades,$30
rcall lcdclr ;Clear the LCD
ldi wreg,line1 ;Set address to line 1
rcall lcdcmd
ldi ZH,high(2*message1) ;Type the message1
ldi ZL,low(2*message1) ;to the LCD
rcall loadbyte

ldi wreg,line2 ;Set address to line 2
rcall lcdcmd
ldi ZH,high(2*message2) ;Type the message2
ldi ZL,low(2*message2) ;to the LCD
rcall loadbyte

;=========================================================================
; Check all keys (1-16).
; The comments from the first 4 keys are the same with all other keys.
;=========================================================================
check_keys:
ldi temp,col1 ;Enable column1
out PORTB,temp
rcall delay

sbic PINB,PB0 ; Pressed key No1 ?
rjmp key2 ; if Not, check next key
ldi monades,$31 ; if yes...
rjmp disp_no_of_key ; goto type it to LCD

key2: sbic PINB,PB1 ; Pressed key No2 ?
rjmp key3 ; if Not, check next key
ldi monades,$32 ; if yes...
rjmp disp_no_of_key ; goto type it to LCD

key3: sbic PINB,PB2 ; Pressed key No3 ?
rjmp key4 ; if Not, check next key
ldi monades,$33 ; if yes...
rjmp disp_no_of_key ; goto type it to LCD

key4: sbic PINB,PB3 ; Pressed key No4 ?
rjmp key5 ; if Not, check next key
ldi monades,$34 ; if yes...
rjmp disp_no_of_key ; goto type it to LCD

key5: ldi temp,col2 ; Disable the first column...
out PORTB,temp ; and enable the second
rcall delay

sbic PINB,PB0 ; Pressed key No5 ?
rjmp key6 ; if Not...
ldi monades,$35 ;
rjmp disp_no_of_key

key6: sbic PINB,PB1 ; Pressed key No6 ?
rjmp key7 ; if Not...
ldi monades,$36 ;
rjmp disp_no_of_key

key7: sbic PINB,PB2 ; Pressed key No7 ?
rjmp key8 ; if Not...
ldi monades,$37 ;
rjmp disp_no_of_key

key8: sbic PINB,PB3 ; Pressed key No8 ?
rjmp key9 ; if Not...
ldi monades,$38 ;
rjmp disp_no_of_key

key9: ldi temp,col3 ;
out PORTB,temp
rcall delay

sbic PINB,PB0 ; Pressed key No9 ?
rjmp key10 ; if Not...
ldi monades,$39 ;
rjmp disp_no_of_key

key10: sbic PINB,PB1 ; Pressed key No10 ?
rjmp key11 ; if Not...
ldi monades,$30 ;
ldi dekades,$31
rjmp disp_no_of_key

key11: sbic PINB,PB2 ; Pressed key No11 ?
rjmp key12 ; if Not...
ldi monades,$31 ;
ldi dekades,$31
rjmp disp_no_of_key

key12: sbic PINB,PB3 ; Pressed key No12 ?
rjmp key13 ; if Not...
ldi monades,$32 ;
ldi dekades,$31
rjmp disp_no_of_key

key13: ldi temp,col4 ;
out PORTB,temp
rcall delay

sbic PINB,PB0 ; Pressed key No13 ?
rjmp key14 ; if Not...
ldi monades,$33 ;
ldi dekades,$31
rjmp disp_no_of_key

key14: sbic PINB,PB1 ; Pressed key No14 ?
rjmp key15 ; if Not...
ldi monades,$34 ;
ldi dekades,$31
rjmp disp_no_of_key

key15: sbic PINB,PB2 ; Pressed key No15 ?
rjmp key16 ; if Not...
ldi monades,$35 ;
ldi dekades,$31
rjmp disp_no_of_key

key16: sbic PINB,PB3 ; Pressed key No16 ?
rjmp check_keys ; if Not...
ldi monades,$36 ;
ldi dekades,$31
rjmp disp_no_of_key

;=========================================================================
; Here is typed the message3 ,message4, dekades and monades to LCD
;=========================================================================
disp_no_of_key:
rcall lcdclr ; Clear the LCD
ldi wreg,line1 ; Set address to line 1
rcall lcdcmd
ldi ZH,high(2*message3) ; Load high part of byte address into ZH
ldi ZL,low(2*message3) ; Load low part of byte address into ZL
rcall loadbyte

ldi wreg,line2 ; Set address to line 2
rcall lcdcmd
ldi ZH,high(2*message4) ; Load high part of byte address into ZH
ldi ZL,low(2*message4) ; Load low part of byte address into ZL
rcall loadbyte
mov wreg,dekades
rcall lcdput
mov wreg,monades
rcall lcdput
rcall longdelay ;Wait some time
rjmp again

;=========================================================================
; Clear entire LCD and delay for a bit
;=========================================================================
lcdclr:
ldi wreg,1 ;Clear LCD command
rcall lcdcmd
ldi timeout,256 ;Delay 15 mS for clear command
rcall delay
ret


;=========================================================================
; Initialize LCD module
;=========================================================================

lcdinit:

ldi wreg,0 ;Setup port pins
out PORTD,wreg ;Pull all pins low
ldi wreg,0xff ;All pins are outputs
out DDRD,wreg
ldi timeout,256 ;Wait at least 15 mS at power up
rcall delay
ldi wreg,3 ;Function set
out PORTD,wreg
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
ldi timeout,65 ;Wait at least 4.1 mS
rcall delay
ldi wreg,3 ;Function set
out PORTD,wreg
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
ldi timeout,2 ;Wait at least 100 uS
rcall delay
ldi wreg,3 ;Function set
out PORTD,wreg
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
ldi wreg,2 ;Function set, 4 line interface
out PORTD,wreg
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
ldi wreg,0b11110000 ;Make 4 data lines inputs
out DDRD,wreg

; At this point, the normal 4 wire command routine can be used

ldi wreg,0b00100000 ;Function set, 4 wire, 2 line, 5x7 font
rcall lcdcmd
ldi wreg,0b00001100 ;Display on, cursor off, blink off
rcall lcdcmd
ldi wreg,0b00000110 ;Address increment, no scrolling
rcall lcdcmd

ret

; Wait for LCD to go unbusy
lcdwait:

ldi wreg,0xF0 ;Make 4 data lines inputs
out DDRD,wreg
sbi PORTD,lcdrw ;Set r/w pin to read
cbi PORTD,lcdrs ;Set register select to command
waitloop:

sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
in lcdstat,PIND ;Read busy flag
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
sbrc lcdstat,3 ;Loop until done
rjmp waitloop

ret

; Send command in wreg to LCD
lcdcmd:

mov test,wreg
rcall lcdwait
ldi wreg,0xFF
out DDRD,wreg
mov wreg,test
mov test,wreg
swap wreg
andi wreg,0X0F
out portD,wreg
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
mov wreg,test
andi wreg,0x0F ;Strip off upper bits
out PORTD,wreg ;Put on port
sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
ldi wreg,0xF0 ;Make 4 data lines inputs
out DDRD,wreg
ret

; Send character data in wreg to LCD
lcdput:
mov test,wreg ;Save character
rcall lcdwait ;Wait for LCD to be ready
ldi wreg,0xFF ;Make all port D pins outputs
out DDRD,wreg
mov wreg,test ;Get character back
mov test,wreg ;Save another copy
swap wreg ;Get upper nibble
andi wreg,0x0F ;Strip off upper bits
out PORTD,wreg ;Put on port
sbi PORTD,lcdrs ;Register select set for data

sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
mov wreg,test ;Recall character
andi wreg,0x0F ;Strip off upper bits
out PORTD,wreg ;Put on port
sbi PORTD,lcdrs ;Register select set for data

sbi PORTD,lcde ;Toggle enable line
cbi PORTD,lcde
ldi wreg,0xF0 ;Make 4 data lines inputs
out DDRD,wreg
ret

longdelay:
ldi longtime,180 ;
ldi timeout,256 ;
puwait:
rcall delay
dec longtime
brne puwait
ret

;***** Delay n*64 microseconds using timer 0, delay time passed in timeout
delay:

ldi test,64
cagain: dec test
brne cagain
dec timeout
brne delay
ret

;=========================================================================
loadbyte:
;=========================================================================
lpm ; Load byte from program memory into r0

tst r0 ; Check if we've reached the end of the message
breq return ; If so, quit

mov wreg,r0
rcall lcdput ; Echo received char

adiw ZL,1 ; Increase Z registers
rjmp loadbyte

return: ret ;return
;=========================================================================


message1:
.db "Press any key",0
message2:
.db "please (1-16)",0
message3:
.db "You pressed",0
message4:
.db "key:",0

Robot Penghindar Halangan

Oleh Deddy Susilo

Topik yang kami buat berbasis mikrokontroler keluarga MCS-51, dalam hal ini kami gunakan AT89S51 buatan ATMEL. Kelebihan tipe 89SXX daripada pendahulunya 8031/51 yaitu didalam chip sudah terdapat Flash Memory yang dapat diprogram sebesar 4Kbytes, 128 x 8 bit RAM internal. Jadi dengan menggunakan mikro tipe ini akan didapat desain yang cukup kompak dan pemrogramannya relatif lebih mudah. Desain yang kami buat terdiri dari beberapa bagian yaitu:

1. Modul Mikrokontroler 89S51 + Regulator.
2. Modul Penggerak Motor DC.
3. Modul Penggerak Motor Stepper.
4. Modul Transceiver Infra Red + Pendeteksi Benturan Samping (Limit Switch).
5. Modul Penyuara.

Gambar 1. Robot Penghindar Halangan

Penjelasan Modul

1. Modul Mikrokontroler AT89SXX + Regulator.

Berikut contoh skematik dari modul tersebut. Komponen Modul Mikrokontroler 89CXX

1.Pasif : Resistor 8K2 W, array 10K W 9 pin, Crystal 12 MHz, kapasitor 30 pF, 10uF, 100 uF, 1000uF, switch.
2.Semikonduktor : AT89S51, LM7805.
3.Battery charger 9 VoltDC 700mAH

Modul yang ditunjukkan pada gambar 2 berfungsi mengendalikan seluruh proses pekerjaan sistem robot ini dengan cara penanaman instruksi dalam Flash PEROM didalam chip 89S51. Bahasa yang dipergunakan adalah assembler, bahasa C dengan bantuan Compiler C (Franklin C, Keil C, SDCC atau yang lain). Baterai menggunakan baterai yang dapat diisi ulang sebesar 700mAH dengan asumsi bila sistem memakai arus 0,75 A akan dapat bertahan selama satu jam. LM7805 digunakan untuk meregulasi tegangan dan arus dari baterai sekaligus menyesuaikan level tegangan chip 89S51 serta piranti lain yang akan dipaparkan selanjutnya.

Gambar 2. Modul Mikrokontroler AT89S51

2. Modul Penggerak Motor DC

Komponen Modul Penggerak Motor DC

1. Pasif : Resistor 1 ohm 5 watt untuk pembatas arus dan sensing arus.
2. Semikonduktor : IC Driver Motor L298 buatan ST Microelectronic
3. 2 buah motor DC 9 Volt 2400 RPM dengan pengurang kecepatan dan penguat torsi

Gambar 3. Modul Penggerak Motor DC

Modul ini menggunakan IC driver L298 yang memiliki kemampuan menggerakkan motor DC sampai arus 2A dan tegangan maksimum 40 VoltDC untuk satu kanalnya. Pin Enable A dan B untuk mengendalikan jalan atau kecepatan motor, pin Input 1 sampai 4 untuk mengendalikan arah putaran. Pin Enable diberi VCC 5 Volt untuk kecepatan penuh dan PWM (Pulse Width Modulation) untuk kecepatan rotasi yang bervariasi tergantung dari level highnya. Ilustrasinya ditunjukkan pada gambar 4.

Gambar 4. Ilustrasi Pulse Width Modulation

Dari gambar 4 dapat dijelaskan jika dikehendaki kecepatan penuh maka diberikan 5 Volt konstan, jika dikehendaki kecepatan bervariasi maka diberikan pulsa yang lebar high dan low-nya bervariasi. Satu periode pulsa memiliki waktu yang sama sehingga dalam contoh diatas, kecepatan motor akan berubah dari setengah kecepatan penuh menjadi mendekati kecepatan penuh. Biasanya digunakan lebar pulsa dalam beberapa milisekon misalnya 2 ms. Input untuk motor servo kanan adalah input 1 (C) dan 2 (D), direction-nya dapat dilihat pada tabel 1.

Tabel 1. Pengaturan IC driver motor

Berikut didalam IC L298 mengapa pengendaliannya sesuai dengan tabel 1.

Gambar 5. Ilustrasi Pengendalian Motor didalam IC Driver Motor

Didalam chip L298, untuk mengendalikan arah putaran motor digunakan metode bridge-H dari kombinasi transistor, jadi dengan metode demikian arus yang mengalir kemotor polaritasnya dapat diatur dengan memberikan logika ke transistor Q1 sampai Q4. Pengaturannya seperti tabel kebenaran disamping gambar 5. Kondisi high untuk semua input tidak diijinkan sebab akan mengakibatkan semua transistor aktif dan akan merusakkan transistor karena secara otomatis arus dari kolektor Q1 dan Q2 langsung mengalir ke Q2 san Q3 sehingga arus sangat besar tanpa melalui beban motor DC.

Berikut contoh penggalan pengendalian motor dengan bahasa assembly (contoh robot akan berjalan kedepan X meter)

subrutin-1

Delay diatas menggunakan fasilitas timer dalam chip 89C51. Untuk lamanya delay dapat divariasikan sendiri dengan proses looping atau perulangan. Jika dikehendaki robot berputar sesuai porosnya maka dapat dicoba penggalan source code sebagai berikut:

Subrutin-2

Fungsi Rsense1 dan 2 adalah untuk monitor arus jika diperlukan keperluan umpan balik untuk kestabilan system, contoh menjaga kestabilan putaran motor dengan memberikan umpan balik negatif arus ke pengendali mikro, dapat dengan ADC sebagai interface-nya.

3. Modul Penggerak Motor Stepper

Komponen Modul Penggerak Motor Stepper

1. Pasif : Resistor 1K, 12K
2. Semikonduktor : Transistor 2SD313 + heatsink
3. Motor Stepper

Motor stepper yang kami gunakan adalah motor stepper yang ada dalam floppy disk drives yang sudah jarang dipakai lagi (ukuran 5¼ inch). Berikut skematik diagram penggerak motor stepper:

Gambar 6. Motor stepper dan penggeraknya

Untuk menggerakkan motor stepper masing-masing titik kumparan harus diberikan arus secara bervariasi, pada contoh diatas, titik A, B, C dan D diatur seperti pada contoh penggalan source code dibawah ini.

subrutin-3

Urutan data untuk putar kiri adalah 1000-0100-0010-0001, sehingga untuk putar kanan adalah sebaliknya yaitu 0001-0010-0100-1000. Delay tengok diatur kira-kira sebesar 5-20 msekon. Digunakan transistor adalah untuk interface antara mikro dan stepper, arus dari mikro tak akan sanggup langsung mengendalikan motor stepper. Transistor yang digunakan adalah transistor yang cocok untuk penguat daya menengah dengan bandwidth yang cukup lebar (2SD313). Melalui pengukuran diketahui tiap step dari stepper terhadap common mempunyai nilai hambatan sebesar 68 ohm, sehingga jika sumber tegangan diberi 5 voltDC maka nilai arus yang mengalir ke tiap step dengan mengasumsikan transistor saturasi adalah I = V/R = 5 V / 68 ohm = 73 mA.

4. Modul Transceiver Infra Red + Pendeteksi Benturan Samping (Limit Switch).

Modul Transmitter

Cara kerja IR transmitter dapat dilihat dari timing diagram dibawah ini : Sinyal IR disetting sebesar 30 - 50 KHz, sinyal data kita pakai untuk mengendalikan ada atau tidaknya pancaran sinyal infra merah. Jadi data dan sinyal infra merah yang akan dipancarkan perlu dimodulator terlebih dahulu. Maksud dari frekuensi kerja IR Led adalah supaya pancarannya dapat jauh dan kurang terpengaruh noise dari luar.

Gambar 7. Ilustrasi Komunikasi Data Sinyal Infra Merah

Gambar 8. Untai Penghasil Osilasi 30 -40 kHz dan Modulator


Modul Receiver Infra Merah

Di bawah ini adalah gambar untai dari penerima infra merah yang dapat menangkap sinyal IR dengan frekuensi 30 - 50 KHz. Setelah diterima dalam bentuk pulsa maka diubah menjadi tegangan DC rata-ratanya yang kemudian akan dimasukkan ke komparator tegangan LM324. Out Receiver adalah active low yaitu bila ada sinyal IR hasil pantulan yang tertangkap cukup kuat akan membuat output opamp menjadi low. Cara selain ini juga dapat digunakan, untuk hasil yang lebih tepat dengan cara menghitung jumlah pulsa yang tertangkap di receiver. Untai yang sudah direalisasikan dapat mengindera sinar Infra Merah dengan jarak 0 hingga 15 meter, dengan menyetel amplitudo dari keluaran pulsa dari modulasi (penggabungan ) sinyal carrier dengan data. Receiver yang pernah dicoba adalah sensor receiver Infra Merah untuk VCD player yang sudah memiliki keluaran dengan level TTL ( +5 V dan 0 V).

Gambar 9. Modul Infra Merah dan Komparator

Modul Limit Switch

Untuk untai pendeteksi benturan kanan dan kiri digunakan limit switch seperti gambar dibawah ini.

Gambar 10. Untai pendeteksi halangan di depan dan samping

Untuk mengenali kanan atau kiri maka dari kedua switch diumpankan lagi ke port mikrokontroler. Output dari gerbang AND untuk limit switch diumpankan lagi ke gerbang AND untuk dibandingkan logikanya dengan output receiver, dan hasil akhirnya diumpankan ke Port3.2 sebagai tanda ada halangan. Jika ada halangan didepan maka mikro segera memerintahkan untuk menyimpan data halangan di kanan, kiri dan depan, yang kemudian disimpan di memori, contoh penggalan source code-nya sebagai berikut: (mikro memerintahkan juga motor stepper untuk bergerak dengan 180 derajat kebebasan).

subrutin-4

5. Modul Penyuara

Untuk modul penyuara ini hanyalah tambahan fitur. Kami gunakan untuk memberikan sinyal ketika ada halangan, ada benturan kanan-kiri dan tanda bahwa semua arah sudah tertutup bagi robot (robot tidak bisa menemukan jalan keluar). Digunakan interrupt timer supaya proses bunyi dan proses sistem dapat berjalan bersamaan. Gambar untainya :


Gambar 11. Modul suara

Kegunaan 74LS04 adalah untuk buffer arus ke speaker karena bila langsung ke mikro maka arus dari mikro akan drop (jatuh) akibat beban yang besar (speaker). Penggalan source code untuk membunyikan speaker:

subrutin-5

Untuk modul yang lain dapat ditambahkan sendiri misalnya modul sensor pendeteksi panas, pencari cahaya, pencari sumber suara, pengikut lintasan, pendeteksi arah gelombang RF yang terkuat dan lain sebagainya. Untuk proses berjalannya robot tergantung dari kreatifitas perancang, untuk itu kami tidak mencantumkan lengkap source code-nya, tetapi kami akan berikan contoh flowchart jalannya robot.

Gambar 12. Flowchart Sistem Robot Avoider



KESIMPULAN

Sistem robot yang dibangun cukup sederhana tetapi cukup menarik untuk dipelajari lebih lanjut. Sistem robot ini sangat berguna dan banyak kita jumpai di industri. Sebagai contoh, conveyor di sebuah pabrik mie instant adalah salah satu contoh bentuk robot industri yang populer. Ilmu robotika merupakan gabungan dari teknologi mekanik presisi, perangkat keras elektronika dan komputer, perangkat lunak, sistem penginderaan atau sensor, dan dapat dikatakan merupakan gabungan dari banyak ilmu elektronika dan komputer, serta mesin.

TONE CONTROL

Para pecinta musik bisa menggunakan rangkaian ini untuk meningkatkan kualitas suara dari perangkat sound system yang dimiliki. ada 2 pilihan rangkaian yang mungkin bisa digunakan yaitu

1. Menggunakan TDA1524A Tone Control IC




2. Menggunakan LM1036N

Template by : kendhin x-template.blogspot.com