Aplikasi Thermopile Array Untuk Thermoscanner Berbasis Mikrokontroler ATMega 16.

(1)

U niversit as Krist e n M ara na t ha i

Aplikasi Thermopile Array untuk Thermoscanner Berbasis Mikrokontroler ATmega16

Disusun Oleh :

Nama : Wilbert Tannady Nrp : 0822080

Jurusan Teknik Elektro, Fakultas Teknik, Universitas Kristen Maranatha, Jl. Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia.

Email : wilz_tanz@yahoo.com

ABSTRAK

Pada industri tertentu sering kali dibutuhkan pendeteksian suhu tanpa menyentuh bidang permukaan. Untuk mendapatkan informasi/pendeteksian permukaan radiasi panas adalah dengan cara mengukur suhunya. Oleh karena itu, diperlukan sensor suhu array untuk thermoscanner yaitu sensor suhu yang dapat melakukan proses scanning untuk mendapatkan suhu objek.

Pada Tugas Akhir ini, thermopile array TPA81 digunakan untuk mendeteksi radiasi panas tanpa perlu menyentuh objek. Pendeteksiannya kemudian divisualisasi dalam bentuk warna semu (false colour) dengan bantuan program aplikasi pada Microsoft Visual Basic. TPA81 akan mendeteksi objek yang panas kemudian dilakukan scanning terhadap objek tersebut. ATmega16 akan mengirimkan data serial pada komputer kemudian data serial tersebut akan dihitung dan diolah untuk divisualisasikan dalam bentuk warna semu (false

colour).

Dari hasil pengujian, pendeteksian dan pemantauan visualisasi radiasi panas permukaan objek yang dilakukan dengan tiga objek yang berbeda yaitu dengan objek black body kalibrator pada jarak 20 cm, 40 cm, 60 cm, 80 cm dengan suhu objek pada masing-masing jarak adalah 50°C, 75°C dan 100°C, objek lilin pada jarak 10 cm, 30 cm, 50 cm, 70 cm dan 90 cm dan objek tangan manusia pada jarak 15 cm, 20 cm, 25 cm dengan suhu Background yang berbeda-beda, maka hasil visualisasi radiasi panas permukaan objek dalam bentuk warna semu baik jika terdapat perbedaan suhu di atas 9°C antara suhu latar dengan suhu objek yang dideteksi. Persentase kesalahan yang paling kecil dari sensor

thermopile array TPA81 dibandingkan dengan alat ukur thermal camera adalah

pada jarak 40 cm.


(2)

U niversit as Krist e n M ara na t ha ii

Application of Thermopile Array for Thermoscanner Based on ATmega16 Microcontroller

Composed by :

Name : Wilbert Tannady Nrp : 0822080

Department of Electrical Engineering, Faculty of Engineering, Maranatha Christian University,

Jl. Prof.Drg.Suria Sumantri, MPH no.65, Bandung, Indonesia.

Email : wilz_tanz@yahoo.com

ABSTRACT

In certain industry, a temperature detection is often needed without be touching the surface of the object. To get information/detection surface of the heat radiation is by measuring the temperature. Therefore, thermopile array is needed as a thermoscanner, it is used as a temperature sensor to scan the object’s temperature.

In this final project, thermopile array TPA81 is used to detect the heat radiation without be touching the object. The detection will be visualizated unto false colour with the help of application program in Microsoft Visual Basic software. TPA81 will detect the heat of the object, and scan the object. ATmega16 will send amount of certain data to the computer and the data will be collected and processed into false colour visualization.

As the result, from the testing, measuring and scouting result of the heat radiation from the object’s surface. Three different object experiments are used, such as black body calibrator : 20 cm, 40 cm, 60 cm, 80 cm in distance of 500C, 750C, and 1000C temperature, candles : 10 cm, 30 cm, 50 cm, 70 cm and 90 cm, and human’s hand : 15 cm, 20 cm, 25 cm with different room temperature, so the result of the visualization is the form of the objects as false colour, they are better if there is a difference temperature above 90C between the detected object’s temperature to the background’s temperature. The smallest error percentage of the thermopile array TPA81 to the thermal camera measure device is at a distance of 40 cm.


(3)

U niversit as Krist e n M ara na t ha v

DAFTAR ISI

Halaman

ABSTRAK ... i

ABSTRACT ... ii

KATA PENGANTAR ... iii

DAFTAR ISI ... v

DAFTAR TABEL ... ix

DAFTAR GAMBAR ... xii

DAFTAR RUMUS ... xvi

BAB I PENDAHULUAN I.1 Latar Belakang ... 1

I.2 Identifikasi Masalah ... 2

I.3 Tujuan ... 2

I.4 Pembatasan Masalah ... 2

I.5 Spesifikasi Alat ... 3

I.6 Sistematika Penulisan ... 3

BAB II LANDASAN TEORI II.1 Radiasi Benda Hitam ... 4

II.2 Emisivitas ... 5

II.3 Interpolasi Linear ... 5

II.4 Warna ... 6

II.4.1 Bidang Warna ... 6

II.4.2 Warna Semu (False Colour) ... 7

II.5 Thermal Array Sensor ... 8

II.5.1 Pin TPA-81... 9

II.5.2 Field of View (FOV) ... 10

II.5.3 Cara Kerja TPA-81 ... 10


(4)

U niversit as Krist e n M ara na t ha vi

II.7 LCD (Liquid Crystal Display) ... 15

II.7.1 Pin LCD ... 15

II.8 Mikrokontroller ATmega16 ... 16

II.8.1 Fitur ATmega16 ... 17

II.8.2 Konfigurasi Pin ATmega16 ... 18

II.8.3 Pin Input/Output ATmega16 ... 20

II.8.4 I2C (Inter-Integrated Circuit) ATmega16 ... 21

II.8.5 USART (The Universal Synchronous and Asynchronous Serial Receiver and Transmitter) ATmega16 ... 22

II.9 RS232 ... 24

BAB III PERANCANGAN DAN REALISASI III.1 Perancangan Pendeteksian Panas Permukaan dengan Menggunakan TPA81... 26

III.2 Thermopile Array TPA81 ... 27

III.3 Servo ... 28

III.4 LCD ... 28

III.5 Perancangan Perangkat Lunak ... 29

III.5.1 Program Utama pada ATmega16 ... 29

III.5.2 Fungsi servo_posisi_awal pada ATmega16 ... 30

III.5.3 Fungsi suhu pada ATmega16 ... 31

III.5.4 Program Aplikasi pada Visual Basic ... 32

III.5.5 Fungsi Bawah dan Kanan Program Aplikasi pada Visual Basic . 35 III.5.6 Fungsi Tampil Bawah dan Tampil Kanan pada Program Aplikasi Visual Basic ... 37

III.5.7 Fungsi Qbawah dan Qkanan pada Program Aplikasi Visual Basic 38 III.5.8 Fungsi Qtampil Bawah dan Qtampil Kanan pada Program Aplikasi Visual Basic ... 39

III.5.9 Fungsi Interpolasi Linear Program Aplikasi pada Visual Basic .. 40

III.5.10 Fungsi Tampil Program Aplikasi pada Visual Basic ... 44

III.5.11 Desain Program Aplikasi pada Visual Basic ... 44


(5)

U niversit as Krist e n M ara na t ha vii

BAB IV HASIL DAN ANALISA

IV.1 Pengujian TPA81 dengan Objek Black Body Kalibrator ... 46

IV.1.1 Pada Jarak 20 cm dengan Suhu 49.90C ... 46

IV.1.2 Pada Jarak 20 cm dengan Suhu 74.90C ... 48

IV.1.3 Pada Jarak 20 cm dengan Suhu 99.90C ... 50

IV.1.4 Pada Jarak 40 cm dengan Suhu 500C ... 52

IV.1.5 Pada Jarak 40 cm dengan suhu 74.90C ... 54

IV.1.6 Pada Jarak 40 cm dengan Suhu 99.90C ... 56

IV.1.7 Pada Jarak 60 cm dengan Suhu 49.90C ... 58

IV.1.8 Pada Jarak 60 cm dengan Suhu 750C ... 60

IV.1.9 Pada Jarak 60 cm dengan Suhu 99.90C ... 62

IV.1.10 Pada Jarak 80 cm dengan Suhu 500C ... 64

IV.1.11 Pada Jarak 80 cm dengan Suhu 750C ... 66

IV.1.12 Pada Jarak 80 cm dengan Suhu 1000C ... 68

IV.2 Pengujian Visualisasi Radiasi Panas Permukaan dengan Objek Lilin 71 IV.2.1 Pada Jarak 10 cm... 71

IV.2.2 Pada Jarak 30 cm... 73

IV.2.3 Pada Jarak 50 cm... 75

IV.2.4 Pada Jarak 70 cm... 77

IV.2.5 Pada Jarak 90 cm... 79

IV.3 Pengujian Visualisasi Radiasi Panas Permukaan dengan Objek Tangan Manusia ... 81

IV.3.1 Pada Jarak 15 cm Suhu Background 260C ... 81

IV.3.2 Pada Jarak 20 cm Suhu Background 260C ... 83

IV.3.3 Pada Jarak 15 cm Suhu Background 290C ... 85

IV.3.4 Pada Jarak 25 cm Suhu Background 290C ... 87

IV.4 Analisa Data ... 89

BAB V KESIMPULAN DAN SARAN V.1 Kesimpulan ... 93


(6)

U niversit as Krist e n M ara na t ha viii

DAFTAR PUSTAKA ... 94 LAMPIRAN A FOTO ALAT

LAMPIRAN B SKEMATIK PERANCANGAN TPA81 UNTUK THERMOSCANNER BERBASIS ATMEGA16

LAMPIRAN C PROGRAM PADA ATMEGA16 DAN PROGRAM APLIKASI PADA MICROSOFT VISUAL BASIC

LAMPIRAN D DATA SHEET ATMEGA16


(7)

U niversit as Krist e n M ara na t ha ix

DAFTAR TABEL

Halaman

Tabel 2.1 Emisivitas ... 5

Tabel 2.2 Daftar Register Sensor Thermal Array ... 11

Tabel 2.3 Pin pada LCD ... 16

Tabel 2.4 Fungsi Khusus Port B ... 19

Tabel 2.5 Fungsi Khusus Port C ... 19

Tabel 2.6 Fungsi Khusus Port D ... 20

Tabel 2.7 Konfigurasi Port Atmega16 ... 21

Tabel 2.8 Baud Rate ... 23

