P. 1
BAB 4

BAB 4

|Views: 281|Likes:
Published by Irsa Rosalia

More info:

Published by: Irsa Rosalia on Mar 04, 2011
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as DOC, PDF, TXT or read online from Scribd
See more
See less

04/21/2014

pdf

text

original

IV.

HASIL DAN PEMBAHASAN

A. Perangkat Keras Pengujian perangkat keras bertujuan untuk mengetahui apakah komponen - komponen pada sistem yang telah dibuat dapat berfungsi dengan baik atau tidak. Perangkat keras yang diuji di antaranya : 1. Rangkaian pengendali utama 2. Komunikasi serial RS232 3. Sensor Ultrasonik 4. Motor servo 5. Rangkaian relay 6. Power Supply 1. Pengujian Pengendali Utama Pengujian terhadap pengendali utama bertujuan untuk mengetahui apakah mikrokontroler ATMEGA 8535 bekerja dengan baik atau tidak. Pengujian dilakukan dengan mengukur nilai tegangan pada kaki – kaki input dan output pada mikrokontroller ATMEGA 8535. Berikut gambar rangkaian pengendali utama yang berupa modul kit DT-AVR Low Cost Micro System.

57

Gambar 23. Rangkaian Pengendali Utama Secara teori, apabila mikrokontroler diberikan logika high, maka akan didapat nilai tegangan terukur 4,5 – 5,5 V pada kaki mikrokontroller. Dan apabila diberikan logika low, maka akan didapat nilai tegangan terukur mendekati 0 V pada kaki mikrokontroler. Pengujian dilakukan pada beberapa PORT mikrokontroler untuk mengetahui besar nilai tegangan pada masing – masing PORT pada logika high dan low. Tabel 6. Hasil pengujian tegangan pada mikrokontroler ATMega8535 Port pada Mikrokontroler PORT D.4 ( Motor Servo ) PORT B.7 ( Sensor Ultrasonik ) PORT C.4 ( Relay ) PORT B.1 ( Indikator Lampu ) PORT B.3 ( Indikator Lampu ) Nilai Tegangan (volt) Logika High Logika Low 5,0400 0,0013 5,0500 0,0006 5,0000 0,0015 4,6700 0,0012 4,6300 0,0012

58

PORT B.5 ( Indikator Lampu )

2,3380

0,0013

Dari data hasil pengujian yang dilakukan, didapat nilai tegangan pada masing – masing PORT mikrokontroler. Ternyata nilai tegangan yang didapat tidak tepat sesuai dengan nilai tegangan pada datasheet mikrokontroler Atmega8535. Nilai yang didapat mendekati nilai yang seharusnya pada datasheet untuk masing – masing PORT pada kondisi high dan low. Namun perbedaan ini masih dapat ditoleransi karena mikrokontroler masih dapat melakukan fungsinya dengan baik.

2. Pengujian Rangkaian Komunikasi Serial Pengujian rangkaian komunikasi serial dilakukan dengan mencoba mengirimkan beberapa karakter dari komputer ke mikrokontroler melalui port serial di mana setiap satu karakter mewakili satu nilai. Kemudian mikrokontroler akan merespon hasil input dan mengirimkan konfirmasi ke komputer melalui port serial. Data dikirim dengan menekan tombol huruf pada keyboard.

7 pada mikrokontroler. Sebelumnya mikrokontroler telah diprogram terlebih dahulu sesuai pengujian yang akan dilakukan.7 bernilai high dan sensor memancarkan gelombang .59 Gambar 24. 3. Listing program pengujian komunikasi serial dapat dilihat pada lampiran. Mikrokontroler akan memberikan trigger berupa pulsa high selama 5us. Pengujian Sensor Ultrasonik Pada sensor ultrasonik. pin ground ke ground. dan pin SIG ke PORT B. sehingga PORT B. d = 3. Dengan demikian. Hasil Pengujian Rangkaian Komunikasi Serial Kirim ke mikrokontroler a b c d e Data dari mikrokontroler yang terbaca di PC 0 1 2 3 4 Dapat dilihat bahwa data yang dikirim dari komputer sesuai dengan ketentuan yang diharapkan di mana a = 0. Dari pengujian didapatkan data pada tabel berikut. b = 1. Tabel 7. komunikasi serial antara mikrokontroler dengan komputer telah berhasil dilakukan. Komunikasi Serial antara Modul DT-AVR Low Cost Micro dengan Komputer Pada pengujian kali ini digunakan karakter huruf dari a sampai e di mana setiap huruf tersebut mewakili nilai angka dari 0 sampai 4. c = 2. Diberikan pula delay sebesar 1000 ms sebelum data dari mikrokontroler ditampilkan di hyperterminal agar ada jeda dari saat tombol keyboard ditekan hingga data tampil. dan e = 4. pin Vcc dihubungkan ke tegangan 5 Volt.

