• Tidak ada hasil yang ditemukan

Pengontrolan Dan Pengukuran Suhu Pada Heater Berbasis AT89S52

N/A
N/A
Protected

Academic year: 2016

Membagikan "Pengontrolan Dan Pengukuran Suhu Pada Heater Berbasis AT89S52"

Copied!
79
0
0

Teks penuh

(1)

TUGAS AKHIR

Diajukan untuk melengkapi tugas dan memenuhi syarat mencapai gelar Ahli Madya

ESNA MANURUNG

052408083

PROGRAM STUDI D-3 FISIKA INSTRUMENTASI

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(2)

TUGAS AKHIR

ESNA MANURUNG

052408083

PROGRAM STUDI D-3 FISIKA INSTRUMENTASI

DEPARTEMEN FISIKA

FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA UTARA

(3)

PERSETUJUAN

Judul

: PENGONTROLAN DAN PENGUKURAN SUHU

PADA HEATER BERBASIS AT89S52

Kategori

: TUGAS AKHIR

Nama

: ESNA MANURUNG

Nomor Induk Mahasiswa : 052408083

Program Studi

: D-3 FISIKA INSTRUMENTASI

Departemen

: FISIKA

Fakultas

: MATEMATIKA DAN ILMU PENGETAHUAN

ALAM (FMIPA) UNIVERSITAS SUMATERA

UTARA

Diluluskan di

Medan, Juni 2008

Dosen Pembimbing

Drs. Luhut Sihombing, MS

NIP : 130535871

Ketua Program Studi

D-3 Fisika Instrumentasi

(4)

PERNYATAAN

PENGONTROLAN DAN PENGUKURAN SUHU PADA HEATER

BERBASIS AT89S52

TUGAS AKHIR

Saya mengakui bahwa tugas akhir ini adalah hasil kerja saya sendiri, kecuali beberapa

kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juni 2008

(5)

ABSTRAK

Pengontrolan suhu secara otomatis pada heater akan memberikan kemudahan dalam

penggunaan alat ini. Pada prinsipnya heater akan menjaga suhu air pada tingkat suhu

yang diinginkan oleh pengguna. Teknik pengolahan data dan spesifikasi

komponen-komponen yang digunakan sangat menentukan kehandalan sistem pengontrolan alat

ini. Dengan memanfaatkan mikrokontroler AT89S52 sebagai otak sistem kerja

(pengolah data), maka secara otomatis akan mengontrol relay untuk

menghidupkan/mematikan heater setelah membandingkan tingkat suhu yang

diinputkan pada keypad dengan tingkat suhu yang dideteksi oleh sensor LM35. Hasil

deteksi sensor LM35 akan diubah oleh ADC menjadi data digital sehingga

mikrokontroler dapat membacanya dan menampilkannya pada display seven segmen.

Pada pengukuran terdapat kesalahan pada pengkonversian suhu oleh sensor LM35

dibandingkan dengan pengukuran termometer. Kesalahan yang terbesar dari hasil

pengujian sebesar 0,9

o
(6)

PENGHARGAAN

Puji dan syukur penulis panjatkan kepada Tuhan Yang Maha Esa yang telah

memberikan anugerah-Nya sehingga penulisan Tugas Akhir ini dapat diselesaikan

dalam waktu yang telah ditentukan.

(7)

DAFTAR ISI

Halaman

Persetujuan

ii

Pernyataan

iii

Penghargaan

iv

Abstrak

v

Daftar Isi

vi

Daftar Gambar

viii

BAB 1 PENDAHULUAN

1

1.1

Latar Belakang

1

1.2

Rumusan Masalah

2

1.3

Maksud dan Tujuan

2

1.4

Batasan Masalah

3

1.5

Teknik Pengumpulan Data

3

1.6

Sistematika Penulisan

4

BAB 2 LANDASAN TEORI

5

2.1 Perangkat Keras

5

2.1.1 Mikrokontroler AT89S52

5

2.1.2 Sensor Suhu LM35

10

2.1.3 Analog to Digital Converter (ADC 0804)

10

2.1.4 Seven Segmen

11

2.1.5 Relay

13

2.2 Perangkat Lunak

14

2.2.1 Bahasa Assembly MCS-51

14

2.2.2 Software 8051 Editor, Assembler, Simulator (IDE)

19

2.2.3 Software Downloader

20

BAB 3 PERANCANGAN ALAT

21

3.1 Diagram Blok

21

3.2 Perancangan Power Supply (PSA)

23

3.3 Rangkaian Mikrokontroler AT89S52

24

3.4 Rangkaian Sensor Suhu dan ADC

25

3.5 Rangkaian Display Seven Segmen

26

3.6 Rangkaian Relay

27

3.7 Perancangan Rangkaian Keypad

29

3.8 Diagram Alir Pemrograman

30

BAB 4 PENGUJIAN DAN ANALISA SISTEM

33

(8)

4.4 Pengujian Rangkaian Display Seven Segmen

36

4.5 Pengujian Rangkaian Relay

38

4.6 Pengujian Rangkaian Keypad

39

4.7 Pengujian Alat

41

4.8 Analisa Program

43

BAB 5 KESIMPULAN DAN SARAN

65

5.1 Kesimpulan

65

5.2 Saran

65

Daftar Pustaka

66

(9)

DAFTAR GAMBAR

Halaman

Gambar 2.1

IC Mikrokontroler AT89S52

7

Gambar 2.2

Sensor LM 35

10

Gambar 2.3

Tampilan IC ADC 0804

11

Gambar 2.4

Susunan Seven Segmen

11

Gambar 2.5

Konfigurasi Seven Segmen Tipe Common Anoda

12

Gambar 2.6

Konfigurasi Seven Segmen Tipe Common Katoda

12

Gambar 2.7

Bentuk Fisik dan Simbol Relay

13

Gambar 2.8

Software 8051 Editor, Assembler, Simulator (IDE)

19

Gambar 2.9

ISP-Flash Programmer 3.0a

20

Gambar 3.1

Diagram Blok Rangkaian

21

Gambar 3.2

Rangkaian Power Supply (PSA)

23

Gambar 3.3

Rangkaian Mikrokontroler AT89S52

24

Gambar 3.4

Rangkaian Sensor Suhu dan ADC

25

Gambar 3.5

Rangkaian Display Seven Segmen

27

Gambar 3.6

Rangkaian Relay Pengendali Heater

28

Gambar 3.7

Rangkaian Keypad

29

Gambar 3.8

Diagram Alir Pemrograman

32

(10)

ABSTRAK

Pengontrolan suhu secara otomatis pada heater akan memberikan kemudahan dalam

penggunaan alat ini. Pada prinsipnya heater akan menjaga suhu air pada tingkat suhu

yang diinginkan oleh pengguna. Teknik pengolahan data dan spesifikasi

komponen-komponen yang digunakan sangat menentukan kehandalan sistem pengontrolan alat

ini. Dengan memanfaatkan mikrokontroler AT89S52 sebagai otak sistem kerja

(pengolah data), maka secara otomatis akan mengontrol relay untuk

menghidupkan/mematikan heater setelah membandingkan tingkat suhu yang

diinputkan pada keypad dengan tingkat suhu yang dideteksi oleh sensor LM35. Hasil

deteksi sensor LM35 akan diubah oleh ADC menjadi data digital sehingga

mikrokontroler dapat membacanya dan menampilkannya pada display seven segmen.

Pada pengukuran terdapat kesalahan pada pengkonversian suhu oleh sensor LM35

dibandingkan dengan pengukuran termometer. Kesalahan yang terbesar dari hasil

pengujian sebesar 0,9

o
(11)

BAB 1

PENDAHULUAN

1.1

Latar Belakang

Sistem pengendalian merupakan hal yang penting di bidang teknologi dan industri.

Pengendalian secara manual sudah tidak lagi efisien karena akan membutuhkan

waktu. Oleh karena itu diperlukan sistem pengendalian secara otomatis.

(12)

1.2

Rumusan Masalah

