Perancangan Sistem Pemanasan Mesin Sepeda Motor Secara Otomatis Berbasis Arduino Chapter III V

20

BAB III
PERANCANGAN SISTEM
3.1. Umum
Sistem pemanasan mesin sepeda motor secara otomatis merupakan sistem
yang bertujuan untuk menyalakan mesin sepeda motor secara otomatis dan
terjadwal. Sistem ini menggunakan arduino uno yang dilengkapi dengan beberapa
pheripheral masukan dan keluaran.
Sistem pemanasan mesin sepeda motor secara otomatis berbasis arduino
merupakan sistem yang bekerja dengan tujuan pemeliharaan mesin sepeda motor.
Sistem ini bekerja dengan menggunakan indikator bahan bakar, indikator baterai,
indikator transmisi dan indikator status mesin sebagai parameter.
Sistem pemanasan mesin sepeda motor ini juga dapat dipantau dari aplikasi
android pada smartphone. Sistem ini akan melakukan pembacaan data dari sepeda
motor kemudian mengirimkan dan menyimpannya pada database yang terdapat
pada web server melalui jaringan internet. User menggunakan aplikasi android
untuk mangakses dan menampilkan data pada database tersebut. Gambar 3.1
memperlihatkan gambaran umum dari sistem yang akan dirancang.

Gambar 3. 1 Gambaran sistem secara Umum


Universitas Sumatera Utara

21

3.2. Perancangan Sistem Pemanasan Mesin Sepeda Motor
Pada sistem ini arduino berperan sebagai pusat pengolahan data pembacaan
sensor. Pada Arduino terdapat ADC berperan dalam pengolahan sinyal analog
sensor ke digital dan terminal masukan/keluaran digital untuk keperluan
komunikasi digital. Sensor-sensor dibaca dan data pembacaan kemudian diolah
untuk dikirim ke server dengan menggunakan HTTPS request dengan
menggunakan GET method. Data yang dikirim diolah dan disimpan untuk
keperluan monitoring. Monitoring dilakukan dengan menggunakan sebuah aplikasi
berbasis android secara online menggunakan smartphone. Pada gambar 3.2
diperlihatkan gambaran perancangan alat dalam diagram blok sistem.

Gambar 3. 2 Diagram blok sistem

3.3. Perancangan Perangkat Keras
Perangkat keras sistem berperan sebagai perangkat pemantau kondisi

sepeda motor, pengirim data ke server dan pengontrol pemanasan mesin sepeda

Universitas Sumatera Utara

22

motor secara otomatis. Pada gambar 3.3 diperlihatkan diagram blok perangkat keras
sistem pemanasan mesin sepeda motor.

Gambar 3. 3 Diagram blok hardware

Untuk dapat melakukan pemanasan mesin secara otomatis maka sistem
dirancang untuk dapat bekerja sesuai dengan aturan prosedur yang ingin dirancang.
Pada gambar 3.4 diperlihatkan flowchart dari sistem yang akan dibuat. dengan
bekerja berdasarkan flowchart ini diharapkan sistem dapat berfungsi dengan baik.

Universitas Sumatera Utara

23


Gambar 3. 4 Flowchart proses sistem pemanasan mesin sepeda motor secara
otomatis

Universitas Sumatera Utara

24

3.3.1. Timer
Timer yang dipakai adalah RTC DS3231. Timer ini membutuhkan minimal
empat terminal untuk bisa berkomunikasi dengan arduino yaitu: VCC, Ground,
SCL dan SDA. VCC di pasang pada tegangan keluaran arduino 5 volt, Ground
dipasang pada terminal Ground keluaran arduino, SDA dipasang pada terminal A4
dan SCL dipasang pada terminal A5. Berikut adalah rangkaian skematik antara
arduino uno dengan RTC DS3231. Gambar 3.5 menunjukkan rangkaian skematik
dari IC RTC DS3231 dengan arduino uno

Gambar 3. 5 Diagram skematik DS3231 dengan arduino

Berikut program menjalankan pembacaan RTC DS3231 oleh arduino.
// Convert binary coded decimal to normal decimal numbers

