BAB IV ANALISA DAN HASIL UJI COBA RANGKAIAN
4.1
Prinsip Kerja Rangkaian Rangkaian ini bekerja berdasarkan dua buah sensor yang di pasang secara
berdampingan, dengan memanfaatkan Phototransistor Phototransistor yang
sebagai sensor. Sensor
berguna untuk mendeteksi orang masuk , kemudian
mikrokontroler akan mengendalikan tampilan 7-segment untuk menunjukkan jumlah orang di dalam suatu ruangan dan buzzer untuk indikator atau menandakan adanya orang masuk.
Gambar 4.1 Skema rangkaian Secara Detail
29
30
4.2
Diagram Alir Program Berikut merupakan program untuk Alat Penghitung Banyaknya Orang
yang ada didalam suatu ruangan berdasarkan penjelasan pada diagram alir pada gambar yang ditulis dengan menggunakan bahasa pemrograman assembler:
Diagram Alir Program :
Gambar 4.2 Diagram Alir Program
31
Prinsip kerja diagram alir program adalah sebagai berikut : •
Program di mulai dengan mengisi TMOD (Timer Mode Register) dengan 01H, TL0 (Timer 0 Low Byte) dengan 0B8H, dan TH0 (Timer 0 High Byte) dengan 8EH, artinya interupsi terjadi setiap 25 ms:
UTAMA: mov TMOD,#01H
•
; memasukkan nilai 01H ke register TMOD
mov TL0,#0B8H
; memasukan nilai 0B8H ke register TL0
mov TH0,#8EH
; memasukan nilai 8EH ke register TH0
Selanjutnya Interupsi Timer 0 dan Interupsi global diaktifkan, dengan list program :
•
setb ET0
; memberikan bit 1 ke pin ET0 ( enable Timer 0 )
setb EA
; memberikan bit 1 ke EA ( aktifkan interupsi )
Timer 0 dihidupkan , dengan list program : setb TR0
•
Register 1 dan 2 di isi dengan 0, list program :
AWAL:
•
; memberikan bit 1 ke TR0 ( aktifkan Timer 0 )
mov R1,#0
; memberikan register 1 dengan nilai awal 0
mov R2,#0
; memberikan register 2 dengan nilai awal 0
Data dari akumulator dikirim dan ditampilkan ke Port 0, kemudian discan secara berulang dari P2.6 ke P2.5, dengan list program :
LOOP:
mov A,R1
; memasukan nilai di R1 ke A
mov dptr,#ANGK
; menunjuk data pointer ke ANGK
movc A,@A+DPTR mov P0,A
; memasukan nilai a ke P0
clr
; memberikan P2.7 dengan nilai bit 0
P2.7
call delay
; memanggil subroutin delay
32
setb P2.7
; memberikan pin P2.7 (set relay )
mov A,R2
; memasukan nilai R2 ke dalam A
mov dptr,#ANGK
; menunjuk ke data pointer ANGK
movc A,@A+DPTR mov P0,A
; memasukan nilai A ke P0
clr
; memberikan bit 0 pada pin P2.6
P2.6
call delay
; memanggil subroutin delay
setb P2.6
; memberikan bit 0 pada pin P2.6
jmp
; kembali ke loop
loop
Prinsip kerja diagram alir program interupsi adalah sebagai berikut : •
Program di mulai dengan mengisi TL0 (Timer 0 Low Byte) dengan 0B8H, dan TH0 (Timer 0 High Byte) dengan 8EH, list program :
INTERRUPT : BACA:
•
mov TL0,#0B8H
; memberikan nilai TL0 dengan nilai 0B8H
mov TH0,#8EH
; memberikan nilai TH0 dengan alamt 8EH
Apabila R4 dan R3 sama dengan 0 maka P0.7 diberi logika 1 (non aktifkan buzzer) kemudian baca port 1, tetapi apabila R4 dan R3 tidak sama dengan 0 maka proses berikutnya baca port 1. Langkah selanjutnya apakah tidak ada orang masuk ? jika ya, kembali ke program utama dan ulangi perintah, jika tidak, lanjutkan ke proses berikutnya. Dengan list program : djnz R4,SKIP
; mengurangi satu nilai R4 jika R4 tidak sama dengan 0 loncat ke SKIP
djnz R3,SKIP
; mengurangi satu nilai R3 jika R3 tidak sama dengan 0 loncat ke SKIP
SKIP:
setb P0.7
; memberikan pi P0.7 dengan bit 1
mov A,P1
; memasukan nilai P1 ke A
cjne A,#0FFH,MASUK ; Jika A tidak sama dengan 0FFH loncat ke
33
MASUK sjmp BACK
•
; Loncat ke BACK
Langkah berikutnya jika apakah ada orang masuk ? jika ya, tunggu sampai P1.1 sama dengan 0 kemudian bunyikan buzzer (isi P0.7 dengan logika 0) dan naikkan indeks data R2 dengan 1. jika tidak, apakah ada orang keluar ? jika tidak, kembali ke program utama dan ulangi perintah. Jika ya, tunggu sampai P1.0 sama dengan 0 kemudian bunyikan buzzer (isi P0.7 dengan logika 0) dan turunkan indeks data R2 dengan 1. Dengan list program :
MASUK: cjne A,#0FEH,KELUAR; Jika A tidak sama dengan 0FEH loncat ke Keluar TM
: jb
TS
: jnb
P1.0,TM P1.0,TS
; Loncat ke TM jika P1.0 sama dengan 1 ; Loncat ke TS jika P1.0 tdk sama dengan 1
call BUZZER mov R4,#0H
; memasukan nilai 0H ke R4
mov R3,#0AH
; memasukan nilai AH ke R3
inc R2
; memberikan R3 ditambah 1
call UJI_MS
; memanggil prosedur UJI_MS
cjne R2,#0AH,BACK
; Jika R2 tidak sama dengan 0AH loncat ke BACK
mov R2,#0
; memasukan R2 dengan nilai 0
inc R1
; memberikan R1 ditambah 1
cjne R1,#0AH,BACK
; Jika R1 tidak sama dengan 0AH loncat ke BACK
•
mov R1,#0
; memasukan register 1 sama dengan 0
mov R2,#0
; memasukan register 2 sama dengan 0
jmp BACK
; Loncat ke BACK
Jika R2 tidak sama dengan -1 maka kembali program utama dan ulangi perintah, tetapi jika R2 sama dengan -1, maka isi R2 dengan 9 dan kurangkan
34
R1 dengan 1. Langkah berikutnya apabaila R1 tidak sama dengan -1 maka kembali program utama dan ulangi perintah, tetapi jika R1 sama dengan -1, maka isi R1 dan R2 dengan 0. Dengan list program : KELUAR: cjne A,#0FDH,BACK ; Jika A tidak sama dengan 0FD loncat BACK TK
: jb
P1.1,TK
TSL
: jnb P1.1,TSL
; Loncat ke TK jika P1.1 sama dengan 1 ; Loncat ke TSL jika P1.1 tdk sama dengan 1
call BUZZER mov R4,#0H
; memasukan nilai 0H ke R4
mov R3,#0AH
; memasukan nilai AH ke R3
call UJI_KL
; memanggil prosedur UJI_KL
dec R2
; memberikan R2 dikurangi 1
cjne R2,#0FFH,BACK ; Jika R2 tidak sama dengan 0FF loncat ke BACK mov R2,#9
; memasukan R2 dengan nilai 9
dec R1
; memberikan R1 dikurangi 1
cjne R1,#0FFH,BACK
; Jika R1 tidak sama dengan 0FFH loncat ke BACK
mov R1,#0
; memasukan register 1 sama dengan 0
mov R2,#0
; memasukan register 2 sama dengan 0
BACK : reti
; return kembali dari prosedur
BUZZER : clr P0.7 call DELAY setb P0.7 ret DELAY : mov R7,#100
; prosedur delay
DELAY1: mov R6,#50
; prosedur delay
DELAY2: djnz R6,DELAY2
; prosedur delay
djnz R7,DELAY1
; prosedur delay
35
ret
UJI_MS : cjne R2,#1H,BALIK
; Jika R2 tdk sama dengan 1H loncat ke BALIK
cjne R1,#0H,BALIK
; Jika R1 tdk sama dengan 0H loncat ke BALIK
clr P2.5
; memberikan bit 0 pada P2.5
jnb P3.0, KIPAS
; Loncat ke KIPAS
ret
; retrun
jika P3.0 tdk sama
dengan 1
KIPAS : clr P2.0
; memberikan bit 0 pada P2.0
UJI_KL : cjne R2,#0H,BLK
; Jika R2 tidak sama dengan 0 loncat ke BLK
cjne R1,#0H,BLK
; Jika R1 tidak sama dengan 0 loncat ke BLK
setb P2.5
; memberikan 1 bit pada P2.5
setb P2.0
; memberikan 1 bit pada P2.0
ret
; retrun
BALIK : ret
; retrun
BLK
; kembali prosedur UJI_MS
: ret
ANGK : db 11000000b db 11111001b db 10100100b db 10110000b db 10011001b db 10010010b db 10000010b db 11111000b db 10000000b db 10010000b end
36
4.3
Prosedur Uji Coba Rangkaian Setelah rangkaian selesai dikerjakan maka penulis perlu melakukan pengujian terhadap rangkaian secara keseluruhan dengan bergantian. Adapun hal-hal yang perlu penulis lakukan untuk pengujian sebagai berikut: 1. Siapkan alat atau rangkaian yang akan di uji coba. 2. Menyiapkan Catu Daya dengan arus searah (DC) sebesar +5 volt. 3. Menghubungkan rangkaian atau alat dengan catu daya sebesar +5 volt. 4. Setelah rangkaian atau alat terhubung dengan catu daya, maka alat telah siap diuji. 5. Untuk memberikan inputan pada mikrokontroller, dengan cara memberi inputan melalui sebuah sensor infa merah. Yaitu dengan cara memutus gelombang cahaya yang di pancarkan oleh LED infa merah pada sensor tersebut, maka sensor tersebut akan menghasilkan output yang akan di berikan untuk mikrokontroller. Selain sensor phototransistor penulis juga menggunakan sensor suhu sebagai inputan untuk menggerakan kipas angin. 6. Setelah itu output yang telah didapat dari mikon maka akan dilanjutkan kembali sebagai inputan untuk buzzer dan seven segment. 7. Buzzer digunakan sebagai indikator untuk penanda ada tidaknya orang yang masuk ke dalam ruangan. 8. Sevent Segment digunakan sebagai tampilan dari berapa banyak orang yang telah masuk ke dalam ruangan. 9. Selain dari output yang telah di sebutkan masih ada Motor Penggerak / Kipas Angin digunakan sebagai output dan perinsip kerja dari kipas tersebut adalah, jika sensor suhu yang digunakan mendeteksi suhu
37
melebihi dari suhu rata-rata maka kipas angin tersebut akan bergerak, dan jika suhu tidak melebihi dari suhu rata-rata maka kipas tidak akan bergerak. 4.4
Hasil Uji Coba Rangkaian Pada rangkaian yang dibuat penulis perlu melakukan uji coba untuk
memastikan apakah Rangkaian ini dapat berjalan dengan baik dan tidak terjadi masalah pada saat digunakan. Uji coba dilakukan dengan memberi inputan melalui sensor Phototransistor dan diteruskan kembali ke Mikrokontroller AT89S51 dan diketahui hasilnya pada 7_Segment dan Buzzer sebagai outputnya. Dari hasil uji coba yang dilakukan dapat dilihat pada tabel 4.1 :
Orang
Tampilan
Tampilan
Keadaan
Tegangan
Masuk
7_Segment 1
7_Segment 2
Buzzer
Output
00
0
0
0
2,5 V
01
0
1
1
3,8 V
02
0
2
1
3,8 V
03
0
3
1
3,8 V
04
0
4
1
3,8 V
05
0
5
1
3,8 V
06
0
6
1
3,8 V
07
0
7
1
3,8 V
08
0
8
1
3,8 V
09
0
9
1
3,8 V
(Sumber : Hasil Uji Coba Laboratorium, 2008)
Ket: 1 = Hidup 0 = Mati
Tabel 4.1 Hasil Uji Coba Rangkaian
38
Dari hasil percobaan yang telah dilakukan dengan simulasi banyaknya orang yang masuk. Banyaknya orang yang masuk dibatasi sampai 99 orang saja yang dapat terhitung oleh rangkaian ini. Jika rangkaian ini dicoba dengan banyaknya orang melebihi batas yang telah ditentukan tidak akan terlihat pada tampilan 7_segment. Karena 7_segment yang digunakan hanya dua buah 7_segment. Dari hasil percobaan yang telah dilakukan didapatkan hasil yang tertera pada tabel 4.1. Pada tabel 4.1 tersebut hanya dicantumkan sampai 9 orang saja yang masuk, karena hanya untuk simulasi dari alat yang di buat. Akan tetapi batas maksimal untuk percobaan hanya 99 orang saja yang bisa terbaca pada sevent segment. Penulis juga melakukan uji coba rangkaian secara keseluruhan karena pada rangkaian sensor cahaya infrared, ketika sensor dalam keadaan terkena cahaya atau dalam keadaan tidak aktif maka sensor tersebut memiliki tegangan output. Pada tabel 4.2 dapat dilihat hasil dari pengujian yang dilakukan dengan menggunakan voltmeter pada saat sensor terhalang oleh orang yang melewati sensor dan tidak terhalang oleh orang:
Sensor Infa Merah
Sebelum
Setelah input
Keadaan Led
(Infrared)
Input (V)
(V)
(Output)
Masuk
2,2 Volt
3,8 Volt
Mati
Keluar
2,2 Volt
3,8 Volt
Mati
(Sumber : Hasil Uji Coba Laboratorium, 2009) Tabel 4.2 Hasil Uji Coba Sensor Infrared Dari data diatas didapat tegangan output sebesar 2,2 volt ketika sensor dalam keadaaan terkena cahaya. Jika sensor tidak terkena cahaya maka didapat tegangan output sebesar 3,8 volt.
39
Sensor Suhu (LM35)
Output (V)
Keadaan Led
Keadaan Kipas
(Output)
Angin
Suhu Normal
2,6 Volt
Hidup
Mati
Suhu Maksimum
± 5,0 Volt
Mati
Hidup
(Sumber : Hasil Uji Coba Laboratorium, 2009) Tabel 4.3 Hasil Uji Coba Sensor Suhu LM35 Dari hasil data pengamatan yang telah diperoleh dalam uji coba sensor suhu LM35, maka diketahui cara kerja dan dapat dianalisa bahwa sensor suhu tersebut bekerja atau aktif apabila sensor mendeteksi suhu mencapai suhu maksimum yang telah ditentukan. Dan sensor tersebut akan mengaktifkan kipas angin secara otomatis. Apabila suhu di dalam ruangan kembali normal maka kipas angin akan non aktif kembali. 4.5
Kendala Rangkaian
Dalam rangkaian yang penulis buat masih terdapat kendala terutama pada sensor dimana tingkat kepekaan terhadap jarak selalu berubah-ubah. Namun, hal tersebut dapat diatasi dengan mengatur arus pada trimpot yang terdapat didalam rangkaian input. Selain itu juga kendala yang sering dihadapi yaitu pendeteksian suhu yang dilakukan oleh sensor LM35 yang resolusinya terlalu kecil hingga mencapai 10mV menjadi kendala yang berat juga. Namun kendala sperti itu dapat diatasi dengan memberikan rangkaian comparator sebagai rangkaian inverting. Sehingga dapat dilakukan penguatan terhadap output yang diperoleh dari setiap sensornya.