Berdasarkan uraian yang terdapat dalam latar belakang di atas, maka dalam proyek ini

akan dibuat sebuah pengontrol suhu heater berbasis AT89S52. Alat ini menggunakan

mikrokontroler AT89S52 sebagai otak dari sistem dan memanfaatkan sensor LM35

untuk mengetahui suhu air.

1.3

Maksud dan Tujuan

Adapun maksud dan tujuan dari penulisan tugas akhir ini adalah :

1.

Merancang alat yang mampu untuk mengontrol dan mengukur suhu heater

berbasis mikrokontroler AT89S52.

2.

Memanfaatkan sensor LM35 sebagai alat pendeteksi suhu, ADC 0804 sebagai

pengubah data analog output dari LM35 menjadi data digital, relay sebagai

saklar untuk menghidupkan atau mematikan heater, serta mikrokontroler

AT89S52 sebagai pusat sistem kerja rangkaian.

(13)

1.4

Batasan Masalah

Penulisan tugas akhir ini dibatasi pada:

1.

Studi cara kerja rangkaian yang meliputi diagram blok dan menguraikan secara

umum fungsi dari masing-masing komponen utama dalam blok tersebut

2.

Penulis menggunakan sensor LM35 sebagai sensor temperature pada heater

ini.

3.

Sebagai otak kerja sistem digunakan mikrokontroler AT89S52, sehingga yang

dibahas hanya yang berhubungan dengan perangkat dan prinsip kerjanya

(hardware dan software) saja.

1.5

Teknik Pengumpulan Data

1.

Dilakukan pengumpulan teori yang berkaitan dengan proyek ini dari

buku-buku perpustakaan dan internet.

2.

Dilakukan perancangan dan perakitan proyek.

3.

Dilakukan pengujian sistem dan kinerja rangkaian.

1.6

Sistematika Penulisan

BAB 1.

PENDAHULUAN

(14)

BAB 2.

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

PERANCANGAN ALAT DAN PROGRAM

Pada bagian ini akan dibahas perancangan dari alat, yaitu diagram

blok dari rangkaian, skematik dari masing-masing rangkaian dan

diagram alir dari program yang akan diisikan ke mikrokontroler

AT89S52.

BAB 4.

ANALISA RANGKAIAN DAN SISTEM KERJA ALAT

Pada bab ini akan dibahas hasil analisa dari rangkaian dan sistem kerja

alat, penjelasan mengenai program-program yang digunakan untuk

mengaktifkan rangkaian, penjelasan mengenai program yang diisikan

ke mikrokontroler AT89S52.

BAB 5.

KESIMPULAN DAN SARAN

(15)

BAB 2

LANDASAN TEORI

2.1 Perangkat Keras

2.1.1 Mikrokontroler AT89S52

Mikrokontroler AT89S52 termasuk kedalam keluarga MCS-51 merupakan suatu

mikrokomputer CMOS 8 bit dengan daya rendah, kemampuan tinggi, memiliki 8

Kbyte Flash Programmable and Erasable Read Only Memory (PEROM). Memori

merupakan bagian yang sangat penting pada mikrokontroler. Mikrokontroler memiliki

dua macam memori yang sifatnya berbeda yaitu:

1.

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.

2.

Random Access Memory (RAM) yang isinya akan hilang begitu IC kehilangan

catu daya, dipakai untuk menyimpan data pada saat program bekerja. RAM

yang dipakai untuk menyimpan data ini disebut memori data.

Ada berbagai jenis ROM. Untuk mikrokontroler dengan program yang sudah

baku dan diproduksi secara massal, program diisikan ke dalam ROM pada saat IC

(16)

menggunakan ROM yang dapat diisi ulang atau Programmable-Eraseable ROM yang

disingkat dengan PEROM. Jenis memori yang dipakai untuk Memori AT89S52

adalah Flash PEROM. Program untuk mengendalikan mikrokontroler diisikan ke

memori itu lewat bantuan alat yang dinamakan sebagai AT89S52 Flash PEROM

Progammer.

Mikrokontroler AT89S52 memerlukan tambahan 3 kapasitor, 1 resistor, 1

kristal dan catu daya 5 volt. Kapasitor 10µF dan resistor 10 Kilo Ohm dipakai untuk

membenuk rangkaian reset. Dengan adanya rangkaian reset ini, AT89S52 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.

Fasilitas yang terdapat dalam mikrokontroler AT89S52 antara lain :

1.

Sesuai dengan produk-produk MCS-51.

2.

Terdapat memori Flash yang terintegrasi dalam sistem. Dapat ditulis ulang

hingga 1000 kali.

3.

Beroperasi pada frekuensi 0 sampai 24 MH.

4.

Memiliki 256 x 8 bit RAM internal.

5.

Terdapat 32 jalur masukan/keluaran terprogram.

6.

Tiga buah 16 bit Timer/Counter.

7.

Delapan sumber interupsi.

8.

Kanal serial terprogram.

(17)

Gambar 2.1 IC Mikrokontroler AT89S52

Konfigurasi dan Deskripsi kaki-kaki mikrokontoler AT89S52 adalah sebagai

berikut :

1.

VCC (Pin 40)

Sebagai supply tegangan.

2.

GND (Pin 20)

Ground.

3.

Port 0 (Pin 39 – Pin 32)

Port 0 adalah port dua arah masukan/keluaran 8 bit saluran terbuka. Sebagai

port keluaran, tiap kaki dapat menerima masukan TTL. Ketika logika 1

dimasukkan ke kaki-kaki port 0, kaki-kaki dapat digunakan sebagai masukan

impedansi tinggi. Port 0 juga dapat diatur sebagai bus alamat/data saat

mengakses program dan data dari memori luar. Pada mode ini port 0 memiliki

(18)

dan mengeluarkan byte kode saat verifikasi. Pull-up eksternal diperlukan saat

memverifikasi program.

4.

Port 1 (Pin 1 – Pin 8)

Port 1 adalah port dua arah masukan/keluaran 8 bit dengan pull-up internal.

Sebagai tambahan, P1.0 dan P1.1 dapat diatur sebagai pewaktu/pencacah-2

eksternal masukan pencacah (P1.0/T2) dan pewaktu/pencacah-2 masukan

pemicu (P1.1/T2EX). Port 1 juga menerima byte-byte alamat saat

pemrograman dan verifikasi Flash.

5.

Port 2 (Pin 21 – Pin 28)

Port 2 adalah port masukan/keluaran dua arah 8 bit dengan pull-up internal.

Port 2 juga menerima bit-bit alamat dan beberapa sinyal kendali saat

pemrograman dan verifikasi Flash.

6.

Port 3 (Pin 10 – Pin 17)

Port 3 adalah port masukan/keluaran dua arah 8 bit dengan pull-up internal.

Port 3 juga menyediakan fasilitas bebagai fungsi khusus dari AT89C51. Port 3

juga menerima beberapa sinyal kendali saat pemrograman dan verifikasi Flash.

Port 3 mempunyai fungsi pin masing-masing, yaitu sebagai berikut :

Bit

Nama

Fungsi Alternatif

P3.0 (pin 10) RXD

Untuk menerima data port serial

P3.1 (pin 11) TXD

Untuk mengirim data port serial

P3.2 (pin 12) INT0

Interrupt eksternal 0

P3.3 (pin 13) INT1

Interrupt eksternal 1

P3.4 (pin 14) T0

Input eksternal pewaktu/pencacah 0

P3.5 (pin 15) T1

Input eksternal pewaktu/pencacah 1

P3.6 (pin 16) WR

Jalur untuk menulis eksternal data memori

(19)

7.

RST (Pin 9)

Merupakan masukan reset (aktif tinggi). Masukan tinggi pada kaki ini selama

dua siklus instruksi mesin akan me-reset perangkat.

8.

ALE/PROG (Pin 30)

Address Latch Enable (ALE) adalah pulsa keluaran untuk mengunci bit rendah

dari alamat saat mengakses memori eksternal. Kaki ini juga digunakan sebagai

masukan pulsa (PROG) saat pemrograman Flash.

