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
TUGAS AKHIR
ESNA MANURUNG
052408083
PROGRAM STUDI D-3 FISIKA INSTRUMENTASI
DEPARTEMEN FISIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
UNIVERSITAS SUMATERA UTARA
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
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
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
oPENGHARGAAN
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.
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
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
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
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
oBAB 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.
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.
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
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
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
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.
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
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
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)
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/
oC yang berarti bahwa pada
kenaikan suhu 1
o1.
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/
o3.
Akurasi 0,5
C.
o
4.
Range -55
C pada suhu ruang.
o
C – 150
o5.
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
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 :
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
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
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 :
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
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:
……….
……….
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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.
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
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
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
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
(
oC)
Suhu
Termometer
(
oC)
Perbedaan
Pengukuran LM35
dengan
Termometer (
oC)
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
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
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
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
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
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
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
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)
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)
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