Thursday, June 25, 2009

Bel Sekolah Otomatis Part 1

Aplikasi ini merupakan aplikasi bel sekolah otomatis atau alarm yang dapat diatur keaktifanya sesuai dengan waktu tundaan yang diinginkan. Aplikasi ini bisa juga diterapkan keberbagai kebutuhan alat bantu pewaktu yang terprogram sehingga penerapanya pada pembahasan ini bisa sebagai ide dasar dari sistem pewaktu.

Pada aplikasi ini diambil sebuah contoh sebagai alat pewaktu pada sekolahan atau sering dikenal bel otomatis sekolahan. Sebagai mana diketahui dalam pergantian jam mata pelajaran pada sekolah menengah pertama (SMP) dan sekolah menengah tingkat atas (SMU), sangat bervariasi, karena dalam kegiatan belajar mengajar tidak hanya satu jeda waktu atau satu kegiatan saja, dalam arti dari awal mulai memasuki sekolah sampai kagiatan sekolah berakhir terdapat kegiatan-kegiatan yang waktunya berbeda-beda, dan ini ditandai dengan bunyinya bel. seperti halnya pada mulai masuk dan mulai kegiatan belajar mengajar sampai akhir terdapat jam untuk Upacara bendera dan jam istirahat dan lain-lain. Dan waktu yang dibutuhkan berbeda.

Pada jam mata pelajaran misalnya membutuhkan waktu sekitar 45 menit, waktu untuk upacara bendera 30 menit, waktu untuk istirahat 15 menit dan waktu untuk bulan ramadhan setiap jam pelajaran sekitar 30 menit dan waktu untuk ujian sangat bervariasi.

Kegunaan dari alat bel sekolah otomatis adalah untuk menangani semua yang dipaparkan diatas. Namun dalam aplikasi ini diambil contoh penanganan bel yang masih menggunakan bel listrik 220V. Sehingga alat ini dipasang untuk menggantikan saklar manual saja.

Schema Rangkaian

Gambar rangkaian keseluruhan dapat dilihat pada Gambar 1,

Salah satu contoh sebuah jadual sekolahan dilihat pada Gambar 2, sehingga aplikasi ini akan mengacu pada jadual tersebut.

Mikrokontroler

Mikrokontroler AT89C51 digunakan sebagai terminal dari semua komponen yang ada, juga sebagai otak dari semua kegiatan yang disesuaikan dengan jalannya program.

Mikrokontroler AT89C51 dari ATMEL memiliki osilator on-chip, yang dapat digunakan sebagai sumber detak (clock) ke CPU, untuk menggunakannya, menghubungkan sebuah resonator kristal atau keramik diantara kaki-kaki XTAL1 dan XTL2 pada mikrokontroler dan dihubungkan kapasitor ke ground.

Reset dapat dilakukan secara manual maupun otomatis saat power diaktifkan. Saat terjadi reset isi dari register akan berubah. Reset terjadi dengan adanya logika 1 selama minimal 2 cycle pada kaki RST. Setelah kondisi pin RST kembali Low, Mikrokontroler akan mulai menjalankan program dari alamat 0000h.

Relay

Relay merupakan salah satu peralatan elektronik yang sering digunakan untuk men-switch suatu rangkaian yang ada diluar dari rangkaian penggerak relay. Hal ini karena relay dapat melakukan pensaklaran dengan arus/tegangan yang besar. Karena rangkaian bel sekolah otomatis ditujukan untuk mensaklar rangkaian yang sudah ada (bel bertegangan AC 220Volt), dalam arti bel sekolah otomatis bertugas untuk menghubung singkat, maka salah satu jalan yang mudah adalah dengan digunakanya relay dan bel sekolah yang sudah ada tidak mempengaruhi kinerja dari bel sekolah otomatis ini.

dengan menggunakan penggerak (driver) maka daya ke relay diambil langsung dari catu daya dan dikontrol oleh penggerak (transistor). Dalam hal ini menggunakan tipe transistor NPN. Jika logika pada port Mikrokontroler tinggi (1), maka transistor akan menghantar (on) dan menyebabkan relay bergerak. Jika logika pada port Mikrokontroler rendah (0) maka transistor akan tersumbat (off) dan relay diam.