byte bcdToDec(byte val)
{
return( (val/16*10) + (val%16) );
}
// read the DS3231
void readDS3231time(byte *second,
byte *minute,
byte *hour,
byte *dayOfWeek,
byte *dayOfMonth,

Universitas Sumatera Utara

25

byte *month,
byte *year)
{
Wire.beginTransmission(DS3231_I2C_ADDRESS);
Wire.write(0);// set DS3231 register pointer

to 00h
Wire.endTransmission();
Wire.requestFrom(DS3231_I2C_ADDRESS, 7);
// request seven bytes of data from DS3231 starting from
register 00h
*second = bcdToDec(Wire.read() & 0x7f);
*minute = bcdToDec(Wire.read());
*hour = bcdToDec(Wire.read() & 0x3f);
*dayOfWeek = bcdToDec(Wire.read());
*dayOfMonth = bcdToDec(Wire.read());
*month = bcdToDec(Wire.read());
*year = bcdToDec(Wire.read());
}

3.3.2. Pengukuran Level Bahan Bakar
Pengukuran bahan bakar dilakukan dengan mengukur tegangan jepit antara
kedua terminal pelampung bahan bakar yang terdapat didalam tanki sepeda motor
MINERVA MX150. Untuk mengukur tagangan tersebut, maka dipasang sebuah
sensor tegangan seperti pada gambar dibawah ini. Gambar 3.6 memerlihatkan
rangakaian skematik sensor bahan bakar.


Gambar 3. 6 Rangkaian skematik sensor bahan bakar

Universitas Sumatera Utara

26

Gambar 3.7 memperlihatkan hasil pembacaan sensor tegangan jepit dari
pelampung bahan bakar melalui serial monitor dari arduino software pada saat
bahan bakar dalam keadaan (A) penuh, (B) kosong dan (C) reserve. hasil
pembacaan sensor di simpan dengan nama varibel ‘ sensor1’ .

Grafik pembacaan sensor tingkat bahan bakar

nilai pembacaan sensor

70
60
50
40

30
20
10
0

1

2

3

4

5

6

7

tangki penuh


8

9

10 11 12 13 14 15 16 17 18 19 20 21

waktu (detik)

tangki kosong

tangki reserve

Gambar 3. 7 Grafik pembacaan sensor tengangan pada pelampung bahan bakar

Dari hasil pembacaan sensor tersebut, nilai data di ubah ke dalam satuan
persen (%) dengan rumus:
100

=(


1)

(%)

= (65

1)

100
(%)
65 10

= (65

1)

1,85 (%)

Dimana:

Fuel

: tingkat ketinggian bahan bakar dalam tangki (%)

Universitas Sumatera Utara

27

A

: nilai pembacaan sensor pada saat bahan bakar penuh

B

: nilai pembacaan sensor pada saat bahan bakar kosong

Sensor1: hasil pembacaan sensor
Berikut program menjalankan pembacaan pengukuran level bahan bakar
oleh arduino.
float Sensor1 = analogRead(A2);

delay (1000);
fuel =(66.00 - Sensor1) *1.85;

3.3.3. Pengukuran Tegangan Baterai
Pengukuran tegangan baterai dilakukan dengan memasang sensor tegangan
pada terminal positif dan negatif baterai tersebut seperti pada gambar 3.8.

Gambar 3. 8 Rangkaian skematik sensor tegangan Baterai

Universitas Sumatera Utara

28

Gambar 3.9 memperlihatkan hasil pembacaan sensor tegangan baterai
melalui serial monitor dari arduino software pada saat tegangan baterai sebesar
12V. hasil pembacaan sensor di simpan dengan nama varibel ‘ sensor2’ .

grafik pembacaan sensor tegangan baterai dengan
tegangan 12 Volt
nilai pembacaan Sensor

700
600
500
400
300
200
100
0

1

2

3

4

5

6

7

8

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

waktu (detik)

Gambar 3. 9 Rangkaian skematik sensor tegangan Baterai
Dari hasil pembacaan sensor tersebut, nilai pembacaan diubah kedalam
satuan Volt dengan rumus sebagai berikut:
=

2

12
(
582

)

Dimana:
V

: tegangan baterai (Volt)

Sensor2

: hasil pembacaan sensor tegangan baterai

