Sistem Pengiriman Data Jarak Jauh Dengan Menggunakan Infra Merah

(1)

TUGAS AKHIR

VIKAL SIHOMBING

052408026

PROGRAM STUDI FISIKA INSTRUMENTASI D-3

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2008


(2)

DAFTAR ISI

Halaman

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak iv Abstract v Daftar Isi vi Daftar Tabel viii Daftar Gambar ix BAB 1 PENDAHULUAN 1.1 Latar Belakang 1 1.2 Rumusan Masalah 2 1.3 Tujuan Penulisan 3 1.4 Batasan Masalah 3 1.5 Sistematika Penulisan 3

BAB 2 LANDASAN TEORI 2.1 Perangakat Keras 2.1.1 Bahasa Assembly MCS-51 6

2.1.2 Arsitektur Mikrokontroler AT89S51 10 2.1.3 Kontruksi AT89S51 11 2.1.4 Seven Segmen 16

2.2 Perangkat Lunak 18

2.2.1 Software 8051 Editor, Assembler, Simulator 18

2.2.2 Software Downloader 19

BAB 3 PERANCANGAN ALAT 3.1 Sistem Kerja rangkaian 21

3.2 Perancangan Alat 34

3.3 Perancangan Power Supplay (PSA) 47

3.4 Rangkaian Mikrokontroler AT89S51 48

3.5 Rangkaian Display Seven Segmen 49

3.6 Rangkaian Pengiriman Infra Merah 50

3.7 Rangkaian Penerima Infra Merah 52 BAB 4 ANALISA RANGKAIAN DAN SISTEM KERJA ALAT 4.1 Rangkaian Power Supplay 54

4.2 Rangkaian Minimum AT89S51 55

4.3 Rangkaian Display Seven Segmen 56

4.4 Rangkaian Pengirim Data Melalui Infra merah 59

4.5 Rangkaian Penerima Infra Merah 66 BAB 5 KESIMPULAN DAN SARAN


(3)

5.1 Kesimpulan 71

5.2 Saran 71


(4)

Halaman

Gambar 2.1 IC Mikrokontroler AT89S51 13 Gambar 2.2 Susunan Seven Segmen 16 Gambar 2.3 Konfigurasi Seven Segmen Tipe Common Anoda

Gambar 2.4 Konfigurasi Seven Segmen Tipe Common Katoda Gambar 2.5 8051 Editor, Assembler, Simulator (IDE)

Gambar 2.6 ISP-Flash Programmer 3.a Gambar 3.1 Diagram Blok Rangkaian

Gambar 3.2 Rangkaian Power Supplay (PSA) Gambar 3.3 Rangkaian Mikrokontroler AT89S51 Gambar 3.4 Rangkaian Display Seven Segmen

Gambar 3.5 Rangkaian Pengiriman Data Melalui Infra Merah Gambar 3.6 Rangkaian Penerima Infra Merah

Gambar 4.1 Rangkaian Power Supplay (PSA) Gambar 4.2 Rangkaian Minimum AT89S51 Gambar 4.3 Rangkaian Display Seven Segmen

Gambar 4.4 Rangkaian Pengirim Data Melalui Infra Merah Gambar 4.5 Pulsa Digital

Gambar 4.6 Rangkaian Penerima Infra Merah

17 18 19 20 34 47 48 50 51 52 54 55 57 60 63 67


(5)

Halaman

Tabel 2.1 Fungsi masing-masing Pin Pada Port 3 Mikrokontroler 15 Tabel 4.4 Lama Logika Low pada P3.7 62


(6)

BAB 1

PENDAHULUAN

1.1. Latar Belakang

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 otomasis 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 akanditerima oleh receiver pada jarak tertentu juga


(7)

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

I.2. Rumusan Masalah

Berdasarkan uraian yang terdapat dalam latar belakang di atas, maka dalam tugas akhir ini akan dibuat sebuah alat yang dapat mengirimkan data dari jarak jauh dengan menggunakan infra merah

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 sistem, 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


(8)

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.

I.4 Batasan Masalah

Mengacu pada hal diatas, saya membuat alat yang dapat mengirimkan data scara 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 dikrimkan 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


(9)

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 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.


(10)

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.


(11)

BAB 2

LANDASAN TEORI

2.1Perangkat Keras

2.1.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 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


(12)

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: ...

...

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 :

...

ACALL TUNDA ...

TUNDA:

...


(13)

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

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,


