29
BAB III PERANCANGAN DAN PEMBUATAN SISTEM DETEKSI JARAK MENGGUNAKAN INFRA MERAH DAN ULTRASONIK
3.1 Sistem Deteksi Jarak Menggunakan Infra Merah 3.1.1
Sistem Deteksi Infra Merah
Ada beberapa macam alat deteksi infra merah yang tersedia di pasaran, yang paling buruk kualitasnya adalah photoresistor infra red, kemudian photodiode yang merupakan dasar dari phototransistor, dan yang paling banyak dipakai yaitu phototransistor, karena memiliki kepekaan yang jauh lebih tinggi daripada photodiode dikarenakan oleh kemampuan penguatan arus yang dimiliki oleh transistor itu sendiri.
Untuk keperluan deteksi ini, saya menggunakan produk dari Fairchild Semiconductor berupa phototransistor untuk infra merah dengan tipe L14G3.
Gambar 3.1
Fototransistor L14G3 (Fairchild Semiconductor)
Gambar 3.2
Karakteristik elektronik dari fototransistor L14G3 (Fairchild Semiconductor)
Phototransistor yang banyak terdapat di pasaran merupakan bentuk integrated dari bentuk sederhana dari phototransistor ini, yang banyak dipakai untuk remote control TV atau AC. Phototransistor tersebut didalamnya sudah dilengkapi dengan komparator dan signal conditioner yang lain, sehingga tegangan keluarannya hanya low dan high saja. Oleh karena itu, saya pakai phototransistor yang masih original dalam sistem ini.
Komponen ini memiliki sensitivitas yang tinggi, terbukti bahwa ia menghasilkan tegangan maksimum saat dihadapkan pada langit berawan di siang hari. Hal itu akan menjadi gangguan yang besar jika nantinya robot digunakan di daerah yang
30
cukup terang atau memiliki intensitas infra merah yang cukup tinggi. Untuk mengatasinya, saya tambahkan sedikit modifikasi dalam pengemasan berupa filtering sinar infra merah menggunakan tutup cukup gelap.
+5 V L14G3
V out (AN0)
Gambar 3.3
1nF
1nF 10kΩ
500Ω Gd
Skema rangkaian detektor infra merah
Daerah deteksi dari phototransistor yang saya gunakan memiliki jangkauan sudut ±10° di depan detektor, sehingga cukup baik untuk mendeteksi objek di depan detektor, tanpa mengalami banyak gangguan yang disebabkan oleh infra merah dari arah lain.
Untuk mengurangi noise, rangkaian detektor ini diberi high pass filter untuk frekuensi diatas 10 kHz, tentu saja sinyal yang dipancarkan oleh LED merupakan sinyal dengan frekuensi lebih tinggi dari 10 kHz, yaitu 40 kHz.
Nilai hasil keluaran ini merupakan nilai analog yang setara dengan intensitas cahaya pada daerah tertentu. Hasil analog ini kemudian masuk ke dalam ADC untuk diolah secara digital.
31
Berikut adalah skema rangkaian deteksi jarak menggunakan infra merah secara lengkap. 7805 a1
Gd
9v 1
b1
2
0
1µF
100 nF
100nF
L14G3
1nF
1nF 10kΩ
R 5,6 kΩ
500Ω R 330Ω
4 MHz
1 2 3 4 5 6 7 8 9 10 11 12 13 14
28 MCLR RB7 27 RA0, AN0 26 RA1 25 24 23 22 RA5 21 Vss/Gd RB0 20 OSC1 Vdd 19 OSC2 Vss 18 RC0 RC7 17 16 15 RC3 RC4
1 2 3 4 5 6 7 8
TR 1015 a b c d e f g h
Vcc
1 2 3 4 5 6 7 8
a b c d e f g h
Vcc
1 2 3 4 5 6 7 8
a b c d e f g h
Vcc
8. 8. 8. 7- segment
TR 1015
PIC 16F876
R 5,6 kΩ R 330Ω IR LED
Gambar 3.4
Skema rangkaian lengkap untuk deteksi jarak menggunakan infra merah
3.1.2 Pengiriman sinyal infra merah
Gambar 3.5
Skema rangkaian transmitter infra merah
32
Untuk menghasilkan sinyal infra merah yang cukup kuat, saya menggunakan 2 LED infra merah yang disusun paralel satu sama lain dengan arah sejajar dengan arah deteksi oleh fototransistor. Konfigurasinya adalah sebagai berikut : Depan Shielding
IR LED
fototransistor
IR LED konvensional memiliki wilayah transmisi optimal pada sudut kurang dari 10°, meskipun begitu, intensitas yang dipancarkan dari sisi-sisinya masih sebesar kira-kira sepersepuluh intensitas yang dipancarkan ke arah depan. Untuk itu, maka LED infra merah ini perlu diberi shielding selubung dan juga belakang, sementara bagian depan terbuka bebas. Shielding yang digunakan adalah bahan yang bersifat menyerap hampir semua sinar infra merah yang diterimanya. Selotip elektrik warna hitam sudah mencukupi untuk keperluan tersebut.
Nyala dan mati dari IR diatur oleh mikrokontroller, namun besar tegangan high yang dihasilkan oleh mikrokontroller tidak cukup besar untuk menghasilkan intensitas infra merah yang diharapkan. Oleh karena itu, fungsi transisitor sebagai saklar ditambahkan sebagai pemberi power untuk LED. Sumber power langsung diambil dari sumber pusat sebesar +5V dan dialirkan pada led dan resistor led dengan mengatur low high pada Base transistor NPN yang digunakan. Sinyal dikirimkan melalui IR LED dalam bentuk pulsa-pulsa 40kHz.
33
3.1.3 Pengolah Sinyal Pengolahan sinyal baik dalam segi pengiriman maupun penerimaan analog dilakukan dalam mikrokontroller PIC 16F876. Di dalam mikrokontroller ini, sinyal analog hasil pantulan oleh objek dari sinyal transmisi IR LED diolah bersama-sama dengan nilai sinyal ambien untuk menghitung jarak objek terhadap sistem. Disamping menghitung jarak, PIC juga mengatur sistem display pada 7segmen. Lebih lengkapnya dari proses-proses ini akan di jelaskan pada sub bab Pengolahan Sinyal.
3.1.4 Display
Gambar 3.6
Skema rangkaian display 7-segmen
Hasil pengolahan sinyal kemudian dikirimkan pada sistem display LED 7segment dalam 3 digit yang langsung menunjukkan hasil pengukuran jarak oleh PIC. Untuk keperluan ini, saya menggunakan 7-segmen common anode yang menggunakan 1 input power untuk 8 keluaran pada 7-segmen.
34
Proses display ini dilakukan secara bergantian untuk tiap 7-segmen, menggunakan 8 bit data dan 3 bit pengatur nyala masing-masing 7-segment. Prosesnya adalah sebagai berikut : -
Misalkan nilai jarak hasil pengolahan adalah 15,2 cm, maka ketiga angka itu harus dikirim masing-masing ke 3 7-segmen yang dipakai.
-
Angka pertama adalah satu, yang dikirim pada ketiga 7-segmen sekaligus, agar yang menyala hanya 7-segmen paling kiri, maka hanya 7-segmen paling kiri saja yang diberi power melalui transistor yang diatur oleh 3 bit pengendali display.
-
Angka kedua dikirimkan pada 7-segmen tengah, untuk itu, 7-segmen sebelah kiri dan kanan tidak diberi power sedangkan 7-segmen tengah dinyalakan.
-
Proses ini dilanjutkan untuk 7-segmen paling kanan, kemudian kembali ke yang paling kiri dan terus berkesinambungan untuk menampilkan hasil pengukuran.
3.1.5 Power Supply Kebutuhan power untuk sistem ini dipenuhi dengan memberikan beda potensial DC yang konstan menggunakan regulator DC 7805. Rangkaiannya adalah sebagai berikut :
Gambar 3.7
Skema rangkaian power supply
35
3.1.6 Pengolahan Sinyal Sinyal dari detektor hanya berupa besar tegangan yang bersesuaian dengan intensitas infra merah yang diterima oleh detektor. Untuk itu, pengolahan intensitas tersebut dilakukan melalui proses di bawah ini, dengan flowchart sebagai berikut :
Gambar 3.8
Flowchart deteksi jarak menggunakan infra merah
Proses dimulai dari inisialisasi PIC, inisialisasi ini berisi inisialisasi PORT inputoutput pada PIC yang digunakan, inisialisasi proses ADC dan pengaturan konversinya itu sendiri, kemudian dialnjutkan dengan pengaturan pola tampilan serta pengaturan-pengaturan lain yang diperlukan.
Proses berikutnya adalah pengiriman pulsa 40 kHz, atau sinyal dengan perioda 25 µs. Dari 25 µs ini, 12 µs dipakai untuk mengirim nilai high dan 13 µs untuk nilai low nya. Jumlah pulsa 40 kHz yang dikirim adalah sebanyak 60 pulsa, atau
36
selama 60 x 25 µs= 1500 µs=1,5 ms. Nilai intensitas pantulan diambil pada pulsa ke 30 dengan mengaktifkan ADC dan berakhir setelah proses konversi selesai dilakukan. Proses kemudian melanjutkan sisa pulsa yang belum terkirim. Nilai intensitas dari ADC ini memiliki lebar 10 bit dengan nilai tertinggi 1023 didapatkan jika tegangan yang masuk ke ADC = tegangan power positif PIC (Vss), dan low saat tegangan ADC = ground. Nilai ini kemudian disimpan di salah satu register dalam PIC.
Setelah 60 pulsa 40 kHz selesai dikirim, dibuat jeda sebelum mengukur intensitas ambien. Jeda ini dibuat karena LED memiliki waktu pengosongan/penghentian aliran arus. Setelah jeda, ADC kembali diaktifkan untuk mengambil nilai tegangan saat LED padam, sehingga nilai yang terukur benar-benar nilai intensitas infra merah ruangan.
Proses berikutnya adalah mengolah kedua data yang telah didapat di atas. Prosesnya adalah sebagai berikut : 1.
Nilai ambien dikurangkan dari nilai maksimum yang mungkin terukur, dalam hal ini yaitu nilai 1023. Tujuannya adalah untuk mendapat intensitas murni dari LED. Ini dimaksudkan agar ketika sistem dipakai di lingkungan yang memiliki intensitas Infra merah yang berbeda-beda, sistem dapat menghitung berapa kekuatan intensitas dari LED relatif terhadap intensitas ambien.
2.
Nilai refleksi kemudian dikurangkan dari nilai ambien, hal ini untuk mendapat intensitas mutlak dari refleksi itu sendiri.
37
3.
Setelah mendapat kedua nilai diatas, proses berikutnya adalah mengaitkan kedua nilai dengan aturan fisika yang berhubungan. Intensitas cahaya akan berkurang seiring kuadrat jarak dari sumber, sehingga persamaan sederhana berikut bisa diterapkan :
R =k*
I0 Ir
(3.1)
Dengan R sebagai jarak terukur, I0 merupakan intensitas LED, dan Ir merupakan intensitas pantul. Nilai k akan dihitung kemudian karena nilai k ini akan bergantung pada daya absorpsi infra merah oleh bahan. 4.
Proses berikutnya adalah menampilkan nilai terukur yang dilanjutkan dengan mengulang proses dari pengiriman sinyal 60 pulsa 40 kHz lagi dan seterusnya.
Untuk meminimalisir noise dari lingkungan, dapat digunakan lebih banyak IR LED sehingga nilai intensitasnya selalu lebih besar dari intensitas lingkungan, namun sebaliknya, untuk fototransistornya sendiri perlu ditambahkan shielding yang lebih tebal, karena fototransistor memiliki batas maksimum intensitas yang dapat menghasilkan perubahan pada tegangan keluaran.
38
3.2 Sistem Deteksi Jarak Menggunakan Ultrasonik Alat ukur jarak ini menggunakan modul transmitter dan receiver ultrasonik dengan memanfaatkan pantulan gelombang ultrasonik pada bidang. Riset di sensor ini telah lama berkembang, meningkatkan kemampuan dari modul sensor sehingga menghasilkan nilai baca yang cukup akurat. Alat yang saya buat merupakan salah satu bentuk dari teknologi tersebut.
Secara mendasar, alat ukur jarak menggunakan modul sensor ultrasonik mengukur waktu pantul dari transmitter oleh bidang yang dibaca oleh receiver dan dilakukan oleh mikroprosessor.
Gambar 3.9
Cara kerja sensor ultrasonik (Seichi Innoue)
Jarak yang terukur didefinisikan oleh :
d=
v.t 2
(3.2)
39
Yang kemudian harus dipenuhi adalah cara agar pengukuran tersebut dapat setepat mungkin, pasalnya ada beberapa masalah mendasar yang perlu dikalibrasi, yaitu : 1.
Kecepatan bunyi di udara tidak selalu tepat
2.
Sinyal ultrasonik dari sensor memiliki amplitudo yang kecil
3.
Noise dari gelombang akustik sekitar alat
4.
Membedakan antara gelombang langsung dari transmitter dengan gelombang dari pantulan terhadap bidang
5.
Mengolah data dan menampilkan
Berikut ini akan disampaikan penjelasan mengenai komponen-komponen hardware per blok kerja dalam sistem sensor ini.
40
Gambar 3.10
Skema rangkaian deteksi jarak menggunakan ultrasonik
41
3.2.1 Receiver untuk sinyal ultrasonik 1.
Modul receiver dan penguatan sinyal dari modul tersebut
Sensor ultrasonik yang saya gunakan adalah sepasang transmitter dan receiver ultrasonik umum.
Gambar 3.11
Penampang sensor ultrasonik (NICCERA, Co. Ltd)
Spesifikasi dari sensor ini yaitu : 1.
Frekuensi kerja 40 kHz
2.
Sound pressure level < 115 dB
3.
Sensitivitas < -64 dB
4.
Ukuran : diameter 16,2 mm , tinggi 12,2 mm, interval 10 mm.
Berikut spesifikasinya dan bentuknya.
42
Gambar 3.12
Bentuk-bentuk sensor dari NICCERA (NICCERA, Co. Ltd)
43
Output dari sensor ini sangat kecil, perlu dikuatkan 1000 kali. Penguatan 1000 kali tersebut menggunakan rangkaian penguat berikut.
Gambar 3.13
Receiver dan penguatan 1000 kali
Penguatan dilakukan melalui 2 tahap untuk menghindari noise berlebih. Bagian pertama adalah penguat pembalik 100 kali dan yang kedua 10 kali masing-masing menggunakan penyaring noise rangkaian RC. Secara umum, op-amp bekerja dengan menggunakan power positif dan negatif dari power supply, untuk rangkaian ini digunakan input positif saja, sementara Vee ditanahkan. Dengan menggunakan tegangan bias 4,5 volt untuk input positifnya, sehingga tegangan AC dapat dikuatkan dengan tegangan pusat 4,5 volt saja. Jika menggunakan opamp dengan negative feedback, maka tegangan antara antara input terminal positif dan input terminal negatif manjadi kira-kira sama besar (virtual grounding). Tujuan teknik ini adalah agar baik sisi positif maupun sisi negatif dari input AC dari receiver dapat dikuatkan dengan menggunakan tegangan bias, selain itu, untuk mencegah distorsi pada input AC. 44
Op-amp yang digunakan adalah LM-833N, yaitu IC low noise operational amplifier, pemilihan ini dikarenakan penguatan yang dilakukan sebesar 1000 kali.
2.
Signal conditioning
Gambar 3.14
Dioda dan penyearah
Agar dapat masuk ke tahap-tahap pengolahan sinyal berikutnya, maka sinyal AC dengan frekuensi tinggi dari receiver diubah menjadi sinyal DC. Penyearahan ini menggunakan dioda sebagai penyearah. Dioda yang digunakan adalah shottky barrier dioda yang memiliki karakteristik frequensi tinggi sehingga dapat digunakan untuk memotong sinyal 40 kHz.
3.
Bagian pendeteksi sinyal
Pendeteksian dari sinyal input menggunakan prinsip kerja komparator.
Gambar 3.15
LM358 dan komparator
45
Prinsip kerja dari komparator ini adalah dengan membandingkan 2 inputnya, input negatif adalah input konstan dari power supply (Vrf) dan input positif adalah input dari receiver ultrasonik yang sudah dikondisikan. Jika tegangan input positif lebih besar daripada input negatif (Vrf) maka keluarannya sama dengan tegangan input power pada komparatornya (nilai H=Vcc=9 volt), dan jika sebaliknya, maka keluarannya adalah 0 volt (nilai L). Besar Vrf ini adalah :
Vrf =
( RbVcc . ) (47 kOhm .9 volt ) = = 0,4 volt ( Ra + b) (1 MOhm + 47 kOhm)
(3.3)
Dengan menambahkan resistor ditanahkan pada outputnya, maka output 9 volt ini dikecilkan menjadi kira-kira 5 volt sehingga dapat masuk ke pengolah digital. Komparator yang digunakan adalah LM-358, yaitu op-amp dengan input power tunggal low power amplifier.
46
4.
Penahan sinyal input
Bagian ini berfungsi untuk mencegah pembacaan sinyal pada saat yang tidak tepat, yaitu untuk menghindari pembacaan langsung sinyal dari transmitter yang sedang mentransmisi sinyal dan bukanlah sinyal hasil pantulan terhadap bidang.
Gambar 3.16
IC 4011 dan RS-FF
Dengan menggunakan rangkaian D-type flip-flop (RS-FF) seperti gambar diatas, sinyal 5 volt yang masuk ke A hanya bisa keluar di D jika nilai C adalah high (H). Waktu kemunculan H dari C ini diatur oleh mikroprosessor yaitu setelah transmisi selesai dilakukan dan kembali nol (L) jika sistem akan memulai transmisi sinyal lagi. Keluaran dari bagian D akan masuk sebagai capture input pada PIC 16F877 melalui CPP1, sedangkan nilai C adalah keluaran dari port A5 (RA5) dari PIC. Untuk rangkaian flip-flop tersebut, digunakan IC NAND 4 gerbang 2 input jenis 4011B.
47
3.2.2 Transmitter sinyal ultrasonik Sinyal ultrasonik dibangkitkan menggunakan rangkaian berikut,
Gambar 3.17
IC 4069 dan transmitter ultrasonik
Perintah transmisi dikeluarkan oleh mikroprosessor melalui gerbang NAND dan tanpa NAND untuk membentuk suatu sinyal On-Off pada ransmitter. Dua sistem inverter dipasang secara parallel digunakan karena saat pengiriman terjadi penguatan daya listrik. Transistor digunakan untuk mengubah tegangan +9 volt dari sumber menjadi + 5 volt agar dapat ke C-MOS NAND 4069. Kapasitor berfungsi untuk menggabungkan input dari 2 sistem inverter sehingga tegangan yang diterima transmitter adalah 2 kali lipat dari sinyal inverter.
Gerbang NAND memanfaatkan gerbang dari IC 4011B untuk RS-flip-flop di atas, sedangkan inverter menggunakan IC NOT 6 gerbang 4069.
48
3.2.3 Display system
Gambar 3.18
Sistem 7 segmen dan TR A1015
Untuk keperluan display, digunakan 3 buah led 7-segmen berjenis Anode Common Diode, yang menyala jika terjadi grounding dan mendapat input positif pada pin 3 atau 8. Transistor digunakan untuk memberi cukup tegangan untuk operasi 7-segmen. Nilai yang ditunjukkan diberikan oleh port B0-B6 dari mikroprosessor. Resistor digunakan untuk mengurangi tegangan yang masuk ke 7-segmen display.
Transistor yang digunakan untuk mengendalikan bagian anode dari 7-segment ini adalah tipe PNP A1015, sedangkan 7-segment yang digunakan adalah tipe SM41050 1k dengan dimensi 18.8 mm x 12 mm x 8 mm.
49
3.2.4 Kalibrator temperatur
Gambar 3.19
Proses penyesuaian nilai terukur
Fitur ini bagian A/D converter built in di dalam mikroprosessor yang digunakan (PIC16F877). Dengan mengukur tegangan masukan yang dipengaruhi resistansi luar yang sensitif terhadap temperatur, dan mengambil nilai digitalnya sebagai referensi untuk memilih pembagi. A/D converter ini bekerja pada 0-5 volt sebesar 10 bit. Sebagai contoh, tegangan masuk ke ADC menghasilkan nilai digital 54 (3A h) pada 3 bit awal, ini digunakan sebagai penyebut untuk membagi nilai yang dihasilkan pada perhitungan awal yang disimpan di salah satu register di dalam mikroprosessor. Bit-bit setelah 3 tidak digunakan karena meskipun digunakan, tetap saja hasilnya akan dipotong di bagian desimalnya oleh sistem hitung digital ini, sehingga membuat perhitungan tidak efisien.
50
3.2.5 Resonator 4 Mhz Resonator ini digunakan untuk meningkatkan resolusi dari alat. Untuk menghasilkan 1 loop operasi, dengan reonator ini dihasilkan waktu sebesar 65,535 milisekon (1 operasi selama 1 mikrosekon) yang artinya cukup untuk membaca jarak sejauh : 2 d = v.t = 340 m / s × 65.535 ms = 22, 281 m
(3.4)
3.2.6 Power supply
Gambar 3.20
Power supply beserta IC 7805 dan 78L09
Input untuk keseluruhan sistem ini adalah satu sumber +12 Volt, namun, untuk mengoperasikan komponen aktif, dibutuhkan tegangan + 5 volt dan + 9 volt. Untuk itu, digunakanlah regulator tegangan 7805 yang mengubah tegangan +12 volt menjadi + 5 volt, dan IC 78L09 yang mengubah tegangan +12 volt menjadi + 9 volt.
51
IC yang digunakan untuk regulator 5 volt dari 12 volt DC adalah IC 7805 yang memiliki output arus maksimum 1 ampere, dan untuk regulator 9 volt menggunakan 78L09 dengan maksimum arus keluaran 100 mA.
3.2.7 Pengolahan Sinyal Berikut merupakan flowchart software dari sistem deteksi jarak menggunakan ultrasonik.
52
Mulai
Proses deteksi
[ Inisialisasi ] Inisialisasi port Inisialisasi selang waktu transmisi (TMR0) Inisialisasi pencatat waktu penangkapan sinyal (TMR1) Inisialisasi ADC Inisialisasi selang waktu display Inisialisasi interupsi global
Matikan flag interupsi masuknya sinyal Ambil nilai dari TMR1 Ambil koreksi ADC Hitung jarak
Return
Akhiri interupsi dari penghitung waktu transmisi
Proses Display Ada deteksi pada perioda sebelumnya?
Display Error Konversi nilai biner menjadi desimal Olah data ratusan, puluhan dan satuan menjadi data 7 segmen
Matikan detektor Mulai pencatat waktu penangkapan sinyal Kirim sinyal ultrasonik 0,5 ms
Tampilkan hasil pengukuran Ambil nilai koreksi dari ADC Matikan interupsi dari TMR1 (1 ms)
Return
Detektor diaktifkan
Terjadi deteksi?
Proses Deteksi
Ada interupsi TMR0?
Proses display
Gambar 3.21
Proses kerja perangkat lunak untuk ultrasonik
53
Proses secara umum
Gambar 3.22
Proses transmisi-deteksi
Alur kerja mikroprosesor kemudian dijelaskan dalam 7 poin berikut.
3.2.7.1 Inisialisasi Proses inisialisasi ini dimulai dengan inisialisasi port PIC yang akan digunakan, yaitu port A0 digunakan untuk ADC kalibrator temperatur, RC2 untuk membaca sinyal (CPP1) dan lainnya untuk output. Berikutnya adalah inisialisasi selang waktu antar transmisi, yang diatur menggunakan modul timer 0. Dengan mengatur bahwa satu kali increment membutuhkan 256 proses, akan didapat waktu overflownya sebanyak 8-bit dikali 256, atau 256 x 256 = 65536. Jumlah proses ini akan setara dengan 65.536 µs atau 65,536 ms karena jika menggunakan resonator 4 MHz untuk PIC, 1 proses dilakukan selama 1 µs. 54
Berikutnya adalah inisialisasi penangkapan sinyal. Alat ini bekerja dengan cara mendeteksi lama selang waktu antara transmisi dan deteksi, untuk keperluan itu, digunakan modul timer1 dari PIC dengan sumber interupsi luar (melalui CCP1, RC4). Timer 1 ini akan dinyalakan saat pulsa ditransmisikan dan akan berakhir jika ada nilai high di CCP1. Waktu yang terukur akan dicatat pada register milik timer 1.
Berikutnya adalah inisialisasi ADC (Analog To Digital Converter), dengan mengatur bagaimana PORT A bekerja sebagai input, yaitu dengan membuat PORT A0 sebagai input analog sementara lainnya menjadi I/O digital. Proses ini juga mengatur bagaimana cara ADC nya bekerja dan mencatat hasilnya. Inisialisasi berikutnya adalah selang waktu tampilan. Alat ini menggunakan 3 7segment yang dikontrol oleh 3 pin pada PORT A secara bergantian. Oleh karena itu, lama selang waktu dari tiap tampilan menentukan kualitas tampilannya, waktu 10 ms per 7-segmen sudah cukup untuk memberikan tampilan yang jelas pada ketiga 7-segmen, waktu ini diatur menggunakan timer 2 dengan interupsi internal. Bagian inisialisasi yang utama agar semua inisialisasi di atas dapat bekerja adalah inisialisasi interupsi global, yaitu bagaimana urutan interupsi yang diperbolehkan dan bagaimana alat bertindak untuk tiap interupsi.
3.2.7.2 Proses interupsi Jika terjadi interupsi, baik dari TMR0, TMR1, TMR2 maupun CPP, maka flag interupsi dari timer-timer dan CPP tersebut di cek, jika nilainya H (terjadi
55
interupsi) lanjutkan ke langkah yang bersesuaian. Flag GIE (aktivasi interupsi global) otomatis di low kan setelah terjadi interupsi. Jika flag-flag interupsi tidak ada yang H, maka kode error di kirim ke setiap 7 segmen, kemudian mikroprosesor berhenti bekerja dan harus di reset. Setelah proses untuk interupsi tertentu selesai dilakukan, proses dikembalikan ke keadaan idle menunggu interupsi selanjutnya, GIE secara otomatis di set H kembali.
3.2.7.3 Proses pengiriman sinyal ultrasonik Proses pengiriman sinyal ini dimulai dengan menonaktifkan interupsi untuk timer 0 untuk mencegah terjadi interupsi saat pengiriman sinyal ultrasonik. Port C2/CPP1 yang berfungsi sebagai penerima input dari receiver harus di cek, jika selama selang waktu deteksi hingga mulai kirim sinyal lagi masih tidak terjadi deteksi CPP1 L, maka tak ada perhitungan yang menggambarkan pengukuran jarak gagal dilakukan, sehingga perlu dikeluarkan informasi melalui display. Jika CPP1 H, maka diteruskan ke proses detect_off. Proses berikutnya adalah mengatur RS-FF sehingga RS-FF (Reset-set flip-flop) tidak dapat mengeluarkan nilai H, dalam kata lain, mencegah proses deteksi. Kemudian, pengukuran waktu deteksi mulai dijalankan, dengan cara semua flag interupsi di L kan, CCP1CON di setting sehingga penangkapan sinyal jika CCP1 berubah dari L ke H. Interupsi pada CCP 1 diperbolehkan dengan mengeset bit ke 2 dari PIE1, dan flag interupsi CCP1 di PIR1 harus dibuat siap (L).
56
Setelah semua keadaan di atas dipenuhi, barulah proses pengiriman sinyal 40 kHz dilakukan. Perioda dari satu sinyal haruslah 1/40 kHz = 25 µs, atau setara dengan 25 proses, sehingga waktu untuk mengirim data H dan L secara bergantian haruslah 12,5 µs atau 12~13 proses, sehingga pada proses pulse ditambahkan beberapa operasi diam (tanpa operasi). Jumlah gelombang yang dikirim sebanyak 20 gelombang, sehingga lama pulsa = 20 x 25 µs = 0,5 ms.
Setelah pulsa dikirim, kemudian dilakukan pengambilan data kalibrasi dari ADC. Untuk mengambil data dari ADC, bit GO pada ADCON0 harus pada keadaan set, yaitu setelah konversi analog to digital selesai dilakukan. Nilai high bit hasil dari ADC disimpan di register ADRESH, kemudian dipindahkan ke alamat s_adj. Nilai high bit ini kemudian digeser menjadi 3 nilai low bit, misal nilai awal 11010000 digeser menjadi 00000110 dan dijumlahkan dengan d’54’ atau b’00110110’, dan hasil penjumlahannya merupakan nilai pembagi untuk revisi nilai jarak terukur dari CCP1. Lama proses pengambilan data ADC ini kurang dari 20 µs, sehingga dibutuhkan waktu tambahan sebagai selang antara transmisi dan deteksi selama 1 ms. Setelah selang waktu tersebut, barulah interupsi untuk timer 0 diaktifkan, atau proses deteksi sudah boleh diterima dengan cara mengeset RSFF dalam keadaan aktif.
3.2.7.4 Proses interupsi penangkapan sinyal Jika terjadi penangkapan sinyal, maka flag interupsi CCP1 menjadi high, dan proses dilanjutkan pada proses yang bersesuaian dengan interupsinya, dalam hal
57
ini dilanjutkan pada proses penangkapan sinyal. Flag interupsi CCP1 di L kan, dan fungsi tangkap dinonaktifkan dengan men-clear kan CCP1CON.
Nilai yang dicacah oleh TMR0 sebanding dengan selang waktu antara pengiriman sinyal dengan interupsi penangkapan sinyal. Sebagai contoh, jika jarak yang terukur adalah 1 m, dan kecepatan bunyi di udara adalah 343 m/s, maka selang waktu antara pengiriman dan penerimaan sinyal adalah t= 2 x 1/343 = 5831 mikrosekon, dan nilai cacahan di TMR0 adalah 5831. Dengan membagi nilai tersebut dengan 58, didapatlah jarak kira-kira 100 cm. Namun nilai 58 ini perlu disesuaikan dengan kondisi luar, sehingga perlu dikalibrasi dari nilai yang didapat dari ADC. Nilai high bit dari ADC ditambah d’54’ pada poin bagian 2.2.5 no 6 di atas yang kemudian digunakan sebagai pembagi nilai dari TMR0. Proses pembagian di atas adalah pembagian untuk bilangan biner oleh mikroprosesor, berupa pembagian 16 (8 bit CCPR1H dan 8 bit CCPR1L) bit oleh 8 bit (nilai kalibrasi ADC yang disimpan di s_adj 8 bit). Hasilnya disimpan di p_counth dan p_countl.
Setelah proses deteksi, dilakukan juga proses persiapan tampilan. Proses ini dibagi menjadi 3 bagian, masing-masing untuk mengatur nilai pada 7 segmen pertama, kedua dan ketiga yang masing-masing menunjukkan nilai ratusan, puluhan dan satuan dalam cm. Fungsi proses ini untuk merubah nilai biner 16 bit hasil perhitungan menjadi nilai desimalnya, misalkan 11101010 adalah hasil perhitungan dari pembagian nilai TMR0 dengan nilai dari ADC, memiliki bentuk
58
desimal 234. Angka 2 ini disimpan di digit_h, 3 di digit_t dan 4 di digit_u. Jika nilai untuk digit_h didapati ≥ 9, maka akan muncul display eror.
3.2.7.5 Proses tampilan di LED 3 digit yang ditampilkan, hanya dapat ditampilkan bergantian, karena ke 3 digit tersebut hanya dikendalikan oleh RB0-RB6, dan tidak oleh 3 port sekaligus, sehingga perlu 3 kali proses display untuk digit yang berbeda yang di kendalikan oleh RA1-RA3. Bagian c_digit berfungsi untuk mengubah data dari hasil poin 2.2.6 no 3 menjadi bentuk yang sesuai pada LED. Digit_cnt adalah nilai yang akan ditampilkan (lihat aliran data pada inisialisasi display).
59