Water Level Indicator Seven Segment Sebagai Display Tingkat Ketinggian Cairan Berbasis Mikrokontroler AT89S51

(1)

KETINGGIAN CAIRAN

BERBASIS MIKROKONTROLER AT89S51

TUGAS AKHIR

BAYU BARATA

052408060

PROGRAM STUDI DIPLOMA III FISIKA INSTRUMENTASI

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

MEDAN

2008


(2)

PERNYATAAN

WATER LEVEL INDICATOR

SEVEN SEGMENT SEBAGAI DISPLAY TINGKAT KETINGGIAN CAIRAN 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, Juli 2008

BAYU BARATA 052408060


(3)

PENGHARGAAN

Puji syukur penulis panjatkan kepada ALLAH SWT Yang Maha Pemurah dan Maha penyayang, dengan limpah karunia-Nya kertas kajian ini berhasil diselesaikan dalam waktu yang telah ditetapkan.

Pada kesempatan ini penulis menyampaikan ucapan terima kasih kepada Bapak Drs.Ansharuddin.SST selaku dosen pembimbing pada penyelesaian tugas akhir ini yang telah memberikan bimbingan dan penuh kepercayaan kepada saya untuk menyempurnakan kajian ini, Ketua dan Sekretaris program studi DIII Fisika Instrumentasi Bapak Drs. Syahrul Humaidi,M.sc dan Ibu Dra. Justinon, Msi, Dekan dan Pembantu Dekan Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatra Utara, semua dosen dan pegawai pada program studi DIII Fisika Instrumentasi FMIPA USU dan rekan – rekan kuliah khususnya Edriwansyah Nasution, Denni,Muhammad Abduh humaidi Hrp, Tuti Mahlesi, Demi Syaputri, Sulvina Maulin, Ellis Naria, piliyanti dan teman – teman yang lain yang membantu dan memberikan semangat kepada penulis untuk menyelesaikan tugas akhir ini.

Ucapan terima kasih yang tidak terlupakan kepada kedua orang tua dan keluarga penulis yang tercinta yang selama ini memberikan bantuan materil dan dukungan moril serta telah mendoakan penulis dan orang – orang yang tidak bisa penulis sebutkan satu persatu. Semoga ALLAH SWT akan membalasnya.

Penulis menyadari dalam laporan ini masih terdapat kekurangan baik secara materi maupun penyajianya. Untuk itu penulis mengharapkan saran dan kritik yang bersifat membangun untuk kesempurnaan tugas akhir ini. Akhir kata penulis ucapkan banyak terima kasih kepada semua pihak yang telah memberi bantuan. Semoga laporan ini bermanfaat bagi pembaca.


(4)

Lembar Pengesahan Kata pengantar Daftar Isi Daftar Gambar

BAB 1 PENDAHULUAN...1

1.1. Latar Belakang...1

1.2. Rumusan Masalah...2

1.3. Tujuan Proyek...2

1.4.Sistematika Penulisan...2

BAB 2 TINJAUAN TEORITIS...4

2.1. Perangkat Keras (Hardware)...4

2.1.1. Mikrokontroler AT89S52...4

2.1.2. Kontruksi AT89S51………...6

2.1.3. Pin-Pin Pada Mikrokontroler……….8

2.1.4. Relay………..10

2.2. Perangkat Lunak (software)……….13

2.2.1. Bahasa Assembly MCS-51………13

2.2.2. Software 8051 Editor, Assembler, Simulator (IDE)..16


(5)

3.1. Diagram Blok ……….18

3.2. Flowchart……….19

3.3. Rangkaian Power Supply (PSA)………..21

3.4. Rangkaian Mikrokontroler AT89S52………..22

3.5. Rrangkaian Pengendali Pompa Air...23

3.6. Perancangan Rangkaian Keypad...24

3.7. Perancangan Rangkaian Sensor dan Pengolah Sinyal....25

BAB 4 PENGUJI RANGKAIAN DAN SENSOR………..27

4.1. Pengujian Rangkaian Power Supplay (PSA)...27

4.2. Pengujian Rangkaian Mikrokontroller AT89S52...27

4.3. Pengujian Rangkaian relay...29

4.4. Pengujian rangkaian pengendali pompa air...31

BAB5 KESIMPULAN DAN SARAN...34

5.1. Kesimpulan...34

5.2. Saran...35


(6)

DAFTAR GAMBAR

1. Gambar 2.1.3 IC Mikrokontroler AT89S52...9

2. Gambar 2.1.4. Simbol Relay dan Rangkaian Driver...13

3. Gambar 2.2.2. 8051 Editor, Assembler, Simulator (IDE)...18

4. Gambar 2.2.3. ISP- Flash Programmer 3.a...19

5.Gambar 3.1.Diagram Blok...20

6. Gambar 3.2. Flowchart...21

7. Gambar 3.3. Rangkaian Power Supplay ( PSA)...23

8 Gambar.3.5. Rangkaian Alarm...26

9. Gambar 3.6. Rrangkaian Seven segment...27

10. Gambar 3.7. Rangkaian Pengendali Pompa Air...28

11. Gambar 3.8. Rangkaian Tombol...30

12. Gambar 3.9. Perancangan Rangkaian Sensor dan Pengolah sinyal...31

13.Gambar 4.3. Rangkaian Relay... 47

14. Gambar 4.4.Rangkaian pengendali pompa air... 49

15. Gambar 4.6. Pengujian rangkaian alarm ...51

16. Gambar 4.8 Pengujian rangkaian display seven segment ...55


(7)

Perkembangan teknologi elektronika kiniu semakin cepat, yang sangat membantu manusia dalam menyelasaikan pekerjaaan. Sehingga persaingan dalam bidang industri elektronika semakin ketat pula.

Salah satu diantaranya adalah banyak problem manusia adalah mengontrol dan pengisian tangki air yang masih banyak yang menggunakan system pengisian dan pengontrolan tangki air secara manual menghabiskan waktu yang relative lama dan juga merepotkan. Karena para oprator harus melihat atau memanjat keatas tangki untuk memastikan ketinggian air atau cairan yang di inginkan. Melalui system elektronika proses pengisisan dan pengontrolan tangki air secara manual dapat digantikan menjadi system otomatis sehingga lebih efektif. Maka penulis mencoba merancang dan membuat alat pengisian dan pengotrolan tangki air berbasis mikrokontroller

Perancang dan pembuatan alat ini tentunya lebih praktis dan menghemat waktu karena proses pengisian dan pengambilan air dilakukan secara otomatis dimana pompa digunakan sebagai pengendali system dan mirokontroller AT89S51 sebagai pengontrol utamanya


(8)

Perkembangan teknologi elektronika kiniu semakin cepat, yang sangat membantu manusia dalam menyelasaikan pekerjaaan. Sehingga persaingan dalam bidang industri elektronika semakin ketat pula.

Salah satu diantaranya adalah banyak problem manusia adalah mengontrol dan pengisian tangki air yang masih banyak yang menggunakan system pengisian dan pengontrolan tangki air secara manual menghabiskan waktu yang relative lama dan juga merepotkan. Karena para oprator harus melihat atau memanjat keatas tangki untuk memastikan ketinggian air atau cairan yang di inginkan. Melalui system elektronika proses pengisisan dan pengontrolan tangki air secara manual dapat digantikan menjadi system otomatis sehingga lebih efektif. Maka penulis mencoba merancang dan membuat alat pengisian dan pengotrolan tangki air berbasis mikrokontroller