Tabel 2.9 Keterangan pin DB 9 ... 25

Tabel 3.1 Interpolasi antara dua data suhu ... 35

Tabel 3.2 Hasil Interpolasi dengan Menggunakan Fungsi ... 36

Tabel 3.3 Hasil Interpolasi dengan Menggunakan Fungsi Qbawah dan Qkanan ... 38

Tabel 3.4 Komponen Program Aplikasi pada Visual Basic ... 45

Tabel 4.1 Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 49.90C Menggunakan TPA81 ... 47

Tabel 4.2 Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 49.90C Menggunakan Thermal Camera ... 47

Tabel 4.3 Persen Kesalahan Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan suhu 49.90C ... 48

Tabel 4.4 Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 74.90C Menggunakan TPA81 ... 49

Tabel 4.5 Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 74.90C Menggunakan Thermal Camera ... 49

Tabel 4.6 Persen Kesalahan Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan suhu 74.90C ... 50

Tabel 4.7 Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 99.90C Menggunakan TPA81 ... 51


(8)

U niversit as Krist e n M ara na t ha x

Tabel 4.8 Pengukuran Objek Black Body Kalibrator pada Jarak 20 cm

dan Suhu 99.90CMenggunakan Thermal Camera ... 51 Tabel 4.9 Persen Kesalahan Pengukuran Objek Black Body Kalibrator

pada Jarak 20 cm dan suhu 99.90C ... 52 Tabel 4.10 Pengukuran Objek Black Body Kalibrator pada Jarak 40 cm

dan Suhu 500C Menggunakan TPA81 ... 53 Tabel 4.11 Pengukuran Objek Black Body Kalibrator pada Jarak 40 cm

dan Suhu 500C Menggunakan Thermal Camera... 53 Tabel 4.12 Persen Kesalahan Pengukuran Objek Black Body Kalibrator

pada Jarak 40 cm dan suhu 500C ... 54 Tabel 4.13 Pengukuran Objek Black Body Kalibrator pada Jarak 40 cm

dan Suhu 74.90C Menggunakan TPA81 ... 55 Tabel 4.14 Pengukuran Objek Black Body Kalibrator pada Jarak 40 cm

dan Suhu 74.90C Menggunakan Thermal Camera ... 55 Tabel 4.15 Persen Kesalahan Pengukuran Objek Black Body Kalibrator

pada Jarak 40 cm suhu 74.90C ... 56 Tabel 4.16 Pengukuran Objek Black Body Kalibrator pada Jarak 40 cm

dan Suhu 99.90C Menggunakan TPA81 ... 57 Tabel 4.17 Pengukuran Objek Black Body Kalibrator pada Jarak 40 cm

dan Suhu 99.90C Menggunakan Thermal Camera ... 57 Tabel 4.18 Persen Kesalahan Pengukuran Objek Black Body Kalibrator

pada Jarak 40 cm dan suhu 99.90C ... 58 Tabel 4.19 Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm

dan Suhu 49.90C Menggunakan TPA81 ... 59 Tabel 4.20 Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm

dan Suhu 49.90C Menggunakan Thermal Camera ... 59 Tabel 4.21 Persen Kesalahan Pengukuran Objek Black Body Kalibrator

pada Jarak 60 cm dan suhu 49.90C ... 60 Tabel 4.22 Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm

dan Suhu 750C Menggunakan TPA81 ... 61 Tabel 4.23 Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm


(9)

U niversit as Krist e n M ara na t ha xi

Tabel 4.24 Persen Kesalahan Pengukuran Objek Black Body Kalibrator

pada Jarak 60 cm dan suhu 750C ... 62

Tabel 4.25 Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 99.90C Menggunakan TPA81 ... 63

Tabel 4.26 Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 99.90C Menggunakan Thermal Camera ... 63

Tabel 4.27 Persen Kesalahan Pengukuran Objek Black Body Kalibrator pada Jarak 60 cm dan suhu 99.90C ... 64

Tabel 4.28 Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 500C Menggunakan TPA81 ... 65

Tabel 4.29 Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 500C Menggunakan Thermal Camera... 65

Tabel 4.30 Persen Kesalahan Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan suhu 500C ... 66

Tabel 4.31 Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 750C Menggunakan TPA81 ... 67

Tabel 4.32 Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 750C Menggunakan Thermal Camera... 67

Tabel 4.33 Persen Kesalahan Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan suhu 750C ... 68

Tabel 4.34 Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 1000C Menggunakan TPA81 ... 69

Tabel 4.35 Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 1000C Menggunakan Thermal Camera ... 69

Tabel 4.36 Persen Kesalahan Pengukuran Objek Black Body Kalibrator pada Jarak 80 cm dan suhu 1000C ... 70

Tabel 4.37 Analisa Data Black Body Kalibrator... 89

Tabel 4.38 Analisa Data Lilin ... 91


(10)

U niversit as Krist e n M ara na t ha xii

DAFTAR GAMBAR

Halaman

Gambar 2.1 Radiasi Benda Hitam ... 4

Gambar 2.2 Kurva untuk Interpolasi Linear ... 5

Gambar 2.3 Nilai Intensitas RGB ... 7

Gambar 2.4 Warna Semu ... 7

Gambar 2.5 TPA-81 ... 8

Gambar 2.6 Konfigurasi Pin TPA-81 ... 9

Gambar 2.7 Sudut Pandang TPA-81 ... 10

Gambar 2.8 Struktur Dalam Motor Servo ... 12

Gambar 2.9 Koneksi Kabel Motor Servo ... 12

Gambar 2.10 Potensiometer Motor Servo ... 13

Gambar 2.11 Posisi dan Lebar Sinyal yang Diberikan ... 14

Gambar 2.12 LCD LMB162A ... 15

Gambar 2.13 Konfigurasi Pin ATmega16 ... 18

Gambar 2.14 Gambaran Modul TWI Keseluruhan ... 22

Gambar 2.15 Blok USART ... 23

Gambar 2.16 IC MAX232 ... 25

Gambar 2.17 Port Serial DB 9 ... 25

Gambar 3.1 Perancangan Pendeteksian Panas Permukaan ... 27

Gambar 3.2 Hubungan antara ATmega16 dengan TPA81 ... 27

Gambar 3.3 Hubungan Motor Servo dengan ATmega16 ... 28

Gambar 3.4 Hubungan LCD dengan ATmega16 ... 29

Gambar 3.5 Diagram Alir Program Utama ATmega16 ... 30

Gambar 3.6 Diagram Alir Fungsi Servo ... 31

Gambar 3.7 Diagram Alir Fungsi Suhu ... 31

Gambar 3.8 Diagram Alir Program Aplikasi 1 pada Visual Basic ... 33

Gambar 3.9 Diagram Alir Program Aplikasi 2 pada Visual Basic ... 34

Gambar 3.10 Diagram Alir dari Fungsi Bawah dan Fungsi Kanan ... 36


(11)

U niversit as Krist e n M ara na t ha xiii

Gambar 3.12 Diagram Alir dari Fungsi tampil_kanan ... 37

Gambar 3.13 Diagram Alir dari Fungsi Qbawah dan Fungsi Qkanan ... 39

Gambar 3.14 Diagram Alir dari Fungsi Qtampil_bawah ... 39

Gambar 3.15 Diagram Alir dari Fungsi Qtampil_kanan... 40

Gambar 3.16 Degradasi Warna ... 41

Gambar 3.17 Interpolasi Linear ... 42

Gambar 3.18 Diagram Alir Fungsi Interpolasi Linear ... 43

Gambar 3.19 Diagram Alir Fungsi Tampil ... 44

Gambar 3.20 Desain Program Aplikasi pada Visual Basic ... 45

Gambar 4.1 Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 49.90C Menggunakan TPA81 ... 46

Gambar 4.2 Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 49.90C Menggunakan Thermal Camera ... 46

Gambar 4.3 Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 74.90C Menggunakan TPA81 ... 48

Gambar 4.4 Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 74.90C Menggunakan Thermal Camera ... 49

Gambar 4.5 Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 99.90C Menggunakan TPA81 ... 50

Gambar 4.6 Objek Black Body Kalibrator pada Jarak 20 cm dan Suhu 99.90C Menggunakan Thermal Camera ... 51

Gambar 4.7 Objek Black Body Kalibrator pada Jarak 40 cm dan Suhu 500C Menggunakan TPA81 ... 52

Gambar 4.8 Objek Black Body Kalibrator pada Jarak 40 cm dan Suhu 500C Menggunakan Thermal Camera ... 53

Gambar 4.9 Objek Black Body Kalibrator pada Jarak 40 cm dan Suhu 74.90C Menggunakan TPA81 ... 54

Gambar 4.10 Objek Black Body Kalibrator pada Jarak 40 cm dan Suhu 74.90C Menggunakan Thermal Camera ... 55

Gambar 4.11 Objek Black Body Kalibrator pada Jarak 40 cm dan Suhu 99.90C Menggunakan TPA81 ... 56


(12)

U niversit as Krist e n M ara na t ha xiv

Gambar 4.12 Objek Black Body Kalibrator pada Jarak 40 cm dan

Suhu 99.90C Menggunakan Thermal Camera ... 57

Gambar 4.13 Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 49.90C Menggunakan TPA81 ... 58

Gambar 4.14 Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 49.90C Menggunakan Thermal Camera ... 59

Gambar 4.15 Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 750C Menggunakan TPA81 ... 60

Gambar 4.16 Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 750C Menggunakan Thermal Camera ... 61

Gambar 4.17 Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 99.90C Menggunakan TPA81 ... 62

Gambar 4.18 Objek Black Body Kalibrator pada Jarak 60 cm dan Suhu 99.90C Menggunakan Thermal Camera ... 63

Gambar 4.19 Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 500C Menggunakan TPA81 ... 64

Gambar 4.20 Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 500C Menggunakan Thermal Camera ... 65

Gambar 4.21 Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 750C Menggunakan TPA81 ... 66

Gambar 4.22 Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 750C Menggunakan Thermal Camera ... 67

Gambar 4.23 Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 1000C Menggunakan TPA81 ... 68

Gambar 4.24 Objek Black Body Kalibrator pada Jarak 80 cm dan Suhu 1000C Menggunakan Thermal Camera ... 69

Gambar 4.25 Lilin Jarak 10 cm ... 71

Gambar 4.26 Data Suhu Lilin Jarak 10 cm ... 72

Gambar 4.27 Lilin Jarak 30 cm ... 73

Gambar 4.28 Data Suhu Lilin Jarak 30 cm ... 74

Gambar 4.29 Lilin Jarak 50 cm ... 75


