• Tidak ada hasil yang ditemukan

BAB III PERANCANGAN ALAT DAN PROGRAM

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB III PERANCANGAN ALAT DAN PROGRAM"

Copied!
27
0
0

Teks penuh

(1)

29

BAB III

PERANCANGAN ALAT DAN PROGRAM

Pada bab ini akan dijelaskan tentang perancangan “ Alat Simulasi Water Flow meter Digital Menggunakan Aduino” secara umum alat ini terdiri dari 2 bagian. Bagian pertama yaitu perancangan perangkat keras dan bagian kedua perancangan perangkat lunak. Perangkat keras terdiri dari Arduino Duemilanove, Sensor Water Flow Meter G1/2, Lcd (lyquid crystal digital) Keypad Shield, Power Suplay dan perangkat pendukung lainya. Perangkat lunak yang digunakan adalah pemrograman menggunakan Arduino IDE(Integrated Development Environment).

3.1 Blok Diagram Rangkaian

Gambar 3.1 Diagram Blok Simulasi Water Flow meter Digital Menggunakan Aduino

Media (air)

Water Flow Sensor G1/2

(2)

Dari diagram blok diatas dpat dijelaskan bahwa yang pertma adlah media air, air ini adalah media yang diukur oleh sensor water flow meter dan air itu masuk kedalam sensor. Setelah air masuk dan dibaca oleh sensor dan di masukan dalam arduino untuk diproses didalamnya dan akan ditampilkan pa lcd (lyquid crystal dispaly) keypad shield.

Gambar 3.2 flow chart Simulasi Water Flow meter Digital Menggunakan Aduino

Start

Pembacaan media oleh sensor

Pengolahan data oleh arduino

Ditampilkan pada LCD

(3)

Dari gambar flow chart diatas dapat dijelaskan bahwa pertama yang dimulai adalah start, start meliputi menyalakan alat dan menancapkan power, setelah itu media akan melewati sensor dan akan dibaca oleh sensor dan akan diolah dalam arduino, setelah diolah pada arduino akan ditampilkan pada lcd (lyquid crystal dispaly) apa yang telah terbaca oleh sensor. Tampilan pada lcd (lyquid crystal dispaly) bersifat kontinyu karena pembacaan dari sensor yang akan berubah setiap satu detik.

3.2 Realisasi Rangkaian

Langkah berikutnya adalah merealisasikan rangkaian setiap blok, Rangkaian-rangkaian yang akan dibuat yaitu :

 Rangkaian Sensor dengan Arduino

 Aplikasi program pad Lcd (lyquid crystal digital) Keypad Shield

 Aplikasi program Arduino IDE (Integrated Development Environment)

3.2.1 Rangkaian Sensor Water Flow Meter

Gambar 3.3 Wiring diagram sensor water flow meter

Dari gambar wiring diatas dapat dijelaskan ada tiga jalur pada sensor water flow meter, yang pertama warna black merupakan ground pada sensor water flow meter yang dihubungkan pada ground pada arduino, kedua warna yellow merupakan jalur sinyal yang telah terbaca

(4)

pada sensor dan diteruskan pada arduino untuk diolah dalam arduino dan dihubungkan pada pin 2 digital pada board arduino, jalur yellow juga dicatu pada resistor 10K ohm, ketiga warna red merupakan jalur tegangan pada sensor water flow meter dan dihubunkan pada board arduino pada pin 5V , jalur red juga dicatu pada resistor 10K ohm

Gambar 3.4 sensor water flow meter terhubung dengan arduino

Sensor ini mempunyai desain yang bagus dan kecil tetapi mempunyai kemampuan yang dapat diandalkan. Bekerja pada tegangan 5V-24V dan hanya mempunyai berat 43 g, sensor ini dapat bertahan pada tekanan 1,2 Mpa dan juga dapat bertahan pada suhu sampai 80 derajat

(5)

celcius. Pulsa frekuensi yang dihasilkan adalah 7,5 Hz Q ( satuan liter per menit) dan mempunyai akurasi yang tinggi.