Dari hasil pengambilan data level cairan dengan sensor ultrasonik. Lebar pulsa ini akan digunakan dalam perhitungan jarak pada sensor.70 15 19.70 10 14.90 25 LAN (cm) Penggaris Sensor 0. nilai V yang merupakan nilai level cairan dideklarasikan dengan tipe data integer. Setelah 5 us.7 akan bernilai low.20 10 14. mengingat permukan air pada tangki selalu bergoyang naik turun.80 25 Terlihat bahwa terdapat sedikit perbedaan antara hasil pembacaan sensor dengan hasil pengukuran menggunakan penggaris.60 ultrasonik sebesar 40 kHz selama 200 us.40 1 5. Gelombang ini akan merambat dan memantul jika mengenai objek pantul berupa air pada tangki level.40 0 0. maka diperoleh data sebagai berikut. Hal ini dimaksudkan agar didapatkan pembacaan sensor yang relatif stabil dengan range 1 cm. Apabila .30 0 1.15 5 9. sensor akan menghasilkan sebuah pulsa. Apabila gelombang pantul telah terdeteksi oleh sensor. Hal ini terjadi karena pada program mikrokontroler untuk monitoring. maka pulsa ini akan low dan counter akan mulai mencacah untuk mengukur lebar pulsa dari awal pulsa dipancarkan (saat menunggu gelombang pantul) hingga gelombang pantul diterima sensor.30 5 10. Selama menunggu pantulan. maka PORT B. dan sensor menunggu adanya gelombang pantul.80 20 24. Data Hasil Pengukuran Level Cairan dengan Sensor Ultrasonik No 1 2 3 4 5 6 7 Nilai Level (cm) 0 1 5 10 15 20 25 Localhost (cm) Penggaris Sensor 0.80 20 24.75 15 19. Tabel 8.80 1 5.

Hal ini bisa terjadi karena tingkat akurasi motor servo yang sudah berkurang mengingat motor servo yang digunakan ini sebelumnya telah dipergunakan untuk pengerjaan penelitian yang lain. Relay . maka nilainya akan berubah terus dan tidak stabil.432 ms. Dari hasil pengujian didapat bahwa untuk berputar ke kanan sebesar 600. dibutuhkan delay sebesar 0. Pada referensi. kinerja motor servo ini masih bisa dipergunakan dengan baik karena sudut perputaran yang diperlukan masih dapat terpenuhi oleh motor servo. untuk berputar ke kanan 1800 dibutuhkan 1. Apabila kita lihat pada referensi yang seharusnya. 5.25 ms untuk sinyal high pada PORT B. Pengujian Rangkaian Relay Relay berfungsi sebagai switch tegangan 220 volt untuk menghidupkan pompa air untuk mengisi tangki sehingga level cairan dapat tercapai. motor servo harus berputar ke kiri untuk membuka keran dan ke kanan untuk menutup keran.0072 x 60 = 0.0072 ms.2. Pengujian Rangkaian Motor Servo Motor servo berfungsi membuka keran air sehingga air dapat keluar ke penampungan.72 ms untuk sinyal high pada PORT B. Dan untuk berputar ke kiri sebesar 600. dibutuhkan delay sebesar 0. Namun pada penelitian ini. 4. ternyata terdapat perbedaan untuk lamanya pemberian pulsa high pada PORT mikrokontroler.61 dibuat dengan tipe data float.3 ms lamanya pemberian pulsa high. Jadi untuk 10 ke kanan dibutuhkan 0. Agar dapat menggerakkan keran. maka untuk 600 dibutuhkan ± 0.2.

. Pengujian Rangkaian Power Supply Pada rangkaian power supply terdapat 3 buah output tegangan DC masing – masing 12 V. Setiap tegangan dihasilkan melalui IC regulator di antaranya LM untuk 12 V. dan 5 V. Berikut gambar rangkaian power supply. 6.4 akan bernilai low dan tidak ada tegangan yang keluar dari PORT C.4 pada mikrokontroler diberikan logika high.4 dari mikrokontroler. 9 V. maka akan dihasilkan tegangan 5 volt dan akan melewati resistor dan kemudian ke transistor. Keluaran dari koil berupa arus akan mengalir terus ke transistor. Arus tersebut akan terus mengalir selama basis transistor terus mendapat suplai tegangan dari PORT C.62 yang digunakan adalah relay 12 volt. Pada saat basis transistor diberikan tegangan maka input tegangan 12 volt pada relay akan mengaktifkan koil sehingga timbul medan magnet sehingga relay yang tadinya NO akan menjadi NC untuk tegangan 220 volt ke pompa. 6 V. Masing – masing tegangan digunakan untuk mensuplai daya bagi rangkaian pengendali dan relay. Tidak adanya arus yang mengalir mengakibatkan koil tidak tersuplai tegangan 12 volt sehingga tidak timbul medan magnet dan posisi NC kembali ke NO. Di transistor sendiri arus mengalir dari kolektor ke emitor. dan LM untuk 9 V. maka PORT C.4 sehingga tidak ada arus yang mengalir pada transistor. Jadi pada saat PORT C. Dengan begitu tegangan 220 volt tidak akan mengalir ke pompa sehingga pompa akan mati. dan 9 V. Namun yang digunakan hanya tegangan 12 V. Apabila level cairan telah tercapai.

