BAB III PERANCANGAN ALAT DAN PROGRAM
3.1. Gambaran Umum Pada bab ini akan dibahas mengenai perencanaan perangkat keras (hardware) dan perangkat lunak (software). Pembahasan ini meliputi pembahasan perangkat keras yaitu perancangan modul elektronik dan perancangan perangkat lunak yaitu pembuatan program sketch dengan software Arduino IDE pada komputer. Perancangan perangkat keras ini adalah pembuatan modul elektronik yang digunakan untuk proses otomatisasi operasi motor listrik berdasarkan jam operasi (operating hour). Sedangkan perancangan perangkat lunak meliputi pembuatan program berupa sketch yang akan diupload kedalam mikrokontroller Arduino Uno. Perancangan dan pembuatan alat tugas akhir ini, penulis menggunakan beberapa input antara lain : sensor suhu, RTC, dan saklar toggle. Sedangkan outputnya berupa LCD, LED dan rangkaian relay. Secara umum diagram blok perancangan alat otomatisasi operasi motor listrik berdasarkan jam operasi (operating hour) adalah seperti gambar berikut ini :
34
http://digilib.mercubuana.ac.id/
35
Catu Daya
Modul RTC Sensor DHT 11
LCD 16 x 2
Arduino Uno R3
Motor 1
Rangkaian Relay
Saklar Toggle
LED
Motor 2
Gambar 3.1 Diagram Blok Alat Fungsi dari masing-masing bagian dalam diagaram blok tersebut adalah sebagai berikut:
Catu daya berfungsi memberikan supply tegangan ke modul elektronik, sehingga modul tersebut dapat berfungsi sebagai mana mestinya. Ada 2 macam output pada catu daya ini. Tegangan DC untuk menyalakan modul elektronika dan tegangan AC untuk menggerakan beban (pompa, motor, kipas dan beban lain-lain).
Modul RTC DS1307 berfungsi untuk mengatur waktu sesuai dengan program yang dimasukan pada mikrokontroller Arduino Uno, atau dengan kata lain menjadi pendetak jam digital.
Sensor suhu DHT11 berfungsi untuk mendapatkan data suhu (menyensor suhu), kemudian dimasukkan ke input Arduino uno untuk diproses.
http://digilib.mercubuana.ac.id/
36
Saklar toggle berfungsi sebagai selektor pengatur modul, apakah sistem akan dijalankan secara manual ataukah secara otomatis. Atau dalam kata lan saklar toggle sebagai selektor program.
Mikrokontroler Arduino Uno berfungsi
untuk
menyimpan
dan
menjalankan semua sistem mulai dari masukan sampai keluaran agar dapat bekerja sesuai perintah yang telah diprogram.
Penampil LCD 16x2 berfungsi sebagai tampilan utama jam digital, sensor suhu dan counter dari jam operasi (operating hour) motor listrik, kipas atau beban lainnya.
Rangkaian relay berfungsi menghubungkan mikrokontroller Arduino uno ke motor listrik, atau dengan kata lain rangkaian ini sebagai driver dari motor listrik.
LED berfungsi sebagai indikator dari modul elektronik yang menunjukan bahwa modul ini beroperasi dalam mode auto atau mode manual.
Setelah diagram blok modul selesai disusun, langkah berikutnya adalah pembuatan flowchart diagram sesuai dengan program yang akan dibuat. Fungsi dari flowchart ini adalah sebagai guidance dalam pembuatan skatch. Berikut adalah flowchart yang digunakan pada perancangan alat otomatisasi operasi motor listrik berdasarkan jam operasi (operating hour).
http://digilib.mercubuana.ac.id/
37
Mulai
Inisialisasi
Baca jam Digital
Sistem manual/Auto
MANUAL
AUTO Baca suhu
Suhu < 27 ◙C
TIDAK
YA
Motor 1 ON dan Motor 2 OFF
TIDAK
YA
Motor 1 OFF dan Motor 2 OFF
YA Jika OH MOTOR 1 > MOTOR 2
27 ◙C Suhu 32 ◙C
YA Motor 1 ON dan Motor 2 ON
Compare OH MOTOR
TIDAK
Motor 1 OFF dan Motor 2 ON
Delay 24 jam
Delay 24 jam
Motor 1 OFF dan Motor 2 ON
Motor 1 ON dan Motor 2 OFF
Delay 24 jam
Delay 24 jam
Suhu > 32 ◙C
ON Switch 1
Motor 1 ON
OFF
Motor 1 OFF
ON Switch 2
Motor 2 ON
OFF Motor 2 OFF
Selesai
Gambar 3.2 Flowchart diagram otomatisasi operasi motor listrik berdasarkan operating hour (OH)
http://digilib.mercubuana.ac.id/
38
Alat otomatisasi operasi motor listrik berdasarkan jam operasi (operating hour) ini dirancang memiliki proses kerja sebagai berikut:
Menggunakan Arduino Uno R3 sebagai kendali utama.
Mula-mula masukan program untuk RTC DS1307 ke Arduino Uno R3 untuk modul menyimpan data waktu atau jam.
Kemudian masukan program pembaca suhu DHT 11 ke Arduino Uno R3 untuk membaca suhu tempat atau ruangan yang ingin dideteksi suhunya.
Periksa waktu dan suhu yang ditampilkan pada serial monitor yang telah disediakan oleh aplikasi Arduino IDE.
Menggunakan penampil LCD 16x2 sebagai penampil jam digital, suhu dan penghitung operating hour (OH) motor listrik.
Saklar toggle sebagai salah satu input akan mengatur mode dari modul elektronik ini, dimana fungsi yang akan diaturnya telah dibuatkan program di Arduino Uno R3.
Pada mode manual, Saklar toggle juga digunakan untuk mengatur on/off dari beban. Saklar tersebut dihubungkan ke LED sebagai indikator on/off beban.
Berikut penjelasan berdasarkan flowchart diagram diatas. Saat alat dinyalakan, mikrokontroller Arduino Uno akan melakukan inisialisasi (termasuk pengaturan pin yang akan digunakan sebagai pin masukan dan pin yang digunakan sebagai keluaran). Kemudian mikrokontroller membaca RTC untuk menampilkan jam digital. Kemudian mikrokontroller akan membaca pin masukan yang terhubung ke saklar toogle yang berfungsi sebagai selektor, pembacaan pin masukan ini bertujuan untuk mengatur mode modul apakah akan dijalankan
http://digilib.mercubuana.ac.id/
39
secara manual ataukah secara otomatis. Ketika modul berada pada mode manual maka modul akan menyalakan motor listrik sesuai dengan switch masing-masing motor, jika switch ON maka motor nyala dan jika switch OFF motor akan berhenti, tanpa memperhatikan nilai suhu yang terukur oleh sensor DHT 11. Tetapi ketika modul berada pada mode otomatis maka hal berikutnya yang dilakukan oleh modul adalah membaca nilai suhu pada sensor DHT11. Jika nilai suhu yang terbaca adalah dibawah 27 derajat celcius maka kedua motor listrik akan mati (OFF) kemudian program akan kembali membaca nilai suhu. Jika nilai suhu yang dibaca adalah diatas 32 derajat celcius maka kedua motor listrik akan nyala (ON) dan program akan kembali membaca nilai suhu. Akan tetapi jika suhu yang terbaca adalah diantara 27 sampai 32 derajat celcius maka program akan membandingkan jam operasi dari kedua motor listrik tersebut, jika jam operasi motor listrik 1 lebih tinggi dari motor listrik 2 maka program akan menyalakan motor listrik 2 dan mematikan motor listrik 1 kemudian setelah 24 jam maka program melakukan changeover dengan mematikan motor listrik 2 dan menyalakan motor listrik 1. Kemudian sistem akan kembali membaca suhu. Dan sebaliknya jika jam operasi motor listrik 2 lebih tinggi atau sama dengan motor listrik 1 maka program akan menyalakan motor listrik 1 dan mematikan motor listrik 2 kemudian setelah 24 jam maka program melakukan changeover dengan mematikan motor listrik 1 dan menyalakan motor listrik 2. Penjelasan diatas adalah dengan memisalkan input yang disensor adalah suhu dan beban yang dioperasikan adalah motor listrik sesuai dengan judul yang diambil. Akan tetapi hal ini tidak bersifat absolute (mutlak). Maksudnya alat ini bisa diinovasi dengan mengganti inputnya dengan sensor level cairan, flow rate
http://digilib.mercubuana.ac.id/
40
cairan, intensitas cahaya atau bermacam input lainnya dan beban yang dioperasikan tidak melulu harus motor listrik, bisa juga fan, lampu atau beban lainnya.
3.2. Perancangan Perangkat Keras Perancangan perangkat keras meliputi perancangan modul arduino dan shield arduino yang digunakan untuk mendukung sistem kerja alat ini. Pada input dipilih sensor suhu DHT 11, shield RTC, dan saklar toggle. Untuk prosessornya digunakan Arduino Uno R3 sedangkan untuk outputnya digunakan LCD sebagai display modul alat, LED sebagai indikator dan rangkaian relay sebagai output yang akan dihubungkan ke motor listrik. Berikut adalah gambar rangkaian secara keseluruhan.
Gambar 3.3 Gambar rangkaian keseluruhan
http://digilib.mercubuana.ac.id/
41
3.2.1 Board Arduino Uno R3 Modul Arduino bersifat open source sehingga selama tetap menggunakan trademark arduino, board tersebut dapat dibuat dan dimodifikasi sesuai keinginan. Pada pembuatan tugas akhir ini dipilih board arduino uno R3 yang cukup compatible untuk digunakan sebagai prosessor dalam alat otomatisasi operasi motor listrik berdasarkan jam operasi (operating hour).
Gambar 3.4 Arduino Uno R3
http://digilib.mercubuana.ac.id/
42
3.2.2 Modul RTC (Real Time Clock)
Gambar 3.5 Rangkaian modul waktu nyata (DS 1307) Dari gambar diatas dapat dilihat bahwa modul RTC yang digunakan adalah menggunakan IC DS 1307 dimana pin 1 adalah X1 dan pin 2 adalah X2. Kedua pin tersebut terhubung dengan osilator kristal. Pin 3 terhubung dengan baterai. Baterai tersebut berfungsi sebagai backup sumber daya untuk modul, sehingga ketika modul RTC tidak mendapatkan sumber daya dari luar, maka IC DS1307 masih tetap dapat menghitung waktu. Pin 4 terhubung dengan ground. Pin 5 terhubung dengan pin arduino A4 dimana pin ini mengeluarkan data dari IC DS 1307. Pin ini juga terhubung dengan resistor sebesar 220Ω agar pin 5 mendapat tegangan Vcc. Pin 6 terhubung dengan pin Arduino A5 dimana pin ini mengeluarkan pulsa. Pin ini juga terhubung dengan resistor sebesar 220Ω dengan fungsi yang sama dengan pin 5. Pin 7 mengeluarkan gelombang kotak yang memiliki 4 buah pilihan frekuensi 1,4,8,16 KHz. Akan tetapi dalam proyek tugas akhir ini pin 7 tidak difungsikan. Pin 8 dihubungkan dengan sumber daya sebesar 5V.
http://digilib.mercubuana.ac.id/
43
3.2.3 LCD (Liquid Crystal Display) Pada bagian ini penulis akan mengulas tentang rangkaian yang akan menghubungkan Arduino Uno R3 dengan LCD. Perlu diketahui, penulis penggunakan LCD 16x2 dalam perancangan alat ini. Modul LCD 16x2 dapat dengan mudah dihubungkan ke Arduino Uno R3. Maksudnya LCD 16x2 adalah LCD tersebut mempunyai lebar display 2 baris dan 16 kolom. LCD tipe ini memiliki 16 pin konektor. Adapun tabel untuk penjelasannya sudah ada bab 2 di tabel 2.2. untuk lebih jelasnya penulis akan kembali menampilkan tabel tersebut : Tabel 3.1 Fungsi masing-masing pin LCD 16x2 No. Pin 1 2 3 4
Simbol Vss Vdd V0 RS
5 6
R/W E
7 8 9 10 11 12 13 14 15 16
DB0 DB1 DB2 DB3 DB4 DB5 DB6 DB7 A/Vee K
Fungsi Ground + 3 Volt atau + 5 Volt Pengatur kecerahan layar LCD Register Select, 0= Register perintah, 1 = Register Data 1= Read, 0 = Write Enable clock LCD, Logika 1 setiap kali pengiriman atau pembacaan data Data Bus 0 Data Bus 1 Data Bus 2 Data Bus 3 Data Bus 4 Data Bus 5 Data Bus 6 Data Bus 7 Tegangan positif backlight Tegangan negatif backlight
http://digilib.mercubuana.ac.id/
44
Gambar 3.6 LCD (liquid Crystal Display) LCD 16x2 memiliki karakter sebagai berikut :
Terdapat 16x2 karakter huruf yang bisa ditampilkan.
Terdapat 192 macam karakter.
Terdapat 80x8 bit display RAM (maksimal 80 karakter).
Memiliki kemampuan penulisan dengan 8 bit maupun dengan 4 bit.
Dibangun dengan oscilator lokal.
Membutuhkan sumber tegangan 5 volt.
Otomatis mereset ketika catu daya dihidupkan.
Bekerja pada suhu 0 sampai 50 derajat celcius.
Untuk menampilkan karakter ke LCD 16x2, penulis menghubungkan Arduino Uno R3 ke PC (Personal Computer) dengan menggunakan kabel USB (Universal Serial Bus). Lalu ketikkan program pada lembar kerja sketch kemudian compile untuk memastikan bahwa kode yang dibuat sudah benar sebelum dikirim ke papan Arduino. Contoh program tersebut adalah seperti dibawah ini : #include
LiquidCrystal lcd(12,11,7,6,5,4); void setup(){ lcd.begin (16,2); } void loop(){
http://digilib.mercubuana.ac.id/
45
char teks1 []="123456789"; char teks2 []="ABCDEFGHI"; lcd.setCursor (3,0); for (int pos = 0; pos < 9; pos++){ lcd.print(teks1[pos]); delay(500); } delay (5000); lcd.setCursor (3,1); for (int pos = 0; pos < 9; pos++){ lcd.print(teks2[pos]); delay(500); } delay (5000); lcd.noAutoscroll(); lcd.clear(); }
Dari sketch diatas akan menampilakan tulisan pada LCD 16x2 seperti berikut ini :
Gambar 3.7 Contoh display LCD (liquid Crystal Display) 3.2.4 Rangkaian Sensor Suhu DHT 11 Sensor Suhu DHT11 berfungsi sebagai masukan pada sistem rangkaian Arduino Uno R3. PIN V+ dari DHT11 dihubungkan dengan catu daya pada pin power 5 volt yang terdapat pada Arduino Uno R3 atau dari sumber external, PIN
http://digilib.mercubuana.ac.id/
46
GND dihubungkan ke PIN GND pada Arduino Uno R3 dan PIN Vout yang menghasilkan tegangan analog hasil pengindera suhu dihubungkan ke pin A0 yang berupa pin Analog input pada Arduino Uno R3.
Gambar 3.8 Sensor DHT 11 DHT 11 dapat mengukur suhu antara 0 sampai 50 derajat celcius dengan resolusi 0,1 derajat celcius. Akurasi untuk pengukuran suhu adalah (+/-) 2 derajat celcius. Keluaran modul sensor DHT 11 telah dikalibrasi dengan tabung kalibrasi secara akurat, dan nilai koefisien kalibrasinya disimpan dalam memori OTP. Sensor DHT11 memanfaatkan mikrokontroller 8 bit untuk menghasilkan data dalam format single bus. 3.2.5 Rangkaian Relay Pada proyek Tugas akhir ini, penulis menggunakan relay shield yang kompatibel dengan Arduino Uno R3, sehingga memudahkan dalam proses pengerjaan alat dan uji cobanya. Relay ini difungsikan untuk mengontrol sebuah tegangan listrik yang nantinya akan dihubungkan ke motor listrik. Dalam perancangan ini, relay difungsikan sebagai saklar yang mengatur START-STOP motor yang dikendalikan oleh Arduino Uno R3.
http://digilib.mercubuana.ac.id/
47
Gambar 3.9 Bentuk relay Shield yang biasa digunakan pada arduino Adapun perancangannya adalah dengan menghubungkan pin Relay Shield ke pin Arduino Uno R3. Dalam tugas akhir ini, penulis menggunakan dua buah relay seperti ditunjukkan pada gambar 3.9. PIN VCC dari relay shield dihubungkan dengan catu daya pada pin power 5 volt DC yang terdapat pada Arduino Uno R3 maupun dari sumber eksternal, PIN GND dihubungkan ke PIN GND pada Arduino Uno R3, Pin IN1 yang menunjukkan input relay no. 1 dihubungkan dengan PIN 2 dari Arduino Uno R3 dan Pin IN2 yang menunjukkan input relay no. 2 dihubungkan dengan PIN 3 dari Arduino Uno R3. PIN 2 dan PIN 3 pada Arduino Uno adalah kategori dari Pin Digital yang menghasilkan tegangan 5 volt.
Gambar 3.10 Skema Arduino dengan Relay Shield
http://digilib.mercubuana.ac.id/
48
3.3. Perancangan Perangkat Lunak Perancangan perangkat lunak adalah perancangan pembuatan program sketch Arduino yang akan digunakan sebagai pengatur hardware. Sketch tersebut nantinya akan didownloadkan kedalam Arduino Uno. 3.3.1 Aplikasi program Arduino IDE (Integrated Development Environment) Setelah proses rangkaian hardware selesai dibuat, langkah selanjutnya adalah membuat program pada aplikasi program Arduino IDE. Buka program aplikasi arduino IDE kemudian akan muncul tampilan kerja aplikasi arduino IDE Sketch terlihat seperti gambar berikut ini :
Gambar 3.11 Program Arduino IDE
http://digilib.mercubuana.ac.id/
49
Berikut merupakan penjelasan dari Arduino IDE : a. Structur Setiap program Arduino (biasa disebut sketch) mempunyai dua buah fungsi yang harus ada, yaitu :
void setup( ) { } Semua kode didalam kurung kurawal akan dijalankan hanya satu kali ketika program Arduino dijalankan untuk pertama kalinya.
void loop( ) { } Fungsi ini akan dijalankan setelah setup (fungsi void setup) selesai. Setelah dijalankan satu kali fungsi ini akan dijalankan lagi, dan lagi secara terus menerus sampai catu daya (power) dilepaskan.
b. Syntax Berikut ini adalah elemen bahasa C yang dibutuhkan untuk format penulisan.
//(komentar satu baris) Kadang diperlukan untuk memberi catatan pada diri sendiri apa arti dari kode-kode yang dituliskan. Cukup menuliskan dua buah garis miring dan apapun yang kita ketikkan dibelakangnya akan diabaikan oleh program.
/* */(komentar banyak baris) Jika anda punya banyak catatan, maka hal itu dapat dituliskan pada beberapa baris sebagai komentar. Semua hal yang terletak di antara dua simbol tersebut akan diabaikan oleh program.
http://digilib.mercubuana.ac.id/
50
{ }(kurung kurawal) Digunakan untuk mendefinisikan kapan blok program mulai dan berakhir (digunakan juga pada fungsi dan pengulangan).
;(titk koma) Setiap baris kode harus diakhiri dengan tanda titik koma (jika ada titik koma yang hilang maka program tidak akan bisa dijalankan).
c. Variabel Sebuah program secara garis besar dapat didefinisikan sebagai instruksi untuk memindahkan angka dengan cara yang cerdas. Variabel inilah yang digunakan untuk memindahkannya.
int (integer) Digunakan untuk menyimpan angka dalam 2 byte (16 bit). Tidak mempunyai angka desimal dan menyimpan nilai dari -32.768 dan 32.767.
long (long) Digunakan ketika variabel integer tidak mencukupi lagi. Long memakai 4 byte (32 bit) dari memori (RAM) dan mempunyai rentang dari -2.147.483.648 dan 2.147.483.647.
boolean (boolean) Variabel sederhana yang digunakan untuk menyimpan nilai TRUE (benar) atau FALSE (salah). Sangat berguna karena hanya menggunakan 1 bit dari RAM.
http://digilib.mercubuana.ac.id/
51
float (float) Digunakan untuk angka desimal (floating point). Memakai 4 byte (32 bit) dari RAM dan mempunyai rentang dari -3.4028235E+38 dan 3.4028235E+38.
char (character) Menyimpan 1 karakter menggunakan kode ASCII (misalnya ‘A’ = 65). Hanya memakai 1 byte (8 bit) dari RAM.
d. Operator Matematika Operator yang digunakan untuk memanipulasi angka (bekerja seperti matematika yang sederhana).
= Membuat sesuatu menjadi sama dengan nilai yang lain (misalnya: x = 10 * 2, x sekarang sama dengan 20).
% Menghasilkan sisa dari hasil pembagian suatu angka dengan angka yang lain (misalnya: 12 % 10, hasilnya adalah 2).
+ Penjumlahan
– Pengurangan
* Perkalian
/ Pembagian
http://digilib.mercubuana.ac.id/
52
e. Operator Pembanding Digunakan untuk membandingkan nilai logika.
== Sama dengan (misalnya: 12 == 10 adalah FALSE (salah) atau 12 == 12 adalah TRUE (benar))
!= Tidak sama dengan (misalnya: 12 != 10 adalah TRUE (benar) atau 12 != 12 adalah FALSE (salah))
< Lebih kecil dari (misalnya: 12 < 10 adalah FALSE (salah) atau 12 < 12 adalah FALSE (salah) atau 12 < 14 adalah TRUE (benar))
> Lebih besar dari (misalnya: 12 > 10 adalah TRUE (benar) atau 12 > 12 adalah FALSE (salah) atau 12 > 14 adalah FALSE (salah))
f. Struktur Pengaturan Program sangat tergantung pada pengaturan apa yang akan dijalankan berikutnya, berikut ini adalah elemen dasar pengaturan (banyak lagi yang lain dan bisa dicari di internet).
if..else, dengan format seperti berikut ini: if (kondisi) { } else if (kondisi) { } else { } Dengan struktur seperti diatas program akan menjalankan kode yang ada di dalam kurung kurawal jika kondisinya TRUE, dan
http://digilib.mercubuana.ac.id/
53
jika tidak (FALSE) maka akan diperiksa apakah kondisi pada else if dan jika kondisinya FALSE maka kode pada else yang akan dijalankan.
for, dengan format seperti berikut ini: for (int i = 0; i < #pengulangan; i++) { } Digunakan bila ingin melakukan pengulangan kode di dalam kurung kurawal beberapa kali, ganti #pengulangan dengan jumlah pengulangan yang diinginkan. Melakukan penghitungan ke atas dengan i++ atau ke bawah dengan i--.
g. Digital
pinMode(pin, mode) Digunakan untuk menetapkan mode dari suatu pin, pin adalah nomor pin yang akan digunakan dari 0-19 (pin analog 0-5 adalah 14-19). Mode yang bisa digunakan adalah INPUT atau OUTPUT.
digitalWrite(pin, value) Ketika sebuah pin ditetapkan sebagai OUTPUT, pin tersebut dapat dijadikan HIGH (dinaikkan menjadi 5 Volt) atau LOW (diturunkan menjadi ground).
digitalRead(pin) Ketika sebuah pin ditetapkan sebagai INPUT maka kode ini dapat digunakan untuk mendapatkan nilai pin tersebut apakah HIGH (dinaikkan menjadi 5 volts) atau LOW (diturunkan menjadi ground).
http://digilib.mercubuana.ac.id/
54
h. Analog Arduino adalah mesin digital tetapi mempunyai kemampuan untuk beroperasi di dalam wilayah analog (menggunakan trik). Berikut ini cara untuk menghadapi hal yang bukan digital.
analogWrite(pin, value) Beberapa pin pada Arduino mendukung PWM (pulse width modulation) yaitu pin 3, 5, 6, 9, 10, 11. Ini dapat mengubah pin hidup (on) atau mati (off) dengan sangat cepat sehingga membuatnya dapat berfungsi layaknya keluaran analog. Value (nilai) pada format kode tersebut adalah angka antara 0 ( 0% duty cycle ~ 0V) dan 255 (100% duty cycle ~ 5V).
analogRead(pin) Ketika pin analog ditetapkan sebagai INPUT anda dapat membaca keluaran voltase-nya. Keluarannya berupa angka antara 0 (untuk 0 Volt) dan 1024 (untuk 5 Volt).
Untuk listing program lengkap dari proyek tugas akhir ini terdapat di lampiran laporan tugas akhir ini.
http://digilib.mercubuana.ac.id/