(13)

U niversit as Krist e n M ara na t ha xv

Gambar 4.31 Lilin Jarak 70 cm ... 77

Gambar 4.32 Data Suhu Lilin Jarak 70 cm ... 78

Gambar 4.33 Lilin Jarak 90 cm ... 79

Gambar 4.34 Data Suhu Lilin Jarak 90 cm ... 80

Gambar 4.35 Tangan Manusia Jarak 15 cm Suhu Background 260C ... 81

Gambar 4.36 Suhu Tangan Manusia Jarak 15 cm Suhu Background 260C 82 Gambar 4.37 Tangan Manusia Jarak 20 cm Suhu Background 260C ... 83

Gambar 4.38 Suhu Tangan Manusia Jarak 20 cm Suhu Background 260C 84 Gambar 4.39 Tangan Manusia Jarak 15 cm Suhu Background 290C ... 85

Gambar 4.40 Suhu Tangan Manusia Jarak 15 cm Suhu Background 290C 86 Gambar 4.41 Tangan Manusia Jarak 25 cm Suhu Background 290C ... 87 Gambar 4.42 Suhu Tangan Manusia Jarak 25 cm Suhu Background 290C 88


(14)

U niversit as Krist e n M ara na t ha xvi

DAFTAR RUMUS

Halaman Rumus 2.1 Persamaan Garis Lurus ... 6 Rumus 2.2 Persamaan dari Interpolasi Linear ... 6


(15)

LAMPIRAN A

FOTO ALAT


(16)

A-1

SERVO VERTIKAL

TPA81 SERIAL MAX232

PROGRAMMER

ATMEGA!6

DC SUPPLY LED SERVO HORIZONTAL REGULATOR

LCD


(17)

LAMPIRAN B

SKEMATIK PERANCANGAN TPA81 UNTUK

THERMOSCANNER BERBASIS ATMEGA16


(18)

(19)

B-2

Berikut ini adalah daftar komponen dari skematik perancangan TPA81 untuk thermoscanner berbasis mikrokontroler ATmega16 yang dapat dilihat pada tabel berikut :

Nama Komponen Label Nilai

Kapasitor C1 22 pF Kapasitor C2 22 pF Kapasitor C3 1 µF/100V Kapasitor C4 1 µF/100V Kapasitor C5 1 µF/100V Kapasitor C6 1 µF/100V

Kristal Q2 11.0592 MHz Resistor R1 330 ohm Resistor R2 1k8 ohm Resistor R3 1k8 ohm Potensiometer R4 10 kohm Resistor R5 330 ohm Resistor R6 330 ohm Resistor R7 330 ohm


(20)

LAMPIRAN C

PROGRAM PADA ATMEGA16

DAN PROGRAM APLIKASI PADA MICROSOFT

VISUAL BASIC

ATMEGA16 ... C-1

PROGRAM APLIKASI PADA VISUAL BASIC ... C-9


(21)

C-1

PROGRAM ATMEGA16

/***************************************************** This program was produced by the

CodeWizardAVR V1.25.3 Standard Automatic Program Generator

© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l. http://www.hpinfotech.com

Project : Version :

Date : 10/28/2011

Author : Wilbert Tannady Company :

Comments:

Chip type : ATmega16 Program type : Application Clock frequency : 11.059200 MHz Memory model : Small

External SRAM size : 0 Data Stack size : 256

*****************************************************/ #include <mega16.h>

#include <stdio.h> #include <delay.h>

unsigned char reg,data,i,pixel[8],revision,ambient; unsigned int w =1,j,k,x;

unsigned int a,q,r; // I2C Bus functions #asm

.equ __i2c_port=0x1B ;PORTA .equ __sda_bit=6

.equ __scl_bit=7 #endasm

#include <i2c.h>

// Alphanumeric LCD Module functions #asm

.equ __lcd_port=0x15 ;PORTC #endasm


(22)

C-2 #define RXB8 1

#define TXB8 0 #define UPE 2 #define OVR 3 #define FE 4 #define UDRE 5 #define RXC 7

#define FRAMING_ERROR (1<<FE) #define PARITY_ERROR (1<<UPE) #define DATA_OVERRUN (1<<OVR)

#define DATA_REGISTER_EMPTY (1<<UDRE) #define RX_COMPLETE (1<<RXC)

// USART Receiver buffer #define RX_BUFFER_SIZE 8 char rx_buffer[RX_BUFFER_SIZE]; #if RX_BUFFER_SIZE<256

unsigned char rx_wr_index,rx_rd_index,rx_counter; #else

unsigned int rx_wr_index,rx_rd_index,rx_counter; #endif

// This flag is set on USART Receiver buffer overflow bit rx_buffer_overflow;

// USART Receiver interrupt service routine interrupt [USART_RXC] void usart_rx_isr(void) {

char status,data; status=UCSRA; data=UDR;

if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

{

rx_buffer[rx_wr_index]=data;

if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0; if (++rx_counter == RX_BUFFER_SIZE)

{

rx_counter=0;

rx_buffer_overflow=1; };

}; }


(23)

C-3 #ifndef _DEBUG_TERMINAL_IO_

// Get a character from the USART Receiver buffer #define _ALTERNATE_GETCHAR_

#pragma used+ char getchar(void) {

char data;

while (rx_counter==0); data=rx_buffer[rx_rd_index];

if (++rx_rd_index == RX_BUFFER_SIZE) rx_rd_index=0; #asm("cli")

--rx_counter; #asm("sei") return data; }

#pragma used- #endif

// Standard Input/Output functions #include <stdio.h>

// Declare your global variables here void TPA_read(){

delay_ms(40); //menunggu 40 ms untuk pembacaan yang akurat i2c_start();

i2c_write(0xD0); i2c_write(reg); i2c_start(); i2c_write(0xD1); data=i2c_read(0); i2c_stop(); }

void suhu(){ reg=0x00; TPA_read(); revision=data; reg=0x01; TPA_read(); ambient=data;

for (i=0;i<8;i++) {

reg=reg+1; // reg=0x02,0x03,...,0x09 TPA_read();

pixel[i]=data; }


(24)

C-4 }

void servo_posisi_awal(){ for (i = 0; i < 18; i++) { PORTB.0 = 1; delay_us(500); PORTB.0 = 0; delay_us(19500); }

for (i = 0; i < 15; i++) { PORTB.1 = 1; delay_us(1722); PORTB.1 = 0; delay_us(18278); }

}

void servo_posisi_awal2(){ for (i = 0; i < 18; i++) { PORTB.0 = 1; delay_us(500); PORTB.0 = 0; delay_us(19500); }

for (i = 0; i < 15; i++) { PORTB.1 = 1; delay_us(1500); PORTB.1 = 0; delay_us(18444); }

}

void main(void) {

// Declare your local variables here // Input/Output Ports initialization // Port A initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTA=0x00;


(25)

C-5 DDRA=0x00;

// Port B initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=Out Func0=Out

// State7=T State6=T State5=T State4=T State3=T State2=T State1=0 State0=0 PORTB=0x00;

DDRB=0x03;

// Port C initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTC=0x00;

DDRC=0x00;

// Port D initialization

// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In

// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T PORTD=0x00;

DDRD=0x00;

// Timer/Counter 0 initialization // Clock source: System Clock // Clock value: Timer 0 Stopped // Mode: Normal top=FFh // OC0 output: Disconnected TCCR0=0x00;

TCNT0=0x00; OCR0=0x00;

// Timer/Counter 1 initialization // Clock source: System Clock // Clock value: Timer 1 Stopped // Mode: Normal top=FFFFh // OC1A output: Discon. // OC1B output: Discon. // Noise Canceler: Off

// Input Capture on Falling Edge // Timer 1 Overflow Interrupt: Off // Input Capture Interrupt: Off // Compare A Match Interrupt: Off // Compare B Match Interrupt: Off TCCR1A=0x00;


(26)

C-6 TCNT1H=0x00;

TCNT1L=0x00; ICR1H=0x00; ICR1L=0x00; OCR1AH=0x00; OCR1AL=0x00; OCR1BH=0x00; OCR1BL=0x00;

// Timer/Counter 2 initialization // Clock source: System Clock // Clock value: Timer 2 Stopped // Mode: Normal top=FFh // OC2 output: Disconnected ASSR=0x00;

TCCR2=0x00; TCNT2=0x00; OCR2=0x00;

// External Interrupt(s) initialization // INT0: Off

// INT1: Off // INT2: Off MCUCR=0x00; MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization TIMSK=0x00;

// USART initialization

// Communication Parameters: 8 Data, 1 Stop, No Parity // USART Receiver: On

// USART Transmitter: On // USART Mode: Asynchronous // USART Baud rate: 9600 UCSRA=0x00;

UCSRB=0x98; UCSRC=0x86; UBRRH=0x00; UBRRL=0x47;

// Analog Comparator initialization // Analog Comparator: Off

// Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80;


(27)

C-7 // I2C Bus initialization

i2c_init();

// LCD module initialization lcd_init(16);

// Global enable interrupts #asm("sei")

x=1; q=1; r=1; while (1){

while(q==1){ while(r==1){

servo_posisi_awal(); r=0;

}

//step 3 derajat x=x+3; suhu();

printf("%03d#%03d#%03d#%03d#%03d#%03d#%03d#%03d#%03d\r",w++,pixe l[0],pixel[1],pixel[2],pixel[3],pixel[4],pixel[5],pixel[6],pixel[7]);

delay_ms(400); if ( w >= 45){ w=1; r=2; q=2; }

if(x>=135){ x=0;

}

//scanning

for(a=0;a<1;a++){ DDRB.0 = 1; PORTB.0 = 1; delay_us(500); for(j=0;j<x;j++){ delay_us(11); } PORTB.0= 0;


(28)

C-8 delay_us(11);

} } }

while(q==2){ while(r==2){

servo_posisi_awal2(); w=45;

r=0; }

//step 3 derajat x=x+3; suhu();

printf("%03d#%03d#%03d#%03d#%03d#%03d#%03d#%03d#%03d\r",w++,pixe l[0],pixel[1],pixel[2],pixel[3],pixel[4],pixel[5],pixel[6],pixel[7]);

delay_ms(400); if ( w == 91){ w=1; r=1; q=1; }

if(x>=135){ x=0;

}

//scanning

for(a=0;a<1;a++){ DDRB.0 = 1; PORTB.0 = 1; delay_us(500); for(j=0;j<x;j++){ delay_us(11); } PORTB.0= 0;

for(k=0;k<(1755-x);k++){ delay_us(11);

} } } };