Perancang dan pembuatan alat ini tentunya lebih praktis dan menghemat waktu karena proses pengisian dan pengambilan air dilakukan secara otomatis dimana pompa digunakan sebagai pengendali system dan mirokontroller AT89S51 sebagai pengontrol utamanya


(9)

BAB 1

PENDAHULUAN 1.1. Latar Belakang

Sistem pengendalian merupakan hal yang penting di bidang teknologi dan industri. Pada bidang industri misalnya, mesin-mesin yang terdapat pada pabrik tersebut tentunya sangat membutuhkan tangki minyak untuk cadangan. Begitu pula halnya dengan tangki- tangki persediaan air minum pada PDAM. Selama ini untuk mengontrol tingkat kekosongan dan tingkat kepenuhan saat pengisian masih dilakukan secara manual, hal ini sudalah tentu sangat tidak efisien dan membutuhkan banyak waktu. Untuk itu perlu dibuat suatu alat yang dapat melakukan pengisian , pengosongan dan pengontrol tingkat ketinggian cairan yang terdapat pada tangki-tangki tersebut secara otomatis. Water level indicator elektronik adalah jawabannya. Alat ini menggunakan mikrokontroller AT89S51 sebagai otak utama dari sistem dan memanfaatkan sensor-sensor untuk mengetahui tingkat ketinggian air yang berada di dalam tangki. Apabila tangki dalam keadaan kosong maka led indicator untuk kekosongan akan hidup dan alarm akan berbunyi sebagai tanda bahwa tangki dalam keadaan kosong. Begitu juga halnya apabila tangki dalam keadaan penuh. Selain itu alat ini juga dapat menentukan tingkat ketinggian air sesuai dengan keinginan operator.


(10)

1.2. Batasan Masalah

Berdasarkan uraian yang terdapat dalam latar belakang di atas, maka dalam tugas akhir ini akan dibuat sebuah pengendali ketinggian air pada tangki berbasis mikrokontroller AT89S51

1.3. Maksud dan Tujuan

Tujuan dari penulisan tugas akhir ini adalah :

1.3.1 Merupakan salah satu persyaratan untuk menyelesaikan Studi Program Diploma III di Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Sumatera Utara.

1.3.2 Memanfaatkan sensor untuk mengetahui tingkat ketingian air dengan menggunakan mikrokontroler AT89S51 sebagai alat ketinggian air dan

ketinggian air yang diiskan kedalam tangki dtentukan berdasarkan input tombol dan seven segment sebagai tampilan ketinggian air

1.4. Metode Pengumpulan Data

Metode pengumpulan data yang dilakukan oleh penulis adalah :

1.4.1 Melakukan studi perpustakaan mengenai teori-teori yang berkaitan dengan judul tugas akhir ini.

1.4.2 Melakukan konsultasi dengan dosen pembimbing serta dosen-dosen staf pengajar yang berkaitan dengan realisasi dibidang masing-masing.


(11)

1.5. Sistematika Penulisan

Untuk mempermudah pembahasan dan pemahaman maka penulis membuat sistematika pembahasan bagaimana sebenarnya prinsip kerja dari water level indikator, maka penulis menulis laporan ini sebagai berikut:

BAB I. PENDAHULUAN

Dalam bab ini berisikan mengenai latar belakang, rumusan masalah, 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 komponen-komponen pendukung yang digunakan dalam alat.

BAB III. PERANCANGAN ALAT DAN PROGRAM

Pada bagian ini akan dibahas perancangan dari alat, yaitu diagram blok dari rangkaian, skematik dari masing-masing rangkaian dan cara kerja dari masing-masing rangkaian.


(12)

BAB IV. PENGUJIAN RANGKAIAN

Pada bab ini akan dibahas hasil analisa dari masing-masing rangkaian dan cara kerja dari seluruh rangkaian setelah rangkaian disatukan.

BAB V. PENUTUP

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.


(13)

BAB 2

TINJAUAN TEORITIS

2.1.Hardware

2.1.1 Mikrokontroler AT89S51

Mikrokontroller, sebagai suatu terobosan teknologi mikrokontroler dan microkomputer, hadir memenuhi kebutuhan pasar (market need) dan teknologi baru. Sebagai teknologi baru, yaitu teknologi semi konduktor 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 microprocessor). Sebagai kebutuhan pasar, mikrokontroler hadir untuk memenuhi selera industri dan para konsumen akan kebutuhan dan keinginan alat-alat bantu dan mainan yang lebih canggih serta dalam bidang pendidikan.

Tidak seperti sistem komputer, yang mampu menangani berbagai macam program aplikasi (misalnya pengolah kata, pengolah angka, dan lain sebagainya), Microcontroller hanya bisa digunakan untuk satu aplikasi tertentu saja. Perbedaan lainnya terletak pada perbandingan RAM dan ROM-nya. Pada sistem komputer perbandingan RAM dan ROM-nya besar, artinya program-program pengguna disimpan dalam ruang RAM yang relatif besar, sedangkan rutin-rutin antar muka perangkat keras disimpan dalam ruang


(14)

ROM yang kecil. Sedangkan Pada mikrokontroler, perbandingan ROM dan RAM-nya yang besar artinya program control disimpan dalam ROM yang ukurannya relatif lebih besar, sedangkan RAM digunakan sebagai tempat penyimpanan sederhana sementara, termasuk register-register yang digunakan pada Microcontroller yang bersangkutan.

Microcontroller AT89S51 merupakan salah satu keluarga dari MCS-51 keluaran Atmel. Jenis Microcontroller ini pada prinsipnya dapat digunakan untuk mengolah data per bit ataupun data 8 bit secara bersamaan. Pada prinsipnya program pada Microcontroller dijalankan bertahap, jadi pada program itu sendiri terdapat beberapa set instruksi dan tiap instruksi itu dijalankan secara bertahap atau berurutan.

Beberapa fasilitas yang dimiliki oleh microcontroller AT89S51 adalah sebagai berikut :  Sebuah Central Processing Unit 8 bit

 Osilatc : internal dan rangkaian pewaktu  RAM internal 128 byte

 Flash memori 4 Kbyte

 Lima buah jalur interupsi (dua buah interupsi eksternal dan tiga buah interupsi internal)

 Empat buah programable port I/O yang masing-masing terdiri dari delapan buah jalur I/O

 Sebuah port serial dengan kontrol serial full duplex UART  Kemampuan untuk melaksanakan operasi aritmatika dan oper

 Kecepatan dalam melaksanakan instruksi per siklus 1 mikrodetik pada frekuensi 12 MHz.


(15)

1.1.2. Kontruksi AT89S51

Microcontroller AT89S51 hanya memerlukan tambahan 3 kapasitor, 1 resistor dan 1 kristal serta catu daya 5 volt. Kapasitor 10 micro-fard dan resistor 10 kilo Ohm dipakai untuk membentuk rangkaian riset. Dengan adanya rangkaian riset ini AT89S51 otomatis diriset begitu rangkaian menerima catu daya. Kristal dengan frekuensi maksimum 24MHz dan kapasitor 30 mikro-farad dipakai untuk melengkapi rangkaian oscilator pembentuk clock yang menentukan kecepatan kerja Microcontroller.