9.

PSEN (Pin 29)

Program Store Enable (PSEN) digunakan untuk mengakses memori program

eksternal.

10.

EA/Vpp External Access Enable (Pin 31)

Pada kondisi low, EA akan berfungsi menjalankan program yang ada pada

memori eksternal setelah sistem direset. Jika kondisi high, EA akan berfungsi

menjalankan program yang ada pada memori internal. Pada saat memprogram

Flash, pin ini akan mendapat tegangan 12 V.

11.

XTAL1 (Pin 19)

Masukan inverting (pembalikan) penguat osilator dan masukan untuk operasi

rangkaian clock (denyut) internal.

12.

XTAL2 (Pin 18)

(20)

2.1.2 Sensor Suhu LM 35

IC LM 35 sebagai sensor suhu yang teliti dan terkemas dalam bentuk Integrated

Circuit (IC), dimana output tegangan keluaran sangat linear berpadanan dengan

perubahan suhu. Sensor ini berfungsi sebagai pengubah besaran fisis suhu ke besaran

tegangan yang memiliki koefisien sebesar 10 mV/

o

C yang berarti bahwa pada

kenaikan suhu 1

o

1.

Kalibrasi dalam satuan derajat celcius.

C maka akan terjadi kenaikan tegangan sebesar 10 mV.

a. IC LM 35

b. Rangkaian LM 35

Gambar 2.2 Sensor LM 35

Adapun keistimewaan dari IC LM 35 adalah :

2.

Linieritas 10 mV/

o

3.

Akurasi 0,5

C.

o

4.

Range -55

C pada suhu ruang.

o

C – 150

o

5.

Dioperasikan pada catu daya 4 V – 30 V.

C.

6.

Arus yang mengalir kurang dari 60 μA.

2.1.3 Analog to Digital Converter (ADC 0804)

Analog to Digital Converter (ADC) adalah sebuah piranti yang dirancang untuk

mengubah sinyal-sinyal analog menjadi bentuk sinyal digital. Tampilan IC ADC 0804

(21)

Gambar 2.3 Tampilan IC ADC 0804

ADC yang digunakan adalah ADC 0804. ADC ini akan mengubah tegangan

yang merupakan keluaran dari sensor LM 35 menjadi 8 bit data biner. Data keluaran

dari ADC 0804 ini akan dikirim ke mikrokontroler dan diolah untuk kemudian

ditampilkan pada seven segmen.

2.1.4 Seven Segmen

Seven segmen merupakan cacah segmen minimum yang diperlukan untuk

menampilkan angka 0 sampai 9. Sejumlah karakter alfabet juga dapat disajikan

menggunakan tampilan seven segmen ini. Secara khusus, karakter heksadesimal dapat

ditampilkan. Seven segmen terdiri dari LED-LED yang disusun sedemikian rupa yang

jika dinyalakan akan membentuk suatu angka tertentu. Seven segmen terdiri dari 7

buah segmen dan ditambah 1 buah segmen yang berfungsi sebagai desimal point

seperti yang ditunjukkan pada gambar di bawah ini :

(22)

Seven segmen terdiri dari 2 tipe yaitu :

1.

Seven Segmen tipe Common Anoda

Pada seven segmen tipe ini, anoda dari setiap LED dihubungkan menjadi satu

kemudian dihubungkan ke sumber tegangan positif dan katoda dari

masing-masing LED berfungsi sebagai input pada seven segmen.

Gambar 2.5 Konfigurasi Seven Segmen Tipe Common Anoda

Pada gambar di atas, maka untuk menyalakan salah satu segmen, maka katodanya

diberi tegangan 0V atau berlogika low.

2.

Seven Segmen tipe Common Katoda

Pada seven segmen tipe ini, katoda dari setiap LED dihubungkan menjadi satuu

kemudian dihubungkan ke ground dan anoda dari masing-masing LED berfungsi

sebagai input dari seven segmen.

Gambar 2.6 Konfigurasi Seven Segmen Tipe Common Katoda

Pada gambar di atas, maka untuk menyalakan salah satu segmen, maka anodanya

(23)

2.1.5 Relay

Relay merupakan rangkaian yang bersifat elektronis sederhana dan tersusun oleh

saklar, medan elektromagnet (kawat koil), dan poros besi. Relay berfungsi untuk

menghubungkan atau memutus aliran listrik yang dikontrol dengan memberikan

tegangan dan arus tertentu pada koilnya. Rangkaian relay akan bekerja jika mendapat

catu. 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 berpindah posisi ke kutub lain atau terlepas dari kutub

asalnya. Dan relay akan kembali ke posisi 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 keadaan

yang diinginkan dalam suatu rangkaian. Bentuk fisik dan simbol relay dapat dilihat

pada gambar berikut :

a. Bentuk Fisik Relay

b. Simbol Relay

(24)

Menurut kerjanya relay dapat dibedakan :

1.

Normaly Open, saklar akan tertutup bila dialiri arus.

2.

Normaly Close, saklar akan terbuka bila dialiri arus.

3.

Change Over (CO), relay ini mempunyai saklar tunggal yang normalnya

tertutup yang lama.

Analogi rangkaian relay yang digunakan pada proyek ini adalah saat basis

transistor dialiri arus, maka transistor dalam keadaan tertutup yang dapat

meghubungkan arus dari kolektor ke emiter yang mengakibatkan relay terhubung.

Sedangkan fungsi dioda adalah untuk melindungi transistor dari tegangan induksi

berlebih, dimana tegangan ini dapat merusak transistor. Jika pada basis tidak ada arus

maju, transistor terbuka sehingga arus tidak mengalir dari kolektor ke emiter. Oleh

karena itu relay tidak bekerja karena tidak ada arus yang mengalir pada gulungan

kawat.

2.2 Perangkat Lunak

2.2.1 Bahasa Assembly MCS-51

Bahasa yang digunakan untuk mengisi program ke IC mikrikontroler AT89S52 adalah

bahasa assembly MCS-51. Jumlah instruksi pada bahasa ini hanya ada 51 instruksi.

Dari 51 instruksi , yang sering digunakan hanya 10 instruksi. Instruksi-instruksi

tersebut antara lain :

(25)

Perintah ini merupakan perintah untuk mengisikan nilai ke alamat atau register

tertentu yang dapat secara langsung atau tidak langsung.

Contoh pengisian 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 secara tidak langsung :

mov 20h,#80h

……….

……….

mov R0,20h

Perintah di atas berarti : isikan nilai yang terdapat pada alamat 20 Heksadesimal

ke register 0 (R0). Tanpa tanda # sebelum bilangan menunjukkan bahwa bilangan

tersebut adalah alamat.

2.

Instruksi DJNZ

Decreament Jump if Not Zero (DJNZ) ini merupakan perintah untuk mengurangi

nilai register tertentu dengan 1 dan lompat jika hasil pengurangannya belum nol.

Contoh :

mov R0,#80h

Loop:

……….

……….

djnz R0,Loop

……….

R0 – 1, jika belum 0 lompat ke loop, jika R0 = 0, program akan meneruskan ke

(26)

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

………..

Ret

5.

Instruksi JMP (Jump)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu.

Contoh :

Loop:

……….

……….

(27)

6.

