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 ADC 0804 SEVEN SEGMENT 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 YA TIDAK 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 TEGANGAN OUTPUT 25ºC 250 mv 30ºC 300 mv 35ºC 350 mv 37ºC 370 mv 55ºC 550 mv 60ºC 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.91 5.4 0.32 1.28 4.0 0.46 1.65 3.6 0.65 2.27 3.5 0.82 2.46 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.42 3.0 0.24 0.72 3.0 0.34 1.02 3.0 0.45 1.35 3.0 0.57 1.71 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 3 Volt Vin(+) Pin D0 D7 D7 D6 D5 D4 D3 D2 D1 D0 Heksa Desimal Desimal 0 0 0 0 0 0 0 0 0 00 0 0.48 0 0 1 0 1 0 1 0 29 41 0.99 0 1 0 1 0 1 0 1 54 84 1.5 V 1 0 0 0 0 0 0 0 80 128 1.98 V 1 0 1 0 1 0 1 1 A9 169 2.49 V 1 1 0 1 0 1 0 1 D4 212 3 V 1 1 1 1 1 1 1 1 FF 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-51 TM 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 delay ; memanggil subrutin delay acall disp2 ; memanggil subrutin display 2 call delay ; memanggil subrutin 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 tidak Konversi BCD konversi nilai desimal ke ratusan ya Menginput accumulator dan menampilkannya di digit 3 ; Mengubah nilai biner ke desimal dan memasukkan nilai desimal ke accumulator ; Memberikan nilai 100 pada register b dan membagi accumulator dengan register b ; Menginput hasil bagi ke accumulator dan menyimpan hasil sisa bagi ke register b dan menampilkan nilai accumulator ke digit 3 tidak konversi nilai desimal ke puluhan ya menginput accumulator dan menampilkannya di digit 2 ; 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 ; menginput hasil bagi ke accumulator dan menampilkannya di digit 2 dan menyimpan hasil sisa bagi ke register b Menginput accumulator dan menampilkannnya di digit 1 end ; 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 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 MS- DOS promp. c. Jalankan program Atmel Microcontroller ISP Software Pilih port melalui menu Option Select Port Gambar 3.16 Panel Port Select Pilih tipe mikrokontroler yang digunakan yaitu AT89S51 melalui menu Option - Select Device
44 Gambar 3.17 Panel Device Selection 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
Gambar 3.18 Rangkaian keseluruhan rangkaian pengukur suhu 45