Memori merupakan bagian yang sangat penting pada Microcontroller. Microkontroller memiliki dua macam memori yang sifatnya berbeda.

Read Only Memory (ROM) yang isinya tidak berubah meskipun IC kehilangan catu daya. Sesuai dengan keperluannya, dalam susunan MCS-51 memori penyimpanan program ini dinamakan sebagai memori program.

Random Access Memory (RAM) isinya akan sirna begitu IC kehilangan catu daya, dipakai untuk menyimpan data pada saat program bekerja. RAM yang dipakai untuk menyimpan data ini disebut sebagai memori data.

Ada berbagai jenis ROM. Untuk Microcontroller dengan program yang sudah baku dan diproduksi secara massal, program diisikan kedalam ROM pada saat IC Microcontroller dicetak dipabrik IC. Untuk keperluan tertentu Microcontroller


(16)

menggunakan ROM yang dapat diisi ulang atau Programble-Eraseable ROM yang disingkat menjadi PROM (PEROM). Dulu banyak UV-EPROM (Ultra Violet Eraseable Programble 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 Microcontroller diisikan ke memori itu lewat bantuan alat yang dinamakan sebagai AT89C4051 flash PEROM Programmer.Memori data yang disediakan dalam chip AT*(S51 sebesar 128 kilo byte meskipun hanya kecil saja tapi untuk banyak keperluan memori kapasitas itu sudah cukup.

AT89S51 dilengkapi UART (Universal Asyncronous Receiver/Transmiter) yang biasa dipakai untuk komunikasi data secara seri. Jalur untuk komunikasi data seri (RXD dan TXD) diletakkan berhimpitan dengan P1.0 dan P1.1. pada kaki nomor 2 dan 3, sehingga kalau sarana input/output bekerja menurut fungsi waktu. Clock penggerak untaian pencacah ini bisa berasal dari oscillator kristal atau clock yang diumpan dari luar lewat T0 dan T1/T0 dan T1 berhimpitan dengan P3.4 dan P3.5, sehingga P3.4 dan P3.5 tidak bisa dipakai untuk jalur input/output paralel kalau T0 dan T1 dipakai.

AT89S51 mempunyai enam sumber pembangkit interupsi, dua diantaranya adalah sinyal interupsi yang diumpankan ke kaki INT0 dan INT1. Kedua kaki ini berhimpitan dangan P3.2 dan P3.3 sehingga tidak bisa dipakai sebagai jalur input/output paralel kalau INT0 dan INT1 dipakai untuk menerima sinyal interupsi.Port1 dan 2, UART, Timer 0,


(17)

Timer 1 dan sarana lainnya merupakan yang secara fisik merupakan RAM khusus, yang ditempatkan di Special Function Register (SFR).

2.1.3. Pin-Pin pada Microcontroller AT89S51

Deskripsi pin-pin pada Microcontroller AT89S51 :

Gambar 2.1.3. IC 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 progamming Pada fungsi


(18)

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, port ini akan mempunyai internal 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 dua arah dengan internal pullup. Port 3 juga mempunyai fungsi pin masing-masing, yaitu sebagai berikut :

Tabel2.1.3. Pin-Pin pada Microcontroller AT89S51

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)


(19)

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


(20)

2.1.4. Relay

Relay adalah suatu rangkaian switch magnetik yang bekerja bila mendapat catu dan suatu rangkaian trigger. Relay memiliki tegangan dan arus nominal yang harus dipenuhi output rangkaian pendriver atau pengemudinya. Arus yang digunakan pada rangkaian adalah arus DC.

Konstruksi dalam suatu relay terdiri dari lilitan kawat (coil) yang dililitkan pada inti besi lunak. Jika lilitan kawat mendapatkan aliran arus, inti besi lunak kontak menghasilkan medan magnet dan menarik switch kontak. Switch kontak mengalami gaya listrik magnet sehingga berpidah posisi ke kutub lain atau terlepas dari kutub asalnya. Keadaan ini akan bertahan selama arus mengalir pada kumparan relay. Dan relay akan kembali keposisi semula yaitu normaly ON atau Normaly OFF, bila tidak ada lagi arus yang mengalir padanya, posisi normal relay tergantung pada jenis relay yang digunakan. Dan pemakaian jenis relay tergantung pada kadaan yang diinginkan dalam suatu rangkaian.

Menurut kerjanya relay dapat dibedakan menjadi :

a. Normaly Open (NO), saklar akan tertutup bila dialiri arus b. Normaly Close (OFF), saklar akan tertutup bila dialiri arus

c. Change Over (CO), relay ini mempunyai saklar tunggal yang nomally tertutup yang lama, bila kumparan 1 dialiri arus maka saklar akan terhubung ke terminal A, sebaliknya bila kumparan 2 dialiri arus maka saklar akan terhubung ke terminal B.


(21)

Analogi rangkaian relay yang digunakan pada tugas akhir ini adalah saat basis transistor ini dialiri arus, maka transistor dalam keadaan tertutup yang dapat menghubungkan arus dari kolektor ke emiter yang mengakibatkan relay terhubung. Sedangkan fungsi dioda disini adalah untuk melindungi transistor dari tegangan induksi berlebih, dimana tegangan ini dapat merusak transistor.Jika transistor pada basis tidak ada arus maju, transistor terbuka sehingga arus tidak mengalir dari kolektor ke emiter, relay tidak bekerja karena tidak ada arus yang mengalir pada gulungan kawat.

Bentuk relay yang digunakan ada bentuk relay dengan rangkaian driver dapat dilihat pada gambar2.1.4.

Gambar 2.1.4. Simbol Relay dan Rangkaian Driver

Vcc

Tr VB

Dioda


(22)

2.2Software

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


(23)

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:

...

4. Instruksi RET

Instruksi RETURN (RET) ini merupakan perintah untuk kembali ke rutin pemanggil setelah instruksi ACALL dilaksanakan. Contoh,

ACALL TUNDA ...

TUNDA:


(24)

RET

5. Instruksi JMP (Jump)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu. Contoh,

Loop:

...

6. Instruksi JNB (Jump if Not bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang dimaksud berlogika Low (0). Contoh,

Loop: JNP Loop

7. 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 ... JNB P1.0,Loop ...

8. Instruksi CJNZ (Compare Jump If Not Equal)

Instruksi ini berfungsi untuk membandingkan nilai dalam suatu register dengan suatu nilai tertentu. Contoh,

Loop:

...


(25)

...

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,

MOV R0,#20h R0 = 20h

...

INC R0 R0 = R0 + 1

...


(26)

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


(27)

2.2.3 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

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


(28)

BAB 3

PERANCANGAN ALAT DAN PROGRAM

3.1. DIAGRAM BLOK

AT89S51

Penguat sinyal

Penguat sinyal display

keypad

relay

pompa

Sensor 1

Sensor 5

alarm

Keterangan diagram blok:

Sensor air yang berfungsi untuk mengetahui tingkat ketinggian air terhubung ke penguat sinyal. Output dari penguat sinyal masuk ke mikrokontroler AT89S51. keypad berfungsi sebagai input data ke mikrokontroler AT89S51.

Pompa berfungsi sebagai pengisi dan pengosong tangki terhubung ke relay dan terhubung ke mikro AT89S51. display berfungsi sebagai penampil input data dari keypad.


(29)

Sistem kerja rangkaian:

Mikrokontroller akan memerintahkan pompa untuk mengisi penuh tangki apabila ada input data untuk mengisi tangki dan akan mengosongkan tangki apabila mendapat perintah pengosongan tangki sesuai dengan tingkat pengosongan.

3.2. FLOWCHART

tdk start

Cek tombol 1

Tampil angka 2 Cek tombol 2

Cek tombol 6

Cek tombol 1

Cek tombol 2

Tampil angka 1

Tampil angka 2 Tampil angka 1

Tampil angka 6 Isi air sampai

level 1

Isi air sampai level 2

Isi air sampai Level 6

kosongkan air sampai level 1

kosongkan air sampai level 2 ya tdk tdk tdk ya ya

cek tombol isi Cek tombol

kosong

Cek tombol 6

Tampil angka 6

Kosogkan air sampai level 6 ya tdk ya ya tdk tdk tdk ya ya tdk


(30)

Program di awali dengan start. Kemudian program akan mengecek penekanan tombol isi jika ada penekanan pada tombol isi maka program akan membandingkan data apakah ada penekanan tombol untuk pengisian sampai level 1 jika ada maka program akan menampilkan tampilan angka 1 pada display dan memerintahkan pompa untuk mengisi air sampai level 1 jika tidak ada penekanan tombol satu maka program akan akan mengecek penekana tombol 2 jika ada penekanan tombol 2 maka program akan menampilkan tampilan angka 2 pada display dan memerintahkan pompa untuk mengisi air sampai level 2 perlakuan yang sama terus dilakukan sampai tombol lima.

Jika tidak ada penekanan pada tombol isi maka program akan mengecek penekanan tombol pengosongan tangki jika ada penekanan pada tombol isi maka program akan membandingkan data apakah ada penekanan tombol untuk pengosongan sampai level 1 jika ada maka program akan menampilkan tampilan angka 1 pada display dan memerintahkan pompa untuk mengeluarkan air sampai level 1 jika tidak ada penekanan tombol satu maka program akan akan mengecek penekanan tombol pengosongan 2 jika ada penekanan tombol 2 maka program akan menampilkan tampilan angka 2 pada display dan memerintahkan pompa untuk mengosongkan air sampai level 2 .perlakuan yang sama terus dilakukan sampai tombol lima.

Jika tidak ada penekanan pada tombol isi dan tombol pengosongan maka program akan kembali ke awal.


(31)

3.3. Rangkaian Power Supplay ( PSU )

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 relay. Rangkaian power supplay ditunjukkan pada gambar 3.3 berikut ini :


(32)

3.4. Rangkaian Mikrokontroler AT89S51

Rangkaian ini berfungsi sebagai pusat kendali dari seluruh system yang ada. Rangkaian mikrokontroler ditunjukkan pada gambar berikut ini:

Gambar.3.4. Rangkaian Mikrokontroller AT89S51

Pin 31 External Access Enable (EA) diset high (H). Ini dilakukan karena mikrokontroller AT89S8253 tidak menggunakan memori eskternal. Pin 18 dan 19


(33)

dihubungkan ke XTAL 12 MHz dan capasitor 33 pF. XTAL ini akan mempengaruhi kecepatan mikrokontroller AT89S8253 dalam mengeksekusi setiap perintah dalam program. Pin 9 merupakan masukan reset (aktif tinggi). Pulsa transisi dari rendah ke tinggi akan mereset 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. Pada port 0 ini masing masing pin dihubungkan dengan resistor 4k7 ohm. Resistor 4k7 ohm yang dihubungkan ke port 0 befungsi sebagai pull up ( penaik tegangan ) agar output dari mikrokontroller dapat mentrigger transistor.

Pin 1 sampai 8 adalah port 1. Pin 21 sampai 28 adalah port 2. Dan Pin 10 sampai 17 adalah port 3. Pin 39 yang merupakan P0.0 dihubungkan dengan sebuah resistor 330 ohm dan sebuah LED. Ini dilakukan hanya untuk menguji apakah rangkaian minimum mikrokontroller AT89S51 sudah bekerja atau belum. Dengan memberikan program sederhana pada mikrokontroller tersebut, dapat diketahui apakah rangkaian minimum tersebut sudah bekerja dengan baik atau tidak. Jika LED yang terhubung ke Pin 39 sudah bekerja sesuai dengan perintah yang diberikan, maka rangkaian minimum tersebut telah siap digunakan. Pin 20 merupakan ground dihubungkan dengan ground pada power supplay. Pin 40 merupakan sumber tegangan positif dihubungkan dengan + 5 volt dari power supplay.


(34)

3.5.Rangkaian Alarm

Rangkaian alarm pada alat ini berfungsi untuk memutuskan atau menghubungkan sumber tegangan 12 volt dengan buzzer. Gambar rangkaian alarm ini ditunjukkan pada gambar 3.5 berikut ini :

Gambar 3.5. Rangkaian alarm

Output dari relay yang satu dihubungkan ke sumber tegangan 12 volt dan yang lainnya dihubungkan ke buzzer. Hubungan yang digunakan adalah normally close. Prinsip kerja rangkaian ini pada dasarnya memanfaatkan fungsi transistor sebagai saklar elektronik. Tegangan atau sinyal pemicu dari transistor berasal dari mikrokontroller Port 0.1. Pada saat logika port 0.1 tinggi (high), maka transistor mendapat tegangan bias dari kaki basis. Dengan adanya tegangan bias ini maka transistor akan aktip (saturation), sehingga ada arus yang mengalir ke kumparan relay. Hal ini akan menyebabkan saklar


(35)

pada relay menjadi tertutup, sehingga hubungan sumber tegangan 12 volt ke buzzer akan terhubung dan buzzer akan berbunyi. Begitu juga sebaliknya pada saat logika Port 0.1 rendah (low) maka relay tidak dialiri arus. Hal ini akan menyebabkan saklar pada relay terputus, sehingga sumber tegangan 12 volt dengan buzzer akan terputus dan buzzer tidak berbunyi.

3.6.Ranagkaian seven segment

Untuk menampilkan nilai level ketinggian air yang akan diisikan ke dalam tangki diperlukan suatu rangkaian display yang dapat menampilkan nilai level tersebut

Rangkaian display yang digunakan untuk menampilkan nilai terlihat pada ganbar berikut:


(36)

Display ini menggunakan 1buah seven segment yang dihubungkan ke IC HEF 4094BP 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. Pada rangkaian display ini digunakan dua buah dioda yang berfungsi untuk menurunkan tegangan supply untuk seven segment. Satu buah dioda dapat menurunkan tegangan sekitar 0,6 volt. Jadi, apabila dioda yang digunakan dua buah maka tegangan yang dapat diturunkannya adalah 1,8 volt. Tegangan ini diturunkan agar umur seven segment lebih tahan lama dan karena tegangan maksimum seven segment

adalah 3,7 volt

3.7. Rrangkaian Pengendali Pompa Air

Rangkaian pengendali pompa air pada alat ini berfungsi untuk mengisi dan mengosongkan air pada tangki. Gambar rangkaian pengendali pompa air ini ditunjukkan pada gambar 3.7 berikut ini:


(37)

Output dari relay yang satu dihubungkan ke sumber tegangan 12 volt dan yang lainnya dihubungkan ke pompa. Hubungan yang digunakan adalah normally open. Prinsip kerja rangkaian ini pada dasarnya memanfaatkan fungsi transistor sebagai saklar elektronik. Tegangan atau sinyal pemicu dari transistor berasal dari mikrokontroler Port 0.1 (P0.1). Pada saat logika pada port 0.1 adalah tinggi (high), maka transistor mendapat tegangan bias dari kaki basis. Dengan adanya tegangan bias ini maka transistor akan aktip (saturation), sehingga adanya arus yang mengalir ke kumparan relay. Hal ini akan menyebabkan sakar pada relay menjadi tertutup, sehingga hubungan sumber tegangan 12 volt ke pompa akan terhubung dan pompa akan menyala. Begitu juga sebaliknya pada saat logika pada P0.1 adalah rendah (low) maka relay tidak dialiri arus. Hal ini akan menyebabkan saklar pada relay terputus, sehingga sumber tegangan 12 volt dengan pompa akan terputus dan pompa tidak menyala.


(38)

3.8. Rangkaian Tombol

Rangkaian Keypad berfungsi sebagai tombol untuk memasukan nilai level ketinggian air yang akan diisikan ke dalam tangki. data yang diketikkan pada keypad akan diterima oleh mikrokontroler AT89S51 untuk kemudian diolah dan diotampilkan pada display seven segmen. Rangkaian keypad ditunjukkan pada gambar berikut ini :

Gambar 3.8. Rangkaian Tombol

Rangkaian keypad ini terdiri dari sebuah keypad yang salah satu pinnya dihubungkan ke ground dan pin yang lain dihubungkan ke VCC dan AT89S51.


(39)

3.9. Perancangan Rangkaian sensor dan pengolah sinyal

Sensor ini berfungsi untuk mengetahui ketika ada air yang mengenai sensor. Sensor ini terdiri dari dua lempeng logam, dimana lempeng 1 dihubungkan ke Vcc 5 volt dan yang lainnya dihubungkan ke input dari rangkaian pengolah sinyal.

Sensor yang terkena air akan mengalami perubahan tegangan kemudian akan diolah oleh rangkaian penerima agar menghasilkan data biner, dimana jika sensor terkena air maka output dari rangkaian penerima ini akan mengeluarkan logika low (0), namun jika tidak terkena air, maka output dari rangkaian penerima akan mengeluarkan logika high (1). Rangkaian sensor dan penguat sinyal seperti gambar di bawah ini:

Gambar. Rangkaian sensor dan penguat sinyal

Gambar 3.9. Prancangan Rangkaian sensor dan pengolah sinyal air

Ke


(40)

Pada rangkaian di atas, output dari sensor diumpankan ke Op Amp, di Op Amp tegangan akan dikuatkan sesuai dengan yang diinginkan. Output Op Amp akan diinputkan ke basis dari transistor tipe NPN C945, ini berari untuk membuat transistor tersebut aktip maka tegangan yang keluar dari Op Amp harus lebih besar dari 0,7 volt. Syarat ini akan terpenuhi jika sensor terkena air.

3.10.

Perancangan Program

;= = = = = = = = = = = = = = = =; ; water level indicator program ; ;= = = = = = = = = = = = = = = =;

; = = initialisasi angka = = ;

bil0 equ 20h

bil1 equ 0ech bil2 equ 18h

bil3 equ 88h bil4 equ 0c4h bil5 equ 82h bil6 equ 02h


(41)

; = = = = = = = = = = = ; ; initialisasi port ; ; = = = = = = = = = = = ; ; = = isi = = ;

key1 bit p1.0 key2 bit p1.1 key3 bit p1.2 key4 bit p1.3 key5 bit p1.4 key6 bit p1.5

; = = kosong = = ;

key7 bit p1.6

key8 bit p1.7

key9 bit p3.5

key10 bit p3.6 key11 bit p3.7 key12 bit p3.4

; = = pompa = = ;

pompa1 bit p2.1


(42)

; = = sensor = = ;

sensor1 bit p0.0

sensor2 bit p0.1

sensor3 bit p0.2

sensor4 bit p0.3

sensor5 bit p0.4

sensor6 bit p0.5

utama:

clr pompa1 clr pompa2 call angka0 call delay call delay call delay jmp start mulai:

start:

jb key1,cek_key2 ; jika ada penekanan pada tombol 1pada keypet

call angka1 ; tampilkan angka 1 pada seven segment

call isi_level1 ; isi sampai level 1

call angka1 ; tampilkan angka 1 pada seven segment


(43)

cek_key2:

jb key2,cek_key3 ; jika ada penekanan pada tombol 2pada keypet call angka2 ; tampilkan angka 2 pada seven segment call isi_level2 ; isi sampai level 2

call angka2 ; tampilkan angka 2 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key3:

jb key3,cek_key4 ; jika ada penekanan pada tombol 3 pada keypet call angka3 ; tampilkan angka 3 pada seven segment

call isi_level3 ; isi sampai level 3

call angka3 ; tampilkan angka 3 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key4:

jb key4,cek_key5 ; jika ada penekanan pada tombol 4 pada keypet

call angka4 ; tampilkan angka 4 pada seven segment

call isi_level4 ; isi sampai level 4

call angka4 ; tampilkan angka 4 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key5:

jb key5,cek_key6 ; jika ada penekanan pada tombol 5 pada keypet

call angka5 ; tampilkan angka 5 pada seven segment


(44)

call angka5 ; tampilkan angka 5 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key6:

jb key6,cek_key12 ; jika ada penekanan pada tombol 6pada keypet

call angka6 ; tampilkan angka 6 pada seven segment

call isi_level6 ; isi sampai level 6

call angka6 ; tampilkan angka 6 pada seven segment jmp mulai ; lompat ke alamat selanjutnya

; = = kosong = = ;

cek_key12:

jb key12,cek_key7 ; jika ada penekanan pada tombol 0 pada keypet call angka0 ; tampilkan angka 0 pada seven segment

call kosong_level1 ; kosongkan sampai level 0

call angka0 ; tampilkan angka 0 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key7:

jb key7,cek_key8 ; jika ada penekanan pada tombol 1pada keypet call angka1 ; tampilkan angka 1 pada seven segment call kosong_level1 ; kosongkan sampai level 1

call angka1 ; tampilkan angka 1 pada seven segment


(45)

cek_key8:

jb key8,cek_key9 ; jika ada penekanan pada tombol 2 pada keypet

call angka2 ; tampilkan angka 2 pada seven segment

call kosong_level2 ; kosongkan sampai level 2

call angka2 ; tampilkan angka 1 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key9:

jb key9,cek_key10 ; jika ada penekanan pada tombol 3pada keypet

call angka3 ; tampilkan angka 3 pada seven segment call kosong_level3 ; kosongkan sampai level 3

call angka3 ; tampilkan angka 3 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

cek_key10:

jb key10,cek_key11 ; jika ada penekanan pada tombol 4pada keypet

call angka4 ; tampilkan angka 4 pada seven segment

call kosong_level4 ; kosongkan sampai level 4

call angka4 ; tampilkan angka 1 pada seven segment


(46)

cek_key11:

jb key11,balik_mulai ; jika ada penekanan pada tombol 5pada keypet

call angka5 ; tampilkan angka 5 pada seven segment

call kosong_level5 ; kosongkan sampai level 5

call angka5 ; tampilkan angka 5 pada seven segment

jmp mulai ; lompat ke alamat selanjutnya

balik_mulai: ljmp mulai

ret

; = =pompa isi = =; isi_level1:

setb pompa2 ; hidupkan pompa isi

jb sensor1,isi_level1 ; isi hingga level 1

clr pompa2 ; matikan pompa isi


(47)

isi_level2:

setb pompa2 ; hidupkan pompa isi

jb sensor2,isi_level2 ; isi hingga level 2 clr pompa2 ; matikan pompa isi

ret ; kembali keawal

isi_level3:

setb pompa2 ; hidupkan pompa isi jb sensor3,isi_level3 ; isi hingga level 3 clr pompa2 ; matikan pompa isi ret ; kembali keawal

isi_level4:

setb pompa2 ; hidupkan pompa isi jb sensor4,isi_level4 ; isi hingga level 4 clr pompa2 ; matikan pompa isi ret ; kembali keawal

isi_level5:

setb pompa2 ; hidupkan pompa isi jb sensor5,isi_level5 ; isi hingga level 5 clr pompa2 ; matikan pompa isi ret ; kembali keawal


(48)

isi_level6:

setb pompa2 ; hidupkan pompa isi jb sensor6,isi_level6 ; isi hingga level 6 clr pompa2 ; matikan pompa isi

ret ; kembali keawal

; = = pompa kosong = = ; kosong_level1:

setb pompa1 ; hidupkan pompa kosong

jnb sensor1,kosong_level1 ; kosongka hingga level 1 clr pompa1 ; matikan pompa kosong

ret ; kembali keawal

kosong_level2:

setb pompa1 ; kembali keawal

jnb sensor2,kosong_level2 ; kosongka hingga level 2 clr pompa1 ; matikan pompa kosong ret ; kembali keawal


(49)

kosong_level3:

setb pompa1 ; kembali keawal

jnb sensor3,kosong_level3 ; kosongka hingga level 3 clr pompa1 ; matikan pompa kosong ret ; kembali keawal

kosong_level4:

setb pompa1 ; kembali keawal

jnb sensor4,kosong_level4 ;kosongka hingga level 4 clr pompa1 ; matikan pompa kosong ret ; kembali keawal

kosong_level5:

setb pompa1 ; kembali keawal

jnb sensor5,kosong_level5 ;kosongka hingga level 1 clr pompa1 ; matikan pompa kosong ret ; kembali keawal

angka0:

mov sbuf,#bil0 ; tampilkam angka 0 pada seven segment jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 0 ret ; kembali keawal


(50)

angka1:

mov sbuf,#bil1 ; tampilkam angka 1pada seven segment jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 1

ret ; kembali keawal angka2:

mov sbuf,#bil2 ; tampilkam angka 2 pada seven segment

jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 2 ret ; kembali keawal

angka3:

mov sbuf,#bil3 ; tampilkam angka 3 pada seven segment jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 3

ret ; kembali keawal

angka4:

mov sbuf,#bil4 ; tampilkam angka 4 pada seven segment jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 4 ret ; kembali keawal


(51)

angka5:

mov sbuf,#bil5 ; tampilkam angka 5 pada seven segment jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 5 ret ; kembali keawal angka6:

mov sbuf,#bil6 ; tampilkam angka 6 pada seven segment jnb ti,$ ; lomapt kalamat tertentu

clr ti ; hapus angka 5 ret ; kembali keawal

delay:

mov r7,#0ffh ; masukan nilai ff keregister 7

djnz r7,$ ; untuk mengurangi nilai register tertentu

ret ; kembali keawal


(52)

BAB 4

PENGUJIAN RANGKAIAN DAN SENSOR

4.1. Pengujian Rangkaian Power Supplay (PSU)

Pengujian pada bagian rangkaian power supplay ini dapat dilakukan dengan mengukur tegangan keluaran dari rangkaian ini dengan menggunakan volt meter digital. Pada power supplay ini terdapat dua keluaran. Dari hasil pengujian diperoleh tegangan keluaran pertama sebesar + 5,1 volt. Tegangan ini dipergunakan untuk mensupplay tegangan ke seluruh rangkaian. Mikrokontroler AT89S52 dapat bekerja pada tegangan 4,0 sampai dengan 5,5 volt, sehingga tegangan 5,1 volt ini cukup untuk mensupplay tegangan ke mikrokontroler AT89S52. Sedangkan tegangan keluaran kedua sebesar 12 volt. Pada alat ini dipergunakan untuk rangkaian alarm dan rangkaian pompa air.

4.2. Pengujian Rangkaian Mikrokontroller AT89S52

Untuk mengetahui apakah rangkaian mikrokontroller AT89S52 telah bekerja dengan baik, maka dilakukan pengujian.Pengujian bagian ini dilakukan dengan memberikan program sederhana pada mikrokontroller AT89S52. Programnya adalah sebagai berikut :

Loop:

Setb P0.0 Acall tunda Clr P0.0 Acall tunda


(53)

Sjmp Loop Tunda:

Mov r7,#255 Tnd: Mov r6,#255

Djnz r6,$ Djnz r7,tnd Ret

Program di atas bertujuan untuk menghidupkan LED yang terhubung ke P0.0 beberapa saat dan kemudian mematikannya. Perintah Setb P0.0 akan menjadikan P0.0 berlogika high yang menyebabkan LED menyala. Acall tunda akan menyebabkan LED ini hidup selama beberapa saat. Perintah Clr P0.0 akan menjadikan P0.0 berlogika low yang menyebabkan 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.

Jika program tersebut diisikan ke mikrokontroller AT89S52, kemudian mikrokontroller dapat berjalan sesuai dengan program yang diisikan, maka rangkaian minimum mikrokontroller AT89S52 telah bekerja dengan baik.

Perintah di atas akan memberikan logika high pada P0.1, sehingga P0.1 akan mendapatkan tegangan 5 volt. Tegangan 5 volt ini akan mengaktipkan transistor C945, sehingga relay juga menjadi aktip dan alarm berbunyi. Berikutnya memberikan program sederhana untuk menonaktipkan relay. Programnya sebagai berikut :

Clr P0.1


(54)

Perintah di atas akan memberikan logika low pada P0.1, sehingga P0.1 akan mendapatkan tegangan 0 volt. Tegangan 0 volt ini akan menonaktipkan transistor C945, sehingga relay juga menjadi tidak aktip dan alarm tidak berbunyi.

4.3. Pengujian Rangkaian relay

Pengujian rangkaian relay dapat dilakukan dengan memberikan tegangan 5 volt dan 0 volt pada basis transistor C945. Transistor C945 merupakan transistor jenis NPN, transistor jenis ini akan aktif jika pada basis diberi tegangan > 0,7 volt dan tidak aktif jika pada basis diberi tegangan < 0,7 volt. Aktifnya transistor akan mengaktipkan relay. Pada rangkaian ini relay digunakan untuk memutuskan hubungan buzzer dengan sumber tegangan 12 volt, dimana hubungan yang digunakan adalah normally open (NO), dengan demikian jika relay aktip maka hubungan buzzer ke sumber tegangan akan terhubung, sebaliknya jika relay tidak aktif, maka hubungan buzzer ke sumber tegangan akan terputus.

Pengujian dilakukan dengan memberikan tegangan 5 volt pada basis transistor, jika relay aktif dan buzzer berbunyi, maka rangkaian ini telah berfungsi dengan baik.

Pengujian selanjutnya dilakukan dengan menghubungkan input rangkaian ini ke mikrokontroler pada P0.1


(55)

Gambar 4.3. Rangkaian Relay

kemudian memberikan program sederhana pada mikrokontroler AT89S52. Program yang diberikan adalah sebagai berikut:

Setb P0.1

. . .

Perintah di atas akan memberikan logika high pada P0.1, sehingga P0.1 akan mendapatkan tegangan 5 volt. Tegangan 5 volt ini akan mengaktifkan transistor C945,


(56)

sehingga relay juga menjadi aktif dan heater menyala. Berikutnya memberikan program sederhana untuk menonaktifkan relay. Programnya sebagai berikut:

Clr P0.1

. . .

Perintah di atas akan memberikan logika low pada P0.1, sehingga P0.1 akan

mendapatkan tegangan 0 volt. Tegangan 0 volt ini akan menonaktifkan transistor C945, sehingga relay juga menjadi tidak aktif dan heater tidak menyala.

4.4. Pengujian rangkaian pengendali pompa air

Pengujian rangkaian pengendali pompa ini dapat dilakukan dengan memberikan tegangan 5 volt dan 0 volt pada basis transistor C945. Transistor C945 merupakan transistor jenis NPN, transistor jenis ini akan aktip jika pada basis diberi tegangan > 0,7 volt dan tidak aktip jika pada basis diberi tegangan < 0,7 volt. Aktipnya transistor akan mengaktipkan relay. Pada rangkaian ini relay digunakan untuk memutuskan hubungan pompa dengan sumber tegangan 220 volt, dimana hubungan yang digunakan adalah normally close (NO), dengan demikian jika relay aktip maka hubungan pompa ke sumber tegangan akan terhubung, sebaliknya jika relay tidak aktip, maka hubungan pompa ke sumber tegangan akan terputus.

Pengujian dilakukan dengan memberikan tegangan 5 volt pada basis transistor, jika relay aktip dan pompa akan bekerja, maka rangkaian ini telah berfungsi dengan baik. Pengujian selanjutnya dilakukan dengan menghubungkan input rangkaian ini ke mikrokontroler pada P0.0.


(57)

Gambar 4.4.Rangkaian pengendali pompa air

kemudian memberikan program sederhana pada mikrokontroler AT89S52. Program yang diberikan adalah sebagai berikut:

Setb P0.0

. . .

Perintah di atas akan memberikan logika high pada P0.0, sehingga P0.0 akan mendapatkan tegangan 5 volt. Tegangan 5 volt ini akan mengaktipkan transistor C945, sehingga relay juga menjadi aktip dan pompa menyala. Berikutnya memberikan program sederhana untuk menonaktipkan relay. Programnya sebagai berikut:


(58)

Clr P0.0

. . .

Perintah di atas akan memberikan logika low pada P0.0, sehingga P0.0 akan mendapatkan tegangan 0 volt. Tegangan 0 volt ini akan menonaktipkan transistor C945, sehingga relay juga menjadi tidak aktip dan pompa tidak menyala.

4.5. Pengujian Rangkaian Tombol

Pengujian rangkaian ini dapat dilakukan dengan cara menekan keypad, dan mengukur tegangan outputnya. Pada saat keypad tidak ditekan, maka tegangan output dari rangkaian ini sebesar 5,00. Namun saat keypad ditekan, maka tegangan output dari rangkaian ini sebesar 0,01 volt. Dengan demikian maka rangkaian ini telah berfungsi dengan baik

4.6. Pengujian Rangkaian Alarm

Pengujian rangkaian alarm dapat dilakukan dengan memberikan tegangan 5 volt dan 0 volt pada basis transistor C945. Transistor C945 merupakan transistor jenis NPN, transistor jenis ini akan aktip jika pada basis diberi tegangan > 0,7 volt dan tidak aktip jika pada basis diberi tegangan < 0,7 volt. Aktipnya transistor akan mengaktipkan relay. Pada rangkaian ini relay digunakan untuk memutuskan hubungan alarm dengan sumber tegangan 12 volt, dimana hubungan yang digunakan adalah normally close (NO), dengan demikian jika relay aktip maka hubungan alarm ke sumber tegangan akan terhubung,


(59)

sebaliknya jika relay tidak aktip, maka hubungan alarm ke sumber tegangan akan terputus.

Pengujian dilakukan dengan memberikan tegangan 5 volt pada basis transistor, jika relay aktip dan buzzer berbunyi, maka rangkaian ini telah berfungsi dengan baik. Pengujian selanjutnya dilakukan dengan menghubungkan input rangkaian ini ke mikrokontroller pada P0.1.

Gambar 4.6. Pengujian rangkaian alarm

kemudian memberikan program sederhana pada mikrokontroller AT89S51. Program yang diberikan adalah sebagai berikut :

Setb P0.1


(60)

Perintah di atas akan memberikan logika high pada P0.1, sehingga P0.1 akan mendapatkan tegangan 5 volt. Tegangan 5 volt ini akan mengaktipkan transistor C945, sehingga relay juga menjadi aktip dan alarm berbunyi. Berikutnya memberikan program sederhana untuk menonaktipkan relay. Programnya sebagai berikut :

Clr P0.1

. . .

Perintah di atas akan memberikan logika low pada P0.1, sehingga P0.1 akan mendapatkan tegangan 0 volt. Tegangan 0 volt ini akan menonaktipkan transistor C945, sehingga relay juga menjadi tidak aktip dan alarm tidak berbunyi.

4.7. Pengujian Rangkaian Sensor air

Pengujian pada rangkaian sensor air ini dapat dilakukan dengan cara menghubungkan rangkaian ini dengan sumber tegangan 5 volt, kemudian meletakkan dua buah kabel secara berdampingan. Jika kabel terkena air maka kedua kabel akan terhubung sehingga menyebabkan LED indikator pada rangkaian penerima akan menyala, dan tegangan output rangkaian sebesar 0,2 volt. Namun ketika kabel tidak terkena air maka kabel tidak terhubung , hal ini menyebabkan LED indikator pada rangkaian penerima tidak menyala dan tegangan output dari rangkaian ini sebesar 4,8 volt.

Pengujian selanjutnya dilakukan dengan cara menghubungkan rangkaian ini dengan rangkaian mikrokontroler AT89S51, dan memberikan program tertentu pada mikrokontroler AT89S51.Untuk mendeteksi adanya sinyal yang dikirimkan oleh sensor, maka mikrokontroler harus diprogram untuk untuk dapat mengecek sinyal apa yang dikirimkan oleh sensor. Jika sinyal yang dikirimkan adalah sinyal high (1), berarti tidak


(61)

ada air yang mengena sensor, namun jika sinyal yang dikirimkan adalah sinyal low, maka ini berarti ada air yang mengenai sensor. Program untuk mendeteksi pengiriman sinyal dari rangkaian sensor ini adalah,

sensor_1 Bit P1.3

Sensor_2r Bit P1.2

Cek_sensor_1:

Jnb sensor_1,Cek_sensor_2

Clr P3.7

. . .

Cek_sensor_2:

Jnb sensor_2,Cek_sensor_3

Setb P3.7

. . .

Di awal program dibuat inisialisasi port, dimana rutin ini menunjukkan bahwa sensor 1 dihubungkan ke P1.3 dan sensor 2 dihubungkan ke P1.2. Kemudian program akan dilanjutkan dengan rutin cek sensor 1. Pada rutin ini program akan melihat kondisi P1.3 yang dihubungkan ke sensor 1, dengan menggunakan perintah JnB (jump if not bit), jika kondisi P1.3 bit (high), yang berarti tidak ada air yang mengenai sensor, maka program akan lompat ke rutin cek sensor keluar. Namun jika kondisi P1.3 notbit (low), maka program akan melanjutkan ke rutin Clr P3.7. Perintah ini akan menyebabkan LED


(62)

yang terhubung ke P3.7 mati. Jika rangkaian telah berjalan sesuai dengan program yang diberikan, maka rangkaian telah bekerja dengan baik.

4.8. Pengujian Rangkaian Display Seven Segment

Pengujian pada rangkaian ini dapat dilakukan dengan menghubungkan rangkaian ini dengan rangkaian mikrokontroller, kemudian memberikan data tertentu pada port serial dari mikrokontroller. Seven segment yang digunakan adalah common anoda, dimana segment akan menyala jika diberi logika 0 dan sebaliknya segment akan mati jika diberi logika 1.


(63)

Dari hasil pengujian diperoleh data yang harus dikirimkan ke port serial untuk menampilkan angka desimal adalah sebagai berikut :

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


(64)

mov sbuf,#bil0 Jnb ti,$ Clr ti sjmp loop Delay: mov r7,#255 delay1: mov r6,#255 djnz r6,$ djnz r7,delay1 ret

Program di atas akan menampilkan angka 0 pada semua seven segment. Sedangkan untuk menampilkan 3 digit angka yang berbeda pada seven segment adalah dengan mengirimkan ke 3 data angka yang akan ditampilkan pada seven segment. 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


(65)

Delay:

mov r7,#255

delay1:

mov r6,#255

djnz r6,$

djnz r7,delay1

ret

Program di atas akan menampilkan angka 1 pada seven segment , angka 2 pada seven segment dan angka 3 pada seven pertama.segment


(66)

BAB 5

KESIMPULAN DAN SARAN

5.2.Kesimpulan

1. Keypad berfungsi sebagai tombol untuk memasukan nilai level

ketinggian air yang akan diisikan ke dalam tangki. data yang diketikkan pada keypad akan diterima oleh mikrokontroler AT89S51 untuk kemudian diolah dan diotampilkan pada display seven segmen. Rangkaian keypad ditunjukkan pada gambar berikut ini :

2. Rangkaian sensor dan pengolah sinyal berfungsi untuk mengetahui ketika ada air yang mengenai sensor. Sersor ini terdiri dari dua lempeng logam, dimana lempeng 1 dihubungkan ke Vcc 5 volt dan yang lainnya dihubungkan ke input dari rangkaian pengolah sinyal

3. Relay adalah suatu rangkaian switch magnetik yang bekerja bila mendapat catu daya dan suatu rangkaian trigger


(67)

5.2.Saran

1. Semoga alat ini dapat bermanfaat untuk mempermudah dalam

mengaturpengoprasian pada tangki yang terdapat pada industri yang membutuhkannya

2. Alangkah baiknya jika mahasiswa yamg akan datang dapat mengembangkan lebih baik dari pada yang sekarang guna mengembangkan teknologi dan inovasi dikalangan mahasiswa. 3. Untuk menjaga sistem dan rangkaian tersebut agar tetap efektif

lebih baik alat tersebut dikemas dalam bentuk yang aman.


(68)

DAFTAR PUSTAKA

1. Agfianto. 2004. Belajar Mikrokontroller AT89C51/52/55 Teori dan Aplikasi. Edisi Kedua. Yogyakarta : Gava Media.

2. Andi. 2003. Panduan Praktis teknik Antarmuka dan Pemrograman Mikrokontroller AT89C51. Jakarta : PT. Elex Media Komputindo.

3. Malvino, Albert Paul. 2003. Prinsip – Prinsip Elektronika. Jilid 1 dan 2. Edisi Pertama. Jakarta. : Salemba Teknika.


(1)

Dari hasil pengujian diperoleh data yang harus dikirimkan ke port serial untuk menampilkan angka desimal adalah sebagai berikut :

Tabel 4.8 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 mikrokontroller 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:


(2)

mov sbuf,#bil0 Jnb ti,$ Clr ti sjmp loop Delay: mov r7,#255 delay1: mov r6,#255 djnz r6,$ djnz r7,delay1 ret

Program di atas akan menampilkan angka 0 pada semua seven segment. Sedangkan untuk menampilkan 3 digit angka yang berbeda pada seven segment adalah dengan mengirimkan ke 3 data angka yang akan ditampilkan pada seven segment. 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


(3)

Delay:

mov r7,#255 delay1:

mov r6,#255 djnz r6,$ djnz r7,delay1 ret

Program di atas akan menampilkan angka 1 pada seven segment , angka 2 pada seven segment dan angka 3 pada seven pertama.segment


(4)

BAB 5

KESIMPULAN DAN SARAN

5.2.Kesimpulan

1. Keypad berfungsi sebagai tombol untuk memasukan nilai level ketinggian air yang akan diisikan ke dalam tangki. data yang diketikkan pada keypad akan diterima oleh mikrokontroler AT89S51 untuk kemudian diolah dan diotampilkan pada display seven segmen. Rangkaian keypad ditunjukkan pada gambar berikut ini :

2. Rangkaian sensor dan pengolah sinyal berfungsi untuk mengetahui ketika ada air yang mengenai sensor. Sersor ini terdiri dari dua lempeng logam, dimana lempeng 1 dihubungkan ke Vcc 5 volt dan yang lainnya dihubungkan ke input dari rangkaian pengolah sinyal

3. Relay adalah suatu rangkaian switch magnetik yang bekerja bila mendapat catu daya dan suatu rangkaian trigger


(5)

5.2.Saran

1. Semoga alat ini dapat bermanfaat untuk mempermudah dalam mengaturpengoprasian pada tangki yang terdapat pada industri yang membutuhkannya

2. Alangkah baiknya jika mahasiswa yamg akan datang dapat mengembangkan lebih baik dari pada yang sekarang guna mengembangkan teknologi dan inovasi dikalangan mahasiswa. 3. Untuk menjaga sistem dan rangkaian tersebut agar tetap efektif

lebih baik alat tersebut dikemas dalam bentuk yang aman.


(6)

DAFTAR PUSTAKA

1. Agfianto. 2004. Belajar Mikrokontroller AT89C51/52/55 Teori dan Aplikasi. Edisi Kedua. Yogyakarta : Gava Media.

2. Andi. 2003. Panduan Praktis teknik Antarmuka dan Pemrograman Mikrokontroller AT89C51. Jakarta : PT. Elex Media Komputindo.

3. Malvino, Albert Paul. 2003. Prinsip – Prinsip Elektronika. Jilid 1 dan 2. Edisi Pertama. Jakarta. : Salemba Teknika.