(29)

C-9

PROGRAM APLIKASI PADA VISUAL BASIC

Dim c(1000, 1000) As Integer Dim y(1000, 1000) As Integer Private Sub Form_Load() MSComm1.CommPort = 1 MSComm1.RThreshold = 20 MSComm1.SThreshold = 1

MSComm1.Settings = "9600,n,8,1" MSComm1.PortOpen = True MSComm1.DTREnable = True Timer1.Enabled = True

RichTextBox1.Text = "" Dim i As Integer

For i = 1 To 32 Load Label80(i) Load Label81(i) Load Label82(i) Load Label90(i) Load Label91(i) Load Label92(i)

Label80(i).Top = Label80(i - 1).Top + Label80(i).Height Label81(i).Top = Label81(i - 1).Top + Label81(i).Height Label82(i).Top = Label82(i - 1).Top + Label82(i).Height Label90(i).Top = Label90(i - 1).Top + Label90(i).Height Label91(i).Top = Label91(i - 1).Top + Label91(i).Height Label92(i).Top = Label91(i - 1).Top + Label91(i).Height Label80(i).Visible = True

Label81(i).Visible = True Label82(i).Visible = True Label90(i).Visible = True Label91(i).Visible = True Label92(i).Visible = True Next i

For i = 1 To 16 Load Label1(i) Load Label2(i) Load Label3(i) Load Label4(i) Load Label5(i)


(30)

C-10 Load Label6(i)

Load Label7(i) Load Label8(i) Load Label9(i) Load Label10(i) Load Label11(i) Load Label12(i) Load Label13(i) Load Label14(i) Load Label15(i) Load Label16(i) Load Label17(i) Load Label18(i) Load Label19(i) Load Label20(i) Load Label21(i) Load Label22(i) Load Label23(i) Load Label24(i) Load Label25(i) Load Label26(i) Load Label27(i) Load Label28(i) Load Label29(i) Load Label30(i) Load Label31(i) Load Label32(i) Load Label33(i) Load Label34(i) Load Label35(i) Load Label36(i) Load Label37(i) Load Label38(i) Load Label39(i) Load Label40(i) Load Label41(i) Load Label42(i) Load Label43(i) Load Label44(i) Load Label45(i)

Label1(i).Top = Label1(i - 1).Top + Label1(i).Height Label2(i).Top = Label2(i - 1).Top + Label2(i).Height Label3(i).Top = Label3(i - 1).Top + Label3(i).Height Label4(i).Top = Label4(i - 1).Top + Label4(i).Height Label5(i).Top = Label5(i - 1).Top + Label5(i).Height Label6(i).Top = Label6(i - 1).Top + Label6(i).Height


(31)

C-11

Label7(i).Top = Label7(i - 1).Top + Label7(i).Height Label8(i).Top = Label8(i - 1).Top + Label8(i).Height Label9(i).Top = Label9(i - 1).Top + Label9(i).Height Label10(i).Top = Label10(i - 1).Top + Label10(i).Height Label11(i).Top = Label11(i - 1).Top + Label11(i).Height Label12(i).Top = Label12(i - 1).Top + Label12(i).Height Label13(i).Top = Label13(i - 1).Top + Label13(i).Height Label14(i).Top = Label14(i - 1).Top + Label14(i).Height Label15(i).Top = Label15(i - 1).Top + Label15(i).Height Label16(i).Top = Label16(i - 1).Top + Label16(i).Height Label17(i).Top = Label17(i - 1).Top + Label17(i).Height Label18(i).Top = Label18(i - 1).Top + Label18(i).Height Label19(i).Top = Label19(i - 1).Top + Label19(i).Height Label20(i).Top = Label20(i - 1).Top + Label20(i).Height Label21(i).Top = Label21(i - 1).Top + Label21(i).Height Label22(i).Top = Label22(i - 1).Top + Label22(i).Height Label23(i).Top = Label23(i - 1).Top + Label23(i).Height Label24(i).Top = Label24(i - 1).Top + Label24(i).Height Label25(i).Top = Label25(i - 1).Top + Label25(i).Height Label26(i).Top = Label26(i - 1).Top + Label26(i).Height Label27(i).Top = Label27(i - 1).Top + Label27(i).Height Label28(i).Top = Label28(i - 1).Top + Label28(i).Height Label29(i).Top = Label29(i - 1).Top + Label29(i).Height Label30(i).Top = Label30(i - 1).Top + Label30(i).Height Label31(i).Top = Label31(i - 1).Top + Label31(i).Height Label32(i).Top = Label32(i - 1).Top + Label32(i).Height Label33(i).Top = Label33(i - 1).Top + Label33(i).Height Label34(i).Top = Label34(i - 1).Top + Label34(i).Height Label35(i).Top = Label35(i - 1).Top + Label35(i).Height Label36(i).Top = Label36(i - 1).Top + Label36(i).Height Label37(i).Top = Label37(i - 1).Top + Label37(i).Height Label38(i).Top = Label38(i - 1).Top + Label38(i).Height Label39(i).Top = Label39(i - 1).Top + Label39(i).Height Label40(i).Top = Label40(i - 1).Top + Label40(i).Height Label41(i).Top = Label41(i - 1).Top + Label41(i).Height Label42(i).Top = Label42(i - 1).Top + Label42(i).Height Label43(i).Top = Label43(i - 1).Top + Label43(i).Height Label44(i).Top = Label44(i - 1).Top + Label44(i).Height Label45(i).Top = Label45(i - 1).Top + Label45(i).Height Label1(i).Visible = True

Label2(i).Visible = True Label3(i).Visible = True Label4(i).Visible = True Label5(i).Visible = True Label6(i).Visible = True Label7(i).Visible = True


(32)

C-12 Label8(i).Visible = True

Label9(i).Visible = True Label10(i).Visible = True Label11(i).Visible = True Label12(i).Visible = True Label13(i).Visible = True Label14(i).Visible = True Label15(i).Visible = True Label16(i).Visible = True Label17(i).Visible = True Label18(i).Visible = True Label19(i).Visible = True Label20(i).Visible = True Label21(i).Visible = True Label22(i).Visible = True Label23(i).Visible = True Label24(i).Visible = True Label25(i).Visible = True Label26(i).Visible = True Label27(i).Visible = True Label28(i).Visible = True Label29(i).Visible = True Label30(i).Visible = True Label31(i).Visible = True Label32(i).Visible = True Label33(i).Visible = True Label34(i).Visible = True Label35(i).Visible = True Label36(i).Visible = True Label37(i).Visible = True Label38(i).Visible = True Label39(i).Visible = True Label40(i).Visible = True Label41(i).Visible = True Label42(i).Visible = True Label43(i).Visible = True Label44(i).Visible = True Label45(i).Visible = True Next i

Open "Hasil.txt" For Output As #1 Write #1, Now

End Sub

Private Function bawah(a) For k = 1 To 29 Step 4

y(k + 1, a) = y(k, a) + (y((k - 1) + 5, a) - y(k, a)) * 0.25 y(k + 2, a) = y(k, a) + (y((k - 1) + 5, a) - y(k, a)) * 0.5


(33)

C-13

y(k + 3, a) = y(k, a) + (y((k - 1) + 5, a) - y(k, a)) * 0.75 Next k

End Function

Private Function kanan(a) For k = 1 To 29 Step 4

y(k, a - 3) = c(k, a - 4) + (y(k, a) - c(k, a - 4)) * 0.25

y(k + 1, a - 3) = c(k + 1, a - 4) + (y(k + 1, a) - c(k + 1, a - 4)) * 0.25 y(k + 2, a - 3) = c(k + 2, a - 4) + (y(k + 2, a) - c(k + 2, a - 4)) * 0.25 y(k + 3, a - 3) = c(k + 3, a - 4) + (y(k + 3, a) - c(k + 3, a - 4)) * 0.25

y(k, a - 2) = c(k, a - 4) + (y(k, a) - c(k, a - 4)) * 0.5

y(k + 1, a - 2) = c(k + 1, a - 4) + (y(k + 1, a) - c(k + 1, a - 4)) * 0.5 y(k + 2, a - 2) = c(k + 2, a - 4) + (y(k + 2, a) - c(k + 2, a - 4)) * 0.5 y(k + 3, a - 2) = c(k + 3, a - 4) + (y(k + 3, a) - c(k + 3, a - 4)) * 0.5

y(k, a - 1) = c(k, a - 4) + (y(k, a) - c(k, a - 4)) * 0.75

y(k + 1, a - 1) = c(k + 1, a - 4) + (y(k + 1, a) - c(k + 1, a - 4)) * 0.75 y(k + 2, a - 1) = c(k + 2, a - 4) + (y(k + 2, a) - c(k + 2, a - 4)) * 0.75 y(k + 3, a - 1) = c(k + 3, a - 4) + (y(k + 3, a) - c(k + 3, a - 4)) * 0.75 Next k

End Function

Private Function interpolasi_linear(a) For z = 1 To 29

If y(z, a) <= 45 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 65 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF

End If Next z

For z = 1 To 29

If y(z, a - 3) <= 45 Then

Line (20 + a - 3, 20 + (z - 1))-(20 + a - 3, 20 + z), RGB(0, 0, 2.5 * y(z, a - 3) + 50), BF

ElseIf y(z, a - 3) >= 65 Then

Line (20 + a - 3, 20 + (z - 1))-(20 + a - 3, 20 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a - 3, 20 + (z - 1))-(20 + a - 3, 20 + z), RGB(2.63 * y(z, a - 3) - 7.89, 0, 2.63 * y(z, a - 3) - 7.89), BF


(34)

C-14 End If

Next z

For z = 1 To 29

If y(z, a - 2) <= 45 Then

Line (20 + a - 2, 20 + (z - 1))-(20 + a - 2, 20 + z), RGB(0, 0, 2.5 * y(z, a - 2) + 50), BF

ElseIf y(z, a - 2) >= 65 Then

Line (20 + a - 2, 20 + (z - 1))-(20 + a - 2, 20 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a - 2, 20 + (z - 1))-(20 + a - 2, 20 + z), RGB(2.63 * y(z, a - 2) - 7.89, 0, 2.63 * y(z, a - 2) - 7.89), BF

End If Next z

For z = 1 To 29

If y(z, a - 1) <= 45 Then

Line (20 + a - 1, 20 + (z - 1))-(20 + a - 1, 20 + z), RGB(0, 0, 2.5 * y(z, a - 1) + 50), BF