relay. Rangkaian Power Supply Tegangan 12 V digunakan untuk mengaktifkan relay. Sedangkan pengguna (client) hanya mengakses data dari server saja. sehingga koil pada relay dapat bekerja dan switch pompa dapat bekerja. Juga terdapat output pada Modul DT-AVR Low Cost Micro terutama pada Vcc sebesar 5 V. karena di dalamnya terdapat IC regulator LM7805 yang menghasilkan tegangan 5 V. . B. Modul DT-AVR Low Cost Micro diaktifkan dengan menggunakan tegangan 9 V. Tegangan 5 V ini berguna untuk mengaktifkan sensor. Perangkat Lunak Sistem pengendalian ini dibuat berbasiskan web. sehingga untuk pemrogramannya cukup dilakukan untuk komputer server saja. dan lampu indikator.63 Gambar 25.

dll. Pemrograman Web Di sisi server. Di dalamnya terdapat 4 file di antaranya 1 file library php_ser.64 1. Gambar 26.zip dan harus diekstrak dahulu sebelum menggunakannya. . mengirimkan data ke port serial.dll.dll. Instalasi library php_ser. Library ini bisa di-downlaod langsung di internet.dll ke folder E:\AppServ\php5\ext Setelah proses penginstalasian. dan database.0. a. Pada penelitian ini file tersebut terletak di direktori E:\WINDOWS. dilakukan pengeditan file php. membaca data di port serial. ada beberapa pemrograman yang perlu dilakukan dalam sistem pengendalian berbasis web. di antaranya komunikasi serial. 1 file referensi berupa html.ini yang umumnya terdapat di direktori WINDOWS.2. File hasil download berupa php_ser_5. dan 2 buah file php untuk uji coba modul dari library php_ser. Library ini harus diintegrasikan ke dalam folder php tepatnya di dalam folder E:\AppServ\php5\ext. Komunikasi Serial Untuk dapat melakukan komunikasi serial dengan menggunakan php diperlukan library php_ser.

ini Kemudian kita tambahkan ekstensi berupa extension=php_ser.65 Gambar 27.ini . Penambahan extensi untuk library php_ser. Letak file php.dll dan pastikan bahwa direktori ekstensi berada pada alamat yang benar sesuai direktori php yang terpasang.dll ke dalam file php. Gambar 28.

dll yaitu file php_ser_test.66 Gambar 29. Caranya dengan menyalin file php yang ada dalam satu folder hasil download library php_ser.ini Setelah dilakukan pengeditan. akan .dll sudah dapat berfungsi atau belum. Pada penelitian ini penulis mencoba membuat sebuah direktori E:\AppServ\www\yomas dan meletakkannya di direktori yomas. Setelah melakukan start ulang web server.php ke direktori di bawah direktori root pada web server. kita perlu menguji apakah library php_ser. harus dilakukan start ulang web server apache agar perubahan yang telah dilakukan dapat berfungsi. Penambahan extension_dir = "E:/AppServ\php5\ext" ke dalam file php. Kemudian web browser dibuka dan diketikkan alamat URL http://localhost/yomas/.

"None"... Berikut sebagian petikan implementasinya pada file koneksi. 1............ <? ser_open("COM1".....dll yang berkaitan dengan komunikasi serial akan dimuat dan siap digunakan. Modul – modul untuk mengakses port serial telah dimuat Dengan tampilnya halaman tersebut berarti modul win_serial_port dalam library php_ser.....php....... ?> ........ ..... .... $str = ser_isopen()....... Untuk membuka komunikasi port serial kita menggunakan salah satu fungsi dari modul win_serial_port yaitu ser_open. maka akan tampil gambar seperti berikut: Gambar 30... "None")... echo "Port yang digunakan = $str".......php lalu klik....... 9600..... .........................67 tampil sederet link dan cari link bertuliskan php_ser_test.......... echo "<br>".... ............ 8...