Basis dari transistor dihubungkan dengan port 1.1 dari Mikrokontroler. Hal ini mengacu kepada sifat dari port 1. Port 1 merupakan port I/O dwi arah yang dilengkapi dengan pull up internal. Penyangga keluaran Port1 mempu memberikan/menyerap arus empat masukan TTL (sekitar 1,6 mA).

7 - Segment

Penggunaan penampil 7-segment pada bel sekolah otomatis adalah untuk mengetahui jam ke berapa pada saat ini juga termasuk sudah memasuki jam istirahat atau sudah memasuki jam keluar dan sebagai penghitung mundur.

7-segment ini dihubungkan ke Port 0 dengan configurasi Commond Anode. Dilihat dari struktur port 0, serta sifat-sifat dari port 0, akan lebih mudah mengkonfigurasikan 7-Commond Anoda. Dengan demikian untuk menghidupkan atau menyalakan 7-segment diperlukan logika 0 pada Port 0.

Push Button

Push button pada rangkaian bel sekolah otomatis digunakan untuk memilih urutan jam yang tepat dengan kata lain memilih hari yang sesuai, seperti halnya pada hari jum’at akan lain urutan jamnya dengan senin, selasa, rabu, kamis dan sabtu.Push button pada rangkaian dihubungkan ke Port 3 dari Mikrokontroler, karena Port ini dapat bersifat bidirectional, karena itu dapat digunakan sebagai port masukan atau sebagai port keluaran.

Software

Yang perlu diperhatikan dalam perencanaan program bel sekolah otomatis adalah konfigurasi rangkaian RELAY, LED dan 7-SEGMEN itu sendiri, yaitu Commond Anoda (CA), artinya untuk menghidupkan RELAY, LED dan 7-SEGMEN pada Port yang bersangkutan harus dikirim atau dituliskan logika ‘0’. Jika ‘0’ ditulis ke port yang bersangkutan maka keluaran dari lacth (yang) akan menghidupkan FET sehingga baik kaki port maupun resistor pullup internal akan di pulled-low (secara internal juga), sehingga RELAY, LED dan 7-SEGMEN yang terhubungkan secara Commond Anode bisa berjalan (menyala.) sedangkan jika menggunakan rangkaian Commond Chatode (CC), maka untuk menyalakan RELAY, LED dan 7-SEGMEN butuh penulisan ‘1’.

Agar Timer bisa berjalan sesuai rencana, yaitu selama 1 detik, 15 menit, 45 menit. Yang perlu diperhatikan adalah suatu tundaan yang bisa melakukan hal tersebut. Dalam hal ini timer-lah yang paling akurat untuk melakukan tundaan tersebut, Karena ada 4 macam mode kerja timer maka tundaan maksimal yang bisa dilakukan sebagaimana ditunjukkan pada Timer AT89×51.

Pengaturan timer agar bisa mendapatkan tundaan sebesar 1 detik, setelah 1 detik tercapai dan untuk mendapatkan tundaan yang lebih besar lagi adalah dengan cara pengulangan berkali-kali (60 kali) sampai hasil total yang di inginkan (1 menit). Untuk mendapatkan pengulangan kerja timer agar mendapatkan total 1 detik atau 1.000.000 mikrodetik, maka mencoba untuk melakukan perhitungan untuk mode 0, 1 dan 2 :

· Mode 0 : 5.000 mikrodetik x 200 pengulangan = 1 x 106 mikrodetik

· Mode 1 : 50.000 mikrodetik x 20 pengulangan = 1 x 106 mikrodetik

· Mode 2 : 250 mikrodetik x 4000 pengulangan = 1 x 106 mikrodetik