ElseIf y(z, a - 1) >= 65 Then

Line (20 + a - 1, 20 + (z - 1))-(20 + a - 1, 20 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a - 1, 20 + (z - 1))-(20 + a - 1, 20 + z), RGB(2.63 * y(z, a - 1) - 7.89, 0, 2.63 * y(z, a - 1) - 7.89), BF

End If Next z End Function

Private Function interpolasi_linear_1(a) For z = 1 To 29

If y(z, a) <= 29 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 31 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(6.88 * y(z, a) - 20, 0, 0), BF

Else

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF

End If Next z

For z = 1 To 29


(35)

C-15

Line (20 + a - 3, 20 + (z - 1))-(20 + a - 3, 20 + z), RGB(0, 0, 2.5 * y(z, a - 3) + 50), BF

ElseIf y(z, a - 3) >= 31 Then

Line (20 + a - 3, 20 + (z - 1))-(20 + a - 3, 20 + z), RGB(6.88 * y(z, a - 3) - 20, 0, 0), BF

Else

Line (20 + a - 3, 20 + (z - 1))-(20 + a - 3, 20 + z), RGB(2.63 * y(z, a - 3) - 7.89, 0, 2.63 * y(z, a - 3) - 7.89), BF

End If Next z

For z = 1 To 29

If y(z, a - 2) <= 29 Then

Line (20 + a - 2, 20 + (z - 1))-(20 + a - 2, 20 + z), RGB(0, 0, 2.5 * y(z, a - 2) + 50), BF

ElseIf y(z, a - 2) >= 31 Then

Line (20 + a - 2, 20 + (z - 1))-(20 + a - 2, 20 + z), RGB(6.88 * y(z, a - 2) - 20, 0, 0), BF

Else

Line (20 + a - 2, 20 + (z - 1))-(20 + a - 2, 20 + z), RGB(2.63 * y(z, a - 2) - 7.89, 0, 2.63 * y(z, a - 2) - 7.89), BF

End If Next z

For z = 1 To 29

If y(z, a - 1) <= 29 Then

Line (20 + a - 1, 20 + (z - 1))-(20 + a - 1, 20 + z), RGB(0, 0, 2.5 * y(z, a - 1) + 50), BF

ElseIf y(z, a - 1) >= 31 Then

Line (20 + a - 1, 20 + (z - 1))-(20 + a - 1, 20 + z), RGB(6.88 * y(z, a - 1) - 20, 0, 0), BF

Else

Line (20 + a - 1, 20 + (z - 1))-(20 + a - 1, 20 + z), RGB(2.63 * y(z, a - 1) - 7.89, 0, 2.63 * y(z, a - 1) - 7.89), BF

End If Next z End Function

Private Function tampil_kanan_80(a) For i = 1 To 32

c(i, a - 4) = Val(Label80(i).Caption) Label81(i).Caption = Val(c(i, a - 4)) Next i

End Function

Private Function tampil_kanan_81(a) For i = 1 To 32


(36)

C-16 Label82(i).Caption = Val(c(i, a - 4)) Next i

End Function

Private Function tampil_kanan_82(a) For i = 1 To 32

c(i, a - 4) = Val(Label82(i).Caption) Label80(i).Caption = Val(c(i, a - 4)) Next i

End Function

Private Function tampil_bawah_82(a) For i = 1 To 32

Label82(i).Caption = Val(y(i, a)) Next i

End Function

Private Function tampil_bawah_81(a) For i = 1 To 32

Label81(i).Caption = Val(y(i, a)) Next i

End Function

Private Function tampil_bawah_80(a) For i = 1 To 32

Label80(i).Caption = Val(y(i, a)) Next i

End Function

Private Function Qbawah(a) For k = 33 To 61 Step 4

y(k + 1, a) = y(k, a) + (y((k - 1) + 5, a) - y(k, a)) * 0.25 y(k + 2, a) = y(k, a) + (y((k - 1) + 5, a) - y(k, a)) * 0.5 y(k + 3, a) = y(k, a) + (y((k - 1) + 5, a) - y(k, a)) * 0.75 Next k

End Function

Private Function Qkanan(a) For k = 33 To 61 Step 4

y(k, a - 3) = c(k, a - 4) + (y(k, a) - c(k, a - 4)) * 0.25

y(k + 1, a - 3) = c(k + 1, a - 4) + (y(k + 1, a) - c(k + 1, a - 4)) * 0.25 y(k + 2, a - 3) = c(k + 2, a - 4) + (y(k + 2, a) - c(k + 2, a - 4)) * 0.25 y(k + 3, a - 3) = c(k + 3, a - 4) + (y(k + 3, a) - c(k + 3, a - 4)) * 0.25 y(k, a - 2) = c(k, a - 4) + (y(k, a) - c(k, a - 4)) * 0.5

y(k + 1, a - 2) = c(k + 1, a - 4) + (y(k + 1, a) - c(k + 1, a - 4)) * 0.5 y(k + 2, a - 2) = c(k + 2, a - 4) + (y(k + 2, a) - c(k + 2, a - 4)) * 0.5 y(k + 3, a - 2) = c(k + 3, a - 4) + (y(k + 3, a) - c(k + 3, a - 4)) * 0.5

y(k, a - 1) = c(k, a - 4) + (y(k, a) - c(k, a - 4)) * 0.75

y(k + 1, a - 1) = c(k + 1, a - 4) + (y(k + 1, a) - c(k + 1, a - 4)) * 0.75 y(k + 2, a - 1) = c(k + 2, a - 4) + (y(k + 2, a) - c(k + 2, a - 4)) * 0.75


(37)

C-17

y(k + 3, a - 1) = c(k + 3, a - 4) + (y(k + 3, a) - c(k + 3, a - 4)) * 0.75 Next k

End Function

Private Function Qinterpolasi_linear(a) For z = 33 To 61

If y(z, a) <= 45 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 65 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF

End If Next z

For z = 33 To 61

If y(z, a - 3) <= 45 Then

Line (20 + a - 3, 18 + (z - 1))-(20 + a - 3, 18 + z), RGB(0, 0, 2.5 * y(z, a - 3) + 50), BF

ElseIf y(z, a - 3) >= 65 Then

Line (20 + a - 3, 18 + (z - 1))-(20 + a - 3, 18 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a - 3, 18 + (z - 1))-(20 + a - 3, 18 + z), RGB(2.63 * y(z, a - 3) - 7.89, 0, 2.63 * y(z, a - 3) - 7.89), BF

End If Next z

For z = 33 To 61

If y(z, a - 2) <= 45 Then

Line (20 + a - 2, 18 + (z - 1))-(20 + a - 2, 18 + z), RGB(0, 0, 2.5 * y(z, a - 2) + 50), BF

ElseIf y(z, a - 2) >= 65 Then

Line (20 + a - 2, 18 + (z - 1))-(20 + a - 2, 18 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a - 2, 18 + (z - 1))-(20 + a - 2, 18 + z), RGB(2.63 * y(z, a - 2) - 7.89, 0, 2.63 * y(z, a - 2) - 7.89), BF

End If Next z

For z = 33 To 61


(38)

C-18

Line (20 + a - 1, 18 + (z - 1))-(20 + a - 1, 18 + z), RGB(0, 0, 2.5 * y(z, a - 1) + 50), BF

ElseIf y(z, a - 1) >= 65 Then

Line (20 + a - 1, 18 + (z - 1))-(20 + a - 1, 18 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a - 1, 18 + (z - 1))-(20 + a - 1, 18 + z), RGB(2.63 * y(z, a - 1) - 7.89, 0, 2.63 * y(z, a - 1) - 7.89), BF

End If Next z End Function

Private Function Qinterpolasi_linear_1(a) For z = 33 To 61

If y(z, a) <= 29 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 31 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(6.88 * y(z, a) - 20, 0, 0), BF

Else

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF

End If Next z

For z = 33 To 61

If y(z, a - 3) <= 29 Then

Line (20 + a - 3, 18 + (z - 1))-(20 + a - 3, 18 + z), RGB(0, 0, 2.5 * y(z, a - 3) + 50), BF

ElseIf y(z, a - 3) >= 31 Then

Line (20 + a - 3, 18 + (z - 1))-(20 + a - 3, 18 + z), RGB(6.88 * y(z, a - 3) - 20, 0, 0), BF

Else

Line (20 + a - 3, 18 + (z - 1))-(20 + a - 3, 18 + z), RGB(2.63 * y(z, a - 3) - 7.89, 0, 2.63 * y(z, a - 3) - 7.89), BF

End If Next z

For z = 33 To 61

If y(z, a - 2) <= 29 Then

Line (20 + a - 2, 18 + (z - 1))-(20 + a - 2, 18 + z), RGB(0, 0, 2.5 * y(z, a - 2) + 50), BF

ElseIf y(z, a - 2) >= 31 Then

Line (20 + a - 2, 18 + (z - 1))-(20 + a - 2, 18 + z), RGB(6.88 * y(z, a - 2) - 20, 0, 0), BF


(39)

C-19

Line (20 + a - 2, 18 + (z - 1))-(20 + a - 2, 18 + z), RGB(2.63 * y(z, a - 2) - 7.89, 0, 2.63 * y(z, a - 2) - 7.89), BF

End If Next z

For z = 33 To 61

If y(z, a - 1) <= 29 Then

Line (20 + a - 1, 18 + (z - 1))-(20 + a - 1, 18 + z), RGB(0, 0, 2.5 * y(z, a - 1) + 50), BF

ElseIf y(z, a - 1) >= 31 Then

Line (20 + a - 1, 18 + (z - 1))-(20 + a - 1, 18 + z), RGB(6.88 * y(z, a - 1) - 20, 0, 0), BF

Else

Line (20 + a - 1, 18 + (z - 1))-(20 + a - 1, 18 + z), RGB(2.63 * y(z, a - 1) - 7.89, 0, 2.63 * y(z, a - 1) - 7.89), BF

End If Next z End Function

Private Function Qtampil_bawah_90(a) For i = 1 To 32

Label90(i).Caption = Val(y(i + 32, a)) Next i

End Function

Private Function Qtampil_bawah_92(a) For i = 1 To 32

Label92(i).Caption = Val(y(i + 32, a)) Next i

End Function

Private Function Qtampil_bawah_91(a) For i = 1 To 32

Label91(i).Caption = Val(y(i + 32, a)) Next i

End Function

Private Function Qtampil_kanan_90(a) For i = 1 To 32

