Pengukur Jarak dengan Ultra Sonic
Oleh Budhy Sutanto
Meminjam teknik echo sounder yang dipakai untuk mengukur
kedalaman laut, bisa dibuat alat pengukur jarak dengan ultra sonic. Pengukur
jarak ini memakai rangkaian yang sama dengan Jam Digital dalam artikel yang lalu,
ditambah dengan rangkaian pemancar dan penerima Ultra Sonic.
Prinsip kerja echo sounder untuk pengukuran jarak digambarkan dalam Gambar 1.
Pulsa Ultrasonic, yang merupakan sinyal ultrasonic dengan frekwensi lebih kurang
41 KHz sebanyak 12 periode, dikirimkan dari pemancar Ultrasonic. Ketika pulsa
mengenai benda penghalang, pulsa ini dipantulkan, dan diterima kembali oleh
penerima Ultrasonic. Dengan mengukur selang waktu antara saat pulsa dikirim dan
pulsa pantul diterima, jarak antara alat pengukur dan benda penghalang bisa
dihitung.
Gambar 1 Prinsip Echo Sounder
Gambar 2 merupakan Rangkaian Jam Digital dalam artikel lalu yang direvisi untuk
keperluan ini. Titik desimal pada tampilan satuan dinyalakan dengan tahanan
R8. Setiap
kali tombol Start ditekan, AT89C2051 membangkitkan pulsa ultrasonic pada Pin
P3.4 yang
dipancarkan dengan rangkaian Gambar 3, selanjutnya lewat pin
P3.5 yang
terhubung ke rangkaian penerima ultrasonic di Gambar 4, sambil mengukur selang
waktu AT89C2051 memantau datangnya pulsa pantul.
Hasil pengukuran waktu itu, dengan sedikit perhitungan matematis ditampilkan di
sistem penampil 7 ruas sebagai besaran jarak, dengan satuan centimeter dan 1
angka dibelakang titik desimal.
Gambar 2 Rangkaian Kontrol & Tampilan (klik kanan view image->biar jelas)
Pemancar pulsa
Ultrasonic
Pulsa Ultrasonic dibangkitkan di pin P3.4 AT89C2051 (ULTRA_OUT)
dengan potongan Program 1, sebagai berikut:
Potongan Program 1 - Membangkitkan sinyal ultra sonic
1
PulsaUltraSonic:
2
MOV R7,#24 ;Nilai
awal R7 = 24
3
Loop:
4
NOP ;waktu
untuk mengerjakan baris 4..14
5
NOP ;= 12
mikro-detik
6
NOP
7
NOP
8
NOP
9
NOP
10
NOP
11
NOP
12
NOP
13
CPL Ultra_Out
;Ultra_Out (P3.4) := not Ultra_Out
14
DJNZ R7,Loop ;Turunkan
nilai R7, ulangi lagi kalau R7<>0
15
RET
Processor memerlukan waktu untuk melaksanakan instruksi. Bagi AT89C2051 yang
bekerja pada frekuensi 12 MHz, instruksi
NOP (baris 4
sampai 12); instruksi
CPL (baris
13) dilaksanakan dalam waktu 1 mikro detik, dan 2 mikro detik untuk melaksanakan
instruksi DJNZ
(baris 14). Dengan demikian waktu yang diperlukan untuk melaksanakan
instruksi-instruksi di baris 3 sampai 13 adalah 12 mikro detik.
Di
baris 12, nilai Ultra_Out (= pin
P3.4) dibalik,
kalau semula
Ultra_Out bernilai 0 setelah instruksi ini dijalankan
Utltra_Out
akan bernilai
1,
dan sebaliknya kalau semula
1 dan
berbalik menjadi
0.
Di baris 13 nilai
R7
dikurangi 1, selama
R7 belum mencapai
0 AT89C2051
akan mengulang lagi baris 2 dan seterusnya. Di baris 1
R7 diberi
nilai 24, dengan demikian baris 2 sampai 13 akan diulang sebanyak 24 kali, dan
selama itu pin 3.4 akan berbalik dari 0 ke 1 dan 0 kembali sebanyak 12 kali.
Dengan demikian, hasil kerja Potongan Program 1 adalah pulsa ultrasonic12
gelombang dengan frekuensi 1/24 mikrodetik = 41666 Hz.
Gambar 3 Rangkaian Pemancar Ultra Sonic
Pulsa
ultrasonic diperkuat dan dipancarkan dengan rangkaian pemancar Ultrasonic di
Gambar 3. Rangkaian ini dibangun dengan Inverter CMOS MC14049, inverter
U1B dipakai
untuk membalik fasa sehingga tegangan di output gabungan
U1A &
U1C akan
selalu berlawanan dengan tegangan di output gabungan
U1D &
U1E, dengan
demikian amplitudo ultrasonic yang sampai di tranduser ultrasonic menjadi 2 kali
lipat. C1
dipakai untuk menahan arus DC, sehingga hanya sinyal ultrasonic saja yang bisa
masuk ke tranduser ultrasonic.
Penerima pulsa
Ultrasonic
Rangkaian Penerima Ultrasonic pada Gambar 4, merupakan rangkaian yang umum
dipakai untuk penerima ultrasonic, rangkaian ini bisa diganti dengan rangkaian
yang lain, asalkan saat tidak ada sinyal ultrasonic keluarannya (ECHO_IN)
bernilai ‘1’
dan menjadi ‘0’
begitu menerima sinyal ultrasonic, sesuai dengan kondisi yang dipantau AT89C2051
lewat Potongan Program 2.
Gambar 4 Rangkaian Penerima Ultra Sonic
Pengukuran selang
waktu
Pengukuran selang waktu dilakukan dengan bantuan Timer 1 yang ada di dalam IC
AT89C2051 seperti terlihat pada Gambar 5.
TL1 dan
TH1 merupakan
bagian dari Timer 1, masing-masing berupa pencacah 8 bit yang diuntai menjadi
pencacah 16 bit (Mode 1).
TR1 berfungsi
untuk mengatur masuknya sinyal 1 MHz ke untaian pencacah, saat
TR1 bernilai
0 tidak ada sinyal yang masuk, saat bernilai 1 maka untaian pencacah akan
mencacah dari
0
sampai $FFFF
(heksadesimal) dan kembali lagi ke 0, dan diikuti
TF1 menjadi
1.
Gambar 5 Pengukur Waktu
Pengukuran selang waktu antara saat pulsa ultrasonic dikirim dan pulsa pantul
diterima dilakukan dengan Potongan Program 2 sebagai berikut :
TR1 diberi
nilai 1 agar untaian pencacah bekerja (baris 1) dan ditunggu sampai isi pencacah
menjadi 0 dengan cara menunggu
TF1 sampai
bernilai 1 (baris 2 dan 3). Segera setelah itu dibangkitkan pulsa ultrasonic
dengan memanggil sub-rutin di Potongan Program 1 (baris 4), disusul menunggu
pantulan pulsa dengan cara memantau
P3.5 sampai
bernilai 0 (baris 5 dan 7, abaikan dulu baris 6), setelah itu
TR1 diberi
nilai 0 (baris 7). Dengan demikian posisi untaian pencacah
TL1/TH1
yang terakhir merupakan lamanya selang waktu dalam satuan mikro detik.
Kalau jarak yang diukur terlalu jauh, pulsa ultrasonic yang dikirimkan tidak
terpantulkan, akibatnya AT89C2051 akan menunggu terus di baris 5 dan 7, agar
hal ini tidak terjadi ditambahkan baris 6, yakni sambil menunggu pulsa pantulan
dipantau pula apakah untaian pencacah sudah melimpah, kalau sampai melimpah maka
tidak perlu menunggu pulsa pantulan lagi, aliran program dialihkan ke
Selesai, dan
untaian pencacah dihentikan.
Potongan Program 2 -
Mengukur waktu pantulan ultra sonic
1
SET TR1 ; Hidupkan untaian
pencacah
2
SampaiNol:
3
JNB TF1,SampaiNol ; Tunggu selama
TF1 masih =1
4
ACALL PulsaUltraSonic ; Bangkitkan pulsa
Ultrasonic
5
TungguPantulan:
6
JB TF1,Selesai ; TL1/TH1 melimpah?
Ya, stop
7
JB P3.5,TungguPantulan ; Tunggu selama
P3.5 =1
8
Selesai:
9
CLR TR1 ; Matikan untaian
pencacah
Perhitungan jarak
Seperti diketahui, kecepatan rambat suara di udara adalah 34399.22 cm/detik,
berarti untuk merambat sejauh 1 cm suara membutuhkan waktu 29 mikro detik.
Selang waktu yang sudah tercatat di untaian pencacah
TL1/TH1 (Potongan
Program 3, baris 2 sampai dengan 4) setara dengan dua kali jarak pemancar
ultrasonic dengan penghalang. Selang waktu tersebut dalam satuan mikro detik,
untuk mengubah menjadi jarak (cm) harus membaginya dengan bilangan 58 (Potongan
Program 3, baris 10 sampai dengan 13).
Untuk mendapatkan angka pecahan di belakang desimal, karena rutin arithmatik
yang dipakai adalah rutin perhitungan bilangan bulat (integer), maka sebelum
pembagian di atas nilai
TL1/TH1
dikalikan dulu dengan 10 (Potongan Program 3, baris 10 sampai dengan 13).
Potongan Program 3 -
Menghitung jarak
1
CLR A
2
MOV Operand,TL1
3
MOV Operand+1,TH1
4
MOV Operand+2,A
5
MOV Pengali,#10
6
MOV Pengali+1,A
7
MOV Pengali+2,A
8
ACALL Perkalian ;HasilKali := 10 *
TL1_TH1
9
;
10
MOV R0,#HasilKali
11
MOV R1,#Operand
12
ACALL Copy ;Copy-kan isi
HasilKali ke Operand
13
MOV Pembagi,#58
14
MOV Pembagi+1,#0
15
MOV Pembagi+2,#0
16
ACALL Pembagian ;HasilBagi :=
(10*TL1_TH1) / 58
Perhitungan di atas adalah perhitungan secara biner, bilangan biner ini dirubah
dulu menjadi bilangan desimal agar bisa ditampilkan. Bilangan biner tersebut
dibagi dengan 1000 untuk mendapatkan angka ribuan, sisanya dibagi dengan 100
untuk mendapatkan angka ratusan dan seterusnya, seperti terlihat pada Potongan
Program 4.
Potongan Program 4 - Jarak dalam bentuk biner dirubah ke
desimal untuk ditampilkan
1
MenampilkanHasil:
2
ACALL HapusTampilan
3
;
4
MOV DPTR,#AngkaPembagi ;Mulai dengan 1000
5
MOV R7,#4 ;Maksimum 4 digit
6
MOV R4,#RuasRatusan
7
CLR F0 ;Belum pernah
simpan
8
9
MOV R0,#HasilBagi
10
MOV R1,#SisaBagi
11
ACALL Copy
12
DigitBerikutnya:
13
MOV R0,#SisaBagi
14
MOV R1,#Operand
15
ACALL Copy
16
17
* Ambil AngkaPembagi dari Tabel
18
19
CLR A
20
MOV Pembagi+2,A
21
MOVC A,@A+DPTR
22
INC DPTR
23
MOV Pembagi,A
24
25
CLR A
26
MOVC A,@A+DPTR
27
INC DPTR
28
MOV Pembagi+1,A
29
30
ACALL Pembagian ;SisaBagi dibagi 1000;
100; 10 dan 1
31
32
MOV A,HasilBagi HasilBagi=0?
33
JNZ SimpanRuas ;Tidak, jadikan simpan
ruas
34
JNB F0,Berikutnya ;Belum pernah simpan dan
0
35
SimpanRuas:
36
SETB F0 ;Sudah pernah simpan
angka
37
ACALL JadikanRuas
38
MOV R0,$04 ;R0 <- R4
39
MOV @R0,A ;Simpan
40
Berikutnya:
41
INC R4
42
DJNZ R7,DigitBerikutnya
43
RET
44
45
AngkaPembagi:
46
DW 1000
47
DW 100
48
DW 10
49
DW 1
Penutup
Rancangan di atas bisa dipakai untuk mengukur jarak sampai sejauh lebih kurang
10 meter, pada jarak tersebut waktu rambat suara lebih kurang sebesar 2 x 1000
cm x 29 mikro-detik/cm = 58.000 mikro detik, hampir mencapai angka maksimum yang
bisa ditampung untaian pecacah
TL1/TH1
yang
65535.
Meskipun demikian untuk bisa mengukur sejauh itu, rangkaian pemancar dan
penerima ultrasonic harus benar-benar dalam keadaan yang baik, terutama harus
dipilih tranduser ultrasonic yang prima. Alat ini akan punya nilai komersil yang
baik jika tampilan 7 ruas dengan LED diganti dengan tampilan LCD, agar pemakaian
dayanya kecil dan bisa bekerja dengan baterai saja. Pemakaian LCD akan
dibicarakan pada artikel lain.
Program untuk mengendalikan AT89C2051 harus diisikan ke dalam IC microcontroller
itu, untuk itu diperlukan alat yang dinamakan sebagai AT89C2051 Flash PEROM
Programmer. Alat ini sangat sederhana, hanya memakai sebuah IC 74HC574A ditambah
dengan sistem catu daya dan dihubungkan ke komputer PC lewat printer port.