(14)

...

8. Instruksi CJNZ (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 ...

DEC R0 R0 = R0 – 1 ...

10.Instruksi INC (Increament)

Instruksi ini merupakan perintah untuk menambahkan nilai register yang dimaksud dengan 1. Contoh,


(15)

...

INC R0 R0 = R0 + 1 ...

11.Dan lain sebagainya

2.1.2 Arsitektur Mikrokontroler AT89S51

Mikrokontroler, sebagai suatu terobosan teknologi mikrokontoler 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 missal (dalam jumlah banyak) sehingga harga menjadi lebih murah (dibandingkan mikroprosesor). Sebagai kebetuhan pasar, mikrokontelor 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


(16)

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 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.


(17)

Mikrokontrol 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.

Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan

catu daya. Sesuai dangan keperluannya, dalam susunan MCS-51 memori penyimpanan progam ini dinamakan sebagai memori progam.

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 progam yang sudah baku dan diproduksi secara masal, progam 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


(18)

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).

Gambar 2.1 IC Mikrokontroler AT89S51 Deskripsi pin-pin pada mikrokontroler AT89S51 :

VCC (Pin 40) Suplai tegangan GND (Pin 20) Ground


(19)

Port 0 dapat berfungsi sebagai I/O biasa, low order multiplex address/data ataupun penerima kode byte pada saat flash progamming 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.

Pada fungsi sebagai low order multiplex address/data, por 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 mengaksememori 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 :


(20)

Tabel 2.1 Fungsi masing-masing pin pada port 3 Mikrokontroler

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)

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 progam (PROG) selama memprogam Flash.

PSEN (pin 29)

Progam store enable digunakan untuk mengakses memori progam eksternal. EA (pin 31)

Pada kondisi low, pin ini akan berfungsi sebagai EA yaitu mikrokontroler akan menjalankan progam yang ada pada memori eksternal setelah sistem direset. Jika kondisi high, pin ini akan berfungsi untuk menjalankan progam yang ada pada


(21)

memori internal. Pada saat flash progamming, pin ini akan mendapat tegangan 12 Volt.

XTAL1 (pin 19)

Input untuk clock internal. XTAL2 (pin 18)

Output dari osilator.

2.1.4 Seven Segmen

Seven segmen merupakan komponen elektronika yang banyak digunakan untuk menampilkan angka. Seven segmen ini sebenarnya merupakan LED yang disusun sedemikian rupa sehingga membentuk suatu pola tertentu, dimana jika LED – LED tersebut dinyalakan dengan kombinasi tertentu, maka akan terbentuk suatu angka tertentu.

seven segmen mempunyai 7 buah segmen ditambah 1 segmen yang berfungsi sebagai desimal point. Gambar susunan dari seven segmen ditunjukkan pada gambar berikut ini :


(22)

Segmen yang atas disebut segmen a, segmen sebelah kanan atas disebut segmen b, dan seterusnya sesuai gambar di atas. Dp merupakan singkatan dari desimal point.

Seven segmen ada 2 tipe, yaitu common anoda dan common katoda. Pada seven segmen tipe common anoda, anoda dari setiap LED dihubungkan menjadi satu kemudian dihubungkan ke sumber tegangan positip dan katoda dari masing-masing LED berfungsi sebagai input dari seven segmen, seperti ditunjukkan pada gambar berikut ini :

Gambar 2.3 konfigurasi seven segmen tipe common anoda

Sesuai dengan gambar di atas, maka untuk menyalakan salah satu segmen, maka katodanya harus diberi tegangan 0 volt atau logika low. Misalnya jika segmen a akan dinyalakan, maka katoda pada segmen a harus diberi tegangan 0 volt atau logika low, dengan demikian maka segmen a akan menyala. Demikian juga untuk segmen lainnya.

Pada seven segmen tipe common katoda, kaoda dari setiap LED dihubungkan menjadi satu kemudian dihubungkan ke ground dan anoda dari masing-masing LED


(23)

berfungsi sebagai input dari seven segmen, seperti ditunjukkan pada gambar berikut ini :

Gambar 2.4 konfigurasi seven segmen tipe common katoda

Sesuai dengan gambar di atas, maka untuk menyalakan salah satu segmen, maka anodanya harus diberi tegangan minimal 3 volt atau logika high. Misalnya jika segmen a akan dinyalakan, maka anoda pada segmen a harus diberi tegangan minimal 3 volt atau logika high, dengan demikian maka segmen a akan menyala. Demikian juga untuk segmen lainnya.