Berikut program menjalankan pembacaan pengukuran tegangan baterai
oleh arduino.
float
delay
float
delay

Sensor2 = analogRead(A1);
(1000);
battery = Sensor2 * (12.0 / 582.0);
(1000);

Universitas Sumatera Utara

29

3.3.4. Pembacaan status mesin
Pembacaan status mesin bertujuan untuk mengetahui status mesin apakah
dalam keadaan menyala atau tidak. Saat menyala mesin akan menghasilkan
tegangan AC 3 fasa, dengan memanfaatkan keadaan ini maka sebuah dioda bridge
dipasang antara dua kutub generator mesin sepeda motor tersebut sebagai
penyearah gelombang tegangan AC. Kapasitor di pasang pada kutub positif (+) dan
negatif (-) dioda blidge tersebut untuk mengurangi riak tegangan DC keluarannya
dan sebuah resistor sebagai pembatas arus pada salah satu terminal fasa masukan
dioda bridge. Dengan memasang sebuah sensor tegangan untuk mendeteksi ada
tidaknya tegangan pada keluaran dioda bridge tersebut maka arduino dapat
mengetahui status mesin sepda motor. Pembacaan status mesin ini dipasang pada
terminal A0 arduino. Gambar 3.10 memperlihatkan rangkaian skematik dari sensor
tegangan untuk membaca status mesin.

Gambar 3. 10 Rangakaian skematik pembacaan stasus mesin

Universitas Sumatera Utara

30

Pada gambar 3.11 diperlihatkan grafik hasil pembacaan status mesin saat
mesin dalam kondisi mati (OFF) dan hasil pembacaan saat mesin dalam kondisi
menyala (ON). Hasil pembacaan status mesin disimpan dengan nama variabel ‘ val”.

Grafik pembacaan sensor tegangan mesin
Nilai Pembacaan Sensor

700
600
500
400
300
200
100

0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
waktu (detik)

Status mesin menyala

Status mesin mati

Gambar 3. 11 Grafik hasil pembacaan status mesin

Dari hasil pembacaan status mesin tersebut kita lihat bahwa ada
pembedaan antar pembacaan pada kedua kondisi mesin. Status mesin dapat kita
peroleh dengan ketentuan sebagai berikut
ON ==> val > 10
OFF ==> val < 10
Berikut program pembacaan status mesin oleh arduino.
float val = analogRead(A0);
delay(1000);
if (val1>10)
{
engine = "ON";
}
else
{
engine = "OFF";
}
Serial.println(engine);

Universitas Sumatera Utara

31

3.3.5. Pembacaan Status Transmisi
Pembacaan status transmisi dilakukan untuk mengetahui posisi dari sistem
transmisi pada sepeda motor. Kondisi transmisi yang dibaca adalah posisi netral
dan posisi tidak netral. Sepeda motor minerva MX150 sudah dilengkapi dengan
sebuah sakelar sebagai indikator transmisi netral dan tidak. Pada gambar 3.12
merupakan rangkaian

Gambar 3. 12 Rangakian skematik pembacaan status transmisi

Berikut program pembacaan status transmisi oleh arduino.
digitalWrite(pul,HIGH);
delay(100);
int val2 = digitalRead(net);
if (net==HIGH)
{
transmission = "NEUTRAL";
}
Else
{
Transmission = “ON GEAR”;
}
digitalWrite(pul,LOW);

// puldown input neutral
// membaca status transmisi

Universitas Sumatera Utara

32

3.3.6. Power Relay
Power relay dipasang pada kedua terminal sakelar power sepeda motor.
Tegangan masukan untuk menggerakkan relay ini berasal dari keluaran 5 volt
arduino melalui sebuah transistor NPN yang dipicu oleh tegangan keluaran arduino
pada terminal delapan. Pada gambar 3.13 diperlihatkan rangkaian skematik power
relay.

Gambar 3. 13 Rangkaian skematik power relay

Berikut program untuk mengaktifkan relai Power oleh arduino.
digitalWrite(power,LOW);
delay (4000);

Berikut program untuk mematikan relai Power oleh arduino.
digitalWrite(power,HIGH);