bit data sebesar 8 bit. stop bit bernilai 1. Berikut implementasi fungsi ser_read: <? . Dalam penulisannya ser_isopen() akan menyimpan nilai parameter yang ditentukan oleh fungsi ser_open. yaitu dengan fungsi ser_isopen(). Membaca Data di Port Serial Pembacaan data di port serial diperlukan agar data hasil pembacaan sensor dapat ditampilkan di halaman web sebagai alat untuk me-monitoring level cairan pada tangki. Berikut hasil dari implementasi fungsi tersebut: Gambar 31. Selanjutnya. dan flow control kosong. baudrate sebesar 9600. Membuka Komunikasi Serial COM 1 b. Library php_ser.dll telah menyediakan modul untuk dapat membaca data di port serial.68 Fungsi ser_open akan membuka port serial sehingga komunikasi port serial dapat dilakukan dengan parameter port di COM1. parity kosong. hanya saja penelitian ini menggunakan php. nilai dari fungsi ser_isopen() dipindahkan ke variabel $str. Fungsinya sama seperti hyperterminal di mana data yang berhasil diterima dan dibaca pada port serial dapat ditampilkan. agar dapat ditampilkan di halaman web. Salah satu fungsi yang terdapat dalam modul win_serial_port adalah ser_read. Penggunaan fungsi di atas perlu ditambahkan dengan fungsi lain untuk menginformasikan ke pengguna bahwa port serial berhasil terhubung.

