BAB 3 PERANCANGAN ALAT
4.2 Rangkaian Minimum AT89S51
Rangkaian minimum mikrokontroller AT89S51 ditunjukkan pada gambar 4.2 berikut ini :
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 :
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:
• 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
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 :
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 infra merah yang dipancarkan oleh
P3.7 ( AT89S51) LED_ir 5V VCC 330 R2 4.7k 2SA733
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 setb p3.7
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
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 x − s = = = = = =
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 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.
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:
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:
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 :
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
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,$
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.
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).
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.