PERANCANGAN TRANSMITTER PADA FLOWMETER PADDLEWHEEL BERBASIS MIKROKONTROLER AT90S2313
LAPORAN TUGAS AKHIR
Disusun oleh:
Rian Amanda 13200084/C Program studi: Teknik Elektronika
DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNOLOGI INDUSTRI INSTITUT TEKNOLOGI BANDUNG 2005
PERANCANGAN TRANSMITTER PADA FLOWMETER PADDLEWHEEL BERBASIS MIKROKONTROLER AT90S2313
Laporan Tugas Akhir
Oleh : Rian Amanda 13200084/Teknik Elektronika
Telah diterima dan disahkan untuk memenuhi persyaratan memperoleh gelar
SARJANA TEKNIK ELEKTRO INSTITUT TEKNOLOGI BANDUNG
Bandung, 5 September 2005
Disahkan Oleh:
Pembimbing I
Prof .Dr. Ir.Adang Suwandi Ahmad NIP 130672118
Pembimbing II
Ir. Syahirul Hakim Ad Dairi NIP 13199525
ABSTRAK
Tujuan tugas akhir ini adalah merancang sistem waktu nyata untuk mengukur laju aliran (debit) air dalam pipa. Sistem pengukur ini merupakan bagian dari kit sistem kendali proses. Parameter masukan alat pengukur ini adalah periode dari pulsa yang dihasilkan sensor paddlewheel. Dalam Tugas Akhir ini diasumsikan sensor paddlewheel bersifat ideal artinya kecepatan linier paddlewheel sebanding dengan laju aliran. Data dari sensor akan diolah oleh mikrokontroler dan hasilnya ditampilkan oleh LCD. Bila mendapat permintaan untuk mengirim data hasil perhitungan maka mikrokontroler akan mengirimkan hasil perhitungan terakhir kapada alat device) yang meminta. Alat-alat pada sistem kendali proses ini terhubung satu sama lain melalui sebuah bus komunikasi serial. Proses pengambilan data, penghitungan, penampilan LCD, dan komunikasi diatur oleh program yang disebut kernel hybrid. Kernel hybrid bertugas mengatur kapan tugastugas tersebut dikerjakan berdasarkan kejadian pemicu dan selang waktu. Batas laju aliran air yang dapat terukur tergantung pada diameter pipa dan frekuensi paddlewheel, adapun frekuensi maksimum yang dapat diukur adalah 5,8 Hz atau 143.7ml/s.
Kata kunci: debit,system waktu nyata ,kernel hybrid, sensor paddlewheel
i
ABSTRACT
The main purpose of this Final Project is to realize a Real Time System to measure water volumetric flow rate (debit) in pipe. This system is commonly called “transmitter” and part of the process control system kit. The period from paddlewheel censor transducer is measured in order to yield water flow rate value. This final project assumes the paddlewheel censor is ideal thus the relation between water flow rate and paddlewheel linear speed is proportional. Microcontroller will calculate wavelength data from censor, put water flow rate result to LCD panel and send it to other device when asked through serial communication bus. All tasks above is managed by hybrid kernel program which responsible to determine when the task will be executed. Kernel will executed tasks based on their priority so that the more critical tasks will be guaranteed to be done first and the less priority tasks will be delayed, nevertheless there is one task which is executed based on its time period that is the LCD update task. The maximum paddlewheel frequency that can be measured is 5.8 Hz, which is proportional to volumetric flow 143.7 mililiter/second when its relation is depend on pipe diameter and relative velocity distribution across pipe.
Keyword : volumetric flow, real time system, hybrid kernel, paddlewheel censor
ii
KATA PENGANTAR
Puji Syukur kepada Allah SWT penulis ucapkan karena berkat rahmat dan hidayah-Nya penulis dapat melaksanakan kuliah di kampus hingga mengerjakan tugas akhir ini dengan baik. Judul laporan TA ini adalah “perancangan transmitter flowmeter paddlewheel berbasis mikrokonrtoller AT90S2313”. Laporan ini merupakan hasil pengerjaan Tugas akhir di Departemen Teknik Elektro ITB, disusun sebagai syarat kelulusan S1 di Departemen Teknik Elektro ITB. Pada kesempatan ini penulis sudah sepantasnya mengucapkan terima kasih yang sebesar-besarnya kepada: •
Ibu, Reza dan Lola yang selalu mendukung dan mendoakan penulis selama kuliah di ITB.
•
Pamanku “Ma’ Buwh” yang telah membantu dalam berbagai hal.
•
Bapak Prof. Adang Suwandi Ahmad sebagai pembimbing satu, yang telah meluangkan waktu untuk membantu penulis menyelesaikan Tugas Akhir ini.
•
Bapak Ir. Syahirul Hakin Ad Dairi sebagai pembimbing dua, yang telah memberikan bimbingan dan fasilitas bagi penulis untuk menyelesaikan Tugas Akhir ini.
•
Bapak Ir. Sumasono, yang telah banyak membantu penulis dalam memecahkan masalah yang terasa pelik bagi penulis.
•
Segenap dosen Departemen Teknik Elektro ITB yang berperan besar memberi ilmu pengetahuan kepada penulis selama kuliah.
•
Staf Tata Usaha Departemen Teknik Elektro ITB dan Tata Usaha Laboratorium Teknik Elektronika ITB.
•
Ade Sholihuddin dan Agung Surya yang telah bersama-sama dengan penulis mengerjakan tugas akhir ini, senang bekerjasama dengan kalian.
•
Teman-teman mahasiswa Elektro, khususnya Elektro 2000.
•
Teman-teman kos yang konyol-konyol namun dapat diajak bertukar pikiran.
•
Seluruh pihak yang telah memberikan bantuan dan dorongan.
Semoga laporan Tugas Akhir ini dapat bermanfaat dan dapat digunakan untuk pengembangan dan penelitian lebih lanjut. Penulis menyadari terdapat banyak kekurangan
iii
dan kesalahan dalam penulisan laporan ini. Untuk itu penulis menyambut baik kritik dan saran. Akhir kata penulis memohon maaf bila ada kata-kata yang tidak berkenan. Terima Kasih.
Bandung, Agustus 2005
Penulis
iv
DAFTAR ISI
ABSTRAK………………………………………………........……………………………..i ABSTRACT…………………………………………………........………………………...ii KATA PENGANTAR………………………………………………........………………..iii DAFTAR ISI…………………………………………………………........……………….iv DAFTAR GAMBAR………………………………………...……………........…………vii DAFTAR TABEL………………………………………….……………………........……ix DAFTAR PERSAMAAN......................................................................................................x BAB I
Pendahuluan………………………………………………………….........1
1.1
Latar Belakang……………………………………………………….........1
1.2
Tujuan…………………………………………………………….…..........1
1.3
Batasan Masalah……………………………………………………...........2
1.4
Sistematika Penulisan………………………………………………......….2
BAB II
Tinjauan Pustaka……………………………………………………......…4
2.1
Metoda Pengukuran Pada Sensor Paddlewheel…...…......….....…………...4
2.2
Sistem tertanam………………..………………………………......………5
2.3
Sistem waktu nyata…………………………………………………......….5
2.4
Sensor paddlewheel……………………………..…………………......…10
2.5
Mikrokontroler AT90S2313……………………………………….......…11
2.6
Komunikasi serial…………………………………………………….......15
2.7
Display LCD PC1601A…………………………………………......……16
BAB III
Perancangan dan Implementasi………….……………….…………........19
3.1
Deskripsi Proses Kendali Eksperimenter…..……......……………...……19
3.2
Deskripsi sensor………………………..……………......……………….20
3.3
Perancangan dan implementasi transmitter…………….........……………22 3.3.1
Implementasi perangkat keras………………..…….....…………23
3.3.2
Perancangan perangkat lunak………………...……….....………25
3.3.3
Implementasi perangkat lunak………………….…………......….27 3.3.3.1 Task pengukuran periode……..……………...…….....…27 3.3.3.2 Task pemeriksaan data serial…………………….....……33 3.3.3.3 Task batas waktu pengukuran periode……………..........36
v
3.3.3.4 Task update display LCD…………………………....….37 3.3 BAB IV
Alokasi memori dan register…..…………………………….……......….39 Pengujian dan Analisis…………………………………………….......…42
4.1
Pengujian karakteristik reed switch pada berbagai frekuensi …….......…42
4.2
Pengujian perangkat lunak…………………………………….….….......43 4.2.1 Pengujian dengan masukan dari pembangkit sinyal…..….….......…43 4.2.1 Pengujian dengan masukan dari sensor…………………..…….......46
4.3
Pengujian komunikasi………………………………………………....... 50
BAB V Kesimpulan dan Saran……………………………………...................………..…55 5.1
Kesimpulan……………………………………………………........…….55
5.2
Saran………………………………………………………………......….56
DAFTAR PUSTAKA…………………………………………………………….…..........57 LAMPIRAN………………………………………………………………………….........58
vi
DAFTAR GAMBAR
Gambar 2.1 Pengukuran frekuensi berdasarkan banyaknya siklus........................................4 Gambar 2.2 Pengukuran frekuensi berdasarkan periode....................................4 Gambar 2.3 Real Time Kernel sebagai abstraction layer antara aplikasi perangkat lunak dan perangkat keras [9]....................................................................................6 Gambar 2.4 Layanan yang disediakan Real Time Kernel [9]................................................6 Gambar 2.5 Perbandingan pewaktuan pemindahan tugas [9]................................................7 Gambar 2.6 Diagram waktu Event-Triggered System [12]....................................................9 Gambar 2.7 Diagram waktu Time-Triggered System [12]....................................................9 Gambar 2.8 Gambar penampang samping sensor paddlewheel..........................................10 Gambar 2.9 Pull-up resistor..................................................................................................10 Gambar 2.10 Sinyal keluaran sensor paddlewheel...............................................................10 Gambar 2.11 Konfigurasi pin AT90S2313 [2] ....................................................................11 Gambar 2.12 Diagram Blok AT90S2313 [2] ......................................................................13 Gambar 2.13 Peta Memori AT90S2313 [2] ........................................................................14 Gambar 2.14 RS 485 Half Duplex Network [4] ..................................................................16 Gambar 2.15 RS 485 Full Duplex Network [4] ..................................................................16 Gambar 2.16 Hubungan HD44780 dengan layer LCD [13]…………………….........……17 Gambar 2.17 Kode ASCII pada LCD HD44780 [3] ...........................................................18 Gambar 3.1 Diagram blok sistem pengukuran laju aliran air...............................................19 Gambar 3.2 Diagram blok sistem.........................................................................................19 Gambar 3.3 Sensor pada posisi vertikal...............................................................................20 Gambar 3.4 Penggunaan internal pull-up resistor................................................................21 Gambar 3.5 Perbandingan sinyal ideal dengan sebenarnya.................................................21 Gambar 3.6 Diagram blok transmitter..................................................................................22 Gambar 3.7 ISP Fun Card....................................................................................................23 Gambar 3.8 Antarmuka mikrokontroler dan LCD...............................................................24 Gambar 3.9 Antarmuka mikrokontroler dan MAX485........................................................24 Gambar 3.10 Flowchart Inisialisasi program.......................................................................27 Gambar 3.11 Pulsa sepanjang 1 periode..............................................................................28 Gambar 3.12 Flowchart pengukuran frekuensi paddlewheel...............................................30 Gambar 3.13 Flowchart operasi pembagian 24 bit fixed point............................................31
vii
Gambar 3.14 Konversi 2 Byte Binary ke desimal…………........................………………32 Gambar 3.15 Konversi Desimal ke ASCII...........................................................................33 Gambar 3.16 Paket data pada protokol.................................................................................33 Gambar 3.17 Flowchart periksa komunikasi serial..............................................................35 Gambar 3.18 Flowchart batas waktu pengukuran periode................................36 Gambar 3.19 Task update LCD............................................................................................37 Gambar 3.20 Inisialisasi LCD..............................................................................................38 Gambar 3.21 Tulis karakter ke LCD....................................................................................39 Gambar 3.22 Alokasi Register.............................................................................................40 Gambar 3.23 Alokasi SRAM...............................................................................................41 Gambar 4.1 Skema pengujian reed switch...........................................................................42 Gambar 4.2 Pengujian dengan pembangkit sinyal...............................................................44 Gambar 4.3 Hasil ukur alat vs hasil ukur osiloskop.............................................................45 Gambar 4.4 Susunan alat untuk pengujian sensor................................................................47 Gambar 4.5 Laju aliran vs frekuensi sensor.........................................................................48 Gambar 4.6 Skema pengujian komunikasi antara PC dengan alat ukur...............................50 Gambar 4.7 Tampilan program Terminal v1.9b saat menguji pesan yang berisi meminta kirim data.......................................................................................................51 Gambar 4.8 Pengiriman data ke EEPROM..........................................................................52 Gambar 4.9 Hasil pembacaan EEPROM..............................................................................53 Gambar 4.10 Skema pengujian komunikasi antara 2 node..................................................54
viii
DAFTAR TABEL
Tabel 2.1 Reset and vektor Interupsi [2]..............................................................................15 Tabel 3.1 Prioritas Tugas......................................................................................................26 Tabel 3.2 Waktu eksekusi terlama........................................................................................27 Tabel 3.3 Isi tiap byte pada pesan yang dikirim...................................................................34 Tabel 3.4 Keterangan byte command dan byte ID...............................................................34 Tabel 4.1 Hasil pengujian alat dengan input dari pembangkit sinyal...................................43 Tabel 4.2 Hasil perhitungan galat pengukuran frekuensi.....................................................45 Tabel 4.3 Hasil perhitungan akurasi frekuensi pada beberapa level konfiden.....................46 Tabel 4.4 Hasil pengujian alat dengan input dari sensor......................................................47 Tabel 4.5 Hasil perhitungan galat pengukuran frekuensi.....................................................48 Tabel 4.6 Hasil perhitungan akurasi frekuensi pada beberapa level konfiden.....................49 Tabel 4.7 Rentang pengukuran laju aliran air......................................................................50
ix
DAFTAR PERSAMAAN
Persamaan 4.1...........................................................................................................44 Persamaan 4.2...........................................................................................................45 Persamaan 4.3...........................................................................................................48 Persamaan 4.4...........................................................................................................48
x
Bab I Pendahuluan
1
BAB I PENDAHULUAN
1.1 Latar Belakang Sistem Pengukuran merupakan bagian yang penting dalam dunia industri. Melalui pengukuran, dapat diperoleh berbagai masukan untuk menentukan informasi dan kendali proses serta jaminan kualitas proses. Pengukuran dilakukan terhadap beragam parameter, dan salah satu parameter yang banyak digunakan dalam dunia industri adalah fluida (air). Kemampuan untuk mengendalikan proses dibutuhkan bagi para teknisi sebagai modal untuk menghadapi dunia industri nyata. Untuk itu, disamping mempelajari secara teoritis, dibutuhkan pula suatu alat eksperimental yang dapat memodelkan suatu sistem kendali proses baik secara manual maupun otomatis. Kit proses kendali eksperimenter ini dibuat untuk membantu mensimulasikan kendali proses. Dengan menggunakan fluida sebagai parameter kendali, dapat diperoleh berbagai informasi pengukuran seperti aliran, tekanan, ataupun level. Informasi yang diperoleh tersebut digunakan sebagai masukan untuk kendali aliran debit air pada sistem. Pembuatan kit eksperimenter ini merupakan pengembangan dari kit yang telah tersedia sebelumnya di lab LSS. Perbaikan yang dilakukan antara lain pengurangan biaya pembuatan dan peningkatan performa. Pengurangan biaya dilakukan dengan memperkecil ukuran kit dan mengganti bahan pembuatan namun diusahakan tidak mengurangi kualitas keseluruhan. Peningkatan performa dilakukan dengan menambahkan jenis sensor fluida, menambahkan
rangkaian
kontroler,
menjadikan
output
sensor
real
time,
dan
memungkinkan kit untuk dioperasikan melalui komputer.
1.2 Tujuan Tujuan umum dilakukan TA ini adalah untuk memenuhi syarat kelulusan mata kuliah EL40Z2, Sekaligus sebagai syarat kelulusan Strata1 di Departemen Teknik Elektro ITB. Adapun tujuan khusus yang hendak dicapai pada Tugas Akhir ini , antara lain:
Bab I Pendahuluan
2
a. Merancang dan mengimplementasikan transmitter pada flowmeter paddlewheel yang cepat, tepat, dapat menampilkan hasil pengukuran pada LCD, dan mengirim hasil pengukuran bila diminta dengan mengutamakan minimalisasi biaya pembuatan. b. Menerapkan sistem pengaturan berupa kernel hybrid.
1.3 Batasan masalah Pada laporan tugas akhir ini akan dibahas implementasi pengukuran kecepatan alir air dalam pipa dengan menggunakan sensor jenis paddlewheel. Berikut beberapa batasan masalah pada tugas akhir ini. a. Menggunakan sensor flowmeter jenis paddlewheel dengan transduser saklar buluh (reed switch). b. Dalam Tugas Akhir sensor tidak menjadi perhatian utama. Penulis menitikberatkan pada realisasi transmitter dengan kernel hybrid. c. Parameter yang diukur adalah periode dari output sensor. d. Arah aliran fluida (air) adalah maju saja, tidak ada arah aliran mundur . e
Menggunakan mikrokontroller AT90S2313.
f.
Tidak memiliki rangkaian kalibrasi sensor, kalibrasi dilakukan melalui komunikasi serial.
1.4 Sistematika Penulisan Laporan Tugas Akhir ini terdiri dari lima bab, antara lain: BAB I
Pendahuluan. Bab ini berisi latar belakang dilaksanakannya Tugas Akhir,
tujuan yang hendak dicapai dari pelaksanaan Tugas Akhir, serta batasan masalah yang digunakan. BAB II Tinjauan Pustaka. Pada Bab ini dijelaskan konsep dasar real time system, cara kerja sensor flowmeter jenis paddlewheel, sistem mikrokontroler, dan RS485. BAB III Perancangan dan Implementasi. Bab ini berisi perancangan dan implementasi perangkat lunak dan keras. Sedangkan pembahasan sensor dibatasi pada pembahasan spesifikasi. BAB IV Pengujian dan Analisis. Bab ini berisi pengujian sistem pengukuran dengan masukan dari generator sinyal, pengujian output sensor, pencarian konstanta pada pada perangkat lunak, serta pengujian komunikasi serial.
Bab I Pendahuluan
3
BAB V Kesimpulan dan Saran. Bab ini berisi kesimpulan yang didapatkan penulis setelah melakukan perancangan, implementasi, hingga pengujian. Kemudian diberikan saran-saran sehingga dapat dibuat suatu sistem pengukuran laju aliran air yang lebih baik.
Bab II Tinjauan Pustaka
4
BAB II TINJAUAN PUSTAKA
Bab ini membahas teori dasar yang mendukung perancangan dan implementasi sensor kincir (paddlewheel), meliputi Real Time System, metoda pengukuran pada sensor paddlewheel, mikrokontroler, komunikasi serial, dan display LCD dot matrix.
2.1 Metoda Pengukuran Pada Sensor Paddlewheel Besaran yang diambil dari sensor paddlewheel adalah frekuensi sinyal akibat bukatutup reed switch. Ada dua cara menghitung frekuensi 1. Dengan cara menghitung jumlah siklus dalam selang waktu tertentu. Misal rentang waktu pengukuran = 1 detik Bila dalam rentang waktu tersebut ada 4 kali transisi naik maka frekuensi sinyal = 2Hz.
Gambar 2.1 Pengukuran frekuensi berdasarkan banyaknya siklus
2. Dengan cara menghitung waktu untuk satu siklus. Bila 1 periode = t detik maka frekuensi = (1/2t)Hz.
Gambar 2.2 Pengukuran frekuensi berdasarkan periode
Cara pertama rentan terhadap kesalahan perhitungan karena adanya ketidaktepatan waktu mulai pengamatan, sehingga tidak akurat. Implementasi cara pertama ini juga tidak cocok karena resource mikrokontroler akan terpakai selama penghitungan banyak siklus input. Hal tersebut terjadi karena selama menghitung banyak siklus, mikrokontroller
Bab II Tinjauan Pustaka
5
sedang menjalankan rutin interupsi sehingga tidak dapat melakukan hal lain seperti pengecekan komunikasi, dan lain-lain. Cara kedua lebih baik karena cpu mulai menghitung pada saat ada transisi naik atau turun pada gelombang yang diamati. Selebihnya CPU akan bekerja pada background ( berprioritas rendah dan sewaktu-waktu dapat diinterupsi/biasanya superloop). Satuan yang hendak dihasilkan oleh sistem pengukuran ini adalah Volume/satuan waktu. Asumsikan kecepatan sudut kincir flowmeter berbanding lurus dengan laju aliran air di dalam pipa maka laju aliran air dalam pipa u = k.f (k adalah konstanta). Nilai k dapat dicari mengalirkan air dengan laju konstan pada pipa.
2.2 Sistem Tertanam (Embedded System ) Embedded System mempunyai setidaknya sebuah pemroses yang dapat diprogram (biasanya dalam bentuk chip mikrokontroller, mikroprosesor, atau Digital Signal Processor) yang oleh pengguna tidak dikenali sebagai computer [14]. Embedded System biasanya tersembunyi di dalam alat-alat elektronik. Embedded System umumnya tidak berhubungan dengan pengguna seperti pada PC melalui mouse, keyboard dan monitor. Embedded System berhubungan dengan dunia luar melalui antarmuka yang tidak biasa seperti sensor,aktuator dan lain-lain.
2.3 Sistem Waktu Nyata ( Real Time System) Real Time System adalah sistem yang dapat merespon kejadian di dunia nyata (melalui sensor) secara langsung [14]. Sebagai contoh sistem autopilot pada pesawat terbang harus merespon secara langsung untuk membetulkan deviasi arah terbang. Ketepatan dan kepastian waktu proses perhitungan menjadi hal utama dalam sistem real time [14].
2.3.1 Real Time Kernel Real Time Kernel adalah inti sistem operasi (Operating System/OS) yang bekerja pada Real Time System. Kernel adalah lapis abstraksi (abstraction layer) antara aplikasi perangkat lunak dengan perangkat keras [9]. Istilah mengenai abstraction layer ini sering tidak konsisten, banyak orang menggunakan istilah Real Time Operating System (RTOS), ada juga yang menggunakan istilah Real Time Kernel. Ada yang menganggap keduanya sama, ada juga yang menganggap kernel adalah bagian dari OS yang melakukan layanan (service) paling dasar saja. Untuk seterusnya penulis memilih istilah Real Time Kernel.
Bab II Tinjauan Pustaka
6
Gambar 2.3 Real Time Kernel sebagai abstraction layer antara aplikasi perangkat lunak dan perangkat keras [9].
Dalam menyediakan abstraction layer ini Real Time Kernel melakukan lima kategori utama dari service dasar aplikasi, seperti pada Gambar 2.4.
Gambar 2.4 Layanan yang disediakan Real Time Kernel [9]
Kategori paling mendasar pada service kernel adalah manajemen tugas (task). Bagian ini pemrogram mendesain program sebagai blok-blok yang terpisah. Masingmasing menangani suatu topik tertentu, tujuan tertentu, dan barangkali batas waktu realtime itu sendiri. Masing-masing blok yang terpisah disebut task. Service dalam kategori ini meliputi kemampuan menjalankan task dan memberi prioritas kepada masing-masing task. Service utama Real Time Kernel adalah penjadwalan task pada system embedded yang sedang bekerja. Penjadwal task mengendalikan eksekusi task aplikasi, juga membuatnya berjalan dengan tepat waktu
Bab II Tinjauan Pustaka
7
Kategori kedua pada service kernel, ada di puncak Gambar 2.4, Komunikasi dan sinkronisasi antar task. Service ini memungkinkan task memberikan informasi satu sama lain, tanpa bahaya informasi tersebut rusak. Service kernel memungkinkan kernel untuk mengkoordinir task-task, sehingga task-task tersebut dapat secara produktif bekerja sama dengan satu sama lain. Tanpa bantuan dari service Real Time Kernel, task bisa saja mengirimkan informasi yang salah. Banyak system embedded mempunyai kebutuhan pewaktuan (timing) yang ketat, sehingga banyak Real Time Kernel menyediakan service pewaktu (timer), seperti task delay dan time-out. Ini ditunjukkan pada sisi kanan sisi Gambar 2.4.
2.3.2 Perbedaan Real Time OS dengan non Real Time OS Banyak sistem operasi non-real-time juga menyediakan layanan (service) kernel serupa. Perbedaan mendasar antara general purpose kernel dan real-time kernel adalah kebutuhan akan kepastian pewaktuan (deterministic timing behavior) dalam kernel realtime. Secara formal, deterministic timing berarti service sistem operasi itu hanya mengkonsumsi waktu sebanyak yang diketahui dan diharapkan. Dalam teori, service ini bisa dinyatakan seperti rumusan matematis. Rumusan ini harus tidak meliputi komponen pewaktuan acak. Komponen acak dalam selang waktu service menyebabkan delay acak pada program aplikasi dan menyebabkan aplikasi melanggar batas waktu real time yang mana tidak boleh terjadi pada sistem real-time.
Gambar 2.5 Perbandingan pewaktuan pemindahan tugas [9]
Bab II Tinjauan Pustaka
8
Sistem operasi non-real-time seringkali bersifat tak dapat dipastikan (nondeterministic). Service sistem operasi serbaguna dapat membangkitkan delay acak ke dalam aplikasi program dan menyebabkan respon lambat yang tak diinginkan. Jika pengembang suatu sistem operasi non-real-time ditanya apa rumusan aljabar yang menggambarkan perilaku pewaktuan salah satu dari servicenya ( seperti pengiriman suatu pesan dari tugas ke tugas), mereka tidak akan memberikan suatu rumusan aljabar. Sifat deterministik bukan hal penting dalam merancang general-computing operating system [9]. Sebagian besar service kernel real-time konstan tanpa dipengaruhi beban CPU. Dengan kata lain, rumusan aljabar sederhana: T(Message_Send) = tetap [9], tanpa tergantung dengan panjang pesan yang dikirim, atau lain faktor seperti banyaknya task dan antrian pesan yang ditangani oleh Real Time Kernel.
2.3.3 Jenis Real Time System: Event Triggered System Event Triggered System merupakan suatu sistem yang akan mengeksekusi program jika ada permintaan berupa kejadian (event)[14]. Pada event triggered system dikenal adanya urutan prioritas. Jika suatu task sedang dijalankan dan ada interupsi dengan prioritas lebih tinggi maka prosesor akan langsung mengeksekusi task interupsi dan menunda task yang sedang berjalan. Event Triggered System biasa dikenal dengan Preemptive System. Masing-masing task dalam suatu aplikasi software harus diberi prioritas, prioritas yang lebih tinggi yang berarti membutuhkan respon yang lebih cepat. Kemampuan respon yang sangat cepat dimungkinkan oleh penjadwal (scheduler) preemptive. Penjadwal preemptive dapat menghentikan suatu task kapan saja dan mengeksekusi task lain yang prioritasnya lebih tinggi. Ketentuan dasar pada penjadwalan preemptive adalah pada setiap saat, task yang mempunyai Prioritas tertinggi selalu siap dijalankan. Dengan kata lain, jika baik task berprioritas tinggi maupun berprioritas lebih tinggi siap dijalankan, scheduler akan membuat task berprioritas lebih tinggi dieksekusi lebih dulu. Task dengan prioritas rendah hanya dapat berjalan setelah task berprioritas tinggi telah selesai dieksekusi. Pemilihan prioritas task merupakan hal penting pada penjadwalan preemptive, karena bila task berprioritas tinggi sedang bekerja dan muncul event pemicu task berprioritas rendah maka task berprioritas rendah tidak tertunda terlalu lama atau bahkan tidak dilaksanakan sama sekali.
Bab II Tinjauan Pustaka
9
Gambar 2.6 Diagram waktu Event-Triggered System [12]
Time Triggered System Pada Time triggered system prosesor akan mengeksekusi task dalam rentang waktu tertentu[14]. Tidak ada prioritas (service interupsi yang dipakai hanya service interupsi pewaktu) dalam system ini. Time triggered system biasa dikenal dengan nama cooperative system. Ada perbedaan mendasar antara time triggered system dengan superloop. Pada superloop system dijalankan saat catu daya dinyalakan secara kontinu dan berhenti saat catu daya dipadamkan. Pada superloop semua task dijalankan secara berurutan, tanpa diketahui berapa lama eksekusi suatu program (biasanya waktu eksekusi program tidak selalu sama/nondeterministic). Sedangkan pada time triggered system, terdapat kernel yang mengatur pemanggilan task-task secara periodik dan pengaturan lama eksekusi serta komunikasi antar task.
Gambar 2.7 Diagram waktu Time-Triggered System [12]
Sistem hibrida (Hybrid System) Hybrid system merupakan gabungan dari preemptive system dan cooperative system [12]. Pada hybrid system terdapat minimal 1 task preemptive dan 1 task cooperative. Task preemptive biasa digunakan untuk menangani error atau input atau apapun yang membutuhkan perhatian segera.
Bab II Tinjauan Pustaka
10
2.4 Sensor Paddlewheel Sensor kincir (paddlewheel) terdapat pada di dalam pipa yang dialiri air. paddlewheel ini berputar bila air yang melewatinya mengalir. Pada paddlewheel tersebut ditanam sebuah magnet permanent pada posisi tertentu seperti pada gambar di bawah ini:
Gambar 2.8 Gambar penampang samping sensor paddlewheel
Pada rumah (casing) sensor ditanam sebuah saklar buluh (reed switch). Reed switch ini akan menutup (short circuit) bila terkena medan magnet melebihi ambang, contoh bila didekati oleh magnet permanen. Bila saat paddlewheel berputar dan posisi magnet dekat dengan reed switch maka akan dihasilkan output LOW, dan jika posisi magnet jauh dari reed switch output akan di pull-up menjadi HIGH.
Gambar 2.9 Pull-up resistor
Bila air pada pipa mengalir akan mengakibatkan paddlewheel berputar. Kecepatan putar paddlewheel tergantung pada kecepatan air. Semakin cepat air mengalir semakin cepat paddlewheel berputar dan semakin tinggi frekuensi sinyal output sensor, begitu juga sebaliknya. Bentuk sinyal yang dihasilkan:
Bab II Tinjauan Pustaka
11
Gambar 2.10 Sinyal keluaran sensor paddlewheel
Keunggulan jenis paddlewheel ini adalah sensor dapat digunakan untuk bermacam–macam jenis fluida/cairan . Tidak seperti sensor jenis lain yang dapat saja bergantung pada sifat konduktivitas cairan. Kelemahan sensor paddlewheel adalah mengurangi laju air di dalam pipa. paddlewheel mempunyai massa tertentu sehingga mempunyai kelembaman. Semakin besar massa kincir semakin besar pula kelembamannya sehingga perlu gaya yang lebih besar untuk memutarnya, akibatnya laju air menjadi lebih lambat. Selain karena massa kincir, gesekan antara poros kincir dengan sumbunya juga dapat memperlambat aliran cairan dalam pipa. Kompensasi kelemahan sensor paddlewheel dengan software dan hardware. Dengan software kesalahan pengukuran akibat massa dan gesekan kincir dapat dikurangi meskipun hanya melalui cara pendekatan. Sedangkan dengan cara hardware yaitu dengan cara menambah jumlah magnet karena resolusi pengukuran tergantung pada banyaknya magnet yang terpasang pada kincir. Tetapi banyak magnet akan membuat massa kincir membesar yang mengakibatkan berkurangnya laju air dalam pipa. Oleh karena itu untuk membuat sensor yang akurat dan beresolusi tinggi relatif sulit
2.5 MikrokontrolerAVR AT90S2313
Gambar 2.11 Konfigurasi pin AT90S2313 [2]
Bab II Tinjauan Pustaka
AT90S2313 merupakan mikrokontroler CMOS 8-bit berarsitektur
12
RISC
(Reduced Intruction Set Computer). Dengan pelaksanaan satu instruksi dalam satu siklus clock, mikrokontroller AT90S2313 mendekati 1 MIPS (Million Instruction Per Second) pada 1 MHZ, yang memungkinkan pengguna mengoptimalkan perbandingan konsumsi energi terhadap kecepatan proses. Deskripsi singkat Mikrokontroler AT90S2313: • AVR – Arsitektur RISC berunjuk kerja tinggi dan berkonsumsi daya rendah. – 118 Instruksi – Hampir semua instruksi hanya perlu satu clock – 32× 8 Register Serbaguna – Mendekati 10 MIPS pada 10 MHz • Data and Non-volatile Program Memory – 2K Byte In-System Programmable Flash, ketahanan 1,000 kali baca/tulis – 128 Byte SRAM – 128 Byte In-System Programmable EEPROM, ketahanan: 100,000 kali baca/tulis – Programming Lock untuk keamanan data Flash memory dan EEPROM • Peripheral yang tersedia – One 8-bit Timer/Counter dengan Prescaler terpisah – One 16-bit Timer/Counter dengan Prescaler terpisah, Compare, Capture Mode dan 8-, 9-, atau 10-bit PWM – On-chip Analog Comparator – Programmable Watchdog Timer dengan On-chip Oscillator – SPI Serial Interface untuk In-System Programming – Full Duplex UART • Fasilitas khusus pada mikrokontroler ini: – Low-power Idle dan mode power-down – Sumber interupsi eksternal dan internal • Spesifikasi – Low-power, High-speed CMOS Process Technology – Fully Static Operation • Konsumsi daya pada 4 MHz, 3V, 25°C – Aktif: 2.8 mA – Mode Idle: 0.8 mA – Mode Power-down: <1 µA • Jumlah pin Input/Output dan kemasan IC – 15 Programmable I/O Lines
Bab II Tinjauan Pustaka
13
– 20-pin PDIP and SOIC • Rekomendasi tegangan kerja – 2.7 s.d 6.0V (AT90S2313-4) – 4.0 s.d 6.0V (AT90S2313-10) • Rekomendasi frekuensi kerja – 0 s.d 4 MHz (AT90S2313-4) – 0 s.d 10 MHz (AT90S2313-10)
Mikrokontroller AVR mengkombinasikan set instruksi dengan 32 register serbaguna (general purpose working registers). Semua 32 register terhubung secara langsung ke Logic Unit (ALU), memungkinkan dua register diakses dalam satu eksekusi instruksi yang hanya membutuhkan satu siklus clock. Arsitektur yang dihasilkan lebih efisien mencapai 10 kali lebih cepat daripada mikrokontroler CISC konvensional.
Gambar 2.12. Diagram Blok AT90S2313 [2]
Bab II Tinjauan Pustaka
14
ROM jenis On-chip In-System Programmable Flash memungkinkan penulisan ulang program melalui suatu SPI serial interface atau oleh suatu programmer konvensional. Mikrokontroller AVR AT90S2313 didukung oleh development tools mencakup: C compiler, asembler makro, program debugger/simulators, In-Circuit Emulators dan kit evaluasi. Memori yang terdapat pada AT90S2313 adalah 2KByte Programmable Flash memory, 128 Byte EEPROM, dan 128 Byte SRAM. Flash memory digunakan untuk tempat penyimpanan program dengan kemampuan dapat ditulis ulang sampai 1000kali. EEPROM biasa digunakan untuk menyimpan data sebelum sistem dimatikan, isi EEPROM tidak berubah ketika sistem dinyalakan kembali. Sedangkan SRAM digunakan untuk menyimpan data sementara, isi SRAM akan hilang saat sistem dimatikan.
Gambar 2.13. Peta Memori AT90S2313 [2]
Reset and Penanganan Interupsi (Interrupt Handling) AT90S2313 menyediakan 10 sumber interupsi. Interupsi-interupsi tersebut mempunyai program vector terpisah di flash memory. Untuk mengaktifkan interupsi setiap bit enable dan bit I pada status register harus diset high. Alamat yang paling rendah di dalam memori program secara otomatis berfungsi sebagai Reset dan vektor interupsi (Interrupt Vectors). Daftar lengkap vector interupsi diperlihatkan oleh tabel 2. Daftar juga
Bab II Tinjauan Pustaka
15
menentukan tingkat prioritas setiap interupsi. Semakin rendah alamat , semakin tinggi tingkat prioritasnya. Reset mempunyai prioritas tertinggi, diikuti oleh INT0 (external interrupt request 0).
Tabel 2.1 Reset and vektor Interupsi [2]
2.6 Komunikasi Serial (Universal Asynchronous Receiver/Transmitter) Sebuah device Universal Asynchronous Receiver/Transmitter (UART) mengubah data dari format 8 bit menjadi 1 bit per-satuan waktu pada port serial seperti RS 232 [12]. Tiap karakter dikirim dalam sebuah paket yang terdiri dari start bit, data 8 bit, dan stop bit. Komunikasi serial dengan protokol UART bersifat asinkron sehingga kecepatan pengiriman data harus tetap sehingga device penerima dapat membaca data yang masuk dengan benar. Kecepatan pengiriman data pada komunikasi serial UART dikenal dengan nama baud rate. Pada AVR setiap byte data yang dikirim secara serial secara otomatis ditambahi bit start di awal dan bit stop di akhir message. Dengan menggunakan UART mikrokontroler dapat berkomunikasi dengan PC (dengan driver RS 232 yang berfungsi mengubah level tegangan ). Pada sistem kendali ini terdapat lebih dari dua alat (device) maka tidak cukup 1 karakter pada setiap penerimaan/pengiriman data. Alat yang dapat menangani lebih dari 2 node dapat digunakan RS 485. Setiap pengiriman data, node mengirim beberapa karakter yang berisi alamat unik node, tujuan, data dan sebagainya tergantung keperluan. MAX485 adalah transceivers untuk komunikasi.RS-485 dan RS-422. Transceiver MAX485 dirancang untuk komunikasi data dua arah (half duplex dan full duplex) pada jalur transmisi bus multipoint. Aplikasi umum pada jaringan (network circuits) MAX485
Bab II Tinjauan Pustaka
16
ditunjukkan pada Gambar 2.13 dan 2.14. MAX485 dapat juga digunakan sebagai line repeaters, dengan panjang kabel lebih dari 4000 kaki. Untuk memperkecil pemantulan, pada kedua sisi line sebaiknya diberi resistansi sebesar impedansi karakteristiknya (umumnya 120 ohm), dan panjang line utama sebaiknya sependek mungkin. MAX483 dan MAX487–MAX489 lebih baik dalam mentoleransi efek pemantulan.
Gambar 2.14 RS 485 Half Duplex Network [4]
Gambar 2.15. RS 485 Full Duplex Network [4]
2.7 Display LCD PC1601A [13] PC1601 adalah modul display LCD dot matrix dengan konfigurasi 16 karakter dalam satu baris. Setip karakter dibentuk oleh 8 baris pixel dan 5 kolom pixel (baris terakhir pixel adalah kursor). Gambar 2.16 menunjukkan hubungan antara layer LCD
Bab II Tinjauan Pustaka
17
dengan dengan HD44780 yang merupakan mikrokontroler pengendali LCD. HD44780 buatan Hitachi ini sudah tertanam pada modul PC1601A ini.
Gambar 2.16 Hubungan HD44780 dengan layer LCD [13]
Modul LCD PC1601A memiliki beberapa jenis memori yang digunakan untuk menyimpan atau memproses data-data yang akan ditampilkan pada layer LCD. Setiap jenis memori mempunyai fungsi tersendiri. DDRAM adalah memori tempat karakter yang ditampilkan berada. Contohnya karakter ‘A’ atai 41h yang ditulis pada alamat 00 akan tampil pada baris pertama dan kolom pertama dari LCD. Apabila karakter tersebut ditulis pada alamat 40h, karakter tersebut akan tampil pada baris kanan dari LCD CGRAM adalah memori untuk menggambarkan pola sebuah karakter dan bentuk karakter dapat diubah-ubah sesuai keinginan. Akan tetapi isi memori ini akan hilang saat power supply dimatikan, sehingga pola karakter akan hilang. CGROM adalah memori untuk menggambarkan pola sebuah karater dan pola tersebut sudah ditentukan secara permanent dari HD44780 sehingga pengguna tidak dapat mengubahnya. Oleh karena ROM bersifat permanen, pola karakter tersebut tidak akan hilang walau catu daya dimatikan. Gambar 2.16 menunjukkan pola-pola karakter yang tersimpan dalam lokasi-lokasi tertentu dalam CGROM. Saat HD44780akan menampilkan data 41h yang tersimpan pada DDRAM, HD44780 akan mengambil data di alamat 41h yang ada pada CGROM, yaitu pola karakter ’A’. Alamat karakter pada CGROM serupa dengan kode ASCII.
Bab II Tinjauan Pustaka
18
Gambar 2.17 Kode ASCII pada LCD HD44780 [3]
Bab III Perancangan dan Implementasi
19
BAB III PERANCANGAN DAN IMPLEMENTASI
Bab ini membahas perancangan bagian elektronik (transmitter) pada sistem pengukuran debit air. Sistem pengukuran ini terdiri dari bagian mekanis dan elektronik. Bagian mekanis berupa sensor paddlewheel, sedangkan transmitter adalah rangkaian elektronik yang berfungsi mengolah data dari bagian mekanis. Transmitter terdiri dari perangkat keras (hardware) dan perangkat lunak (software).
Gambar 3.1 Diagram blok sistem pengukuran laju aliran air
3.1 Deskripsi Sistem Kendali Proses
Gambar 3.2 Diagram blok sistem
Bab III Perancangan dan Implementasi
20
Kit eksperimental ini terdiri atas empat bagian utama, yaitu sensor, kontroller, BUS, serta SCADA. Masukan berupa fluida berasal dari reservoir yang diatur oleh pompa dengan switch terhubung pada kontroller. Dua jenis sensor yang digunakan adalah sensor laju aliran air dan sensor level air. Keseluruhan hasil pengukuran menjadi masukan bagi kontroller. Kontroller merespon masukan dengan mengubah laju air dengan menggunakan control valve. Namun demikian, terdapat pula katup air yang dikendalikan secara manual untuk simulasi kendali manual. BUS menjembatani hubungan antara data output dari sensor dengan kontroller, juga hubungan antara kontroller dengan SCADA. PC digunakan untuk memudahkan monitoring dan pengontrolan sistem secara keseluruhan. PC juga dapat menggantikan fungsi kontroller.
3.2 Deskripsi Sensor Biaya pembuatan sensor diusahakan seminimal mungkin. Rumah sensor (casing) dibuat dari PVC sedangkan paddlewheelnya dibuat dari resin. Casing dari bahan PVC lebih ringan daripada yang dibuat dari logam. Awalnya dibuat master untuk paddlewheel dari bahan PVC, kemudian paddlewheel dicetak dengan bahan resin, meskipun lebih berat daripada PVC namun dapat diperbanyak dengan murah dan cepat. Sensor bekerja dengan baik pada kondisi tertentu. Posisi pemasangan sensor yang baik adalah mendatar (horizontal). Pada posisi ini air yang masuk pada inlet sensor dapat lebih baik menggerakkan paddlewheel yang terdapat di dalam sensor, bila posisi sensor vertikal maka air yang masuk ke inlet mengenai bagian depan paddlewheel sehingga paddlewheel hanya berputar sedikit meskipun laju aliran air yang masuk tinggi, bahkan paddlewheel dapat tidak berputar sama sekali. Lihat gambar di bawah ini, saat aliran “A” mengenai paddlewheel maka akan mengimbangi aliran “B” sehingga kecepatan sudut paddlewheel berkurang. Hal tersebut harus dihindari karena membuat kecepatan sudut paddlewheel tidak berbanding lurus dengan laju aliran air.
Gambar 3.3 Sensor pada posisi vertikal
Bab III Perancangan dan Implementasi
21
Sifat saklar buluh (reed switch) penting diamati karena reed switch adalah pengubah dari gerakan berputar menjadi gelombang kotak yang akan dijadikan input mikrokontroler. Reed switch adalah saklar yang “closed” bila terkena flux medan magnet melebihi kerapatan tertentu. Bila jumlah flux magnet yang mengenai reed switch di bawah flux ambang maka switch ini akan “open”. Kemudian switch tersebut dihubungkan dengan pin I/O mikrokotroler, beruntung AT90S23213 sudah dilengkapi dengan internal pull-up resistor yang dapat digunakan untuk mengubah gerakan buka-tutup reed switch menjadi gelombang kotak.
Gambar 3.4 Penggunaan internal pull-up resistor
Bila switch open maka keadaan pin input “high”, dan bila switch closed maka keadaan pin input “low”. Gerakan buka-tutup reed switch tidak sempurna dan memang tidak ada switch yang dapat berpindah state tanpa mengalami pemantulan sesaat (bouncing). Pada saat terjadi bouncing keadaan saklar berubah-ubah antara buka dan tutup dengan cepat dan berkali-kali. Gambar di bawah ini menunjukkan perbedaan sinyal kotak ideal dengan sinyal kotak sebenarnya yang dihasilkan sensor.
Gambar 3.5 Perbandingan sinyal ideal dengan sebenarnya
Pada pengukuran laju aliran air ini adanya bouncing sangat mengganggu karena membuat pengukuran panjang gelombang menjadi salah. Pengukuran panjang gelombang
Bab III Perancangan dan Implementasi
22
dimulai saat transisi naik dan diakhiri transisi naik berikutnya. Adanya bouncing akan membuat mikrokontroler salah mengartikan sinyal dengan menganggap transisi naik bouncing sebagai transisi naik sebenarnya, akibatnya hasil perhitungan menunjukkan frekuensi tinggi. Oleh karena itu diperlukan suatu proses penghilangan pemantulan (debouncing) untuk menghilangkan gangguan tersebut. Proses penghilangan pemantulan dipilih secara software.
3.3 Perancangan dan Implementasi Transmitter Bagian elektronik terdiri dari dua bagian
yaitu implementasi hardware dan
perancangan software. Penulis lebih condong memilih “implementasi hardware” daripada “perancangan hardware” karena hardware transmitter ini relatif sederhana dan banyak diambil utuh dari referensi yang sudah ada.
Sedangkan untuk software penulis lebih
condong memilih “perancangan software” karena software TA ini “dibuat dari nol” meskipun ada beberapa rutin yang diambil dari referensi.
Gambar 3.6 Diagram blok transmitter
3.3.1 Implementasi Perangkat Keras Implementasi hardware mengacu pada batasan masalah pada BAB I, yaitu menekankan pada minimalisasi biaya pembuatan. Pendekatan yang penulis gunakan adalah dengan menggunakan komponen sesedikit mungkin, sedangkan pada pembuatan PCB dengan menggunakan papan 1 lapis (single layer).
Transduser dan Pengkondisi Sinyal Transduser adalah sebuah saklar buluh (reed switch). Pengkondisi sinyal berupa pull-up resistor internal yang sudah tersedia pada mikrokontroler. Dengan menggunakan pull-up resistor internal maka tidak diperlukan rangkaian tambahan. Pengkondisi sinyal yang baik dapat meminimalisir gangguan pada jalur koneksi dengan sensor. Reed switch akan menghasilkan bouncing yang akan mengganggu perhitungan data sehingga harus ada mekanisme debouncing pada pengkondisi sinyal,
Bab III Perancangan dan Implementasi
23
namun karena belum menemukan cara yang tepat dan akan menambah komponen maka yang dipakai adalah debouncing software.
Mikrokontroler Alasan menggunakan Atmel AVR AT90S2313 antara lain karena mikrokontroler ini dapat mengeksekusi hampir semua perintah/instruksi dalam satu siklus clock Hal ini penting karena alat pemroses data real time harus dapat mengerjakan perhitungan dalam waktu yang singkat (dibandingkan selang waktu perubahan sinyal). AT90S2313 berharga murah dan mempunyai fasilitas terbatas, meskipun demikian fasilitas cocok dengan kebutuhan seperti eksternal interrupt request, internal baud rate generator, dua buah timer, mempunyai 20 pin sehingga secara fisik berukuran kecil. In-System Programming (ISP) AT90S2313 dapat dengan mudah dibuat dan tidak butuh banyak komponen. Penulis menggunakan ISP Funcard (lihat gambar 3.6) karena rangkaiannya sederhana dan tidak perlu banyak komponen tambahan.
Gambar 3.7 ISP Fun Card
Display LCD Dot Matrix Display LCD dipilih karena tidak membebani CPU dengan proses multiplexing dan lain-lain seperti yang dibutuhkan display seven segment. Semua hal mengenai tampilan karakter sudah dikerjakan oleh prosesor internal pada modul LCD. Terdapat berbagai macam merek display LCD di pasaran, namun semua bekerja dengan cara yang sama. Ada dua macam cara pengiriman atau penerimaan data ke LCD. Pertama dengan antarmuka 8 bit (8 bit interface), artinya data dikirim atau diterima sekaligus 8 bit ke LCD.
Bab III Perancangan dan Implementasi
24
Untuk cara ini perlu 8+3 pin I/O yaitu 11 pin. Ada 3 pin tambahan yaitu untuk bit RS, RW, dan EN. Cara kedua dengan antarmuka 4 bit (4 bit interface), pada cara ini data dikirim/diterima 2 kali masing-masing 4 bit. Untuk cara ini perlu 4+3 pin I/O yaitu 7 pin. Sehingga cara 4 bit interface lebih hemat pemakaian port IO meskipun proses kirim data dan perintah dua kali lebih lama daripada 8 bit interface. Pada TA ini digunkan mikrokontroller AT90S2313 yang hanya mempunyai 15 pin IO maka cara 4 bit interface lebih cocok digunakan.
Gambar 3.8 Antarmuka mikrokontroler dan LCD
Komunikasi Serial RS 485 Sistem kendali ini menggunakan beberapa sensor yang terhubung dengan kontroler, supaya sistem tetap sederhana perlu alat yang dapat menampung banyak terminal sekaligus. Salah satu alat yang mampu melakukannya adalah RS485. Tidak seperti RS232 yang hanya dapat menghubungkan dua terminal saja Pada RS485 dapat ditampung sampai dengan 32 terminal dengan baud rate mencapai 115200bps.
Gambar 3.9 Antarmuka mikrokontroler dan MAX485
Pin PB3 dpilih berfungsi menentukan mode komunikasi. Bila PB3 berlogika ‘1’ maka MAX485 berfungsi sebagai driver (mode kirim data), bila PB3 berlogika ‘0’
Bab III Perancangan dan Implementasi
25
MAX485 berfungsi sebagai receiver. Pada setiap saat hanya ada satu alat yang berfungsi sebagai driver dan alat lainnya harus berfungsi sebagai receiver, bila lebih dari satu berfungsi sebagai driver maka komunikasi akan gagal.
3.3.2 Perancangan Perangkat Lunak Penggunaan real time kernel penting dalam pengukuran ini karena data yang dihasilkan akan dipakai kembali oleh bagian lain. Sistem ini terdiri dari macam-macam alat seperti pengukur laju aliran air, pengukur tekanan air dan pengukur level air, supaya system keseluruhan real time maka pengukur laju aliran air juga harus real time. Sehingga data yang dihasilkan harus terjamin akurasi dan kecepatannya. Ada beberapa tugas (task) yang dikerjakan oleh mikrokontroler pada TA ini. Pertama: mengukur lama antara 2 transisi naik pada sinyal input, maka akan didapat waktu setengah panjang gelombang. Kedua: membatasi panjang gelombang agar bisa mendeteksi laju aliran nol. Bila setelah waktu tertentu tidak terdeteksi ada perubahan state maka frekuensi paddlewheel dianggap nol. Setelah panjang gelombang diukur maka mikrokontroler mengolahnya menjadi dalam satuan laju aliran air yaitu liter/detik. Ketiga: berkomunikasi dengan alat lain dengan komunikasi serial (UART). Ketiga task tersebut dieksekusi bila ada pemicu interupsi yang dapat terjadi kapan saja sehingga task-task tersebut tergolong task preemptive. Task-task preemptive tersebut dapat diatur sehingga bila terjadi dua task sekaligus maka task berprioritas lebih tinggi dapat menunda task berprioritas rendah, artinya task berprioritas tinggi memesan lebih dulu (preempt) task berprioritas lebih rendah. Mikrokontroler harus menampilkan data hasil perhitungan pada display LCD. Untuk task ini mikrokontroler mengupdate tampilan setiap selang waktu tertentu, sehingga task display tergolong task time triggered. Lama selang waktu ini diusahakan ergonomis. Kernel mengatur task baik secara preemptive maupun cooperative maka kernel ini tergolong kernel hybrid [10] Jadi terdapat 4 task yang harus dilakukan oleh mikrokontroler. Karena pengerjaan task secara preemptive dan cooperative maka kernel yang mengaturnya disebut kernel hybrid. Berikut daftar task dan prioritasnya. Alasan pemilihan prioritas task terdapat pada sub Bab 3.2.3 .
Sumber Interupsi External interrupt Request 0 Timer-1 compare match
Prioritas 1 2
Tugas (Task) Mengukur periode Time-out pengukuran periode
Bab III Perancangan dan Implementasi
Receive Complete Interrupt Timer-0 overflow interrupt
26
3 Komunikasi serial 4 Update Display(time triggered) Tabel 3.1 Prioritas Tugas
Mikrokontroler AVR AT90S2313 mempunyai 10 sumber interupsi. Secara default setiap permintaan interupsi akan dilayani kapan saja, asalkan bit sei berlogika ‘1’ dan flag interupsi yang bersangkutan berlogika ‘1’. Jadi untuk membuat suatu task berprioritas tertinggi disable-kan semua interupsi lain (sehingga flag yang bersangkutan selalu berlogika nol). Sedangkan untuk membuat suatu task berprioritas terendah enable-kan semua interupsi lain dan enable-kan global interrupt (sehingga flag yang bersangkutan dapat berlogika ‘1’ jika ada kejadian yang memincunya).
Pemilihan Prioritas Task Task interupsi eksternal diberi prioritas tertinggi karena hal utama yang diukur adalah periode dari sensor. Task ini tidak boleh tertunda oleh task lain karena bila tertunda akan menganggu proses perhintungan di dalamnya. Berikut adalah tabel yang menunjukkan waktu terlama (kemungkinan terburuk) untuk mengeksekusi task . Task Pengukuran periode Komunikasi serial Timeout pengukuran periode . Update display LCD
Waktu eksekusi terlama ± 2,1 ms ± 3 ms ± 1 μs ±1 ms
Tabel 3.2 Waktu eksekusi terlama
Task komunikasi serial adalah task yang sensitif terhadap interupsi dari task lain. Pada komunikasi ini penulis menggunakan protokol yang terdiri dari deretan byte. Bila task sedang menerima byte dari luar dan terinterupsi maka task akan tertunda, penundaan ini menyebabkan deretan data yang masuk tidak lengkap maka deretan data dianggap salah oleh rutin interupsi dan komunikasi gagal, oleh karena itu task ini diberi prioritas nomor dua. Task timeout pengukuran periode dipicu oleh interupsi timer-1 compare. Bila timer-1 sudah menghitung selama 1 detik maka laju aliran dianggap nol. Bila task ini tertunda selama 3ms (waktu task terlama) maka lama penundaan itu tidak berarti bila dibanding dengan lama 1 detik. Karena task ini tidak sepenting komunikasi serial maka task ini diberi prioritas nomor tiga.
Bab III Perancangan dan Implementasi
27
Task update display LCD dieksekusi berdasarkan interupsi timer-0. Task update LCD ini dieksekusi bila interupsi timer-0 sudah terjadi 10 kali dan pada saat itu ada flag perubahan hasil perhitungan. Pelaksaan task ini tidak menuntut adanya pewaktuan yang ketat, keterlambatan eksekusi selama beberapa puluh milidetik karena interupsi timer-0 tertunda tidak menjadi masalah bagi penglihatan manusia. Berdasarkan hal di atas interupsi timer-0 diberi prioritas nomor empat/terendah.
3.3.3 Implementasi Perangkat Lunak Pada saat sistem dinyalakan kernel menginisialisasi port direction, timer interrupt, UART baud rate, dan modul LCD. Kemudian setiap ‘ x ’ detik kernel mengeksekusi task update LCD. Task yang event triggered dalam keadaan terhalang (blocked), task-task tersebut baru dieksekusi bila ada interupsi. Di bawah ini adalah flowchart inisialisasi program.
Gambar 3.10 Flowchart Inisialisasi program
3.2.3.1 Task Pengukuran Periode Pengukuran frekuensi bisa berdasarkan lamanya low level yang dihasilkan sensor paddlewheel. Low level terjadi saat magnet pada paddlewheel berada segaris dengan reed switch, idealnya duty cycle sinyal output dari sensor tetap. Lama low level terjadi dua kali dalam satu putaran penuh paddlewheel, sehingga cara ini paling optimal untuk pengukuran
Bab III Perancangan dan Implementasi
28
periode sinyal. Tetapi ada ketidakpastian respon buka tutup reed swich karena tergantung pada kecepatan sudut paddlewheel. Alternatif lain adalah dengan mengukur lamanya waktu antara falling/rising edge dari sensor. Meskipun cara ini tidak beresolusi setinggi cara pertama namun cara kedua ini lebih presisi karena duty cycle-nya tidak terpengaruh perubahan kecepatan sudut paddlewheel, cara inilah yang dipilih untuk mengukur periode input.
Penjelasan cara mendapatkan konstanta: •
Paddlewheel berputar 1 putaran penuh, menghasilkan pulsa:
Gambar 3.11 Pulsa sepanjang 1 periode
•
1 Hz berarti paddlewheel berputar 1 kali setiap detik.
•
Jika paddlewheel berputar setengah putaran akan menghasilkan 2 transisi naik/turun berurutan.
•
Bila dalam 1 detik terjadi 2 transisi naik/turun maka frekuensi paddlewheel = ½ Hz.
•
Frekuensi crystal adalah 11.059.200 Hz, bila frekuensi timer-1 = frekuensi crystal dibagi (prescale) 1024 maka frekuensi timer-1=10800Hz. Artinya bila timer menghitung sebanyak 10800 kali maka memakan waktu satu detik.
Bila waktu antara dua transisi sama dengan satu detik maka:
f =
k T
f =
k 1 = Hz 10800 2
T = periode, dalam satuan count timer-1
k = 5400 Pembagian menggunakan fixed point 24 bit mempunyai jangkauan 0 – 16777216. Operasi fixed point ini tidak menghasilkan angka dibelakang koma ( pecahan), karena pecahan masih berupa remainder/sisa. Jadi untuk menghasilkan ketelitian 1 angka dibelakang koma, nilai k dikali sepuluh, kalau ingin menghasilkan 3 angka dibelakang
Bab III Perancangan dan Implementasi
29
koma maka pembagi harus dikali 1000. Pilih k=5400000 untuk menghasilkan 3 angka dibelakang koma. Contoh T=6723, seharusnya F=0,80321…Hz Jika pembagi tidak dikali terlebih dahulu:
f =
5400 = 0 + sisa 5400 Æfrekuensi dianggap nol 6723
Pembagi dikali 1000 terlebih dahulu:
f =
5400000 = 803 6723
Tinggal tambahkan string “0” dan “,” didepan MSBnya dan string “Hz” dibelakang LSB, akan didapat: 0.803Hz Nilai konstanta k = 5400000 berlaku untuk menampilkan satuan “Hz” di LCD, tetapi tidak bisa untuk menampilkan satuan liter/detik. Untuk menampilkan satuan liter/detik nilai k dikali dengan konstanta lain. Berikut hubungan (mengabaikan distribusi kecepatan relatif dalam pipa dsb) antara besaran dan konstantanya.
u = kav
(i)
;u = volumetric flow rate, v = fluid velocity,
v = k b f + v0
(ii)
;f = frekuensi paddlewheel
f =
k T
(iii)
Substitusi persamaan (ii) ke persamaan(i)
u = (k a k b f ) + k a v0
;ganti k a dan k b dengan k c
u = k c f + k a v0 u Parameter untuk menghitung debit seperti k c , k a dan v0 hanya bisa didapat dari pengujian. Untuk memudahkan perhitungan
v0 diasumsikan nol, maka debit tinggal
bergantung kepada k c sehingga hubungan antara debit dan frekuensi berbanding lurus. Jadi untuk mendapatkan debit, konstanta k dikali dengan k c . Awalnya mikrokontroler mendeteksi transisi naik sinyal input. Timer-1 segera dinyalakan setelah terdeteksi ada transisi naik dan baru berhenti setelah ada transisi naik berikutnya. Kemudian nilai count terakhir timer-1 akan diproses sehingga menghasilkan frekuensi. Cara tersebut peka terhadap bouncing dari sinyal input. Untuk menghilangkan
Bab III Perancangan dan Implementasi
30
pengaruh bouncing harus ditambah delay beberapa saat. Jadi setelah terdeteksi ada transisi naik maka timer-1 dinyalakan maka tunggu sesaat baru keluar dari rutin interupsi.
Gambar 3.12 Flowchart pengukuran frekuensi paddlewheel
Operasi Pembagian 24 bit FixedPoint Operasi ini merupakan bagian dari task pengukuran periode Operasi pembagian 24 bit fixed point dipilih karena ukuran kode yang kecil bila dibandingkan dengan operasi floating point 32bit. Selain ukuran, operasi fixed point memerlukan waktu eksekusi yang jauh lebih singkat daripada floating point. Kedua
sifat
fixed
point
diatas(ukuran
dan
waktu
eksekusi)
cocok
diimplementasikan pada mikrokontroller AT90S2313 karena ukuran flash memory yang tersedia hanya 2kB dan mikrokontroller harus cukup cepat melakukan operasi penghitungan karena sistem embedded ini harus dapat menanggapi perubahan input dan permintaan update data secara real time (event triggered).
Bab III Perancangan dan Implementasi
31
Gambar 3.13 Flowchart operasi pembagian 24 bit fixed point
Konversi Biner ke ASCII Pada mikrokontroller semua perhitungan terjadi dalam basis 2. Karena isi register AVR 8 bit maka ada 8 digit biner untuk setiap operasi. Sedangkan untuk keperluan display dibutuhkan data dalam format decimal, pada display LCD data yang dikiirmkan menggunakan format ASCII, sehingga data format decimal tadi harus dikonversi dulu menjadi ASCII. Hal ini dapat dilakukan dengan menambahkan 30h ke tiap digit decimal. Di bawah ini adalah flowchart konversi 2 byte binary menjadi decimal.
Bab III Perancangan dan Implementasi
Gambar 3.14 Konversi 2 Byte Binary ke desimal
Konversi Desimal ke ASCII Setelah format menjadi desimal selanjutnya format data diubah lagi menjadi ASCII. Di bawah ini adalah diagram alir (flowchart) konversi decimal ke ASCII
32
Bab III Perancangan dan Implementasi
33
Gambar 3.15 Konversi Desimal ke ASCII
3.3.3.2 Task Pemeriksaan Data Serial Pada jaringan RS485 sebuah node akan mengirim data ke semua node lain. Misal ada 4 node dalam sebuah jaringan, node1 ingin mengirim data ke node3, maka node1 mengirim data melalui bus yang terhubung ke semua node, akibatnya node 2,3,dan4 menerima data yang sama. Jadi tiap data yang dikirim harus berisi informasi node sumber dan node tujuan. Setiap node hanya menanggapi data untuknya saja. Jadi untuk setiap pengiriman data disertakan juga alamat pengirim, alamat tujuan dan lain-lain sehingga menjadi sebuah paket pesan (message). Di bawah ini adalah protokol pesan yang kami pakai.
Gambar 3.16 Paket data pada protokol
Tabel 3.3 Isi tiap byte pada pesan yang dikirim Byte 1 2 3 4 5 6 7 8 9 10
Jenis Start Jumlah Source ID Destination ID Command Data1 Data2 Data3 Checksum Stop
Isi 255 5 atau 8 1 sd 4 1 sd 4 0 sd 6 0 sd 255 0 sd 255 0 sd 255 0 sd 255 250
Bab III Perancangan dan Implementasi
34
Tabel 3.4 Keterangan byte command dan byte ID Command 0 1 2 3 4 5 6 200
Keterangan Reset Meminta kirim data Kirim data Set katup absolut Buka katup relatif Tutup katup relatif Hentikan katup Checksum error
Alat ID 1 2 3 4
Alat name Controller Valve driver Flowmeter Level meter
Prioritas interupsi UART satu tingkat dibawah prioritas tertinggi. Sistem ini harus cukup tanggap dengan dalam melakukan komunikasi dengan alat (device) lain. Setiap mendapat interupsi RXC (Receive complete) mikrokontroler akan memeriksa apakah data yang masuk merupakan byte start, bila iya maka urutan byte selanjutnya akan disimpan di memori. Setelah semua tersimpan akan diperiksa byte checksum, jika benar akan diperiksa byte sumber dan tujuan, jika keduanya cocok dilanjutkan dengan memeriksa byte command apakah minta kirim data atau simpam data ke EEPROM. Jika byte command berisi perintah minta kirim data maka mikrokontroler akan mengirim urutan byte ke alat sumber yang berisi data hasil perhitungan. Jika byte command berisi perintah simpan data ke EEPROM, maka byte data tersebut dicopy dari SRAM ke EEPROM. Jika byte command bukan keduanya maka command tersebut tidak diproses dan mikrokontroler kembali menunggu interupsi untuk memeriksa byte start. Di bawah ini adalah Flowchart pemeriksaan data serial.
Bab III Perancangan dan Implementasi
Gambar 3.17 Flowchart periksa komunikasi serial
35
Bab III Perancangan dan Implementasi
36
3.3.3.3 Task Batas Waktu (time-out) Pengukuran Periode Task ini dipicu oleh interupsi timer-1 compare match berfungsi membatasi panjang gelombang yang diukur. Bila transmitter tidak menerima data baru lebih dari satu detik maka kemungkinan besar paddlewheel memang tidak berputar, atau mungkin transduser reed switch rusak.
Gambar 3.18 Flowchart batas waktu pengukuran panjang gelombang
Untuk itu perlu rutin yang dapat mendeteksi hal tersebut, yaitu dengan cara membandingkan isi timer-1 dengan nilai tertentu yang mewakili 1 detik. Frekuensi timer1=10800Hz, maka selama 1 detik timer-1 akan menghitung sampai 10800kali. Jadi isi timer-1 dibandingkan dengan 10800, bila sudah mencapai nilai tersebut maka kernel akan mengeksekusi task menampilkan ’00,000’ pada LCD.
3.3.3.4 Task Update Display LCD Task ini berfungsi menentukan kapan update display LCD dilakukan. Bila interupsi timer-0 overflow terjadi 10 kali maka kernel memeriksa apakah ada perhitungan baru, bila ada maka hasil perhitungan akan ditampilkan pada display LCD. Pengecekan ‘data baru’ penting karena task
update LCD memerlukan waktu sekitar 3 ms untuk
menulis karakter-karakter pada LCD, bila data tidak berubah maka tampilannya di LCD tidak perlu diubah. Berikut flowchart task interupsi timer-0:
Bab III Perancangan dan Implementasi
37
Gambar 3.19 Task update LCD
Flowchart Inisialisasi LCD Untuk menggunakan sebuah modul LCD, harus dilakukan inisialisasi terlebih dahulu untuk menentukan panjang data, jumlah baris LCD yang aktif dan bentuk font. Inisialisasi dilakukan cukup sekali saja pada pemakaian LCD. Flowchart pada gambar 3.12 menunjukkan proses yang selalu terjadi saat inisialisasi modul LCD dilakukansebelum masuk ke bagian pengaturan mode. Sistem harus menunggu selama 15 ms atau lebih setelah catu daya mencapai tegangan 4,5 volt
Bab III Perancangan dan Implementasi
38
Gambar 3.20 Inisialisasi LCD
Setelah proses inisialisasi maka modul LCD siap menerima data untuk ditampilkan pada layer LCD. Task tulis LCD hanya dieksekusi bila syarat tick timer-0 dan flag tanda ada hasil perhitungan baru terpenuhi. Berikut flowchart tulis karakter (update) ke LCD:
Bab III Perancangan dan Implementasi
39
Gambar 3.21 Tulis karakter ke LCD
3.4 Alokasi Register dan Memori AT90S2313 menyediakan 32 byte multipurpose register,128 byte SRAM dan EEPROM. Register R16-R32 mendukung operasi immediate(seperti CPI, ANDI, dan ORI) namun tidak demikian register R0-R15. Register R0-R15 hanya mendukung operasi antara dua register. R16-R32 dapat digunakan untuk operasi yang menggunakan data dari flash memory.
Register R0 R1 R2 R3 R4 R5 R6 R7
Fungsi Tempat data sementara untuk komunikasi serial
Operasi Pembagian
Bab III Perancangan dan Implementasi
R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26(XL) R27(XH) R28(YL) R29(YH) R30(ZL) R31(ZH)
40
Konversi Heksa Menjadi Desimal Checksum Tempat Data dan Alamat EEPROM
Dapat dipakai semua task Operasi Pembagian (membutuhkan immediate addressing) Pewaktuan Display LCD Status INT0 dan UART Operasi Pembagian (membutuhkan pointer SRAM) Pointer SRAM Pointer SRAM dan Flash(khusus LCD) Gambar 3.22 Alokasi Register
SRAM digunakan sebagai penyimpan data sementara bila tidak ada tempat lagi di Register. Proses baca-tulis SRAM membutuhkan pointer untuk menunjukkan alamatnya, register yang dapat digunakan sebagai pointer SRAM adalah register X,Y, dan Z. SRAM juga digunakan sebagai tempat penyimpanan stack (informasi saat operasi jump). Stack dimulai di alamat SRAM paling bawah dan akan mengisi alamat diatasnya bila ada data baru. Alamat data sementara diusahakan jauh dari alamat mulai stack, jika tidak stack dapat menimpa data sementara sehingga mengacaukan task yang bersangkutan. Di bawah ini adalah tabel alokasi SRAM.
Bab III Perancangan dan Implementasi
0x0060 0x0068 0x0070 0x0078 0x0080 0x0088 0x0090 0x0098 0x00A0 0x00A8 0x00B0 0x00B8 0x00C0 0x00C8 0x00D0 0x00D8
41
SRAM Hasil pembagian (ASCII) Penyimpan data sementara dari komunikasi serial temp EEPROM
Stack
Gambar 3.23 Alokasi SRAM
Bab IV Pengujian dan Analisis
42
BAB IV PENGUJIAN DAN ANALISIS
Bab ini menjelaskan pengujian sistem pada berbagai keadaan. Kemudian hasil tersebut pengujian dianalisis sehingga masalah yang ditemukan setelah pengujian dapat diketahui.
4.1 Pengujian karakteristik reed switch pada berbagai macam frekuensi Pengujian ini dilakukan untuk, megetahui karakteristik sensor reed switch seperti bentuk sinyal terhadap frekuensi paddlewheel. Untuk menguji hal ini, kedua kaki reed switch dihubungkan ke resistor pull-up. Sebuah osiloskop analog dipergunakan untuk mengamati bentuk gelombang keluaran. Gambar 4.1 memperlihatkan setup dari pengujian ini.
Osiloskop
Magnet permanen Reed switch
Vcc Arah putar kincir Mikrokontroler
Gambar 4.1 Skema pengujian reed switch
Pengujian ini gagal dilakukan karena osiloskop analog membutuhkan frekuensi sinyal input yang tetap agar gambar diam. Penulis memutar paddlewheel dengan tangan sehingga mustahil mendapat frekuensi yang tetap. Namun dari pengamatan hasil ukur alat didapat bahwa nilai frekuensi paddlewheel berubah-ubah dengan cepat. Penulis mencoba dengan memutar paddlewheel perlahan-lahan, kira-kira satu putaran per detik agar mendapat hasil ukur sekitar 1 Hz namun hasil ukur menunjukkan 2 Hz kemudian lompat menjadi 25 Hz kemudian turun menjadi 8 Hz dan lain-
Bab IV Pengujian dan Analisis
43
lain yang sama sekali tidak mendekati 1 Hz. Jadi penulis menyimpulkan terjadi bouncing pada reed switch. Penyebab bouncing antara lain: 1. Karakter reed switch yang bersangkutan. Reed switch yang dipakai dapat digantikan oleh reed switch dengan Hg. 2. Getaran pada paddlewheel. Getaran tersebut menyebabkan medan magnet yang mengenai reed switch tidak mulus akibatnya buka-tutup reed switch tidak mulus, hal tersebut dapat diatasi dengan menggunakan bantalan (bearing) pada sumbu paddlewheel. Dengan pertimbangan waktu dan biaya pelaksanaan Tugas Akhir, maka penulis mengatasi masalah bouncing pada level perangkat lunak. Hal ini dilakukan dengan menambahkan waktu tunda (delay) pada program pengukur panjang gelombang untuk menghilangkan bouncing tersebut. Awalnya di setiap transisi naik dan turun ditambahkan delay 1 ms namun hasil pengukuran masih naik-turun tak beraturan. Setelah delay ditambah menjadi 2 ms baru hasil pengukuran menunjukkan kira-kira 1 Hz dan sudah tidak ada lonjakan hasil pengukuran lagi namun frekuensi tertinggi yang dapat diukur dengan benar hanya 5,8 Hz.
4.2. Pengujian Perangkat Lunak Pengujian perangkat lunak dilakukan untuk mengukur unjuk kerja sistem pengukuran laju aliran fluida yang terdeteksi pada paddlewheel. Pengujian ini dilakukan dalam dua tahap. Pertama pengujian secara simulasi, dengan menggunakan pembangkit sinyal (signal generator) yang mensimulasikan paddlewheel. Kedua pengujian menyeluruh dengan menggunakan paddlewheel yang telah dibuat.
4.2.1 Pengujian dengan masukan dari pembangkit sinyal. Pengujian ini dilakukan untuk mengetahui unjuk kerja sistem dalam mengukur frekuensi. Sebuah pembangkit sinyal (Goodwill Instrument GFG-80220G) digunakan untuk mensimulasikan sensor paddlewheel dan diumpankan ke alat ukur. Selain itu, pembangkit sinyal juga diukur dengan menggunakan osiloskop (Scopemeter PM9750) sebagai referensi. Keseluruhan konfigurasi pengujian diperlihatkan pada gambar 4.2.
Bab IV Pengujian dan Analisis
44
Gambar 4.2 Skema pengujian dengan pembangkit sinyal
Penulis mengasumsikan hasil ukur osiloskop (Scopemeter PM9750) jauh lebih akurat diantara ketiga alat di atas. Bila pembangkit sinyal menunjukkan 2 Hz maka seharusnya alat ukur menunjukkan setengahnya yaitu 1 Hz (karena alat ukur menganggap dua transisi naik sebagai 0.5 Hz). Hasil pengujian adalah seperti diperlihatkan pada tabel 4.1.
Tabel 4.1 Hasil pengujian alat dengan input dari pembangkit sinyal
1
Hasil Ukur Osiloskop(Hz) 0.952380952
Hasil Ukur Alat (Hz) 0.937
2
1.428571429
1.348
3
1.904761905
1.891
4
2.380952381
2.355
5
2.857142857
2.851
6
3.333333333
3.389
7
3.80952381
3.752
8
4.285714286
4.33
Sampel
9
4.761904762
4.83
10
5.238095238
5.389
11
5.714285714
5.844
Dari tabel 4.1. dapat dibuat grafik hasil alat ukur terhadap frekuensi sensor. Kemudian dibuat regresi linier dari semua titik. Gambar 4.2. memperlihatkan kurva hasil pengujian dan hasil regresi liniernya. Dari kurva regresi dapat diketahui bahwa hasil ukur alat merupakan fungsi linier terhadap frekuensi masukan, dengan bentuk model matematis seperti pada persamaan 4.1. Hasil Ukur = 1,0379 fmasukan – 0.1037 ..................................... (4.1)
Bab IV Pengujian dan Analisis
45
Selanjutnya, persamaan (4.1) dipergunakan untuk menghitung keluaran ideal pengukur yang akan dijadikan referensi dalam perhitungan galat (error) pengukuran. Galat pengukuran dapat dihitung dengan persamaan (4.2). Hasil perhitungan diperlihatkan pada tabel 4.2.
galat =
(regresi linier hasil ukur alat ) − (hasil ukur alat ) × 100 % .............(4.2) (regresi linier hasil ukur alat )
7
Hasil ukur alat
6 5 4
Series1
3
Linear (Series1)
2 1 0 0
2
4
6
Hasil ukur osiloskop
y = 1.0379x - 0.1037
Gambar 4.3 Kurva hasil ukur alat vs hasil ukur osiloskop
Tabel. 4.2. Hasil perhitungan galat pengukuran frekuensi. Hasil Ukur Alat (Hz) 0.937
Hasil Ukur Alat ideal (y fungsi) 0.884776
error
error(%)
1
Hasil Ukur Osiloskop(Hz) 0.952380952
-0.05222
-5.90249
2
1.428571429
1.348
1.379014
0.031014
2.249018
3
1.904761905
1.891
1.873252
-0.01775
-0.94742
4
2.380952381
2.355
2.36749
0.01249
0.527583
5
2.857142857
2.851
2.861729
0.010729
0.374898
6
3.333333333
3.389
3.355967
-0.03303
-0.98432
7
3.80952381
3.752
3.850205
0.098205
2.550637
8
4.285714286
4.33
4.344443
0.014443
0.332444
9
4.761904762
4.83
4.838681
0.008681
0.179407
10
5.238095238
5.389
5.332919
-0.05608
-1.0516
11
5.714285714
5.844
5.827157
-0.01684
-0.28904
Sampel
Bab IV Pengujian dan Analisis
46
Standard deviasi dari prosentase galat = 2,218642. Dengan mengetahui nilai standard deviasi maka dapat dihitung akurasi dari pengukur dalam mengukur frekuensi. Berdasarkan tabel statistik Student-T pada jumlah sampel 11 diperoleh nilai akurasi pada beberapa level konfiden, seperti diperlihatkan pada tabel 4.3.
Tabel 4.3. Hasil perhitungan akurasi pengukuran frekuensi pada beberapa level konfiden No
Standard Dev
Level Konfiden
Konstanta Student-T
Akurasi
1
2,218642
68,3 %
1
2,218642
2
2,218642
95 %
2,201
4,883231
3
2,218642
99 %
3,106
6,891101
Berdasarkan pada tabel 4.3. dapat disimpulkan bahwa akurasi perangkat yang dibuat dalam mengukur frekuensi adalah kurang dari 5% reading pada level konfiden 95% atau kurang dari 7% reading pada level konfiden 99%. Nilai tersebut dianggap cukup baik untuk dipergunakan dalam keseluruhan sistem eksprimentasi.
4.2.2 Pengujian dengan masukan dari sensor Pengujian ini dilakukan untuk mengukur unjuk kerja sistem dalam pengukuran laju aliran fluida. Konfigurasi pengujian diperlihatkan pada gambar 4.4. Pengujian dilakukan dengan mengalirkan air melalui sensor paddlewheel dan selanjutnya ditampung dengan gelas ukur. Dengan asumsi bahwa laju aliran air oleh pompa dianggap konstan, maka referensi pengukuran laju aliran adalah volume air terukur pada gelas ukur dibagi dengan waktu yang diperlukan. Ketidak-pastian pengukuran volumetrik dan pengukuran waktu dianggap tidak signifikan dibanding ketidak-pastian alat ukur yang dibuat sehingga dapat diabaikan. Kedua asumsi ini diambil karena dalam perancangan awal, laju aliran ini akan diukur menggunakan tabung ukur yang volumetrik dan waktunya diukur menggunakan sistem pengukur level. Namun hingga Tugas Akhir ini diselesaikan, perangkat ini belum dapat diselesaikan dengan baik.
Bab IV Pengujian dan Analisis
47
Gambar 4.4 Susunan alat untuk pengujian sensor
Daya hisap pompa diubah-ubah dengan mengatur besar tegangan catu yang diumpankan ke pompa. Semakin besar daya hisap sensor semakin cepat laju aliran yang dihasilkan. Air yang melewati sensor ditampung di gelas ukur dan waktu untuk mencapai volume tertentu diukur. Hasil pengujian diperlihatkan pada tabel 4.4.
Tabel 4.4 Hasil pengujian alat dengan input dari sensor Volume/ Tegangan
800ml/140V
800ml/160V
800ml/180V
800ml/220V
500ml/140
500ml/180ml
Frekuensi sensor(Hz)
Waktu (s)
1
2
3
Rata-rata
Laju aliran Rata-rata
8.59 8.52 8.36 8.29 8.17 8.12 8.06 8.23 8.13 8.17 8.02 8.1 5.1 5.16 5.2 5.31 5.18 5.26
1.4 1.4 1.4 1.57 1.65 1.58 1.7 1.3 1.6 1.6 1.8 1.8 1.7 1.6 1.65 1.4 1.58 1.38
1.2 1.5 1.47 1.47 1.55 1.56 1.6 1.4 1.7 1.5 1.9 1.7 1.6 1.5 1.57 1.2 1.47 1.41
1.1 1.3 1.36 1.35 1.49 1.47 1.8 1.3 1.54 1.4 1.7 1.6 1.5 1.43 1.48 1.17 1.42 1.28
1.233333 1.4 1.41 1.463333 1.563333 1.536667 1.7 1.333333 1.613333 1.5 1.8 1.7 1.6 1.51 1.566667 1.256667 1.49 1.356667
93.13155 93.89671 95.69378 96.50181 97.91922 98.52217 99.25558 97.20535 98.40098 97.91922 99.75062 98.76543 98.03922 96.89922 96.15385 94.16196 96.5251 95.05703
Bab IV Pengujian dan Analisis
48
Dari tabel 4.4. dapat dibuat grafik laju aliran rata-rata terhadap frekuensi sensor ratarata. Kemudian dibuat regresi linier dari semua titik. Gambar 4.5. memperlihatkan kurva hasil pengujian dan hasil regresi liniernya. Dari kurva regresi dapat diketahui bahwa hasil ukur alat merupakan fungsi linier terhadap frekuensi sensor, dengan bentuk model matematis seperti pada persamaan 4.3. Laju aliran rata-rata = 10,902 fsensor rata-rata + 80,505 ..................................... (4.3)
Selanjutnya, persamaan (4.3) dipergunakan untuk menghitung keluaran ideal pengukur yang akan dijadikan referensi dalam perhitungan galat (error) pengukuran. Galat pengukuran dapat dihitung dengan persamaan (4.4). Hasil perhitungan diperlihatkan pada tabel 4.5.
galat =
(regresi linier laju aliran rata - rata ) − (laju aliran rata - rata ) × 100 % ...........(4.4) (regresi linier laju aliran rata - ratat )
101
100
99
laju aliran (ml/s)
98
y = 10.902x + 80.505
97
Series1 Linear (Series1) 96
95
94
93
92 1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
frekuensi sensor (Hz)
Gambar 4.5 Kurva hasil pengujian laju aliran vs frekuensi sensor
Tabel 4.5 Hasil perhitungan galat pengukuran frekuensi sensor. Frekuensi sensor (Hz)
Volume/ Tegangan
Waktu (s)
1
2
3
Rata-rata
Laju Rata-rata
y fungsi
galat(%)
800ml/140V
8.59
1.4
1.2
1.1
1.233333
93.13155
93.94333
0.864122
Bab IV Pengujian dan Analisis
800ml/160V
800ml/180V
800ml/220V
500ml/140
500ml/180ml
8.52 8.36 8.29 8.17 8.12 8.06 8.23 8.13 8.17 8.02 8.1 5.1 5.16 5.2 5.31 5.18 5.26
1.4 1.4 1.57 1.65 1.58 1.7 1.3 1.6 1.6 1.8 1.8 1.7 1.6 1.65 1.4 1.58 1.38
49
1.5 1.47 1.47 1.55 1.56 1.6 1.4 1.7 1.5 1.9 1.7 1.6 1.5 1.57 1.2 1.47 1.41
1.3 1.36 1.35 1.49 1.47 1.8 1.3 1.54 1.4 1.7 1.6 1.5 1.43 1.48 1.17 1.42 1.28
1.4 1.41 1.463333 1.563333 1.536667 1.7 1.333333 1.613333 1.5 1.8 1.7 1.6 1.51 1.566667 1.256667 1.49 1.356667
93.89671 95.69378 96.50181 97.91922 98.52217 99.25558 97.20535 98.40098 97.91922 99.75062 98.76543 98.03922 96.89922 96.15385 94.16196 96.5251 95.05703
95.76 95.869 96.45033 97.54033 97.24967 99.03 95.03333 98.08533 96.85 100.12 99.03 97.94 96.959 97.57667 94.19767 96.741 95.28767
1.945788 0.18277 -0.05337 -0.38844 -1.30849 -0.22779 -2.28553 -0.32181 -1.10399 0.368934 0.267159 -0.1013 0.06165 1.458157 0.037908 0.223177 0.242038
Standard deviasi dari prosentase galat = 0,954447. Dengan mengetahui nilai standard deviasi maka dapat dihitung akurasi dari pengukur dalam mengukur frekuensi. Berdasarkan tabel statistik Student-T pada jumlah sampel 18 diperoleh nilai akurasi pada beberapa level konfiden, seperti diperlihatkan pada tabel 4.6. Tabel 4.6. Hasil perhitungan akurasi pengukuran frekuensi pada beberapa level konfiden No
1 2 3
Standard Dev
0,954447 0,954447 0,954447
Level Konfiden
Konstanta Student-T
Akurasi
68,3 % 95% 99%
1 2,101 2,878
0,954447 2,005,294 2,746,898
Pengujian dengan cara ini mempunyai kelemahan yaitu rentang pengujian hanya dari frekuensi 1,23Hz s.d 1,8Hz. Sedangkan rentang pengukuran adalah 0,5 Hz s.d 5,8Hz. Untuk frekuensi di bawah 1,25 Hz belum bisa diuji karena pompa hanya dapat bekerja pada tegangan minimal 140V yang menghasilkan frekuensi minimal 1,25Hz. Dari pengamatan terlihat bahwa saat sensor dipenuhi air frekuensi paddlewheel menurun, artinya laju aliran air memang tidak dapat terlalu tinggi. Jika paddlewheel tidak berputar maka akan terukur sebagai laju aliran 80 ml/s. Hal tersebut jelas merupakan kesalahan karena seharusnya laju aliran yang terukur adalah 0 ml/s.
Bab IV Pengujian dan Analisis
50
Penulis mengasumsikan laju aliran sama dengan 0 ml/s bila frekuensi paddlewheel yang terukur sama dengan 0Hz. Jadi rentang pengukuran laju aliran air adalah:
Tabel 4.7 Rentang pengukuran laju aliran air Frekuensi paddlewheel
0 - 0,49 Hz 0,5 - 5,7 Hz
Frekuensi menurut alat ukur (Hz) 0 Hz 0,5 - 5,7 Hz
Laju aliran menurut alat ukur (ml/s)
0 ml/s 85.95 - 143.72 ml/s
4.3. Pengujian komunikasi Pengujian ini dilakukan untuk menguji keberhasilan komunikasi serial. Pengujian dilakukan dengan tiga cara, yang pertama pengujian perintah meminta kirimkan data, kedua pengujian perintah simpan data di EEPROM, dan yang ketiga pengujian komunikasi antar RS485. Pengujian pertama dan kedua menggunakan PC yang dihubungkan dengan alat ukur. Penulis menggunakan program “Terminal v1.9b” untuk mengirim data dari dan ke komputer Gambar 4.6 memperlihatkan setup dari pengujian ini. Sedangkan pada pengujian ketiga digunakan sepasang perangkat komunikasi RS485 yang terhubung melalui sebuah jalur bus. Gambar 4.10 memperlihatkan setup dari pengujian ketiga ini.
Gambar 4.6 Skema pengujian komunikasi antara PC dengan alat ukur
1. Uji perintah meminta kirim data: Bila kontroler ingin alat ukur ini mengirimkan data hasil perhitungan maka harus dengan mengirim urutan byte sebagai berikut “255 005 001 003 001 010 250” yang sudah disepakati bersama. Bila semua urutan benar maka alat ini akan mengirim balik “255 007 003 001 006 *** *** *** 250”. Isi byte ke 6,7,8 tergantung dari hasil perhitungan mikrokontroler terakhir.
Bab IV Pengujian dan Analisis
51
Program Terminal v1.9b mempunyai fasilitas mengirim macro, dengan fasilitas ini pengguna dapat mengirim beberapa byte data sekaligus dari PC ke sebuah alat lain. Selain itu program ini mempunyai layar “receive” untuk menampilkan byte data yang diterima PC. Gambar 4.7 memperlihatkan program Terminal v1.9b saat PC mengirim pesan yang berisi “meminta kirim data” ke alat yang terhubung ke Port COM 1.
Gambar 4.7 Tampilan program Terminal v1.9b saat menguji pesan yang berisi “meminta kirim data”
Dari gambar terlihat layar “receive” berisi tulisan “FF 07 03 01 06 FF FF 95” yang sama dengan “255 007 003 001 006 255 255 149 250”. Sehingga dapat disimpulkan bahwa perintah meminta kirim data berhasil.
Bab IV Pengujian dan Analisis
52
2. Uji perintah simpan data di EEPROM. Pengujian ini untuk memastikan pengiriman data konstanta sudah benar, karena kalibrasi sensor dilakukan pada kontroler. Untuk keperluan pengujian kontroler dapat diganti dengan PC. Program Terminal v1.9b digunakan untuk mengirim urutan byte sebagai berikut “255 005 001 003 001 010 250”. Pada pengujian ini dikirim tiga byte data yaitu 82(52h), 101(65h), dan192(C0h). Program pada alat ukur diatur agar mengirim nilai cheksum bila data yang diterima berisi perintah simpan data di EEPROM. Kemudian data yang masuk disimpan di EEPROM pada alamat 00h sampai 02h, kemudian program mengirim data ‘255’ ke PC untuk verifikasi data sudah disimpan. Gambar 4.8 memperlihatkan program Terminal v1.9b saat PC mengirim pesan yang berisi “simpan data di EEPROM” ke alat yang terhubung ke Port COM 1.
Gambar 4.8 Pengiriman data ke EEPROM
Bab IV Pengujian dan Analisis
53
Gambar di atas menunjukkan bahwa PC menerima 133 dan 255 artinya alat ukur tersebut sudah menyimpan data di EEPROM. Untuk memastikan bahwa data benar-benar sudah disimpan di EEPROM maka isi harus dibaca. Penulis menggunakan program ICprog versi 1.05A yang terhubung ke alat ukur melalui Port paralel. Berikut hasil pembacaan EEPROM pada mikrokontroler setelah menerima dan menyimpan data ke EEPROM.
Gambar 4.9 Hasil pembacaan EEPROM
Dari gambar di atas terlihat isi EEPROM pada alamat 00 sampai 02 adalah berturutturut 52, 65, dan C0 (heksadesimal). Isi EEPROM tersebut sesuai dengan data yang dikirim melalui komunikasi. Hal tersebut menunjukkan bahwa perintah simpan data di EEPROM berhasil.
Bab IV Pengujian dan Analisis
54
3. Pengujian komunikasi antar RS485. Pengujian ini dilakukan untuk menguji komunikasi antar device. Untuk keperluan pengujian ini penulis menggunakan dua rangkaian sistem pengukuran laju aliran air, yang kemudian dihubungkan satu sama lain seperti gambar di bawah ini.
Gambar 4.10 Skema pengujian komunikasi antara 2 node
Pengujian dilakukan dengan : node 1 mengirim data serial (pesan 7byte) yang berisi perintah mengirimkan data hasil perhitungan. Program pada node 2 diatur sehingga akan menampilkan “Ok” pada LCD bila menerima pesan 7byte yang benar (benar source, destination, command dan checksumnya). Hasil pengujian menunjukkan bahwa node 2 dapat menanggapi input pesan serial dengan menampilkan “Ok” pada LCD dan node tidak menanggapi input yang salah.
Bab V Kesimpulan dan Saran
55
BAB V KESIMPULAN DAN SARAN
5.1 Kesimpulan Setelah melakukan proses perancangan, implementasi, pengujian dan analisis alat pengukur laju aliran maka penulis dapat menarik kesimpulan: 1.
Transmitter ini dapat bekerja mengukur frekuensi putaran kincir dan laju aliran, mampu menerima dan merespon perintah meminta kirim data, dan simpan data melalui bus komunikasi RS485.
2.
Transduser reed switch menghasilkan bouncing yang mengganggu pengukuran. Proses debouncing telah diimplementasikan secara software dengan menambah delay pada rutin pengukuran. Namun demikian, metoda debouncing ini mengakibatkan frekuensi paddlewheel maksimum yang dapat diukur dengan benar hanya 5,8 Hz, sehingga akan mengurangi rentang pengukuran.
3.
Pengujian pada pengukuran frekuensi pembangkit sinyal memperlihatkan bahwa alat menghasilkan galat pengukuran sekitar 6,9% pada tingkat keyakinan 99%.
4.
Hasil pengujian pengukuran laju aliran air, menunjukkan bahwa alat yang dibuat menghasilkan galat sebesar kurang dari 3% pada tingkat keyakinan 99%. Rentang pengukuran yang diperlihatkan oleh alat adalah pada 85 – 143 ml/detik. Sebagai catatan bahwa hasil ini masih diperoleh dengan asumsi ketidak-pastian pengukuran volumetrik dan pengukuran waktu dianggap tidak signifikan dibanding ketidak-pastian alat ukur
5.2 Saran Sistem pengukuran laju air ini masih memiliki kelemahan yang bisa diatasi di masa dating, sehingga dapat menjadi sistem yang lebih baik. Adapun beberapa hal yang harus diperhatikan antara lain: 1.
Pengujian yang lebih baik dilakukan dengan cara menyatukan 3 alat dalam sistem kendali ini menjadi satu (driver katup, pengukur laju aliran air dan pengukur ketinggian air)
Bab V Kesimpulan dan Saran
2.
56
Memakai fasilitas sleep pada mikrokontroler yang memungkinkan mikrokontroler tidak aktif selama tidak ada interupsi. Jika fasilitas tersebut digunakan maka dapat menghemat konsumsi listrik.
3.
Memakai watchdog timer pada mikrokotroler yang dapat digunakan untuk mereset mikrokontroler bila mikrokotroler sedang hang.
4.
Semua pin mikrokotroler yang tidak terpakai dihubungkan dengan konektor, sehingga pin-pin tersebut dapat digunakan bila suatu saat diperlukan.
5.
Debouncing menggunakan hardware.
6.
Transduser reed switch dapat diganti dengan Hall Effect Switch untuk mengatasi bouncing.
7.
Frekuensi paddlewheel terkecil yang dapat diukur adalah 0,5 Hz. Supaya dapat mengukur frekuensi yang lebih rendah jumlah magnet permanen yang ditanam di paddlewheel harus ditambah.
DAFTAR PUSTAKA
[1]
AVR200
Multiply
and
Divide
Routines,
http://atmel.com/dyn/resources
/prod_documents/DOC0936.PDF [2]
Datasheet
AT90S2313,
http://atmel.com/dyn/resources/prod_documents
/DOC1630.PDF [3]
Datasheet PC1601A-L, http://www.p-tec.net/PC1601A(LCD).pdf
[4]
Datasheet MAX 485, http:// www.ortodoxism.ro/datasheets/maxim /MAX1487MAX491.pdf
[5] [6]
FlowmeterTutorial, http://www.omega.com/techref/pdf/FlowMeterTutorial.pdf Johan, Willy. Laporan Tugas Akhir: Perancangan sistem realtime dengan kernel cooperative pada pengukur salinitas air laut. Departemen Teknik Elektro ITB, 2004
[7]
http://www.avrasm-tutorial.com/avr_en/index.html
[8]
http:/www.bray.velenje.cx/avr/terminal
[9]
http://www.kalinskyassociates.com/Wpaper1.html
[10]
http://www.qsl.net/pa3ckr/bascom%20and%20avr/rs232/
[11]
Kurniawan, Rizky. Laporan Tugas Akhir: System embebbed dengan kernel preemptive pada level meter. Departemen Teknik Elektro ITB, 2003
[12]
Laplante, Jean J. Real Time System Design and Analysis. 2nd ed. New York: IEEE Press, 1997
[13]
Nalwan, Paulus Andi. Panduan Praktis Penggunaan dan Antarmuka Modul LCD M1632. Jakarta: PT Elex Media Komputindo, 2004
[14]
Pont, Michael J. Pattern For Time Triggered Embedded System. London: Addison-Wesley, 2001
[15]
Pratomo, Andi. Panduan Praktis PemrogramanAVR Microkontroler AT90S2313. Yogyakarta: ANDI, 2005
54
A. Skema Rangkaian
B. Layout PCB(100%)
C. Gambar Rangkaian
D. Susunan Alat Untuk Pengujian Sensor
D. Rincian Biaya Pembuatan Rangkaian
Komponen AT90S2313 MAX485 7805 Crystal Resistor Kapasitor polar Kapasitor keramik Saklar Header 3pin Header 4 pin Header 5pin Biaya Film PCB Biaya Cetak PCB Total
Jumlah 1 1 1 1 2 2 2 1 1 1 1 1 1
Harga satuan 22500 17500 1500 2500 100 200 150 500 750 1000 1750 5000 2500
Harga 22500 17500 1500 2500 200 400 300 500 750 1000 1750 5000 2500 56400
E. Source Code Program ;======================================== .include"2313def.inc" .def xm .def reml
=r1 =r2
.def remm =r3 .def remh =r4 ;.def divresl=r26 result ;.def divresm=r27 .def divresh=r7 .def rBin2H =r8 rutin division .def rBin2L =r9 .def chs =r11 check_uart
;remainderl
;division
;dipakai
;checksum, rutin
.def eep_addr =r13 .def eep_data =r14 ;**************************************** .def temp =r16 ;Multi purpose register,semuanya data sementara .def tempa =r17 ; .def dividendL=r18 ;konstanta .def dividendM=r19 .def dividendH=r20 .def loopcounter=r21 .def tempb =r22 ;untuk counter timer0 overflow isr(tdk boleh diubah) .def statusjuga =r23;utk timing disp lcd .def status =r24 ;penting!!!, dipake ISR ;bit 0 : 0=falling edge ,1 =rising edge ;bit1-7 untuk uart .equ baudrate=11 ;143=4800bps 11=57600 5=115200bps .equ prescale=0x05 ;.equ prescale=0x01 .equ kL =0x30 ;konstanta frekuensi/kecepatan=149970 .equ kM =0xd0 ;kl duty cycle 50% k=5265C0 .equ kH =0x59 .equ mem =0x0060 ;alamat bin2ascii, alamat data lcd .equ uart_address=0x0070 .equ eeprom_address=0x0080 ;tempat konstanta k eeprom di sram ;lcd parameter************************ .EQU ftakt =11059200 ; Frequency STK500 internal clock .EQU cdivtc1 =6875 ; Dibvider for TC1 .EQU cdiv1s =67 ; Divider for 1 s .EQU pLcdPort =PORTb ; LCD connected to PORT A .EQU pLcdDdr =DDRb ; Datenrichtungsregister LCD-Port .DEF rint =R15 ; Interrupt temp register
.EQU cLcdWrite=0b11111111 ; Data direction write the LCD .EQU cLcdDummy=0b00111000 ; DummyFunction-Word .EQU mLcdRs =0b00000001 ; RS-Bit Mask .EQU bLcdEn =2 ; Enable Bit .EQU c1s =200 ; Wait at start-up time (200 * 5 ms) .EQU c5ms =ftakt/1000 ; 1 ms Wait after each control word .EQU c50us =ftakt/100000 ; 10 us Wait after each char .MACRO enactive nop nop nop nop nop nop nop .ENDMACRO ;**************************************** .cseg .org $0000 rjmp reset .org $0001 rjmp int0_ISR interupt service .org $0004 rjmp tim_comp1 timeout timer1 .org $0006 rjmp tim_ovf0 .org $0007 rjmp uart_rxc service
;external
;buat
;coop task ;uart
reset: ldi temp,low(ramend) out spl,temp clr tempb clr statusjuga clr status rcall clear_sram rcall lcd4init rcall rcall rcall rcall
port_init init_int0_rising display_mem dispdate
rcall load_eeprom
;eeprom-
>mem rcall init_timer_service rcall start_timer0 timer0 service
;start
ldi temp,baudrate baud rate out UBRR,temp
;setting
fall2_end: reti
sbi ucr,7 sbi ucr,4 sei ldi temp,0x31 mov r0,temp rcall b_transmit loop: rjmp loop ;**************************************** int0_ISR: ;(prioritas no 1) sbrs statusjuga,1 rjmp rise1_handler ;status=0 rjmp fall1_handler ;status=1 rise1_handler: rcall start_timer1 ldi temp,20 rise1_delay: rcall LcdDelay5ms dec temp cpi temp,0 brne rise1_delay rcall init_int0_falling ori statusjuga,0b00000010 reti fall1_handler: sbrs statusjuga,2 rjmp belum_fall rjmp rise2_handler belum_fall: ldi temp,1 fall1_delay: rcall LcdDelay5ms dec temp cpi temp,0 brne fall1_delay rcall init_int0_rising ori statusjuga,0b00000100 reti rise2_handler: ldi temp,0x00 timer1 utk debugging out TCCR1B,temp in XL,TCNT1L in XM,TCNT1H
;matiin
;in temp,tcnt1h ;cpi temp,1 ;brlo fall2_deb rcall start_timer1 ldi temp,20 rise2_delay: rcall LcdDelay5ms dec temp cpi temp,0 brne rise2_delay rcall hitung_frekuensi rcall init_int0_falling ori statusjuga,0b00000001 ;brarti udah ada data baru andi statusjuga,0b11111011 ;spy di int selanjutnya meriksa fall dulu
fall2_deb: ldi temp,0x05 ;matiin timer1 utk debugging out TCCR1B,temp reti ;**************************************** tim_comp1: ldi temp,0x40 ;timcompare n tim0ov disable out timsk,temp sei rcall nolkan ;rcall start_timer1 ldi temp,0x42 ;timcompare n tim0ov enable out timsk,temp reti nolkan: clr xl clr xh clr divresh ldi temp,5 ldi tempa,0x30 ;isi ram 0060-0065 dengan "0" rcall y_awal clear_2: st y+,tempa dec temp brne clear_2 ;rcall display_mem ;andi statusjuga,0b11111000 ;ulang dari awal clr statusjuga ldi temp,1 or statusjuga,temp ;nandain ada data baru ret ;**************************************** tim_ovf0: ;update tulisan di lcd setiap 0.25s sei ;enable semua interupsi lain wdr inc tempb cpi tempb,10 brsh display_lcd_ok reti display_lcd_ok: sbrs statusjuga,0 ;ada perubahan lambda kalo iya disp mem reti wdr rcall display_mem clr tempb clr statusjuga reti ;**************************************** uart_rxc: sbrc status,1 ;bit1=0-->belum dapat start rjmp tentukanjumlahdata
in temp,udr cpi temp,255 ldi temp,0x00 ;timcompare n tim0ov disable out timsk,temp sei brne check_uart_keluar ori status, 0b00000010 clr tempa rcall uart_sram_init check_uart_keluar: ldi temp,0x42 ;timcompare n tim0ov enable out timsk,temp reti tentukanjumlahdata: sbrc status,2 rjmp simpanSRAM simpanjumlah: in temp,udr mov tempa,temp cpi tempa,9 brsh check_uart_restart1 ori status, 0b00000100 simpanSRAM: in temp,udr st y+,temp dec tempa breq check_uart rcall reenable1 reti check_uart_restart1: andi status,0b11111001 reenable1: sbi ucr,7 sbi ucr,4 ldi temp,0x42 ;timcompare n tim0ov enable out timsk,temp reti check_uart: rcall uart_sram_init andi status,0b11111001 rcall uart_sram_init checksum: clr chs clr tempa ld tempa,y ulangchs: ld r0,y+ add chs,r0 dec tempa cpi tempa,1 brne ulangchs
ld tempa,y+ cpi tempa,3 brne check_uart_restart1 ld tempa,y+ cpi tempa,0 breq wd_reset cpi tempa,1 breq send_data cpi tempa,2 breq simpanEEPROM rjmp check_uart_restart checksumerror: clr chs ldi temp,255 mov r0,temp rcall b_transmit
;start
ldi temp,5 ;jml rcall movedata rcall b_transmit ldi temp,3 ;src rcall movedata rcall b_transmit ldi temp,1 ;dest rcall movedata rcall b_transmit ldi temp,200 ;cmd rcall movedata rcall b_transmit mov r0,chs ;chs rcall b_transmit ldi temp,250 ;stop mov r0,temp rcall b_transmit rcall resp rjmp check_uart_restart wd_reset: cli ldi temp,0b00001000 out wdtcr,temp wd_loop: rjmp wd_loop
mov r0,chs rcall b_transmit
send_data: rcall send_data2 rjmp check_uart_restart send_data2: clr chs
ld r0,y cp chs,r0 brne checksumerror
ldi temp,255 mov r0,temp rcall b_transmit
ldi yl,low(uart_address+1) ldi yh,high(uart_address) ld tempa,y+ cpi tempa,1 brne check_uart_restart1
ldi temp,7 ;jml rcall movedata rcall b_transmit
;start
ldi temp,3 ;src rcall movedata rcall b_transmit
;**************************************** clear_sram: rcall y_awal ldi temp,0x00 ldi tempa,0x6e clear_lagi: st y+,temp dec tempa brne clear_lagi ret
ldi temp,1 ;dest rcall movedata rcall b_transmit ldi temp,2 ;cmd rcall movedata rcall b_transmit
port_init: ldi temp,0xff out ddrb,temp
mov temp,xh ;dataM rcall movedata rcall b_transmit
ldi temp,0x00 out ddrd,temp
mov temp,xl ;datal rcall movedata rcall b_transmit
ldi temp,0x04 ;ldi temp,0x00 ;tanpa pullup out portd,temp ;sbi portd,2 ret
mov r0,chs ;chs rcall b_transmit ldi temp,250 mov r0,temp rcall b_transmit
;stop
;ldi temp,1 ;rcall lcd4ctrl ret movedata: mov r0,temp add chs,temp ret simpanEEPROM: ldi yl,low(uart_address+4) ldi yh,high(uart_address) ldi temp,0 ldi tempa,3 clr eep_addr simpanEEPROM1: ld temp,y+ mov eep_data,temp rcall eeprom_write inc eep_addr dec tempa cpi tempa,0 breq check_uart_restart rjmp simpanEEPROM1 rcall load_eeprom check_uart_restart: andi status,0b11111001 reenable: sbi ucr,7 sbi ucr,4 ldi temp,0x42 ;timcompare n tim0ov enable out timsk,temp reti uart_sram_init: ldi yl,low(uart_address) ldi yh,high(uart_address) ret
init_int0_falling: ldi temp,0x40 ;INT0: On INT1: Off out GIMSK,temp ldi temp,0x02 ;INT0 Mode: Falling Edge out MCUCR,temp ldi temp,0x40 ;write 1 to erase intf0 out GIFR,temp ret init_int0_rising: ldi temp,0x40 ;INT0: On INT1: Off out GIMSK,temp ldi temp,0x03 ;INT0 Mode: Rising Edge out MCUCR,temp ldi temp,0x40 out GIFR,temp ret start_timer0: ldi temp,prescale ;prescale 1024 out TCCR0,temp ldi temp,0x05 out TCNT0,temp ret start_timer1: ldi temp,0x00 out TCCR1A,temp ldi temp,prescale;prescale ck/1024 out TCCR1B,temp ldi temp,0x00 out TCNT1H,temp ;2^1610800=0xd5d0 ldi temp,0x00 out TCNT1L,temp ret init_timer_service:
ldi temp,0x42 ;enable timer1 compare n tim0 ovf int out timsk,temp ldi temp,0x2a out OCR1AH,temp ldi temp,0x30 out OCR1AL,temp ret ;**************************************** y_awal: ldi yl,low(mem) ldi yh,high(mem) ret ;**************************************** hitung_frekuensi: clr xh ;rcall load_eeprom ;rcall load_eeprom2reg ldi dividendL,kL ldi dividendM,kM ldi dividendH,kH DIVW21U: ;rutin pembagian 16bit fixed point clr reml clr remm clr remh ldi loopcounter,24 DIVW21U1: lsl dividendL ;R26=dividendL rol dividendM rol dividendH ;R27=dividendH rol reml rol remm rol remh sub reml,xl ;xl=divisorL sbc remm,xm ;xm=divisorM sbc remh,xh ;xh=divisorH brcc DIVW21U2 add reml,xl adc remm,xm adc remh,xh rjmp DIVW21U3 DIVW21U2: sbr dividendL,1 DIVW21U3: dec loopcounter brne DIVW21U1 mov xl,dividendL mov xh,dividendM mov divresh,dividendH adiw xh:xl,50 adiw xh:xl,30 rcall ubahformat ret ubahformat: push zl push zh ldi zh,high(mem) ldi zl,low(mem) rcall Bin2ToAsc5 routine
;initiate z
pop zl pop zh ret Bin2ToDigit: clr temp ; digit count is zero Bin2ToDigita: cp xh,rBin2H ; Number bigger than decimal? brcs Bin2ToDigitc ; MSB smaller than decimal brne Bin2ToDigitb ; MSB bigger than decimal cp xl,rBin2L ; LSB bigger or equal decimal brcs Bin2ToDigitc ; LSB smaller than decimal Bin2ToDigitb: sub xl,rBin2L ; Subtract LSB decimal sbc xh,rBin2H ; Subtract MSB decimal inc temp ; Increment digit count rjmp Bin2ToDigita ; Next loop Bin2ToDigitc: st z+,temp ; Save digit and increment ret ; done Bin2ToBcd5: push xh ; Save number push xl ldi temp,HIGH(10000) ; Start with tenthousands mov rBin2H,temp ldi temp,LOW(10000) mov rBin2L,temp rcall Bin2ToDigit ; Calculate digit ldi temp,HIGH(1000) ; Next with thousands mov rBin2H,temp ldi temp,LOW(1000) mov rBin2L,temp rcall Bin2ToDigit ; Calculate digit ldi temp,HIGH(100) ; Next with hundreds mov rBin2H,temp ldi temp,LOW(100) mov rBin2L,temp rcall Bin2ToDigit ; Calculate digit ldi temp,HIGH(10) ; Next with tens mov rBin2H,temp ldi temp,LOW(10) mov rBin2L,temp rcall Bin2ToDigit ; Calculate digit st z,xl ; Remainder are ones sbiw ZL,4 ; Put pointer to first BCD pop xl ; Restore original binary pop xh ret ; and return
;call Bin2ToAsc5:
rcall Bin2ToBcd5 ; convert binary to BCD ldi temp,4 is 4 leading digits mov rBin2L,temp Bin2ToAsc5a: ld temp,z BCD digit tst temp leading zero brne Bin2ToAsc5b digit >0 ldi temp,'0' ; blank st z+,temp set to next position dec rBin2L counter brne Bin2ToAsc5a leading blanks ld temp,z last BCD Bin2ToAsc5b: inc rBin2L char Bin2ToAsc5c: subi temp,-'0' ; st z+,temp inc pointer ld temp,z char dec rBin2L chars? brne Bin2ToAsc5c sbiw ZL,5 to beginning of the BCD ret
; Counter
; read a ; check if ; No, found overwrite with ; store and
disptime: ldi temp,0x43 ; LCD Cursor to start of line 2 ldi ZH,HIGH(2*kgs) ; Display Time-Text ldi ZL,LOW(2*kgs) rcall Lcd4ZTxt ; Display null-terminated string ret ; Fertig datet: .DB "Flow=",0x00;,0x00 kgs: .DB " ml/s",0x00;,0x00 koma: .DB ",",0x00
; decrement resp: ; further ; Read the
; one more
Add ASCII-0 ; store and
clr temp ; Set LCD home position ldi ZH,HIGH(2*okf) ; display Date-Text ldi ZL,LOW(2*okf) rcall Lcd4ZTxt ; Display null-terminated string ret ; Fertig okf: .DB "ok
=",0x00,0x00
; read next ; more ; yes, go on ; Pointer ; done
;**************************************** ; Transmiting routine b_transmit: sbi portb,3 sbi UCR,txen b_transmit1: sbis USR,UDRE ;is UART transmitter ready? rjmp b_transmit1 out UDR,r0 ;sent out char cbi UCR,txen cbi portb,3 ret ;**************************************** ; Receiving routine b_receive: sbi UCR,rxen b_receive1: sbis USR,RXC rjmp b_receive1 in r0,UDR cbi UCR,rxen ret ;**************************************** dispdate: clr temp ; Set LCD home position ldi ZH,HIGH(2*datet) ; display Date-Text ldi ZL,LOW(2*datet) rcall Lcd4ZTxt ; Display null-terminated string
;**************************************** Lcd4Init: rcall y_awal ldi temp,0x30 ;karakter 0 st y+,temp ldi temp,0x30 ;karakter 0 st y+,temp ldi temp,0x30 ;karakter 0 st y+,temp ldi temp,0x30 ;karakter 0 st y+,temp ldi temp,0x30 ;karakter 0 st y+,temp ldi temp,0x20 ;karakter spasi st y+,temp rcall LcdDelay1s ; Wait a second for the LCD ldi temp,cLcdWrite ; Data direction to output out pLcdDdr,temp ldi temp,cLcdDummy ; Dummy to catch LCD rcall Lcd4Set ; send three times with 5 ms delay rcall LcdDelay5ms ldi temp,cLcdDummy rcall Lcd4Set rcall LcdDelay5ms ldi temp,cLcdDummy rcall Lcd4Set rcall LcdDelay5ms ldi temp,0b00100000 ; Function Set to 4 Bit rcall Lcd4Ctrl ; output on the Control Port LCD ldi temp,0b00010100 ; Cursor display shift rcall Lcd4Ctrl
ldi temp,0b00001100 ; LCD on rcall Lcd4Ctrl ldi temp,0b00000110 ; Entry mode rcall Lcd4Ctrl Lcd4Clear: ldi temp,0b00000001 ; Set Lcd Clear rcall Lcd4Ctrl Lcd4Home: ldi temp,0b00000010 ; Set LCD Home Position ; ; Output of temp on the Control-Port of the LCD ; Lcd4Ctrl: push temp ; save byte andi temp,0xF0 ; clear lower nibble rcall Lcd4Set ; output upper nibble pop temp ; restore byte swap temp ; swap lower and upper nibble andi temp,0xF0 ; clear lower nibble rcall Lcd4Set ; output lower nibble rjmp LcdDelay5ms ; done. ; ; Display the packed BCD in temp on the LCD ; Lcd4PBcd: push temp ; Save on stack swap temp ; Higher to lower nibble rcall Lcd4PBcd1 ; Output nibble pop temp ; Restore from stack Lcd4PBcd1: andi temp,0x0F ; Mask upper nibble ori temp,0x30 ; Nibble to ASCII ; ; Display char in temp on the LCD ; Lcd4Chr: push temp ; save char on stack andi temp,0xF0 ; clear lower nibble sbr temp,mLcdRs ; Set RS-Bit rcall Lcd4Set ; output nibble pop temp ; get char from stack swap temp ; swap nibbles andi temp,0xF0 ; clear lower nibble sbr temp,mLcdRs ; Set RS-Bit rcall Lcd4Set ; output nibble rjmp LcdDelay50us ; ready ; ; Send nibble in temp to LCD ; Lcd4Set: out pLcdPort,temp ; Byte to output port nop sbi pLcdPort,bLcdEn ; Set EnableBit
enactive ; Delay macro cbi pLcdPort,bLcdEn ; Clear Enable Bit nop ret ; ; Delay by 1 second on start-up ; LcdDelay1s: ldi temp,c1s ; 200 * 5 ms wait LcdDelay1s1: rcall LcdDelay5ms dec temp brne LcdDelay1s1 ret ; ; Delay by 5 ms following each Control Word ; LcdDelay5ms: push ZH ;tdk begitu penting, karena tdk menginterup uart push ZL ldi ZH,HIGH(c5ms) ldi ZL,LOW(c5ms) LcdDelay5ms1: sbiw ZL,1 brne LcdDelay5ms1 pop ZL pop ZH ret ; ; Delay by 50 Microseconds after each Char ; LcdDelay50us: ldi temp,c50us LcdDelay50us1: nop dec temp brne LcdDelay50us1 ret ; ; Display at the position in temp the string starting at Z (null-term.) ; Lcd4ZTxt: sbr temp,0b10000000 ; Set DD-RAMAdress rcall Lcd4Ctrl Lcd4ZTxt1: lpm ; Get a char tst R0 ; Null-Char? breq Lcd4ZTxtR mov temp,R0 rcall Lcd4Chr ; display the cahr in temp adiw ZL,1 ; next char rjmp Lcd4ZTxt1 ; do it again Lcd4ZTxtR: ret ; Display at the position in temp the string starting at y (null-term.) Lcd4ZMem: sbr temp,0b10000000 ; Set DD-RAMAdress rcall Lcd4Ctrl Lcd4ZTxt1Mem: dec tempa
ld R0,z+ ; Get a char dec zl tst R0 ; Null-Char? breq Lcd4ZTxtRMem mov temp,R0 rcall Lcd4Chr ; display the cahr in rmp adiw zL,1 ; next char cpi tempa,0 breq Lcd4ZTxtRMem rjmp Lcd4ZTxt1Mem ; do it again Lcd4ZTxtRMem: ret ; Display temp chars from SRAM starting at Z on the LCD ; Lcd4RTxt: mov R0,temp ;R0 is counter Lcd4RTxt1: ld temp,Z+ ;read char rcall Lcd4Chr dec R0 brne Lcd4RTxt1 ret display_mem: clr temp ;Set LCD home position ldi ZH,HIGH(2*datet);display Date-Text ldi ZL,LOW(2*datet) rcall Lcd4ZTxt ;Display null-terminated string ldi tempa,3 ldi temp,0x05 ddram(baris 1) ldi zH,HIGH(mem) ldi zL,LOW(mem) rcall Lcd4ZMem ldi temp,0x40 to start of line 2 ldi ZH,HIGH(2*koma) Time-Text ldi ZL,LOW(2*koma) rcall Lcd4ZTxt ldi tempa,2 ldi temp,0x41 ddram(baris 2) ldi zH,HIGH(mem) ldi zL,LOW(mem+2) rcall Lcd4ZMem
;********************************** eeprom_write: sbic EECR,EEWE ;if EEWE not clear rjmp eeprom_write ; wait more out EEAR,eep_addr
;output
out EEDR,eep_data
;output
address data sbi EECR,EEMWE sbi EECR,EEWE Write strobe
;set EEPROM
;This instruction takes 4 clock cycles since ;it halts the CPU for two clock cycles nop nop nop nop nop ret eeprom_read: sbic EECR,EEWE not clear rjmp eeprom_read more out EEAR,eep_addr sbi EECR,EERE nop nop nop in eep_data,EEDR ret
;if EEWE ;
wait
;address
load_eeprom: ;eeprom ke sram ldi yl,low(eeprom_address) ldi yh,high(eeprom_address) ldi tempa,3 ;3 kali loop
;alamat
;LCD Cursor ldi temp,0x00 load_eeprom_lagi: mov eep_addr,temp
;Display
;alamat ;set alamat
eeprom ;
;alamat
ldi temp,0x43 ;LCD Cursor to start of line 2 ldi ZH,HIGH(2*kgs) ;Display Time-Text ldi ZL,LOW(2*kgs) rcall Lcd4ZTxt ;Display null-terminated string ret
rcall eeprom_read st y+,eep_data ;pindahin ke sram 0x0080 dec tempa breq load_eeprom_end inc temp rjmp load_eeprom_lagi load_eeprom_end: ret load_eeprom2reg: ;sram ke register yang dipake rutin division ldi yl,low(eeprom_address) ldi yh,high(eeprom_address) ld dividendH,y+ ;pindahin dari sram ke reg ld dividendM,y+ ;dari sram+1
ld dividendL,y sram+2 ret ;last edit:19ag05
;dari
PERANCANGAN TRANSMITTER PADA FLOWMETER PADDLEWHEEL BERBASIS MIKROKONTROLER AT90S2313 Rian Amanda, 13200084, Departemen Teknik Elektro, Fakultas Teknologi Industri, Institut Teknologi Bandung
Abstract - Tujuan tugas akhir ini adalah merancang
Digital Signal Processor) yang oleh pengguna tidak
transmitter yang real time untuk mengukur laju aliran
dikenali sebagai computer [14].
(debit) air dalam pipa. Sistem pengukur ini merupakan
2.3 Sistem Waktu Nyata ( Real Time System)
bagian dari kit sistem kendali proses. Parameter
Real Time System adalah sistem yang dapat
masukan alat pengukur ini adalah periode dari pulsa
merespon kejadian di dunia nyata (melalui sensor)
yang dihasilkan sensor paddlewheel, kemudian diolah
secara langsung [14].
dan hasilnya ditampilkan oleh LCD dan dapat dikirim
2.3.3 Jenis Real Time System:
melalui bus komunikasi serial. Proses pengambilan
Event Triggered System
data, penghitungan, penampilan LCD, dan komunikasi
Event Triggered System merupakan suatu
diatur oleh program yang disebut kernel hybrid.
sistem yang akan mengeksekusi program jika ada
Frekuensi maksimum yang dapat diukur adalah 5,8 Hz
permintaan berupa kejadian (event)[14].
atau 143,7ml/s .
Time Triggered System Pada Time triggered system prosesor akan
I. PENDAHULUAN Pembuatan kit eksperimenter ini merupakan
mengeksekusi task dalam rentang waktu tertentu[14].
pengembangan dari kit yang telah tersedia sebelumnya
Time triggered system biasa dikenal dengan nama
di lab LSS. Pengurangan biaya dilakukan dengan
cooperative system.
memperkecil
Sistem hibrida (Hybrid System)
ukuran
kit
dan
mengganti
bahan
mengurangi
Hybrid system merupakan gabungan dari
kualitas keseluruhan. Peningkatan performa dilakukan
preemptive system dan cooperative system [12]. Pada
dengan
hybrid system terdapat minimal 1 task preemptive dan 1
pembuatan
namun
diusahakan
menambahkan
jenis
tidak
sensor
fluida,
menambahkan rangkaian kontroler, menjadikan output
task cooperative.
sensor real time, dan memungkinkan kit untuk
2.4 MikrokontrolerAVR AT90S2313
dioperasikan melalui komputer.
II. TINJAUAN PUSTAKA
Pertimbangan utama penulis menggunakan AVR AT90S2313 adalah kecepatan proses, mampunyai
2.1 Metoda Pengukuran Pada Sensor Paddlewheel
baud rate generator, 2 buah pewaktu, ketersediaan
Besaran yang diambil dari sensor paddlewheel adalah
EEPROM dan harga yang relatif murah.
frekuensi sinyal akibat buka-tutup reed switch.
2.5 Komunikasi serial
2.2 Sistem Tertanam (Embedded System )
Device UART mengubah data dari format 8 bit
Embedded System mempunyai setidaknya
menjadi 1 bit per-satuan waktu pada port serial seperti
sebuah pemroses yang dapat diprogram (biasanya
RS 232 [12]. Alat yang dapat menangani lebih dari 2
dalam bentuk chip mikrokontroler, mikroprosesor, atau
node adalah RS 485.
menerima byte dari luar dan terinterupsi maka task akan
2.6 Display LCD PC1601A [13] PC1601 adalah
modul display LCD dot
gagal memeriksa data serial.
matrix dengan konfigurasi 16 karakter dalam satu baris.
3. Task timeout pengukuran periode dipicu oleh
Setip karakter dibentuk oleh 8 baris pixel dan 5 kolom
interupsi
pixel (baris terakhir pixel adalah kursor).
menghitung selama sedetik maka laju aliran dianggap
III. PERANCANGAN DAN IMPLEMENTASI
nol. Penundaan terlama tidak berarti bila dibanding satu
Transmitter
terdiri
dari
perangkat
keras
timer-1
compare.
Bila
timer-1
sudah
detik.
(hardware) dan perangkat lunak (software). Diagram
4. Task update display LCD dieksekusi berdasarkan
blok transmitter terdapat pada Gambar 1.
interupsi timer-0. Task update LCD ini dieksekusi bila interupsi timer-0 sudah terjadi 10 kali dan pada saat itu ada flag perubahan hasil perhitungan. Penundaan terlama tidak terlalu terasa bagi mata. 3.3 Implementasi Perangkat Lunak Pada
saat
sistem
dinyalakan
kernel
menginisialisasi port direction, timer interrupt, UART baud rate, dan modul LCD.
Gambar 1. Diagram blok sistem pengukuran laju aliran air
Transmitter terdiri dari dua bagian
yaitu
implementasi hardware dan perancangan software. Penulis
lebih
condong
memilih
3. 3.1 Task pengukuran periode Dilakukan dengan mengukur lamanya waktu
“implementasi
antara transisi naik/turun dari sensor. Setelah terdeteksi
hardware” karena hardware transmitter sederhana dan
ada transisi naik maka timer-1 dinyalakan baru keluar
banyak diambil utuh dari referensi yang ada.
dari rutin interupsi setelah menunggu sesaat. Flowchart
Penulis lebih condong memilih “perancangan software” karena software TA ini “dibuat dari nol”
pengukuran frekuensi paddlewheel dapat dilihat pada Gambar 2.
meskipun ada beberapa rutin yang diambil dari referensi. 3.1 Implementasi Perangkat Keras Implementasi hardware mengacu pada batasan masalah pada BAB I, yaitu menekankan pada minimalisasi menggunakan
biaya
pembuatan
komponen
dengan
sesedikit
cara
mungkin,
menggunakan PCB 1 lapis (single layer). . 3.2 Perancangan Perangkat Lunak Ada empat task yang dikerjakan 1. Task interupsi eksternal diberi prioritas tertinggi karena hal utama yang diukur adalah periode dari sensor. Task ini tidak boleh tertunda oleh task lain. 2. Task komunikasi serial adalah task yang sensitif terhadap interupsi dari task lain. Bila task sedang
Gambar 2. Flowchart pengukuran frekuensi paddlewheel
3.3.2 Task pemeriksaan data serial
Tiap data yang dikirim harus berisi informasi node sumber dan node tujuan. Paket data protokol ada pada Gambar 3.
perhitungan baru, bila ada maka hasil perhitungan akan ditampilkan pada display LCD.
BAB IV. PENGUJIAN DAN ANALISIS 4.1 Pengujian karakteristik reed switch pada
Gambar 3. Paket data pada protokol
Flowchart periksa komunikasi serial dapat dilihat pada Gambar 4.
berbagai macam frekuensi Pengujian ini dilakukan untuk, megetahui karakteristik sensor
reed switch seperti bentuk sinyal terhadap
frekuensi paddlewheel. Untuk menguji hal ini, kedua kaki reed switch dihubungkan ke resistor pull-up. 4.1 Pengujian dengan masukan dari pembangkit sinyal (Goodwill Instrument GFG-80220G). Pengujian ini untuk mensimulasikan masukan dari sensor. Sebelum pengujian dilakukan, penulis menambahkan waktu tunda (delay) pada program pengukur periode untuk mengurangi efek bouncing. Pembangkit sinyal
Alat ukur
osiloskop Gambar 5. Skema pengujian dengan pembangkit sinyal
Penulis mengasumsikan hasil ukur osiloskop (Scopemeter PM9750) paling akurat diantara 3 alat di atas. Bila pembangkit sinyal menunjukkan 2 Hz maka seharusnya alat ukur menunjukkan setengahnya yaitu. Hasil pengujian alat ukur dengan masukan sensor Gambar 4. Flowchart periksa komunikasi serial
3.3.3 Task batas pengukuran periode
terdapat pada Tabel 1 dan secara grafik pada Gambar 6. Tabel 1. Perbandingan hasil ukur osiloskop dengan hasil alat ukur
Task ini dipicu interupsi “timer-1 compare match” berfungsi membatasi periode yang diukur. Bila
Sampel
Hasil Ukur Osiloskop(Hz)
Hasil Ukur Alat (Hz)
transmitter tidak menerima data baru lebih dari satu
1
0.952381
0.937
detik maka kemungkinan besar paddlewheel memang
2
1.4285714
1.348
3
1.9047619
1.891
4
2.3809524
2.355
5
2.8571429
2.851
6
3.3333333
3.389
7
3.8095238
3.752
8
4.2857143
4.33
9
4.7619048
4.83
tidak berputar. 3.3.4 Task update display LCD Task ini berfungsi menentukan kapan update display LCD dilakukan. Bila interupsi timer-0 overflow terjadi 10 kali maka kernel memeriksa apakah ada
10
5.2380952
5.389
Tabel 3. Hasil perhitungan akurasi pengukuran frekuensi pada beberapa level konfiden
7
Hasil ukur alat
Standard
Level
Konstanta
Dev
Konfiden
Student-T
1
2,218642
68,3 %
1
2,218642
2
2,218642
95 %
2,201
4,883231
3
2,218642
99 %
3,106
6,891101
No
6 5 4
Series1
3
Linear (Series1)
2
Akurasi
1 0 0
2
4
4.2 Pengujian dengan masukan dari sensor
6
Hasil ukur osiloskop
y = 1.0379x - 0.1037
Pengujian ini dilakukan untuk memastikan bahwa mikrokontroller mengolah data dengan benar
Gambar 6. Kurva hasil ukur alat vs hasil ukur osiloskop
sinyal input dari sensor . Dari Gambar 6 didapat persamaan:
Pengujian dilakukan dengan mengalirkan air
Hasil Ukur = 1,0379 fmasukan – 0.1037..........................1
pada sensor paddlewheel ini. Air dialirkan dengan
Persamaan 1 dipergunakan untuk menghitung keluaran
pompa yang daya hisapnya dapat berubah tergantung
ideal pengukur yang akan dijadikan referensi dalam
pada tegangan sumber yang diberikan. Hasil pengujian
perhitungan
alat ukur dengan masukan sensor terdapat pada Tabel 4
galat
(error)
pengukuran.
Galat
pengukuran dapat dihitung dengan persamaan.2. Hasil perhitungan diperlihatkan pada Tabel 2. galat =
dan secara grafik pada Gambar 7. Tabel 4. Perbandingan hasil ukur osiloskop dengan hasil alat ukur
(regresi linier hasil ukur alat ) − (hasil ukur alat ) × 100 % ........2 (regresi linier hasil ukur alat )
Volume/ Tegangan
Tabel 2. Hasil perhitungan galat pengukuran frekuensi Sampel
Hasil Ukur Alat ideal (y fungsi)
error
1
0.884776
-0.05222
-5.90249
2
1.379014
0.031014
2.249018
3
1.873252
-0.01775
-0.94742
4
2.36749
0.01249
0.527583
5
2.861729
0.010729
0.374898
6
3.355967
-0.03303
-0.98432
7
3.850205
0.098205
2.550637
8
4.344443
0.014443
0.332444
9
4.838681
0.008681
0.179407
10
5.332919
-0.05608
-1.0516
11
5.827157
-0.01684
-0.28904
Standard
deviasi
dari
800ml/140V
error(%)
prosentase
800ml/160V
800ml/180V
800ml/220V
500ml/140
galat
=
2,218642. Dengan mengetahui nilai standard deviasi maka dapat dihitung akurasi dari pengukur dalam mengukur
frekuensi.
Berdasarkan
tabel
statistik
Student-T pada jumlah sampel 11 diperoleh nilai akurasi
pada
beberapa
diperlihatkan pada Tabel 3.
level
konfiden,
seperti
500ml/180ml
Waktu (s)
Frekuensi sensor ratarata
Laju aliran Rata-rata
8.59 8.52 8.36 8.29 8.17 8.12 8.06 8.23 8.13 8.17 8.02 8.1 5.1 5.16 5.2 5.31 5.18 5.26
1.233333 1.4 1.41 1.463333 1.563333 1.536667 1.7 1.333333 1.613333 1.5 1.8 1.7 1.6 1.51 1.566667 1.256667 1.49 1.356667
93.13155 93.89671 95.69378 96.50181 97.91922 98.52217 99.25558 97.20535 98.40098 97.91922 99.75062 98.76543 98.03922 96.89922 96.15385 94.16196 96.5251 95.05703
maka dapat dihitung akurasi dari pengukur dalam
101
100
mengukur
frekuensi.
Berdasarkan
tabel
statistik
99
Student-T pada jumlah sampel 18 diperoleh nilai
laju aliran (ml/s)
98
y = 10.902x + 80.505
97
Series1
akurasi
pada
beberapa
level
konfiden,
seperti
Linear (Series1) 96
diperlihatkan pada Tabel 5.
95
Tabel 6. Hasil perhitungan akurasi pengukuran frekuensi pada 94
beberapa level konfiden 93
No
92 1
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2
frekuensi sensor (Hz)
Gambar 7. Kurva hasil alat ukur vs hasil ukur osiloskop dan regresinya.
Dari gambar 7 didapat persamaan: Laju aliran rata-rata = 10,902 fsensor rata-rata + 80,505 ..................3
Persamaan 3 dipergunakan untuk menghitung keluaran ideal pengukur yang akan dijadikan referensi dalam perhitungan
galat
(error)
pengukuran.
Galat
pengukuran dapat dihitung dengan persamaan 4. Hasil perhitungan diperlihatkan pada Tabel 5. galat =
(regresi linier laju aliran rata - rata ) − (laju aliran rata - rata ) × 100 % (regresi linier laju aliran rata - ratat )
...........4 Tabel 5 Hasil perhitungan galat pengukuran frekuensi Volume/ Tegangan
Laju Rata-rata
y fungsi
galat(%)
93.13155 93.94333 0.864122 93.89671 95.76 1.945788 800ml/140V 95.69378 95.869 0.18277 96.50181 96.45033 -0.05337 97.91922 97.54033 -0.38844 800ml/160V 98.52217 97.24967 -1.30849 99.25558 99.03 -0.22779 97.20535 95.03333 -2.28553 800ml/180V 98.40098 98.08533 -0.32181 97.91922 96.85 -1.10399 99.75062 100.12 0.368934 800ml/220V 98.76543 99.03 0.267159 98.03922 97.94 -0.1013 500ml/140 96.89922 96.959 0.06165 96.15385 97.57667 1.458157 94.16196 94.19767 0.037908 500ml/180ml 96.5251 96.741 0.223177 95.05703 95.28767 0.242038 Standard deviasi dari prosentase galat = 0,954447. Dengan mengetahui nilai standard deviasi
1 2 3
Standard Dev
Level Konfiden
2,218,642 68,3 % 2,218,642 95% 2,218,642 99% Pengujian dengan
Konstanta Student-T
1 2,201 3,106 cara ini
Akurasi
221,864 488,323 689,110 mempunyai
kelemahan yaitu rentang pengujian hanya dari frekuensi 1,25Hz s.d 1,85Hz. Sedangkan rentang pengukuran adalah 0,5 Hz s.d 5,8Hz. Dari pengamatan terlihat bahwa saat sensor dipenuhi air frekuensi kincir menurun, artinya laju aliran air memang tidak dapat terlalu tinggi. 4.3 Pengujian protokol menggunakan PC Pengujian ini untuk memeriksa komunikasi serial (UART) apakah sudah benar atau belum. Pada pengujian ini digunakan driver RS 232. Penulis menggunakan program “terminal.exe” untuk mengirim data dari dan ke komputer. 1. Uji perintah meminta kirim data Bila kontroler ingin alat ini mengirimkan data hasil perhitungan maka harus dengan mengirim urutan data sebagai berikut |255|005|001|003|001|010|250| sudah disepakati besama. Bila semua urutan benar maka alat ini akan mengirim balik |255|7|1|3|1|6|***|***|***|250|. Tampilan program Terminal v1.9b saat menguji pesan yang berisi “meminta kirim data” dapat dilihat pada Gambar 8.
V. KESIMPULAN Setelah
melakukan
implementasi, pengujian
proses
perancangan,
dan analisis penulis dapat
menarik kesimpulan Transmitter ini dapat bekerja mengukur frekuensi putaran kincir, mampu menerima dan merespon perintah “meminta kirim data”, dan “simpan data” melalui bus komunikasi RS485.
VI. DAFTAR PUSTAKA [1]
AVR200 Multiply and Divide Routines, http://atmel.com/dyn/resources /prod_documents/DOC0936.PDF
Gambar 8 Tampilan program Terminal v1.9b saat menguji pesan [2]
yang berisi “meminta kirim data”
DatasheetAT90S2313,
http://atmel.com/dyn/resources/prod_documents
/DOC1630.PDF
2. Uji perintah kirim data dan simpan di EEPROM
[3] Datasheet PC1601A-L, http://www.p-tec.net/PC1601A(LCD).pdf
Perintah kirim data dan perintah simpan data
[4]
Datasheet MAX 485, http:// www.ortodoxism.ro/datasheets/maxim /MAX1487-MAX491.pdf
konstanta
ke
EEPROM.
Pengujian
ini
untuk
[5]FlowmeterTutorial,http://www.omega.com/techref/pdf/FlowMeterTutorial.p
memastikan pengiriman data konstanta sudah benar, karena kalibrasi sensor dilakukan pada kontroler. Untuk keperluan pengujian kontroler dapat diganti dengan PC. Hasil pembacaan EEPROM dapat dilihat pada Gambar 9.
df [6]
Johan, Willy. Laporan Tugas Akhir: Perancangan sistem realtime dengan kernel cooperative pada pengukur salinitas air laut. Departemen Teknik Elektro ITB, 2004
[7] http://www.avrasm-tutorial.com/avr_en/index.html [8] http://www.avrfreak.net/ [9] http://www.kalinskyassociates.com/Wpaper1.html [10] http://www.qsl.net/pa3ckr/bascom%20and%20avr/rs232/ [11] Kurniawan, Rizky. Laporan Tugas Akhir: System embebbed dengan kernel preemptive pada level meter. Departemen Teknik Elektro ITB, 2003 [12] Laplante, Jean J. Real Time System Design and Analysis. 2nd ed. New York: IEEE Press, 1997 [13] Nalwan, Paulus Andi. Panduan Praktis Penggunaan dan Antarmuka
Gambar 9. Hasil pembacaan EEPROM
3. Pengujian protokol menggunakan 2 rangkaian pengukur laju aliran Pengujian
Modul LCD M1632. Jakarta: PT Elex Media Komputindo, 2004 [14] Pont, Michael J. Pattern For Time Triggered Embedded System. London: Addison-Wesley, 2001
dilakukan
dengan
:
node
1
[15] Pratomo, Andi. Panduan Praktis PemrogramanAVR Microkontroler AT90S2313. Yogyakarta: ANDI, 2005
mengirim data serial (pesan 7byte) yang berisi perintah mengirimkan data hasil perhitungan. Program pada node 2 diatur sehingga akan menampilkan “Ok” pada LCD bila menerima pesan 7byte yang benar( benar source, destination, command dan checksumnya). Hasil pengujian menunjukkan bahwa node 2 dapat
menanggapi
input
pesan
serial
dengan
menampilkan “Ok” pada LCD dan node tidak menanggapi input yang salah.