3.3.7. Starter Relay
Starter Relay dipasang pada kedua terminal sakelar starter sepeda motor.
Tegangan masukan untuk menggerakkan relay ini berasal dari tegangan keluaran 5
volt arduino melalui sebuah transistor NPN yang dipicu oleh tegangan keluaran

Universitas Sumatera Utara

33

arduino pada terminal sembilan. Pada gambar 3.14 diperlihatkan rangkaian
skematik dari starter relay.

Gambar 3. 14 Rangkaian skematik starter relay

Berikut program untuk mengaktifkan starter relay oleh arduino.
digitalWrite(9,LOW);
delay (3000);

3.3.8. Sim800l
Untuk dapat berkomunikasi dengan arduino, sim800l membutuhkan
setidaknya empat terminal yaitu: VCC (3,7 – 4,2 volt), GND, TX dan MX. Untuk
mendapatkan tegangan antara 3,7 - 4,2 volt dari tegangan keluaran arduino, maka
dibutuhkan sebuah regulator penurun tegangan dari 5 Volt DC menjadi kisaran 3,7
– 4,2 volt DC. Terminal keluaran regulator dipasangkan pada VCC dan GND sim

800l. Terminal TX dipasangkan pada terminal B10 arduino sedangkan terminal MX
sim800l dipasangkan pada terminal B11 arduino. Pada gambar 3.15 diperlihatkan
rangkaian skematik Sim800l.

Universitas Sumatera Utara

34

Gambar 3. 15 Rangkaian skematik Sim800l

Berikut diagram blok dan program sim800l pada arduino.
SoftwareSerial sim800l(11, 10);
String stringPARA =
"AT+HTTPPARA=\"URL\",\"http://autobike.pe.hu/input.php?fuel=";
String stringend = "\"";
String stringPARA2 = "";
String bt = "&battery=";
String en = "&engine_st=";
String tr = "&transmission=";
float fuel;
float battery;
int engine;
int transmission;
void SubmitHttpRequest()
{

stringPARA2 = stringPARA + fuel + bt + battery + en + engine + tr
+ transmission + stringend;
Serial.println(stringPARA2);
sim800l.println("AT+CSQ");
delay(100);
ShowSerialData();
sim800l.println("AT+CGATT?");
delay(100);

Universitas Sumatera Utara

35

ShowSerialData();
sim800l.println("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"");//setting
the SAPBR, the connection type is using gprs
delay(1000);
ShowSerialData();
sim800l.println("AT+SAPBR=3,1,\"APN\",\"internet\"");
delay(1000);
ShowSerialData();
sim800l.println("AT+SAPBR=1,1");
delay(2000);
ShowSerialData();
sim800l.println("AT+HTTPINIT"); //init the HTTP request
delay(2000);
ShowSerialData();
sim800l.println(stringPARA2);
delay(1000);
ShowSerialData();
sim800l.println("AT+HTTPACTION=0");
delay(6000);
ShowSerialData();
sim800l.println("AT+HTTPREAD");
ShowSerialData();

delay(300);

checkForResponse();
mySerial.println("");
delay(100);
}
void ShowSerialData()
{
while(sim800l.available()!=0)
Serial.write(sim800l.read());
}
void checkForResponse()
{
while(sim800l.available()!=0)
{
for (int i = 0; i < 22; i++)
{
dLine[i] = sim800l.read();
}
}
Serial.println(dLine[6]);
}

Universitas Sumatera Utara

36

3.4. Perancangan Penjadwalan Sistem
Pada penjadwal akan diatur kapan sepeda motor akan melakukan
pemanasan mesin secara otomatis. Dalam hal ini sepeda motor akan melakukan
pemanasan mesin secara otomatis pada pukul 7:00:00 pada zona waktu GMT+7.
Jika dalam melakukan penyalaan pada mesin sepeda motor tidak berhasil, maka
sistem akan mengulangi penyalaan sebanyak 3 kali. Berikut program arduino untuk
melakukan penjadwalan pemanasan mesin secara otomatis.
void start_engine()
{
digitalWrite(power,LOW);
delay (4000);
sensor();
if(fuel>31.45 && battery > 10 && transmission == "NEUTRAL" &&
engine == "OFF")
{
cacah = 0;
while (engine == "OFF" && cacah