BAB III PERANCANGAN SISTEM
3.1.
Gambaran Umum Pada bab ini akan membahas mengenai langkah - langkah perancangan sistem pebuatan kontrol fluida yang meliputi perancangan perangkat keras atau hardware dan perancangan perangkat lunak atau software. Perancangan perangkat keras meliputi perancangan sistem secara keseluruhan, dari awal perancangan pembuatan rangkaian menggunakan software Eagle, sampai perancangan PCB dan peletakan komponen pada papan PCB. Perancangan perangkat lunak meliputi pembuatan software yang dirancang dengan menggunakan bahasa pemrograman C yang telah disederhanakan oleh Arduino. Secara fungsi, konfigurasi sistem kontrol fluida ini terdiri dari input dan output. Dalam perancangan ini, input terdiri dari sebuah potensiometer yang berfungsi sebagai sensor pendeteksi level fluida. Pada bagian output terdiri dari sebuah motor listrik, LCD sebagai penampil informasi level fluida, buzzer sebagai indikator error dan LED sebagai indikator error dan sistem secara keseluruhan.
47
48
3.2.
Diagram Blok Rangkaian Secara garis besar, perancangan sistem kontrol ini ditunjukan seperti pada diagram blok dibawah ini :
Gambar 3.1 Diagram Blok Sistem
Pada diagram blok diatas, terlihat bahwa Adriano berfungsi sebagai penghubung yang menjembatani antara input dan output dari sistem. Arduino juga berfungsi sebagai otak pengendali dalam perancangan sistem diatas yang didalamnya tertanam mikrokontroler ATmega 328.
49
3.3.
Perancangan Perangkat Keras Perancangan perangkat keras atau hardware ini dirancang sebelum dilakukan perancangan perangkat lunak atau software, karena perancangan software tidak dapat dilakukan sebelum perancangan hardware selesai dibuat. Gambar dibawah ini menunjukan tahapan - tahapan yang dilakukan dalam perancangan hardware :
50
Gambar 3.2 Flowchart perancangan Hardware
51
3.3.1. Rangkaian Arduino Duemilanove Rangkaian dibawah ini menunjukan sebuah rangkaian sistem minimum dari Arduino Duemilanove :
Gambar 3.3 Rangkaian Arduino Duemilanove Arduino Duemilanove menggunakan mikrokontroler ATmega328 dan memiliki 14 input output dan 6 input analog (dimana 6 dapat digunakan
52
sebagai output PWM), 6 input analog, 16 MHz osilator kristal, koneksi USB, jack power, ICSP header, dan tombol reset. Arduino duemilanove berisi feature - feature yang diperlukan untuk mendukung mikrokontroler, antara lain yaitu :
Microcontroller ATmega328
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output); Analog Input Pins 6
DC Current per I/O Pin 40 mA; DC Current for 3.3V Pin 50 mA
Flash Memory 32 KB (2 KB is used by bootloader)
SRAM 2 KB
EEPROM 1 KB
Sumber tegangan untuk Arduino Duemilanove dapat diaktifkan melalui koneksi USB atau dengan catu daya eksternal. Sumber daya dipilih secara otomatis. eksternal (non - USB) daya dapat berasal baik dari AC ke adaptor DC atau baterai. Arduino dapat beroperasi dengan pasokan tegangan eksternal 6 sampai dengan 20V. Apa bila diberikan tegangan kurang dari 7V, jika diukur tegangan pada pin 5V kemungkinan akan kurang dari 5V dan dapat menyebabkan board arduino tidak stabil. Jika menggunakan lebih dari
53
12V, regulator tegangan bisa panas dan merusak board arduino. kisaran yang disarankan adalah 7 sampai 12 volt.
3.3.2.
Rangkaian Power Supply Rangkaian ini digunakan sebagai suplay tegangan kesemua rangkaian. rangkaian power supply ditunjukan seperti pada gambar dibawah ini :
Gambar 3.4 Power Supply 12V
Gambar diatas menunjukan sebuah rangkaian power supply 12V. Travo CT adalah travo step down 2A yang berfungsi untuk menurunkan tegangan 220VAC ke 15VAC. Keluaran 15VAC kemudian disearahkan oleh 2 buah Dioda. Selanjutnya tegangan 12VDC akan diratakan oleh kapasitor
54
3000µF, sehingga tegangannya menjadi 15VDC. IC 7812 berfungsi untuk menurunkan tegangan dari tegangan 15VDC menjadi 12VDC. Setelah tegangan diturunkan, lalu dikuatkan lagi oleh sebuah kapasitor C2. Sebuah LED dipasang sebagai indikator output pada power supply.
3.3.3. Rangkaian Kontrol Motor Prinsip kerja dari motor AC pada rangkaian ini adalah menyesuaikan dengan keadaan level fluida pada tangki. Jika level dalam tangki telah menunjukan keadaan minimal, maka motor AC akan bekerja dan mengalirkan fluida dari tangki utama kedalam tangki penampung dan motor akan mati jika level dalam tangki penampung menunjukan kondisi maksimal sesuai dengan nilai yang telah ditentukan dalam program. Dibawah ini adalah ganbar dari rangkaian kontrol motor AC :
Gambar 3.5 Rangkaian Kontrol Motor AC
55
Prinsip kerja dari rangkaian
ini adalah ketika
logika dari
mikrokontroler berlogika high, maka tegangan 5V akan mengalir melewati resistor R5 dan menghidupakn LED indikator. Tegangan 5V juga akan mengalir melewati R1 untuk diturunkan dan akan diterima LED didalam MOC. Ketika led didalam MOC menyala, cahaya akan diterima oleh rangkaian yang berbentuk seperti triac dan akan mengaktifkannya. Tegangan yang masih dalam bentuk tegangan DC akan melewati R2 dan R3. Sebagian tegangan akan melewati gate dan mengaktifkan triac QT4004LT. MOC juga berfungsi sebagai pembatas tegangan AC. Saat TRIAC telah aktif, arus AC akan mengalir melewati TRIAC untuk menghubungkan ke beban. Fungsi R4 dan C1 adalah sebagai pengaman beban.
3.3.4. Rangkaian Buzzer Sebuah buzzer dipasang sebagai langkah antisipasi jika terdapat kerusakan atau error pada potensiometer, pelampung, pembeban, dan pada motor. buzzer yang berbunyi bisa mengindikasikan 2 buah keadaan : Keadaan pertama yaitu jika buzzer berbunyi dengan nada panjang dan secara terus menerus. bunyi nada buzzer seperti ini mengindikasikan bahwa terjadi kerusakan pada motor pompa, atau bisa juga kerusakan terjadi pada rangkaian kontrol dan mikrokontroler yang menyebabkan motor tidak mau berputar atau mengisi tangki fluida. Kondisi seperti ini
56
terjadi pada saat level fluida berada pada kondisi yang melebihi batas minimal dari batas yang telah ditentukan. Keadaan kedua yaitu jika buzzer berbunyi dengan nada terputus - putus. Bunyi nada buzzer seperti ini mengindikasikan terjadinya kerusakan atau error yang berhubungan dengan katrol, pelampung, pembeban, atau bisa juga terjadi karena kerusakan pada rangkaian kontrol dan mikrokontroler yang menyebabkan motor tidak mau berhenti bekerja. Kondisi seperti ini terjadi pada saat level fluida berada pada kondisi yang melebihi batas maksimal dari batas yang telah ditentukan. Setiap terjadi error dari kedua kemungkinan diatas, akan selalu dibarengi dengan menyalanya LED merah yang berada pada rangkaian kontrol. Berikut ini adalah gambar dari rangkaian buzzer :
Gambar 3.6 Rangkaian Buzzer
57
Rangkaian diatas terdiri dari 2 buah komponen aktif, yaitu transistor NPN yang dipasang secara darlington atau seri. Jika port 9 mendapatkan logika high, tegangan 5V akan melewati R7 untuk mengaktifkan led. Tegangan yang lain akan mengaktifkan transistor T3 melewati R6. karena transistor T3 mendapatkan bias pada basisnya, maka transistor akan aktif yang juga akan mengaktifkan transistor T4. Transistor T3 dan T4 berfungsi sebagai switch dengan penguatan yang tinggi. Dengan aktifnya kedua transistor tersebut, maka arus akan melewati buzzer dan mengaktifkannya.
3.3.5. Potensiometer Potensiometer digunakan sebagai sensor yang akan mendeteksi keadaan level fluida pada tangki atau bak penampung. Potensiometer akan membaca level fluida dalam besaran volt, kemudian besaran tersebut akan dikonversi kedalam besaran volume yang selanjutnya akan ditampilkan kedalam LCD. Simulasi untuk potensiometer ini dilakukan dengan cara menempatkan potensiometer diatas tangki yang akan diukur levelnya. dengan posisi mendatar dan diberikan penyangga atau dudukan agar potensiometer dapat berdiri tegak. lalu pada ujung potensiometer yang berputar, diberilah sebuah katrol yang satu ujung dari katrol tersebut akan diberikan pelampung dan masuk kedalam fluida, dan ujung yang lain akan diberikan pembeban sebagai
58
penyeimbang pelampung. Sehingga saat level fluida berubah, pelampung dan pembeban akan naik dan turun sesuai keadaan atau perubahan yang terjadi pada fluida tersebut. gambar dibawah ini memperlihatkan sebuah ilustrasi dari sensor pelampung :
Gambar 3.7 Ilustrasi Sensor Pelampung
Pada saat potensiometer berputar, maka akan terjadi perubahan resistansi pada kaki potensiometer tersebut. Perubahan resistensi inilah yang akan menyebabkan terjadinya perubahan tegangan. Tahanan atau resistansi pada potensiometer berbanding terbalik dengan tegangannya. Jika resistansi
59
membesar, maka akan menahan tegangan sehingga tegangan akan menjadi kecil, dan tegangan akan dilewatkan atau semakin besar pada saat resistansi mengecil. Tegangan ini akan dikonversi kedalam besaran volume dan kemudian akan ditampilkan kedalam LCD yang menunjukan volume dari tangki fluida tersebut. Keadaan atau perubahan level pada tangki diasumsikan karena adanya pemakaian fluida oleh mesin atau beban.
3.3.6. Rangkaian LCD LCD digunakan sebagai output atau penampil informasi yang menunjukan suatu nilai atau besaran dari besaran yang diukur dari suatu sistem yang dibuat. Dalam hal ini, LCD digunakan untuk menampilkan volume dari sebuah tangki atau bak penampung fluida. Sebuah rangkaian LCD ditunjukan pada gambar dibawah ini :
Gambar 3.8 Rangkaian LCD
60
Rangkaian diatas menunjukan sebuah rangkaian LCD yang akan terhubung dengan Adriano Duemilanove. sebuah resistor 1KΩ yang berfungsi untuk cerah tampilan pada LCD. 3.4.
Perancangan Perangkat Lunak Perangkat lunak yang direncanakan adalah perangkat lunak untuk mendukung perangkat keras. Perangkat lunak berisi program-program yang akan digunakan untuk memberikan sejumlah perintah yang akan dieksekusi oleh mikrokontroler. Flowchart dibawah ini menunjukan tahapan – tahapan dalam perancangan software system :
61
Gambar 3.9 Flowchart Perancangan Software Sebuah perangkat lunak akan dapat bekerja dengan baik jika sejumlah perintah yang diberikan mikrokontroler dapat dieksekusi dengan baik sesuai dengan perintah program yang diberikan. Sebuah sistem perangkat lunak sangat erat kaitannya dengan perangkat keras.perangkat lunak tanpa adanya perangkat keras, maka program tidak bisa dijalankan. Demikian juga sebaliknya, perangkat keras tanpa didukung oleh perangkat lunak, akan seperti benda mati yang tidak berfungsi. Maka, antara perangkat lunak dan perangkat keras harus sinkron, sehingga sistem dapat bekerja dengan baik. Pada gambar dibawah ini menunjukan flowcart dari keseluruhan sistem :
62
Gambar 3.10 Flowchart Sistem
63
Perancangan perangkat lunak merupakan perancangan algoritma program untuk merealisasikan algoritma - algoritma pada sistem perancangan ini. Dari gambar flowcart diatas, maka dapat ditentukan algoritma untuk masing - masing elemen. yang meliputi algaritma sensor atau potensiometer, alogaritma arduino, dan algaritma buzzer.
3.4.1. Algoritma Sensor Algoritma sensor menerangkan secara sederhana tentang cara kerja sensor berdasarkan program yang telah dibuat. Pada perancangan ini terdapat sebuah potensiometer, yaitu komponen yang berfungsi sebagai sensor, dimana ia akan mendeteksi keadaan level dari fluida. Dengan bertambah dan berkurangnya level fluida dikarenakan pengisian fluida dan pemakaian oleh beban, maka kondisi ini akan menyebabkan pembeban dan pelampung bergerak naik dan turun sesuai dengan pergerakan naik dan turunnya fluida. Keadaan ini akan menyebabkan berputarnya katrol dan petensiometer. akibatnya akan terjadi perubahan tegangan pada kaki potensiometer. perubahan tegangan ini akan dimanfaatkan dan dirubah kedalam besaran volume untuk ditampilkan kedalam LCD. Berikut ini adalah flowchart dari sistem kerja sensor :
64
START
INISIALISASI PROGRAM DAN BACA TANGKI
KONVERSI BIT KE ML
LCD
Gambar 3.11 Flowchart sistem kerja sensor
Sensor akan menginisialisasi program dan melakukan pembacaan secara terus menerus pada level fluida, yang kemudian data yang diperoleh akan ditampilkan pada LCD. Nilai potensiometer selalu berubah setiap saat mengikuti perubahan yang terjadi pada level fluida. Setiap perubahan yang terjadi pada potensiometer akan diubah menjadi besaran ml (mili liter). Potongan program dibawah ini adalah merupakan listing program dari sensor dan LCD :
65
#include
#include <stdio.h> #include <string.h>
const int pinSensor = 0;
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);
void setup() { // set up the LCD's number of rows and columns: lcd.begin(16, 2); }
char bufferLcd [32]; char *string; static boolean flag; int x; int len;
void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0):
setDisplay (); if (mapSensor () > 510) { flag = true; lcdClear (); setWarning ("FLUIDA OVER "); } else {
66
lcdClear (); setWarning ("FLUIDA PENUH"); setDisplay (); }
if (mapSensor () <= 200) { for (;;) { setDisplay ();
if ( x == 1 || x == 0 || x == 3) { x = 2; lcdClear (); setWarning ("MENGISI FLUIDA"); }
/************************************************/ if (mapSensor () < 180) { if (x == 0 || x == 2 || x == 1) { x = 3; lcdClear (); setWarning ("POMPA ERROR"); delay (100); } } if (mapSensor () > 230 && mapSensor () < 240) //if (x == 0) { //lcdClear (); // x = 1; //}
67
if (mapSensor () > 500) { flag = false ; if (x == 0 || x == 2 || x == 3) { lcdClear (); setWarning ("FLUIDA PENUH "); x = 1; } break; } }; /*****************************************/ } delay (50); }
void lcdPrint (char *str) { lcd.print (str); }
void lcdClear (void) { lcd.clear (); }
void lcdGotoXy (int x, int y) { lcd.setCursor (x, y); }
unsigned int bacaSensor (void) { static int z; z = map (analogRead (pinSensor), 0, 1024, 0, 255);
68
return z; }
unsigned int mapSensor (void) { static unsigned int z; z = map (bacaSensor (), 0, 260, 710, 0); return z; }
void setWarning (char *str) { lcdClear (); lcdGotoXy (0, 1); lcdPrint (str); }
void setDisplay (void) { snprintf (bufferLcd, sizeof (bufferLcd), "Level : %3d mL", mapSensor ()); //string = bufferLcd ; // if ((len = strlen (bufferLcd)) > 3) // lcdClear (); lcdGotoXy (0, 0); lcdPrint (bufferLcd);
}
Listing program diatas terdiri dari listing program sensor atau potensiometer dan LCD, karena mengingat begitu eratnya hubungan antara sensor dengan LCD. Dalam hal ini, LCD berfungsi sebagai output atau
69
penampil informasi dari sensor yang terlebihdahulu akan diproses oleh Arduino.
3.4.2. Alogaritma Buzzer Pada level tertentu yang telah ditentukan didalam program, buzzer akan berbunyi sebagai indikasi error. Seperti telah dibahas sebelumnya, bahwa terdapat 2 kemungkinan atau keadaan dimana buzzer akan bekerja. Keadaan pertama yaitu jika tangki penampung mengindikasikan level yang terlalu penuh melebihi batas maksimal kemampuan tangki menampung. keadaan tersebut diilustrasikan dalam flowchart dibawah ini :
Gambar 3.12 Flowchart Buzzer Atas
Keadaan diatas adalah keadaan dimana buzzer berbunyi dengan nada terputus jika level pada tangki penampung melebihi batas maksimal yang telah
ditentukan.
Keadaan
kedua
yaitu
jika
tangki
penampung
70
mengindikasikan level yang melewati batas minimal tangki menampung fluida. Keadaan tersebut diilustrasikan dalam flowchart dibawah ini :
Gambar 3.13 Flowchart Buzzer Bawah
Keadaan diatas menunjukan keadaan dimana buzzer berbunyi dengan nada panjang secara terus menerus jika level pada tangki penampung melwati batas minimal yang telah ditentukan. Pada saat fluida berada pada level 510ml atau lebih dan kurang dari 180ml, maka mikrokontroler akan memberikan logika high pada port 9 yang merupakan port untuk buzzer. Jika port 9 mendapatkan logika high, maka ia akan mengalirkan tegangan kurang lebih 5volt yang akan diteruskan ke rangkaian buzzer, sehingga buzzer akan bekerja. Listing program dibawah ini memperlihatkan listing program dari buzzer :
71
#include #include <stdio.h> #include <string.h>
const int pinBuzzer = 9; const int pinSensor = 0;
void setup() { // set up the LCD's number of rows and columns: pinMode (pinBuzzer, OUTPUT); }
char bufferLcd [32]; char *string; static boolean flag; int x;
void loop() { // set the cursor to column 0, line 1 // (note: line 1 is the second row, since counting begins with 0): if (mapSensor () > 510) { setBuzzer (HIGH); delay (500); setBuzzer (LOW); delay (200); flag = true; }
//Batas atas
if (mapSensor () <= 180) { setBuzzer (HIGH);
72
}
//Batas bawah
else { setBuzzer (LOW); } }; void setBuzzer (const int state) { digitalWrite (pinBuzzer, state); }
unsigned int bacaSensor (void) { static int z; z = map (analogRead (pinSensor), 0, 1024, 0, 255); return z; }
unsigned int mapSensor (void) { static unsigned int z; z = map (bacaSensor (), 0, 260, 710, 0); return z; }
Pada listing program diatas terlihat bahwa batas untuk buzzer atas adalah pada level diatas 510ml. jika level melebihi 510ml, maka buzzer akan bekerja sebagai indikator error pada level atas. sedangkan batas untuk buzzer bawah adalah pada level diatas 180ml. jika level melewati batas ini, maka buzzer akan bekerja sebagai indikator error pada batas bawah.