2.2 Perangkat Lunak

2.2.1 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.


(24)

Gambar 2.5 8051 Editor, Assembler, Simulator (IDE)

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 mikrokontroller.

2.2.2 Software Downloader

Untuk mengirimkan bilangan-bilangan heksadesimal ini ke mikrokontroller digunakan software ISP- Flash Programmer 3.0a yang dapat didownload dari internet. Tampilannya seperti gambar di bawah ini:


(25)

Gambar 2.6 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 mikrokontroller.


(26)

BAB III

PERANCANGAN ALAT DAN PROGRAM

3.1Sistem kerja rangkaian

Nilai diinputkan melalui keypad, nilai yang telah diinputkan akan diterima langsung oleh mikrokontroller dan ditampilkan hasilnya melalui display seven segment

Mikrokontroler pertama akan mengirimkan datanya ke mikrokontroler kedua melalui pemancar infra merah. Pemancar infra merah pada alat ini akan menggunakan sebuah LED infra merah yang akan dikedipkan dengan frekuensi 38 KHz, kemudian dimodulasi dengan data yang akan dikirimkan.

Mikrokontroler kedua akan menerima data yang dikirimkan oleh mikrokontroler pertama melalui penerima infra merah. Penerima infra merah pada alat ini akan digunakan sebuah IC TSOP 1738. Keluaran IC ini akan bernilai high (1) jika ada pancaran infra merah 38 KHz. Dan sebaliknya, keluaran IC ini akan bernilai low (0) jika tidak ada pancaran infra merah 38 KHz. Data yang diterima oleh mikrokontroler kedua akan diolah oleh mikrokontroler untuk ditampilkan nilainya pada display seven segmen.

Perancangan program

Adapun program yang diisikan kedalam mikrokontroller pada alat pengirman data jarak jauh dengan menggunakan infra merah adalah sbb:


(27)

Program pemancar : 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 73h,#bil0 Mov 70h,#0 inc 70h tbl_Satu:

acall kirimdata acall tampil mov p0,#7fh mov a,p0

cjne a,#77h,tbl_Dua mov 73h,#bil1 Mov 70h,#1


(28)

acall tampil Recek_tbl_Satu: mov a,p0

cjne a,#77h,Recek_tbl_Satu ljmp Tbl_Satu

tbl_Dua:

cjne a,#7bh,tbl_Tiga mov 73h,#bil2 Mov 70h,#2 inc 70h acall tampil Recek_tbl_Dua: mov a,p0

cjne a,#7bh,Recek_tbl_Dua ljmp Tbl_Satu

tbl_Tiga:

cjne a,#7dh,Tbl_Empat mov 73h,#bil3

Mov 70h,#3 inc 70h acall tampil Recek_tbl_Tiga: mov a,p0


(29)

cjne a,#7dh,Recek_tbl_Tiga ljmp Tbl_Satu

Tbl_Empat: mov p0,#0bfh mov a,p0

cjne a,#0b7h,Tbl_Lima mov 73h,#bil4

Mov 70h,#4 inc 70h acall tampil Recek_tbl_Empat: mov p0,#0bfh mov a,p0

cjne a,#0b7h,Recek_tbl_Empat Ljmp Tbl_Satu

Tbl_Lima:

cjne a,#0bbh,Tbl_Enam mov 73h,#bil5

Mov 70h,#5 inc 70h acall tampil Recek_tbl_Lima:


(30)

cjne a,#0bbh,Recek_tbl_Lima ljmp Tbl_Satu

Tbl_Enam:

cjne a,#0bdh,Tbl_Tujuh mov 73h,#bil6

Mov 70h,#6 inc 70h acall tampil Recek_tbl_Enam: mov a,p0

cjne a,#0bdh,Recek_tbl_Enam ljmp Tbl_Satu

Tbl_Tujuh:

mov p0,#0dfh mov a,p0

cjne a,#0d7h,Tbl_Delapan mov 73h,#bil7

Mov 70h,#7 inc 70h acall tampil Recek_tbl_Tujuh: mov p0,#0dfh mov a,p0


(31)

cjne a,#0d7h,Recek_tbl_Tujuh ljmp Tbl_Satu

Tbl_Delapan:

cjne a,#0dbh,Tbl_Sembilan mov 73h,#bil8