Instruksi JB (Jump if bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang

dimaksud berlogika high (1).

Contoh :

Loop:

jb P1.0,Loop

……….

7.

Instruksi JNB (Jump if Not bit)

Instruksi ini merupakan perintah untuk lompat ke alamat tertentu, jika pin yang

dimaksud berlogika low (0).

Contoh :

Loop:

jnb P1.0,Loop

……….

8.

Instruksi CJNE (Compare Jump if Not Equal)

Instruksi ini berfungsi 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

(28)

9.

Instruksi DEC (Decrement)

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

(29)

2.2.2 Software 8051 Editor, Assembler, Simulator (IDE)

Instruksi-instruksi yang berupa bahasa assembly tersebut dituliskan pada sebuah

editor, yaitu 8051 Editor, Assembler, Simulator (IDE). Kemudian instruksi-instruksi

(program-program) tersebut akan di-save dan kemudian di-Assemble (di-Compile).

Pada saat di-Assemble maka akan tampil pesan peringatan dan kesalahan. Jika masih

ada peringatan tersebut, itu berarti masih ada kesalahan dalam penulisan instruksi atau

ada nama subrutin yang sama. Dengan demikian kesalahan-kesalahan tersebut harus

diperbaiki terlebih dahulu. Tampilannya dapat kita lihat pada gambar di bawah ini :

Gambar 2.8 Software 8051 Editor, Assembler, Simulator (IDE)

Software 8051IDE ini berfungsi untuk merubah program yang kita tuliskan ke

dalam bilangan heksadesimal, dimana proses perubahan ini terjadi pada saat kita

meng-Assemble program tersebut. Bilangan heksadesimal hasil proses inilah yang

(30)

2.2.3 Software Downloader

Untuk mengirimkan bilangan-bilangan heksadesimal tersebut ke mikrokontroler

digunakan software ISP–Flash Programmer 3.0a sehingga mikrokontroler dapat

menyimpan data. ISP-Flash Programmmer 3.0a dapat diperoleh dengan

[image:30.595.189.444.238.482.2]

mendownload dari internet. Tampilannya dapat kita lihat gambar di bawah ini :

Gambar 2.9 ISP-Flash Programmer 3.0a

Cara menggunakannya adalah dengan meng-klik Open File untuk mengambil

file heksadesimal dari hasil kompilasi 8051IDE, kemudian meng-klik Write untuk

(31)

BAB 3

PERANCANGAN ALAT

3.1 Diagram Blok Rangkaian

Diagram blok merupakan gambaran dasar dari rangkaian sistem yang akan dirancang.

Adapun diagram blok dari sistem yang dirancang adalah seperti yang diperlihatkan

pada berikut ini:

Gambar 3.1. Diagram Blok Rangkaian

Sensor suhu (LM35) yang berfungsi untuk mengukur suhu air terhubung ke

ADC0804. Output dari ADC 0804 yang berfungsi untuk mengubah output sensor suhu

yang berupa data analog menjadi data digital 8 bit yang terhubung ke mikrokontroler

AT89S52 melalui port 2. Output dari keypad yang berfungsi sebagai input data masuk

ke mikrokontroler AT89S52 melalui Port 1. Display yang berfungsi untuk

M

ikr

o

k

on

tr

ole

r

AT

8

9S

52

Sensor

LM 35

ADC

0804

Display

Keypad

4x4

Heater

Relay

P0.0

Port 1

Port 2 P3.0 dan

(32)

menampilkan suhu terhubung ke mikrokontroler AT89S52 melalui P3.0 dan P3.1.

Heater yang berfungsi untuk menaikkan suhu air terhubung ke relay. Relay yang

berfungsi sebagai saklar untuk menghidupkan dan mematikan heater dikontrol oleh

mikrokontroler AT89S52 melalui P0.0.

Sistem Kerja Rangkaian

Suhu air akan dideteksi oleh sensor suhu (LM 35). Hasil deteksi sensor yang berupa

data analog akan dikirim ke ADC0804 untuk diubah menjadi data digital. Keluaran

dari ADC akan diterima oleh mikrokontroler AT89S52. Dari data yang sudah diterima

tersebut, maka mikrokontroler akan mengetahui suhu air dan akan menampilkannya

pada display. Mikrokontroler juga akan membandingkan nilai suhu tersebut dengan

data yang diinputkan pada keypad untuk kemudian memerintahkan relay yang

berfungsi sebagai saklar untuk menghidupkan atau mematikan heater. Heater

berfungsi untuk menaikkan suhu air sampai dengan yang diinputkan oleh pengguna

(33)

3.2 Perancangan Power Supply (PSA)

Rangkaian ini berfungsi untuk mensupply 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 mensupply tegangan ke seluruh rangkaian,

sedangkan keluaran 12 volt digunakan untuk mensuply tegangan ke relay dan ADC.

[image:33.595.142.484.259.451.2]

Rangkaian power supply 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

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

(34)

3.3 Rangkaian Mikrokontroler AT89S52

Rangkaian ini berfungsi sebagai pusat kendali dari seluruh system yang ada. Kompoen

utama dari rangkaian ini adalah IC mikrokontroler AT89S52. Pada IC inilah semua

program diisikan, sehingga rangkaian dapat berjalan sesuai dengan yang dikehendaki.

[image:34.595.170.470.232.447.2]

Rangkaian mikrokontroler ditunjukkan pada gambar berikut ini:

Gambar 3.3 Rangkaian Mikrokontroller AT89S52

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

(35)

ini berfungsi agar program pada mikrokontroler dijalankan beberapa saat setelah

power aktif. Lamanya waktu antara aktifnya power pada IC mikrokontroler dan

aktifnya program adalah sebesar perkalian antara kapasitor dan resistor tersebut. Jika

dihitung maka lama waktunya adalah :

t = R x C = 10 K

x 10

µ

F = 0,1 detik

Jadi 0,1 detik setelah power aktif pada IC kemudian program aktif.

3.4

Rangkaian Sensor Suhu dan ADC (Analog to Digital Converter)

Untuk mengetahui suhu dalam air, digunakan LM35 yang merupakan sensor suhu.

Output dari LM35 ini dimasukkan sebagai input ADC. Rangkaiannya seperti dibawah

[image:35.595.129.485.413.625.2]

ini:

Gambar 3.4 Rangkaian Sensor Suhu dan ADC

Agar output yang dihasilkan oleh ADC bagus, maka tegangan refrensi ADC

harus benar-benar stabil, karena perubahan tegangan refrensi pada ADC akan

(36)

masukan 12 volt dimasukkan ke dalam IC regulator tegangan 9 volt ( 7809) agar

keluarannya menjadi 9 volt, kemudian keluaran 9 volt ini dimasukkan kedalam

regulator tegangan 5 volt (7805), sehingga keluarannya menjadi 5 volt. Tegangan 5

volt inilah yang menjadi tegangan refrensi ADC. Dengan demikian walaupun

tegangan masukan turun setengahnya, yaitu dari 12 volt menjadi 6 volt, tegangan

refrensi ADC tetap 5 volt.

Output dari LM35 diinputkan ke pin 6 ADC yang merupakan pin input, ini

berarti setiap perubahan tegangan yang terjadi pada input ini maka akan terjadi

perubahan pada output ADC. Keluaran dari rangkaian sensor suhu dihubungkan ke

rangkaian ADC untuk diubah datanya menjadi data biner agar dapat dikenali oleh

mikrokontroler AT89S52. Untuk mendapatkan Vref/2 digunakan dioda zener 5,1 volt,

kemudian outputnya dihubungkan ke rangkaian pembagi tegangan. Output dari ADC

dihubungkan ke

Port 2

mikrokontroler AT89S52, sehingga setiap perubahan output

ADC yang disebabkan oleh perubahan inputnya (sensor temperatur LM 35) akan

diketahui oleh mikrokontoler.

3.5 Rangkaian Display Seven Segmen

Rangkaian display seven segmen berfungsi untuk menampilkan nilai dari hasil

pengukuran temperatur. Display ini menggunakan 3 buah seven segmen common

anoda 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

(37)

pengiriman data serial yang disediakan oleh mikrokontroler AT89S52. Sedangkan

P3.1 merupakan sinyal clock untuk pengiriman data serial.

[image:37.595.136.484.178.366.2]

Rangkaian display seven segmen ditunjukkan pada gambar berikut ini :

Gambar 3.5 Rangkaian Display Seven Segmen

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 tipe common anoda (aktip low), ini

berarti segmen akan menyala jika diberi data low (0) dan segmen akan mati jika diberi

data high (1).

3.6

Rangkaian Relay

Rangkaian relay (pengendali heater) pada alat ini berfungsi untuk memutuskan atau

menghubungkan sumber tegangan 12 volt dengan heater. Gambar rangkaian

(38)
[image:38.595.182.449.89.267.2]

Gambar 3.6 Rangkaian Relay Pengendali Heater

Output dari relay yang satu dihubungkan ke sumber tegangan 12 volt dan yang

lainnya dihubungkan ke heater. 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 P0.0. Pada saat logika pada P0.0 adalah tinggi (high), maka transistor

mendapat tegangan bias dari kaki basis. Dengan adanya tegangan bias ini maka

transistor akan aktif (saturation), sehingga adanya arus yang mengalir ke kumparan

relay. Hal ini akan menyebabkan saklar pada relay menjadi tertutup, sehingga

hubungan sumber tegangan 12 volt ke heater akan terhubung dan heater akan

menyala. Begitu juga sebaliknya pada saat logika pada P0.0 adalah rendah (low) maka

relay tidak dialiri arus. Hal ini akan menyebabkan saklar pada relay terbuka/terputus,

sehingga sumber tegangan 12 volt dengan heater akan terputus dan heater tidak

(39)

3.7 Perancangan rangkaian keypad

Rangkaian Keypad berfungsi sebagai tombol untuk memasukkan pin. Kemudian data

yang diketikkan pada keypad akan diterima oleh mikrokontroler AT89S52 untuk

kemudian diolah dan ditampilkan pada display seven segmen. Rangkaian keypad

ditunjukkan pada gambar berikut ini :

Tbl 1

Tbl 2

Tbl 3

Tbl 4

P2.0

P2.1

P2.2

P2.3

P2.4

P2.5

P2.6

[image:39.595.138.473.234.470.2]

P2.7

Gambar 3.7 Rangkaian keypad

Rangkaian keypad yang digunakan adalah rangkaian keypad yang telah ada

dipasaran. Keypad ini terdiri dari 16 tombol yang hubungan antara tombol-tombolnya

seperti tampak pada gambar di atas. Rangkaian ini dihubungkan ke

port 1

(40)

3.8 Diagram Alir Pemrograman

Program diawali dengan start yang berarti rangkaian diaktifkan. Kemudian program

akan membaca nilai ADC dan menampilkannya pada display. Selanjutnya program

akan melihat apakah ada penekanan pada tombol bintang (*) atau tidak. Jika tidak ada

penekanan pada tombol bintang, maka program akan kembali membaca ADC dan

menampilkannya pada display. Namun jika ada penekanan pada tombol bintang (*),

maka program akan mengosongkan tampilan pada display.

Selanjutnya program akan membaca masukan yang diinput melalui keypad,

kemudian program akan menampilkan nilai masukan pada display. Kemudian

program akan melihat apakah tombol “D” ditekan. Tombol D merupakan tombol

reset. Jika tombol “D” tidak ditekan, maka program akan melihat apakah tombol “A”

ditekan. Namun jika tombol “D” ditekan, maka program akan kembali mengosongkan

display dan kembali menerima input dari keypad.

Tombol “A” merupakan tombol enter. Jika tombol “A” tidak ditekan, maka

program akan terus menampilkan nilai yang diinputkan dari keypad. Jika tombol “A”

ditekan, maka program akan menyimpan nilai masukan ke alamat 63H, kemudian

program akan kembali membaca nilai ADC dan menampilkannya pada display.

Selanjutnya program akan membandingkan nilai ADC dengan nilai masukan

yang diinput dari keypad (Yang ada pada alamat 63H). Jika nilai ADC sama dengan

nilai pada alamat 63h, maka program akan mematikan heater dan kembali membaca

ADC dan menampilkan hasil pembacaannya ke display. Jika nilai ADC lebih kecil

(41)

membaca ADC dan menampilkan hasil pembacaannya ke display. Jika nilai ADC

lebih besar dari nilai pada alamat 63h, maka program akan mematikan heater dan

kembali membaca ADC dan menampilkan hasil pembacaannya ke display.

Selain membandingkan, program juga melihat apakah tombol “C”. Tombol

“C” merupakan tombol untuk menampilkan nilai yang ada pada alamat 63H. Jika

tombol “C” ini ditekan, maka program akan menampilkan nilai yanga ada pada alamat

63h ke display, selanjutnya program akan melihat apakan ada penekanan pada tombol

“B”. Jika tombol “B” ditekan, maka program akan kembali membaca ADC,

menampilkalnya pada display kemudian membandingkannya. Namun jika tombol “B”

tidak ditekan, maka program akan melihat apakah ada penekanan pada tombol “#”.

Jika tombol “#” ditekan, maka program akan kembali ke awal untuk mengambil

(42)

Baca data ADC Dan Tampilkan pada display Apakan tombol Bintang (*) Ditekan ? Start Tidak Kosongkan Display Baca Nilai Masukan dan tampilkan pada display Ya Apakah Tombol D ditekan ? Apakan Tombol A ditekan Tidak Ya Tidak Simpan Data Masukan pada alamat 63h Apakah Nilai ADC = Nilai Pada Alamat

63h ?

Baca data ADC Dan Tampilkan pada display Ya Apakah Tombol C ditekan ? Apakah Nilai

ADC < Nilai Pada Alamat

63h ?

Apakah Nilai ADC > Nilai Pada Alamat

63h ?

Tidak Tidak Tidak

Tidak

Matikan Heater Hidupkan Heater Matikan Heater Tampilkan nilai yang ada pada alamat 63h ke

display

Ya Ya Ya Ya

Apakah Tombol B ditekan ?

Apakah Tombol Pagar

(#) ditekan ? Tidak

Tidak Ya

[image:42.595.117.519.73.728.2]

Ya

(43)

BAB 4

PENGUJIAN DAN ANALISA SISTEM

4.1 Pengujian Rangkaian Power Supply (PSA)

Pengujian pada bagian rangkaian power supply ini dapat dilakukan dengan mengukur

tegangan keluaran dari rangkaian ini dengan menggunakan volt meter digital. Pada

power supply ini terdapat dua keluaran. Dari hasil pengujian diperoleh tegangan

keluaran pertama sebesar + 5,1 volt. Tegangan ini dipergunakan untuk mensupply

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 11,9 volt.

Tegangan ini digunakan untuk mensupplay tegangan ke relay, dimana relay dapat

aktif pada tegangan 9 sampai 15 volt, sehingga tegangan ini sudah memenuhi syarat

(44)

4.2 Pengujian Rangkaian Mikrokontroler 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 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

selama ± 0,13 detik kemudian mematikannya selama ± 0,13 detik secara terus

menerus. Perintah Setb P0.0 akan menjadikan P0.0 berlogika high yang menyebabkan

LED mati. Acall tunda akan menyebabkan LED ini mati selama beberapa saat.

Perintah Clr P0.0 akan menjadikan P0.0 berlogika low yang menyebabkan LED akan

nyala. Perintah Acall tunda akan menyebabkan LED ini nyala selama beberapa saat.

Perintah Sjmp Loop akan menjadikan program tersebut berulang, sehingga akan

tampak LED tersebut tampak berkedip.

Kristal yang digunakan adalah kristal 12 MHz, dan 1 siklus mesin

menghasilkan 12 clock (denyut pulsa). Dengan demikian lamanya waktu yang

dibutuhkan 1 siklus mesin adalah =

12

1

(45)

Mnemonic

Siklus

Waktu Eksekusi

MOV Rn,#data

2

2 x 1

μd =

2

μd

DJNZ

2

2 x 1

μd =

2

μd

RET

1

1 x 1

μd =

1

μd

Tunda:

mov r7,#255 Tnd: mov r6,#255

djnz r6,$

255 x 2 = 510 x 255 = 130.050

djnz r7,loop3 ret

Jadi waktu yang dibutuhkan untuk mengerjakan program di atas adalah 130.050

mikrodetik atau 0,130.050

mikrodetik dan dapat dibulatkan menjadi 0,13 detik.

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.

4.3 Pengujian Rangkaian Suhu dan ADC

Pengujian pada bagian rangkaian ADC ini dapat dilakukan dengan menghubungkan

rangkaian ADC ini dengan rangkaian mikrokontroler. Selanjutnya rangkaian

mikrokontroler dihubungkan dengan rangkaian display seven segmen. Mikrokontroler

diisi dengan program untuk membaca nilai yang ada pada rangkaian ADC, kemudian

hasil pembacaannya ditampilkan pada display seven segmen. Programnya adalah

(46)

mov a,p2 mov b,#100 div ab mov 70h,a mov a,b mov b,#10 div ab mov 71h,a mov 72h,b

Dengan program di atas, maka akan tampil nilai temperatur yang dideteksi

oleh sensor temperatur. Dengan demikian maka rangkaian ini telah berfungsi dengan

baik. Dari hasil pengujian didapatkan data sebagai berikut:

Suhu terukur

Output LM35

Output ADC

Tampilan Display

27 derajat

28 derajat

29 derajat

30 derajat

31 derajat

32 derajat

33 derajat

270 miliVolt

280 miliVolt

290 miliVolt

300 miliVolt

310 miliVolt

320 miliVolt

330 miliVolt

00011011

00011100

00011101

00011110

00011111

00100000

00100001

027

028

029

030

031

032

033

4.4 Pengujian Rangkaian Display Seven Segmen

Pengujian pada rangkaian ini dapat dilakukan dengan menghubungkan rangkaian ini

dengan rangkaian mikrokontroler, kemudian memberikan data tertentu pada port serial

dari mikrokontroler. Seven segmen yang digunakan adalah common anoda, dimana

semen akan menyala jika diberi logika 0 dan sebaliknya segmen akan mati jika diberi

logika 1.

Dari hasil pengujian diperoleh data yang harus dikirimkan ke port serial untuk

(47)

Angka

Data yang dikirim

1

0EDH

2

19H

3

89H

4

0C5H

5

83H

6

03H

7

0E9H

8

01h

9

81H

0

21H

Program yang diisikan pada mikrokontroler untuk menampilkan nilai-nilai

tersebut adalah sebagai berikut:

bil0 equ 21h bil1 equ 0edh bil2 equ 19h bil3 equ 89h bil4 equ 0c5h bil5 equ 83h bil6 equ 03h bil7 equ 0e9h bil8 equ 01h bil9 equ 81h Loop:

mov sbuf,#bil0 Jnb ti,$

Clr ti sjmp loop

Program di atas akan menampilkan angka 0 pada semua seven segmen.

Sedangkan untuk menampilkan 3 digit angka yang berbeda pada seven segmen adalah

dengan mengirimkan ke 3 data angka yang akan ditampilkan pada seven segmen.

(48)

Loop:

mov sbuf,#bil1 Jnb ti,$

Clr ti

mov sbuf,#bil2 Jnb ti,$

Clr ti

mov sbuf,#bil3 Jnb ti,$

Clr ti sjmp loop

Program di atas akan menampilkan angka 1 pada seven segmen ketiga, angka 2 pada

seven segmen kedua dan angka 3 pada seven segmen pertama.

4.5 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 aktip jika pada basis diberi tegangan > 0,7 volt dan tidak aktip

jika pada basis diberi tegangan < 0,7 volt. Aktifnya transistor akan mengaktifkan

relay. Pada alat ini relay digunakan untuk menghubungkan heater ke tegangan PLN,

dimana hubungan yang digunakan adalah normally open, dengan demikian jika relay

aktif maka hubungan heater ke tegangan PLN akan terhubung, sehingga heater hidup,

sebaliknya jika relay tidak aktif, maka heater dengan tegangan PLN akan terputus,

sehingga heater mati.

Pengujian dilakukan dengan memberikan tegangan 5 volt pada basis transistor,

jika relay aktif dan hubungan heater dengan tegangan PLN terhubung, sehingga heater

(49)

Pengujian selanjutnya dilakukan dengan menghubungkan input rangkaian ini

ke mikrokontroler pada

P0.1

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, sehingga relay juga menjadi aktif dan hubungan heater dengan tegangan PLN

terhubung, sehingga heater hidup. 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 hubungan heater dengan tegangan

PLN terputus, sehingga heater mati.

4.6 Pengujian Rangkaian Keypad

Pengujian rangkaian tombol ini dapat dilakukan dengan menghubungkan rangkaian

ini dengan mikrokontroler AT89S52, kemudian memberikan program sederhana

untuk mengetahui baik/tidaknya rangkaian ini. Rangkaian dihubungkan ke port 2.

Untuk Mengecek penekanan pada 4 tombol yang paling atas, maka data awal yang

dimasukkan ke

port 2

adalah

FEH

. Dengan demikian maka pin P2.0 akan mendapat

(50)

Tbl 1

Tbl 2

Tbl 3 Tbl 4

P2.0 0

P2.1 1

P2.2 1

P2.3 1

P2.4 1

P2.5 1

P2.6 1

P2.7 1

Jika terjadi penekanan pada Tbl 1, maka P2.0 akan terhubung ke P2.4 yang

menyebabkan P2.4 juga akan mendapatkan logika low (0). Seperti berikut :

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

1

1

1

0

1

1

1

0

Data pada port 2 akan berubah menjadi

EEH.

Data inilah sebagai indikasi adanya

penekanan pada tombol 1.

Jika terjadi penekanan pada Tbl 2, maka P2.0 akan terhubung ke P2.5 yang

menyebabkan P2.5 juga akan mendapatkan logika low (0). Seperti berikut:

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0

1

1

0

1

1

1

1

0

Data pada port 2 akan berubah menjadi

DEH.

Data inilah sebagai indikasi adanya

penekanan pada tombol 2. Demikian seterusnya untuk tombol-tombil yang lain.

Program yang diisikan pada mikrokontroler untuk menguji rangkaian keypad

(51)

Tombol1: Mov P1,#0FEH Mov a,P0 Cjne a,#0EEH,Tombol2 Setb P0.0 Sjmp Tombol1 Tombol2: Cjne a,#0DEH,Tombol1 Clr P0.0 Sjmp Tombol1

Program diatas akan menunggu penekanan pada tombol 1 dan tombol 2, jika

tombol 1 ditekan, maka program akan menyalakan LED yang ada pada P3.7. Jika

tombol 2 ditekan, maka program akan mematikan LED yang ada pada P3.7.

Jika rangkaian telah berjalan sesuai program yang diberikan, maka rangkaian

telah berfungsi dengan baik.

4.7 Pengujian Alat

Data pengujian alat

Tegangan

keluaran

LM35

(mV)

Konversi tegangan

Keluaran LM35

Ke suhu

(

o

C)

Suhu

Termometer

(

o

C)

Perbedaan

Pengukuran LM35

dengan

Termometer (

o

C)

274

27,4

28

0,6

308

30,8

31

0,2

333

33,3

34

0,7

369

36,9

37

0,1

395

39,5

40

0,5

422

42,2

43

0,8

451

45,1

46

0,9

483

48,3

49

0,7

513

51,3

52

0,7

544

54,4

55

0,6

572

57,2

58

0,8

606

60,6

61

0,4

(52)

Grafik Hubungan Tegangan Keluaran LM35 dengan Suhu (diukur dengan

Termometer)

Gambar 4.1 Grafik Tegangan – vs - Suhu

Dari grafik di atas dapat disimpulkan bahwa dengan semakin tinggi suhu yang diukur

[image:52.595.158.468.159.408.2]

oleh termometer, maka tegangan keluaran sensor LM35 juga semakin besar.

Grafik V - vs - T

0

100

200

300

400

500

600

700

28 31 34 37 40 43 46 49 52 55 58 61 64

T (Derajat Celcius)

V

(

m

ili V

o

lt

(53)

4.8 Program Pengontrol Suhu Heater

;====initialisasi display====;

bil0 equ 21h bil1 equ 0edh bil2 equ 19h bil3 equ 89h bil4 equ 0c5h bil5 equ 83h bil6 equ 3h bil7 equ 0e9h bil8 equ 01h bil9 equ 81h Kosong equ 0ffh

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

Keypad bit P1 ; Keypad pada alamat bit P1

Saklar bit P0.0 ; Saklar pada alamat bit P0.0

Intrupt bit P3.4 ; Intrupt pada alamat bit P3.4

ADC bit P2 ; ADC pada alamat bit P2

;==mulai==;

Clr Saklar ; Aktifkan logika 0 (low) pada bit

P0.0

clr intrupt ; Kirim logika 0 (low) data sensor

acall tadc ; Memanggil rutin tadc

setb intrupt ; Kirim logika 1 (high) sinyal

sensor

nop ; Program berhenti sejenak

Cek_Suhu: ; Rutin untuk mengecek suhu

jb intrupt,$ ; Cek data sensor

acall tadc ; Memanggil rutin tunda adc

mov a,p2 ; Isikan ke alamat a nilai yang ada

pada alamat p2

mov b,#3 ; Isikan ke alamat b nilai 3

subb a,b ; Kurangkan nilai yang ada pada

alamat a dengan nilai yang ada pada alamt b, hasilnya disimpan pada alamat a

mov 68h,a ; Isikan ke alamat 68h nilai yang

ada pada alamat a

mov b,#100 ; Isikan ke alamat b nilai 100

div ab ; Dibagikan nilai yang ada pada

alamat a dengan nilai yang ada pada alamat b, sisa pembagian disimpan di alamat a

mov 70h,a ; Isikan ke alamat 70h nilai yang

ada pada alamat a

mov a,b ; Isikan ke alamat a nilai yang ada

pada alamat b

mov b,#10 ; Isikan ke alamat b nilai 10

div ab ; Bagikan nilai yang ada pada alamat

(54)

b, sisa pembagian disimpan di alamat a

mov 71h,a ; Isikan ke alamat 71h nilai yang

ada pada alamat a

mov 72h,b ; Isikan ke alamat 72h nilai yang

ada pada alamat b

mov r0,70h ; Isikan ke register 0 nilai yang

ada pada alamat 70h

acall transfer ; Memanggil rutin transfer

mov 73h,r1 ; Isikan ke alamat 73h nilai yang

ada pada register 1

mov r0,71h ; Isikan ke alamat register 0 nilai

yang ada pada alamat 71h

acall transfer ; Memanggil rutin transfer

mov 74h,r1 ; Isikan ke alamat 74h nilai yang

ada pada register 1

mov r0,72h ; Isikan ke alamat register 0 nilai

yang ada pada alamat 72h

acall transfer ; Memanggil rutin transfer

mov 75h,r1 ; Isikan ke alamat 75h nilai yang

ada pada register 1

acall kirim ; Memanggil rutin kirim sehingga

tampil nilai pada display

;====cek tombol setting====;

Tbl_Bintang: ; Rutin untuk mengecek penekanan

tombol bintang

mov p1,#0efh ; Isikan ke alamat bit p1 nilai 0ef

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (a = 0efh)

cjne a,#0e7h,Cek_Suhu ; Bandingkan nilai yang ada pada

alamat a dengan nilai 0e7 heksadesimal, jika tidak sama maka program akan melompat ke rutin Cek_Suhu, dan jika sama maka program akan lanjut ke rutin Recek_Bintang

Recek_Bintang: ; Rutin untuk mengecek ulang

penekanan tombol bintang

mov p1,#0efh ; Isikan ke alamat bit p1 nilai 0ef

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0efh)

cjne a,#0e7h,Recek_Bintang ; Bandingkan nilai yang ada pada alamat a (0efh) dengan nilai 0e7h, jika tidak sama maka program akan melompat ke rutin Recek_Bintang, dan jika sama maka program akan lanjut ke rutin Utama

Utama:

Clr Saklar ; Aktifkan logika 0 (low) pada bit

P0.0

(55)

mov sbuf,#Kosong ; Isikan ke sbuf nilai 0ff heksadesimal (sbuf = serial buffer

merupakan fungsi khusus mikrokontroler yang secara otomatis

mengirim data menuju P3.0 dan P3.1)

jnb ti,$ ; Kirim data sampai habis

clr ti ; Kirim data 0 (low) sampai peak to

peak

mov sbuf,#Kosong ; Isikan ke sbuf nilai 0ff

heksadesimal (sbuf = serial buffer

merupakan fungsi khusus mikrokontroler yang secara otomatis

mengirim data menuju P3.0 dan P3.1)

jnb ti,$ ; Kirim data sampai habis

clr ti ; Kirim data 0 (low) sampai peak to

peak

mov sbuf,#Kosong ; Isikan ke sbuf nilai 0ff

heksadesimal (sbuf = serial buffer

merupakan fungsi khusus mikrokontroler yang secara otomatis

mengirim data menuju P3.0 dan P3.1)

jnb ti,$ ; Kirim data sampai habis

clr ti ; Kirim data 0 (low) sampai peak to

peak

;===cek penekanan seluruh tombol keypad===;

tbl_Satu: ; Rutin untuk mengecek penekanan

tombol satu

mov p1,#7fh ; Isikan ke alamat bit p1 nilai 7f

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 7fh)

