BAB 3 PERANCANGAN DAN PEMBUATAN SISTEM
3.2. Perancangan Sistem
3.2.3 Perancangan Perangkat Lunak
Arduino AVR merupakan software C-cross compiler, dimana program dapat ditulis menggunakan bahasa C. Dengan menggunakan pemrograman bahasa C diharapkan waktu disain (developing time) akan menjadi lebih singkat. Setelah program dalam bahasa C ditulis dan dilakukan kompilasi tidak terdapat kesalahan (error) maka proses download dapat dilakukan. Mikrokontroler AVR mendukung sistem download secara In Sistem Programming (ISP). Untuk selanjutnya fasilitas-fasilitas lainnya dapat disetting sesuai kebutuhan dari pemrograman.Mikrokontroller 328 P dapat diprogram dengan software Arduino IDE (Unduh perangkat lunak Arduino).Pilih “Arduino Diecimila, Duemilanove, atau Nano w/ ATmega168 ” or
“Arduino Duemilanove atau Nano w/ ATmega328” melalui menu Tools > Board (sesuaikan dengan jenis mikrokontroler yang anda miliki).
ATmega168 dan ATmega328 pada Arduino sudah dipaket preburned dengan bootloader yang memungkinkan Anda untuk meng-upload kode baru tanpa menggunakan programer hardware eksternal. Hal ini karena komunikasi yang terjadi menggunakan protokol asli STK500. Anda juga dapat melewati (bypass) bootloader dan program mikrokontroler melalui pin header ICSP (In-Circuit Serial Programming) menggunakan Arduino ISP atau yang sejenis.
Gambar 3.12 Tampilan Jendela Arduino IDE
3.3 Pengujian Rangkaian Dan Pengukuran Hasil Sistem 3.3.1 Pengujian Rangkaian Mikrokontroler Arduino Uno
Pengujian pada rangkaian mikrokontroler Arduino Uno ini dapat dilakukan dengan menghubungkan rangkaian ini dengan rangkaian Arduino yaitu menghubungkan kabel hitam (GDN) ke kaki pin GND pada arduino, menghubungkan kabel merah (VCC) ke pin VSS pada arduino, menghubungkan kabel kuning (signal data) ke kaki 2 arduino. Langkah selanjutnya adalah memberikan program sederhana pada mikrokontroler Arduino, program yang diberikan adalah sebagai berikut:
void setup() {
pinMode( 13, OUTPUT );
}
void loop() {
digitalWrite( 13, HIGH );
}
Tabel 3.7 Pengujian Rangkaian Mikrokontroler Arduino Uno Kondisi Arduino LED pin 3 Arduino
Sebelum diprogram Mati Setelah diprogram Hidup
3.3.2 Pengujian Rangkaian Liquid Crystal Display (LCD) 16 X 2
LCD dihubungkan langsung ke pin digital dari Arduino yang berfungsi mengirimkan data hasil pengolahan untuk ditampilkan dalam bentuk alfabet dan numerik pada LCD. Display karakter pada LCD diatur oleh pin EN, RS dan RW.
Jalur EN dinamakan Enable. Jalur ini digunakan untuk memberitahu LCD bahwa anda sedang mengirimkan sebuah data. Untuk mengirimkan data ke LCD, maka melalui program EN harus dibuat logika low „0‟ dan set high „1‟ pada dua jalur kontrol yang lain RS dan RW. Jalur RW adalah jalur kontrol Read/Write. Ketika RW berlogika low „0‟, maka informasi pada bus data akan dituliskan pada layar LCD.
Ketika RW berlogika high „1‟, maka program akan melakukan pembacaan memori dari LCD. Sedangkan pada aplikasi umum pin RW selalu diberi logika low „0‟.
Berdasarkan keterangan di atas maka kita sudah dapat membuat progam untuk menampilkan karaker pada display LCD. Adapun program yang diisikan ke Arduino untuk menampilkan karakter pada display LCD adalah sebagai berikut:
#include <LiquidCrystal.h>
// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);//RS,EN,D4,D5,D6,D7 void setup() {
// put your setup code here, to run once:
// set up the LCD‟s number of columns and rows lcd.begin(16, 2);
Serial.begin(9600);
}
void loop() {
// put your main code here, to run repeatedly:
lcd.setCursor(0,0);
lcd.print(“LCD SIAP”);
}
Perintah di atas menampilkan teks “LCD SIAP”. Dengan tertampilnya teks yang dibuat tersebut dapat dikatakan LCD bekerja dengan baik.
Gambar 3.13 Gambar pengujian LCD 3.3.3 Pengujian Sensor Water Flow Meter
Sensor Water Flow Meter dapat diperiksa dengan mengaktifkan sensor yang terhubung denga catu daya 5 volt. Untuk menampilkan data tersebut dirangkai sensor dengan kaki inputannya disambungkan ke Ardunio, lalu dimasukkan program
sebagai berikut.
/*
Water Flow Meter / Sensor
Read Water Flow Meter and output reading in litres/hour
*/
const int PIN_7 = 7;
volatile int flow_frequency;
// Measures flow meter pulsesunsigned int l_hour;
// Calculated litres/hourunsigned char flowmeter = 2;
// Flow Meter Pin numberunsigned long currentTime;
unsigned long cloopTime;
// Enable interrupts currentTime = millis();
cloopTime = currentTime;
}
void loop () {
currentTime = millis();
// Every second, calculate and print litres/hour
if(currentTime >= (cloopTime + 1000)) {
cloopTime = currentTime;
// Updates cloopTime// Pulse frequency (Hz) = 7.5Q, Q is flow rate in L/min.
(Results in +/- 3% range)l_hour = (flow_frequency * 60 / 7.5);
// (Pulse frequency x 60 min) / 7.5Q = flow rate in L/hour flow_frequency = 0;
// Reset CounterSerial.print(l_hour, DEC);
// Print litres/hourSerial.println(" L/hour");
} }
3.3.4 Pengujian Rangkaian Power Supply
Rangkaian ini terdiri dari regulator pada rangkaian ini diberi tegangan masukan sebesar 24 DC lalu pada port keluaran dicek hasil keluaran dengan menggunakan multimeter.
Tabel 3.8 Pengujian Rangkaian Power Supply
Input (VAC) Output (VAC) regulataor (VDC) 24 12 15
5 2 5
Gambar 3.14 pengujian Rangkaian Power Supply
3.3.5 Pengujian relay dan pompa
Mengaktifkan relay dengan mentransfer tegangan 5 volt dari ouput Arduino ke input relay dan lalu mengaktifkan pompa yang terhubung daya AC dan ground.
Masukkan sintaksis program dengan mengupload program berikut:
Tabel 3.9 Pengujian Relay dan Pompa
Output ardunio Keadaan relay Keadaan pompa 0 Terputus (cut off) mati
1 Tersambung (satured) hidup
BAB 4
PEMBAHASAN HASIL PENGUKURAN
4.1 Analisis Hasil Pengukuran
Pengukuran dilakukan dengan cara pengujian sistem secara keseluruhan, untuk mencari keakuratan sensor flowmeter yaitu dengan dilakukan perbandingan dengan alat standard, pengujian menggunakan sensor flowmeter dengan pembanding yaitu Gelas ukur. Pada pengujian ini ada 4 kali percobaaan untuk mendapatkan hasil yang lebih akurat.
Tabel 4.1 Hasil Pengukuran Minyak Tanah dengan pembanding
Gambar 4.1 Grafik Hasil Pengukuran Minyak Tanah dengan pembanding
0 500 1000 1500 2000 2500
Gelas Ukur flowmeter
No Gelas ukur (ml) Sensor Floweter (ml) Ralat
1 800 ml 830 ml 30 %
2 1000 ml 1020 ml 20%
3 1500 ml 1530 ml 30%
4 2000 ml 2010 ml 10%
Tabel 4.2 Hasil Pengukuran Minyak Solar dengan pembanding
Gambar 4.2 Grafik Hasil Pengukuran Minyak Solar dengan pembanding
0 500 1000 1500 2000 2500
Gelas Ukur Sensor Flow Meter
No Gelas ukur (ml) Sensor Floweter (ml) Ralat
1 800 ml 825 ml 25 %
2 1000 ml 1030 ml 30%
3 1500 ml 1550 ml 50%
4 2000 ml 2010 ml 10%
4.2 perhitungan ralat dan kalibrasi
4.2.1 Perhitungan Ralat dan Kalibrasi Minyak Tanah
Pada pegukuran pembanding dan perhitungan ralat, penulis melakukan 4 kali percobaan untuk mendapatkan hasil yang lebih akurat diantaranya adalah:
1. Percobaan pertama
%Ralat =
% Ralat Untuk Pengukuran 830 ml - Rata-rata pengukuran =800 - Data Sebenarnya =800ml
%Ralat = I = 3,75 %
Pada percobaan pertama, volume digelasukur sebesar 800 ml dan volume yg didapatkan pada sensor flowmeter 830 ml sehingga mendapat ralat sebesar 3,75%
2. Percobaan kedua
%Ralat =
% Ralat Untuk Pengukuran 1020 ml - Rata-rata pengukuran =1000 - Data Sebenarnya =1000 ml
%Ralat = I = 2 %
Pada percobaan kedua, volume digelas ukur sebesar 1000ml dan volume yg didapatkan pada sensor flowmeter adalah 1020 ml sehingga mendapat ralat sebesar 2%
3. Percobaan ketiga
%Ralat =
% Ralat Untuk Pengukuran 1530 ml - Rata-rata pengukuran =1500 - Data Sebenarnya = 1500 ml
%Ralat = I = 2%
Pada percobaan ketiga, volume di gelas ukur sebesar 1500 ml dan volume yg didapatkan pada sensor flowmeter adalah 1530 ml sehingga mendapat ralat sebesar 2%
4. Percobaan keempat
%Ralat =
% Ralat Untuk Pengukuran 2010 ml - Rata-rata pengukuran =2000 - Data Sebenarnya =2000 ml
%Ralat = I = 0,5 %
Pada percobaan keempat,volume di gelas ukur sebesar 2000 ml dan volume yg didapatkan pada sensor flowmeter sebesar 2010 ml sehingga mendapat ralat sebesar 0,5%
Maka didapat % ralat rata-rata adalah :
= 2.0625 %
4.2.2 Perhitungan Ralat dan Kalibrasi Minyak Solar
Pada pegukuran pembanding dan perhitungan ralat, penulis melakukan 4 kali percobaan untuk mendapatkan hasil yang lebih akurat diantaranya adalah:
1. Percobaan pertama
%Ralat =
% Ralat Untuk Pengukuran 825 ml - Rata-rata pengukuran =800
- Data Sebenarnya =800ml
%Ralat = I = 3,125 %
Pada percobaan pertama, volume digelasukur sebesar 800 ml dan volume yg didapatkan pada sensor flowmeter 825 ml sehingga mendapat ralat sebesar 3,125%
2. Percobaan kedua
%Ralat =
% Ralat Untuk Pengukuran 1030 ml - Rata-rata pengukuran =1000 - Data Sebenarnya =1000 ml
%Ralat = I = 3 %
Pada percobaan kedua, volume digelas ukur sebesar 1000ml dan volume yg didapatkan pada sensor flowmeter adalah 1030 ml sehingga mendapat ralat sebesar 3%
3. Percobaan ketiga
%Ralat =
% Ralat Untuk Pengukuran 1550 ml -Rata-rata pengukuran =1500 - Data Sebenarnya = 1500 ml
%Ralat = I = 3.4%
Pada percobaan ketiga, volume di gelas ukur sebesar 1500 ml dan volume yg didapatkan pada sensor flowmeter adalah 1550 ml sehingga mendapat ralat sebesar 3.4%
4. Percobaan keempat
%Ralat =
% Ralat Untuk Pengukuran 2010 ml -Rata-rata pengukuran =2000 - Data Sebenarnya =2000 ml
%Ralat = I = 0,5 %
Pada percobaan keempat,volume di gelas ukur sebesar 2000 ml dan volume yg didapatkan pada sensor flowmeter sebesar 2010 ml sehingga mendapat ralat sebesar 0,5%
Maka didapat % ralat rata-rata adalah :
= 2.50625 %
BAB 5
KESIMPULAN DAN SARAN
5.1 Kesimpulan
Dari hasil perancangan alat hingga pengujian dan analisis maka penulis dapat menarik kesimpulan, antara lain:
1. Dalam alat ini Mikrokontroler Arduino uno berfungsi mengatur, mengkonversi semua pemesanan minyak tanah dan solar, pengisian minyak ke konsumen dan mengolah harga total minyak yang dibeli, kemudian akan menampilkannya pada LCD. Sensor Flowmeter digunakan untuk mengukur laju aliran atau jumlah suatu fluida yang bergerak mengalir dalam saluran (pipa), relay bekerja untuk menghubungkan dan memutuskan pompa.
2. Alat akan bekerja ketika semua rangkaian terhubung, dan bekrja sesuai fungsinya masing-masing. Saat inputan data dimasukkan melalui keypad, Maka mikrokontoler akan mengolah data, kemudian relay akan menyalah dan Pompa akan bekerja memindahkan sejumlah minyak yang diinput, dengan mengetahui jumlah yang telah dipindahkan dari sensor flowmeter.
3. Tujuan penulis merancang alat pertamini ini adalah untuk mempermudah masyarakat dalam pentakaran minyak tanah dan solar, dan mempersingkat waktu.
5.2 Saran
1. Dilakukan penyempurnaan pada desain, hardware termasuk pemilihan sensor dan mikrokontrolernya agar didapat rangkaian lebih sempurna
2. Untuk penggunaan volume yang lebih besar maka diperlukan kapasistas sensor yang lebih besar pula dan tarikan pompa dengan daya yang lebih besar maka disarankan untuk, mengganti sensor untuk meningkatkan ketelitian alat.
3. Diperlukan pengkalibrasian yang lebih lengkap untuk memenuhipengukuran
DAFTAR PUSTAKA
Bejo,Agus. 2005.C&AVR Rahasia kemudahan Bahasa C dalam Mikrokontroler ATMega, Edisi Pertama. Yogyakarta: Penerbit Gava Media
Dayanto, Drs.2008. Pengetahuan Teknik Elektronika. Jakarta:Bumi Aksara Rusmadi, Dedi. 1999. Mengenal Teknik Elektro. Bandung: Pionir Jaya
Winoto,Ardi. 2008, Aplikasi Mikrokontoler dan Pemrograman dengan Bahasa C pada WinAVR. Bandung: Informatika
https://rudywinoto.com/flow-measurement/artikel-flow-meter/difinisi-jenis-cara- kerja-dan-instalasi-flow-meter/
Diakses pada tanggal 19 Mei 2020
https://medium.com/shanarodeburg/jenis-fungsi-dan-prinsip-kerja-flow-meter- af8b372914a2
Diakses pada tanggal 29 Mei 2020
https://teknikelektronika.com/pengertian-relay-fungsi-relay/
Diakses pada tanggal 29 Mei 2020
https://bilabil.com/pengertian-fungsi-dan-jenis-jenis-pompa/
Diakses pada tanggal 02 juni 2020
https://digiwarestore.com/id/bluetooth/hc-05-bluetooth-module-432241.html Diakses pada tanggal 05 Juni 2020
LAMPIRAN
Rangakain Keseluruhan Sistem
Rangkaian Alat Proyek
Program
#include <Keypad.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SoftwareSerial.h>
SoftwareSerial myBT(A1, A0); // RX, TX LiquidCrystal_I2C lcd(0x27,16,2);
const float HARGA_MINYAK_SOLAR = 12000; // harga minyak solar seliter const float HARGA_MINYAK_TANAH = 15000; // harga minyak tanah seliter const float DATA_SELITER = 450; // data water flow untuk ukuran 1 liter
float hargaPerDataSolar = HARGA_MINYAK_SOLAR / DATA_SELITER; // harga satuan data untuk minyak solar
float hargaPerDataTanah = HARGA_MINYAK_TANAH / DATA_SELITER; //
harga satuan data untuk minyak tanah const byte MINYAK_SOLAR = 1;
const byte MINYAK_TANAH = 2;
const int pinRelaySolar = 4; // pin relay pompa minyak solar const int pinRelayMTanah = 5; // pin relay pompa minyak tanah
int DATA_FLOW; //pengukuran SINYAL data yang bersifat incremental int pinSensor1 = 2; //nama alias pada pin 2
int pinSensor2 = 3; //nama alias pada pin 3 const byte ROWS = 4; //four rows
const byte COLS = 4; //four columns
//define the cymbols on the buttons of the keypads char hexaKeys[ROWS][COLS] = {
Keypad customKeypad = Keypad( makeKeymap(hexaKeys), rowPins, colPins, ROWS, COLS); // init keypad
int HargaMinyak;
void speedrpm1 () //fungsi penghitungan dan interrupt {
DATA_FLOW++; //bersifat incrementing (dengan mode RISING edge) }
void speedrpm2 () //fungsi penghitungan dan interrupt {
DATA_FLOW++; //bersifat incrementing (dengan mode RISING edge) }
void setup(){
Serial.begin(9600);
myBT.begin(9600); // init komunikasi ke bluetooth //init mode pin arduino
pinMode(pinSensor2, INPUT); //inisialisasi sebagai input
attachInterrupt(0, speedrpm1, RISING); //cara penulisan perintah interrupt attachInterrupt(1, speedrpm2, RISING); //cara penulisan perintah interrupt lcd.init();
Serial.println("Harga Minyak Solar PerData :" + String(hargaPerDataSolar));
Serial.println("Harga Minyak Tanah PerData :" + String(hargaPerDataTanah));
Serial.println("START");
myBT.println();
myBT.println("A.Minyak SOLAR B.Minyak TANAH");
}
lcd.clear();
myBT.println("Pengisian " + String(setNilai) + " ml");
myBT.println("*:Tidak #:Ya");
delay(200);
totalBiaya = float(DATA_FLOW) * HargaMinyakPerData;
urut = 60;
if(millis() > tmrIsi + 100){
tmrIsi = millis();
hslIsi = float(DATA_FLOW) * HargaMinyakPerData;
lcd.setCursor(0,1);
totalBiaya = float(DATA_FLOW) * HargaMinyakPerData;
urut = 60;
break;
}else{
if(dtPress.length() < 5) dtPress+=key; // batasan digit input liter //Serial.println(dtPress);
}
lcd.setCursor(7,1);
lcd.print(dtPress);
delay(20);
}else if(stringComplete ){ // data dari bluetooth stringComplete = false;
nilTmp = dtIN.toInt();
if(nilTmp >= 100 && nilTmp <= 3000){
rtrn = nilTmp;
if(inChar > 30) inputString += inChar;
} } }
Pin Layout Arduino Uno
Spesifikasi Arduino UNO :
Microcontroller ATmega328P
Operating Voltage 5V
Input Voltage (recommended) 7-12V
Input Voltage (limit) 6-20V
Digital I/O Pins 14 (of which 6 provide PWM output)
PWM Digital I/O Pins 6
Analog Input Pins 6
DC Current per I/O Pin 20 mA
DC Current for 3.3V Pin 50 mA
Flash Memory
32 KB (ATmega328P)
of which 0.5 KB used by bootloader
SRAM 2 KB (ATmega328P)
EEPROM 1 KB (ATmega328P)
Clock Speed 16 MHz
Length 68.6 mm
Width 53.4 mm
Weight 25 g