Mov 70h,#8 inc 70h acall tampil Recek_tbl_Delapan: mov a,p0

cjne a,#0dbh,Recek_tbl_Delapan ljmp Tbl_Satu

Tbl_Sembilan:

cjne a,#0ddh,Tbl_nol mov 73h,#bil9 Mov 70h,#9 inc 70h acall tampil Recek_tbl_Sembilan: mov a,p0

cjne a,#0ddh,Recek_tbl_Sembilan ljmp Tbl_Satu


(32)

mov p0,#0efh mov a,p0

cjne a,#0ebh,Balik_Tbl_Satu mov 73h,#bil0

Mov 70h,#0 inc 70h acall tampil Recek_tbl_Nol: mov p0,#0efh mov a,p0

cjne a,#0ebh,Recek_tbl_Nol Ljmp Tbl_Satu

Balik_Tbl_Satu: Ljmp Tbl_Satu

Kirimdata:

acall frek38khz acall frek38khz mov r0,70h acall data acall frek38khz acall frek38khz ret


(33)

tampil:

mov sbuf,73h 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


(34)

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


(35)

mov r7,#50 djnz r7,$ ret

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 74h,#bil0 acall kirim_disp Utama:

mov 61h,#0h jb p3.7,$ nop


(36)

nilai1: inc 61h acall hitung jb p3.7,nilai1 mov a,61h mov b,#10 div ab dec a mov 70h,a mov r0,70h cjne r0,#0,ke1 mov 74h,#bil0 acall kirim_disp sjmp utama ke1:

cjne r0,#1,ke2 mov 74h,#bil1 acall kirim_disp sjmp utama ke2:

cjne r0,#2,ke3 mov 74h,#bil2 acall kirim_disp sjmp utama ke3:


(37)

cjne r0,#3,ke4 mov 74h,#bil3 acall kirim_disp sjmp utama ke4:

cjne r0,#4,ke5 mov 74h,#bil4 acall kirim_disp sjmp utama ke5:

cjne r0,#5,ke6 mov 74h,#bil5 acall kirim_disp sjmp utama ke6:

cjne r0,#7,ke7 mov 74h,#bil6 acall kirim_disp ljmp utama ke7:

cjne r0,#8,ke8 mov 74h,#bil7 acall kirim_disp ljmp utama


(38)

cjne r0,#9,ke9 mov 74h,#bil8 acall kirim_disp ljmp utama ke9:

cjne r0,#10,balik1 mov 74h,#bil9 acall kirim_disp balik1:

ljmp utama

kirim_disp:

mov sbuf,74h jnb ti,$ clr ti ret

hitung:

mov r7,#50 djnz r7,$ ret


(39)

Display 7 Segmen Pemancar Infra Red M ikr okont rol er A T 89S 51 K edua Penerima Infra Red Display 7 Segmen M ikr okont rol er A T 89S 51 P er tam a keypad 3.2Perancangan Alat

Diagram Blok Rangkaian

P2 P3.0 P0.7 P3.0 P3.7

Gambar 3.1 Diagram blok rangkaian

Keypad dihubungkan ke port 0 mikrokontroler AT89S51, sehingga keluaran dari keypad akan langsung diterima oleh mikrokontroler AT89S51. Nilai yang diinputkan melalui keypad akan ditampilkan ke display seven segmen yang dihubungkan ke port 3 (P3.0 & p3.1).


(40)

Untuk mengirimkan data yang merupakan nilai dari input keypad ke mikrokontroler kedua digunakan pemancar infra merah yang dihubungkan ke port 3.7

Pada mikrokontroler kedua penerima infra merah dihubungkan ke port 3.7. Kemudian data yang diterima akan ditampilkan ke display seven segmen yang dihubungkan ke port 3.0

Adapun program yang diiskan kedalam mikrokontroller pada alat pengirman data jarak jauh dengan menggunakan infra merah adalah sbb:

Program pemancar : 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 73h,#bil0 Mov 70h,#0 inc 70h


(41)

tbl_Satu:

acall kirimdata acall tampil mov p0,#7fh mov a,p0

cjne a,#77h,tbl_Dua mov 73h,#bil1 Mov 70h,#1 inc 70h acall tampil Recek_tbl_Satu: mov a,p0

cjne a,#77h,Recek_tbl_Satu ljmp Tbl_Satu

tbl_Dua:

cjne a,#7bh,tbl_Tiga mov 73h,#bil2 Mov 70h,#2 inc 70h acall tampil Recek_tbl_Dua: mov a,p0