cjne a,#77h,Tbl_Nol ; Bandingkan nilai yang ada pada

alamat a (7fh) dengan nilai 77h, jika tidak sama maka program akan melompat ke rutin Tbl_Nol, dan jika sama maka program akan lanjut ke instruksi berikut

mov 73h,#bil1 ; Isikan ke alamat 73h nilai 0ed

heksadesimal

mov 70h,#1 ; Isikan ke alamat 70h nilai 1

acall tampil ; Memanggil rutin tampil sehingga

tampil angka 1 pada display

Recek_tbl_Satu: ; Rutin untuk mengecek ulang

penekanan tombol satu

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat p1 (sehingga a = 7fh) cjne a,#77h,Recek_tbl_Satu ; Bandingkan nilai yang ada pada

alamat a (7fh) dengan nilai 77h, jika tidak sama maka program akan melompat ke rutin Recek_tbl_satu, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu1 ; Melompat ke rutin Tbl_Satu1

Tbl_Nol: ; Rutin untuk mengecek penekanan

(56)

mov p1,#0efh ; Isikan ke alamat p1 nilai 0ef heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat p1 (sehingga a = 0efh)

cjne a,#0ebh,Tbl_Satu ; Bandingkan nilai yang ada pada

alamat a (0efh) dengan nilai 0ebh, jika tidak sama maka program akan melompat ke rutin Tbl_Satu, dan jika sama maka program akan lanjut ke instruksi berikut