Gambar 3.5 Bagiian-bagian Sensor water flow meter

1. Valve body berbahan fiber glass

2. Stainless steel bead berbahan stainless steel 304 3. Axis berbahan stainless steel 304

4. Impeller berbahan POM 5. Ring magnet berbahan Ferrite 6. Middle ring berbahan fiber glass 7. O-seal ring berbahan Rubber

8. Electronic seal ring berbahan Rubber 9. Cover berbahan fiber glass

(6)

11. Cable berbahan 1007 24AWG

3.2.1.1 Cara kerja Sensor Water flow Meter

Sensor Hall-effect adalah sebuah transducer yang output teganganya bervariasi dalam menanggapi medan magnet. Sensor Hall-effect digunakan untuk switching jarak, posisi, deteksi kecepatan, dan aplikasi penginderaan.

Dalam bentuk yang paling sederhana, sensor beroperasi sebagai transduser analog, langsung kembali ke tegangan. Dengan medan magnet diketahui, jarak dari pelat Aula dapat ditentukan. Menggunakan kelompok sensor, posisi relatif dari magnet dapat disimpulkan.

Listrik dilakukan melalui konduktor akan menghasilkan medan magnet yang bervariasi dengan saat ini, dan sensor Hall-effect dapat digunakan untuk mengukur arus tanpa mengganggu sirkuit. Biasanya, sensor terintegrasi dengan inti luka atau magnet permanen yang mengelilingi konduktor yang akan diukur.

Sensor Hall-effect pada sensor Water Flow Meter akan bekerja saat ada aliran air yang melalui rotor dan dan akan mengirimkan tegangan atau sinyal pada board Arduino dan akan dieksekusi sehingga akan ditampilkan pada layar Lcd.

(7)

Gambar 3.6 Cara kerja sensor Water flow meter

Dari gambar diatas dapat dijelaskan bahwa rotor akan berputar dan akan memotong gris-garis medan magnet ini yang disebut Hall effect sensor.

3.2.2 Lcd (Liquid Crystal Display) Keypad Shield 16x2

Setelah program water flow meter dibuat maka perlu ditampilakan pada lcd(lyquid crystal dispaly)keypad shield. Lcd (lyquid crystal display) keypad shield berfungsi sebagai display apa yang telah terbaca pada sensor. Lcd(lyquid crystal display) keypad shield sangat mudah digunakan karena lcd (lyquid crystal dispaly) ini sudah terdapat soket yang bisa ditancapkan langsung pada board arduino.

(8)

3.7 Lcd (lyquid crystal display) Keypad Shield 16x2

Pada gambar diatas dapat dilihat bahwa Lcd (Liquid Crystal Display) keypad shield dirancang untuk arduino. Kelebihan lcd (lyquid crystal dispaly) ini pengguna tidak perlu lagi melakukan perakitan terhadap papan arduino karena lcd ini bisa langsung dipasang pada arduino. Tombol Select, left, up, down dan right berfungsi untuk melihat tampilan yang lain pada Lcd (lyquid crystal

(9)

dispaly) sesuai dengan program yang telah tersimpan. Berikut ini contoh program dari lcd(lyquid crystal display) keypad shield lybrary.

//Sample using LiquidCrystal library #include <LiquidCrystal.h>

/*******************************************************

This program will test the LCD panel and the buttons Mark Bramwell, July 2010

********************************************************/

// select the pins used on the LCD panel LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

// define some values used by the panel and buttons

int lcd_key = 0; int adc_key_in = 0; #define btnRIGHT 0 #define btnUP 1 #define btnDOWN 2 #define btnLEFT 3 #define btnSELECT 4 #define btnNONE 5

// read the buttons

int read_LCD_buttons()

(10)

adc_key_in = analogRead(0); // read the value from the sensor

// my buttons when read are centered at these valies: 0, 144, 329, 504, 741

// we add approx 50 to those values and check to see if we are close

if (adc_key_in > 1000) return btnNONE; // We make this the 1st

option for speed reasons since it will be the most likely result

if (adc_key_in < 50) return btnRIGHT;