c(i + 32, a - 4) = Val(Label90(i).Caption) Label91(i).Caption = Val(c(i + 32, a - 4)) Next i

End Function

Private Function Qtampil_kanan_91(a) For i = 1 To 32

c(i + 32, a - 4) = Val(Label91(i).Caption) Label92(i).Caption = Val(c(i + 32, a - 4)) Next i

End Function


(40)

C-20 For i = 1 To 32

c(i + 32, a - 4) = Val(Label92(i).Caption) Label90(i).Caption = Val(c(i + 32, a - 4)) Next i

End Function

Private Sub Form_Unload(Cancel As Integer) Close #1

End Sub

Private Sub Timer1_Timer()

'tampil_kanan_80 (a),tampil_kanan_82 (a),tampil_kanan_81 (a) 'tampil_bawah_82 (a),tampil_bawah_81 (a),tampil_bawah_80 (a) Dim SEMENTARA As Variant

SEMENTARA = MSComm1.Input RichTextBox1.Text = SEMENTARA Write #1, SEMENTARA

If Mid(SEMENTARA, 1, 3) = 1 Then a = 0

For i = 1 To 8

Label1(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label1(i).Caption)

Next i

bawah (0)

tampil_bawah_80 (0)

If Option1.Value = True Then For z = 1 To 29

If y(z, a) <= 45 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 65 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF

End If Next z End If

If Option2.Value = True Then For z = 1 To 29

If y(z, a) <= 29 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(0, 0, 13.1 * y(z, a) - 112.5), BF


(41)

C-21 ElseIf y(z, a) >= 31 Then

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(3.67 * y(z, a) + 71.7, 0, 0), BF

Else

Line (20 + a, 20 + (z - 1))-(20 + a, 20 + z), RGB(6 * y(z, a) - 74, 0, 6 * y(z, a) - 74), BF

End If Next z End If

ElseIf Mid(SEMENTARA, 1, 3) = 2 Then a = 4

For i = 1 To 8

Label2(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label2(i).Caption)

Next i

tampil_kanan_80 (4) bawah (4)

tampil_bawah_82 (4) kanan (4)

If Option1.Value = True Then interpolasi_linear (4) End If

If Option2.Value = True Then interpolasi_linear_1 (4) End If

ElseIf Mid(SEMENTARA, 1, 3) = 3 Then a = 8

For i = 1 To 8

Label3(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label3(i).Caption)

Next i

tampil_kanan_82 (8) bawah (8)

tampil_bawah_81 (8) kanan (8)

If Option1.Value = True Then interpolasi_linear (8) End If

If Option2.Value = True Then interpolasi_linear_1 (8) End If


(42)

C-22 ElseIf Mid(SEMENTARA, 1, 3) = 4 Then a = 12

For i = 1 To 8

Label4(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label4(i).Caption)

Next i

tampil_kanan_81 (12) bawah (12)

tampil_bawah_80 (12) kanan (12)

If Option1.Value = True Then interpolasi_linear (12) End If

If Option2.Value = True Then interpolasi_linear_1 (12) End If

ElseIf Mid(SEMENTARA, 1, 3) = 5 Then a = 16

For i = 1 To 8

Label5(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label5(i).Caption)

Next i

tampil_kanan_80 (16) bawah (16)

tampil_bawah_82 (16) kanan (16)

If Option1.Value = True Then interpolasi_linear (16) End If

If Option2.Value = True Then interpolasi_linear_1 (16) End If

ElseIf Mid(SEMENTARA, 1, 3) = 6 Then a = 20

For i = 1 To 8

Label6(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label6(i).Caption)

Next i

tampil_kanan_82 (20) bawah (20)

tampil_bawah_81 (20) kanan (20)

If Option1.Value = True Then interpolasi_linear (20)


(43)

C-23 End If

If Option2.Value = True Then interpolasi_linear_1 (20) End If

ElseIf Mid(SEMENTARA, 1, 3) = 7 Then a = 24

For i = 1 To 8

Label7(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label7(i).Caption)

Next i

tampil_kanan_81 (24) bawah (24)

tampil_bawah_80 (24) kanan (24)

If Option1.Value = True Then interpolasi_linear (24) End If

If Option2.Value = True Then interpolasi_linear_1 (24) End If

ElseIf Mid(SEMENTARA, 1, 3) = 8 Then a = 28

For i = 1 To 8

Label8(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label8(i).Caption)

Next i

tampil_kanan_80 (28) bawah (28)

tampil_bawah_82 (28) kanan (28)

If Option1.Value = True Then interpolasi_linear (28) End If

If Option2.Value = True Then interpolasi_linear_1 (28) End If

ElseIf Mid(SEMENTARA, 1, 3) = 9 Then a = 32

For i = 1 To 8

Label9(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label9(i).Caption)

Next i


(44)

C-24 bawah (32)

tampil_bawah_81 (32) kanan (32)

If Option1.Value = True Then interpolasi_linear (32) End If

If Option2.Value = True Then interpolasi_linear_1 (32) End If

ElseIf Mid(SEMENTARA, 1, 3) = 10 Then a = 36

For i = 1 To 8

Label10(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label10(i).Caption)

Next i

tampil_kanan_81 (36) bawah (36)

tampil_bawah_80 (36) kanan (36)

If Option1.Value = True Then interpolasi_linear (36) End If

If Option2.Value = True Then interpolasi_linear_1 (36) End If

ElseIf Mid(SEMENTARA, 1, 3) = 11 Then a = 40

For i = 1 To 8

Label11(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label11(i).Caption)

Next i

tampil_kanan_80 (40) bawah (40)

tampil_bawah_82 (40) kanan (40)

If Option1.Value = True Then interpolasi_linear (40) End If

If Option2.Value = True Then interpolasi_linear_1 (40) End If

ElseIf Mid(SEMENTARA, 1, 3) = 12 Then a = 44


(45)

C-25 For i = 1 To 8

Label12(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label12(i).Caption)

Next i

tampil_kanan_82 (44) bawah (44)

tampil_bawah_81 (44) kanan (44)

If Option1.Value = True Then interpolasi_linear (44) End If

If Option2.Value = True Then interpolasi_linear_1 (44) End If

ElseIf Mid(SEMENTARA, 1, 3) = 13 Then a = 48

For i = 1 To 8

Label13(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label13(i).Caption)

Next i

tampil_kanan_81 (48) bawah (48)

tampil_bawah_80 (48) kanan (48)

If Option1.Value = True Then interpolasi_linear (48) End If

If Option2.Value = True Then interpolasi_linear_1 (48) End If

ElseIf Mid(SEMENTARA, 1, 3) = 14 Then a = 52

For i = 1 To 8

Label14(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label14(i).Caption)

Next i

tampil_kanan_80 (52) bawah (52)

tampil_bawah_82 (52) kanan (52)

If Option1.Value = True Then interpolasi_linear (52) End If


(46)

C-26 interpolasi_linear_1 (52)

End If

ElseIf Mid(SEMENTARA, 1, 3) = 15 Then a = 56

For i = 1 To 8

Label15(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label15(i).Caption)

Next i

tampil_kanan_82 (56) bawah (56)

tampil_bawah_81 (56) kanan (56)

If Option1.Value = True Then interpolasi_linear (56) End If

If Option2.Value = True Then interpolasi_linear_1 (56) End If

ElseIf Mid(SEMENTARA, 1, 3) = 16 Then a = 60

For i = 1 To 8

Label16(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label16(i).Caption)

Next i

tampil_kanan_81 (60) bawah (60)

tampil_bawah_80 (60) kanan (60)

If Option1.Value = True Then interpolasi_linear (60) End If

If Option2.Value = True Then interpolasi_linear_1 (60) End If

ElseIf Mid(SEMENTARA, 1, 3) = 17 Then a = 64

For i = 1 To 8

Label17(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label17(i).Caption)

Next i

tampil_kanan_80 (64) bawah (64)


(47)

C-27 kanan (64)

If Option1.Value = True Then interpolasi_linear (64) End If

If Option2.Value = True Then interpolasi_linear_1 (64) End If

ElseIf Mid(SEMENTARA, 1, 3) = 18 Then a = 68

For i = 1 To 8

Label18(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label18(i).Caption)

Next i

tampil_kanan_82 (68) bawah (68)

tampil_bawah_81 (68) kanan (68)

If Option1.Value = True Then interpolasi_linear (68) End If

If Option2.Value = True Then interpolasi_linear_1 (68) End If

ElseIf Mid(SEMENTARA, 1, 3) = 19 Then a = 72

For i = 1 To 8

Label19(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label19(i).Caption)

Next i

tampil_kanan_81 (72) bawah (72)

tampil_bawah_80 (72) kanan (72)

If Option1.Value = True Then interpolasi_linear (72) End If

If Option2.Value = True Then interpolasi_linear_1 (72) End If

ElseIf Mid(SEMENTARA, 1, 3) = 20 Then a = 76

For i = 1 To 8


(48)

C-28 y((i - 1) * 4 + 1, a) = Val(Label20(i).Caption) Next i

tampil_kanan_80 (76) bawah (76)

tampil_bawah_82 (76) kanan (76)

If Option1.Value = True Then interpolasi_linear (76) End If

If Option2.Value = True Then interpolasi_linear_1 (76) End If

ElseIf Mid(SEMENTARA, 1, 3) = 21 Then a = 80

For i = 1 To 8

Label21(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label21(i).Caption)

Next i

tampil_kanan_82 (80) bawah (80)

tampil_bawah_81 (80) kanan (80)

If Option1.Value = True Then interpolasi_linear (80) End If

If Option2.Value = True Then interpolasi_linear_1 (80) End If

ElseIf Mid(SEMENTARA, 1, 3) = 22 Then a = 84

For i = 1 To 8

Label22(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label22(i).Caption)

Next i

tampil_kanan_81 (84) bawah (84)

tampil_bawah_80 (84) kanan (84)

If Option1.Value = True Then interpolasi_linear (84) End If

If Option2.Value = True Then interpolasi_linear_1 (84) End If


(49)

C-29

ElseIf Mid(SEMENTARA, 1, 3) = 23 Then a = 88

For i = 1 To 8

Label23(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label23(i).Caption)

Next i

tampil_kanan_80 (88) bawah (88)

tampil_bawah_82 (88) kanan (88)

If Option1.Value = True Then interpolasi_linear (88) End If

If Option2.Value = True Then interpolasi_linear_1 (88) End If

ElseIf Mid(SEMENTARA, 1, 3) = 24 Then a = 92

For i = 1 To 8