mov 73h,#bil0 ; Isikan ke alamat 73h nilai 21

heksadesimal

mov 70h,#0 ; Isikan ke alamat 70h nilai 0

acall tampil ; Memanggil rutin tampil sehingga

tampil angka 0 pada display

Recek_tbl_Nol: ; Rutin untuk mengecek ulang

penekanan tombol nol

mov p1,#0efh ; Isikan ke alamat bit p1 nilai 0ef

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0efh)

cjne a,#0ebh,Recek_tbl_Nol ; Bandingkan nilai yang ada pada alamat a (0efh) dengan nilai 0ebh, jika tidak sama maka program akan melompat ke rutin Recek_Tbl_Nol, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu1 ; Melompat ke rutin Tbl_Satu1

tampil: ; Rutin tampil

mov sbuf,73h ; Isikan ke sbuf nilai yang ada pada

alamat 73h

jnb ti,$ ; Kirim data sampai habis

clr ti ; Kirim data 0 (low) sampai peak to

peak

mov sbuf,#Kosong ; Isikan ke sbuf nilai 0ff

heksadesimal

jnb ti,$ ; Kirim data sampai habis

clr ti ; Kirim data 0 (low) sampai peak to

peak

mov sbuf,#Kosong ; Isikan ke sbuf nilai 0ff