(42)

tbl_Tiga:

cjne a,#7dh,Tbl_Empat mov 73h,#bil3

Mov 70h,#3 inc 70h acall tampil Recek_tbl_Tiga: mov a,p0

cjne a,#7dh,Recek_tbl_Tiga ljmp Tbl_Satu

Tbl_Empat: mov p0,#0bfh mov a,p0

cjne a,#0b7h,Tbl_Lima mov 73h,#bil4

Mov 70h,#4 inc 70h acall tampil Recek_tbl_Empat: mov p0,#0bfh mov a,p0

cjne a,#0b7h,Recek_tbl_Empat Ljmp Tbl_Satu


(43)

Tbl_Lima:

cjne a,#0bbh,Tbl_Enam mov 73h,#bil5

Mov 70h,#5 inc 70h acall tampil Recek_tbl_Lima: mov a,p0

cjne a,#0bbh,Recek_tbl_Lima ljmp Tbl_Satu

Tbl_Enam:

cjne a,#0bdh,Tbl_Tujuh mov 73h,#bil6

Mov 70h,#6 inc 70h acall tampil Recek_tbl_Enam: mov a,p0

cjne a,#0bdh,Recek_tbl_Enam ljmp Tbl_Satu

Tbl_Tujuh:


(44)

cjne a,#0d7h,Tbl_Delapan mov 73h,#bil7

Mov 70h,#7 inc 70h acall tampil Recek_tbl_Tujuh: mov p0,#0dfh mov a,p0

cjne a,#0d7h,Recek_tbl_Tujuh ljmp Tbl_Satu

Tbl_Delapan:

cjne a,#0dbh,Tbl_Sembilan mov 73h,#bil8

Mov 70h,#8 inc 70h acall tampil Recek_tbl_Delapan: mov a,p0

cjne a,#0dbh,Recek_tbl_Delapan ljmp Tbl_Satu

Tbl_Sembilan:

cjne a,#0ddh,Tbl_nol mov 73h,#bil9


(45)

Mov 70h,#9 inc 70h acall tampil Recek_tbl_Sembilan: mov a,p0

cjne a,#0ddh,Recek_tbl_Sembilan ljmp Tbl_Satu

Tbl_Nol:

mov p0,#0efh mov a,p0

cjne a,#0ebh,Balik_Tbl_Satu mov 73h,#bil0

Mov 70h,#0 inc 70h acall tampil Recek_tbl_Nol: mov p0,#0efh mov a,p0

cjne a,#0ebh,Recek_tbl_Nol Ljmp Tbl_Satu

Balik_Tbl_Satu: Ljmp Tbl_Satu


(46)

Kirimdata:

acall frek38khz acall frek38khz mov r0,70h acall data acall frek38khz acall frek38khz ret

tampil:

mov sbuf,73h jnb ti,$ clr ti ret

frek38khz: mov r0,#10 loop:

clr p3.7 nop nop nop nop nop


(47)

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:


(48)

ret

pulsa:

CLR p3.7 mov r7,#2 pls:

mov r6,#255 djnz r6,$ djnz r7,pls mov r7,#50 djnz r7,$ ret

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


(49)

mov p1,#0h mov p2,#0h mov 74h,#bil0 acall kirim_disp Utama:

mov 61h,#0h jb p3.7,$ nop jnb p3.7,$ nilai1:

inc 61h acall hitung jb p3.7,nilai1 mov a,61h mov b,#10 div ab dec a mov 70h,a mov r0,70h cjne r0,#0,ke1 mov 74h,#bil0 acall kirim_disp sjmp utama ke1:


(50)

mov 74h,#bil1 acall kirim_disp sjmp utama ke2:

cjne r0,#2,ke3 mov 74h,#bil2 acall kirim_disp sjmp utama ke3:

cjne r0,#3,ke4 mov 74h,#bil3 acall kirim_disp sjmp utama ke4:

cjne r0,#4,ke5 mov 74h,#bil4 acall kirim_disp sjmp utama ke5:

cjne r0,#5,ke6 mov 74h,#bil5 acall kirim_disp sjmp utama ke6:


(51)

mov 74h,#bil6 acall kirim_disp ljmp utama ke7:

cjne r0,#8,ke8 mov 74h,#bil7 acall kirim_disp ljmp utama ke8:

cjne r0,#9,ke9 mov 74h,#bil8 acall kirim_disp ljmp utama ke9:

cjne r0,#10,balik1 mov 74h,#bil9 acall kirim_disp balik1:

ljmp utama

kirim_disp:

mov sbuf,74h jnb ti,$


(52)

Vreg

LM7805CT

IN OUT

TIP32C

100ohm

100uF

330ohm 220V 50Hz 0Deg

TS_PQ4_12

2200uF 1uF

1N5392GP 1N5392GP

12 Volt

5 Volt

ret

hitung:

mov r7,#50 djnz r7,$ ret

3.3 Perancangan 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 mensuplay tegangan ke motor stepper. Rangkaian power supplay ditunjukkan pada gambar 3.2 berikut ini :

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


(53)

5V VCC 5V VCC 10uF 2 1 30pF 30pF

XTAL 12 MHz

AT89S51 P0.3 (AD3) P0.0 (AD0) P0.1 (AD1) P0.2 (AD2) Vcc P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P0.4 (AD4) P0.5 (AD5) P0.6 (AD6) P0.7 (AD7) RST EA/VPP P3.0 (RXD) P3.1 (TXD) P3.2 (INT0) P3.3 (INT1) P3.4 (T0) ALE/PROG PSEN P2.7 (A15) P2.6 (A14) P2.5 (A13) P2.4 (A12) P2.3 (A11) P2.2 (A10) P2.1 (A9) P3.6 (WR) P3.5 (T1) P3.7 (RD) XTAL2 XTAL1

GND P2.0 (A8)

1 2 3 4 5 6 7 8 40 39 38 37 36 35 34 33 9 10 11 12 13 14 15 32 31 30 29 28 27 26 16 17 18 19 20 25 24 23 22 21

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. 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. Tegangan 12 volt DC langsung diambil dari keluaran 2 buah dioda penyearah.

3.4 Rangkaian Mikrokontroler AT89S51

Rangkaian ini berfungsi sebagai pusat kendali dari seluruh sistem yang ada. Kompoen utama dari rangkaian ini adalah IC mikrokontroler AT89S51. Pada IC inilah semua program diisikan, sehingga rangkaian dapat berjalan sesuai dengan yang dikehendaki. Rangkaian mikrokontroler ditunjukkan pada gambar berikut ini:


(54)

Mikrokontroler ini memiliki 32 port I/O, yaitu port 0, port 1, port 2 dan port 3. Pin 32 sampai 39 adalah Port 0 yang merupakan saluran/bus I/O 8 bit. Pin 1 sampai 8 adalah port 1. Pin 21 sampai 28 adalah port 2. Dan Pin 10 sampai 17 adalah port 3 Pin 40 dihubungkan ke sumber tegangan 5 volt. Dan pin 20 dihubungkan ke ground. Rangkaian mikrokontroler ini menggunakan komponen kristal 12 MHz sebagai sumber clocknya. Nilai kristal ini akan mempengaruhi kecepatan mikrokontroler dalam mengeksekusi suatu perintah tertentu.

Pada pin 9 dihubungkan dengan sebuah kapasitor 10 uF yang dihubungkan ke positip dan sebuah resistor 10 Kohm yang dihubungkan ke ground. Kedua komponen ini berfungsi agar program pada mikrokontroler dijalankan beberapa saat setelah power aktip. Lamanya waktu antara aktipnya power pada IC mikrokontroler dan aktipnya program adalah sebesar perkalian antara kapasitor dan resistor tersebut. Jika dihitung maka lama waktunya adalah :

10 10 1 det

t = =ΩR x C K =x µF m ik

Jadi 1 mili detik setelah power aktip pada IC kemudian program aktif.

3.5 Rangkaian Display Seven segmen

Untuk menampilkan angka dari setiap penekanan tombol, maka dibutuhkan sebuah display untuk menampilkannya. Pada alat ini, display yang digunakan adalah display seven segmen, yang terdiri dari 1 buah seven segmen.

Display seven segmen ini akan diaktipkan oleh IC 4094 yang merupakan IC serial to paralel (serial in paralel out). Jadi data dimasukkan ke dalam IC ini dengan mengirimkan data serial. Keluaran dari IC 4094 ini langsung dihubungkan ke seven


(55)

5V VCC

SEVEN_SEG_DISPLAY

A B C DE F G

In Cl o c k O u t

D6 D5 D4 D3 D2 D1 D0

4094 D7 2 3 10 14 13 12 11 7 6 5 4

