1 PENGUKURAN DISTRIBUSI TEMPERATUR PADA PELAT LOGAM MENGGUNAKAN METODE FINITE ELEMENT AGUNG RIDWAN SN DEPARTEMEN FISIKA FAKULTAS MATEMATIKA DAN ILMU P...
PENGUKURAN DISTRIBUSI TEMPERATUR PADA PELAT LOGAM MENGGUNAKAN METODE FINITE ELEMENT
AGUNG RIDWAN SN
DEPARTEMEN FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR 2010
1
ABSTRACT AGUNG RIDWAN SN. Measuring Thermal Distribution of Metal Plate Using Finite Element Method. Supervised by Mahfudin Zuhri, M.Si dan Faozan Ahmad, M.Si. To measure temperature in an object, we use temperature sensor. But what if the temperature which we are going to measure has many of nodes? Putting all sensors on that nodes is less efficient. Solution for this problem is reducing the quantity of sensors and put it on boundary system and use that for computation purpose. This research was using finite element method two-dimensional with triangular element. The output for this research is distribution of heat transfer on metal surface. This research measuring thermal conductivity metal plate in steady state problem in twodimensional conductivity direction. The comparison between measurement with digital thermometer EXTECH and computational finite element method on node coordinate (21, 5.5) is 98.18%, node (21, 1.1) is 96.67%, node 28, 5.5) is 97.55%, node (21, 33.9) is 97.96%. Keywords : finite element method, digital thermometer EXTECH, metal plate, data-logger.
2
ABSTRAK AGUNG RIDWAN SN. Pengukuran Distribusi Temperatur pada Pelat Logam Menggunakan Metode Finite Element. Dibimbing oleh Mahfudin Zuhri, M.Si dan Faozan Ahmad, M.Si. Pengukuran temperatur dapat dilakukan dengan menggunakan thermometer. Namun bagaimana jika nilai temperatur yang ingin dicari lebih dari satu titik pengukuran. Apakah berarti harus menggunakan banyak sensor dan memasangnya di tiap titik pengukuran? Tentu saja hal ini menjadi tidak efisien. Solusi dari permasalahan tersebut adalah mengurangi penggunaan sensor dan menempatkan sensor pada sistem boundary yang mana akan menjadi nilai referensi perhitungan komputasi. Metode numerik yang dipakai pada penelitian ini adalah metode elemen hingga (Finite Element Method). Metode ini dapat mengefisienkan penggunaan sensor karena hanya dipasang pada wilayah boundary saja. Hasil keluarannya adalah distribusi penyebaran temperatur pada titik-titik di dalam boundary system. Penelitian ini melakukan pengukuran konduktivitas termal dalam keadaan steady state pada pelat logam dengan arah bidang rambat konduksi dua dimensi. Hasil pengukuran distribusi temperatur dengan membandingkan pengukuran pada digital thermometer EXTECH dengan perhitungan metode elemen hingga mendapat nilai ketepatan di titik (21, 5,5) sebesar 98.18 %, titik (21, 1,1) sebesar 96,67%, titik (28, 5,5) sebesar 97.55%, titik (21, 33,9) sebesar 97,96%. Kata kunci : metode finite element, digital thermometer EXTECH, pelat logam, data logger.
3
PENGUKURAN DISTRIBUSI TEMPERATUR PADA PELAT LOGAM MENGGUNAKAN METODE FINITE ELEMENT
AGUNG RIDWAN SN
SKRIPSI Sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains pada Program Studi Fisika
DEPARTEMEN FISIKA FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM INSTITUT PERTANIAN BOGOR 2010
4
RIWAYAT HIDUP Penulis dilahirkan di Jakarta pada tanggal 1 Mei 1987/2 Ramadhan 1407 H buah dari pasangan Bambang Anggoro dan Darminingsih. Penulis merupakan anak kedua dari dua bersaudara. Memiliki satu kakak yang bernama Endang Pusnita R. Pendidikan penulis dimulai tahun 1992 di sebuah TK (Taman Kanak-kanak) kecil yang bernama TK. Dahlia. Kemudian melanjutkan ke Sekolah Dasar Negeri (SDN) 1 Cirendeu pada tahun 1993 dan lulus tahun 1999. Pada tahun yang sama penulis melanjutkan studi ke Sekolah Lanjutan Pertama Negeri (SLTPN) 1 Ciputat (sekarang SMPN 2 Kota Tangerang Selatan) dan lulus tahun 2002. Di jenjang ini penulis sempat masuk kelas unggulan dan mulai mengalami banyak perubahan pola pikir. Lalu penulis melanjutkan studi ke SMAN 1 Ciputat (sekarang SMAN 1 Kota Tangerang Selatan) dan lulus tahun 2005. Pada tahun 2005, penulis diterima melanjutkan studi di Institut Pertanian Bogor (IPB) melalui jalur Seleksi Penerimaan Mahasiswa Baru (SPMB) program Mayor-Minor. Setahun kemudian penulis diterima masuk di Departemen Fisika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Institut Pertanian Bogor pada tahun 2006. Selama perkuliahan, penulis tidak hanya belajar namun juga sempat mengikuti aktivitas organisasi di luar seperti Majelis Ta’lim Al Furqon, dan menjadi panitia pada beberapa kesempatan acara yang diadakan oleh himpunan profesi (HIMAFI). Penulis juga sempat menjadi Asisten Praktikum Elektronika Lanjut (Bapak Ardian Arief, M.Si), Asisten Praktikum Teknologi Nirkabel (Bapak Mahfuddin Zuhri, M.Si), Asisten Praktikum Sistem Operasi dan Jaringan Komputer (Bapak Faozan Ahmad, M.Si), dan Asisten Cisco Networking Academy Program IPB.
5
LEMBAR PENGESAHAN
Judul
: Pengukuran Distribusi Temperatur pada Pelat Logam Menggunakan Metode Finite Element
Nama
: Agung Ridwan SN
NRP
: G4051818
Menyetujui :
Pembimbing I
Pembimbing II
(Mahfuddin Zuhri, M.Si)
(Faozan Ahmad, M.Si)
NIP:196911041997021001
NIP: 197909232007011001
Mengetahui : Ketua Departemen
(Dr. Ir. Irzaman, M.Si.) NIP: 196307081995121001
Disetujui tanggal:
6
KATA PENGANTAR Alhamdulillahirobbil’alamin, puji dan syukur penulis panjatkan hanya kepada Allah Subhanahu wa Ta’ala. Sholawat serta salam semoga tercurah kepada Rasulullah Shallallahu ‘alaihi wa Sallam. Dengan rahmat-Nya penulis dapat menyelesaikan skripsi yang berjudul “Pengukuran Distribusi Temperatur pada Pelat Logam Menggunakan Metode Finite Element” sebagai salah satu syarat untuk memperoleh gelar Sarjana Sains (S.Si) Departemen Fisika Institut Pertanian Bogor. Dalam penyusunan penelitian ini penulis ingin berterima kasih kepada pihak-pihak yang telah banyak membantu baik berupa dukungan materil maupun moril: Bapak Mahfuddin Zuhri, M.Si dan Bapak Faozan Ahmad, M.Si selaku dosen pembimbing atas ilmu, waktu, saran dan kritik yang sangat berharga. Ibu dan Bapak serta kakak tercinta yang selalu siap membantu dalam doa, motivasi, dan lainnya. Maaf, kalau masih merepotkan. ^^ Ibnu Sudar, Abu Sufyan, Ibnu Salam, Mas Abdur Rahmat yang selalu cerewet tentang skripsi penulis, serta seluruh warga At Tauhid, Al Furqon, Al Ghuroba, dan seluruh ikhwan Salafiyyin atas nasehat dan semangatnya. Seluruh Teman-teman Fisika 42. Terima kasih atas kebersamaan yang telah diberikan. Khususnya untuk mikonerz dan exper-erz. Ka Subhi makasih atas sensor dan supportnya, Pa Mamat makasih atas kesempatannya, Auriza makasih atas codingnya, Fisika 40,41,43 & ALL: thanks for everything. Pa Firman, Pa Toni, Pa Jun, Bu Dini, seluruh dosen, staf, dan laboran Fisika IPB. Rekan-rekan DKSI IPB yang telah kehilangan penulis karena penyelesaian skripsi ini. Semua pihak yang telah ikut berperan dalam penyusunan proposal ini yang mungkin belum disebut satu-persatu. Penulis menyadari bahwa penyusunan skripsi ini masih jauh dari kesempurnaan. Oleh karena itu penulis mengharapkan masukan baik kritikan, saran maupun koreksi yang sifatnya membangun. Semoga karya ini dapat bermanfaat untuk umat. Wassalaamu’alaykum Warahmatullah Wabarakatuh
Bogor, Oktober 2010
Agung Ridwan SN
8
DAFTAR ISI Halaman KATA PENGANTAR ..................................................................................................................... i DAFTAR ISI ................................................................................................................................... ii DAFTAR TABEL ........................................................................................................................... iii DAFTAR GAMBAR ....................................................................................................................... iv PENDAHULUAN ........................................................................................................................... 1 Latar Belakang ...................................................................................................................... 1 Tujuan................................................................................................................................... 1 Hipotesa ................................................................................................................................ 1 TINJAUAN PUSTAKA .................................................................................................................. 1 Sensor Temperatur DS18b20 ................................................................................................. 1 Embedded Networked DSTINIm400 ..................................................................................... 2 Bahasa Pemrograman Java .................................................................................................... 2 Bahasa Pemrograman XML dan XSL .................................................................................... 3 Bahasa Pemrograman PHP dan AJAX................................................................................... 3 Metode Elemen Hingga ......................................................................................................... 3 Konduksi Thermal Dua Dimensi ........................................................................................... 4 Database MySQL .................................................................................................................. 5 SolidWorks 2009 SP 2.1 ....................................................................................................... 5 ALAT DAN METODE ................................................................................................................... 5 Waktu dan Tempat ................................................................................................................ 5 Alat dan Bahan...................................................................................................................... 5 Metode Penelitian ................................................................................................................. 5 Persiapan Alat dan Bahan ............................................................................................... 5 Pembuatan Program ....................................................................................................... 6 Analisis Keluaran Data ................................................................................................... 6 HASIL DAN PEMBAHASAN ........................................................................................................ 6 Sensor Temperatur ................................................................................................................ 6 Pemanas ................................................................................................................................ 7 Data Logger Temperatur ....................................................................................................... 7 Metode Elemen Hingga ......................................................................................................... 7 KESIMPULAN DAN SARAN ........................................................................................................ 8 DAFTAR PUSTAKA ...................................................................................................................... 8 LAMPIRAN .................................................................................................................................... 9
9
DAFTAR TABEL No.
Halaman LAMPIRAN
1. 2. 3. 4. 5. 6.
Perbandingan data eksperimen (Extech) dengan data literatur (FEM) ...................................... 7 Data temperatur pemanas terhadap waktu ............................................................................... 11 Terminologi matriks untuk metode elemen hingga .................................................................. 13 MAC Address (64-bit unique) sensor temperatur DS18b20 ..................................................... 13 Resolusi sensor temperatur ds18b20........................................................................................ 13 Karakteristik sensor DS18b20 ................................................................................................. 13
10
DAFTAR GAMBAR No.
Halaman TEKS
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Sensor suhu DS18B20 ............................................................................................................ 1 Blok diagram daya internal pada DS18B20 ............................................................................. 1 Blok diagram daya external pada DS18B20 ............................................................................ 1 Blok diagram DS18B20 .......................................................................................................... 1 Modul DSTINIm400 ............................................................................................................... 2 Diagram Modul DSTINIm400 ................................................................................................ 2 Heatsink Compounds .............................................................................................................. 5 Setup Pengukuran ................................................................................................................... 5 Diagram Alur Penelitian ......................................................................................................... 6 Format Data Keluaran DS18b20 ............................................................................................. 6 Hubungan temperatur dengan waktu ....................................................................................... 7 Diskritisasi Menggunakan Elemen Triangular ......................................................................... 7 Meshing menjadi beberapa elemen.......................................................................................... 7 Probe Nilai Temperature di Node Mesh Object ....................................................................... 7
LAMPIRAN 1. 2. 3.
Sebuah pelat dengan kondisi batas temperatur yang berbeda ................................................... 14 Diskritisasi menggunakan elemen triangular ........................................................................... 14 Desain antarmuka pengambilan data menggunakan PHP & AJAX .......................................... 15
11
LAMPIRAN No.
Halaman LAMPIRAN
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Rumus Ketepatan .................................................................................................................... 14 Contoh perhitungan menggunakan metode elemen hingga ...................................................... 14 Skema Mikrokontroller DSTINIm400 ..................................................................................... 16 Program utama (tws.java) ....................................................................................................... 17 Contoh konfigurasi pada (prefs.ini) ......................................................................................... 30 Program XML (weather.xml) .................................................................................................. 30 Program PHP (index.php) untuk mengambil data dari mikrokontroller ke PC Server .............. 32 Program PHP (table.php) untuk menampilkan tabel temperatur............................................... 33 Program PHP (dbkoneksi.php) untuk menghubungkan ke Database MySQL .......................... 34 Program PHP (logsaver.php) untuk menyimpan data temperatur ............................................. 34 Stylesheet CSS (style.css) ....................................................................................................... 36 SQL Struktur data tws table log .............................................................................................. 37
12
PENDAHULUAN Latar Belakang Pengukuran temperatur dapat dilakukan dengan menggunakan thermometer. Namun bagaimana jika nilai temperatur yang ingin dicari lebih dari satu titik pengukuran. Apakah berarti harus menggunakan banyak sensor dan memasangnya di tiap titik pengukuran? Tentu saja hal ini menjadi tidak efisien. Solusi dari permasalahan tersebut adalah mengurangi penggunaan sensor dan menempatkan sensor pada titik-titik tertentu kemudian dengan menggunakan metode numerik akan dilakukan penghitungan terhadap titik-titik tertentu yang ingin diketahui dengan referensi nilai temperatur sensor. Metode numerik yang dipakai pada penelitian ini adalah metode elemen hingga (Finite Element Method). Metode ini dapat mengefisienkan penggunaan sensor karena hanya dipasang pada wilayah boundary saja. Hasil keluarannya adalah distribusi penyebaran temperatur pada titik-titik di dalam boundary system. Penelitian ini melakukan pengukuran konduktivitas termal dalam keadaan steady state pada pelat alumunium dengan arah bidang rambat konduksi dua dimensi. Tujuan Penelitian ini bertujuan untuk mengetahui suhu di beberapa titik permukaan pelat dengan menggunakan metode elemen hingga. Hipotesis Penyebaran distribusi temperatur dalam keadaan steady state di tiap titik pada difusi konduksi termal akan berbeda tapi dengan nilai heat transfer (q) yang konstan.
data keluaran, dan VDD untuk daya device. Salah satu keunggulan lain yaitu device ini tidak memerlukan daya dari luar, daya dapat diambil langsung oleh device ini dari kaki DQ atau kaki untuk data, istilah lainnya yaitu parasite power. Bentuk contoh rangkaiannya dapat dilihat pada Gambar 2. Jika DS18b20 yang digunakan sedikit maka dapat menggunakan pendayaan dari luar, melalui kaki VDD, rangkaiannya dapat dilihat pada Gambar 3. Namun jika device yang dipasangkan berjumlah banyak baiknya menggunakan parasite power. Daya yang dibutuhkan sensor ini berkisar antara 3,0 V sampai 5,5 V.
Gambar 1. Sensor suhu DS18B20
Gambar 2. Blok diagram daya internal pada DS18B20
Gambar 3. Blok diagram daya external pada DS18B20
TINJAUAN PUSTAKA Sensor Temperatur DS18b20 Sensor DS18b20 merupakan jenis sensor onewire yang dikeluarkan oleh Dallas Semiconductor. DS18b20 merupakan sensor suhu yang telah memiliki keluaran digital sehingga tidak diperlukan rangkaian ADC (Analog Digital Converter) dan proporsional dengan suhu pada orde derajat Celcius. Bentuk fisik dari DS18b20 dapat terlihat pada Gambar 1, device ini mempunyai tiga kaki yang terdiri dari GND untuk ground, DQ untuk data masukan atau
Gambar 4. Blok diagram DS18B20 Gambar 4 memperlihatkan struktur DS18b20. Sebanyak 64-bit ROM pada device menyimpan kode serial unik yang digunakan sebagai pembeda device satu dengan yang lain sehingga mikrokontroler dapat mengenalinya. Kode unik itu disebut
13
dengan MAC Address. Memori scratchpad mengandung register 2-bit yang digunakan untuk menyimpan keluaran digital dari sensor temperatur. Sebagai tambahan, scratchpad menyediakan akses ke 1-byte Upper dan Lower alarm register trigger (TH dan TL). Register TH dan TL adalah nonvolatile (EEPROM), sehingga alat ini dapat mempertahankan data saat tidak dihubungkan dengan catu daya. DS18b20 menggunakan 1-wire bus protokol eksklusif yang menerapkan bus komunikasi menggunakan satu sinyal kendali. Garis kendali memerlukan strong pull-up resistor karena semua device dihubungkan melalui 3-state atau port open drain (pin DQ). Dalam sistem bus ini, mikrokontroler mengidentifikasi dan melakukan pengalamatan device pada bus menggunakan kode 64-bit yang unik. [1] Embedded Networked DSTINIm400 DSTINIm400 (Dallas Semiconductor Tiny Internet Interface module) merupakan sebuah modul yang dapat digunakan untuk keperluan embedded networked system. Modul ini sangat cocok digunakan dalam perancangan embedded server. Hal ini dikarenakan modul ini dapat bekerja seperti komputer atau disebut juga Single Board Computer. Modul ini bekerja dengan menggunakan sistem operasi seperti halnya sebuah komputer. Sistem operasinya dinamakan dengan TinyOS (Tiny Operating System). Dalam sistem operasi DSTINIm400 telah terdapat JRE (Java Runtime Evironment) sehingga pengembangan aplikasi dapat dilakukan dalam bahasa tingkat tinggi (High-Level Language) yaitu dengan menggunakan bahasa pemrograman Java. Pada dasarnya komponen inti dari modul DSTINIm400 adalah sebuah mikrokontroler jaringan (network microcontroller) tipe DS80C400, dimana mikrokontroller ini merupakan mikrokontroler yang telah menyertakan 10/100 Ethernet, TCP IPv4/6 network stack dan firmware yang telah di-burning ke dalam ROM-nya. Selain TCP IP, DS80C400 ini juga mendukung komunikasi via protokol UDP (User Datagram Protocol), DHCP (Dynamic Host Configuration Protocol), ICMP, dan IGMP. Oleh karena itu, modul DSTINIm400 ini sangat reliable untuk komunikasi jaringan lokal maupun internet. Selain mikrokontroler DS80C400 sebagai komponen utama, DSTINIm400
juga memiliki memori flash dan RAM sebesar 1MB, hal ini yang membuat DSTINIm400 dapat beroperasi dengan menggunakan sistem operasi. Untuk keterangan lebih lanjut mengenai modul DSTINIm400 ini, dapat mengacu pada datasheet yang terlampir. Bentuk fisik dari modul DSTINIm400 dapat dilihat pada Gambar 5. Diagram modul DSTINIm400 dapat dilihat pada Gambar 6. [2]
Gambar 5. Modul DSTINIm400
Gambar 6. Diagram Modul DSTINIm400 Bahasa Pemrograman Java Java merupakan bahasa pemograman berorientasi objek yang dikembangkan oleh perusahaan Sun Microsytems, yang terkenal dengan Workstation High-end-nya. Java merupakan pengembangan dari bahasa pemograman C++ yang dirancang memiliki ukuran yang lebih kecil, source dan binary level-nya sederhana, dapat digunakan untuk platform dan sistem operasi apapun. Dengan jargon ”write once, run everywhere” menunjukkan bahwa program java dapat dijalankan pada mesin apa saja dengan syarat mempunyai fasilitas JVM (Java Virtual Machine). [3] Untuk memudahkan kompilasi listing program, menjalankan program, membuat file aplikasi java, dan mengubah ekstensi .class menjadi .tini, dalam penelitian ini menggunakan IDE (Integrated Development Environment) Borland JBuilder 9 Enterprise. Keunggulan dari software ini yaitu : Terdapat error correction dan auto suggestion terhadap kesalahan listing program yang dibuat.
14
Tampilan GUI (Graphical User Interface) Mudah digunakan Dapat menentukan path dengan mudah Dengan menambah library TINIConverter dapat mengubah file .class menjadi .tini Dapat menempatkan secara langung file .tini ke dalam mikrokontroller TINI. [4] Bahasa Pemrograman XML dan XSL XML (Extensible Markup Language) adalah bahasa markup, markup digunakan untuk menyampaikan informasi tentang beberapa teks atau data lain. XML berbeda dari bahasa markup seperti HTML (Hypertext Markup Language) karena XML dapat memiliki jumlah elemen jenis nama yang sering disebut informal tag name, Sehingga memberikan kemampuan yang lebih fleksibel kepada para programmer web. XML dikembangan oleh grup kerja xml (awalnya SGML Editorial Review Board) dibawah badan W3C (World Wide Web Consortium) pada tahun 1996. XML adalah class dari object data yang disebut XML document. XML dokumen dapat digunakan untuk menyimpan data yang Anda simpan sebagai huruf, laporan, manual dan sebagainya atau data yang mungkin anda hubungkan dengan database. [5] XSL dirancang untuk digunakan dengan XML dokumen untuk mentransformasikan data dalam bentuk yang sesuai untuk presentasi dalam konteks tertentu atau menjadi alternatif struktur XML. XSL cocok untuk membuat dokumen HTML dari server-side XML dengan HTML yang dihasilkan diproses oleh pengguna Web browser dengan cara biasa. XSL memiliki output untuk mengaktifkan modus HTML output yang akan ditentukan. Selain itu, XSL dapat digunakan untuk memproduksi HTML browser untuk desktop, dan WML (Wireless Markup Language) untuk mobile browser yang sama dari XML penyimpan data. [6] Bahasa Pemrograman PHP dan AJAX PHP adalah bahasa server-side yang termasuk bahasa pemrograman kode sumber terbuka (opensource). Maksud server-side berarti kode sumber berada disisi server.
Sedangkan AJAX (Asynchronuous Javascript and XML) adalah teknik untuk me-request dan respond halaman web yang bekerja terus-menerus secara background. Pada penelitian ini menggunakan framework jQuery versi 1.3.2. Keunggulan PHP yaitu: - Kode sumber terbuka. - Mendukung penulisan dari bahasa prosedural hingga Object Oriented Programming (OOP). - Ringan digunakan. - Tidak membutuhkan compiler hanya butuh web server saja. - Tidak harus mendefinisikan variabel di awal program. Variabel dapat digunakan kembali. - Skalabilitas sehingga dipakai oleh perusahaan besar seperti facebook. Keunggulan AJAX yaitu: - Auto reload request suatu halaman sehingga menjadi halaman yang dinamis. - Bekerja secara background dengan menggunakan sumber daya client. - Cepat, karena setiap saat ada perubahan akan segera di-request. - Dapat membuat website semakin responsif dan dinamis. [7] Data dari XML ‘dijemput’ oleh script php yang secara asinkron dipanggil terusmenerus oleh AJAX tiap dua detik. Metode Elemen Hingga Metode Elemen Hingga (FEM) adalah sebuah teknik numerik yang digunakan untuk memperkirakan suatu problem fisis dari persamaan diferensial parsial pada persoalan yang menyangkut aliran fluida, analisa struktur, dan lainnya dengan mendiskritisasikan suatu objek menjadi bagian kecil (elemen hingga). Metode pendekatan yang sering digunakan saat merumuskan problem fisis ke dalam diskritisasi metode elemen hingga, yaitu metode Galerkin dan metode Variasi [8][9]. Pada penelitian ini menggunakan metode Galerkin yang didasarkan pada minimasi residu yang tertinggal setelah suatu solusi pendekatan disubtitusikan ke dalam persamaan diferensial dari suatu problem fisis. Ide utama dari metode elemen hingga adalah untuk memecahkan elemen yang sangat kompleks dengan batasan yang tidak ditentukan menjadi suatu elemen dengan batasan yang kecil. Masing-masing elemen
15
diperhitungkan sebagai bagian dalam permasalahan utama, dimana terdapat hubungan antarelemen yang saling berkaitan melalui informasi global tentang deformasi, yang biasanya berhubungan dengan karakteristik elemen. Keakuratan metode elemen hingga dapat ditingkatkan dengan cara menyempurnakan mesh pada model dengan menambahkan elemen dan nodes. Metode ini disebut dengan hp-FEM. Keunggulan dari metode elemen hingga adalah dapat menyelesaikan persoalan sistem yang kompleks dimana tidak dapat diselesaikan dengan perhitungan analitis, dapat menghitung dari persamaan linear hingga persamaan nonlinear, penghitungan secara komputasi ini menjadi sangat efisien, dan untuk beberapa permasalahan metode ini mungkin adalah satu-satunya cara. Komputer digunakan untuk melakukan jutaan penghitungan yang diperlukan untuk mensimulasikan elemen-elemen penyusun suatu model yang kompleks yang digunakan dalam pemodelan atau simulasi ini. Software yang digunakan adalah SolidWorks 2009 SP 2.1 versi standard. Konduksi Thermal Dua Dimensi Pada penelitian ini menggunakan distribusi konduksi thermal pada pelat logam dalam bidang dua dimensi arah rambatnya. Konduksi thermal dua dimensi dituliskan dengan: [10] 𝜕𝑇 (1) 𝒒𝑥 = −𝑘𝑥𝑥 𝒒𝑦 = −𝑘𝑦𝑦
𝜕𝑥 𝜕𝑇
(2)
𝜕𝑦
dimana : q : konduksi thermal [J] kxx = kyy : konduktivitas thermal [J/oCms] T : Temperatur [oC] Jika dituliskan dengan matrix menjadi: 𝑞𝑥 𝑘𝑥𝑥 𝑞= 𝑞 =− 0 𝑦
0 𝑘𝑦𝑦
𝜕𝑇 𝜕𝑥 𝜕𝑇 𝜕𝑦
= −𝑫∇𝑇 (3)
Kemudian sesuai dengan teorema divergensi gauss, maka didapat strong formulation konduksi panas dua dimensi: 𝜕 𝜕𝑇 𝑑𝑖𝑣 𝑡𝑫∇𝑇 + 𝑡𝑄 = 𝜕𝑥 𝑡𝑘𝑥𝑥 𝜕𝑥 𝜕 𝜕𝑇 + 𝑡𝑘𝑦𝑦 𝜕𝑥 𝜕𝑦 +𝑡𝑄 = 0 (4) Kalikan dengan fungsi bobot (weight function) lalu integralkan terhadap domain lalu menghasilkan:
(∇𝑣)𝑇 𝑡𝑫∇𝑇𝑑𝐴 = − 𝐴
𝑣𝑡𝑞 𝑑ℒ ℒ𝑞
− +
ℒ𝑇
𝑣𝒕𝑞𝑛 𝑑ℒ
𝐴
𝑣𝑡𝑄𝑑𝐴
(5)
dengan 𝑇 = 𝑇 pada ℒ 𝑇 𝑞𝑛 = 𝑞 pada ℒ𝑞 Kemudian diskritisasikan domain menjadi elemen berhingga. Dengan menggunakan metode Galerkin maka variabel utama (yaitu temperatur) dan fungsi bobot menggunakan interpolasi yang sama. 𝑇 𝑥, 𝑦 = 𝑁1 𝑥, 𝑦 𝑇1 + 𝑁2 𝑥, 𝑦 𝑇2 +𝑁3 𝑥, 𝑦 𝑇3 + 𝑁4 𝑥, 𝑦 𝑇4 𝑇1 𝑇2 = 𝑁1 𝑥, 𝑦 𝑁2 𝑥, 𝑦 𝑁3 𝑥, 𝑦 𝑁4 𝑥, 𝑦 𝑇3 𝑇4 = 𝑵 𝑥, 𝑦 𝒂 (6) Karena v dan a adalah konstan, dan setelah dilakukan subtitusi maka menghasilkan: 𝐴
ALAT DAN METODE Database MySQL MySQL adalah Relational Database Management System (RDBMS) yang didistribusikan secara gratis dibawah lisensi GPL (General Public License). Dimana setiap orang bebas untuk menggunakan MySQL, namun tidak boleh dijadikan produk turunan yang bersifat closed source atau komersial. MySQL sebenarnya merupakan turunan salah satu konsep utama dalam database sejak lama, yaitu SQL (Structured Query Language). SQL adalah sebuah konsep pengoperasian database, terutama untuk pemilihan atau seleksi dan pemasukan data, yang memungkinkan pengoperasian data dikerjakan dengan mudah secara otomatis. Keandalan suatu sistem database (DBMS) dapat diketahui dari cara kerja optimizer-nya dalam melakukan proses perintah-perintah SQL, yang dibuat oleh user maupun programprogram aplikasinya. Sebagai database server, MySQL dapat dikatakan lebih unggul dibandingkan database server lainnya dalam query data. Hal ini terbukti untuk query yang dilakukan oleh single user, kecepatan query MySQL bisa sepuluh kali lebih cepat dari PostgreSQL dan lima kali lebih cepat dibandingkan Interbase. Selain itu MySQL juga memiliki beberapa keistimewaan, antara lain : portability, open source, multiuser, performance tuning, column types, command dan functions, security, scalability dan limits, connectivity, localisation, interface, clients dan tools, dan struktur table. [12]
Waktu dan Tempat Penelitian ini dilakukan di Laboratorium Mikrokontroler dan Bengkel Mekanik Departemen Fisika Fakultas Matematika dan Ilmu Pengetahuan Alam Institut Pertanian Bogor mulai dari bulan Mei 2009 sampai bulan Oktober 2010. Alat dan Bahan Alat yang digunakan pada penelitian ini meliputi PC (Personal Computer), termometer digital EXTECH 421305, digital multimeter, adapter power supply, signal generator, microcontroller DSTINIm400, protoboard, solder, penyedot timah, stopwatch, tulang ikan, kabel tipe RJ11, kabel UTP (Unshielded Twisted-Pair) tipe crossover, dan konektor RJ45. Bahan-bahan yang digunakan pada penelitian ini meliputi sensor temperatur onewire DS18B20, komponen elektronika, PCB (Printed Board Circuit) kosong, heater, heatsink high thermal conductivity, timah, dan logam aluminium.
Gambar 7. Heatsink Compounds
Pelat Logam
Sumber Kalor
Es Balok
Sensor Temperatur
SolidWorks 2009 SP 2.1 Pada penelitian ini menggunakan software SolidWorks versi 2009 Service Pack 2.1 dengan lisensi a.n. Institut Pertanian Bogor. Program ini mirip seperti program CAD, namun tidak hanya untuk menggambar saja tetapi juga dapat digunakan untuk analisis suatu problem fisis. Dalam memecahkan suatu problem SolidWorks menggunakan metode elemen hingga tipe hp-FEM, sehingga waktu penghitungannya lebih cepat dengan tingkat keakuratan yang cukup presisi. Namun sayang dalam melakukan komputasi, SolidWorks sangat menghabiskan sumber daya CPU komputer. [13]
Es Balok
Gambar 8. Setup Pengukuran Metode Penelitian 1. Persiapan Alat dan Bahan Mengkalibrasi nilai temperatur heater sebesar 100oC, dan kalibrasi antara sensor dengan thermometer EXTECH 421305. Kemudian ujung pelat logam dipotong dan dihaluskan sehingga dapat menempel dengan heater.
17
2.
Pembuatan Program Pembuatan program dilakukan secara bertahap, yakni pembuatan program java kemudian di-compile menghasilkan .class. Dari .class dikonversi menjadi .tini. Kemudian selanjutnya, menyiapkan database MySQL dan membuat program PHP yang akan menangkap nilai temperatur di dalam XML untuk langsung disimpan ke dalam database. Kemudian menyiapkan simulasi model objek komputasi sesuai dengan eksperimen. 3. Analisis keluaran data Menginput data yang telah tersimpan di database ke dalam simulasi program di SolidWorks. Kemudian menganalisis hasil eksperimen dengan hasil perhitungan numerik metode elemen hingga. Adapun diagram alur penelitian ini digambarkan dengan: Persiapan Alat dan Bahan
Pembuatan dan Pengujian Program
Ya
Tidak
Data Temperatur Valid?
Kesalahan Program?
Tidak
Ya
Analisis Data (Metode Elemen Hingga)
Laporan Hasil Analisis
Gambar 9. Diagram Alur Penelitian
HASIL DAN PEMBAHASAN Sensor Temperatur Device sensor yang dipakai adalah DS18b20. Didalamnya terdapat sensor temperatur semikonduktor dimana terdapat 2-byte register memori scratchpad yang dapat menyimpan data temperatur. Keluaran dari sensor ini sudah berupa data digital sehingga tidak diperlukan lagi konverter ADC. Format pengalokasian memori DS18b20 digambarkan sebagai berikut:
Gambar 10. Format Data Keluaran DS18b20 Untuk menentukan kevalidan data temperatur maka keluaran sensor temperatur dibandingkan menggunakan alat Extech Digital Temperature seri 421305. Jika ternyata belum mendapat nilai yang tepat dan itu bukan kesalahan program, maka akan dicek ulang disisi device (sensor, kabel, tegangan, dan lainnya). Namun jika penyebabnya adalah kesalahan program maka akan diprogram ulang dan dilakukan pengujian sensor lagi. Range temperatur yang dapat diterima oleh sensor DS18b20 berkisar antara -55 oC s.d. 125 oC. Dengan keakuratan sensor yang baik pada kisaran -10 oC s.d. 85 oC, dengan toleransi + 0,5 oC. Oleh karena itu, jika sensor mendapat temperatur lebih dari 125oC maka sensor akan rusak dan jika sensor men-sensing nilai temperatur lebih dari 85oC maka keakuratannya akan semakin buruk. Inilah salah satu sebab mengapa ada sensor yang tidak terbaca saat pengujian pembacaan data sensor, yakni disebabkan oleh solder yang bertemperatur tinggi (180oC) dan menginduksi ke sensor. Jika di-debug running program pengambilan data sensor maka akan terlihat di database selang waktu berkisar 6-10 detik tiap interval pengambilan datanya. Hal ini disebabkan program perlu membaca file konfigurasi (prefs.ini terlampir) dan meng-update setiap data yang baru ke dalam log file (ddmmyy.log) dan file XML (weather.xml terlampir) [14]. Pada saat mikrokontroller mengupdate data baru ke weather.xml kemudian PC Server akan mengambil data tersebut dan menyimpannya ke dalam database MySQL. Namun pada penelitian sebelumnya [4] mengatakan bahwa sensor DS18b20 memiliki rata-rata selang interval selama 4 detik dengan tingkat akurasi diatas 86.5%. Sensor ds18b20 memiliki 4 bit resolusi, yaitu 9, 10, 11, dan 12 (Tabel 5). Pada
18
penelitian ini menggunakan resolusi 9 bit dengan besar resolusi 0.5 oC dimana hal ini didefinisikan pada baris program berikut:
regular-expression (regex) pada pemrograman PHP, tag XML yang berisi data temperatur diambil nilainya dan disimpan ke dalam database MySQL (Lampiran 15) di komputer yang bertindak sebagai server. Saat melakukan fetching data, agar data dapat terambil secara terus-menerus maka pada penelitian ini digunakan teknik pemrograman AJAX. Dalam selang waktu 4 sampai dengan 6 detik akan didapat data temperatur. Selang waktu ini bukan delay dari AJAX tetapi delay saat pemrosesan pengambilan data dari sensor ke mikrokontroller.
Pemanas Pemanas (heater) yang digunakan adalah seterika listrik dengan spesifikasi besar tegangan = 220 V, daya = 300-350 W, Temperatur maksimal = 210 oC. Pemanas ini diusahakan agar bekerja pada kisaran nilai temperatur + 100 oC. Antara pelat logam dengan pemanas dioleskan heatsink thermal conductivity dengan spesifikasi besar thermal conductivity > 1,22 W/m.k dan thermal resistance < 0.201 oC-in2/w. Fungsi pengolesan ini bertujuan untuk membantu penghantaran aliran konduksi kalor dari pemanas ke pelat logam dan menghindari adanya celah diantara keduanya. Grafik hubungan antara temperatur dengan waktu digambarkan sebagai berikut:
Metode Elemen Hingga Penelitian ini menggunakan elemen berbentuk triangular. Pada software SolidWorks dapat diatur banyak elemen yang digunakan, semakin banyak elemen yang digunakan maka akan semakin membutuhkan waktu yang cukup lama untuk melakukan komputasi.
120,00
3(28,16.5)
4(28,16.5)
3(28,16.5 )
Temperatur (Celcius)
100,00 80,00
2(21,11.5 )
60,00
2(21,11.5)
40,00
1(28,5.5)
Gambar 12. Elemen triangular pertama, kedua, dan ke-n
Penelitian ini membandingkan nilai temperatur yang ada di node-node elemen hingga dengan nilai temperatur secara eksperimen di titik koordinat yang sama. Diambil empat titik node, yaitu pada node 13 (28, 5,5), node 16 (21, 5,5), node 19 (21, 165), dan node 20 (21, 1,1) (Gambar 14) dengan melakukan lima kali perulangan. (Tabel 1).
Waktu (detik)
Gambar 11. Hubungan temperatur dengan waktu Data Logger Temperatur Saat ds18b20 men-sensing temperatur, data diterima oleh modul mikrokontroller DSTINIm400 dan hasilnya ditampilkan dalam bentuk XML dengan user interface (UI) web-based. Dengan menggunakan
Tabel 1. Perbandingan data eksperimen (Extech) dengan data perhitungan (FEM) Koordinat (cm)
Temp Extech (Celcius) ulangan 1
ulangan 2
ulangan 3
ulangan 4
ulangan 5
Temp Rata-rata
22,00
23,00
22,70
22,00
22,30
22,00
22,40
11
33,06
33,00
31,50
31,50
31,80
32,00
31,96
5,5
22,00
22,50
22,90
22,20
22,10
23,00
22,54
33,91
33,70
33,30
32,90
33,00
33,20
33,22
x
y
21
5,5
21 28 21
16,5
SolidWorks
19
Gambar
13. Meshing menjadi beberapa elemen
Gambar 14. Probe nilai temperatur di node mesh object Saat nilai temperatur referensi telah didapat dan telah dibuat desain simulasi, memasukkan variabel input, dan atributatributnya pada software SolidWorks maka input boundary akan dievaluasi terhadap persamaan 10 dan persamaan 11. Setelah itu akan didapat nilai matriks f. Kemudian dihitung nilai matriks kekakuan (K) terhadap persamaan 9. Sesuai persamaan 13 akan didapat nilai temperatur pada matriks d. Perhitungan ini berlaku di tiap elemen yang kemudian dinamakan dengan perhitungan matriks secara lokal. Setelah itu, di-assembly (hasil masing-masing elemen) menjadi nilai global. Karena tiap titik node telah terhitung nilai temperaturnya, maka akan terlihat distribusi penyebaran temperaturnya. Jumlah mesh elemen penelitian ini sedikit sehingga terlihat penyebaran distribusi yang ‘kasar’.
Saran Saran yang dapat diberikan dari penelitian ini adalah: Jika menggunakan banyak sensor, lebih baik mengambil daya dari kaki DQ yang berfungsi sebagai parasite power. Menggunakan solder yang berkualitas dan hendaknya mengukur temperatur solder terlebih dahulu agar tidak merusak sensor. Dengan User Interface Web, maka percobaan ini dapat dijadikan sebagai remote laboratory dengan menambahkan IP public sehingga dapat diakses melalui media internet.
DAFTAR PUSTAKA [1]
[2]
[3]
[4]
[5] KESIMPULAN DAN SARAN Kesimpulan Berdasarkan hasil dan pembahasan diatas maka dapat disimpulkan sebagai berikut: Dengan referensi nilai temperatur sensor disuatu titik, dapat diketahui penyebaran distribusi temperatur disuatu objek menggunakan metode elemen hingga. (Table 1)
Semakin banyak elemen maka akan semakin mendekati solusi eksak. Metode elemen hingga dapat mengefisiensikan penggunaan sensor dengan mengambil nilai boundary. Ketepatan pengukuran rata-rata sebesar 97.6%.
[6]
[7]
Anonim. DS18S20b High-Precision 1-Wire Digital Thermometer. www.maxim-ic.com. 10 Januari 2007. Loomis, Don. 2001. The TINI™ Specification and Developer’s Guide. Addison-Wesley: Boston. Deitel, Harvey M., Deitel, Paul J. 2004. Java How to Program Sixth Edition. Prentice Hall: New Jersey. Priatna, Subhi. 2009. Rancang Bangun Prototipe Sistem Kontrol Temperatur Greenhouse melalui Jaringan Wireless Berbasis Mikrokontroller DSTINI. Skripsi. Institut Pertanian Bogor. Anonim. http://www.w3.org/TR/REC-xml/ . 25 November 2008. Arsenal, Bobi. 2007. Monitoring Temperatur Melalui Jaringan Menggunakan DSTINI400. Tugas Akhir. Institut Pertanian Bogor. Darie, Cristian., Bogdan, Brinzarea., Cherecheş-Toşa, Filip., Bucica, Mihai. 2006. AJAX and PHP, Building Responsive Web Applications. Packt Publishing: Birmingham.
20
[8]
[9]
[10]
[11]
[12]
[13]
[14]
Nikishkov, G.P. 2004. Introduction to The Finite Element Method. Lecture Note. University of Aizau, Japan. (19 Januari). Desai, Candrakant S. 1988. DasarDasar Metode Elemen-Hingga. Jakarta: Penerbit Erlangga. Fish, Jacob., Belytschko, Ted. 2007. A First Course of A Finite Element. JohnWiley&Sons: England. Lewis, Roland W., Nithiarasu, Perumal., Seetharamu, Kankanhalli N., Fundamentals of the Finite Element Method of Heat and Fluid Flow. 2004. England: John Wiley & Sons. Anonim. http://id.wikipedia.org/wiki/MySQL. 7 Mei 2009. Adams, Vince. Do FEA Tools Give Same Answer? A Comparison of Finite Element Analysis Software. IMPACT Engineering Solutions, Inc. Bitson, Tim. 2006. Weather Toys, Building and Hacking Your Own 1Wire Weather Station. Wiley Publishing: Indianapolis.
21
LAMPIRAN
23
Tabel Lampiran 2. Data temperatur pemanas terhadap waktu
Waktu (s)
Temp (Celcius)
Waktu (s)
Temp (Celcius)
Waktu (s)
Temp (Celcius)
1,00
28,40
41,00
43,30
81,00
64,50
2,00
28,50
42,00
43,70
82,00
65,20
3,00
28,70
43,00
43,70
83,00
65,40 66,70
4,00
29,20
44,00
44,70
84,00
5,00
29,20
45,00
43,80
85,00
67,00
6,00
29,40
46,00
46,00
86,00
67,50
7,00
29,60
47,00
45,10
87,00
67,70
8,00
30,40
48,00
46,40
88,00
68,80
9,00
30,50
49,00
45,90
89,00
69,40
10,00
30,70
50,00
46,80
90,00
70,30
11,00
30,90
51,00
48,30
91,00
71,00 71,50
12,00
30,12
52,00
49,20
92,00
13,00
30,14
53,00
49,60
93,00
72,30
14,00
30,14
54,00
48,80
94,00
73,30
15,00
30,20
55,00
50,10
95,00
72,30
16,00
30,21
56,00
50,30
96,00
73,90
17,00
30,25
57,00
49,70
97,00
74,50
18,00
30,27
58,00
52,10
98,00
74,50
19,00
30,30
59,00
51,70
99,00
75,30 76,20
20,00
30,32
60,00
51,70
100,00
21,00
30,34
61,00
51,20
101,00
75,60
22,00
30,36
62,00
53,00
102,00
75,60
23,00
30,37
63,00
54,00
103,00
77,50
24,00
30,40
64,00
55,20
104,00
78,20
25,00
30,50
65,00
54,40
105,00
78,40
26,00
30,51
66,00
56,10
106,00
79,30
27,00
35,20
67,00
54,70
107,00
79,60 79,60
28,00
35,40
68,00
55,30
108,00
29,00
35,60
69,00
57,70
109,00
80,10
30,00
35,90
70,00
57,70
110,00
80,50
31,00
35,10
71,00
58,10
111,00
81,20
32,00
35,74
72,00
59,80
112,00
81,50
33,00
37,10
73,00
57,40
113,00
81,70
34,00
37,40
74,00
61,30
114,00
82,90
35,00
38,20
75,00
61,70
115,00
83,20 83,40
36,00
38,40
76,00
62,30
116,00
37,00
39,00
77,00
62,60
117,00
84,50
38,00
39,70
78,00
62,80
118,00
84,50
39,00
40,80
79,00
63,40
119,00
84,50
40,00
42,50
80,00
63,60
120,00
85,70
24
Waktu (s)
Temp (Celcius)
Waktu (s)
Temp (Celcius)
Waktu (s)
Temp (Celcius)
121,00
86,20
161,00
93,40
201,00
98,80
122,00
86,40
162,00
93,40
202,00
99,30
123,00
86,60
163,00
93,50
203,00
99,00
124,00
87,10
164,00
93,80
204,00
99,50
125,00
87,30
165,00
93,90
205,00
99,50
126,00
87,50
166,00
94,20
206,00
99,80
127,00
87,90
167,00
94,30
207,00
99,40
128,00
88,00
168,00
94,40
208,00
99,80
129,00
88,10
169,00
94,50
209,00
100,20
130,00
88,70
170,00
94,50
210,00
99,90
131,00
88,70
171,00
94,50
211,00
100,10
132,00
89,10
172,00
94,80
212,00
100,40
133,00
89,50
173,00
94,60
213,00
100,30
134,00
89,10
174,00
94,90
214,00
100,40
135,00
90,10
175,00
94,90
215,00
100,70
136,00
89,90
176,00
95,00
216,00
100,80
137,00
90,00
177,00
95,20
217,00
100,50
138,00
90,60
178,00
95,20
218,00
100,70
139,00
89,40
179,00
95,30
219,00
100,70
140,00
89,80
180,00
95,50
220,00
100,70
141,00
90,90
181,00
95,30
221,00
99,30
142,00
91,10
182,00
95,30
222,00
98,70
143,00
91,10
183,00
95,40
223,00
99,40
144,00
91,00
184,00
95,50
224,00
99,10
145,00
90,80
185,00
95,70
225,00
99,70
146,00
90,40
186,00
95,80
226,00
100,10
147,00
91,00
187,00
95,90
227,00
99,90
148,00
91,10
188,00
95,80
228,00
99,80
149,00
91,60
189,00
96,20
229,00
100,20
150,00
91,50
190,00
96,30
230,00
100,30
151,00
91,50
191,00
96,30
231,00
100,30
152,00
91,90
192,00
96,70
232,00
100,30
153,00
91,80
193,00
96,70
233,00
100,70
154,00
92,20
194,00
96,90
234,00
100,50
155,00
92,30
195,00
97,60
235,00
100,60
156,00
92,10
196,00
98,20
236,00
100,90
157,00
92,80
197,00
98,10
237,00
100,00
158,00
92,90
198,00
98,50
238,00
99,80
159,00
93,00
199,00
98,60
239,00
99,60
160,00
93,20
200,00
98,60
240,00
99,80
25
Tabel Lampiran 3. Terminologi matriks untuk metode elemen hingga [10] Matriks K
Elastisitas Stiffness
Difusi Difusivitas
Konduksi Panas Konduktansi
F
Gaya
Fluks
Fluks
D
Perpindahan
Konsentrasi
Temperatur
Tabel Lampiran 4. MAC Address (64-bit unique) sensor temperatur DS18b20 Device Name Sensor 1
MAC Address 9D000001986C7C28
Sensor 2
F400000109860728
Sensor 3
500000010A003E28
Sensor 4
730000019871E628
Sensor 5
9700000198546920
Tabel Lampiran 5. Resolusi sensor temperatur ds18b20 R1
R2
RESOLUSI (BIT)
0
0
9
93.75ms
(tconv/8)
0.5
0
1
10
187.5ms
(tconv/4)
0.25
1
0
11
375ms
(tconv/2)
0.125
12
750ms
(tconv)
0.0625
1
1
MAX WAKTU KONVERSI
BESAR RESOLUSI (oC)
Tabel Lampiran 6. Karakteristik sensor DS18b20
26
Lampiran 1. Rumus Ketepatan 𝐾𝑒𝑡𝑒𝑝𝑎𝑡𝑎𝑛 = 1 −
|𝑙𝑖𝑡𝑒𝑟𝑎𝑡𝑢𝑟 −𝑝𝑒𝑟𝑐𝑜𝑏𝑎𝑎𝑛 | 𝑙𝑖𝑡𝑒𝑟𝑎𝑡𝑢𝑟
× 100%
(15)
Lampiran 2. Contoh perhitungan menggunakan metode elemen hingga.[11] Sebuah pelat mendapat keadaan isotermal sebesar 100oC di semua sisinya kecuali di sisi atas yang sebesar 500oC. Jika konduktivitas termal konstan dengan nilai sebesar 10 W/moC, bagaimana distribusi temperaturnya dengan menggunakan metode elemen hingga elemen triangular. Pelat tersebut dibagi menjadi 8 bagian yang sama ukurannya dengan bentuk elemen triangular, seperti yang terlihat pada Gambar 15. Berikut ini merupakan matriks K untuk elemen 1, 3, 5,dan 7: b1 = y2 – y4 = -0.50; b2 = y4 – y1 = 0.50; b4 = y1 – y2 = 0.00;
Gambar 15. Sebuah pelat dengan kondisi batas temperatur yang berbeda
Gambar 16. Diskritisasi menggunakan elemen triangular Matriks elemen K untuk elemen 1, 3, 5, dan 7 dapat dituliskan sebagai 𝑏12 + 𝑐12 𝑏1 𝑏2 + 𝑐1 𝑐2 𝑡𝑘 𝐾 1 = 𝐾 3 = 𝐾 5 = 𝐾 7 = 4𝐴 𝑏1 𝑏2 + 𝑐1 𝑐2 𝑏22 + 𝑐22 𝑏1 𝑏4 + 𝑐1 𝑐4 𝑏2 𝑏4 + 𝑐2 𝑐4 dimana luas area elemen dapat dituliskan sebagai 1.0 0.0 0.0 2𝐴 = det 1.0 0.5 0.0 = 0.25 𝑚2 1.0 0.0 0.5
𝑏1 𝑏4 + 𝑐1 𝑐4 𝑏2 𝑏4 + 𝑐2 𝑐4 𝑏42 + 𝑐42
(16)
(17)
dengan mensubtitusikan luas area ke persamaan 16 didapat 𝐾
1
= 𝐾
3
= 𝐾
5
= 𝐾
7
=
𝑡𝑘 2
2.0 −1.0 −1.0 −1.0 1.0 0.0 −1.0 0.0 1.0
(18)
begitu juga dengan elemen yang lainnya dapat dihitung pula:
27
𝐾
2
= 𝐾
4
= 𝐾
6
= 𝐾
8
=
𝑡𝑘 2
1.0 −1.0 0.0 −1.0 2.0 −1.0 0.0 −1.0 1.0
(19)
setelah di-assemble keseluruhan matriks tiap elemen menjadi
dapat dilihat bahwa nilai yang tidak diketahui hanyalah T 5 saja yang mana selanjutnya dapat dihitung dari node ke-5 8𝑇5 = 2𝑇2 + 2𝑇4 + 2𝑇6 + 2𝑇8
(21)
Lalu dengan mensubtitusikan T2 = T4 = T6 = 100oC dan T8 = 500oC, didapat nilai T5 = 200oC. Solusi analisis untuk problem seperti ini dapat dihitung dengan: (Holman 1989) 𝑇 𝑥, 𝑦 = 𝑇𝑡𝑜𝑝 − 𝑇𝑠𝑖𝑑𝑒
2 𝜋
−1 𝑛 +1 +1 𝑛𝜋𝑥 ∞ sin 𝑤 𝑛 =1 𝑛
𝑛𝜋𝑦 𝑤 𝑛𝜋𝐻 𝑠𝑖𝑛 ℎ 𝑤
𝑠𝑖𝑛 ℎ
+ 𝑇𝑠𝑖𝑑𝑒
(22)
dan akan didapat hasil yang sama seperti dalam perhitungan menggunakan metode elemen hingga.
Lampiran Gambar 17. Desain antarmuka pengambilan data menggunakan PHP & AJAX
28
Lampiran 3. Skema Mikrokontroller DSTINIm400
29
Lampiran 4. Program utama (tws.java) /****************************************************************************** Project Name: File name: Version: Last Updated:
TiniWeatherServer tws.java (main) 5.0.1 11/16/07
(C) 2007 T. Bitson, All Rights Reserved Edited by Subhi Priatna Things to add: email on device error out move chart logger into OWDevice *****************************************************************************/ import import import import
public class TWS { public static final String VERSION = "TWS 5.0.1"; public static final boolean IS_TINI = System.getProperty("os.arch").equals("TINI");
public TWS() { // create the lock object lock = new Object(); // create a webWorker webWorker = new WebWorker(lock); // instantiate a new weather station ws = new WeatherStation(); // create a weather underground object wu = new Wunderground(); // create the web page webPage = new WebPage(); // create a new time setter class, we'll run it later ts = new TimeSetter(); // get the start time of this session Date d = new Date(); startTime = d.getTime(); }
30
// main program loop: Start the various servers, get the weather and update the web page public void mainLoop() { boolean go = true; boolean resetFlag = true; Charter chart = null; BitPort bp = null; Date date = new Date(); int minute, hour ,second ; int lastSecond = -99; int lastMinute = -99; int lastHour = -99; InputStreamReader in = new InputStreamReader(System.in); // get bit port to Tini's activity LED if (IS_TINI) { if (TINIOS.getCPU() == TINIOS.DS80C400) bp = new BitPort(BitPort.Port3Bit5); else bp = new BitPort(BitPort.Port5Bit2); } try { // create the web server thread and start it Thread webServer = new Thread(webWorker); webServer.setName("Web Server"); webServer.start(); // build a log file name & create a log file object todaysLog = new DataLogger(); // build a chart data file chart = new Charter(); // if (Prefs.isChartingEnabled()) // { // chart.reset(); // } // enable the Watchdog Timer with a 120 second timeout if (Prefs.isWatchdogEnabled()) TINIOS.setWatchdogTimeout(120000); // main program loop - loop forever, getting weather data while(go) { // sleep for 1 second Thread.sleep(1000); // toggle activity led to show we're alive if (IS_TINI) { if (bp.read() == 1) bp.clear(); else bp.set(); } // feed the 'dog if (Prefs.isWatchdogEnabled()) TINIOS.feedWatchdog(); // check current time date.setTime(System.currentTimeMillis()); second = date.getSeconds(); minute = date.getMinutes(); hour = date.getHours(); // only loop once a 20 second if ((second % 10) == 0) {
31
//reset setiap 6 jam if (hour == 18 && minute == 00) //RESET 6 JAM ATAU JAM6? { // re-read prefs file Prefs.read(); if (debugFlag) System.out.println("Reseting Logs"); // if data logging is on, start a new log file if (Prefs.isDataLoggingEnabled()) { // first, get rid of yesterday's log file if (yesterdaysLog != null) yesterdaysLog.deleteLog(); // then store today's log as the 'new' yesterday's log yesterdaysLog = todaysLog; // finally, start a new log file for today todaysLog = new DataLogger(); } // if charting is enabled, restart chart data files if (Prefs.isChartingEnabled()) chart.reset(); // reset the highs & lows ws.resetAllStats(); } if (hour == 12 && minute == 00) { // re-read prefs file Prefs.read(); if (debugFlag) System.out.println("Reseting Logs"); // if data logging is on, start a new log file if (Prefs.isDataLoggingEnabled()) { // first, get rid of yesterday's log file if (yesterdaysLog != null) yesterdaysLog.deleteLog(); // then store today's log as the 'new' yesterday's log yesterdaysLog = todaysLog; // finally, start a new log file for today todaysLog = new DataLogger(); } // if charting is enabled, restart chart data files if (Prefs.isChartingEnabled()) chart.reset(); // reset the highs & lows ws.resetAllStats(); } if (hour == 06 && minute == 00) { // re-read prefs file Prefs.read(); if (debugFlag) System.out.println("Reseting Logs"); // if data logging is on, start a new log file if (Prefs.isDataLoggingEnabled()) { // first, get rid of yesterday's log file if (yesterdaysLog != null)
32
yesterdaysLog.deleteLog(); // then store today's log as the 'new' yesterday's log yesterdaysLog = todaysLog; // finally, start a new log file for today todaysLog = new DataLogger(); } // if charting is enabled, restart chart data files if (Prefs.isChartingEnabled()) chart.reset(); // reset the highs & lows ws.resetAllStats(); } // check if its midnite, if so re-read prefs & restart logs if (hour == 00 && minute == 00) { // re-read prefs file Prefs.read(); if (debugFlag) System.out.println("Reseting Logs"); // if data logging is on, start a new log file if (Prefs.isDataLoggingEnabled()) { // first, get rid of yesterday's log file if (yesterdaysLog != null) yesterdaysLog.deleteLog(); // then store today's log as the 'new' yesterday's log yesterdaysLog = todaysLog; // finally, start a new log file for today todaysLog = new DataLogger(); } // if charting is enabled, restart chart data files if (Prefs.isChartingEnabled()) chart.reset(); // reset the highs & lows ws.resetAllStats(); } // now go get the current weather data if (debugFlag) System.out.println("Getting weather at " + date.toString()); // ***** here's the call that actually gets the weather data ***** ws.getWeather(); // if data logging is enabled, log measured data if (Prefs.isDataLoggingEnabled()) todaysLog.logData(date, ws); // if charting is enabled, update chart files if (Prefs.isChartingEnabled()) chart.log(date, ws); // if time = 10 minute, crunch weather data & update web page if ((minute % 1) == 0) //ARTINYA TRUE { // calc index to 24 hour data int index = (hour * 6) + (minute / 10); if (debugFlag) System.out.println("24 Hour Index = " + index); // calc averages, trend data, 24-hour diff, etc. ws.crunchData(index);
33
// now update the weather web page webPage.updateWeatherPage(date, ws); // update the history data ws.updateHistories(); // update Wunderground if (Prefs.isWUPostingEnabled()) wu.send(date, ws); // reset weather measurement averages ws.resetAllAverages(); } // if its 1am, mail the error log if (hour == 01 && minute == 00) { // if error log mail is enabled and log has data, mail it if (Prefs.isErrorLoggingEnabled() && Logger.checkFileSize() > 0) { // mail the error log Mailer.mailLog("TWS Log", Prefs.getErrorLogFileName()); // now delete it Logger.deleteLog(); } } // if its 2am, mail yesterday's weather log if (hour == 02 && minute == 00) { // if logging is enabled, mail log if (Prefs.isLogMailingEnabled() && yesterdaysLog != null) Mailer.mailLog(yesterdaysLog.getFilename(), yesterdaysLog.getFilePathname()); } // if its 3:30 am, set the clock if (hour == 03 && minute == 30) { // update the real-time clock if (Prefs.isAutoTimeSetEnabled()) new Thread(ts).start(); } // update the time lastSecond = second; lastMinute = minute; lastHour = hour; // clean up the mess we left behind java.lang.System.gc(); } // check keyboard if not running on Tini if (!IS_TINI) { if (in.ready()) if (in.read() == 'q') go = false; } } } catch(Throwable t) { Logger.log("mainLoop(): " + t); t.printStackTrace(); } finally { ws.close(); }
34
} public static boolean setTimeZone() { try { if (debugFlag) System.out.println("Setting Tini's Timezone..."); // get the OS timezone String tz = com.dalsemi.system.TINIOS.getTimeZone().trim(); if (debugFlag) System.out.println("Timezone = " + tz); // get if time zone is default if (!tz.equals("GMT")) { // compare to the java time zone i.e. has it already been set? if (!TimeZone.getDefault().getID().equals(tz)) { // now try to set the java timezone TimeZone zone = TimeZone.getTimeZone(tz); if (zone == null) { try { if (tz.charAt(0) != '-') tz = "+" + tz; com.dalsemi.system.TINIOS.setTimeZone(tz); zone = TimeZone.getDefault(); } catch(NumberFormatException nfe) { } } if (zone!=null) TimeZone.setDefault(zone); } } } catch(Exception e) { Logger.log("Error Setting the Timezone - Check Tini's Clock"); return false; } return true; } // main routine - program starts here public static void main(String[] args) { System.out.print(VERSION + " Started on " + System.getProperty("os.arch")); System.out.println(" using " + System.getProperty("os.name")); if (args.length != 0) { if (args[0].equals("-d")) { System.out.println("debug on"); debugFlag = true; } } // set Tini's Timezone if (IS_TINI) setTimeZone(); System.out.println("TWS Local Time = " + new Date()); try { // get the preferences
35
Prefs.read(); Logger.log("TWS " + VERSION + " Started on " + System.getProperty("os.arch")); // create an instance of the weather server TWS tws = new TWS(); // start the main loop tws.mainLoop(); } catch(Throwable t) { Logger.log("Exception: Main() " + t); } finally { Logger.log("TiniWeatherServer Stopped"); System.exit(1); } } } /****************************************************************************** Project Name: TiniWeatherServer File name: TempDevice.java Version: 2.0 Last Updated: 04/04/07 T. Bitson edited by Subhi Priatna *****************************************************************************/ import com.dalsemi.onewire.*; import com.dalsemi.onewire.adapter.*; import com.dalsemi.onewire.container.*; public class TempDevice extends OWDevice { protected float result = NO_VALUE; private OneWireContainer28 device = null; public TempDevice(DSPortAdapter adapter, OWHub hub, String identifier) { super(identifier); this.hub = hub; // do we have a valid serial number? if (getSerialNum().substring(14).equals("28")) { // activate the hub channel for ths device hub.activateChannel(getHubChannel(), getHubPort()); device = new OneWireContainer28(adapter, getSerialNum()); if (device != null) { // looks like the device is valid, enable it deviceDisabled = false; // does this temp sensor have greater than .5 deg resolution? try { if (device.hasSelectableTemperatureResolution()) { // if so, set resolution to max byte[] state = device.readDevice(); device.setTemperatureResolution(device.RESOLUTION_9_BIT, state); device.writeDevice(state); Logger.log("Temp Device Supports High Resolution"); } } catch (OneWireException e) { Logger.log("Error Setting Resolution: " + e); } } // couldn't create the one wire container else
36
{ Logger.log("Temperature Sensor Not Found - Disabling Device"); device = null; } // deactivate hub channel hub.deactivateChannel(getHubChannel(), getHubPort()); } // invalid serial number string else { Logger.log("Invalid or No " + identifier + " Device - Device Disabled"); } } public boolean read() { if (deviceDisabled) return false; // activate the hub channel for ths device hub.activateChannel(getHubChannel(), getHubPort()); try { // is device there? if (device.isPresent()) { // read temperature if (debugFlag) System.out.println("Temperature: " + device.getName() + " " + device.getAddressAsString()); byte[] state = device.readDevice(); device.doTemperatureConvert(state); state = device.readDevice(); result = (float)device.getTemperature(state)-1; // convert to degs F if (Prefs.isTempDegsF()) result = result * 9.0f/5.0f + 32f; if (debugFlag) System.out.println("Temperature = " + result + " degs"); // sum up all measurements for average sum += result; num++; // check highs & lows if (result > high) high = result; if (result < low) low = result; // if we're here, we must have a good measurement // deactivate hub channel hub.deactivateChannel(getHubChannel(), getHubPort()); return true; } else // device isn't there { Logger.log("Temperature Sensor Not Present"); } } catch (OneWireException e) { Logger.log("Error Reading Temperature: " + e); } // increment error count and check if we have exceeded allowed errors
37
errors++; if (errors >= Prefs.getAllowedErrors()) { Logger.log("Temperature Sensor Disabled"); deviceDisabled = true; result = NO_VALUE; } // deactivate hub channel hub.deactivateChannel(getHubChannel(), getHubPort()); return false; } public float getCurrentMeasurement() { return result; } public String getCurrentMeasurementStr() { return formatFloat(result, numDigits); } public void midnightReset() { // reset the highs and lows high = -99; low = 99; //reset the device error count errors = 0; // if this is a valid device, re-enable it if (device != null) deviceDisabled = false; } } /****************************************************************************** * * Project Name: TiniWeatherServer * File name: WeatherStation.java * Version: 1.0.0 * Last Updated: 07/15/07 * * * This class provides the primary interface to the weather station. It * utilizes the Pref class to provide weather station specific data such * as device serial number (ID) and calibration values. A measurement * of each device is performed by using the getWeather() method. Averages * and trends of the data are stored in each device instance. * *****************************************************************************/ import java.util.*; import com.dalsemi.onewire.*; import com.dalsemi.onewire.adapter.*; import com.dalsemi.onewire.container.*;
public class WeatherStation { private boolean debugFlag = TWS.debugFlag; // primary weather station devices protected protected protected protected protected
private OWHub hub; private static float[] y; private float lastRain = 0; public WeatherStation() { if (debugFlag) System.out.println("Initializing Weather Station"); // get an instance of the 1-Wire adapter using the prefs if (debugFlag) System.out.println("Initializing Weather Station"); // get an instance of the 1-Wire adapter using the prefs try { // get an insrance of Tini's External 1-Wire adapter if (TWS.IS_TINI) adapter1 = new TINIExternalAdapter(); else { if (debugFlag) System.out.println("Trying to open adapter " + Prefs.getAdapterType() + " on port " + Prefs.getAdapterComPort()); adapter1 = OneWireAccessProvider.getAdapter(Prefs.getAdapterType(), Prefs.getAdapterComPort()); } if (debugFlag) System.out.println("Found Adapter1: " + adapter1.getAdapterName()); adapter1.beginExclusive(true); } catch (OneWireException e) { Logger.log("Error: Unable to connect to 1-Wire adapter, exiting Program - " + e); System.out.println("Error: Unable to connect to 1-Wire adapter, exiting Program - " + e); System.exit(1); } // get the hub hub = new OWHub(adapter1, Prefs.getHubIDs()); // array for trend data y = new float[3]; // create instances of the various 1-Wire devices using the identifier // for the device from the prefs file. ts1 = new TempDevice(adapter1, hub, "Temp_Sensor_1"); ts2 = new TempDevice(adapter1, hub, "Temp_Sensor_2"); ts3 = new TempDevice(adapter1, hub, "Temp_Sensor_3"); ts4 = new TempDevice(adapter1, hub, "Temp_Sensor_4"); ts5 = new TempDevice(adapter1, hub, "Temp_Sensor_5"); // load the appropriate class depending on the barometer type // dewpoint is a special case } public void getWeather() { // read each sensor. The results are saved and can be retreived using // the getCurrentMeasurement() method ts1.read(); ts2.read(); ts3.read(); ts4.read(); ts5.read(); resetBus(adapter1); // print the results if (debugFlag || !TWS.IS_TINI) { System.out.println("Current Temp 1 System.out.println("Current Temp 2
} } public void crunchData(int index) { // this routine should get called just before updating the web page. it // is optimized for 10-minute intervals, but should work for any times. // Set the history index for all devices OWDevice.setHistoryIndex(index); // update the wind high value // calculate the rain rate // update the trend data for devices that use trending ts1.updateTrend(); ts2.updateTrend(); ts3.updateTrend(); ts4.updateTrend(); ts5.updateTrend(); } public void updateHistories() { // update the history for each device // this is done after the web page update! ts1.updateHistory(); ts2.updateHistory(); ts3.updateHistory(); ts4.updateHistory(); ts5.updateHistory(); } public void resetAllAverages() { // reset the averages for the devices // this is also done after the web page update ts1.resetAverages(); ts2.resetAverages(); ts3.resetAverages(); ts4.resetAverages(); ts5.resetAverages(); // reset the wind gust for this period } public void resetAllStats() { // this routine should be called at midnite to reset the highs & lows ts1.midnightReset(); ts2.midnightReset(); ts3.midnightReset(); ts4.midnightReset(); ts5.midnightReset(); } public void resetBus(DSPortAdapter adapter) { try { adapter.reset(); } catch (OneWireException e) { Logger.log("Error Reseting 1-WIre Bus"); } } public void close() { // closes the weather station. Presently, all that needs to be done // is to free up the 1-Wire adapter try { adapter1.endExclusive(); adapter1.freePort(); Logger.log("Adapter Closed"); }
TINIWeatherStation Charter.java 2.0 07/24/07 T. Bitson
This file provides the classes to store the weather data in the neceesary files for the charting routines. Charting is enabled in the prefs.ini file
*************************************************************************/ import java.io.*; import java.util.*; public class Charter { private static final int NUM_FILES = 5; private static final String[] FILENAME = {"temp.log", "temp2.log", "temp3.log", "temp4.log", "temp5.log"}; private static final char DELIM = ','; private static final String NEWLINE = "\r\n"; private static boolean debugFlag = TWS.debugFlag; // clears the files and creates them if they dont exist public void reset() { try { FileOutputStream file; // create empty files. This will clear out old data for (int i = 0; i < NUM_FILES; i++) { if (debugFlag) System.out.println("Clearing Chart Data File " + Prefs.getWebPagePath() + FILENAME[i]); file = new FileOutputStream(Prefs.getWebPagePath() + FILENAME[i], false); file.close(); } } catch (java.io.IOException e) { Logger.log("Charter.init(): " + e); } } // write each measurement to a log file public void log(Date d, WeatherStation ws) { FileOutputStream file; String time = convert2Time(d);; try { if (debugFlag) System.out.println("Updating Chart Data at " + time); synchronized(TWS.lock) { // write the temperature & dewpoint data
41
if (ws.ts1.isAvailable()) { file = new FileOutputStream(Prefs.getWebPagePath() + FILENAME[0], true); file.write((time + DELIM).getBytes()); file.write((ws.ts1.getCurrentMeasurementStr() + NEWLINE ).getBytes()); file.close(); } // write temperature 2 if (ws.ts2.isAvailable()) { file = new FileOutputStream(Prefs.getWebPagePath() + FILENAME[1], true); file.write((time + DELIM).getBytes()); file.write((ws.ts2.getCurrentMeasurementStr() + NEWLINE).getBytes()); file.close(); } // write temperature 3 if (ws.ts3.isAvailable()) { file = new FileOutputStream(Prefs.getWebPagePath() + FILENAME[2], true); file.write((time + DELIM).getBytes()); file.write((ws.ts3.getCurrentMeasurementStr() + NEWLINE).getBytes()); file.close(); } // write temperature 4 if (ws.ts4.isAvailable()) { file = new FileOutputStream(Prefs.getWebPagePath() + FILENAME[3], true); file.write((time + DELIM).getBytes()); file.write((ws.ts4.getCurrentMeasurementStr() + NEWLINE).getBytes()); file.close(); } // write temperature 5 if (ws.ts5.isAvailable()) { file = new FileOutputStream(Prefs.getWebPagePath() + FILENAME[4], true); file.write((time + DELIM).getBytes()); file.write((ws.ts5.getCurrentMeasurementStr() + NEWLINE).getBytes()); file.close(); } } } catch(Exception e) { Logger.log("Charter.log() " + e.toString()); } } // converts a time in millisecs to hh:mm private String convert2Time(Date d) { int hour = d.getHours(); int minute = d.getMinutes(); String timeString = ""; // build hour if (hour < 10) timeString += "0"; timeString = timeString + Integer.toString(hour) + ":"; // build minute if (minute < 10) timeString += "0"; timeString = timeString + Integer.toString(minute); return (timeString); } }
Lampiran 7. Program PHP (index.php) untuk mengambil data dari mikrokontroller ke PC Server Get Temperature Data by agrdsn <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript" src="./jquery-1.3.2.min.js"> <script language="javascript"> function get_data() { $('#ambil_data').html('<small>Mohon tunggu... Sedang mengambil data dan menyimpan ke dalam database MySQL. stop'); setTimeout('getTemp()', 1000); } function getTemp() { $("#random").show("slow").fadeIn(); $("#random").load("getTemp.php", '',callback); } function callback() { $("#random").show("slow"); setTimeout("getTemp();", 1000*2); } //$(document).ready(getTemp);
Lampiran 12. SQL Struktur data tws table log -- Host: localhost -- Waktu pembuatan: 25. Juni 2010 jam 11:30 -- Versi Server: 5.0.51 -- Versi PHP: 5.2.5 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";# MySQL balikkan hasil kosong (a.k. baris yang kosong). --- Database: `tws` -CREATE DATABASE tws2; USE tws2; --- Struktur dari tabel `log` -CREATE TABLE IF NOT EXISTS `log` ( `id` int(11) NOT NULL auto_increment, `datetime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `temp1` float NOT NULL, `temp2` float NOT NULL, `temp3` float NOT NULL, `temp4` float NOT NULL, `temp5` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=543 ; --- Struktur dari tabel `log` -CREATE TABLE IF NOT EXISTS `log` ( `id` int(11) NOT NULL auto_increment, `datetime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP, `temp1` float NOT NULL, `temp2` float NOT NULL, `temp3` float NOT NULL, `temp4` float NOT NULL, `temp5` float NOT NULL, PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=543 ;