heksadesimal

jnb ti,$ ; Kirim data sampai habis

clr ti ; Kirim data 0 (low) sampai peak to

peak

ret ; Program berhenti untuk rutin

tampil

Tbl_Satu1: ; Rutin untuk mengecek penekanan

tombol satu (penekanan pertama untuk tombol satu)

acall delay ; Memanggil rutin delay

mov p1,#7fh ; Isikan ke alamat bit p1 nilai 7f

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 7fh)

cjne a,#77h,tbl_Dua1 ; Bandingkan nilai yang ada pada

(57)

jika tidak sama maka program akan melompat ke rutin Tbl_Dua1, dan jika sama maka program akan lanjut ke instruksi berikut

mov 74h,#bil1 ; Isikan ke alamat 74h nilai 0ed

heksadesimal

mov 71h,#1 ; Isikan ke alamat 71h nilai 1

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 1 pada display

Recek_tbl_Satu1: ; Rutin untuk mengecek ulang

penekanan tombol satu

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 7fh)

cjne a,#77h,Recek_tbl_Satu1 ; Bandingkan nilai yang ada pada alamat a (7fh) dengan nilai 77h, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Satu1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Dua1: ; Rutin untuk mengecek penekanan

tombol dua (penekanan pertama untuk tombol dua)

