BAB III RANCANGAN DAN CARA KERJA ALAT 3.1 Perancangan Alat 3.1.1 Blok Diagram Perancangan Alat Rancangan dan cara kerja alat secara blok diagram yaitu untuk mempermudah dalam menganalisa rangkaian secara keseluruhan. Mulai dari input, pemrosesan, sampai bagian akhir dari proses yang akan menghasilkan keluaran atau output dari rangkaian. Adapun blok diagram dan flowchart sistem secara keseluruhan tertera seperti gambar dibawah ini.
PENERIMA SUHU INPUT
PENGKONDISI SINYAL
SEVEN SEGMENT
ADC 0804
MIKROKONTROLER AT89S51
Gambar 3.1 Blok diagram rangkaian pengukur suhu
28
29
START
INPUT SENSOR SUHU
PENGUATAN TEGANGAN ANALOG SEBESAR 3 KALI
KONVERSI DATA ANALOG KE DIGITAL DENGAN ADC
MENGINPUT DATA DIGITAL KE MIKROKONTROLER AT89S51
MENAMPILKAN DATA SUHU DI SEVEN SEGMENT DALAM ºC
SELESAI AMBIL DATA TIDAK
YA
END
Gambar 3.2 Diagram alir sistem akuisisi data suhu Pada sistem ini program dimulai dengan membaca suhu plant, kemudian data yang dihasilkan sensor suhu berupa tegangan analog diperkuat dengan pengkondisian sinyal sebesar 3 kali. Hal ini dilakukan karena tegangan analog yang dihasilkan sensor suhu sangat kecil sehingga tidak dapat dibaca oleh ADC. lalu data analog yang telah diperkuat dengan pengkondisi sinyal tersebut dikonversi ke dalam bentuk data digital
30
oleh ADC, selanjutnya menginput data digital tersebut ke sistem mikrokontroler AT89S51, Mikrokontroler akan diprogram menggunakan bahasa assembly dan untuk tampilan menggunakan seven segment, jika program pengambilan data suhu dihentikan maka proses pengambilan data suhu akan selesai dan program pengambilan data suhu akan melakukan proses pengambilan data suhu lagi jika program dimulai kembali.
3.1.2 Blok Penerima Suhu Pada rangkaian pengukur suhu ini penulis menggunakan IC LM 35 sebagai sensor suhu. Rangkaian sensor suhu dapat dilihat pada gambar berikut :
Gambar 3.3 Sensor suhu LM 35
Sensor suhu LM35 berfungsi untuk mengubah besaran fisis yang berupa suhu menjadi besaran elektris tegangan. Sensor ini memiliki parameter bahwa setiap kenaikan 1ºC tegangan keluarannya naik sebesar 10mV dengan batas maksimal keluaran sensor adalah 1,5 V pada suhu 150°C. Pada perancangan kita tentukan keluaran adc mencapai full scale pada saat suhu 100°C, sehingga saat suhu 100°C tegangan keluaran transduser (10mV/°C x 100°C) = 1V. Dari pengukuran secara langsung saat suhu ruang, keluaran IC LM 35 adalah 0.3V (300mV ). Tegangan ini diolah dengan menggunakan rangkaian pengkondisi sinyal agar sesuai dengan tahapan masukan ADC.
31
Tabel 3.4 Tegangan keluaran IC LM 35
SUHU 25ºC 30ºC 35ºC 37ºC 55ºC 60ºC
TEGANGAN OUTPUT 250 mV 300 mV 350 mV 370 mV 550 mV 600 mV
3.1.3 Blok Pengkondisi Sinyal Op-amp yang telah dijelaskan pada bab II dapat digunakan sebagai penguat tegangan. Untuk itu penulis menggunakan rangkaian penguat tegangan non-inverting menggunakan IC Op-amp (LM 741)). Pada penguat non-inverting ini penguatan yang diinginkan adalah sebesar 3 kali, maka pada saat vin = 1v, vout yang dihasilkan sebesar 3v, hal ini dikarenakan tegangan maksimum yang digunakan adalah 3v dan full scale keluaran adc pada saat suhu 100ºC, sehingga pada saat vin = 1v suhu yang didapat sebesar 100°C, untuk mendapatkan penguatan sebesar 3 kali maka penulis menggunakan Rf = 20 kohm dan Ri = 10 kohm, rumus yang digunakan adalah sebagai berikut : Vout = ( Rf / Ri + 1 ). Vin
Gambar 3.5 Rangkaian penguat non-inverting Pada rangkaian pengkondisi sinyal ini penulis melakukan pengujian dengan cara memberikan catu daya yang berbeda-beda, pada percobaan pertama penulis memberikan catu daya sebesar (+5v) dan (-5v), adapun data yang didapat adalah sebagai berikut :
32
Tabel 3.6 Data pengujian catu daya (+5v) dan (-5v)
Vin
Vout
Besarnya Penguatan = Vout/Vin
0.15 0.32 0.46 0.65 0.82
0.91 1.28 1.65 2.27 2.46
5.4 4.0 3.6 3.5 3.0
Dari data pengujian diatas penguatan yang diperoleh tidak stabil atau tidak sesuai dengan yang dibutuhkan, oleh karena itu penulis melakukan percobaan kedua dengan menggunakan catu daya (+12v) dan (-12v), adapun data yang didapat adalah sebagai berikut :
Tabel 3.7 Data pengujian catu daya (+12v) dan (-12v)
Vin
Vout
Besarnya Penguatan = Vout/Vin
0.14 0.24 0.34 0.45 0.57
0.42 0.72 1.02 1.35 1.71
3.0 3.0 3.0 3.0 3.0
Dari data pengujian diatas penguatan yang diperoleh sesuai dengan yang dibutuhkan yaitu penguatan sebesar 3 kali, dengan demikian penulis menggunakan catu daya (+12v) dan (-12v) sebagai catu daya untuk rangkaian pengkondisi sinyal. 3.1.4 Blok ADC (Analog To Digital Converter) Pada perancangan alat ini ADC yang digunakan adalah ADC 0804 pada mode kerja free running. Rangkaian free running ADC 0804 ditunjukkan pada Gambar 3.8. Untuk membuat mode kerja ADC 0804 menjadi free running, maka harus diketahui bagaimana urutan pemberian nilai pada -RD dan -WR serta perubahan nilai pada INTR. Urutan pemberian nilai pada -RD , -WR perubahan nilai pada -INTR ditunjukkan pada Tabel 3.9
33
Gambar 3.8 Rangkaian ADC (Analog To Digital Converter ) Tabel 3.9 Pemberian nilai pada -RD dan -WR serta perubahan nilai pada -INTR
Mode kerja free running ADC diperoleh jika -RD dan -CS dihubungkan ke ground agar selalu mendapat logika 0 sehingga ADC akan selalu aktif dan siap memberikan data. Pin -WR dan -INTR dijadikan satu karena perubahan logika -ITNR sama dengan perubahan logika pada -WR, sehingga pemberian logika pada -WR dilakukan secara otomatis oleh keluaran –INTR. Dan Pin ADC yang digunakan sebagai jalur output ADC yaitu D0 – D7 dihubungkan ke pin input mikrokontroler yaitu P1.0 – P1.7, CLK R dan CLK In merupakan pin untuk merancang clock untuk kerja ADC, clock digunakan untuk merancang waktu siklus kerja pengkonversian
34
pada ADC. Untuk membangkitkan clock ADC 0804 diperlukan rangkaian RC dengan nilai R = 10K dan C = 150pF sesuai rekomendasi pabrik frekuensi clock berkisar antara 100kHz – 1460kHz dan dianjurkan 640 kHz. Frekuensi clock dirumuskan sbb : fClock=1 / (1,1RC) Dengan R = 10K dan C = 150pF, akan didapat fClock = 1 / (1,1 x RC) = 1 / (1,1 x 10K x 150pF) = 606 kHz. Untuk ADC 0804 dengan jumlah bit sebesar 8 bit dan Vref = 3V maka resolusinya :
Sehingga untuk mendapatkan nilai digital diperoleh dengan rumus sebagai berikut :
Berikut data pengkonversiannya : Tabel 3.10 Konversi Analog ke Digital
Vref/2
Vin(+)
3 Volt
0 0.48 0.99 1.5 V 1.98 V 2.49 V 3V
Pin D0 – D7 D7 0 0 0 1 1 1 1
D6 0 0 1 0 0 1 1
D5 0 1 0 0 1 0 1
D4 0 0 1 0 0 1 1
D3 0 1 0 0 1 0 1
D2 0 0 1 0 0 1 1
D1 0 1 0 0 1 0 1
D0 0 0 1 0 1 1 1
Heksa Desimal
Desimal
00 29 54 80 A9 D4 FF
0 41 84 128 169 212 255
3.1.5 Blok Mikrokontroler AT89S51 Data digital 8 bit dari ADC diambil oleh mikrokontroller melalui Port 1 ( P1.0 –P1.7 dihubung dengan pin DB0 - DB7 pada ADC ). Sedangkan data masukan untuk penampil seven segment dikeluarkan melalui Port 0 ( P0.0 – P0.7 ) Data yang diambil dari Port 1 ( P1.0 –P1.7 ) harus dikalibrasi terlebih dahulu dengan program
35
assembler, setelah dikalibrasi data tersebut akan menampilkan angka 0-100 pada seven segment, jika tidak diubah maka yang tertampil adalah angka 0-255. Pin X1 dan X2 merupakan pin untuk merancang clock untuk kerja Mikrokontroler, clock digunakan untuk merancang waktu siklus kerja pengkonversian pada mikrokontroler. frekuensi clock yang digunakan adalah sebesar 12 Mhz.
Gambar 3.11 rangkaian mikrokontroler AT89S51 3.1.6 Blok seven segment Pada perancangan alat pengukur suhu ini tampilan menggunakan seven segment. Seven segment yang digunakan adalah tipe common anoda. Sehingga untuk menyalakan seven segment itu common kita hubungkan dengan vcc melalui transistor c9012 tipe pnp (untuk mengaktifkan transistor tersebut harus diberi logika 0 pada basisnya) dan tiap-tiap segmen (led) kita beri logika 0 untuk menyalakannya. pin yang digunakan mikrokontroler untuk mengirim data ke seven segment adalah pin 0 (p0.0 – p0.6). sedangkan port untuk menyalakan basis pada ketiga transistor tersebut dihubungkan ke pin 2 ( pin2.0 – pin2.2) pada mikrokontroler.
36
Gambar 3.12 rangkaian seven segment 3.1.7 Perangkat DT-51TM Low Cost Micro v2.0 Rangkaian Development system mikrokontroler yang digunakan adalah DT51 low Cost Micro System v2.0. DT51 low Cost Micro System v2.0 merupakan suatu modul single chip dengan mikrokontroler AT89S51 dan kemampuan komunikasi serial secara UART serta In-system Programming. Spesifikasi Hardware:
Mikrokontroler AT89S51 dengan 4Kbyte Flash memory.
Memiliki hingga 32 pin jalur input/output dengan pull-up.
Rangkaian RC reset, tombol reset, serta brown-out detector.
Frekuensi osilator sebesar 11,0592 MHz.
Tersedia jalur komunikasi serial UART RS-232 yang telah disempurnakan, dengan konektor RJ11
Tersedia port untuk pemograman secara ISP.
Tegangan input 9-12 VDC pada Vin dan tegangan output 5 VDC pada Vout. Dalam modul DT51 low Cost Micro System v2.0 ini disertakan 2 perangkat
kabel yaitu kabel AT89 ISP Programmer dan kabel serial. Kabel AT89 ISP Programmer digunakan sebagai sarana pemrograman sedangkan kabel serial digunakan untuk komunikasi serial mikrokontroler dengan PC.
37
3.1.7.1 Pemasangan kabel AT89 ISP Programmer Kabel pemograman ISP AT89 memiliki dua konektor, DB25 dan Black Housing 10 pin. Pemasangan kabel ini dapat dilihat pada gambar 3.13. Konektor DB25 dihubungkan dengan Parallel Port komputer sedangkan Black Housing dihubungkan dengan target board.
Gambar 3.13 Koneksi kabel AT89 ISP Programmer 3.1.7.2 Pemasangan Kabel Serial DT-51 dapat berkomunikasi secara serial dengan PC. Kabel serial digunakan untuk menghubungkan PC dan DT-51 melalui port serial (konektor DB9). Port serial pada PC sering disebut COM1 dan COM2. Koneksi kabel serial dengan PC dapat dilihat pada gambar 3.14. Konektor female DB9 dihubungkan ke salah satu Serial Port PC dan konektor male DB9 dihubungkan ke DT-51.
Gambar 3.14 Koneksi kabel Serial
38
3.2 Perancangan Perangkat Lunak Perancangan perangkat lunak ini terbagi atas perancangan program assembly, proses download ke mikrokontroler
3.2.1 Perancangan program assembly Perangkat lunak yang dirancang pada mikrokontroler menggunakan bahasa assembly khusus untuk CPU keluarga MCS-51. Program akan dibuat berdasarkan urutan: menentukan pengendali assembler, menentukan lokasi memori, menentukan vektor interupsi, merancang program mulai operasi, dan merancang subrutin-subrutin dari program utama.
3.2.1.1 Penentuan pengendali assembler Program assembler yang digunakan adalah program assembler ASM51. ASM51 ini membutuhkan file MOD51, oleh karena itu dalam listing program dituliskan $MOD51 di awal program.
3.2.1.2 Penentuan lokasi memori Development system dalam perancangan ini menggunakan single chip. Oleh karena itu, program yang dijalankan selalu diawali dengan alamat 000H maka pada data listing program dituliskan: Org 000H Perintah berikutnya setelah penentuan lokasi memori adalah memulai operasi program. Perintah mulai ini ditandai dengan label START. Oleh karena itu instruksi selanjutnya adalah melompat ke program START, intruksinya adalah: Sjmp START. ; memulai program 3.2.1.3 Perancangan program mulai operasi Program mikrokontroler dirancang untuk mengakses ADC dan mengirimkan data dari ADC ke Mikrokontroler. Untuk memulai operasi mikrokontroler digunakan label START. Selanjutnya mengakses ADC dengan Instruksinya sebagai berikut : mov a,p1
; memindahkan nilai port 1 pada mikrokontroler ke accumulator
39
3.2.1.4 Perancangan Subrutin-subrutin •
Memanggil Subrutin Masing-masing operasi terdiri dari subrutin-subrutin. Oleh karena itu diperlukan perintah untuk memanggil subrutin itu. Perintah Acall digunakan untuk melakukan tugas tersebut. Instruksinya adalah:
•
acall disp1
; memanggil subrutin display 1
call
; memanggil subrutin delay
delay
acall disp2
; memanggil subrutin display 2
call
; memanggil subrutin delay
delay
Konversi BCD (Binary Code Desimal) Pada rangkaian ini data
akan
ditampilkan pada seven segment oleh
karena itu data yang dikeluarkan oleh ADC terlebih dahulu akan dikonversi ke dalam bentuk desimal, agar dapat tampil di seven segment. Berikut instruksi pengkonversiannya : Konversi: mov
b,#100
; memasukkan nilai 100 ke register b
div
ab
; membagi nilai accumulator dengan register b
acall
disp1
; memanggil subrutin display 1
call
delay
; memanggil subrutin delay
mov
a,b
; memasukkan sisa hasil bagi ke accumulator
mov
b,#10
; memasukkan nilai 10 ke register b
div`
ab
; membagi nilai accumulator dengan register b
acall
disp2
; memanggil subrutin display 2
call
delay
; memanggil subrutin delay
acall
disp3
; memanggil subrutin display 3
call
delay
; memanggil subrutin delay
data dari adc dalam bentuk heksa akan dikonversi ke desimal dalam bentuk terpisah yaitu dalam bentuk ratusan, puluhan dan satuan. Untuk menampilkan data ratusan di seven segment berikut instruksinya :
40
mov
P0,A
; menyimpan nilai accumulator ke port 0
clr
P2.2
; mengaktifkan digit 3
clr
p2.1
; mengaktifkan digit 2
clr
p2.0
; mengaktifkan digit 1
pada instruksi diatas ketiga seven segment akan menyala, karena untuk ratusan, data yang ditampilkan adalah 100°C. Dan untuk menampilkan data puluhan berikut instruksinya : mov
P0,A
; menyimpan nilai accumulator ke port 0
clr
P2.1
; mengaktifkan digit 2
clr
p2.0
; mengaktifkan digit 1
setb
p2.2
; menonaktifkan digit 3
pada instruksi diatas seven segmnet yang menyala adalah seven segment yang kedua dan ketiga , karena untuk puluhan, data yang ditampilkan adalah 10°C - 99°C. Dan untuk menampilkan data satuan berikut instruksinya : mov
P0,A
; menyimpan nilai accumulator ke port 0
clr
P2.0
; mengaktifkan digit 1
setb
p2.1
; menonaktifkan digit 2
setb
p2.2
; menonaktifkan digit 3
pada instruksi diatas seven segment yang menyala adalah seven segment yang ketiga saja, karena untuk satuan, data yang ditampilkan adalah 0°C - 9°C. Untuk mengakses data yang ada di ADC sekaligus menuliskannya digunakan register Data Pointer (DPTR). Instruksinya adalah: mov
dptr,#data1
; mengambil nilai pada data 1 untuk disimpan di dptr
movc
a,@a+dptr
; menaikkan nilai dptr dan menyimpan di accumulator
instruksi diatas akan membandingkan nilai accumulator terhadap data1. dimana data1 adalah database untuk menyalakan seven segment agar dapat tampil angka 1 – 9, karena tanpa database tersebut digit yang akan tampil di seven
41
segment tidak akan menyala dengan sesuai atau tidak beraturan. berikut instruksi database tersebut : Data1: db 11000000b
; data 0 - 9
db 11111001b db 10100100b db 10110000b db 10011001b db 10010010b db 10000010b db 11111000b db 10000000b db 10010000b •
Delay Program delay berfungsi memberikan kestabilan agar data tidak hilang atau menumpuk. Instruksi yang dirancang dalam program delay ini adalah delay: Push
B
Mov
B,#0FFH
Tunggudelay: Djnz
B,Tunggudelay
Pop
B
Ret
Deskripsi dari intruksi diatas adalah pertama register B akan disimpan ke Stack Pointer kemudian nilai 0FFH diisikan ke register B.
Perintah Djnz
berfungsi untuk mengurangi 1 nilai pada lokasi register B. Jika hasilnya bukan nol maka program akan melompat ke TungguDelay. Setelah nilai di register B sama dengan nol maka ambil register B yang ada di Stack Pointer program kembali ke rutin sebelumnya.
42
Berikut flowchart programnya : start Inisialisasi interupsi Input sensor
Konversi tegangan analog ke digital
; Mengubah tegangan analog ke digital
Konversi BCD
; Mengubah nilai biner ke desimal dan memasukkan nilai desimal ke accumulator
konversi nilai desimal ke ratusan
; Memberikan nilai 100 pada register b dan membagi accumulator dengan register b
tidak
ya Menginput accumulator dan menampilkannya di digit 3
tidak konversi nilai desimal ke puluhan
; Menginput hasil bagi ke accumulator dan menyimpan hasil sisa bagi ke register b dan menampilkan nilai accumulator ke digit 3
; untuk konversi ratusan : memindahkan nilai register b ( hasil sisa bagi ) ke accumulator dan memberikan nilai 10 pada register b dan membagi nilai accumulator dengan register b untuk konversi puluhan : memberikan nilai 10 pada register b dan membagi nilai accumulator dengan register b
ya menginput accumulator dan menampilkannya di digit 2
Menginput accumulator dan menampilkannnya di digit 1
; menginput hasil bagi ke accumulator dan menampilkannya di digit 2 dan menyimpan hasil sisa bagi ke register b
; untuk konversi puluhan : memindahkan nilai register b ( hasil sisa bagi ) ke accumulator dan menampilkannya di digit 1 untuk konversi satuan : menampilkan accumulator di digit 1
end Gambar 3.15 flowchart program pengukur suhu
43
3.2.2 Proses Download Program ke Mikrokontroler Perangkat lunak yang digunakan adalah NOTEPAD.EXE, ASM51.EXE, dan ATMEL MICROCONTROLLER ISP. NOTEPAD digunakan sebagai editor. Listing program berbahasa assembly ditulis dan diubah menggunakan Notepad. Listing program tersebut disimpan dengan format (nama file).ASM. ASM51 digunakan sebagai hex assembler. ASM51 akan mengubah listing program yang sudah dibuat Notepad menjadi file hexadesimal. Hasil proses ini akan menghasilkan file (nama file).HEX. File ini adalah file yang di download ke DT51. ATMEL MICROCONTROLLER ISP merupakan sarana pemrograman untuk mikrokontroler Atmel® seri AT89 yang memiliki fasilitas In-System Programming. Langkah – langkah men-download program ke mikrokontroler a. Menuliskan listing program terlebih dahulu pada Notepad kemudian program disimpan dalam format (nama file).ASM. b. Mengubah program tersebut menjadi format (nama file). HEX yang dapat didownload ke DT-51. Langkah ini disebut juga proses assembling. Program yang digunakan untuk melakukan proses tersebut adalah ASM51.EXE. Proses assembling dilakukan dengan mengetikkan ”ASM51 (nama file).ASM” pada MSDOS promp. c. Jalankan program Atmel Microcontroller ISP Software 9 Pilih port melalui menu Option – Select Port
Gambar 3.16 Panel Port Select 9 Pilih tipe mikrokontroler yang digunakan yaitu AT89S51 melalui menu Option Select Device
44
Gambar 3.17 Panel Device Selection 9 Buka file Hex yang diinginkan melalui menu File – Load Buffer. Klik tombol untuk memprogram secara otomatis (tombol dengan huruf A pada toolbar). Setelah selesai pemrograman, pilih Run Target dari menu Instructions
3.3 Prinsip Kerja Rangkaian Secara Keseluruhan Pada dasarnya prinsip kerja dari alat atau rangkaian ini, berfungsi sebagai alat pengukur suhu. Alat pengukur suhu ini hanya dapat digunakan pada suhu antara 0º 100ºC. hal ini dikarenakan komponen pendeteksi suhu hanya dapat beroperasi pada daerah itu. Sensor suhu berfungsi sebagai alat pendeteksi suhu. Yang akan digunakan sebagai input pada rangkaian penguat tegangan. Rangkaian penguat tegangan akan menguatkan
tegangan
yang
dihasilkan
sensor
suhu
sebesar
3
kali
dan
mengirimkannya ke dalam ADC (Analog To Digital Converter) dalam bentuk sinyal analog.. ADC (Analog To Digital Coverter) akan mengubah sinyal analog tersebut ke dalam sinyal digital. Data digital tersebut akan diambil oleh mikrokontroller melalui Port 1 ( P1.0 – P1.7 dihubung dengan pin DB0 - DB7 pada ADC). Sedangkan data masukan untuk penampil seven segment dikeluarkan melalui Port 0 ( P0.0 – P0.7 ) Data yang diambil dari Port 1 ( P1.0 –P1.7 ) dikalibrasi terlebih dahulu dengan program assembler, setelah dikalibrasi data tersebut kemudian diubah ke dalam bentuk desimal supaya tertampil angka 0-100 pada seven segment, jika tidak diubah maka yang tertampil adalah angka 0-255
45
Gambar 3.18 Rangkaian keseluruhan rangkaian pengukur suhu