Dalam hal ini dipilih Mode 1 dengan pertimbangan pengulangan lebih sedikit, yang perlu diperhatikan adalah pengulangan kerja tidak sekedar menghidupkan dan mematikan flag limpahan (over flow flag) Timer yang bersangkutan. Limpahan terjadi saat transisi dari FFFFh ke 0000h (untuk mode 16-bit), dengan demikian agar limpahan terjadi setiap 50.000 mikrodetik (= 50.000 siklus) maka timer (dalam hal ini digunakan Timer 0) diisi dengan konstanta – 50.000, sehingga diawal program (baris 7) dilakukan inisialisasi. CACAH yang kemudian diisikan ke dalam RAM yaitu untuk menyimpan jumlah pengulangan.

Jenis perintah-perintah dan subroutin yang digunakan untuk membuat program bel sekolah otomatis diawali dengan perintah EQU (baris 7 ) yang berfungsi sebagai pengarah assembly mnemonic yang akan diproses oleh program assembler, EQU digunakan untuk mendefinisikan sebuah simbol atau lambang assembler secara bebas, pada baris 7 dituliskan perintah “Cacah EQU - 5000” yaitu lambang cacah memesan lokasi memori yang diisikan dengan nilai -5000 yang nantinya digunakan sebagai flag limpahan timer yaang digunakan pada subroutin delay. Pada baris ke 8 digunakan agar instruksi dituliskan mulai pada alamat 0h. setelah mikrokontroler mengalami reset, maka program untuk pertama kalinya setelah menginisialisasi baris 7 dan 8 maka program memerintahkan untuk menjalankan scan port 3 (baris 9), scan port 3 ini difungsikan sebagai pilihan saklar mana yang di tekan atau pilihan timer mana yang akan dipakai (hari biasa (senin selasa, rabu, kamis, sabtu), atau jum’at ), scan port ini dilambangkan dengan ‘BANDING’ (BANDING, BANDING_1), untuk BANDISNG_2 tidak digunakan untuk scan port, tetapi hanya untuk digunakan agar program bisa melompat ke label BANDING (baris 9), karena peletakan perintah banding ini tidak saling berurutan. Setelah salah satu port 3 ditekan atau menjadi nol, maka program akan menjalankan perintah-perintah yang sesuai dengan isi/program dibawah dari tiap-tiap BANDING, misalnya port 3.0 bernilai ‘0’ akan sama saja di program dengan BANDING, maka program akan menjalankan Timer dengan pilihan Hari Biasa. Seperti digambarkan pada Gambar 3.

Setelah salah satu Push button ditekan (banding bernilai 0), misalnya pada pilihan banding (port 3.0) di tekan (berlogika 0) maka program akan meneruskan ke baris selanjutnya yaitu pada baris ke 11. pada baris ke 11 ini berfungsi untuk mengaktifkan timer, konfigurasi dari timer seperti dijelaskan diatas. Untuk selanjutnya program akan memanggil subroutin untuk menghidupkan 7-segmen (baris 12) dengan ditulisnya perintah “ACALL DISPLAY” maka program akan melompat menuju ke label DISPLAY (baris 196), subroutin ini akan berjalan sampai dengan menemui perintah RET (baris 206) dari DISPLAY ini akan menghidupkan 7-segmen, dan akan melaksanakan tampilan perhitungan mundur kepada 7-segmen.

Setelah program melakukan penampilan 7-segmen, langkah selanjutnya adalah program akan mulai memasuki label jam ke_1 yang diteruskan dengan memanggil subroutin dari label BEL_3x (baris 13), pemanggilan perintah ini program akan melompat ke baris 86. fungsi dari label BEL_3X (baris 86) adalah untuk memberikan logika 0 pada port P1.0, dengan diberikannya logika 0 pada P1.0 maka akan mengakibatkan transistor akan menghantar (on) dan menyebabkan relay bergerak. Jika logika pada port Mikrokontroler rendah (1) maka transistor akan tersumbat (off) dan relay diam. Lamannya P1.0 berlogika 0 ini ditahan dengan timer dengan memanggil tundaan (baris 87), subroutin dari tundaan yang lamanya 4 detik terdapat pada baris 113 sampai dengan baris ke 127. selanjutnya program akan mematikan kembali relay dengan memberikan P1.0 dengan logika 1 (baris 88) dan matinya ditunda lagi dengan memanggil delay (baris 89). Perintah menghidupkan dan mematikan relay ini akan berulang kembali sampai dengan 3 kali (baris 97). Dan selanjutnya program akan kembali lagi pada baris ke 14.