if (adc_key_in < 195) return btnUP;

if (adc_key_in < 380) return btnDOWN;

if (adc_key_in < 555) return btnLEFT;

if (adc_key_in < 790) return btnSELECT;

return btnNONE; // when all others fail, return this...

}

void setup()

{

lcd.begin(16, 2); // start the library lcd.setCursor(0,0);

lcd.print("Push the buttons"); // print a simple message }

void loop()

{

lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over

lcd.print(millis()/1000); // display seconds elapsed since power-up

(11)

lcd.setCursor(0,1); // move to the begining of the second line

lcd_key = read_LCD_buttons(); // read the buttons

switch (lcd_key) // depending on which button

was pushed, we perform an action { case btnRIGHT: { lcd.print("RIGHT "); break; } case btnLEFT: { lcd.print("LEFT "); break; } case btnUP: { lcd.print("UP "); break; } case btnDOWN: { lcd.print("DOWN "); break; } case btnSELECT:

(12)

{ lcd.print("SELECT"); break; } case btnNONE: { lcd.print("NONE "); break; } } }

Dari contoh program lcd (lyquid crystal display) keypad shield maka bisa dijelaskan sebagai berikut:

//Sample using LiquidCrystal library #include <LiquidCrystal.h>

Dalam program lcd (lyquid crystal display) keypad shield ini adalah lybrary untuk sebuah display lcd (lyquid crystal display) yang telah ada dalam program untuk fungsi daripada lyquidcrystal.

This program will test the LCD panel and the buttons Mark Bramwell, July 2010

Dalam program tidak didefinisikan sebagai fungsi melainkan hanya sebagai tanda pembuatan dan dicantumkan tanggal dan tahun pembuatan program.

// select the pins used on the LCD panel LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

(13)

Angka 8, 9, 4, 5, 6, 7 merupakan alokasi dari pin pada lcd (lyquid crystal display) yang akan digunakan sebagai in dan out pada arduino.

// define some values used by the panel and buttons

int lcd_key = 0; int adc_key_in = 0; #define btnRIGHT 0 #define btnUP 1 #define btnDOWN 2 #define btnLEFT 3 #define btnSELECT 4 #define btnNONE 5

Merupakan identifikasi dari keypad lcd (lyquid crystal display) agar keypad dapat berfungsi dalam sebuah program dan keypad bisa digunakan.

// read the buttons

int read_LCD_buttons()

{

adc_key_in = analogRead(0); // read the value from the sensor

// my buttons when read are centered at these valies: 0, 144, 329, 504, 741

// we add approx 50 to those values and check to see if we are close

if (adc_key_in > 1000) return btnNONE; // We make this the 1st

option for speed reasons since it will be the most likely result

if (adc_key_in < 50) return btnRIGHT;

if (adc_key_in < 195) return btnUP;

if (adc_key_in < 380) return btnDOWN;

(14)

if (adc_key_in < 790) return btnSELECT;

return btnNONE; // when all others fail, return this...

}

Ini merupakan fungsi dari pembacaan keypad lcd (lyquid crystal display) apabila tombol ditekan maka fungsi ini akan tereksekusi dan akan ditampilkan pada display lcd (lyquid crystal display).

void setup()

{

lcd.begin(16, 2); // start the library lcd.setCursor(0,0);

lcd.print("Push the buttons"); // print a simple message }

Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan.

void loop()

{

lcd.setCursor(9,1); // move cursor to second line "1" and 9 spaces over

lcd.print(millis()/1000); // display seconds elapsed since power-up

lcd.setCursor(0,1); // move to the begining of the second line

lcd_key = read_LCD_buttons(); // read the buttons

(15)

switch (lcd_key) // depending on which button was pushed, we perform an action

{ case btnRIGHT: { lcd.print("RIGHT "); break; } case btnLEFT: { lcd.print("LEFT "); break; } case btnUP: { lcd.print("UP "); break; } case btnDOWN: { lcd.print("DOWN "); break; } case btnSELECT: { lcd.print("SELECT"); break; } case btnNONE: {

(16)

lcd.print("NONE "); break; } } }

Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop().

3.2.3 Aplikasi Program Arduino IDE (Integrated Development Environment)

Setelah proses rangkaian selesai dibuat langkah selanjutnya adalah membuat program pada apliaksi program arduino IDE (Integrated Development Environment). Buka program aplikasi arduino IDE kemudian bentuk tampilan kerja aplikasi arduino IDE Sketch terlihat seperti gambar.

(17)
(18)

Dari gambar diatas merupakan program dari sensor water flow meter yang telah ditampilkan pada lcd (lyquid crystal dispaly) keypad shield. Dari program diatas dapat dijelaskan sebagai berikut:

“ #include <LiquidCrystal.h> “

Dalam program lcd(lyquid crystal dispaly) keypad shield ini adalah lybrary untuk sebuah display lcd (lyquid crystal dispaly) yang telah ada dalam program untuk fungsi daripada lyquidcrystal.

// select the pins used on the LCD panel LiquidCrystal lcd(8, 9, 4, 5, 6, 7); “

Angka 8, 9, 4, 5, 6, 7 merupakan alokasi dari pin pada lcd (lyquid crystal dispaly) yang akan digunakan sebagai in dan out pada arduino.

“ volatile int NbTopsFan; “

Diatas merupakan jumlah putaran fan yang ada pada sesnsor dan disimpan dalam bentuk int dan akan dieksekusi pada void loop.

“ int Calc; “

Merupakan fungsi dari perhitungan dan disimpan dalam bentuk int dan akan dieksekusi pada void loop.

“ int hallsensor = 2; “

Merupakan pengalokasian pin 2 sebagai input dari sensor pada arduino dan disimpan dalam bentuk int dan akan dieksekusi pada void loop.

“ void rpm () {

NbTopsFan++; } “

(19)

Merupakan fungsi seperti pwm dan rpm digunakan dalam sensor flow meter.

“ void setup() “

Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan.

“ { “

Merupakan pembuka dari program void setup. “ lcd.begin(16, 2); “

Fungsi dari library pada sebuah lcd. “ lcd.setCursor(0,0); “

Setingan untuk meletakan kata pada lcd untuk baris pertama dan kolom pertama pada sebuah lcd.

“ lcd.print("flow rate is"); “

Merupakan kata yang akan ditampilkan pada lcd. “ pinMode(hallsensor, INPUT); “

Merupakan pembacaan dari input sensor. “ Serial.begin(9600); “

Merupakan pembacaan angka untuk sensor water flow meter. “ attachInterrupt(0, rpm, RISING); “

Merupakan pembacaan dari fungsi. “ }”

(20)

“ void loop() “

Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop().

“ { “

Merupakan pembuka dari program void loop. “ lcd.setCursor(1,1); “

Setingan untuk meletakan hasil dari pembacaan sensor water flow meter pada lcd, pada baris kedua dan kolom kedua.

“ NbTopsFan = 0; “

Setingan nbtopsfan, angka 0 siap untuk dihitung. “ sei(); “

Fungsi ini merupakan masukan bisa digunakan. “ delay (1000); “

Fungsi ini merupakan waktu tunda selama 1000 mili detik atau selama satu detik untuk setiap tampilan pada lcd yang telah dibaca dalam sensor. “ cli(); “

Fungsi ini merupakan masukan tidak bisa digunakan “ Calc = (NbTopsFan * 60 / 7.5); “

Fungi ini merupakan pulsa frequensi dari pembacaan sensor dikali dengan 60 dan dibagai dengan 7,5 ( merupakan definisi dari liter per jam, l/jam )

“ sei(); “

(21)

“ lcd.print (Calc, DEC); “

Setingan untuk tampilan pada lcd dari hasil perhitungan fungsi diatas. “ lcd.print(" L/hour"); “

Setingan untuk menampilkan L/jam pada sebuah lcd. “ cli(); “

Fungsi ini merupakan masukan tidak bisa digunakan “ Serial.print (Calc, DEC); “

Setingan untuk tampilan pada serial monitor PC dari hasil perhitungan fungsi diatas.

“ Serial.print (" L/hour\r\n"); “

Setingan untuk menampilkan L/jam pada sebuah serial monitor PC. “ } “

Merupakan penutup dari fungsi void loop.

3.2.3.1 Bahasa Program Arduino IDE yang digunakan Float

Float point numbers sering digunakan untuk memperkirakan nilai analog dan berkelanjutan karena nilai tersebut memiliki resolusi yang lebih besar daripada integers. float point numbers dapat menyimpan sebesar 32bit dengan range 3.4028235E+38 sampai -3.4028235E+38. Angka tersebut disimpan dalam 32 bits (4 bytes) dari informasi. Float hanya memiliki 6-7 digit decimal. Pada arduino, Double sama nilainya dengan Float.

(22)

Contoh :

float myfloat;

float sensorCalbrate = 1.117; Syntax :

float var = val;

 var - your float variable name

 val - the value you assign to that variable Contoh kode :

int x; int y; float z; x = 1;

y = x / 2; // y now contains 0, ints can't hold fractions

z = (float)x / 2.0; // z now contains .5 (you have to use 2.0, not 2)

Byte

Tipe byte dapat menyimpan 8-bit nilai angka bilangan asli tanapa koma. Byte memiliki range 0 – 255.

Contoh :

Byte biteVariable = 180; // mendeklarasikan

‘biteVariable’ sebagai type byte

Void (Setup)

Fungsi setup() hanya di panggil satu kali ketika program pertama kali di jalankan. Ini digunakan untuk pendefinisian mode pin atau memulai komunikasi serial. Fungsi setup() harus di ikut sertakan dalam program walaupun tidak ada statement yang di jalankan. Contoh :

(23)

void setup() {

pinMode(13,OUTPUT); // mengset ‘pin’ 13 sebagai output

}

Loop

Setelah melakukan fungsi setup() maka secara langsung akan melakukan fungsi loop() secara berurutan dan melakukan instruksi-instruksi yang ada dalam fungsi loop().

Contoh : void loop() {

digitalWrite(13, HIGH); // nyalakan ‘pin’ 13

delay(1000); // pause selama 1 detik

digitalWrite(13, LOW); // matikan ‘pin’ 13

delay(1000); /// pause selama 1 detik

}

Serial begin ()

Statement ini di gunakan untuk mengaktifkan komunikasi serial dan mengset baudrate.

Contoh :

void setup() {

Serial.begin(9600); //open serial port and set

baudrate 9600 bps }

Analog Read ()

Papan Arduino memiliki 6 chanel, 10 bit analog ke digital, artinya kita dapat memasukkan tegangan antara 0 dan 5 volts pada nilai integer antara 0 sampai 1023. Kisaran input atau masukan dan resolusi dapat dirubah menggunakan analog reference. Untuk membaca analog input dibutuhkan dibutuhkan sekitar 100 microsecond (0.0001 s). Jadi rata – rata membacanya sekitar 10.000 kali dalam satu detik. Catatan : jika pin analog

(24)

input tidak dapat terkoneksi dengan apapun nilainya akan kembali pada analogRead.

Syntax :

analogRead(pin)

Contoh :

Int analogPin = 3 // potentiometer wiper middle terminal connected to analog pin 3

Void setup () { Serial.begin (9600); } Void loop () {

Val = analogRead(analogPin); // Read the input pin

Serial.println(val); //debug value }

Delay ()

Menghentikan program untuk mengukur waktu (dalam millisecond) yang terspesifikasi pada parameter (ada 1000 milisecond dalam setiap detik). Pada saat mudahnya membuat LED berkedip dengan fungsi delay, beberapa sketch atau lembar kerja mengalami delay. Membaca sensor, perhitungan Matematika, atau memanipulasi Pin dapat berkerja pada saat fungsi delay bekerja. Beberapa program berbasis pengetahuan biasanya menghindari penggunaan delay untuk kegiatan yang membutuhkan waktu lebih dari 10 miliseconds.

Delay(1000); // menunggu selama satu

detik

Selanjutnya hubungkan Arduino ke komputer dengan menggunakan kabel USB (Universal Serial Bus). Lalu kita dapat mengetikkan program pada lembar kerja Sketch kemudian compile untuk mengecek atau memeriksa

(25)

apakah kode sudah benar sebelum dikirim ke papan Arduino, program tersebut dapat diketik seperti dibawah ini :

#include <LiquidCrystal.h>

// select the pins used on the LCD panel LiquidCrystal lcd(8, 9, 4, 5, 6, 7);

volatile int NbTopsFan; //measuring the rising edges of the signal

int Calc;

int hallsensor = 2; //The pin location of the sensor

void rpm () //This is the function that the interupt calls

{

NbTopsFan++; //This function measures the rising and falling edge of the hall effect sensors signal

}

void setup() {

lcd.begin(16, 2); // start the library lcd.setCursor(0,0);

lcd.print("flow rate is"); // print a simple message

pinMode(hallsensor, INPUT); //initializes digital pin 2 as an input

(26)

Serial.begin(9600); //This is the setup function where the serial port is initialised,

attachInterrupt(0, rpm, RISING); //and the interrupt is attached

}

void loop() {

lcd.setCursor(1,1); // move cursor to second line "1" and 9 spaces over

NbTopsFan = 0; //Set NbTops to 0 ready for calculations sei(); //Enables interrupts

delay (1000); //Wait 1 second cli(); //Disable interrupts

Calc = (NbTopsFan * 60 / 7.5); //(Pulse frequency x 60) / 7.5Q, = flow rate in L/hour

sei();

lcd.print (Calc, DEC); //Prints the number calculated above

lcd.print(" L/hour"); // display seconds elapsed since power-up

cli(); //Disable interrupts

Serial.print (Calc, DEC); //Prints the number calculated above

(27)

Serial.print (" L/hour\r\n"); //Prints "L/hour" and returns a new line

}

Setelah program selesai diketik lngkah selanjutnya adalah pilih icon upload, tunggu berapa detik. Setelah muncul done upload maka upload telah selesai dilakukan.

Gambar

Gambar 3.1 Diagram Blok Simulasi Water Flow meter Digital Menggunakan  Aduino
Gambar 3.2 flow chart Simulasi Water Flow meter Digital Menggunakan  Aduino
Gambar 3.4  sensor water flow meter terhubung dengan arduino
Gambar 3.5 Bagiian-bagian Sensor water flow meter
+3

Referensi

Dokumen terkait

Tujuan penulis melakukan penelitian untuk mengetahui dan menganalisis pengaruh pemahaman akuntansi terhadap minat mahasiswa akuntansi konsentrasi akuntansi pemeriksaan,

a) menerima arsip inaktif dari Tata Usaha Pengolah beserta kartu kendali warna merah. b) menyimpan arsip inaktif di dalam file dimana kartu kendali warna

Pada sasaran kedua menggunakan teori yang bersumber dari penelitian Anggara dan Pramono (2018), dimana variabel yang digunakan yaitu fungsi kawasan lindung dan budidaya,

Dengan adanya hasil tracer study alumni ini diharapkan dapat memberikan masukan kepada masing-masing program studi sebagai bahan masukan untuk perbaikan baik

Tujuan penelitian ini adalah 1) untuk mengetahui pengaruh kombinasi bekatul dan tepung daun lamtoro terhadap pertumbuhan ikan gurame (Ospronemus goramy), 2)

Ketika memikirkan masa purna tugas, saya mendadak tidak dapat konsentrasi dengan pekerjaan yang saya lakukan.. SS S TS

Mengingat kuesioner ini digunakan untuk penelitian ilmiah (skripsi), sebagai salah satu syarat untuk mengakhiri studi di Fakultas Agama Islam Program Studi Hukum

faktor yang berpengaruh dalam pengembangan unit bisnis ekowisata Ciwidey, dan mengetahui portofolio bisnis pengembangannya, yang dapat dijadikan sebagai bahan pertimbangan bagi