.69 ser_open("COM1"... $data = ser_read(2)....... . "None"... nilai level cairan juga dapat dilihat dalam bentuk grafis berupa gambar tangki yang merepresentasikan nilai level cairan yang terbaca.. ..... // membaca data di port serial COM 1 echo "<br>".. Berikut hasil tampilannya pada halaman web: Gambar 32....... Hasil Pembacaan Port serial COM 1 pada Halaman Web Selain dalam bentuk tulisan... Fungsi ser_read akan membaca data yang ada di port serial COM 1 dan akan ditampilkan dalam dua karakter.... $str = ser_isopen().. Parameter yang digunakan untuk menampilkan milai level cairan dalam bentuk grafis di sini diambil dari variabel $data pada fungsi ser_read. 8. 9600.. 1.... "None").... ............. echo "<br>".......

Tampilan halaman monitoring di komputer server Gambar 35. Representasi nilai level cairan dalam bentuk grafis Bentuk tampilan halaman monitoring level cairan pada komputer server dan komputer pengguna / client adalah sebagai berikut.70 Gambar 33. Tampilan halaman monitoring di komputer pengguna / client . Gambar 34.

dan seterusnya hingga z. dan C untuk stop. buang dan stop secara manual. Berikut penulisannya pada file php: <? $data = ser_read(2). Fungsi ini akan mengirimkan nilai string ke port serial dan diteruskan ke pin usart mikrokontroler. B untuk buang. digunakan pengiriman data berupa karakter alfabet dari a hingga z.71 c. Masing – masing diwakili oleh karakter A untuk isi. Untuk itu digunakan fungsi ser_write(string data). maka penggunaan karakter alfabet tersebut sudah memungkinkan untuk digunakan.png\">". Berikut tampilan halaman pengendalian level cairan. Karakter a mewakili nilai level 0 cm. untuk dijadikan variabel bagi program mikrokontroler. Mengirimkan Data ke Port Serial Proses ini merupakan proses pengendalian di mana admin akan memberikan input nilai level cairan yang diinginkan. // mengirim karakter a ke port serial echo "<IMG SRC=\"a. Karena level cairan yang diinginkan mempunyai range pengukuran dari 0 cm sampai 25 cm. echo "<br>". ?> Dalam proses pengendalian ini. ser_write( "a" ). nilai tiap level cairan dibuat berupa push button yang berjumlah 26 buah dan masing – masing mewakili satu nilai level cairan. . b mewakili nilai level 1. Di samping itu juga terdapat 3 tombol tambahan untuk isi. Pada halaman pengendalian.

Tiap push button akan menghubungkan ke file php yang telah terintegrasi fungsi ser_write untuk mengirimkan karakter yang dimaksud. . Dengan tampilnya kofirmasi tersebut. akan tampil konfirmasi dari sistem tentang nilai level yang dimaksud. Setelah proses pengiriman karakter ke port serial dilakukan.72 Gambar 36. berarti proses pengiriman telah berhasil dilakukan. Jadi terdapat 29 file php yang terintegrasi dengan fungsi ser_write. Push Button untuk Menentukan Nilai Level Cairan Proses pengendalian dilakukan dengan menekan salah satu push button pada halaman pengendalian.

tinggi. Gambar 38. Tepatnya pada tabel rekam dengan field tanggal. Database hasil pengukuran level cairan Hasil pengukuran level cairan akan diletakkan di database rekaman. . database harus ditampilkan dalam bentuk data array. Tampilan konfirmasi tentang nilai level cairan yang diinginkan d. dan volume.73 Gambar 37. Database Database yang dibahas di sini adalah database hasil pengukuran level cairan yang telah berhasil disimpan. Berikut tampilan halaman untuk mengakses database bagi pengguna. Berikut komponen database untuk data hasil pengukuran level cairan. jam. Agar pengguna dapat mengakses database itu pada halaman web.

74 Gambar 39. Men-download data hasil pengukuran level cairan . Gambar 40. baik admin maupun client dapat men-download data hasil pengukuran level cairan dalam format pdf yaitu dengan menekan tombol bergambar printer pada bagian bawah halaman. Halaman untuk mengakses database hasil pengukuran level cairan Bentuk tampilan halaman antara admin dengan client secara umum sama. Di samping itu untuk tujuan dokumentasi. hanya saja admin memiliki otoritas untuk dapat menyimpan data hasil pengukuran level cairan dan menghapusnya sedangkan untuk client tidak bisa. Client hanya mampu untuk melihat data hasil pengukuran level cairan saja.

a. . Data hasil pengukuran level cairan dalam format pdf 2. kendali. dan indikator lampu. Pemrograman Mikrokontroler Pemrograman mikrokontroler terdiri atas monitoring. Monitoring Program monitoring pada mikrokontroler berguna untuk mengambil data pembacaan sensor ultrasonik pada PORT B.7 kemudian mengirimkannya ke port serial melalui pin USART. alur program monitoring dapat digambarkan sebagai berikut. Dalam bentuk diagram alir.75 Gambar 41. pemrograman motor servo.

Kemudian mengatur PORT B.76 Gambar 42. Jadi proses interupt akan berjalan setiap TCNT1 bernilai 255. Apabila terjadi interrupt. Diawali dengan inisialisasi counter pada nilai 0.97 ) Jadi proses pembacaan data dan pengiriman ke port serial dilakukan dengan menggunakan interrupt timer overflow. Timer yang digunakan pada mikrokontroler adalah timer 1 yang bernilai 8-bit di mana 8-bit bernilai 255.7 selama 5 us sehingga gelombang ultrasonik akan dipancarkan dengan frekuensi . Diagram alir program monitoring level cairan pada mikrokontroler ( dibuat menggunakan Dia 0. maka proses monitoring akan dilakukan.7 sebagai output dan memberikan logika high pada PORT B.

..........77 40KHz selama 200 µs.. kita atur PORT B.. Nilai jarak direpresentasikan dengan variabel V pada program dan hasilnya akan dikirimkan ke port serial melalui pin USART. Kemudian setelah 5 us PORT B. Agar gelombang pantul dapat terdeteksi oleh sensor ultrasonik......... apabila pada PORT B. Cepat rambat gelombang ultrasonik di udara sebesar 344........ maka : Jarak = ((Cepat Rambat x Waktu Tempuh) / 2) ..... maka cepat rambat gelombang ultrasonik juga harus kita konversikan ke ......424 m/s....7........7 akan kembali berlogika low..... Karena lamanya gelombang ultrasonik yang dipancarkan berada dalam satuan µs....7 sebagai input dan membuatnya berlogika high sehingga sensor mengeluarkan pulsa.(2) Waktu tempuh merupakan hasil pencacahan counter dari saat gelombang ultrasonik dipancarkan hingga gelombang pantulnya diterima kembali oleh sensor ultrasonik. Pulsa ini akan berhenti pada saat gelombang pantul ultrasonik diterima.(1) Karena jarak pada penelitian ini direpresentasikan oleh lebar pulsa gelombang pantul.......... Selanjutnya mikrokontroler akan mengambil data pada PORT B..7 telah menerima gelombang pantul dari gelombang ultrasonik maka counter akan mulai mencacah lebar pulsa yang dipancarkan dari saat gelombang ultrasonik dipancarkan sampai diterima kembali..... Untuk menghitung jarak suatu benda kita dapat menggunakan rumus dasar di mana : Jarak = Cepat Rambat x Waktu Tempuh .4 cm/s. apabila dikonversikan ke cm menjadi 34442. Hasil pencacahan counter ini akan digunakan oleh mikrokontroler untuk perhitungan jarak permukaan cairan terhadap sensor ultrasonik.....

.....1135 8. Jadi untuk nilai level V dapat kita cari dengan rumusan : V= ((n*100)/40.1582 + 40 .......034442)/2) ...(5) Rumusan perhitungan di atas menghasilkan nilai jarak sensor terhadap permukaan cairan....0344424 cm/ µs.....78 dalam satuan µs sehinga menjadi 0... Diperlukan ...(3) Dengan rumusan di atas diperoleh nilai level cairan yang terbaca oleh sensor sebagai berikut : Tabel 9..... Sehingga apabila nilai jarak yang terbaca oleh sensor kita misalkan n..1158 6.. Nilai level terbaca sensor sebelum kalibrasi No 1 2 3 4 5 Nilai Level / V Penggaris (cm) 5 10 15 20 25 Nilai Terbaca oleh Sensor / n (cm) 2......................... Persentase nilai yang terbaca oleh sensor terhadap nilai yang terbaca oleh penggaris rata – rata sebesar : %= ( 40 .8838 ) = 40 ..1582 40...................9800 41...8838 Terlihat bahwa nilai yang terbaca oleh sensor berbeda dengan nilai seharusnya pada plant (yang terbaca dengan penggaris)..9800 + 41.6323 ........41 %... sehingga belum bisa menggambarkan hasil pembacaan level cairan sebenarnya..0493 4....9710 Persentase nilai terbaca terhadap nilai level (%) 40...3833 39......7563 40...(4) 5 Bila dibulatkan... maka : n=((counter*0............. maka persentase nilainya berada antara ± 40 % ..0767 9.........6323) ...7563 + 40 .... dengan kata lain besar nilai yang terbaca akan semakin besar seiring dengan pertambahan jarak antara sensor dengan permukaan cairan...3833 + 39 ......... Namun perubahan nilai yang terbaca oleh sensor sebanding dengan perubahan nilai level yang diinginkan (hasil pengukuran dengan penggaris) dan perubahannya linier.

.....79 satu nilai yang merupakan jarak antara sensor dengan titik 0 cm yang digunakan dalam penelitian ini.. Nilai ini tidak mutlak harus 34.... maka jarak sensor dengan dasar tangki terukur sebesar 37. apabila kita gunakan tipe data float pada deklarasi variabel.7 cm.. namun dapat berubah sesuai kebutuhan kalibrasi pada plant. apabila dipasang sensor... Dalam perhitungan nilai V tetap bisa kita pergunakan data float (desimal) agar data lebih akurat.....(6) Berikut listing sebagian program monitoring pada mikrokontroler. Titik 0 cm pada penelitian ini berada pada 3 cm dari dasar tangki..................... sehingga jarak antara sensor dengan titik 0 cm sebesar 37...7 cm. maka dapat dikatakan nilainya ±34.. Gambar 43..... Bisa saja bertambah ataupun berkurang..7 cm. Tinggi tangki sebesar 40 cm.7)-((n*100)/40)) . Sehingga rumusan nilai V untuk menghitung nilai level cairan menjadi : V= ((34.......7 cm........7 cm – 3 cm = 34...... Karena keterbatasan memory Atmega8535. maka program tidak akan bisa dicompile karena ukuran program melebihi memory program dari Atmega8535... interrupt [TIM1_OVF] void timer1_ovf_isr(void) { ... Error compiler CodevisioAVR untuk tipe data float Untuk itu kita gunakan tipe data integer untuk deklarasi variabelnya..

dasar 3. V= ((34. Untuk proses pengendalian. Pengendalian Pengendalian dilakukan dengan mengirimkan karakter alfabet ke mikrokontroler melalui komunikasi serial. sensor 37. PORTC. maka mikrokontroler akan memastikan nilai level yang diminta dan melakukan pengendalian. } delay_ms(300). tiap karakter alfabet mewakili satu nilai level cairan dari 0 sampai 25. //inisialisasi nilai setout=1. out=0.7)-((n*100)/40. Pengendalian Otomatis Pada pengendalian otomatis. Diagram alir dari . Tiap nilai level cairan mempunyai alur logika program yang sama untuk proses pengendalian. if(V<10) { printf("0%d". } //referansi tinggi tngk=40 //.034442)/2). } else if(V>=10) { printf("%d".80 //====================MONITORING================== TCNT1=255.V). n= ((counter*0. //Set as input out=1.V). //Set as output out=1. dibagi menjadi dua yaitu otomatis dan manual.7.0=PORTB.7 b. while (in==1) { counter++. Setelah menerima karakter yang dikirim. ± 34. delay_us(5).7.6323)). }. counter=0. 1. //Pullup diaktifkan while (in==0) { }. setout=0.

81 program pengendalian otomatis pada mikrokontroler adalah sebagai berikut. Gambar 44. Diagram alir program pengendalian .

4=0x00.i<50. PORTC.i<50.i<50. PORTC. } } while (V>=10) { for (i=1.i++) { tutup ().i<50.82 otomatis level cairan pada mikrokontroler ( dibuat menggunakan Dia 0. diam ().i++ ) { tutup ().i++ ) .4=0xFF. buang (). isi (). } } else if(V==10) { for (i=1.i<50. } } while (V<=10) { for (i=1. diam ().i++) { tutup ().4=0x00. } } else if(V<10) { while (V<10) { for (i=1. } break.i++) { buka (). if(rxtx=='k') { 'k'==10.4=0x00. PORTC. PORTC. if(V>10) { while (V>10) { for (i=1.97 ) Berikut sebagian sampel program untuk pengendalian level di mana level yang ditentukan adalah 10 cm.

Apabila nilai V kurang dari 10 cm. } } }. Jadi pada saat mikrokontroler menerima karakter tersebut maka mikrokontroler akan memastikan bahwa nilai level yang diminta bernilai 10 cm. maka mikrokontroler akan menjalankan fungsi tutup() servo untuk menutup kran air. karakter huruf k mewakili nilai level 10 cm. PORTC. diam (). PORTC. maka ketika V lebih besar dari 10 cm mikrokontroler akan menjalankan fungsi buka() servo untuk membuka kran air. Pada listing program di atas. sama dengan atau lebih kecil dari 10 cm. Apabila level yang terbaca lebih besar dari 10 cm.4 untuk relay pompa akan high untuk menghidupkan pompa . Selanjutnya mikrokontroler akan memeriksa apakah level cairan V yang sedang terbaca oleh sensor sekarang lebih besar. PORTC.4 untuk relay pompa akan low dan fungsi buang() sehingga lampu indikator hijau menyala.4=0x00. PORTC. maka ketika V kurang dari 10 cm mikrokontroler akan menjalankan fungsi tutup() servo untuk menutup kran air. } break.83 { tutup ().4 untuk relay pompa akan low dan fungsi diam() sehingga lampu indikator kuning akan menyala. Apabila level yang terbaca sama dengan 10 cm.4 untuk relay pompa akan low dan fungsi diam() untuk lampu undikator kuning. Ketika V lebih kecil sama dengan 10 cm mikrokontroler akan menjalankan fungsi tutup() servo untuk menutup kran air. PORTC.

maka pengguna dapat menambah atau mengurangi tinggi level cairan pada plant tanpa harus menentukan besar nilai set point. Dengan tiga tombol ini. Pengguna cukup memilih untuk mengisi atau mengurangi dan apabila sewaktu – waktu ingin menghentikannya dapat dilakukan dengan menekan tombol Stop. 2. Isi dan Stop.84 dan fungsi isi() sehingga lampu indikator merah akan menyala. Ketika V lebih besar sama dengan 10 cm mikrokontroler akan menjalankan fungsi tutup() servo untuk menutup kran air.4 untuk relay pompa akan low untuk menonaktifkan pompa dan fungsi diam() sehingga lampu indikator kuning akan menyala. Pengendalian Manual Pada pengendalian manual terdapat tiga buah tombol yaitu Buang. Berikut diagam alir program pengendalian level cairan secara manual : . PORTC.

85 Gambar 45. Diagram alir program pengendalian .

86 manual level cairan pada mikrokontroler ( dibuat menggunakan Dia 0. buang(). }. maka akan dikirimkan karakter huruf ‘B’ ke mikrokontroler melalui komunikasi USART.4=0x00. dan fungsi buang() untuk lampu indikator hijau.4=0xFF. PORTC. PORTC. if(rxtx=='C') { tutup (). isi (). Selanjutnya mikrokontroler akan menjalankan fungsi tutup() servo untuk menutup keran air. Pada program di atas. PORTC. terdapat 3 huruf yang masing – masing mewakili satu aksi. if(rxtx=='B') { buka ().4 untuk relay bernilai high dan fungsi isi() untuk lampu undikator merah. Dan apabila pengguna menghendaki untuk menghentikan proses pengisian . PORTC. diam (). }.4 untuk relay bernilai low. maka akan dikirimkan karakter huruf ‘A’ ke mikrokontroler melalui komunikasi USART. Apabila pengguna menekan tombol Isi. Huruf ‘A’ untuk Isi. PORTC. Kemudian apabila pengguna menekan tombol Buang. Mikrokontroler akan menjalankan fungsi buka() servo untuk membuka keran air. dan huruf ‘C’ untuk Stop.97 ) Berikut sebagian sampel program untuk pengendalian level cairan secara manual : if(rxtx=='A') { tutup (). huruf ‘B’ untuk Buang. }.4=0x00.

. PORTC.87 atau pengurangan level cairan. Pada saat program ini dijalankan pada plant. seharusnya mikrokontroler akan menjalankan fungsi tutup() servo. Dan mulai dari saat rentang for berjalan sampai seterusnya apabila kita mengirimkan karakter ‘C’. ternyata hasilnya tidak seperti yang diharapkan. PORTC. Dengan diterimanya input berupa karakter ‘B’ maka mikrokontroler akan menjalankan fungsi buka() servo. Dengan menekan tombol buang berarti mikrokontroler akan menerima data USART berupa karakter ‘B’.4 bernilai low dan indikator lampu kuning akan menyala. Kemudian apabila ditekan tombol stop. dan fungsi diam() untuk lampu indikator kuning. maka dengan menekan tombol Stop akan dikirimkan karakter huruf ’C’ ke mikrokontroler. Selanjutnya mikrokontroler akan menjalankan fungsi tutup() servo untuk menutup keran air.i<50.i++). Hal ini terjadi pada saat pengguna menekan tombol buang dan kemudian setelah beberapa lama bermaksud untuk menghentikan proses buang dengan menekan tombol stop.4 bernilai low. setelah lewat dari perulangan for maka servo akan berhenti (tidak ada pergerakan). rutin program stop tidak akan berjalan. motor servo tidak mau menutup keran. Jadi servo akan bergerak ke kiri untuk membuka keran air hanya selama rentang waktu yang diberikan pada for (i=1. dan fungsi buang() akan aktif untuk menyalakan lampu indikator berwarna hijau. rutin program stop tidak berjalan walaupun mikrokontroler telah menerima input karakter huruf ‘C’. Dengan kata lain. PORTC.4 untuk relay bernilai low. Namun pada prakteknya saat pengguna menekan tombol stop.

x++. delay_ms(2900). if (x>=pwmKi_val) { pwm=0. if (x>=pwmKa_val) { pwm=0. }. pwmKa_val = 0x00. } }. pwmKa_val = 0x00. pwmKi_val = 0x00. 1<x<100. pwmKi_val = 0x00. } . Berikut program interrupt timer 0 untuk PWM: interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TCNT0 = 0x00. pwmKi_val = 0x20. } //================================================= //==========FUNGSI BUKA SERVO======================== void buka (void){ pwmKa_val = 0x20. Fungsi buka() dan tutup() servo mengalami perubahan sebagai berikut: //=========FUNGSI TUTUP SERVO========================= void tutup (void){ pwmKa_val = 0x80. pwmKi_val = 0x80.88 Penulis mencoba menggunakan PWM untuk menggerakkan motor servo. } else { pwm=1. delay_ms(80). sehingga tidak mengganggu rutin program yang lain. } else { pwm=1. PWM sendiri dibangkitkan dari interrupt timer 0.

4=0xFF. Dengan modifikasi program ini.4=0x00) berhasil dijalankan . buang (). } if(rxtx=='B') { buka (). PORTC. Kedua timer dapat dijalankan tanpa mengganggu satu sama lain.4=0x00. isi (). } if(rxtx=='C') { tutup (). PORTC. dan PORTC.89 Sedangkan pada listing program pengendalian level cairan secara manual. Inisialisasi dan pengaturan dua buah timer ini terletak pada Timer / Counter Interrupt Mask Register (TIMSK). Dengan kata lain pada saat karakter huruf ‘C’ dikirimkan ke mikrokontroler. Berikut gambar TIMSK : . PORTC. motor servo berhasil bergerak ke kanan untuk menutup keran. dan apabila tombol stop ditekan. perulangan for dihilangkan. motor servo dapat bergerak ke kiri untuk membuka keran air. diam (). } Dengan menggunakan program di atas.4=0x00. berarti penulis mengunakan dua buah interrupt timer overflow yaitu timer 0 dan timer 1. sehingga menjadi: if(rxtx=='A') { tutup (). rutin program stop (fungsi tutup(). fungsi diam().

Timer / Counter Interrupt Mask Register (TIMSK) mikrokontroler Atmega8535 (A. nilai tersebut menjadi 0x05. Dalam bilangan heksadesimal. MCUCSR=0x00. Mikrokontroler Atmega8/16/32/8535 Dan Pemrogramannya dengan Bahasa C pada WinAVR. Agar kedua timer ini dapat berjalan. UCSRC=0x86. dengan kata lain kedua bit ini harus bernilai 1.90 Gambar 46. TIMSK=0x05. UBRRL=0x19. UCSRA=0x00. kita tuliskan nilai TIMSK sebesar 0x05. 2008) Pada register ini. Winoto. Sehingga pada listing program. UBRRH=0x00. TOIE sendiri disebut sebagai bit pengaktif interupsi timer/counter. Sehingga bila dituliskan dalam bilangan biner menjadi 00000101 yang bernilai 5. maka bit 0 dan bit 2 harus diaktifkan. timer 0 terletak pada bit 0 dengan nama TOIE0 dan timer 1 terletak pada bit 2 dengan nama TOIE1. Berikut sebagian program untuk TIMSK: MCUCR=0x00. UCSRB=0x08. >>>>> Timer / Counter Interrupt Mask Register .

You're Reading a Free Preview

Download
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->