29
Rangkaian ini bekerja berdasarkan dua buah sensor yang di pasang secara berdampingan, dengan memanfaatkan Phototransistor sebagai sensor. Sensor Phototransistor yang 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.
[image:1.612.134.507.317.639.2]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:
[image:2.612.144.498.242.653.2]Diagram Alir Program :
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 ; memberikan bit 1 ke TR0 ( aktifkan Timer 0 )
• Register 1 dan 2 di isi dengan 0, list program :
AWAL: 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
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 P2.6 ; memberikan bit 0 pada pin P2.6 call delay ; memanggil subroutin delay setb P2.6 ; memberikan bit 0 pada pin P2.6 jmp loop ; kembali ke 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
setb P0.7 ; memberikan pi P0.7 dengan bit 1
SKIP: mov A,P1 ; memasukan nilai P1 ke A
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 P1.0,TM ; Loncat ke TM jika P1.0 sama dengan 1 TS : jnb P1.0,TS ; 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
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 ; Loncat ke TK jika P1.1 sama dengan 1 TSL : jnb P1.1,TSL ; 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
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 jika P3.0 tdk sama dengan 1
ret ; retrun
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 : ret ; kembali prosedur UJI_MS ANGK : db 11000000b
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.
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 Masuk
Tampilan 7_Segment 1
Tampilan 7_Segment 2
Keadaan Buzzer
Tegangan 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
[image:9.612.132.508.325.679.2]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 (Infrared)
Sebelum Input (V)
Setelah input (V)
Keadaan Led (Output)
Masuk 2,2 Volt 3,8 Volt Mati
Keluar 2,2 Volt 3,8 Volt Mati
[image:10.612.142.514.475.600.2](Sumber : Hasil Uji Coba Laboratorium, 2009)
Tabel 4.2 Hasil Uji Coba Sensor Infrared
Sensor Suhu (LM35) Output (V) Keadaan Led (Output)
Keadaan Kipas Angin
Suhu Normal 2,6 Volt Hidup Mati
Suhu Maksimum ± 5,0 Volt Mati Hidup
[image:11.612.142.513.134.261.2](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