P3.0 AT89S51 P3.1 AT89S51

segmen, sehingga data serial yang diterima oleh input IC ini akan ditampilkan nilainya pada seven segmen.

Rangkaian ini terhubung ke P3.0 dan P3.1, yang mempunyai fungsi khusus sebagai pengiriman data secara serial. Sehingga nilai yang akan tampil pada display seven segmen akan dapat dikendalikan oleh mikrokontroler AT89S51. Rangkaian display seven segmen daitunjukkan pada gambar berikut ini :

Gambar 3.4 Rangkaian Display Seven Segmen

3.6 Rangkaian Pengirim 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 :


(56)

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 mengaktipkan 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 aktip.

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-frekuensi infra merah yang dipancarkan oleh matahari, tumbuhan, bahkan badan manusia. Dengan menggunakan frekuensi 38 KHz, maka pancaran LED infra merah yang dihasilkan oleh rangkaian tidak terganggu oleh pancaran infra merah alam, sehingga jarak pengiriman data semakin jauh.

P3.7 ( AT89S51)

LED_ir

330฀ R2

4.7k


(57)

P3.7 ( AT89S51) 5V

VCC

100฀

10uF

i _1

0

i

i _1

i

3.7 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:

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 kan kembali menjadi high. Sifat inilah yang dimanfaatkan


(58)

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


(59)

Vreg

LM7805CT

IN OUT

TIP32C

100ohm

100uF

330ohm 220V 50Hz 0Deg

TS_PQ4_12

2200uF 1uF

1N5392GP 1N5392GP

12 Volt

5 Volt

BAB IV

ANALISA RANGKAIAN DAN SISTEM KERJA ALAT

4.1 Rangkaian Power Supplay (PSA)

Rangkaian PSA yang dibuat terdiri dari dua keluaran, yaitu 5 volt dan 12 volt, keluaran 5 volt digunakan untuk menghidupkan seluruh rangkaian, sedangkan keluaran 12 volt digunakan untuk menghidupkan relay. Rangkaian tampak seperti gambar di bawah ini,

Gambar 4.1 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. Transistor PNP


(60)

P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 RST P3.0/RX0 P3.1/TX0 P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD XTAL2 XTAL1 GND P2.7/A16 P2.6/A14 P2.5/A13 P2.4/A12 P2.3/A11 P2.2/A10 P2.1/A9 P2.0/A8 PSEN ALE/PROG EA/VPP P0.7/AD7 P0.6/AD6 P0.5/AD5 P0.4/AD4 P0.3/AD3 P0.2/AD2 P0.1/AD1 P0.0/AD0 VCC AT89S51 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 2 1

Xtal 12 MHz

10kohm 10uF 4.7kohm 5V VCC 33pF 33pF

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. Tegangan 12 volt DC langsung diambil dari keluaran 2 buah dioda. Tegangan ini digunakan untuk mensupplay tegangan ke kipas yang butuh tegangan 12 volt.

4.2 Rangkaian minimum AT89S51

Rangkaian minimum mikrokontroller AT89S51 ditunjukkan pada gambar 4.2 berikut ini :


(61)

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 mikrokontroller AT89S51 tidak menggunakan memori eskternal. Pin 18 dan 19 dihubungkan ke XTAL 12 MHz dan capasitor 33 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroller AT89S51 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan me-reset mikrokontroller ini. Pin 32 sampai 39 adalah Port 0 yang merupakan saluran/bus I/O 8 bit open collector dapat juga digunakan sebagai multipleks 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.

4.3 Rangkaian Display Seven Segmen

Input data dari keypad akan diolah oleh mikrokontroler AT89S51 untuk selanjutnya ditampilkan pada 1-digit seven segmen. Rangkaian display seven segmen tampak seperti gambar di bawah ini :


(62)

5V VCC

SEVEN_SEG_DISPLAY

A B C DE F G

In Cl o c k O ut

D6 D5 D4 D3 D2 D1 D0

4094 D7 2 3 10 14 13 12 11 7 6 5 4

P3.0 AT89S51 P3.1 AT89S51

Gambar 4.3 Rangkaian Display Seven Segmen

Display ini menggunakan 1 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 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:


(63)

• 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 0c4h

• Untuk menampilkan angka lima, data yang harus dikirim adalah 82h

• Untuk menampilkan angka enam, data yang harus dikirim adalah 02h

