PERANCANGAN ALAT PENGIRIM DAN PENERIMA DATA TEMPERATUR DENGAN MENGGUNAKAN SINAR INFRA MERAH BERBASIS MIKROKONTROLER AT89S51
TUGAS AKHIR
Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar ahli madya HERMAN TAMBUNAN 062408030
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM PROGRAM STUDI FISIKA INSTRUMENTASI UNIVERSITAS SUMATERA UTARA MEDAN 2009
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
i
PERSETUJUAN
JuduI
:
PERANCANGAN PENERIMA
ALAT
DATA
PENGIRIM
TEMPERATUR
DAN
DENGAN
MENGGUNAKAN SINAR INFRA MERAH BERBASIS MIKROKONTROLER AT89S51 Kategori Nama Nomor Induk Mahasiswa Program Studi Departemen Fakultas
: : : : : :
TUGAS AKHIR HERMAN TAMBUNAN 062408030 D3 FISIKA INSTRUMENTASI FISIKA MATEMATIKA DAN ILMU PENGETAHUAN ALAM (FMIPA) UNIVERSITAS SUMATERA UTARA
Diluluskan di Medan, 29 juni 2009
Ketua Program Studi D3 Fisika Instrumentasi
(Drs. Syahrul Humaidi, MSc) NIP 132 050 870
Pembimbing
(Drs. Syahrul Humaidi, MSc) NIP 132 050 870
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
ii
PERNYATAAN PERANCANGAN ALAT PENGIRIM DAN PENERIMA DATA TEMPERATUR DENGAN MENGGUNAKAN SINAR INFRA MERAH BERBASIS MIKROKONTROLER AT89S51
TUGAS AKHIR
Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.
Medan, Mei 2009
HERMAN TAMBUNAN 062408030
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
iii
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa atas segala anugerah dan rahmatnya sehingga penulis dapat menyelesaikan tugas akhir ini. Ucapan terimakasih saya sampaikan kepada Bapak Drs.Tenang Ginting,MS selaku Dosen pembimbing pada penyelesaian tugas akhir ini yang telah memberikan panduan dan perhatian kepada penulis untuk menyempurnakan tugas akhir ini. Ucapan terimakasih juga ditujukan kepada ketua Departemen Fisika Bapak Dr. Marhaposan Situmorang dan ketua jurusan Fisika Instrumentasi Bapak Drs. Syahrul Humaidi,M.Sc serta Dosen-dosen pengajar pada jurusan Fisika Instrumentasi,dan kawan-kawan stambuk 2006 khususnya adek tersayang atas segala bantuan dan motivasinya sehingga penulis dapat menyelesaikan tugas akhir ini dengan baik. Dan saya juga tidak lupa mengucapkan terimakasih yang sebesar-besarnya kepada kedua orang tua penulis yang begitu banyak memberikan dukungan berupa materil maupun spirituil pada penulis sehingga penulis dapat menyelesaikan tugas akhir ini hingga selesai. Semoga Tuhan Yang Maha Esa memberikan berkat yang berlimpah kepada kita semua.
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
iv
ABSTRAK
Salah satu alat yang cerdas yang dibutuhkan oleh manusia adalah alat pengirim data jarak jauh dengan menggunakan infra merah. Alat ini akan mengirimkan data dari jarak tertentu melalui transmitter dan akan diterima oleh receiver pada jarak tertentu juga. Pada alat ini akan digunakan dua buah mikrokontroler AT89S51, sebuah pemancar infra merah, sebuah penerima sinar infra merah ( TSOP 1738 ). Beberapa buah penguat sinyal dan Beberapa buah seven segmen, Mikrokontroler AT89S51 sebagai otak dari system, dimana yang satu berfungsi mengolah data yang akan dikirimkan, kemudian menampilkannya pada seven segmen sekaligus mengirimkan data tersebut ke rangkaian penerima. Sedangkan mikrokontroler yang kedua berfungsi untuk mengolah data yang dikirimkan oleh mikrokontroler pertama melalui infra merah, kemudian menampilkannya pada seven segmen. Pemancar infra merah berfungsi untuk mengirimkan data ke rangkaian penerima. Penerima infra merah berfungsi untuk menerima data yang dipancarkan oleh pemancar infra merah. Seven segmen berfungsi sebagai display dari nilai yang dikirimkan atau yang diterima.
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
v
DAFTAR ISI Persetujuan Pernyataaan Penghargaan Abstrak Daftar Isi Daftar Tabel Daftar Gambar BAB 1
BAB 2
BAB 3
BAB 4
Halaman ii iii iv v vi viii ix
PENDAHULUAN 1.1 Latar Belakang Penulisan 1.2 Rumusan Masalah 1.3 Tujuan Penulisan 1.4 Batasan Masalah 1.5 Sistematika Penulisan
1 2 2 3 4
LANDASAN TEORI 2.1 Perangkat Keras 2.1.1 Arsitektur Mikrokontroler AT89S51 2.1.2 Konstruksi AT89S51 2.2 Perangkat Lunak 2.2.1 Bahasa Assembly MCS -51 2.2.2 Software 8051 Editor,Assembler,Simulator (IDE) 2.2.3 Software Downloader 2.3 Komponen Pendukung 2.3.1 Resistor 2.3.1.1 Fixed Resistor 2.3.1.2 Variabel Resistor 2.3.2 Kapasitor 2.3.2.1 Elktrolytic Capasitor 2.3.2.2 Ceramic Capasitor 2.3.3 Transistor
5 5 6 10 10 14 15 16 16 16 18 20 21 22 24
PERANCANGAN ALAT DAN PROGRAM 3.1 Diagram Blok Rangkaian Rangkaian Power Supplay (PSA) 3.3 Rangkaian Mikrokontroler AT89S51 3.4 Rangkaian Display Seven segment 3.5 Rangkaian Pengirim Data melalui Infrared 3.6 Rangkaian Penerima Data 3.7 Rangkaian ADC
28 29 31 32 34 40 44
ANALISA RANGKAIAN DAN SISTEM KERJA ALAT 4.1 Pengujian Rangkaian Power Supplay (PSA) 4.2 Pengujian Rangkaian Mikrokontroller AT89S51
46 46
3.2
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
vi
4.3 4.4 4.5 4.6 BAB 5
Pengujian Rangkaian Display Sevn segment Pengujian Rangkaian Pengirim Data melalui Infra Merah Pengujian Rangkaian Penerima Infra Merah Pengujian Rangkaian ADC
KESIMPULAN DAN SARAN 5.1 Kesimpulan 5.2 Saran
48 51 54 56
58 58
DAFTAR PUSTAKA LAMPIRAN
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
vii
DAFTAR TABEL Halaman Tabel Tabel Tabel Tabel Tabel Tabel Tabel
2.1 2.2 2.3 3.1 4.1 4.2 4.3
Port 3 dan Fungsi Masing-Masing Pin Gelang Resistor Nilai Kapasitor ` Waktu Mikrokontroler AT89S51 Mengerjakan Perintah Waktu Tunda Mikrokontroler AT89S51 Mengeksekusi Program Data Hasil Pengujian Rangkaian Display Seven Segment Data Hasil Pengujian Rangkaian ADC
9 17 23 37 47 50 57
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
viii
DAFTAR GAMBAR Halaman Gambar 2.1 Gambar 2.2 Gambar 2.3 Gambar 2.4 Gambar 2.5 Gambar 2.6 Gambar 2.7 Gambar 2.8 Gambar 2.9 Gambar 2.10 Gambar 2.11 Gambar 2.12 Gambar 2.13 Gambar 3.1 Gambar 3.2 Gambar 3.3 Gambar 3.4 Gambar 3.5 Gambar 3.6 Gambar 3.7 Gambar 4.1
IC mikrokontroller AT 89S51 Softwer 8051 Editor,Assembler,Simulator (IDE) ISP. Flash Programmer 3.a Resistor Karbon Potensiometer Grafik Perubahan Pada Nilai Potensiometer Skema Kapasitor Electrolytic Capacitor (ELCO) Ceramic Capasitor Simbol Tipe Transistor Transistor Sebagai Saklar ON Karakteristik Daerah Saturasi Pada Transistor Transistor Sebagai Saklar OFF Diagram Blok Rangkaian Rangkaian Power Supply(PSA) Rangkaian Minimum AT89S51 Rangkaian Display Seven Segment Rangkaian Pengirim Data Melalui Infra Merah Rangkaian Penerima Infra Merah Rangkaian ADC Pengujian Rangkaian Display Seven Segment
8 14 15 17 19 19 20 21 22 24 25 26 27 28 29 31 32 35 41 44 49
Herman Tambunan : Perancangan Alat Pengirim Dan Penerima Data Temperatur Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51, 2009. USU Repository © 2009
BAB I PENDAHULUAN
I.1. Latar Belakang Masalah Kebutuhan manusia terhadap peralatan yang cerdas dan dapat bekerja secara otomatis semakin meningkat, disamping cara kerjanya yang teliti juga peralatan ini tidak perlu dipantau setiap saat, tetapi mengaktifkan peralatan tersebut dan kemudian mengaturnya sesuai keinginan, maka peralatan tersebut akan mengerjakan tugasnya sesuai dengan program yang telah diberikan. Untuk merancang sebuah peralatan yang cerdas dan dapat bekerja secara otomatis tesebut, dibutuhkan sebuah alat/komponen yang dapat menghitung, mengingat, dan mengambil pilihan. Kemampuan ini dimiliki oleh sebuah komputer (PC), namun tidaklah efisien jika harus menggunakan komputer hanya untuk keperluan tersebut diatas. Untuk itu komputer dapat digantikan dengan sebuah mikrokontroler. Mikrokontroler merupakan sebuah chip atau IC yang di dalamnya terdapat sebuah prosessor dan flash memori yang dapat dibaca/tulis sampai 1000 kali, sehingga biaya pengembangan menjadi murah karena dapat dihapus kemudian diisi kembali dengan program lain sesuai dengan kebutuhan. Salah satu alat yang cerdas yang dibutuhkan oleh manusia adalah alat pengirim data jarak jauh dengan menggunakan infra merah. Alat ini akan mengirimkan data dari jarak tertentu melalui transmitter dan akan diterima oleh receiver pada jarak tertentu juga. Alat seperti ini dibutuhkan untuk mengefisiensikan dalam hal pengiriman data karena dengan adanya alat ini kita tidak perlu lagi menggunakan dua computer atau dua alat yang saling terhubung untuk pengiriman data.
2
I.2. Rumusan Masalah Berdasarkan uraian yang terdapat dalam latar belakang di atas, maka dalam tugas akhir ini akan dibuat sebuah Perancangan
Alat
Pengirim dan Penerima Data Temperatur
Dengan Menggunakan Sinar Infra Merah Berbasis Mikrokontroler AT89S51 Pada alat ini akan digunakan dua buah mikrokontroler AT89S51, sebuah pemancar infra merah, sebuah penerima sinar infra merah. Beberapa buah penguat sinyal dan beberapa buah seven segmen, Mikrokontroler AT89S51 sebagai otak dari system, dimana yang satu berfungsi mengolah data yang akan dikirimkan, kemudian menampilkannya pada seven segmen sekaligus mengirimkan data tersebut ke rangkaian penerima. Sedangkan mikrokontroler yang kedua berfungsi untuk mengolah data yang dikirimkan oleh mikrokontroler pertama melalui infra merah, kemudian menampilkannya pada seven segmen. Pemancar infra merah berfungsi untuk mengirimkan data ke rangkaian penerima. Penerima infra merah berfungsi untuk menerima data yang dipancarkan oleh pemancar infra merah.
Seven segmen berfungsi sebagai display dari nilai yang dikirimkan atau yang
diterima.
I.3
Tujuan Penulisan
Adapun tujuan dari penelitian ini adalah sebagai berikut: 1. Memanfaatkan mikrokontroler sebagai alat pengiriman dan penerimaan data secara wireless, dengan menggunakan infra merah. 2. Membuat alat sederhana yang dapat mengirim data secara jarak jauh.
3
I.4 Batasan Masalah Mengacu pada hal diatas, saya membuat alat yang dapat mengirimkan data secara jarak jauh dengan menggunakan infra merah . Alat ini akan menggunakan mikrokontroler AT89S51, sebagai pusat dari semua operasi, meliputi pengolahan data, penampilan data, pengiriman dan penerimaan data. Alat ini akan memanfaatkan sinar infra merah sebagai media pengiriman data, dan menggunakan IC TSOP 1738 sebagai penerima sinar infra merah. Alat ini akan menggunakan seven segmen sebagai penampil nilai yang dikirimkan atau nilai yang diterima.
I.5
Sistematika Penulisan Untuk mempermudah pembahasan dan pemahaman, maka penulis membuat
sistematika pembahasan bagaimana sebenarnya prinsip kerja dari alat yang dapat mengontrol temperatur ruangan secara otomatis sekaligus dapat mengirimkan data temperaturnya ke tempat lain, maka penulis menulis laporan ini sebagai berikut:
BAB
I.
PENDAHULUAN Dalam bab ini berisikan mengenai latar belakang, tujuan penulisan, batasan masalah, serta sistematika penulisan.
BAB
II.
LANDASAN TEORI Landasan teori, dalam bab ini dijelaskan tentang teori pendukung yang digunakan untuk pembahasan dan cara kerja dari rangkaian teori pendukung
4
itu antara lain tentang mikrokontroler AT89S51 (hardware dan software), bahasa program yang digunakan.
BAB III.
PERANCANGAN ALAT DAN PROGRAM Pada bagian ini akan dibahas perancangan dari alat, yaitu diagram blok dari rangkaian, diagram alir dari program yang akan diisikan ke mikrokontroler AT89S51.
BAB IV.
ANALISA RANGKAIAN DAN SISTEM KERJA ALAT Pada bab ini akan dibahas hasil analisa dari rangkaian dan sistem kerja alat, penjelasan mengenai rangkaian-rangkaian yang digunakan, penjelasan mengenai program yang diisikan ke mikrokontroler AT89S51.
BAB V.
KESIMPULAN DAN SARAN Bab ini merupakan penutup yang meliputi tentang kesimpulan dari pembahasan yang dilakukan dari tugas akhir ini serta saran, apakah rangkaian ini dapat dibuat lebih efisien dan dikembangkan perakitannya pada suatu metode lain yang mempunyai sistem kerja yang sama.
BAB II LANDASAN TEORI
2.1 PERANGKAT KERAS 2.1.1
Arsitektur Mikrokontroler AT89S51 Mikrokontroler,
sebagai
suatu
terobosan
teknologi
mikrokontroler
dan
mikrokomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semikonduktor dengan kandungan transistor yang lebih banyak namun hanya membutuhkan ruang kecil serta dapat diproduksi secara massal (dalam jumlah banyak) sehingga harga menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih canggih. Ilustrasi yang mungkin bisa memberikan gambaran yang jelas dalam penggunaan mikrokontroler adalah aplikasi mesin tiket dalam arena permainan yang saat ini terkenal di Indonesia. Jika kita sudah selesai bermain, maka akan diberikan suatu nilai, nilai inilah yang menentukan berapa jumlah tiket yang bisa diperoleh dan jika dikumpulkan dapat ditukar dengan berbagai macam hadiah. Sistem tiket ini ditangani dengan mikrokontroler, karena tidak mungkin menggunakan computer PC yang harus dipasang disamping (atau di belakang) mesin permainan yang bersangkutan. Selain sistem tiket, kita juga dapat menjumpai aplikasi mikrokontroler dalam bidang pengukuran jarak jauh atau ynag dikenal dengan sistem telemetri. Misalnya pengukuran disuatu tempat yang membahayakan manusia, maka akan lebih nyaman jika dipasang suatu sistem pengukuran yang bisa mengirimkan data lewat pemancar dan diterima oleh stasiun pengamatan dari jarak yang cukup aman dari sumbernya. Sistem pengukuran jarak jauh ini
6
jelas membutuhkan suatu sistem akuisisi data sekaligus sistem pengiriman data secara serial (melalui pemancar), yang semuanya itu bisa diperoleh dari mikrokontroler yang digunakan. Tidak seperti sistem komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka dan lain sebagainya), mikrokontroler hanya bisa digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terletak pada perbandingan RAM-nya dan ROM. Pada sistem computer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relative besar, sedangkan rutin-rutin antarmuka perangkat keras disimpan dalam ruang ROM yang kecil. Sedangkan pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artinya program control disimpan dalam ROM (bisa Masked ROM atau Flash PEROM) yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sementara,
termasuk
register-register
yang
digunakan
pada
mikrokontroler
yang
bersangkutan.
2.1.2 Kontruksi AT89S51 Mikrokontroler AT89S51 hanya memerlukan tambahan 3 kapasitor, 1 resistor dan 1 kristal serta catu daya 5 Volt. Kapasitor 10 mikro-Farad dan resistor 10 Kilo Ohm dipakai untuk membentuk rangkaian reset. Dengan adanya rangkaian reset ini AT89S51 otomatis direset, begitu rangkaian menerima catu daya. Kristal dengan frekuensi maksimum 24 MHz dan kapasitor 30 piko-Farad dipakai untuk melengkapi rangkaian oscilator pembentuk clock yang menentukan kecepatan kerja mikrokontroler. Memori merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki dua macam memori yang sifatnya berbeda.
7
Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dangan keperluannya, dalam susunan MCS-51 memori penyimpanan program ini dinamakan sebagai memori program. Random Access Memori (RAM) isinya akan sirna begitu IC kehilangan catu daya, dipakai untuk menyimpan data pada saat progam bekerja. RAM yang dipakai untuk menyimpan data ini disebut sebagai memori data. Ada berbagai jenis ROM. Untuk mikrokontroler dengan program yang sudah baku dan diproduksi secara massal, program diisikan ke dalam ROM pada saat IC mikrokontroler dicetak di pabrik IC. Untuk keperluan tertentu mikrokontroler mengunakan ROM yang dapat diisi ulang atau Programble-Eraseable ROM yang disingkat menjadi PEROM atau PROM. Dulu banyak dipakai UV-EPROM (Ultra Violet Eraseable Progamble ROM) yang kemudian dinilai mahal dan ditinggalkan setelah ada flash PEROM yang harganya jauh lebih murah. Jenis memori yang dipakai untuk Memori Program AT89S51 adalah Flash PEROM, program untuk mengendalikan mikrokontroler diisikan ke memori itu lewat bantuan alat yang dinamakan sebagai AT89S51 Flash PEROM Programmer. Memori Data yang disediakan dalam chip AT89S51 sebesar 128 byte, meskipun hanya kecil saja tapi untuk banyak keperluan memori kapasitas itu sudah cukup. Sarana Input/Ouput yang disediakan cukup banyak dan bervariasi. AT89S51 mempunyai 32 jalur Input/Ouput. Jalur Input/Ouput paralel dikenal sebagai Port 1 (P1.0..P1.7) dan Port 3 (P3.0..P3.5 dan P3.7).
8
Gambar 2.1 IC Mikrokontroler AT89S51 Deskripsi pin-pin pada mikrokontroler AT89S51 : VCC (Pin 40) Suplai tegangan GND (Pin 20) Ground Port 0 (Pin 39-Pin 32) Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data ataupun penerima kode byte pada saat flash programming. Pada fungsi sebagai I/O biasa port ini dapat memberikan output sink ke delapan buah TTL input atau dapat diubah sebagai input dengan memberikan logika 1 pada port tersebut.
9
Pada fungsi sebagai low order multiplex address/data, port ini akan mempunyai internal pull up. Pada saat flash progamming diperlukan eksternal pull up, terutama pada saat verifikasi program. Port 2 (Pin 21 – pin 28) Port 2 berfungsi sebagai I/O biasa atau high order address, pada saat mengakses memori secara 16 bit. Pada saat mengakses memori 8 bit, port ini akan mengeluarkan isi dari P2 special function register. Port ini mempunyai internal pull up dan berfungsi sebagai input dengan memberikan logika 1. Sebagai output, port ini dapat memberikan output sink keempat buah input TTL. Port 3 (Pin 10 – pin 17) Port 3 merupakan 8 bit port I/O. Port 3 juga mempunyai fungsi pin masing-masing, yaitu sebagai berikut :
Tabel 2.1 Port 3 dan fungsi masing-masing Pin Nama pin
Fungsi
P3.0 (pin 10)
RXD (Port input serial)
P3.1 (pin 11)
TXD (Port output serial)
P3.2 (pin 12)
INTO (interrupt 0 eksternal)
P3.3 (pin 13)
INT1 (interrupt 1 eksternal)
P3.4 (pin 14)
T0 (input eksternal timer 0)
P3.5 (pin 15)
T1 (input eksternal timer 1)
P3.6 (pin 16)
WR (menulis untuk eksternal data memori)
P3.7 (pin 17)
RD (untuk membaca eksternal data memori)
10
RST (pin 9) Reset akan aktif dengan memberikan input high selama 2 cycle. ALE/PROG (pin 30) Address latch Enable adalah pulsa output untuk me-latch byte bawah dari alamat selama mengakses memori eksternal. Selain itu, sebagai pulsa input program (PROG) selama memprogram Flash. PSEN (pin 29) Program store enable digunakan untuk mengakses memori program eksternal. EA (pin 31) Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan program yang ada pada memori eksternal setelah sistem direset. Jika kondisi high, pin ini akan berfungsi untuk menjalankan program yang ada pada memori internal. Pada saat flash programming, pin ini akan mendapat tegangan 12 Volt. XTAL1 (pin 19) Input untuk clock internal. XTAL2 (pin 18) Output dari osilator.
2.2 PERANGKAT LUNAK 2.2.1 Bahasa Assembly MCS-51 Bahasa yang digunakan untuk memprogram IC mikrokontroler AT89S51 adalah bahasa assembly untuk MCS-51. angka 51 merupakan jumlah instruksi pada bahasa ini
11
hanya ada 51 instruksi. Dari 51 instruksi, yang sering digunakan orang hanya 10 instruksi. Instruksi –instruksi tersebut antara lain :
1. Instruksi MOV Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register tertentu. Pengisian nilai dapat secara langsung atau tidak langsung. Contoh pengisian nilai secara langsung MOV R0,#20h Perintah di atas berarti : isikan nilai 20 Heksadesimal ke register 0 (R0). Tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah nilai. Contoh pengisian nilai secara tidak langsung MOV 20h,#80h ........... ............ MOV R0,20h Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal ke register 0 (R0). Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan tersebut adalah alamat. 2. Instruksi DJNZ Decreament Jump If Not Zero (DJNZ) ini merupakan perintah untuk mengurangi nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol. Contoh , MOV R0,#80h Loop: ........... ............
12
DJNZ R0,Loop ............ R0 -1, jika belum 0 lompat ke loop, jika R0 = 0 maka program akan meneruskan ke perintah pada baris berikutnya.
3. Instruksi ACALL Instruksi ini berfungsi untuk memanggil suatu rutin tertentu. Contoh : DJNZ R0, Loop ............. ACALL TUNDA ............. TUNDA: .................
4. Instruksi RET Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin pemanggil setelah instruksi ACALL dilaksanakan. Contoh, ACALL TUNDA ............. TUNDA: ................. RET 5. Instruksi JMP
(Jump)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh, Loop: ................. .............. JMP Loop
13
6. Instruksi JB
(Jump if bit)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika high (1). Contoh, Loop: JB P1.0,Loop ................. 7. Instruksi JNB
(Jump if Not bit)
Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0). Contoh, Loop: JNB P1.0,Loop .................
8. Instruksi CJNE
(Compare Jump If Not Equal)
Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh, Loop: ................ CJNE R0,#20h,Loop ................ Jika nilai R0 tidak sama dengan 20h, maka program akan lompat ke rutin Loop. Jika nilai R0 sama dengan 20h,maka program akan melanjutkan instruksi selanjutnya..
9. Instruksi DEC (Decreament) Instruksi ini merupakan perintah untuk mengurangi nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h
R0 = 20h
14
................ DEC R0
R0 = R0 – 1
.............
10. Instruksi INC (Increament) Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh, MOV R0,#20h
R0 = 20h
................ INC R0
R0 = R0 + 1
.............
11. Dan lain sebagainya
2.2.2 Software 8051 Editor, Assembler, Simulator (IDE) Instruksi-instruksi yang merupakan bahasa assembly tersebut dituliskan pada sebuah editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Tampilannya seperti di bawah ini.
Gambar 2.2 8051 Editor, Assembler, Simulator (IDE)
15
Setelah program selesai ditulis, kemudian di-save dan kemudian di-Assemble (di-compile). Pada saat di-assemble akan tampil pesan peringatan dan kesalahan. Jika masih ada kesalahan atau peringatan, itu berarti ada kesalahan dalam penulisan perintah atau ada nama subrutin yang sama, sehingga harus diperbaiki terlebih dahulu sampai tidak ada pesan kesalahan lagi. Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke dalam bilangan heksadesimal, proses perubahan ini terjadi pada saat peng-compile-an. Bilangan heksadesimal inilah yang akan dikirimkan ke mikrokontroler.
2.2.3 Software Downloader Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroler digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Tampilannya seperti gambar di bawah ini
Gambar 2.3 ISP- Flash Programmer 3.a Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil file heksadesimal dari hasil kompilasi 8051IDE, kemudian klik Write untuk mengisikan hasil kompilasi tersebut ke mikrokontroler.
16
2.3 Komponen-Komponen Pendukung
2.3.1 Resistor
Resistor komponen pasif elektronika yang berfungsi untuk membatasi arus listrik yang mengalir. Berdasarkan kelasnya resistor dibagi menjadi 2 yaitu : Fixed Resistor dan Variable R esistor Dan umumnya terbuat dari carbon film atau metal film, tetapi tidak menutup kemungkinan untuk dibuat dari material yang lain.
Pada dasarnya semua bahan memiliki sifat resistif namun beberapa bahan tembaga perak emas dan bahan metal umumnya memiliki resistansi yang sangat kecil. Bahan–bahan tersebut menghantar arus listrik dengan baik, sehingga dinamakan konduktor. Kebalikan dari bahan yang kondukt if, bahan material seperti karet, gelas, karbon memiliki resistansi yang lebih besar menahan aliran elektron dan disebut sebagai insulator.
2.3.1.1 Fixed Resistor
Resistor adalah komponen dasar elektronika yang digunakan untuk membatasi jumlah arus yang mengalir dalam satu rangkaian. Sesuai dengan namanya resistor bersifat resistif dan umumnya terbuat dari bahan karbon. Tipe resistor yang umum berbentuk tabung porselen kecil dengan dua kaki tembaga dikiri dan kanan. Pada badannya terdapat lingkaran membentuk gelang kode warna untuk memudahkan pemakai mengenali besar resistansi tanpa
17
mengukur besarnya dengan ohm meter. Kode warna tersebut adalah standar menufaktur yang dikeluarkan oleh ELA (Electronic Industries Association).
Gambar 2.4. Resistor karbon
Tabel 2.2 Gelang Resistor
WARNA
GELANG I
GELANG II
GELANG III
NILAI TOLERANSI
Hitam
0
0
1
-
Coklat
1
1
10
-
Merah
2
2
100
-
Jingga
3
3
1000
-
Kuning
4
4
10000
-
Hijau
5
5
100000
-
Biru
6
6
1000000
-
Violet
7
7
10000000
-
Abu-abu
8
8
100000000
-
Putih
9
9
1000000000
-
Emas
-
-
0,1
5%
Perak
-
-
0,01
10%
Tanpa Warna
-
-
-
20%
18
Resitansi dibaca dari warna gelang yang paling depan ke arah gelang toleransi berwarna coklat, emas, atau perak. Biasanya warna gelang toleransi ini berada pada bahan resistor yang paling pojok atau juga dengan lebar yang lebih menonjol, sedangkan warna gelang yang keempat agak sedikit ke dalam. Dengan demikian pemakai sudah langsung mengetahui berapa toleransi dari resitor tersebut. Kalau anda telah bisa menentukan mana gelang pertama selanjutnya adalah membaca nilai resistansinya.
Biasanya resistor dengan toleransi 5%, 10% atau 20% memiliki gelang (tidak termasuk gelang toleransi). Tetapi resistor dengan toleransi 1% atau 2% (toleransi kecil) memiliki 4 gelang (tidak termasuk gelang toleransi). Gelang pertama dan seterusnya berturut-turut menunjukkan besar nilai satuan, dan gelang terakhir adalah faktor penggalinya.
2.3.1.2 Variable Resistor
Untuk kelas resistor yang kedua ini terdapat 2 tipe. Untuk tipe pertama dinamakan variable resistor dan nilainya dapat diubah sesuai keinginan dengan mudah dan sering digunakan untuk pengaturan volume, bass, balance, dll. Sedangkan yang kedua adalah semifixed resistor. Nilai dari resistor ini biasanya hanya diubah pada kondisi tertentu saja. Contoh penggunaan dari semi-fixed resistor adalah tegangan referensi yang digunakan untuk ADC, fine tune circuit, dll. Ada beberapa model pengaturan nilai Variable resistor, yang sering digunakan adalah dengan cara nya terbatas sampai 300 derajat putaran. Ada beberapa model variable resistor yang harus diputar berkali – kali untuk mendapatkan semua nilai resistor. Model ini dinamakan “Potentiometers” atau “Trimmer Potentiometers”.
19
Gambar 2.5 Potensio meter
Pada gambar 2.5 di atas untuk bentuk 3 biasanya digunakan untuk volume kontrol. Bentuk yang ke 2 merupakan semi fixed resistor dan biasanya di pasang pada PCB (Printed Circuit Board). Sedangkan bentuk 1 dpotentiometers. Ada 3 tipe didalam perubahan nilai
Nilai hambatan (ohm)
dari resistor variabel, perubahan tersebut dapat dilihat pada gambar 2.6.
Sudut Putaran Gambar 2.6 Grafik Perubahan nilai pada potensiometer
Pada saat tipe A diputar searah jarum jam, awalnya perubahan nilai resistansi lambat tetapi ketika putarannya mencapai setengah atau lebih nilai perubahannya menjadi sangat cepat. Tipe ini sangat cocok dengan karakteristik telinga ma. Karena telinga sangat peka ketika membedakan suara dengan volume yang lemah, tetapi tidak terlalu sensitif untuk membedakan perubahan suara yang keras. Biasanya tipe A ini juga disebut sebagai “Audio
20
Taper” potensiometer. Untuk tipe B perubahan resistansinya adalah linier dan cocok digunakan untuk Aplikasi Balance Control, resistance value adjustment in circuit, dll. Sedangkan untuk tipe C perubahan resistansinya kebalikan dati tipe A.
2.3.2 Kapasitor
Kapasitor adalah komponen elektronika yang dapat menyimpan muatan listrik. Struktur sebuah kapasitor terbuat dari 2 buah plat metal yang dipisahkan oleh suatu bahan dielektrik. Bahan-bahan dielektrik yang umum dikenal misalnya udara vakum, keramik, gelas dan lainlain. Jika kedua ujung plat metal diberi tegangan listrik, maka muatan-muatan positif akan mengumpul pada salah satu kaki elektroda metalnya dan pada saat yang sama muatan-muatan negatif terkumpul pada ujung metal yang satu lagi. Muatan positif tidak dapat mengalir menuju ujung kutup negatif dan sebaliknya muatan negatif tidak bisa menuju ke ujung kutup positif karena terpisah oleh bahan elektrik yang non-konduktif. Muatan elektrik ini “tersimpan” selama tidak ada konduktif pada ujung- ujung kakinya. Di alam bebas phenomena kapasitor terjadi pada saat terkumpulnya muatan-muatan positif dan negatif diawan. dielektrik
Elektroda
Elektroda
Gambar 2.7 Skema kapasitor. Kapasitor merupakan komponen pasif elektronika yang sering dipakai didalam merancang suatu sistem yang berfungsi untuk mengeblok arus DC, Filter, dan penyimpan
21
energi listrik. Didalamnya 2 buah pelat elektroda yang saling berhadapan dan dipisahkan oleh sebuah insulator. Sedangkan bahan yang digunakan sebagai insulator dinamakan dielektrik. Ketika kapasitor diberikan tegangan DC maka energi listrik disimpan pada tiap elektrodanya. Selama kapasitor melakukan pengisian, arus mengalir. Aliran arus tersebut akan berhenti bila kapasitor telah penuh. Yang membedakan tiap - tiap kapasitor adalah dielektriknya. Berikut ini adalah jenis– jenis kapasitor yang dipergunakan dalam perancangan ini.
2.3.2.1.
Electrolytic Capacitor (ELCO)
Gambar 2.8 Electrolytic Capacitor (ELCO)
Elektroda dari kapasitor ini terbuat dari alumunium yang menggunakan membrane oksidasi yang tipis. Karakteristik utama dari Electrolytic Capacitor adalah perbedaan polaritas pada kedua kakinya. Dari karakteristik tersebut kita harus berhati- hati di dalam pemasangannya pada rangkaian, jangan sampai terbalik. Bila polaritasnya terbalik maka akan menjadi rusak bahkan “meledak”. Biasanya jenis kapasitor ini digunakan pada rangkaian power supply. Kapasitor ini tidak bisa digunakan pada rangkaian frekuensi tinggi. Biasanya tegangan kerja dari kapasitor dihitung dengan cara mengalikan tegangan catu daya dengan 2.
22
Misalnya kapasitor akan diberikan catu daya dengan tegangan 5 Volt, berarti kapasitor yang dipilih harus memiliki tegangan kerja minimum 2 x 5Volt = 10 Volt.
2.3.2.2.
Ceramic Capacitor
Kapasitor menggunakan bahan titanium acid barium untuk dielektriknya. Karena tidak dikonstruksi seperti koil maka komponen ini dapat digunakan pada rangkaian frekuensi tinggi. Biasanya digunakan untuk melewatkan sinyal frekuensi tinggi menuju ke ground. Kapasitor ini tidak baik digunakan untuk rangkaian analog, karena dapat mengubah bentuk sinyal. Jenis ini tidak mempunyai polaritas dan hanya tersedia dengan nilai kapasitor yang sangat kecil dibandingkan dengan kedua kapasitor diatas.
Gambar 2.9 Ceramic Capacitor
Untuk mencari nilai dari kapasitor biasanya dilakukan dengan melihat angka/kode yang tertera pada badan kapasitor tersebut. Untuk kapasitor jenis elektrolit memang mudah, karena nilai kapasitansinya telah tertera dengan jelas pada tubuhnya. Sedangkan untuk kapasitor keramik dan beberapa jenis yang lain nilainya dikodekan. Biasanya kode tersebut terdiri dari 4 digit, dimana 3 digit pertama merupakan angka dan digit terakhir berupa huruf yang menyatakan toleransinya. Untuk 3 digit pertama angka yang terakhir berfungsi untuk menentukan 10n, nilai n dapat dilihat pada tabel dibawah.
23
Tabel 2.3 Nilai Kapasitor
3rd Digit
Multiplier
Letter
Tolerance
0
1
D
0.5 pF
1
10
F
1%
2
100
G
2%
3
1,000
H
3%
4
10,000
J
5%
5
100,000
K
10 %
6,7
Not Used
M
20 %
8
.01
P
+100, -0 %
9
1
Z
+80, -20 %
Misalnya suatu kapasitor pada badannya tertulis kode 474J, berarti nilai kapasitansinya adalah 47 * 104 = 470.000 pF = 0.47µF sedangkan toleransinya 5%. Yang harus diingat didalam mencari nilai kapasitor adalah satuannya dalam pF (Pico Farad).
24
2.3.3
Transistor
Transistor adalah komponen elektronika yang mempunyai tiga buah terminal. Terminal itu disebut emitor, basis, dan kolektor. Transistor seakan-akan dibentuk dari penggabungan dua buah dioda. Dioda satu dengan yang lain saling digabungkan dengan cara menyambungkan salah satu sisi dioda yang senama. Dengan cara penggabungan seperti dapat diperoleh dua buah dioda sehingga menghasilkan transistor NPN.
Bahan mentah yang digunakan untuk menghasilkan bahan N dan bahan P adalah silikon dan germanium. Oleh karena itu, dikatakan : 1. Transistor germanium PNP. 2. Transistor silikon NPN. 3. Transistor silikon PNP. 4. Transistor germanium NPN.
Semua komponen di dalam rangkaian transistor dengan simbol. Anak panah yang terdapat di dalam simbol menunjukkan arah yang melalui transistor. C
C B
B E NPN
E PNP
Gambar 2.10 simbol tipe transistor
25
Keterangan : C = kolektor E = emiter B = basis Didalam pemakaiannya transistor dipakai sebagai komponen saklar (switching) dengan memanfaatkan daerah penjenuhan (saturasi) dan daerah penyumbatan (cut off) yang ada pada karakteristik transistor.
Pada daerah penjenuhan nilai resistansi persambungan kolektor emiter secara ideal sama dengan nol atau kolektor dan emiter terhubung langsung (short). Keadaan ini menyebabkan tegangan kolektor emiter (VCE) = 0 Volt pada keadaan ideal, tetapi pada kenyataannya VCE bernilai 0 sampai 0,3 Volt. Dengan menganalogikan transistor sebagai saklar, transistor tersebut dalam keadaan on seperti pada gambar 2.11. Vcc
Vcc
IC
R
RB Saklar On VCE VB
IB
VBE
Gambar 2.11 Transistor sebagai Saklar ON
Saturasi pada transistor terjadi apabila arus pada kolektor menjadi maksimum dan untuk mencari besar arus basis agar transistor saturi adalah :
26
I max =
Vcc ……………………………………………..…………….(2.1) Rc
hfe . I B =
IB =
Vcc ………………………………………….…………….(2.2) Rc
Vcc ………………………………………………………….(2.3) hfe . Rc
Hubungan antara tegangan basis (VB) dan arus basis (IB) adalah : IB =
VB − VBE ……………………………………………………….(2.4) RB
VB = IB . RB + VBE…………………………………………………..(2.5)
VB =
Vcc . R B + VBE …………………………………………………(2.5) hfe . Rc
Jika tegangan VB telah mencapai VB =
Vcc . R B + VBE , maka transistor akan saturasi, hfe . Rc
dengan Ic mencapai maksimum.
Gambar 2.12 dibawah ini menunjukkan apa yang dimaksud dengan VCE (sat) adalah harga VCE pada beberapa titik dibawah knee dengan posisi tepatnya ditentukan pada lembar data. Biasanya VCE (sat) hanya beberapa perpuluhan volt, walaupun pada arus kolektor sangat besar bisa melebihi 1 volt. Bagian dibawah knee pada gambar 2.12 dikenal sebagai daerah saturasi.
IC Penjenuhan (saturation)
IB > IB IB = IB
(sat) (sat)
Titik setimbang Q
IB
Titik Sumbat (Cut off)
IB = 0 VCE
Gambar 2.12 Karakteristik daerah saturasi pada transistor
27
Pada daerah penyumbatan,nilai resistansi persambungan kolektor emiter secara ideal sama dengan tak terhitung atau terminal kolektor dan emiter terbuka (open).
Keadaan ini menyebabkan tegangan (VCB) sama dengan tegangan sumber (Vcc). Tetapi pada kenyataannya Vcc pada saat ini kurang dari Vcc karena terdapat arus bocor dari kolektor ke emiter. Dengan menganalogikan transistor sebagai saklar, transistor tersebut dalam keadaan off seperti gambar dibawah ini. Vcc
Vcc
IC
R
RB Saklar Off VCE VB
IB
VBE
Gambar 2.13 Transistor Sebagai Saklar OFF Keadaan penyumbatan terjadi apabila besar tegangan habis (VB)
sama dengan
tegangan kerja transistor (VBE) sehingga arus basis (IB) = 0 maka : IB =
IC ……………………………………………………………(2.6) hfe
IC = IB . hfe ….………………………………………………………(2.7) IC = 0 . hfe ………..…………………………………………………(2.8) IC = 0 ………………………………………………………………..(2.9) Hal ini menyebabkan VCE sama dengan Vcc dapat dibuktikan dengan rumus : Vcc
= Vc + VCE …………..…………………………………………(2.10)
VCE
= Vcc – (Ic . Rc) …..……………………………………………(2.11)
VCE
= Vcc …..………………………………………………………(2.12)
BAB III PERANCANGAN ALAT DAN PROGRAM
3.1 DIAGRAM BLOK Secara garis besar rangkaian untuk lift 4 lantai terdiri dari 5 blok utama, yaitu rangkaian tombol, rangkaian display, rangkaian mikrokontroler, rangkaian display, rangkaian driver motor stepper dan motor stepper. Diagram blok rangkaian tampak seperti gambar berikut:
Sensor suhu LM35
ADC
display
uC AT89S51 (1)
Pemancar infra merah
penerima infra merah
uC AT89S51 (2)
display
Gambar 3.1. Diagram Blok Rangkaian Secara umum pada perancangan alat pengirim data temperatur jarak jauh ini terdiri dari delapan blok diagram utama. Sensor suhu LM35 digunakan untuk mendeteksi suhu pada ruangan. Data analog yang dihasilkan oleh sensor suhu LM35 kemudian akan dikirimkan ke ADC untuk diolah menjadi data digital. Data yang telah dikonversi menjadi data digital inilah
29
yang dikirimkan ke mikrokontroler ( 1 ) untuk diolah. Display berfungsi untuk menampilkan data temperatur. Untuk dapat mengirimkan data temperatur yang diterima oleh sensor suhu LM35 ke mikrokontroler ( 2 ) maka digunakan pemancar infra merah. Dan untuk dapat menerima data yang dikirimkan oleh mikrokontroler (1) digunakan penerima infra merah.
3.2 Rangkaian Power Supplay (PSA) Rangkaian ini berfungsi untuk mensupplay tegangan ke seluruh rangkaian yang ada. Rangkaian PSA yang dibuat terdiri dari dua keluaran, yaitu 5 volt dan 12 volt, keluaran 5 volt digunakan untuk mensupplay tegangan ke seluruh rangkaian, sedangkan keluaran 12 volt digunakan untuk mensupplay tegangan ke motor stepper. Rangkaian power supplay ditunjukkan pada gambar 3.2 berikut ini :
TIP32C
LM7805CT
12Volt
Vreg IN
OUT
100ohm
220V 50Hz 0Deg 1N5392GP
2200uF 1N5392GP
5Volt 330ohm
1uF 100uF
TS_PQ4_12
Gambar 3.2 Rangkaian Power Supplay (PSA)
Trafo CT merupakan trafo stepdown yang berfungsi untuk menurunkan tegangan dari 220 volt AC menjadi 12 volt AC. Kemudian 12 volt AC akan disearahkan dengan menggunakan dua buah dioda, selanjutnya 12 volt DC akan diratakan oleh kapasitor 2200 μF. Regulator tegangan 5 volt (LM7805CT) digunakan agar keluaran yang dihasilkan tetap 5 volt walaupun terjadi perubahan pada tegangan masukannya. LED hanya sebagai indikator apabila PSA dinyalakan.
30
Transistor PNP TIP 32 disini berfungsi untuk mensupplay arus apabila terjadi kekurangan arus pada rangkaian, sehingga regulator tegangan (LM7805CT) tidak akan panas ketika rangkaian butuh arus yang cukup besar.Transistor tipe PNP ini akan aktif jika tegangan pada basis > 0,7 volt dari tegangan positif. Tegangan positif yang dihubungkan ke emitor sebesar 12 volt, sehingga transistor akan aktif jika diberi tegangan yang lebih kecil dari 12 volt – 0,7 volt = 11,3 volt.
Dalam kondisi biasa (LM7805 tidak kekurangan arus), maka basis akan
mendapatkan tegangan 12 volt, sehingga transistor tidak aktif, emiter tidak terhubung dengan kolektor, sehingga tegangan pada kolektor sama dengan tegangan pada output regulator LM7805 yaitu 5 volt. Namun jika rangkaian membutuhkan arus yang lebih banyak, maka regulator akan mengambil arus dari inputnya, sehingga tegangan pada input regulator akan turun hingga lebih kecil dari 11,3 volt, transistor akan aktif, maka arus akan mengalir dari emiter ke kolektor. Pada transistor ini jika aktif, maka yang mengalir dari emiter ke kolektor adalah arusnya, sedangkan tegangannya tidak, sehingga tegangan pada kolektor tetap 5 volt. Tegangan 12 volt DC langsung diambil dari keluaran 2 buah dioda penyearah.
31
3.3 Rangkaian Mikrokontroler AT89S51 Rangkaian minimum mikrokontroler AT89S51 ditunjukkan pada gambar 4.2 berikut VCC
ini : 1 2 3 4 5 6 7 8
VCC
P1.0 P1.1
P0.0/AD0
P1.2
P0.1/AD1
P1.3
P0.2/AD2
P1.4
P0.3/AD3
P1.5
P0.4/AD4
P1.6
P0.5/AD5
P1.7 9 10 11 12 13 14 15 16 17
Xtal 12 MHz
18
2
19
1
33pF
33pF
P0.6/AD6
RST
P0.7/AD7
P3.0/RX0 P3.1/TX0
ALE/PROG P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2
20
EA/VPP
PSEN P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13
XTAL1 GND
P2.6/A14 P2.7/A16
40
5V
4.7kohm
39 38 37 36 35 34 33 32 31 30
10kohm 10uF
29 28 27 26 25 24 23 22 21
AT89S51
Gambar 3.3
Rangkaian minimum AT89S51
Pin 29 merupakan PSEN (Program Store Enable) dan pin 30 sebagai Address Latch Enable (ALE)/PROG dihubungkan ke ground (diset low), sedangkan Pin 31 External Access Enable (EA) diset high (H). Ini dilakukan karena mikrokontroler AT89S51 tidak menggunakan memori eksternal.
Pin 18 dan 19 dihubungkan ke XTAL 12 MHz dan capasitor 33 pF.
XTAL ini akan mempengaruhi kecepatan
mikrokontroler AT89S51 dalam mengeksekusi
setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset mikrokontroler ini. Pin 32 sampai 39 adalah Port 0 yang merupakan saluran/bus I/O 8 bit open collector dapat juga digunakan sebagai multiplex
32
bus alamat rendah dan bus data selama adanya akses ke memori program eksternal. Karena fungsi tersebut maka Port 0 dihubungkan dengan resistor array. Pin 20 merupakan ground dihubungkan dengan ground pada power supplay. Pin 40 merupakan sumber tegangan positif dihubungkan dengan + 5 volt dari power supplay.
3.4 Rangkaian Display Seven Segment Nilai temperatur yang terdeteksi oleh sensor temperatur (LM35) diubah menjadi 8-bit data biner oleh ADC kemudian diolah oleh mikrokontroler AT89S51 untuk selanjutnya ditampilkan pada 3-digit seven segmen. Rangkaian display seven segmen tampak seperti V C 5CV
gambar di bawah ini : i
i
i
S E V E N _ S E G _ DS I E S V P E L A NY _ S E G _ DS I E S V P E L A NY _ S E G _ D IS P
P 3 .1
5
4 D7
D6
7
Out
4 0 9 4
10
11
12
6 D5
D4
D3
13 D1
D2 Clock
In 2
10
Out
4 0 9 4
3
D0
5
4 D7
14
A B C DE F G
D6
7
11
12
13
6 D5
D4
D3
D2 Clock
14
In
Out
2
3
D1
D0
5
4 D7
D6
7
6 D5
12
11
D4
D3
13 D1
D2 Clock
AT89S 51
10
P 3 .0
A B C DE F G
4 0 9 4
3
2
In
D0
14
A B C DE F G
AT89S 51
Gambar 3.4 Rangkaian Display Seven Segmen
Display ini menggunakan 3 buah seven segmen yang dihubungkan ke IC 4094 yang merupakan IC serial to paralel. IC ini akan merubah 8 bit data serial yang masuk menjadi keluaran 8 bit data paralel. Rangkaian ini dihubungkan dengan P3.0 dan P3.1 AT89S51. P3.0
33
merupakan fasilitas khusus pengiriman data serial yang disediakan oleh mikrokontroler AT89S51. Sedangkan P3.1 merupakan sinyal clock untuk pengiriman data serial. Dengan menghubungkan P3.0 dengan IC serial to paralel (IC 4094), maka data serial yang dikirim akan diubah menjadi data paralel. Kemudian IC 4094 ini dihubungkan dengan seven segmen agar data tersebut dapat ditampilkan dalam bentuk angka. Seven segmen yang digunakan adalah aktip low, ini berarti segmen akan hidup jika diberi data low (0) dan segmen akan mati jika diberi data high (1). Untuk menampilkan angka pada seven segmen, maka data yang harus diberikan adalah sebagai berikut: •
Untuk menampilkan angka nol, data yang harus dikirim adalah
20h
Untuk menampilkan angka satu, data yang harus dikirim adalah
0ech
Untuk menampilkan angka dua, data yang harus dikirim adalah
18h
•
Untuk menampilkan angka tiga, data yang harus dikirim adalah
88h
•
Untuk menampilkan angka empat, data yang harus dikirim adalah
•
Untuk menampilkan angka lima, data yang harus dikirim adalah
•
Untuk menampilkan angka enam, data yang harus dikirim adalah
•
Untuk tampilan kosong (tidak ada nilai yang tampil), data yang harus dikirim adalah
0c4h 82h 02h
0ffh
Program untuk menampilkan angka pada display seven segmen adalah sebagai berikut: bil0
equ
20h
bil1
equ
0ech
bil2
equ
18h
bil3
equ
88h
bil4
equ
0c4h
bil5
equ
82h
34
bil6
equ
bilkosong equ
02h 0ffh
mov 60h,#bil1 mov 61h,#bil2 mov 62h,#bil3 Tampil: mov sbuf,62h jnb ti,$ clr ti mov sbuf,61h jnb ti,$ clr ti mov sbuf,60h jnb ti,$ clr ti sjmp Tampil
Program di atas akan menampilkan nilai 123 pada display seven segmen. Dan nilai berapapun yang diisikan ke alamat 60h, 61h dan 62h akan ditampilkan pada display seven segmen.
3.5 Rangkaian Pengirim Data Melalui Infra Merah Data yang yang telah diolah mikrokontroler AT89S51, selain ditampilkan pada display seven segmen, data tersebut juga dikirimkan ke rangkaian penerima dengan menggunakan LED infra merah. Rangkaiannya seperti gambar di bawah ini :
35
VCC
P3.7 ( AT89S51)
5V
R2 4.7k
2SA733
LED_ir
330
Gambar 3.5 Rangkaian Pengirim Data Melalui Infra Merah Pada rangkaian di atas LED infra merah akan menyala jika basis pada transistor C945 diberi tegangan yang lebih besar dari 0,7 volt, ini akan sama artinya jika pada P3.7 AT89S51 diberi logika high (1), karena pin yang diberi logika high akan mempunyai tegangan 4 s/d 5 volt, cukup untuk mengaktifkan transistor. Sedangkan untuk mematikan LED infra merah, maka P3.7 AT89S51 harus diberi logika low (0), karena dengan memberikan logika low pada P3.7, maka P3.7 akan memiliki tegangan 0 s/d 0,009 volt, tegangan ini akan menyebabkan transistor tidak aktif. Untuk pengiriman data agar data dapat dikirimkan dari jarak yang jauh, maka LED infra merah harus dipancarkan dengan frekuensi 38 KHz karena frekuensi ini bebas dari gangguan frekuensi infra merah alam. Jika LED infra merah dipancarkan dengan frekuensi selai 38 KHz, maka pancarannya akan terganggu oleh frekuensi-frekuensi infra merah dari alam, seperti frekuensi infra merah yang dipancarkan oleh matahari, tumbuhan, bahkan badan manusia. Dengan menggunakan frekuensi 38 KHz, maka pancaran LED infra merah yang
36
dihasilkan oleh rangkaian tidak terganggu oleh pancaran infra merah alam, sehingga jarak pengiriman data semakin jauh. Untuk memancarkan frekuensi 38 KHz dari LED infra merah, langkah yang harus dilakukan adalah dengan mengedipkannya (menghidupkan dan mematikannya) dengan frekuensi tersebut, yaitu dengan memberikan logika high dan low pada P3.7 dengan selang waktu (perioda) :
T=
1 1 1 s 26,3µ s = = = 0, 0000263= f 38 KHz 38 x103 Hz
Untuk mendapatkan perioda tersebut, maka program yang harus diberikan pada mikrokontroler AT89S51 adalah: 38KHz:
Clr p3.7
Program untuk mematikan bit p3.7
nop
berhenti brhenti
nop nop nop nop nop nop nop nop nop nop setb p3.7 nop nop nop nop
Program untuk mengaktifkan bit p3.7
37
nop nop nop nop nop nop sjmp 38KHz
Mikrokontroler AT89S51 memerlukan 12 Clock setiap satu siklus mesin. Dengan demikian, jika digunakan kristal 12 MHz, maka waktu yang diperlukan untuk satu siklus mesin adalah :
12 clock = 1 x10 −6 sekon =1 µs 12 Mhz Tabel 3.1 Waktu Mikrokontroler AT89S51 Mengerjakan perintah. Instruksi
Siklus mesin
Waktu (μS)
CLR
1
1
NOP
1
1
SETB
1
1
SJMP
2
2
Berdasarkan tabel di atas, maka lamanya logika low (0) pada P3.7 adalah 13 μ dan lamanya logika high (1) adalah 13 μs, sehingga periodanya menjadi 26 μs. 13 μs
13 μs
Low
High 26 μs
Dengan demikian frekuensi yang dihasilkan oleh P3.7 adalah :
38
f=
1 1 1 1x106 = = = = 38461Hz= 38, 461KHz T 26 µ s 26 x10−6 s 26
Jika LED infra merah dipancarkan dengan frekuensi ini, maka pancaran LED infra merah dari rangkaian tidak akan terganggu oleh frekuensi infra merah alam. Sebagai catatan frekuensi infra merah yang tidak dipengaruhi oleh frekuensi infra merah dari alam adalah anatara 38 KHz s/d 40 KHz, frekuensi inilah yang digunakan sebagai frekuensi remote kontrol dari TV, VCD dan DVD di seluruh dunia. Ketika penerima infra merah menerima pancaran infra merah dengan frekuensi 38 KHz dari rangkaian pemancar, maka output dari penerima akan berlogika high (1), jika pancaran infra merah ini dihentikan, maka penerima akan mendapatkan logika low (0) sesaat (± 1200 μs ) kemudian berubah menjadi high (1) kembali walaupun tidak ada pancaran infra merah dengan frekuensi 38 KHz. Ini sudah merupakan karakteristik dari penerima infra merah yang digunakan (TSOP 1738). Pada alat ini, logika high setelah setelah logika low sesaat itulah yang dijadikan sebagai data, sehingga dengan mengatur lebar pulsa high (1) tersebut dengan suatu nilai tertentu dan menjadikan nilai tersebut sebagai datanya, maka pengiriman data dapat dilakukan. Pada alat ini, data yang dikirimkan sebanyak 3 data, yaitu data untuk nilai ratusan, nilai puluhan dan nilai. Setiap pengiriman masing-masing data dari ketiga data tersebut, didahului dengan pengiriman sinyal low, jadi ada 3 sinyal low dan ada 3 data. Akan terjadi masalah jika pengiriman data dilakukan seperti ini, yaitu data yang diterima urutannya tidak sesuai dengan data yang dikirimkan. Misalnya 3 data yang dikirimkan adalah 567, kemungkinan data yang diterima adalah: 675, dan 756. Sehingga hanya 1/3 kemungkinannya data yang dikirimkan benar. Kesalahan pengambilan data oleh penerima disebabkan karena adanya penghalang atau karena kesalahan pengambilan data ketika alat pertama kali dihidupkan. Seharusnya
39
penerima mengambil sinyal low dari data yang pertama, kemudian mengambil data pertama, setelah itu mengambil sinyal low dari data kedua, kemudian mengambil data kedua, dan demikian seterusnya, sehingga data tersebut sesuai dengan urutannya. Namun jika ada penghalang sesaat atau ketika pertama kali dihidupkan terjadi kesalahan pengambilan sinyal low, maka pengambilan data seterusnya akan salah. Misalnya jika ada penghalang sesaat, sehingga sinyal low yang diterima adalah sinyal low yang kedua, maka data kedua akan dianggap sebagai data pertama, dan data ketiga akan dianggap sebagai data kedua, demikian seterusnya, sehingga urutan data menjadi salah. Untuk menghindari kesalahan dalam pengambilan data, maka pada alat ini ditambahkan satu data yang berfungsi sebagai startbit atau data awal. Data awal ini mempunyai nilai tertentu, jadi ketika penerima mendapatkan sinyal low, penerima akan mengambil 1 data setelah sinyal low tersebut dan membandingkannya apakah sesuai dengan data awal atau tidak. Jika tidak sama, maka penerima akan mengambil data berikutnya , kemudian membandingkan lagi sesuai atau tidak dengan data awal. Langkah ini dilakukan terus sampai didapat data awal. Ketika penerima mendapatkan data yang sesuai dengan data awal, maka penerima akan mengambil data pertama setelah data awal sebagai data pertama, data kedua setelah data awal sebagai data kedua, dan seterusnya hingga data ketiga. Dengan demikian tidak akan terjadi kesalahan urutan data, walaupun ada penghalang sesaat. Setiap data mempunyai lebar pulsa high (1) tertentu. Untuk nilai data 0, maka lebar pulsa high yang dikirim adalah ± 1131 μ sekon. Programnya seperti berikut: Mov 70h,#0 Inc 70h Kirim: Mov r0,70h Acall data Sjmp kirim
40
data: loop1: acall pulsa djnz r0,loop1 ret
pulsa: Clr P0.0 Mov r7,#2
; ;
1μs 1μs
pls:
mov r6,#255 djnz r6,$ djnz r7,pls mov r7,#50 djnz r7,$ Ret
; 1μs ; 2x255=510μs ; 2μs =513x2=1026μs ; 1μs ; 2x50=100μs ; 2μs Total 1131μs
Demikian juga seterusnya jika yang dikirimkan data 1 s/d data 9, maka data ini akan ditambah dengan nilai 1, dan kemudian hasil penjumlahannya digunakan sebagai banyaknya perulangan dalam pengiriman pulsa. Sebagai contoh jika data yang dikirimkan adalah data 1, maka data ini akan ditambahkan 1 sehingga hasilnya menjadi 2. 2 inilah yang merupakan banyaknya perulangan pengiriman pulsa. Jadi lebar pulsa untuk data satu ± 2 x 1.131 μs = 2.262 μs. Demikian pula untuk datadata yang lainnya.
3.6 Rangkaian Penerima Infra Merah IC yang digunakan sebagai penerima infra merah adalah IC TSOP 1738. IC ini sering digunakan sebagai penerima/receiver remote control dari TV atau VCD. Rangkaiannya tampak seperti dibawah ini:
41
VCC
5V P3.7 ( AT89S51) i_1
i
i_1
100
10uF 0
TSOP1738 Gambar 3.6 Rangkaian Penerima Infra Merah Pada rangkaian diatas digunakan resistor 100 ohm untuk membatasi arus yang masuk pada rangkaian, sedangkan kapasitor 10 μF digunakan agar arus yang masuk ke IC TSOP 1738 lebih stabil. IC ini mempunyai karakteristik yaitu akan mengeluarkan logika high (1) atau tegangan ± 4,5 volt pada outputnya jika IC ini mendapatkan pancaran sinar infra merah dengan frekuensi antara 38 – 40 KHz, dan IC ini akan megeluarkan sinyal low (0) atau tegangan ± 0,109 volt jika pancaran sinar infra merah dengan frekuensi antara 38 – 40 KHz berhenti, namun logika low tersebut hanya sesaat yaitu sekitar 1200 μs, setelah itu outputnya akan kembali menjadi high. Sifat inilah yang dimanfaatkan sebagai pengiriman data. Output dari IC ini dihubungkan ke P3.7 pada mikrokontroler, sehingga setiap kali IC ini mengeluarkan logika low atau hing pada outputnya, maka mikrokontroller dapat langsung mendeteksinya. Programnya sebagai berikut : Utama: mov 60h,#0h jb P3.7,$ nop
42
jnb P3.7,$ nilai: inc 60h acall hitung jb P3.7,nilai mov a,60h mov b,#10 div ab dec a cjne a,#10,Utama
Awalnya mikrokontroler akan memasukkan nilai 0 pada alamat 60h, kemudian menunggu sinyal low dari P3.7 yang terhubung ke output dari IC TSOP 1738. Jika ada sinyal low, itu berarti ada data yang akan dikirim oleh pemancar,
kemudian mikrokontroler akan
mengabaikan sinyal low tersebut sampai datang sinyal high, sinyal high inilah yang dihitung oleh mikrokontroler sebagai data yang masuk. Data yang masuk akan dibagikan dengan nilai 10. Hal ini dilakukan karena lebar data pengirim 10 kali lebih besar daripada lebar data penerima, sehingga harus dibagi dengan 10. Kemudian hasilnya akan dikurangi dengan 1, hal ini karena pada saat pengiriman, setiap data telah ditambah dengan nilai satu. Selanjutnya lebar data akan dibandingkan, apakah sama dengan 10 atau tidak, jika sama dengan 10 maka data ini merupakan data startbit, dengan demikian 3 data setelah ini adalah merupakan data temperatur, dan akan diambil untuk ditampilkan nilainya. Namun jika data tersebut tidak sama dengan 10, maka data ini bukan merupakan data startbit, program akan kembali ke awal sampai mendapatkan startbitSetelah mendapatkan data startbit, maka mikrokontroler akan mengambil 3 data setelah data startbit tersebut, yang merupakan dara dari nilai temperatur yang dikirimkan oleh pemancar. Programnya sebagai berikut :
43
mov 61h,#0h jb P3.7,$ nop jnb P3.7,$ nilai1: inc 61h acall hitung jb P3.7,nilai1 mov 62h,#0h jb P3.7,$ nop jnb P3.7,$ nilai2: inc 62h acall hitung jb P3.7,nilai2 mov 63h,#0h jb P3.7,$ nop jnb P3.7,$ nilai3: inc 63h acall hitung jb P3.7,nilai3
Pada program di atas, data nilai satuan akan disimpan di alamat 61h, data untuk nilai puluhan akan disimpan pada alamat 62h, sedangkan data untuk nilai ratusan akan disimpan pada alamat 63h . Kemudian data ini akan masing-masing akan dibagi dengan nilai 10 dan dikurangi dengan 1 seperti data pada starbit, kemudian ditampilkan pada display.
44
3.7 Rangkaian ADC Rangkaian ADC ini berfungsi untuk merubah data analog yang dihasilkan oleh sensor suhu menjadi bilangan digital. output dari ADC dihubungkan ke mikrokontroler. Sehingga mikrokontroler dapat mengetahui suhu yang terdapat di dalam ruangan dan mendeteksi tingkat intensitas cahaya di dalam ruangan Dengan demikian proses pengukuran suhu dan pengaturan tingkat pencayaan dapat dilakukan. Gambar rangkaian ADC ditunjukkan pada gambar di bawah ini: g
Gambar 3.7 Rangkaian ADC Input ADC dihubungkan ke sensor suhu LM35 dan LDR, sehingga setiap perubahan tegangan pada LM35 akan dideteksi oleh ADC. Agar output yang dihasilkan oleh ADC bagus, maka tegangan refrensi ADC harus benar-benar stabil, karena perubahan tegangan refrensi pada ADC akan merubah output ADC tersebut. Oleh sebab itu pada rangkaian
ADC di atas
45
tegangan masukan 12 volt dimasukkan ke dalam IC regulator tegangan 9 volt ( 7809) agar keluarannya menjadi 9 volt, kemudian keluaran 9 volt ini dimasukkan kedalam regulator tegangan 5 volt (7805), sehingga keluarannya menjadi 5 volt. Tegangan 5 volt inilah yang menjadi tegangan refrensi ADC. Dengan demikian walaupun tegangan masukan turun setengahnya, yaitu dari 12 volt menjadi 6 volt, tegangan refrensi ADC tetap 5 volt. Output dari ADC dihubungkan ke mikrokontroler, sehingga setiap perubahan output ADC yang disebabkan oleh perubahan inputnya akan diketahui oleh mikrokontoler.
BAB IV ANALISA RANGKAIAN DAN SISTEM KERJA ALAT
4.1 Pengujian Rangkaian Power Supplay (PSA) Pengujian pada bagian rangkaian power supplay ini dapat dilakukan dengan mengukur tegangan keluaran dari rangkaian ini dengan menggunakan volt meter digital. Dari hasil pengujian diperoleh tegangan keluaran pertama sebesar + 5,1 volt. Tegangan ini dipergunakan untuk mensupplay tegangan ke seluruh rangkaian. Mikrokontroler AT89S51 dapat bekerja pada tegangan 4,0 volt sampai dengan 5,5 volt, sehingga tegangan 5,1 volt ini cukup untuk mensupplay tegangan ke mikrokontroler AT89S51. Dengan demikian rangkaian ini sudah dapat bekerja dengan baik. Sedangkan tegangan keluaran kedua adalah sebesar +12,3 volt.
4.2 Pengujian Rangkaian Mikrokontroler AT89S51 Untuk mengetahui apakah rangkaian mikrokontroler AT89S51 telah bekerja dengan baik, maka dilakukan pengujian. Pengujian bagian ini dilakukan dengan memberikan program sederhana pada mikrokontroler AT89S51. Programnya adalah sebagai berikut: Loop: Setb P3.7 Acall tunda Clr P3.7 Acall tunda Sjmp Loop Tunda: Mov r7,#255 Tnd: Mov r6,#255 Djnz r6,$
47
Djnz r7,tnd Ret
Program di atas bertujuan untuk menghidupkan LED yang terhubung ke P3.7 selama ± 0,13 detik kemudian mematikannya selama ± 0,13 detik secara terus menerus. Perintah Setb P3.7 akan menjadikan P3.7 berlogika high yang menyebabkan transistor aktif, sehingga LED menyala. Acall tunda akan menyebabkan LED ini hidup selama beberapa saat. Perintah Clr P3.7 akan menjadikan P3.7 berlogika low yang menyebabkan transistor tidak aktif sehingga LED akan mati. Perintah Acall tunda akan menyebabkan LED ini mati selama beberapa saat. Perintah Sjmp Loop akan menjadikan program tersebut berulang, sehingga akan tampak LED tersebut tampak berkedip. Lamanya waktu tunda dapat dihitung dengan perhitungan sebagai berikut : Kristal yang digunakan adalah kristal 12 MHz, sehingga 1 siklus mesin membutuhkan waktu =
12 = 1 mikrosekon. 12 MHz
Tabel 4.1 Waktu tunda Mikrokontroler AT89S51 mengeksekusi program Mnemonic
Siklus
Waktu Eksekusi
MOV Rn,#data
2
2 x 1 μd = 2 μs
DJNZ
2
2 x 1 μd = 2 μs
RET
1
1 x 1 μd = 1 μs
48
Tunda: mov r7,#255 Tnd: mov r6,#255 djnz r6,$
255 x 2 = 510x 255
= 130.054
djnz r7,tnd ret
Jadi waktu yang dibutuhkan untuk mengerjakan program di atas adalah 130.057 μdetik atau 0,130057 detik dan dapat dibulatkan menjadi 0,13 detik. Jika program tersebut diisikan ke mikrokontroler AT89S51, kemudian mikrokontroler dapat berjalan sesuai dengan program yang diisikan, maka rangkaian minimum mikrokontroler AT89S51 telah bekerja dengan baik.
4.3
Pengujian Rangkaian Display Seven Segment Pengujian pada rangkaian ini dapat dilakukan dengan menghubungkan rangkaian ini
dengan rangkaian mikrokontroler, kemudian memberikan data tertentu pada port serial dari mikrokontroler. Seven segmen yang digunakan adalah common anoda, dimana segmen akan menyala jika diberi logika 0 dan sebaliknya segmen akan mati jika diberi logika 1.
49
Gambar 4.1 Pengujian Rangkaian Display Seven Segment
Dari hasil pengujian diperoleh data yang harus dikirimkan ke port serial untuk menampilkan angka desimal adalah sebagai berikut:
50
Tabel 4.2 Data Hasil Pengujian Rangkaian Display Seven Segment
Angka
Data yang dikirim
1
0ECH
2
18H
3
88H
4
0C4H
5
82H
6
02H
7
0E8H
8
0h
9
80H
0
20H
Program yang diisikan pada mikrokontroler untuk menampilkan nilai-nilai tersebut adalah sebagai berikut: bil0
equ
20h
bil1
equ
0ech
bil2
equ
18h
bil3
equ
88h
bil4
equ
0c4h
bil5
equ
82h
bil6
equ
02h
bil7
equ
0e8h
bil8
equ
0h
bil9
equ
80h
Loop: mov sbuf,#bil0 Jnb ti,$
51
Clr ti sjmp loop
Program di atas akan menampilkan angka 0 pada semua seven segmen. Sedangkan untuk menampilkan 3 digit angka yang berbeda pada seven segmen adalah dengan mengirimkan ke 3 data angka yang akan ditampilkan pada seven segmen. Programnya adalah sebagai berikut : Loop: mov sbuf,#bil1 Jnb ti,$ Clr ti mov sbuf,#bil2 Jnb ti,$ Clr ti mov sbuf,#bil3 Jnb ti,$ Clr ti sjmp loop
Program di atas akan menampilkan angka 1 pada seven segmen ketiga, angka 2 pada seven segmen kedua dan angka 3 pada seven segmen pertama.
4.4 Pengujian Rangkaian Pengirim Data Melalui Infra Merah Untuk pengiriman data agar data dapat dikirimkan dari jarak yang jauh, maka LED infra merah harus dipancarkan dengan frekuensi 38 KHz karena frekuensi ini bebas dari gangguan frekuensi infra merah alam. Jika LED infra merah dipancarkan dengan frekuensi selain 38 KHz, maka pancarannya akan terganggu oleh frekuensi-frekuensi infra merah dari alam, seperti frekuensi infra merah yang dipancarkan oleh matahari, tumbuhan, bahkan badan manusia. Dengan menggunakan frekuensi 38 KHz, maka pancaran LED infra merah yang
52
dihasilkan oleh rangkaian tidak terganggu oleh pancaran infra merah alam, sehingga jarak pengiriman data semakin jauh. Untuk memancarkan frekuensi 38 KHz dari LED infra merah, langkah yang harus dilakukan adalah dengan mengedipkannya (menghidupkan dan mematikannya) dengan frekuensi tersebut, yaitu dengan memberikan logika high dan low pada P3.7 dengan selang waktu (perioda) :
T=
1 1 1 s 26,3µ s = = = 0, 0000263= f 38 KHz 38 x103 Hz
Mikrokontroler AT89S51 memerlukan 12 Clock setiap satu siklus mesin. Dengan demikian, jika digunakan kristal 12 MHz, maka waktu yang diperlukan untuk satu siklus mesin adalah :
12 Clock = 1 x10− 6 sekon = 1µ s 12 MHz
f=
1 1 1 1x106 = = = = 38461Hz= 38, 461KHz T 26 µ s 26 x10−6 s 26
Ketika penerima infra merah menerima pancaran infra merah dengan frekuensi 38 KHz dari rangkaian pemancar, maka output dari penerima akan berlogika high (1), jika pancaran infra merah ini dihentikan, maka penerima akan mendapatkan logika low (0) sesaat (± 1200 μs ) kemudian berubah menjadi high (1) kembali walaupun tidak ada pancaran infra merah dengan frekuensi 38 KHz. Ini sudah merupakan karakteristik dari penerima infra merah yang digunakan (TSOP 1738). Pada alat ini, logika high setelah logika low sesaat, itulah yang dijadikan sebagai data, sehingga dengan mengatur lebar pulsa high (1) tersebut dengan suatu nilai tertentu dan menjadikan nilai tersebut sebagai datanya, maka pengiriman data dapat dilakukan.
53
Pada alat ini, data yang dikirimkan sebanyak 3 data, yaitu data untuk nilai ratusan, nilai puluhan dan nilai satuan. Setiap pengiriman masing-masing data dari ketiga data tersebut, didahului dengan pengiriman sinyal low, jadi ada 3 sinyal low dan ada 3 data. Akan terjadi masalah jika pengiriman data dilakukan seperti ini, yaitu data yang diterima urutannya tidak sesuai dengan data yang dikirimkan. Misalnya 3 data yang dikirimkan adalah 567, kemungkinan data yang diterima adalah 675 dan 756. Sehingga hanya 1/3 kemungkinannya data yang dikirimkan benar. Kesalahan pengambilan data oleh penerima disebabkan karena adanya penghalang atau karena kesalahan pengambilan data ketika alat pertama kali dihidupkan. Seharusnya penerima mengambil sinyal low dari data yang pertama, kemudian mengambil data pertama, setelah itu mengambil sinyal low dari data kedua, kemudian mengambil data kedua, dan demikian seterusnya, sehingga data tersebut sesuai dengan urutannya. Namun jika ada penghalang sesaat atau ketika pertama kali dihidupkan terjadi kesalahan pengambilan sinyal low, maka pengambilan data seterusnya akan salah. Misalnya jika ada penghalang sesaat, sehingga sinyal low yang diterima adalah sinyal low yang kedua, maka data kedua akan dianggap sebagai data pertama, dan data ketiga akan dianggap sebagai data kedua, demikian seterusnya, sehingga urutan data menjadi salah. Untuk menghindari kesalahan dalam pengambilan data, maka pada alat ini ditambahkan satu data yang berfungsi sebagai startbit atau data awal. Data awal ini mempunyai nilai tertentu, jadi ketika penerima mendapatkan sinyal low, penerima akan mengambil 1 data setelah sinyal low tersebut, dan membandingkannya apakah sesuai dengan data awal atau tidak. Jika tidak sama, maka penerima akan mengambil data berikutnya , kemudian membandingkan lagi sesuai atau tidak dengan data awal. Langkah ini dilakukan terus sampai didapat data awal. Ketika penerima mendapatkan data yang sesuai dengan data
54
awal, maka penerima akan mengambil data pertama setelah data awal sebagai data pertama, data kedua setelah data awal sebagai data kedua, dan seterusnya hingga data ketiga. Dengan demikian tidak akan terjadi kesalahan urutan data, walaupun ada penghalang sesaat.
4.5 Pengujian Rangkaian Penerima Infra Merah IC yang digunakan sebagai penerima infra merah adalah IC TSOP 1738. IC ini sering digunakan sebagai penerima/receiver remote control dari TV atau VCD. IC ini mempunyai karakteristik yaitu akan mengeluarkan logika high (1) atau tegangan ± 4,5 volt pada outputnya jika IC ini mendapatkan pancaran sinar infra merah dengan frekuensi antara 38 – 40 KHz, dan IC ini akan megeluarkan sinyal low (0) atau tegangan ± 0,109 volt jika pancaran sinar infra merah dengan frekuensi antara 38 – 40 KHz berhenti, namun logika low tersebut hanya sesaat yaitu sekitar 1200 μs, setelah itu outputnya akan kembali menjadi high. Sifat inilah yang dimanfaatkan sebagai pengiriman data. Output dari IC ini dihubungkan ke P3.7 pada mikrokontroler, sehingga setiap kali IC ini mengeluarkan logika low atau high pada outputnya, maka mikrokontroler dapat langsung mendeteksinya. Programnya sebagai berikut :
Utama: mov 60h,#0h jb P3.7,$ nop jnb P3.7,$ nilai: inc 60h acall hitung jb P3.7,nilai mov a,60h
55
mov b,#10 div ab dec a cjne a,#10,Utama
Awalnya mikrokontroler akan memasukkan nilai 0 pada alamat 60h, kemudian menunggu sinyal low dari P3.7 yang terhubung ke output dari IC TSOP 1738. Jika ada sinyal low, itu berarti ada data yang akan dikirim oleh pemancar, kemudian mikrokontroler akan mengabaikan sinyal low tersebut sampai datang sinyal high, sinyal high inilah yang dihitung oleh mikrokontroler sebagai data yang masuk. Data yang masuk akan dibagikan dengan nilai 10. Hal ini dilakukan karena lebar data pengirim 10 kali lebih besar daripada lebar data penerima, sehingga harus dibagi dengan 10. Kemudian hasilnya akan dikurangi dengan 1, hal ini terjadi karena pada saat pengiriman, setiap data telah ditambah dengan nilai satu. Selanjutnya lebar data akan dibandingkan, apakah sama dengan 10 atau tidak, jika sama dengan 10 maka data ini merupakan data startbit, dengan demikian 3 data setelah ini adalah merupakan data temperatur, dan akan diambil untuk ditampilkan nilainya. Namun jika data tersebut tidak sama dengan 10, maka data ini bukan merupakan data startbit, program akan kembali ke awal sampai mendapatkan startbit. Setelah mendapatkan data startbit, maka mikrokontroler akan mengambil 3 data setelah data startbit tersebut, yang merupakan dara dari nilai temperatur yang dikirimkan oleh pemancar. Programnya sebagai berikut : mov 61h,#0h jb P3.7,$ nop jnb P3.7,$ nilai1: inc 61h
56
acall hitung jb P3.7,nilai1 mov 62h,#0h jb P3.7,$ nop jnb P3.7,$ nilai2: inc 62h acall hitung jb P3.7,nilai2 mov 63h,#0h jb P3.7,$ nop jnb P3.7,$ nilai3: inc 63h acall hitung jb P3.7,nilai3
Pada program di atas data nilai satuan akan disimpan di alamat 61h, data untuk nilai puluhan akan disimpan pada alamat 62h, sedangkan data untuk nilai ratusan akan disimpan pada alamat 63h . Kemudian data ini masing-masing akan dibagi dengan nilai 10 dan dikurangi dengan 1 seperti data pada starbit, kemudian ditampilkan pada display.
4.6 Pengujian Rangkaian ADC Pengujian pada bagian rangkaian ADC ini dapat dilakukan dengan menghubungkan rangkaian ADC ini dengan rangkaian mikrokontroler. Selanjutnya rangkaian mikrokontroler dihubungkan dengan rangkaian display seven segmen. Mikrokontroler diisi dengan program
57
untuk
membaca nilai yang ada pada rangkaian ADC, kemudian hasil pembacaannya
ditampilkan pada display seven segmen. Programnya adalah sebagai berikut : mov a,p2 mov b,#100 div ab mov 70h,a mov a,b mov b,#10 div ab mov 71h,a mov 72h,b
Dengan program di atas, maka akan tampil nilai temperatur yang dideteksi oleh sensor temperatur (LM 35). Dengan demikian maka rangkaian ini telah berfungsi dengan baik. Dari hasil pengujian didapatkan data sebagai berikut:
Tabel 4.3 Data Hasil Pengujian Rangkaian ADC
Suhu terukur
Output LM35
Output ADC
Tampilan Display
27 derajat
270 miliVolt
00011011
027
28 derajat
280 miliVolt
00011100
028
29 derajat
290 miliVolt
00011101
029
30 derajat
300 miliVolt
00011110
030
31 derajat
310 miliVolt
00011111
031
32 derajat
320 miliVolt
00010000
032
33 derajat
330 miliVolt
00010001
033
58
BAB V KESIMPULAN DAN SARAN
5.1 Kesimpulan Dari hasil Perancangan alat dapat diambil beberapa kesimpulan dalam penelitian ini. Kesimpulan yang dapat diambil oleh Penulis adalah sebagai berikut : 1. Perpaduan Mikrokontroler AT89S51 dengan sensor suhu LM35 sebagai alat yang sederhana yang dapat mengirim data secara wireless dari jarak jauh. 2. Penggunaan sensor suhu LM35 cukup baik dalam Perancangan alat Pengirim dan Penerima data temperatur dengan menggunakan sinar Infra merah. 3. Dalam Pengiriman data temperatur secara wireless dari jarak jauh digunakan sinar infra merah yang dilengkapi dengan Pemancar (Receiver) dan Penerima Infra merah (Transmitter). 5.2 Saran 1.
Perlunya beberapa pengembangan dan penyempurnaan sistem dari alat ini, sehingga hasilnya akan lebih baik lagi.
2.
Penambahan beberapa jenis sensor dalam perancangan alat pengirim dan penerima data temperatur ini akan membuat alat tersebut lebih kompleks dan mendekati yang sebenarnya.
3. Diharapkan penggunaan alat pengirim dan penerima data temperatur ini, akan mempermudah kita dalam mengetahui suhu ruangan yang kita tempati.
59
DAFTAR PUSTAKA
Agfianto, Belajar Mikrokontroler AT89C51/52/55 Teori dan Aplikasi, Edisi Kedua, Penerbit: Gava Media, Yogyakarta, 2004. Agfianto, Teknik Antarmuka Komputer: Konsep dan Aplikasi, Edisi Pertama, Penerbit: Graha Ilmu, Yogyakarta, 2002. Andi, Panduan Praktis Teknik Antarmuka dan Pemrograman Mikrokontroler AT89C51, Penerbit PT Elex Media Komputindo, Jakarta, 2003. Malvino, Albert paul, Prinsip-prinsip Elektronika, Jilid 1 & 2, Edisi Pertama, Penerbit: Salemba Teknika, Jakarta, 2003. Suhata, Aplikasi Mikrokontroler Sebagai Pengendali Peralatan Elektronik Via Line Telepon, Penerbit: PT Elex Media Komputindo, Jakarta, 2004.
1
Gambar Rangkaian Lengkap Perancangan alat Pengirim dan Penerima data Temperatur dengan Infra merah
LAMPIRAN Pemrograman Rangkaian Pemancar Program diawali dengan inisialisai data untuk masing-masing angka, bil0
equ
20h
Menampilkan angka 0 pada Seven segmen
bil1
equ
0ech
Menampilkan angka 1 pada Seven segmen
bil2
equ
18h
Menampilkan angka 2 pada Seven segmen
bil3
equ
88h
Menampilkan angka 3 pada Seven segmen
bil4
equ
0c4h
Menampilkan angka 4 pada Seven segmen
bil5
equ
82h
Menampilkan angka 5 pada Seven segmen
bil6
equ
02h
Menampilkan angka 6 pada Seven segmen
bil7
equ
0e8h
Menampilkan angka 7 pada Seven segmen
bil8
equ
0h
Menampilkan angka 8 pada Seven segmen
bil9
equ
80h
Menampilkan angka 9 pada Seven segmen
Clr P0.7
Mematikan kipas
clr p0.0 acall tadc
Memicu ADC agar dapat berjalan dengan baik
setb p0.0 utama: jb p0.0,$
Menunggu sinyal dari ADC
acall tunda mov a,p2
Memasukkan nilai dari ADC ke acumulator
mov 62h,a
Memasukkan nilai akumulator ke alamat 62h
mov b,#100
Memasukkan nilai 100 ke register b
div ab
Bagikan nilai a dengan b, hasilnya masukkan ke a
mov 72h,a
Masukkan nilai ya ada di akumulator ke alamat 72h
mov a,b
masukkan nilai yang ada di b ke akumulator
mov b,#10 div ab mov 71h,a
mov 70h,b mov r0,70h acall konversi mov 73h,r1
kerjakan rutin konversi ;73h nilai satuan des
mov r0,71h acall konversi mov 74h,r1
;74h nilai puluhan des
mov r0,72h acall konversi mov 75h,r1
;75h nilai ratusan des
mov r0,63h acall konversi mov 64h,r1
;63h nilai koma
acall kirim_disp acall tunda acall kirimdata mov a,62h cjne a,#30,cekcarry clr P0.7 sjmp utama
cekcarry: mov a,psw anl a,#80h cjne a,#0,ceklow clr P0.7 sjmp utama
ceklow: mov a,62h cjne a,#29,utama setb P0.7
sjmp utama
Kirimdata: inc 70h inc 71h inc 72h ulang: acall frek38khz acall frek38khz mov r0,#11 acall data acall frek38khz acall frek38khz mov r0,70h acall data acall frek38khz acall frek38khz mov r0,71h acall data acall frek38khz acall frek38khz mov r0,72h acall data acall frek38khz acall frek38khz ret
konversi: cjne r0,#0,satu mov r1,#bil0 ret satu: cjne r0,#1,dua
mov r1,#bil1 ret dua: cjne r0,#2,tiga mov r1,#bil2 ret tiga: cjne r0,#3,empat mov r1,#bil3 ret empat: cjne r0,#4,lima mov r1,#bil4 ret lima: cjne r0,#5,enam mov r1,#bil5 ret enam: cjne r0,#6,tujuh mov r1,#bil6 ret tujuh: cjne r0,#7,delapan mov r1,#bil7 ret delapan: cjne r0,#8,sembilan mov r1,#bil8 ret sembilan: cjne r0,#9,konversi mov r1,#bil9
ret
kirim_disp: mov sbuf,73h jnb ti,$ clr ti mov sbuf,74h jnb ti,$ clr ti mov sbuf,75h jnb ti,$ clr ti ret
frek38khz: mov r0,#10 loop: clr p3.7 nop nop nop nop nop nop nop nop nop nop nop nop setb p3.7 nop nop
nop nop nop nop nop nop nop nop djnz r0,loop ret data: loop1: acall pulsa djnz r0,loop1 ret
pulsa: CLR p3.7 mov r7,#2 pls: mov r6,#255 djnz r6,$ djnz r7,pls mov r7,#50 djnz r7,$ ret tunda: mov r7,#80h tnd:
mov r6,#80h djnz r6,$ djnz r7,tnd ret
Pemrograman Rangkaian Penerima
bil0
equ
20h
bil1
equ
0ech
bil2
equ
18h
bil3
equ
88h
bil4
equ
0c4h
bil5
equ
82h
bil6
equ
02h
bil7
equ
0e8h
bil8
equ
0h
bil9
equ
80h
mov p1,#0h mov p2,#0h mov P0,#0h
Utama: mov 60h,#0h jb P3.7,$ nop jnb P3.7,$ nilai: inc 60h acall hitung jb P3.7,nilai mov a,60h mov b,#10 div ab
dec a cjne a,#10,Utama mov 61h,#0h jb P3.7,$ nop jnb P3.7,$ nilai1: inc 61h acall hitung jb P3.7,nilai1 mov 62h,#0h jb P3.7,$ nop jnb P3.7,$ nilai2: inc 62h acall hitung jb P3.7,nilai2 mov 63h,#0h jb P3.7,$ nop jnb P3.7,$ nilai3: inc 63h acall hitung jb P3.7,nilai3 mov a,61h mov b,#10 div ab dec a mov 70h,a mov a,62h mov b,#10
div ab dec a mov 71h,a mov a,63h mov b,#10 div ab dec a mov 72h,a mov r0,70h cjne r0,#0,ke1 ljmp benar ke1: cjne r0,#1,ke2 ljmp benar ke2: cjne r0,#2,ke3 ljmp benar ke3: cjne r0,#3,ke4 ljmp benar ke4: cjne r0,#4,ke5 ljmp benar ke5: cjne r0,#5,ke6 ljmp benar ke6: cjne r0,#6,ke7 ljmp benar ke7: cjne r0,#7,ke8 ljmp benar ke8:
cjne r0,#8,ke9 ljmp benar ke9: cjne r0,#9,balik1 ljmp benar balik1: ljmp Utama Benar: mov r0,71h cjne r0,#0,ke11 ljmp benar1 ke11: cjne r0,#1,ke21 ljmp benar1 ke21: cjne r0,#2,ke31 ljmp benar1 ke31: cjne r0,#3,ke41 ljmp benar1 ke41: cjne r0,#4,ke51 ljmp benar1 ke51: cjne r0,#5,ke61 ljmp benar1 ke61: cjne r0,#6,ke71 ljmp benar1 ke71: cjne r0,#7,ke81 ljmp benar1 ke81:
cjne r0,#8,ke91 ljmp benar1 ke91: cjne r0,#9,balik11 ljmp benar1 balik11: ljmp Utama
benar1: mov r0,72h cjne r0,#0,ke12 ljmp benar2 ke12: cjne r0,#1,ke22 ljmp benar2 ke22: cjne r0,#2,ke32 ljmp benar2 ke32: cjne r0,#3,ke42 ljmp benar2 ke42: cjne r0,#4,ke52 ljmp benar2 ke52: cjne r0,#5,ke62 ljmp benar2 ke62: cjne r0,#6,ke72 ljmp benar2 ke72: cjne r0,#7,ke82 ljmp benar2
ke82: cjne r0,#8,ke92 ljmp benar2 ke92: cjne r0,#9,balik12 ljmp benar2 balik12: ljmp Utama
benar2: mov r0,70h acall konversi mov 74h,r1
;73h nilai satuan des
mov r0,71h acall konversi mov 75h,r1
;74h nilai puluhan des
mov r0,72h acall konversi mov 76h,r1 acall kirim_disp ljmp Utama balik: ljmp Utama
konversi: cjne r0,#0,satu mov r1,#bil0 ret satu: cjne r0,#1,dua mov r1,#bil1 ret
;75h nilai ratusan des
dua: cjne r0,#2,tiga mov r1,#bil2 ret tiga: cjne r0,#3,empat mov r1,#bil3 ret empat: cjne r0,#4,lima mov r1,#bil4 ret lima: cjne r0,#5,enam mov r1,#bil5 ret enam: cjne r0,#6,tujuh mov r1,#bil6 ret tujuh: cjne r0,#7,delapan mov r1,#bil7 ret delapan: cjne r0,#8,sembilan mov r1,#bil8 ret sembilan: cjne r0,#9,konversi mov r1,#bil9 ret
kirim_disp: mov sbuf,74h jnb ti,$ clr ti mov sbuf,75h jnb ti,$ clr ti mov sbuf,76h jnb ti,$ clr ti ret
hitung: mov r7,#50 djnz r7,$ ret