Label24(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label24(i).Caption)

Next i

tampil_kanan_82 (92) bawah (92)

tampil_bawah_81 (92) kanan (92)

If Option1.Value = True Then interpolasi_linear (92) End If

If Option2.Value = True Then interpolasi_linear_1 (92) End If

ElseIf Mid(SEMENTARA, 1, 3) = 25 Then a = 96

For i = 1 To 8

Label25(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label25(i).Caption)

Next i

tampil_kanan_81 (96) bawah (96)

tampil_bawah_80 (96) kanan (96)


(50)

C-30 interpolasi_linear (96)

End If

If Option2.Value = True Then interpolasi_linear_1 (96) End If

ElseIf Mid(SEMENTARA, 1, 3) = 26 Then a = 100

For i = 1 To 8

Label26(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label26(i).Caption)

Next i

tampil_kanan_80 (100) bawah (100)

tampil_bawah_82 (100) kanan (100)

If Option1.Value = True Then interpolasi_linear (100) End If

If Option2.Value = True Then interpolasi_linear_1 (100) End If

ElseIf Mid(SEMENTARA, 1, 3) = 27 Then a = 104

For i = 1 To 8

Label27(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label27(i).Caption)

Next i

tampil_kanan_82 (104) bawah (104)

tampil_bawah_81 (104) kanan (104)

If Option1.Value = True Then interpolasi_linear (104) End If

If Option2.Value = True Then interpolasi_linear_1 (104) End If

ElseIf Mid(SEMENTARA, 1, 3) = 28 Then a = 108

For i = 1 To 8

Label28(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label28(i).Caption)


(51)

C-31 tampil_kanan_81 (108)

bawah (108)

tampil_bawah_80 (108) kanan (108)

If Option1.Value = True Then interpolasi_linear (108) End If

If Option2.Value = True Then interpolasi_linear_1 (108) End If

ElseIf Mid(SEMENTARA, 1, 3) = 29 Then a = 112

For i = 1 To 8

Label29(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label29(i).Caption)

Next i

tampil_kanan_80 (112) bawah (112)

tampil_bawah_82 (112) kanan (112)

If Option1.Value = True Then interpolasi_linear (112) End If

If Option2.Value = True Then interpolasi_linear_1 (112) End If

ElseIf Mid(SEMENTARA, 1, 3) = 30 Then a = 116

For i = 1 To 8

Label30(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label30(i).Caption)

Next i

tampil_kanan_82 (116) bawah (116)

tampil_bawah_81 (116) kanan (116)

If Option1.Value = True Then interpolasi_linear (116) End If

If Option2.Value = True Then interpolasi_linear_1 (116) End If


(52)

C-32 a = 120

For i = 1 To 8

Label31(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label31(i).Caption)

Next i

tampil_kanan_81 (120) bawah (120)

tampil_bawah_80 (120) kanan (120)

If Option1.Value = True Then interpolasi_linear (120) End If

If Option2.Value = True Then interpolasi_linear_1 (120) End If

ElseIf Mid(SEMENTARA, 1, 3) = 32 Then a = 124

For i = 1 To 8

Label32(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label32(i).Caption)

Next i

tampil_kanan_80 (124) bawah (124)

tampil_bawah_82 (124) kanan (124)

If Option1.Value = True Then interpolasi_linear (124) End If

If Option2.Value = True Then interpolasi_linear_1 (124) End If

ElseIf Mid(SEMENTARA, 1, 3) = 33 Then a = 128

For i = 1 To 8

Label33(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label33(i).Caption)

Next i

tampil_kanan_82 (128) bawah (128)

tampil_bawah_81 (128) kanan (128)

If Option1.Value = True Then interpolasi_linear (128) End If


(53)

C-33 If Option2.Value = True Then

interpolasi_linear_1 (128) End If

ElseIf Mid(SEMENTARA, 1, 3) = 34 Then a = 132

For i = 1 To 8

Label34(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label34(i).Caption)

Next i

tampil_kanan_81 (132) bawah (132)

tampil_bawah_80 (132) kanan (132)

If Option1.Value = True Then interpolasi_linear (132) End If

If Option2.Value = True Then interpolasi_linear_1 (132) End If

ElseIf Mid(SEMENTARA, 1, 3) = 35 Then a = 136

For i = 1 To 8

Label35(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label35(i).Caption)

Next i

tampil_kanan_80 (136) bawah (136)

tampil_bawah_82 (136) kanan (136)

If Option1.Value = True Then interpolasi_linear (136) End If

If Option2.Value = True Then interpolasi_linear_1 (136) End If

ElseIf Mid(SEMENTARA, 1, 3) = 36 Then a = 140

For i = 1 To 8

Label36(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label36(i).Caption)

Next i

tampil_kanan_82 (140) bawah (140)


(54)

C-34 tampil_bawah_81 (140)

kanan (140)

If Option1.Value = True Then interpolasi_linear (140) End If

If Option2.Value = True Then interpolasi_linear_1 (140) End If

ElseIf Mid(SEMENTARA, 1, 3) = 37 Then a = 144

For i = 1 To 8

Label37(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label37(i).Caption)

Next i

tampil_kanan_81 (144) bawah (144)

tampil_bawah_80 (144) kanan (144)

If Option1.Value = True Then interpolasi_linear (144) End If

If Option2.Value = True Then interpolasi_linear_1 (144) End If

ElseIf Mid(SEMENTARA, 1, 3) = 38 Then a = 148

For i = 1 To 8

Label38(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label38(i).Caption)

Next i

tampil_kanan_80 (148) bawah (148)

tampil_bawah_82 (148) kanan (148)

If Option1.Value = True Then interpolasi_linear (148) End If

If Option2.Value = True Then interpolasi_linear_1 (148) End If

ElseIf Mid(SEMENTARA, 1, 3) = 39 Then a = 152


(55)

C-35

Label39(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label39(i).Caption)

Next i

tampil_kanan_82 (152) bawah (152)

tampil_bawah_81 (152) kanan (152)

If Option1.Value = True Then interpolasi_linear (152) End If

If Option2.Value = True Then interpolasi_linear_1 (152) End If

ElseIf Mid(SEMENTARA, 1, 3) = 40 Then a = 156

For i = 1 To 8

Label40(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label40(i).Caption)

Next i

tampil_kanan_81 (156) bawah (156)

tampil_bawah_80 (156) kanan (156)

If Option1.Value = True Then interpolasi_linear (156) End If

If Option2.Value = True Then interpolasi_linear_1 (156) End If

ElseIf Mid(SEMENTARA, 1, 3) = 41 Then a = 160

For i = 1 To 8

Label41(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label41(i).Caption)

Next i

tampil_kanan_80 (160) bawah (160)

tampil_bawah_82 (160) kanan (160)

If Option1.Value = True Then interpolasi_linear (160) End If

If Option2.Value = True Then interpolasi_linear_1 (160)


(56)

C-36 End If

ElseIf Mid(SEMENTARA, 1, 3) = 42 Then a = 164

For i = 1 To 8

Label42(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label42(i).Caption)

Next i

tampil_kanan_82 (164) bawah (164)

tampil_bawah_81 (164) kanan (164)

If Option1.Value = True Then interpolasi_linear (164) End If

If Option2.Value = True Then interpolasi_linear_1 (164) End If

ElseIf Mid(SEMENTARA, 1, 3) = 43 Then a = 168

For i = 1 To 8

Label43(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label43(i).Caption)

Next i

tampil_kanan_81 (168) bawah (168)

tampil_bawah_80 (168) kanan (168)

If Option1.Value = True Then interpolasi_linear (168) End If

If Option2.Value = True Then interpolasi_linear_1 (168) End If

ElseIf Mid(SEMENTARA, 1, 3) = 44 Then a = 172

For i = 1 To 8

Label44(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label44(i).Caption)

Next i

tampil_kanan_80 (172) bawah (172)

tampil_bawah_82 (172) kanan (172)


(57)

C-37 If Option1.Value = True Then

interpolasi_linear (172) End If

If Option2.Value = True Then interpolasi_linear_1 (172) End If

ElseIf Mid(SEMENTARA, 1, 3) = 45 Then a = 176

For i = 1 To 8

Label45(i).Caption = Mid(SEMENTARA, i * 4 + 1, 3) y((i - 1) * 4 + 1, a) = Val(Label45(i).Caption)

Next i

tampil_kanan_82 (176) bawah (176)

tampil_bawah_81 (176) kanan (176)

If Option1.Value = True Then interpolasi_linear (176) End If

If Option2.Value = True Then interpolasi_linear_1 (176) End If

'///////////////////////////////////////////////////BAWAH/////////////////////////////////////////////////// ElseIf Mid(SEMENTARA, 1, 3) = 46 Then

a = 0

For i = 9 To 16

Label1(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label1(i).Caption)

Next i Qbawah (0)

Qtampil_bawah_90 (0)

If Option1.Value = True Then For z = 33 To 61

If y(z, a) <= 45 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 65 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(0.69 * y(z, a) + 151.875, 0, 0), BF

Else

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF


(58)

C-38 Next z

End If

If Option2.Value = True Then For z = 33 To 61

If y(z, a) <= 29 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(0, 0, 2.5 * y(z, a) + 50), BF

ElseIf y(z, a) >= 31 Then

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(1.12 * y(z, a) + 31.97, 0, 0), BF

Else

Line (20 + a, 18 + (z - 1))-(20 + a, 18 + z), RGB(2.63 * y(z, a) - 7.89, 0, 2.63 * y(z, a) - 7.89), BF

End If Next z End If

ElseIf Mid(SEMENTARA, 1, 3) = 47 Then a = 4

For i = 9 To 16

Label2(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label2(i).Caption)

Next i

Qtampil_kanan_90 (4) Qbawah (4)

Qtampil_bawah_92 (4) Qkanan (4)

If Option1.Value = True Then Qinterpolasi_linear (4) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (4) End If

ElseIf Mid(SEMENTARA, 1, 3) = 48 Then a = 8

For i = 9 To 16

Label3(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label3(i).Caption)

Next i

Qtampil_kanan_92 (8) Qbawah (8)


(59)

C-39 Qkanan (8)

If Option1.Value = True Then Qinterpolasi_linear (8) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (8) End If

ElseIf Mid(SEMENTARA, 1, 3) = 49 Then a = 12

For i = 9 To 16

Label4(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label4(i).Caption)

Next i

Qtampil_kanan_91 (12) Qbawah (12)

Qtampil_bawah_90 (12) Qkanan (12)