• Untuk tampilan kosong (tidak ada nilai yang tampil), data yang harus dikirim adalah 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 bil6 equ 02h bilkosong equ 0ffh

mov 60h,#bil1 mov 61h,#bil2 mov 62h,#bil3


(64)

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.

4.3 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 :


(65)

Gambar 4.4 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 mengaktipkan 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 aktip.

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-frekuensi infra merah yang dipancarkan oleh

P3.7 ( AT89S51)

LED_ir 5V VCC

330฀ R2

4.7k


(66)

maka pancaran LED infra merah yang 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) :

1 1 13 0, 0000263 26, 3 38 38 10

T s s

f KHz x Hz µ

= = = ==

Untuk mendapatkan perioda tersebut, maka program yang harus diberikan pada mikrokontroler AT89S51 adalah:

38KHz:

clr p3.7 nop

nop nop nop nop nop nop nop nop nop nop nop


(67)

nop nop nop nop 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 :

6

12

1 10 1

12 Clock

x sekon s

MHz = = µ

Jika dihitung lamanya mikrokontroler AT89S51 mengerjakan perintah di atas : Tabel 4.4 Lama logika Low Pada P3.7

Instruksi Siklus mesin Waktu (μS) CLR NOP SETB SJMP 1 1 1 2 1 1 1 2


(68)

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

Gambar 4.5 Pulsa Digital Dengan demikian frekuensi yang dihasilkan oleh P3.7 adalah :

6 6

1 1 1 1 10

38461 38, 461 26 26 10 26

x

f Hz KHz

T µs xs

= = = = = =

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.


(69)

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 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.


(70)

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

data: loop1:

acall pulsa djnz r0,loop1 ret

pulsa:

Clr P0.0 ; 1μs

Mov r7,#2 ; 1μs

pls:


(71)

mov r6,#255฀ ; 1μs

djnz r6,$฀ ; 2x255=510μs

djnz r7,pls ; 2μs =513x2=1026μs

mov r7,#50 ; 1μs

djnz r7,$฀ ; 2x50=100μs

ret฀ ; 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 data-data yang lainnya.

4.5 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:


(72)

P3.7 ( AT89S51) 5V

VCC

100฀

10uF

i _1

0

i

i _1

i

TSOP1738

Gambar 4.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 kan 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 :


(73)

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

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 mikrokontroller 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


(74)

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

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,$


(75)

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.


(76)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Sistem kerja rangkaian pengiriman data jarak jauh dengan menggunakan infra merah ini yaitu nilai yang telah diinputkan akan diterima langsung oleh mikrokontroler dan ditampilakan hasilnya melalui display seven segmen.

2. Untuk pengiriman data, agar data dapat dikirimkan dari jarak yang jauh, maka LED infra merah yang dipancarkaan dengan frekuensi 38 Khz, karena frekuensi ini bebas dari gangguan frekuensi alam.

5.2 Saran

1. Kesalahan pengambilan data oleh penerima disebabkan karena adanya penghalang atau karena kesalahan pengambilan data ketika alat pertama kali dihidupkan, seharusnya penerima mengambil sinyal low.

2. Ini penerima dibuat dalam satuan agar mendatang dapat dibuat beberapa angka penerima(puluhan,ratusan,dan ribuan).


(77)

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.


(1)

P3.7 ( AT89S51) 5V

VCC

100฀

10uF

i _1

0 i

i _1 i

TSOP1738

Gambar 4.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 kan 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 :


(2)

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

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 mikrokontroller 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


(3)

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

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,$


(4)

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.


(5)

BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan

1. Sistem kerja rangkaian pengiriman data jarak jauh dengan menggunakan infra merah ini yaitu nilai yang telah diinputkan akan diterima langsung oleh mikrokontroler dan ditampilakan hasilnya melalui display seven segmen.

2. Untuk pengiriman data, agar data dapat dikirimkan dari jarak yang jauh, maka LED infra merah yang dipancarkaan dengan frekuensi 38 Khz, karena frekuensi ini bebas dari gangguan frekuensi alam.

5.2 Saran

1. Kesalahan pengambilan data oleh penerima disebabkan karena adanya penghalang atau karena kesalahan pengambilan data ketika alat pertama kali dihidupkan, seharusnya penerima mengambil sinyal low.

2. Ini penerima dibuat dalam satuan agar mendatang dapat dibuat beberapa angka penerima(puluhan,ratusan,dan ribuan).


(6)

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.