cjne a,#7bh,tbl_Tiga1 ; Bandingkan nilai yang ada pada

alamat a (7fh) dengan nilai 7bh, jika tidak sama maka program akan melompat ke rutin Tbl_Tiga1, dan jika sama maka program akan lanjut ke instruksi berikut

mov 74h,#bil2 ; Isikan ke alamat 74h nilai 19

heksadesimal

mov 71h,#2 ; Isikan ke alamat 71h nilai 2

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 2 pada display

Recek_tbl_Dua1: ; Rutin untuk mengecek ulang

penekanan tombol dua

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 7fh)

cjne a,#7bh,Recek_tbl_Dua1 ; Bandingkan nilai yang ada pada alamat a (7fh) dengan nilai 7bh, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Dua1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Tiga1: ; Rutin untuk mengecek penekanan

tombol tiga (penekanan pertama untuk tombol tiga)

cjne a,#7dh,Tbl_Empat1 ; Bandingkan nilai yang ada pada alamat a (7fh) dengan nilai 7dh, jika tidak sama maka program akan melompat ke rutin Tbl_Empat1, dan jika sama maka program akan lanjut ke instruksi berikut

mov 74h,#bil3 ; Isikan ke alamat 74h nilai 89

(58)

mov 71h,#3 ; Isikan ke alamat 71h nilai 3

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 3 pada display

Recek_tbl_Tiga1: ; Rutin untuk mengecek ulang

penekanan tombol tiga

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 7fh)

cjne a,#7dh,Recek_tbl_Tiga1 ; Bandingkan nilai yang ada pada alamat a (7fh) dengan nilai 7dh, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Tiga1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Empat1: ; Rutin untuk mengecek penekanan

tombol empat (penekanan pertama

untuk tombol empat)

mov p1,#0bfh ; Isikan ke alamat bit p1 nilai 0bf

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0bfh)

cjne a,#0b7h,Tbl_Lima1 ; Bandingkan nilai yang ada pada alamat a (0bfh) dengan nilai 0b7h, jika tidak sama maka program akan melompat ke rutin Tbl_Lima1, dan jika sama maka program akan lanjut ke instruksi berikut

mov 74h,#bil4 ; Isikan ke alamat 74h nilai 0c5

heksadesimal

mov 71h,#4 ; Isikan ke alamat 71h nilai 4

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 4 pda display

Recek_tbl_Empat1: ; Rutin untuk mengecek ulang

penekanan tombol empat

mov p1,#0bfh ; Isikan ke alamat bit p1 nilai 0bf

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0bfh)

cjne a,#0b7h,Recek_tbl_Empat1 ; Bandingkan nilai yang ada pada alamat a (0bfh) dengan nilai 0b7h, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Empat1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Lima1: ; Rutin untuk mengecek penekanan

tombol lima (penekanan pertama untuk tombol lima)

(59)

mov 74h,#bil5 ; Isikan ke alamat 74h nilai 83 heksadesimal

mov 71h,#5 ; Isikan ke alamat 71h nilai 5

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 5 pada display

Recek_tbl_Lima1: ; Rutin untuk mengecek ulang

penekanan tombol lima

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0bfh)

cjne a,#0bbh,Recek_tbl_Lima1 ; Bandingkan nilai yang ada pada alamat a (0bfh) dengan nilai 0bbh, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Lima1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Enam1: ; Rutin untuk mengecek penekanan

tombol enam (penekanan pertama untuk tombol enam)

cjne a,#0bdh,Tbl_Tujuh1 ; Bandingkan nilai yang ada pada alamat a (0bfh) dengan nilai 0bdh, jika tidak sama maka program akan melompat ke rutin Tbl_Tujuh1, dan jika sama maka program akan lanjut ke instruksi berikut

mov 74h,#bil6 ; Isikan ke alamat 74h nilai 3

heksadesimal

mov 71h,#6 ; Isikan ke alamat 71h nilai 6

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 6 pada display

Recek_tbl_Enam1: ; Rutin untuk mengecek ulang

penekanan tombol enam

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0bfh)

cjne a,#0bdh,Recek_tbl_Enam1 ; Bandingkan nilai yang ada pada alamat a (0bfh) dengan nilai 0bdh, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Enam1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Tujuh1: ; Rutin untuk mengecek penekanan

tombol tujuh (penekanan pertama untuk tombol tujuh)

mov p1,#0dfh ; Isikan ke alamat bit p1 nilai 0df

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0dfh)

(60)

mov 74h,#bil7 ; Isikan ke alamat 74h nilai 0e9 heksadesimal

mov 71h,#7 ; Isikan ke alamat 71h nilai 7

acall tampil1 ; Memanggil rutin tampil1 sehingga

tampil angka 7 pada display

Recek_tbl_Tujuh1: ; Rutin untuk mengecek ulang

penekanan tombol tujuh

mov p1,#0dfh ; Isikan ke alamat bit p1 nilai 0df

heksadesimal

mov a,p1 ; Isikan ke alamat a nilai yang ada

pada alamat bit p1 (sehingga a = 0dfh)

cjne a,#0d7h,Recek_tbl_Tujuh1 ; Bandingkan nilai yang ada pada alamat a (0dfh) dengan nilai 0d7h, jika tidak sama maka program akan melompat ke rutin Recek_tbl_Tujuh1, dan jika sama maka program akan lanjut ke instruksi berikut

ljmp Tbl_Satu2 ; Melompat ke rutin Tbl_Satu2

Tbl_Delapan1: ; Rutin u

Gambar

Gambar 2.1 IC Mikrokontroler AT89S52
Gambar 2.3 Tampilan IC ADC 0804
Gambar 2.5 Konfigurasi Seven Segmen Tipe Common Anoda
Gambar 2.8 Software 8051 Editor, Assembler, Simulator (IDE)
+7

Referensi

Dokumen terkait

Semakin banyak jumlah penduduk yang bertempattinggal dalam suatu wilayah yang tidak di sertai dengan penambahan fasilitasyang memadai akan menimbulkan masalah

Observasi yang dilakukan peneliti terutama di fokuskan pada kegiatan proses belajar mengajar guru di kelas dan kegiatan belajar peserta didik dengan

Penelitian ini bertujuan untuk mengetahui hubungan antara perilaku child abuse yang dilakukan oleh orang tua dengan perilaku agresif anak usia sekolah di Kelurahan Pasia

BANK PERKREDITAN RAKYAT BEROK GUNUNG PANGILUN PADANG 4.1 Penyelenggaraan Kredit Pada PT.BPR Berok Gunung Pangilun Padang ..... 4.6 Masalah yang Dihadapi Dalam

[r]

Biasanya tukang yang memasang keramik tersebut, setelah keramik yang sudah dipasang dalam keadaan setengah kering akan mengisi nat tersebut dengan semen yang dicampur air

[r]

Hasil penelitian ini menunjukkan hasil uji koefisien determinasi sebesar 0.249, yang berarti bahwa variabel Kualitas Sistem Informasi Aplikasi SIMDA dapat menjelaskan