PERANCANGAN SISTEM SENSOR PENDETEKSI JARAK MENGGUNAKAN INFRA MERAH DAN ULTRASONIK
TUGAS AKHIR
Diajukan Sebagai Salah Satu Syarat untuk Mencapai Gelar Sarjana pada Program Studi Fisika Institut Teknologi Bandung
oleh
Hafidz Mabruri NIM 10203075
PROGRAM STUDI FISIKA FAKULTAS MATEMATIKA DAN ILMU PENEGETAHUAN ALAM INSTITUT TEKNOLOGI BANDUNG 2007
PERANCANGAN SISTEM SENSOR PENDETEKSI JARAK MENGGUNAKAN INFRA MERAH DAN ULTRASONIK
TUGAS AKHIR
Diajukan untuk memenuhi salah satu syarat kelulusan tahap sarjana pada Program Studi Fisika Institut Teknologi Bandung
Oleh :
Hafidz Mabruri 10203075
Telah diperiksa dan disahkan oleh Dosen Pembimbing,
Dr.-Ing. Mitra Djamal NIP: 131 471 335
PROGRAM STUDI FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT TEKNOLOGI BANDUNG 2007
i
Abstrak
Kemampuan deteksi keadaan sekitar oleh suatu robot navigasi merupakan kebutuhan mutlak bagi robot tersebut. Kemampuan deteksi keadaan sekitar yang paling utama adalah mendeteksi posisi benda-benda di sekitarnya disamping deteksi kandungan udara atau deteksi suhu dan sebagainya. Untuk pendeteksian jarak tersebut, berbagai metoda dikembangkan, yang diantaranya memanfaatkan sifat fisis dari gelombang bunyi dan gelombang cahaya (EM). Berkaitan dengan sifat fisis bagi masing-masing gelombang, kedua metode tersebut memiliki kelemahan yang ditutupi satu sama lain, infra merah baik untuk pendeteksian jarak dekat, sedangkan ultrasonik baik untuk pengukuran jarak yang cukup jauh. Dengan mengetahui dan mengerti perilaku fisis dari gelombang EM maupun gelombang bunyi, maka dapat dirancang suatu piranti yang dapat memanfaatkan sifat fisis kedua gelombang tersebut untuk mendeteksi jarak. Untuk keperluan tersebut, digunakanlah mikrokontroller sebagai otak dari sistem yang dirancang.
Kata kunci : Ultrasonik, infra merah, piezoelektrik
mikrokontroller, fototransistor,
KATA PENGANTAR
Atas izin serta rahmat dan berkah Allah Yang Maha Pengasih dan Maha Penyayang, skripsi/tugas akhir dengan judul “Perancangan Sistem Sensor Pendeteksi Jarak Menggunakan Infra Merah dan Ultrasonik” dapat terselesaikan. Puji dan syukur yang dangat dalam penulis panjatkan ke hadirat Allah Yang Maha Kuasa sebagai wujud rasa syukur atas selesainya tugas akhir ini atas izin dan kuasaNya.
Skripsi ini merupakan salah satu syarat kelulusan tahap sarjana penulis di Program Studi Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Teknologi Bandung pada tahap kelulusan termin ke-tiga tahun 2007. Skripsi ini juga merupakan laporan studi dan penelitian serta pengembangan alat ukur jarak menggunakan infra merah dan ultrasonik. Dalam perkembangan pengerjaan tugas akhir ini, telah terjadi banyak sekali perubahan atas ide-ide serta perancangan sistem yang dibuat. Perubahan dan perbaikan itu sendiri muncul sebagai inspirasi dan masukan dari berbagai pihak yang telah banyak membantu dalam proses perampungan tugas akhir ini. Sebagai wujud syukur atas bantuan dan dukungan tesebut dan juga untuk dukungan penyelesaian studi tahap sarjana ini, penulis mengucapkan terima kasih kepada pihak-pihak berikut : 1. Bapak Dr. Ing. Mitra Djamal, selaku dosen pembimbing; atas masukanmasukan yang sangat bermanfaat yang telah diberikannya selama proses pengerjaan tugas akhir ini
ii
2. Dosen-dosen : Bapak Suparno, dan Bapak Gunawan dan Bapak Pepen Arifin atas dukungannya dalam pengujian tugas akhir, serta masukanmasukan dan didikan yang telah diberikan selama saya studi. 3. Bapak Daniel Kurnia, atas ilmu mikroprosessor PIC yang telah membukakan jalan bagi saya menyelesaikan tugas akhir ini dengan mikroprosessor PIC 16F87x. 4. Bapak, Ibu, kakak dan adik sekeluarga yang menjadi motivasi sekaligus tempat rileks sehingga penulis tetap memiliki semangat mengerjakan tugas akhir ini. 5. Keluarga di Cipadung, di Sindang Sari, Bojong Raya, Pekalongan dan Citopeng yang juga memberikan support dan bantuan yang tiada terukur 6. Kawan-kawan T3 Fisika, Martin, Opik, Atep, Zaki, Badai, Dian, Puput, Kaswandhi, Luan, Bogel dll.... gak ada lo gak rame.... Terutama untuk Martin, Ferdi dan Harri Sapto teman seperjuangan, Puput yang sudah banyak membantu dan Dian , makasih HP nya.. 7. Yusuf, Mulki, Wali, Sena, Septian; sekali sahabat tetap sahabat. Dan semua sahabat B-champ-π-one. Ini untuk kalian. 8. Kawan-kawan 2003 di Fisika maupun di Kimia, Matematika dan Astronomi. Juga kawan-kawan HIMAFI 1998-2005, hidup adalah pilihan, setiap pilihan mengandung konsekuensi... 9. Pak Freddy P. Zen, Pak Waris, Pak Freddy Haryanto, Pak Enjang, Pak Bagus, Pak Rizal, Bu Neni, Pak Yeye, Pak Ohin, Pak Dede, Bu Ratna
iii
dan semua yang telah mendidik dan membantu saya selama studi di Fisika. 10. Kawan-kawan alumni OSIS SMUN 13 Bandung, siswa-siswi PKBM Kuncup Mekar, serta semua yang pernah saya bantu dan saya kecewakan ☺ 11. Anak-anak kecil di sekitarku, Aqil, Aris, Fian, Teguh, Arul, Egif, Dila, yang selalu jadi terapi saat penat... ☺ 12. Terima kasih terutama juga penulis ucapkan kepada Rika Nita Utami yang menjadi sumber motivasi dan inspirasi yang telah mewarnai tiap langkah penulis selama sekitar 3 tahun ini.
Atas semua bantuan, dukungan dan nasehat yang telah diberikan, penulis menjadi sangat terbantu baik secara materiil maupun moril. Yang mampu penulis berikan kepada mereka hanyalah ucapan terima kasih serta Do’a semoga setiap kebaikan yang telah mereka berikan dibalas berlipat ganda oleh Allah SWT. Harapan penulis semoga karya ini dapat kemudian bermanfaat baik untuk keperluan studi maupun pengembangan. Terima kasih.
Bandung, September 2007 Penulis dan penyusun
Hafidz Mabruri
iv
DAFTAR ISI
Judul Lembar Pengesahan Abstrak......................................................................................................... i KATA PENGANTAR................................................................................. ii DAFTAR ISI................................................................................................ v DAFTAR GAMBAR................................................................................... viii DAFTAR LAMPIRAN................................................................................ x BAB I
PENDAHULUAN................................................................. 1
1.1 Latar Belakang dan Rumusan Masalah.............................................. 1 1.1.1 Latar Belakang................................................................................... 1 1.1.2 Rumusan Masalah.............................................................................. 1 1.2 Ruang Lingkup Kajian.......................................................................... 2 1.3 Tujuan Penulisan................................................................................... 2 1.4 Anggapan Dasar..................................................................................... 2 1.5 Hipotesis.................................................................................................. 3 1.6 Metode dan Teknik Pengumpulan Data.............................................. 3 1.6.1 Metode............................................................................................... 3 1.6.2 Teknik Pengumpulan Data.................................................................3 1.7 Sistematika Penulisan............................................................................ 4
v
BAB II
TEORI DASAR DETEKSI JARAK MENGGUNAKAN
INFRA MERAH DAN ULTRASONIK..................................................... 6 2.1 Infra Merah............................................................................................ 9 2.1.1 Sumber Infra Merah da Detektor Infra Merah................................... 13 2.1.1.1 LED infra merah................................................................................ 13 2.1.1.2 Fototransistor infra merah.................................................................. 17 2.1.2 Deteksi Jarak Menggunakan Transmitter dan Receiver Infra Merah 21 2.2 Sensor Ultrasonik................................................................................... 23 BAB III
PERANCANGAN DAN PEMBUATAN SISTEM DETEKSI
JARAK MENGGUNAKAN INFRA MERAH DAN ULTRASONIK.... 29 3.1 Sistem Deteksi Jarak Menggunakan Infra Merah............................. 29 3.1.1 Sistem Deteksi Infra Merah............................................................... 29 3.1.2 Pengiriman Sinyal Infra Merah..........................................................32 3.1.3 Pengolah Sinyal................................................................................. 34 3.1.4 Display.............................................................................................. 34 3.1.5 Power Supply.................................................................................... 35 3.1.6 Pengolahan Sinyal............................................................................. 36 3.2 Sistem Deteksi Jarak Menggunakan Ultrasonik.................................39 3.2.1 Receiver Untuk Sinyal Ultrasonik..................................................... 42 3.2.2 Transmitter Sinyal Ultrasonik........................................................... 48 3.2.3 Display System................................................................................... 49 3.2.4 Kalibrator Temperatur....................................................................... 50 3.2.5 Resonator 4 MHz............................................................................... 51
vi
3.2.6 Power Supply..................................................................................... 51 3.2.7 Pengolahan Sinyal..............................................................................52 3.2.7.1 Inisialisasi.......................................................................................... 54 3.2.7.2 Proses interupsi.................................................................................. 55 3.2.7.3 Proses pengiriman sinyal ultrasonik.................................................. 56 3.2.7.4 Proses interupsi penangkapan sinyal................................................. 57 3.2.7.5 Proses tampilan di LED..................................................................... 59 BAB IV
ANALISIS DATA PENGUKURAN JARAK MENGGUNA-
KAN INFRA MERAH DAN ULTRASONIK........................................... 60 4.1 Karakteristik Infra Merah.................................................................... 60 4.2 Karakteristik Ultrasonik....................................................................... 69 4.3 Analisis Infra Merah............................................................................. 74 4.4 Analisis Ultrasonik................................................................................. 77 BAB V
KESIMPULAN DAN SARAN............................................ 80
5.1 Kesimpulan............................................................................................. 80 5.2 Saran....................................................................................................... 82 DAFTAR PUSTAKA................................................................................... 80 LAMPIRAN
vii
DAFTAR GAMBAR
Gambar 2.1
Kinerja robot ..............................................................7
Gambar 2.2
Spektrum cahaya tampak............................................9
Gambar 2.3
Pergeseran Wien......................................................... 11
Gambar 2.4
Absorpsi dan emisi foton............................................ 12
Gambar 2.5
LED infra merah......................................................... 13
Gambar 2.6
Cara kerja dioda..........................................................14
Gambar 2.7
Fototransistor beserta simbolnya................................ 17
Gambar 2.8
Osilasi pegas............................................................... 23
Gambar 2.9
Spektrum akustik........................................................ 25
Gambar 2.10
Penampang samping sensor ultrasonik dari NICCERA .................................................................................... 26
Gambar 2.11
Prinsip kerja sensor ultrasonik................................... 26
Gambar 2.12
Pola intensitas radiasi dari sensor ultrasonik............. 28
Gambar 3.1
Fototransistor L14G3................................................. 29
Gambar 3.2
Karakteristik elektronik dari fototransistor L14G3 (Fairchild Semiconductor).......................................................... 30
Gambar 3.3
Skema rangkaian detektor infra merah....................... 31
Gambar 3.4
Skema rangkaian lengkap untuk deteksi jarak menggunakan infra merah..................................................................32
Gambar 3.5
Skema rangkaian transmitter infra merah...................32
Gambar 3.6
Skema rangkaian display 7-segmen........................... 34
Gambar 3.7
Skema rangkaian power supply.................................. 35
viii
Gambar 3.8
Flowchart deteksi jarak menggunakan infra merah....36
Gambar 3.9
Cara kerja sensor ultrasonik....................................... 39
Gambar 3.10
Skema rangkaian deteksi jarak menggunakan ultrasonik .................................................................................... 41
Gambar 3.11
Penampang sensor ultrasonik.....................................42
Gambar 3.12
Bentuk-bentuk sensor dari NICCERA....................... 43
Gambar 3.13
Receiver dan penguatan 1000 kali............................. 44
Gambar 3.14
Dioda dan penyearah..................................................45
Gambar 3.15
LM358 dan komparator............................................. 45
Gambar 3.16
IC 4011 dan RS-FF.................................................... 47
Gambar 3.17
IC 4069 dan transmitter ultrasonik............................ 48
Gambar 3.18
Sistem 7 segmen dan TR A1015................................49
Gambar 3.19
Proses penyesuaian nilai terukur................................50
Gambar 3.20
Power supply beserta IC 7805 dan 78L09................. 51
Gambar 3.21
Proses kerja perangkat lunak untuk ultrasonik.......... 53
Gambar 3.22
Proses transmisi-deteksi............................................. 54
Gambar 4.1
Konfigurasi deteksi intensitas terhadap jarak............. 60
Gambar 4.2
Kurva linearitas nilai tegangan dan hasil konversi ADC .................................................................................... 61
Gambar 4.3
Kurva hubungan jarak terukur dengan tegangan fototransistor .............................................................. 63
Gambar 4.4
Hubungan rˆ terukur dengan r sebenarnya................67
ix
Gambar 4.5
Sinyal deteksi yang ditangkap menggunakan osiloskop dengan skala 2 Volt/DIV ........................................... 69
Gambar 4.6
Posisi sensor terhadap target di depannya.................. 71
Gambar 4.7
Sinyal untuk jarak kurang dari 1,5 meter................... 71
Gambar 4.8
Konfigurasi karakterisasi sudut.................................. 72
Gambar 4.9
Kurva respon sensor terhadap pergeseran pada arah radial sinyal sensor............................................................... 73
Gambar 4.10
Visualisasi sinyal........................................................ 77
DAFTAR LAMPIRAN LAMPIRAN 1 Assembler Pengukur Intensitas Infra Merah.........................xi LAMPIRAN 2 Assembler Pengukur Jarak Menggunakan Infra Merah........xvii LAMPIRAN 3 Assembler Pengukur Jarak Menggunakan Ultrasonik.......... xxv
x
LAMPIRAN LAMPIRAN 1
Assembler Pengukur Intensitas Infra Merah
;******************************************************** ; ; Infra red counter ; ;******************************************************** list include __config
p=pic16f876 p16f876.inc _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF
;**************** Label Definition cblock h'20' s_count s_adj s_adj_count s_digit hasilh hasill hasilh1 hasill1 p_countl count digit_cnt disp_ha disp_u disp_t disp_h disp_x seg7_ha seg70 seg71 seg72 seg73 seg74 seg75 seg76 seg77 seg78 seg79 seg7a seg7b endc ccp1
equ
h'02'
seg7_0 seg7_1 seg7_2 seg7_3 seg7_4 seg7_5 seg7_6 seg7_7 seg7_8 seg7_9 seg7_a seg7_b
equ equ equ equ equ equ equ equ equ equ equ equ
b'01000000' b'01111001' b'00100100' b'00110000' b'00011001' b'00010010' b'00000010' b'01111000' b'00000000' b'00010000' b'01111111' b'00100011'
********************
xi
;**************** Program Start org 0 goto init org 4 goto int ;**************** int init
hai hai2
movlw movwf movlw subwf goto movlw subwf goto movlw subwf
***********************
Initial Process
*********************
d'4' s_adj d'5' s_adj,0 hai d'4' s_adj,0 hai2 d'3' s_adj,0
;*** Port initialiZation bsf STATUS,RP0 movlw b'00000001' movwf TRISA clrf TRISB movlw b'00000100' movwf TRISC ;*** A/D converter initialiZation bcf STATUS,RP0 movlw b'01000001' movwf ADCON0 bsf STATUS,RP0 movlw b'00001110' movwf ADCON1 bcf STATUS,RP0 ;*** Display initialiZation (Timer2) movlw disp_u movwf disp_ha movlw h'0a' movwf disp_u movwf disp_t movwf disp_h movlw d'3' movwf digit_cnt movlw seg70 movwf seg7_ha movlw seg7_0 movwf seg70 movlw seg7_1 movwf seg71 movlw seg7_2 movwf seg72 movlw seg7_3 movwf seg73 movlw seg7_4 movwf seg74 movlw seg7_5 movwf seg75 movlw seg7_6 movwf seg76 movlw seg7_7
xii
movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf bsf movlw movwf bsf bcf clrf
seg77 seg7_8 seg78 seg7_9 seg79 seg7_a seg7a seg7_b seg7b b'00011110' T2CON STATUS,RP0 d'157' PR2 PIE1,TMR2IE STATUS,RP0 s_adj_count
;*************** send bcf clrf
Pulse send-out Process **************** INTCON,T0IF TMR0
;*** 40KHz pulse send ( 1,2 msec ) hehe movlw d'4' movwf disp_u hehe2 movlw d'255' movwf s_digit ;Set count lagi movlw d'61' movwf s_count movlw d'30' movwf p_countl s_loop1 call pulse decfsz s_count,1 goto s_loop1 ;*** Jedanya niiihhh.......................................... clrf clrf clrf goto goto goto goto test
disp_u disp_t disp_h $+2 $+2 $+2 $+2
bsf btfsc goto
ADCON0,GO ADCON0,GO test
movfw movwf bsf movfw bcf movwf
ADRESH hasilh1 STATUS,RP0 ADRESL STATUS,RP0 hasill1
movfw movfw
hasilh1 hasill1
btfsc call
hasill,7 dua
xiii
btfsc call goto
hasill,6 satu ratus
satu
movlw addwf return
d'1' disp_x,1
dua
movlw movwf return
d'2' disp_x
ratus movlw subwf btfss goto movlw subwf incf goto
d'250' hasilh,0 STATUS,C puluh d'250' hasilh,1 disp_u ratus
puluh movlw subwf btfss goto movlw subwf incf goto
d'25' hasilh,0 STATUS,C satu1 d'25' hasilh,1 disp_t puluh
satu1 bcf rlf rlf
STATUS,C hasilh hasilh
satu2 movlw subwf btfss goto movlw subwf incf goto
d'10' hasilh,0 STATUS,C satu3 d'10' hasilh,1 disp_h,1 satu2
satu3 movfw addwf
hasilh disp_x,1
zero
goto
boleh
btfss
STATUS,Z
decfsz goto movfw movwf movwf movlw andwf swapf movlw andwf movfw movwf boleh movlw movwf
p_countl,0 boleh hasilh disp_u disp_t b'11110000' disp_u,1 disp_t b'11110000' disp_t,1 hasill disp_h d'4' s_count
xiv
led_cont incf movfw movwf decfsz goto bsf bsf bsf bcf goto
s_adj_count,1 digit_cnt s_digit s_digit,1 d_check1 PORTA,1 PORTA,2 PORTA,3 PORTA,4 c_digit
d_check1 decfsZ goto bsf bsf bcf bsf goto
s_digit,f d_check2 PORTA, PORTA,2 PORTA,3 PORTA,4 c_digit
d_check2 decfsZ goto bsf bcf bsf bsf goto
s_digit,f d_check3 PORTA,1 PORTA,2 PORTA,3 PORTA,4 c_digit
d_check3 bcf bsf bsf bsf
PORTA,1 PORTA,2 PORTA,3 PORTA,4
c_digit decf addwf movwf movfw addwf movwf movfw movwf
digit_cnt,w disp_ha,w FSR INDF seg7_ha,w FSR INDF PORTB
decfsZ goto movlw movwf goto
digit_cnt,f timeg d'4' digit_cnt timeg
timeg movlw movwf
d'255' s_adj
tunggu goto $+1 goto $+1 goto $+1 decfsz goto
s_adj,1 tunggu
btfss
s_adj_count,1
xv
goto
led_cont
decfsz goto
s_count,1 timeg
decfsz goto movlw movwf goto
p_countl,1 hehe d'4' p_countl hehe
;*************** pulse movlw movwf movfw sublw btfsc goto call balik clrf nop nop nop nop balik2 nop return t12us nop nop return adc
bsf nop clrf nop nop movlw movwf time decfsz goto movlw movwf movlw movwf time2 decfsz goto clrf nop movfw movwf bsf movfw bcf movwf return
Pulse send-out Process **************** b'11111000' PORTC s_count d'30' STATUS,Z adc t12us PORTC
ADCON0,GO PORTC d'3' s_adj s_adj,1 time b'11111000' PORTC d'3' s_adj s_adj,1 time2 PORTC ADRESH hasilh STATUS,RP0 ADRESL STATUS,RP0 hasill
end
xvi
LAMPIRAN 2
Assembler Pengukur Jarak Menggunakan Infra Merah
;******************************************************** ; ; Infra red meter ; ;******************************************************** list include __config
p=pic16f876 p16f876.inc _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF
;**************** Label Definition cblock h'20' deltah deltal counter deldet detek divder s_count s_adj s_adj_count s_digit hasilh hasill hasilh1 hasill1 p_countl count digit_cnt disp_ha disp_u disp_t disp_h disp_x seg7_ha seg70 seg71 seg72 seg73 seg74 seg75 seg76 seg77 seg78 seg79 seg7a seg7b buff_u buff_t buff_h wadc endc ccp1
equ
h'02'
maxh maxl seg7_0 seg7_1 seg7_2 seg7_3
equ equ equ equ equ equ
b'01000111' b'11000000' b'01000000' b'01111001' b'00100100' b'00110000'
********************
xvii
seg7_4 seg7_5 seg7_6 seg7_7 seg7_8 seg7_9 seg7_a seg7_b
equ equ equ equ equ equ equ equ
;**************** org goto org goto ;**************** int init movlw movwf movlw subwf
b'00011001' b'00010010' b'00000010' b'01111000' b'00000000' b'00010000' b'01111111' b'00100011' Program Start *********************** 0 init 4 int Initial Process ********************* d'4' s_adj d'4' s_adj,1
;*** Port initialiZation bsf STATUS,RP0 movlw b'00000001' movwf TRISA clrf TRISB movlw b'00000100' movwf TRISC ;*** A/D converter initialiZation bcf STATUS,RP0 movlw b'01000001' movwf ADCON0 bsf STATUS,RP0 movlw b'00001110' movwf ADCON1 bcf STATUS,RP0 ;*** Display initialiZation (Timer2) movlw disp_u movwf disp_ha movlw h'0a' movwf disp_u movwf disp_t movwf disp_h movlw d'3' movwf digit_cnt movlw seg70 movwf seg7_ha movlw seg7_0 movwf seg70 movlw seg7_1 movwf seg71 movlw seg7_2 movwf seg72 movlw seg7_3 movwf seg73 movlw seg7_4 movwf seg74 movlw seg7_5 movwf seg75 movlw seg7_6 movwf seg76
xviii
movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf bsf movlw movwf bsf bcf clrf ;*************** send bcf clrf
seg7_7 seg77 seg7_8 seg78 seg7_9 seg79 seg7_a seg7a seg7_b seg7b b'00011110' T2CON STATUS,RP0 d'157' PR2 PIE1,TMR2IE STATUS,RP0 s_adj_count Pulse send-out Process **************** INTCON,T0IF TMR0
;*** 40KHz pulse send ( 1,2 msec ) hehe movlw d'4' movwf disp_u hehe2 movlw d'255' movwf s_digit ;Set count lagi movlw d'30' movwf s_count movlw d'30' movwf p_countl s_loop1 call pulse decfsz s_count,1 goto s_loop1 ;*** Jedanya niiihhh.......................................... movlw movwf tungg decfsz goto decfsz goto bsf adc2 btfsc goto movfw movwf bsf movfw bcf movwf clrf start decfsz goto movlw movwf lanj clrf clrf clrf
d'57' count count,1 tungg wadc,0 lanj ADCON0,GO ADCON0,GO adc2 ADRESH hasilh1 STATUS,RP0 ADRESL STATUS,RP0 hasill1 hasilh1 wadc,1 lanj d'10' wadc disp_u disp_t disp_h
xix
clrf movfw movwf movfw sublw btfss decf movwf movfw sublw movwf movlw movwf movlw movwf kont movfw subwf btfss goto movwf bcf rrf incf bcf rlf konti decfsz goto goto yuhu2 movlw movwf goto geser bcf rrf rlf goto last1 movfw subwf btfss goto movwf incf goto geser1 bcf rlf rlf movfw subwf btfss goto movwf bsf rlf konti2 decfsz goto goto geser2 bcf rlf goto beres movfw movwf movfw
deldet hasilh1 counter hasill1 maxl STATUS,C counter,1 deltal counter maxh deltah d'3' count b'10100000' divder divder deltah,0 STATUS,C geser deltah STATUS,C divder,1 deldet,1 STATUS,C deldet,1 count,1 kont last1 d'2' count geser1 STATUS,0 divder,1 deldet,1 konti divder deltah,0 STATUS,C yuhu2 deltah deldet,1 yuhu2 STATUS,C deltal,1 deltah,1 divder deltah,0 STATUS,C geser2 deltah STATUS,C deldet,1 count,1 geser1 beres STATUS,0 deldet,1 konti2 hasilh1 counter hasill1
xx
subwf btfss incf movwf movfw subwf movwf clrf clrf tambah incf bcf rlf btfss goto rrf decf kont1 movfw subwf btfss goto movwf bcf rrf incf bcf rlf konti1 decfsz goto goto yuhu movlw movwf goto geser3 bcf rrf rlf goto last movfw subwf btfss goto movwf incf goto geser4 bcf rlf rlf movfw subwf btfss goto movwf bsf rlf konti3 decfsz goto goto geser5 bcf
hasill,0 STATUS,C counter,1 deltal counter hasilh,0 deltah count counter count,1 STATUS,C deldet,1 STATUS,C tambah deldet,1 count,1 deldet deltah,0 STATUS,C geser3 deltah STATUS,C deldet,1 counter,1 STATUS,C counter,1 count,1 kont1 last d'2' count geser4 STATUS,0 deldet,1 counter,1 konti1 deldet deltah,0 STATUS,C yuhu deltah counter,1 yuhu STATUS,C deltal,1 deltah,1 deldet deltah,0 STATUS,C geser5 deltah STATUS,C counter,1 count,1 geser4 beres2 STATUS,0
xxi
rlf goto beres2 movfw movwf clrf movfw movwf movlw movwf multip movfw addwf btfsc incf decfsz goto
counter,1 konti3 counter disp_u counter deltah deltal d'9' count deltah deltal,1 STATUS,C counter count,1 multip
;++++++++++++++++++++++++ movfw movwf clrf clrf clrf movfw sublw btfss goto movwf naik incf movlw subwf btfsc goto decfsz goto goto skip1 incf clrf decfsz goto goto eror movlw movwf movwf movwf goto
disp_u count disp_u disp_t disp_h count d'20' STATUS,C eror count disp_t,1 d'10' disp_t,0 STATUS,C skip1 count,1 naik boleh disp_u,1 disp_t count,1 naik boleh h'b' disp_u disp_t disp_h boleh
decfsz goto movfw movwf movwf movlw andwf swapf movlw andwf movfw movwf boleh movlw movwf
p_countl,0 boleh hasilh disp_u disp_t b'11110000' disp_u,1 disp_t b'11110000' disp_t,1 hasill disp_h d'4' s_count
xxii
led_cont incf movfw movwf decfsz goto bsf bsf bsf bcf goto
s_adj_count,1 digit_cnt s_digit s_digit,1 d_check1 PORTA,1 PORTA,2 PORTA,3 PORTA,4 c_digit
d_check1 decfsZ goto bsf bsf bcf bsf goto
s_digit,f d_check2 PORTA,1 PORTA,2 PORTA,3 PORTA,4 c_digit
d_check2 decfsZ goto bsf bcf bsf bsf goto
s_digit,f d_check3 PORTA,1 PORTA,2 PORTA,3 PORTA,4 c_digit
d_check3 bcf bsf bsf bsf
PORTA,1 PORTA,2 PORTA,3 PORTA,4
c_digit decf addwf movwf movfw addwf movwf movfw movwf
digit_cnt,w disp_ha,w FSR INDF seg7_ha,w FSR INDF PORTB
decfsZ goto movlw movwf goto
digit_cnt,f timeg d'4' digit_cnt timeg
timeg movlw movwf
d'255' s_adj
tunggu decfsz goto
s_adj,1 tunggu
btfss goto
s_adj_count,1 led_cont
decfsz goto
s_count,1 timeg
xxiii
decfsz goto movlw movwf goto ;*************** pulse movlw movwf movfw sublw btfsc goto call balik clrf nop nop nop nop balik2 nop return t12us nop nop return adc
bsf nop clrf nop movlw movwf time decfsz goto movlw movwf movlw movwf time2 decfsz goto clrf movfw movwf bsf movfw bcf movwf return
p_countl,1 hehe d'4' p_countl hehe Pulse send-out Process **************** b'11111000' PORTC s_count d'30' STATUS,Z adc t12us PORTC
ADCON0,GO PORTC d'3' s_adj s_adj,1 time b'11111000' PORTC d'3' s_adj s_adj,1 time2 PORTC ADRESH hasilh STATUS,RP0 ADRESL STATUS,RP0 hasill
end
xxiv
LAMPIRAN 3
Assembler Pengukur Jarak Menggunakan Ultrasonik
;******************************************************** ; ; Ultrasonic Range Meter ; ;******************************************************** list include __config
p=pic16f877 p16f877.inc _XT_OSC & _WDT_OFF & _PWRTE_ON & _LVP_OFF
;**************** Label Definition cblock h'20' s_count s_adj s_adj_count s_digit g_time1 g_time2 p_countl p_counth digit_cnt disp_ha disp_u disp_t disp_h seg7_ha seg70 seg71 seg72 seg73 seg74 seg75 seg76 seg77 seg78 seg79 seg7a seg7b endc ra1 ra2 ra3 ra5
equ equ equ equ
h'01' h'02' h'03' h'05'
ccp1
equ
h'02'
seg7_0 seg7_1 seg7_2 seg7_3 seg7_4 seg7_5 seg7_6 seg7_7 seg7_8 seg7_9 seg7_a seg7_b
equ equ equ equ equ equ equ equ equ equ equ equ
b'01000000' b'01111001' b'00100100' b'00110000' b'00011001' b'00010010' b'00000010' b'01111000' b'00000000' b'00010000' b'01111111' b'00100011'
********************
xxv
;**************** Program Start org 0 goto init org 4 goto int
***********************
;**************** Initial Process init movlw d'10' movwf s_adj movlw d'8' subwf s_adj,1 ;*** Port initialiZation bsf STATUS,RP0 movlw b'00000001' movwf TRISA clrf TRISB movlw b'00000100' movwf TRISC ;*** Ultrasonic movlw movwf bcf clrf
*********************
sending period initialiZation (Timer0) b'11010111' OPTION_REG STATUS,RP0 TMR0
;*** Capture mode initialiZation (Timer1) movlw b'00000001' movwf T1CON clrf CCP1CON ;*** A/D converter initialiZation movlw b'01000001' movwf ADCON0 bsf STATUS,RP0 movlw b'00001110' movwf ADCON1 bcf STATUS,RP0 ;*** Display initialiZation (Timer2) movlw disp_u movwf disp_ha movlw h'0a' movwf disp_u movwf disp_t movwf disp_h movlw d'3' movwf digit_cnt movlw seg70 movwf seg7_ha movlw seg7_0 movwf seg70 movlw seg7_1 movwf seg71 movlw seg7_2 movwf seg72 movlw seg7_3 movwf seg73 movlw seg7_4 movwf seg74 movlw seg7_5 movwf seg75 movlw seg7_6 movwf seg76
xxvi
movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf movlw movwf bsf movlw movwf bsf bcf
seg7_7 seg77 seg7_8 seg78 seg7_9 seg79 seg7_a seg7a seg7_b seg7b b'00011110' T2CON STATUS,RP0 d'157' PR2 PIE1,TMR2IE STATUS,RP0
;*** Interruption control movlw b'11100000' movwf INTCON wait goto
$
;*************** Interruption Process int movfw PIR1 btfsc PIR1,CCP1IF goto capture btfsc PIR1,TMR2IF goto led_cont movfw INTCON btfsc INTCON,T0IF goto send
*****************
;*************** Illegal interruption illegal movlw h'0b' addwf seg7_ha,w movwf FSR movfw INDF movwf PORTB bcf PORTA,ra1 bcf PORTA,ra2 bcf PORTA,ra3 goto $
*****************
;************ END of Interruption Process ************** int_end retfIE ;*************** Pulse send-out Process **************** send bcf INTCON,T0IF clrf TMR0 ;*** Received Pulse detection check movfw PORTC btfsc PORTC,ccp1 goto detect_off movlw h'0a' movwf disp_u
xxvii
movwf movwf
disp_t disp_h
;*** Receive pulse detector off detect_off bcf PORTA,ra5 ;*** Capture start clrf TMR1H clrf TMR1L clrf CCPR1H clrf CCPR1L movlw b'00000101' movwf CCP1CON bsf STATUS,RP0 bsf PIE1,CCP1IE bcf STATUS,RP0 bcf PIR1,CCP1IF ;*** 40KHz pulse send ( 0.5 msec ) movlw d'20' movwf s_count ;Set count s_loop call pulse decfsz s_count,f goto s_loop ;*** Get adjustment data bsf ADCON0,GO ad_check btfsc ADCON0,GO goto ad_check movfw ADRESH movwf s_adj movlw movwf ad_rotate rrf decfsZ goto movfw andlw addlw movwf
d'5' s_adj_count s_adj,f s_adj_count,f ad_rotate s_adj b'00000111' d'54' s_adj
;*** Capture guard timer ( 1 milisecound ) movlw d'2' movwf g_time1 g_loop1 movlw d'124' movwf g_time2 g_loop2 nop decfsZ g_time2,f goto g_loop2 decfsZ g_time1,f goto g_loop1 ;*** Receive pulse detector on bsf PORTA,ra5 goto
int_end
xxviii
;*************** Pulse send-out Process **************** pulse movlw b'11110000' movwf PORTC call t12us clrf PORTC goto $+1 goto $+1 return ;*************** 12 microseconds timer ***************** t12us goto $+1 goto $+1 goto $+1 return ;****************** Capture Process ******************** capture bcf PIR1,CCP1IF clrf p_countl clrf p_counth clrf CCP1CON division movfw subwf btfsc goto btfsc goto goto
s_adj CCPR1L,f STATUS,Z division2 STATUS,C division1 division3
division1 movlw addwf btfss goto incf goto
d'1' p_countl,f STATUS,C division p_counth,f division
division2 movfw btfss goto movlw addwf btfss goto incf goto
CCPR1H STATUS,Z division1 d'1' p_countl,f STATUS,C digit_set p_counth,f digit_set
division3 movfw btfss goto goto
CCPR1H STATUS,Z division4 digit_set
division4 decf movlw addwf incf goto
CCPR1H,f d'255' CCPR1L,f CCPR1L,f division1
xxix
;**************** Digit Set Process ******************** digit_set clrf disp_u clrf disp_t clrf disp_h ;*** 100th digit digit_h movlw d'100' subwf p_countl,f btfsc STATUS,Z goto digit_h2 btfsc STATUS,C goto digit_h1 goto digit_h3 digit_h1 incf goto
disp_h,f digit_h
movfw btfss goto incf goto
p_counth STATUS,Z digit_h1 disp_h,f digit_t
movfw btfss goto movlw addwf goto
p_counth STATUS,Z digit_h4 d'100' p_countl,f digit_t
decf movlw addwf incf goto
p_counth,f d'255' p_countl,f p_countl,f digit_h1
digit_h2
digit_h3
digit_h4
;*** 10th digit digit_t ;*** Range over movfw sublw btfsc goto btfsc goto movlw movwf movwf movwf goto
check disp_h d'9' STATUS,Z digit_t0 STATUS,C digit_t0 h'0a' disp_u disp_t disp_h int_end
digit_t0 movlw subwf btfsc goto btfsc
d'10' p_countl,f STATUS,Z digit_t1 STATUS,C
xxx
goto goto
digit_t1 digit_t2
incf goto
disp_t,f digit_t
movlw addwf goto
d'10' p_countl,f digit_u
digit_t1
digit_t2
;*** 1st digit digit_u movfw movwf goto
p_countl disp_u int_end
;**************** LED display control led_cont bcf PIR1,TMR2IF movfw movwf decfsZ goto bsf bsf bcf goto
digit_cnt s_digit s_digit,f d_check1 PORTA,ra1 PORTA,ra2 PORTA,ra3 c_digit
decfsZ goto bsf bcf bsf goto
s_digit,f d_check2 PORTA,ra1 PORTA,ra2 PORTA,ra3 c_digit
bcf bsf bsf
PORTA,ra1 PORTA,ra2 PORTA,ra3
decf addwf movwf movfw addwf movwf movfw movwf
digit_cnt,w disp_ha,w FSR INDF seg7_ha,w FSR INDF PORTB
decfsZ goto movlw movwf goto
digit_cnt,f int_end d'3' digit_cnt int_end
*****************
d_check1
d_check2
c_digit
;******************************************************** ; END of Ultrasonic Range Meter ;******************************************************** end
xxxi