If Option1.Value = True Then Qinterpolasi_linear (12) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (12) End If

ElseIf Mid(SEMENTARA, 1, 3) = 50 Then a = 16

For i = 9 To 16

Label5(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label5(i).Caption)

Next i

Qtampil_kanan_90 (16) Qbawah (16)

Qtampil_bawah_92 (16) Qkanan (16)

If Option1.Value = True Then Qinterpolasi_linear (16) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (16) End If

ElseIf Mid(SEMENTARA, 1, 3) = 51 Then a = 20

For i = 9 To 16


(60)

C-40 y((i - 1) * 4 + 1, a) = Val(Label6(i).Caption) Next i

Qtampil_kanan_92 (20) Qbawah (20)

Qtampil_bawah_91 (20) Qkanan (20)

If Option1.Value = True Then Qinterpolasi_linear (20) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (20) End If

ElseIf Mid(SEMENTARA, 1, 3) = 52 Then a = 24

For i = 9 To 16

Label7(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label7(i).Caption)

Next i

Qtampil_kanan_91 (24) Qbawah (24)

Qtampil_bawah_90 (24) Qkanan (24)

If Option1.Value = True Then Qinterpolasi_linear (24) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (24) End If

ElseIf Mid(SEMENTARA, 1, 3) = 53 Then a = 28

For i = 9 To 16

Label8(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label8(i).Caption)

Next i

Qtampil_kanan_90 (28) Qbawah (28)

Qtampil_bawah_92 (28) Qkanan (28)

If Option1.Value = True Then Qinterpolasi_linear (28) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (28) End If


(61)

C-41

ElseIf Mid(SEMENTARA, 1, 3) = 54 Then a = 32

For i = 9 To 16

Label9(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label9(i).Caption)

Next i

Qtampil_kanan_92 (32) Qbawah (32)

Qtampil_bawah_91 (32) Qkanan (32)

If Option1.Value = True Then Qinterpolasi_linear (32) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (32) End If

ElseIf Mid(SEMENTARA, 1, 3) = 55 Then a = 36

For i = 9 To 16

Label10(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label10(i).Caption)

Next i

Qtampil_kanan_91 (36) Qbawah (36)

Qtampil_bawah_90 (36) Qkanan (36)

If Option1.Value = True Then Qinterpolasi_linear (36) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (36) End If

ElseIf Mid(SEMENTARA, 1, 3) = 56 Then a = 40

For i = 9 To 16

Label11(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label11(i).Caption)

Next i

Qtampil_kanan_90 (40) Qbawah (40)

Qtampil_bawah_92 (40) Qkanan (40)


(62)

C-42 Qinterpolasi_linear (40)

End If

If Option2.Value = True Then Qinterpolasi_linear_1 (40) End If

ElseIf Mid(SEMENTARA, 1, 3) = 57 Then a = 44

For i = 9 To 16

Label12(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label12(i).Caption)

Next i

Qtampil_kanan_92 (44) Qbawah (44)

Qtampil_bawah_91 (44) Qkanan (44)

If Option1.Value = True Then Qinterpolasi_linear (44) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (44) End If

ElseIf Mid(SEMENTARA, 1, 3) = 58 Then a = 48

For i = 9 To 16

Label13(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label13(i).Caption)

Next i

Qtampil_kanan_91 (48) Qbawah (48)

Qtampil_bawah_90 (48) Qkanan (48)

If Option1.Value = True Then Qinterpolasi_linear (48) End If

If Option2.Value = True Then Qinterpolasi_linear_1 (48) End If

ElseIf Mid(SEMENTARA, 1, 3) = 59 Then a = 52

For i = 9 To 16

Label14(i).Caption = Mid(SEMENTARA, i * 4 - 31, 3) y((i - 1) * 4 + 1, a) = Val(Label14(i).Caption)


(1)

(2)

BAB I

PENDAHULUAN

Pada bab ini akan dibahas mengenai latar belakang, perumusan masalah, tujuan, spesifikasi alat, pembatasan masalah, dan sistematika pembahasan.

1.1 Latar Belakang

Pada industri tertentu sering kali dibutuhkan pendeteksian suhu tanpa menyentuh bidang permukaan. Misalnya untuk mendapatkan informasi kopling yang rusak pada mesin uap, kerusakan isolasi pipa penghubung pada mesin uap, anomali suatu permukaan pada dinding, lantai atau kondisi bawah tanah, kontaktor pada motor. Untuk mendapatkan informasi/pendeteksian permukaan radiasi panas adalah dengan cara mengukur suhunya. Oleh karena itu, diperlukan thermopile array untuk thermoscanner yaitu sensor suhu yang dapat melakukan proses scanning untuk mendapatkan suhu objek.

Sensor suhu terbagi dua kelompok yakni sensor kontak dan sensor non-kontak. Beberapa contoh sensor kontak adalah termokopel, termistor, RTD dan salah satu contoh sensor non-kontak adalah sensor thermopile array TPA81 yang menghasilkan pendeteksian dalam derajat celcius.

Pada Tugas Akhir ini, digunakan sensor thermopile array TPA81 yang dapat bekerja dengan cara mendeteksi radiasi panas kemudian memvisualisasikan radiasi permukaan panas objek dalam bentuk warna semu (false colour) di komputer dengan menggunakan program aplikasi pada software Microsoft Visual Basic. TPA81 dapat mendeteksi sinar infra merah dengan panjang gelombang

2µm – 22µm. Keuntungannya yakni kemampuannya mendeteksi temperatur objek


(3)

1.2 Identifikasi Masalah

Identifikasi masalah dari Tugas Akhir ini adalah bagaimana menggunakan thermopile array untuk thermoscanner dan mengirimkan data tersebut ke komputer serta menampilkan visualisasi radiasi permukaan panas objek dengan citra warna semu.

1.3 Tujuan

1. Merancang dan merealisasikan perangkat pendeteksi permukaan panas objek dengan menggunakan thermopile array tanpa harus menyentuh objek.

2. Menampilkan visualisasi radiasi permukaan panas objek dalam bentuk warna semu (false colour) di komputer.

1.4 Pembatasan Masalah

Agar permasalahan yang dibahas terfokus dan tidak melebar, maka Tugas Akhir dengan judul “Aplikasi Thermopile Array untuk Thermoscanner Berbasis Mikrokontroler ATmega16” mengambil batasan masalah sebagai berikut:

1. Pendeteksian temperatur objek dengan thermopile array sebagai Thermoscanner, dilakukan pada jarak di bawah 1 meter.

2. Alat yang akan direalisasikan hanya diperuntukan di dalam ruangan (indoor).

3. Range temperatur objek yang dideteksi adalah 20oC – 150oC.

4. Objek yang dideteksi hanya permukaan panas objek dan permukaannya dianggap bidang 2D.

5. Program aplikasi pada komputer dibuat dengan menggunakan software Microsoft Visual Basic.


(4)

3

1.5 Spesifikasi Alat

Spesifikasi alat yang digunakan pada Tugas Akhir ini adalah sebagai berikut:

1. Thermopile array TPA81

2. Servo 2 buah 3. LCD

4. Mikrokontroler ATmega16

1.6 Sistematika Penulisan

Sistematika penulisan laporan ini disusun menjadi lima bab, yaitu sebagai berikut:

BAB I PENDAHULUAN

Bab ini membahas tentang latar belakang, identifikasi masalah, tujuan, pembatasan masalah, spesifikasi alat dan sistematika pembahasan.

BAB II DASAR TEORI

Bab ini membahas tentang radiasi benda hitam, emisivitas, hukum radiasi, interpolasi linear, warna, thermal array sensor, motor servo, LCD, mikrokontroller ATmega16 dan RS 232.

BAB III PERANCANGAN DAN REALISASI

Bab ini membahas perancangan pendeteksian panas permukaan dengan menggunakan thermopile array TPA81, servo, LCD, algoritma pemrograman pada ATmega16 dan program aplikasi pada Microsoft Visual Basic.

BAB IV HASIL DAN ANALISA

Bab ini menjelaskan hasil pengamatan dan analisa data dari pengujian black body kalibrator, lilin, tangan manusia dengan menggunakan program aplikasi pada Software Microsoft Visual Basic.


(5)

KESIMPULAN DAN SARAN

Bab ini berisi kesimpulan dari Tugas Akhir dan saran-saran yang perlu dilakukan untuk perbaikan di masa yang akan datang.

V.1 Kesimpulan

Dengan memperhatikan data pengamatan dan analisis pada bab sebelumnya, dalam Tugas Akhir ini dapat disimpulkan bahwa:

1. Perancangan dan realisasi perangkat pendeteksi panas permukaan objek dengan menggunakan TPA81 telah berhasil menampilkan visualisasi radiasi panas permukaan objek dengan citra warna semu.

2. Hasil visualisasi radiasi panas permukaan objek dalam bentuk warna semu lebih baik, jika terdapat perbedaan suhu di atas 90C antara suhu background dengan suhu objek yang dideteksi dan pada jarak kurang dari 30 cm.

3. Persentase kesalahan yang paling kecil dari sensor thermopile array TPA81 dibandingkan dengan alat ukur thermal camera adalah pada jarak 40 cm.

V.2 Saran

Saran-saran yang dapat diberikan untuk perbaikan dan pengembangan dari Tugas Akhir ini adalah alat ini dapat dikembangkan sebagai alat ukur tetapi diperlukan adanya kalibrasi dari sensor karena pada Tugas Akhir ini hanya memvisualisasi radiasi panas permukaan objek, sedangkan keakurasiannya belum akurat.


(6)

DAFTAR PUSTAKA

1. Andrianto, H., Buku Panduan : Pelatihan Mikrokontroler AVR ATmega16, 2008.

2. Datasheet, ATMega16, Atmel, http://www.atmel.com

3. http://www.robot-electronics.co.uk/htm/tpa81tech.htm (8 September 2011). 4. http://servocity.com/html/s3003_servo_standard.html (8 September 2011). 5. http://nenysmadda.ucoz.org/news/radiasi_benda_hitam/2011-01-03-94

(14aNovember 2011).

6. http://lecturer.eepis-its.edu/~alfaruqi/mnumerik/bab8tm.pdf (8 September 2011).

7. http://id.wikipedia.org/wiki/Warna (8 September 2011).

8. http://www.scribd.com/doc/27646114/Radiasi-Benda-Hitam (14 November 2011)

9. Planck, M. (1914). The Theory of Heat Radiation. Masius,M. (transl.) (2nd ed.) (14 November 2011).