Pada baris 14 “MOV P0,#0F9h” akan mengakibatkan P0 mempunyai kondisi F9h dengan kata lain 7-segmen akan menampilkan angka 1. penampilan 7-segmen dengan angka 1 menandakan sekarang sudah sedang atau memasuki jam pelajaran yang pertama. Pada baris 15 memanggil tundaan kembali, pemanggilan tundaan ini cukup panjang.

Setelah program melompat (baris 15) “CALL PELAJARAN” , maka program akan meloncat kembali dengan perintah (baris131) “CALL DELAY_1_MENIT”. Pada subroutin ini pertama kali program akan menginisialisasi R0 dengan logika 20 (baris 180) selanjutnya mengisi R6 dengan logika 60 (baris 182) untuk menyimpan jumlah pengulangan. Dan TH0 dan TL0 masing-masing juga akan diberikan logika untuk menyimpan.penyimpanan pada TH0 dan TL0 (baris 182 dan 183) dilakukan dengan cara pemesanan logika yang tadi pada awal program sudah diperintahkan dengan “CACAH”, yaitu LOW-nya –50000 dan HIGH-nya –50000. setelah itu baru menunggu hingga di nolkan secara manual begitu juga timer 0 dimatikan secara manual (baris 187 dan 188) proses diulangi hingga 20 kali (baris 189), sampai disini penundaan sudah mencapai satu detik. Untuk bisa mencapai tundaan selama satu menit akan dilakukan pengulangan kembali sampai dengan 60 kali (baris 192) dengan cara mengisikan logika pada RAM sebagai syarat pengulangan. Sampai disini penundaan sudah mencapai satu menit.

Karena penundaan pada subroutin “PELAJARAN” diperlukan sampai mencapai 45 menit, maka yang dilakukan lagi adalah dengan cara pengulangan pada subroutin DELAY_1_MENIT sampai dengan 45 kali (baris 130 sampai 178), jadi akan mendapatkan tundaan mencapai 45 menit. Setelah selesai melaksanakan tundaan 45 menit, maka program akan kembali ke program utama lagi yaitu pada baris ke 16.

Pada bari 16 ini urutan dan jalanya program akan sama persis dengan proses pada subroutin JAM_1. Proses tersebut diatas akan ber-ulang-ulang dan jalanya sama persis, hanya saja banyaknya pengaktifan relay atau bel yang berbeda. dan tundaan pada subroutin “ISTIRAHAT”, karena tundaan pada subroutin ini bukanya 45 menit, tetapi hanya 30 menit, tetapi jalanya sama persis dengan tundaan 45 menit hanya pengurangan pada pengulangan subroutin DELAY_1_MENIT, dan pengulangannya hanya 30 kali. Untuk lebih jelaskan dijelaskan pada blok diagram alir Gambar 4.

Akhir dari program bel sekolah otomatis ini terletak mulai didalam subroutin JAM_8, pada baris 79 setelah program menghidupkan relay selama 3 kali (baris 78), program memanggila subroutin dari penggerak 7-segmen, dan subroutin 7-segmen ini akan mulai menampilkan hitungan mundur lagi seperti pada awal dari panggilan subroutin 7-segmen yang pertama.

Setelah 7-segmen menghitung mundur, maka selanjutnya program akan melompat menuju awal program. Yaitu melakukan scan BANDING (baris 82) lagi seperti pada awal program. Jadi program sampai disini sudah selesai, dan program menunggu kembali P3.0 dan P3.1 ditekan kembali dan melaksanakan alur-alur program seperti diatas.

Schema Rangkaian Bel sekolah otomatis part 1

Program Bel sekolah otomatis part 1

Read More......