1. Water Level Sensor
2. Thermistor NTC 10K
3. RTC DS1307
4. Arduino UNO
5. LCD 16x2
6. Motor DC (Pompa dan Kipas)
7. LED
8. Transistor NPN 2N222
9. Modul Relay 2 Channel
10. DC-DC Buck Converter LM 2596
11. Push button
12. Potensiometer
Dasar Teori
a) Water Level Sensor
Power LED itu adalah lampu yang akan menyala apabila modul Water Level Sensor ini diberi tegangan 5V (tegangan kerja sensor) lalu disana juga terdapat beberapa jalur yang sudah ditandai, jalur berwarna hijau adalah jalur sensor sedangkan jalur berwarna biru adalah jalur tegangan / powernya.
Water Level Sensor ini prinsip kerjanya sama seperti potensiometer yang menggunakan variable resistor dan itu artinya apabila air di permukaan jalur sedikit maka resistansi akan tinggi yang menyebabkan tegangan akan terbaca dengan nilai kecil, namun apabila air di permukaan jalur tinggi maka resistansi akan rendah sehingga nilai yang terbaca akan tinggi.
Ada 3 pin yang terdapat pada sensor water level :
a. Pin GND (-) : dihubungkan ke ground
b. Pin VCC (+) : dihubungkan ke power supply dengan rekomendasi 3.3V – 5V
c. Pin Data (S) : dihubungkan ke salah satu pin input analog arduino
Pin Data (S) di sensor yang berfungsi untuk mengirimkan data ke Arduino apabila terdapat air di permukaan jalur, disini pin Data (S) menggunakan Pin Analog dari Arduino karena pin analog dapat membaca masukan sinyal dari Water Level Sensor sedangkan pin Digital tidak dapat melakukanya.
b) Thermistor NTC
NTC adalah singkatan dari Negative Temperature Coefficient, yang berarti koefisien temperatur negatif. Secara sederhana, thermistor NTC adalah jenis thermistor yang akan mengalami penurunan nilai resistansi ketika terjadi peningkatan suhu lingkungan. Thermistor NTC memiliki hubungan resistansi listrik terhadap suhu (R/T) negatif. Respon negatif yang relatif besar dari thermistor NTC berarti bahwa perubahan suhu yang kecil pun dapat menyebabkan perubahan yang signifikan pada hambatan listriknya. Ini membuatnya ideal untuk pengukuran dan kontrol suhu yang akurat.
Oleh karena thermistor NTC adalah perangkat resistif, berdasarkan hukum Ohm, jika kita memberikan arus melalui NTC, akan dihasilkan tegangan drop. Thermistor NTC merupakan perangkat yang pasif, maka membutuhkan sinyal eksitasi untuk operasinya, setiap perubahan nilai resistansi sebagai akibat dari perubahan suhu dapat dikonversi menjadi perubahan nilai tegangan.
Cara paling mudah untuk mengukur tegangan adalah dengan membuat NTC sebagai bagian dari pembagi tegangan. Tegangan sumber yang konstan dialirkan melalui rangkaian thermistor NTC lalu tegangan drop nya pun dapat dengan mudah didapatkan. Ketika terjadi perubahan nilai resistansi NTC karena terjadi perubahan suhu, tegangan dropnya pun akan berubah. Dari perubahan nilai tegangan ini dapat digunakan untuk mengukur suhu lingkungan.
c) RTC DS1307
RTC (Real Time Clock) merupakan jenis timer yang bekerja berdasarkan waktu nyata, atau dengan kata lain berdasarkan waktu sesaui waktu kita. Agar dapat berfungsi, pewaktu ini membutuhkan dua parameter utama yang harus ditentukan, yaitu pada saat mulai (start) dan pada saat berhenti (stop).
RTC dilengkapi dengan baterai sebagai supply pada chip sehingga jam akan up to date. Pada RTC dinilai cukup akurat sebagai pewaktu (timer) karena menggunakan osilator Kristal pada rangkaiannya.
Fungsi pin-pin yang terdapat pada RTC :
a. Pin VCC : sebagai power supply dan memiliki tegangan kerja 5V
b. Pin GND : dihubungkan ke ground
c. Pin SCL : sebagai saluran clock untuk komunikasi data antara mikroontroler dengan RTC
d. Pin SDA : sebagai saluran data untuk komunikasi data antara mikrokontroler dan RTC
e. X1 dan X2 : untuk saluran clock yang bersumber dari crustal external
f. Vbat : sebagai saluran energi listrik dari battery external
DS1307 merupakan salah satu tipe IC RTC yang dapat bekerja dalam daya listrik rendah, yang juga sering kita jumpai dalam PC/hanphone. Waktu jam dan kalender memberikan informasi detik, menit, jam, hari, tanggal, bulan, dan tahun. Untuk bagian jam dapat berformat 24 jam atau 12 jam. Pendeteksi sumber listrik juga disediakan untuk mendeteksi kegagalan sumber listrik dan langsung mengalihkannya ke sumber baterai.
Komunikasi yang digukan untuk RTC mengacu I2C-Bus atau Inter-Integrated Circuit Bus, merupakan bus serial yang dikembangkan oleh Phillips. I2C Bus digunakan untuk menghubungkan berbagai macam IC yang dikontrol oleh sistem microprocessor atau microcontroller (intelligent control application).
d) Arduino UNO
Arduino UNO adalah sebuah board yang menggunakan mikrokontroler ATmega328. Arduino UNO memiliki 14 pin digital (6 pin dapat digunakan sebagai output PWM), 6 input analog, sebuah 16 MHz osilato kristal, sebuah koneksi USB, sebuah konektor sumber tegangan, sebuah header ICSP, dan sebuah tombol reset. Arduino dapat bekerja ketika menghubungkannya ke sebuah komputer melalui USB atau memberikan tegangan DC dari baterai atau adaptor AC ke DC. Arduino Uno menggunakan ATmega16U2 yang diprogram sebagai USB to serial converter untuk komunikasi serial ke komputer melalui port USB.
"UNO" berarti satu di Italia dan diberi nama untuk menandai peluncuran Arduino 1.0. Versi 1.0 menjadi versi referensi Arduino ke depannya. Arduino UNO R3 adalah revisi terbaru dari serangkaian board Arduino, dan model referensi untuk platform Arduino. Tampak atas dari Arduino UNO dapat dilihat pada gambar dibawah ini
Adapun data teknis board Arduino UNO R3 adalah sebagai berikut:
• Tegangan Operasi : 5V
• Tegangan Input (recommended) : 7 - 12 V
• Tegangan Input (limit) : 6-20 V
• Pin digital I/O : 14 (6 diantaranya pin PWM)
• Pin Analog input : 6
• Arus DC per pin I/O : 40 mA
• Arus DC untuk pin 3.3 V : 150 mA
• Flash Memory : 32 KB dengan 0.5 KB digunakan untuk bootloader
• EEPROM : 1 KB
• Kecepatan Pewaktuan : 16 Mhz
A. Pin Masukan dan Keluaran Arduino
Masing-masing dari 14 pin digital arduino uno dapat digunakan sebagai masukan atau keluaran menggunakan fungsi pinMode(), digitalWrite() dan digitalRead(). Setiap pin beroperasi pada tegangan 5 volt.
Beberapa pin masukan digital memiliki kegunaan khusus yaitu:
a. Komunikasi serial: pin 0 (RX) dan pin 1 (TX), digunakan untuk menerima (RX) dan mengirim (TX) data secara serial.
b. External Interrupt: pin 2 dan pin 3, pin ini dapat dikonfigurasi untuk memicu sebuah interrupt pada nilai rendah, sisi naik atau turun, atau pada saat terjadi perubahan nilai. Pulse-width modulation (PWM): pin 3, 5, 6, 9, 10 dan 11, menyediakan keluaran PWM 8-bit dangan menggunakan fungsi analogWrite().
c. Serial Peripheral Interface (SPI): pin 10 (SS), 11 (MOSI), 12 (MISO) dan 13 (SCK), pin ini mendukung komunikasi SPI dengan menggunakan SPI library. 6
d. LED: pin 13, terdapat built-in LED yang terhubung ke pin digital 13. Ketika pin bernilai High maka LED menyala, sebaliknya ketika pin bernilai Low maka LED akan padam.
Arduino Uno memiliki 6 masukan analog yang diberi label A0 sampai A5, setiap pin menyediakan resolusi sebanyak 10 bit (1024 nilai yang berbeda). Secara default pin mengukur nilai tegangan dari ground (0V) hingga 5V, walaupun begitu dimungkinkan untuk mengganti nilai batas atas dengan menggunakan pin AREF dan fungsi analogReference(). Sebagai tambahan beberapa pin masukan analog memiliki fungsi khusus yaitu pin A4 (SDA) dan pin A5 (SCL) yang digunakan untuk komunikasi Two Wire Interface (TWI) atau Inter Integrated Circuit (I2C) dengan menggunakan Wire library.
• TWI : A4 atau SDA pin dan A5 atau SCL pin. Mendukung komunikasi TWI.
• Aref. Referensi tegangan untuk input analog. Digunakan dengan analogReference().
• Reset
B. Catu Daya
Arduino UNO dapat diberi daya melalui koneksi USB (Universal Serial Bus) atau melalui power supply eksternal. Jika arduino uno dihubungkan ke kedua sumber daya tersebut secara bersamaan maka arduino uno akan memilih salah satu sumber daya secara otomatis untuk digunakan.
Power supply eksternal (yang bukan melalui USB) dapat berasal dari adaptor AC ke DC atau baterai. Adaptor dapat dihubungkan ke soket power pada arduino uno. Jika menggunakan baterai, ujung kabel yang dibubungkan ke baterai dimasukkan kedalam pin GND dan Vin yang berada pada konektor power. Arduino uno dapat beroperasi pada tegangan 6 sampai 20 volt. Jika arduino uno diberi tegangan di bawah 7 volt, maka pin 5V pada board arduino akan menyediakan tegangan di bawah 5 volt dan mengakibatkan arduino uno mungkin bekerja tidak stabil. Jika diberikan tegangan melebihi 12 volt, penstabil tegangan kemungkinan akan menjadi terlalu panas dan merusak arduino uno. Tegangan rekomendasi yang diberikan ke arduino uno berkisar antara 7-12 volt.
Pin-pin catu daya adalah sebagai berikut:
a. Vin adalah pin untuk mengalirkan sumber tegangan ke arduino uno ketika menggunakan sumber daya eksternal (selain dari koneksi USB atau sumber daya yang teregulasi lainnya). Sumber tegangan juga dapat disediakan melalui pin ini jika sumber daya yang digunakan untuk arduino uno dialirkan melalui soket power.
b. 5V adalah pin yang menyediakan tegangan teregulasi sebesar 5 volt berasal dari regulator tegangan pada arduino uno.
c. 3.3V adalah pin yang meyediakan tegangan teregulasi sebesar 3,3 volt berasal dari regulator tegangan pada arduino uno.
d. GND adalah pin ground.
e) LCD 16x2
LCD 16×2 dinamakan demikian karena; memiliki 16 Kolom dan 2 Baris. Semua layar LCD di atas akan memiliki 16 Pin dan pendekatan pemrogramannya juga sama. Di bawah ini adalah Deskripsi Pin out dan Pin Modul LCD 16x2 :
Sr. No | Pin No. | Pin Name | Pin Type | Pin Description | Pin Connection |
1 | Pin 1 | Ground | Source Pin | Ini adalah pin ground LCD | Terhubung ke ground MCU/Sumber daya |
2 | Pin 2 | VCC | Source Pin | Ini adalah pin tegangan suplai LCD | Terhubung ke pin suplai sumber Daya |
3 | Pin 3 | V0/VEE | Control Pin | Menyesuaikan kontras LCD | Terhubung ke POT variabel yang dapat sumber 0-5V |
4 | Pin 4 | Register Select | Control Pin | Beralih antara Command/Data Register | Terhubung ke pin MCU dan mendapatkan 0 atau 1. 0 -> Mode Perintah 1-> Mode Data |
5 | Pin 5 | Read/Write | Control Pin | Mengalihkan LCD antara operasi Baca/Tulis | Terhubung ke pin MCU dan mendapatkan 0 atau 1. 0 -> Operasi Tulis 1-> Operasi Baca |
6 | Pin 6 | Enable | Control Pin | Harus dipegang tinggi untuk melakukan Operasi Baca/Tulis | Terhubung ke MCU dan selalu tinggi. |
7 | Pin 7-14 | Data Bits (0-7) | Data/Command Pin | Pin yang digunakan untuk mengirimkan perintah atau data ke LCD | Dalam Mode 4-Wire Hanya 4 pin (0-3) yang terhubung ke MCU Dalam Mode 8-Wire Semua 8 pin (0-7) terhubung ke MCU |
8 | Pin 15 | LED Positive | LED Pin | LED normal seperti operasi untuk menerangi LCD | Terhubung ke +5V |
9 | Pin 16 | LED Negative | LED Pin | Operasi seperti LED normal untuk menerangi LCD yang terhubung dengan GND | Terhubung ke tanah |
Berikut merupakan gambar LCD jika diputar :
Gambar 20. LCD 16x2 dari belakang
Lingkaran hitam diatas terdiri dari IC antarmuka dan komponen terkait untuk membantu menggunakan LCD ini dengan MCU. Karena LCD ini adalah LCD 16x2 Dot matrix sehingga akan memiliki total (16x2=32) 32 karakter dan setiap karakter akan dibuat dari 5x8 Pixel Dots. Karakter tunggal dengan semua Pikselnya diaktifkan ditunjukkan pada gambar di bawah ini :
Gambar 21. Matriks LCD
Jadi Sekarang, dapat diketahui bahwa setiap karakter memiliki (5x8=40) 40 Piksel dan untuk 32 Karakter kita akan memiliki (32x40) 1280 Piksel. Selanjutnya, LCD juga harus diinstruksikan tentang Posisi Piksel
Register LCD
LCD 16x2 memiliki dua register seperti register data dan register perintah. RS (register select) atau pilihan daftar terutama digunakan untuk mengubah dari satu register ke register lainnya. Ketika set register adalah '0', maka itu dikenal sebagai register perintah. Demikian pula, ketika set register adalah '1', maka itu dikenal sebagai register data.
Command Register
Fungsi utama dari register perintah adalah untuk menyimpan instruksi perintah yang diberikan ke layar. Di sini pemrosesan perintah dapat terjadi dalam register.
Data Register
Fungsi utama daftar data adalah untuk menyimpan informasi yang akan ditampilkan di layar LCD. Di sini, nilai karakter ASCII adalah informasi yang akan ditampilkan di layar LCD. Setiap kali kita mengirim informasi ke LCD, ia mengirimkan ke daftar data, dan kemudian proses akan mulai di sana. Saat daftar diatur = 1, maka daftar data akan dipilih.
f) Motor DC
Motor DC adalah motor listrik yang memerlukan suplai tegangan arus searah pada kumparan medan untuk diubah menjadi energi gerak mekanik. Kumparan medan pada motor dc disebut stator (bagian yang tidak berputar) dan kumparan jangkar disebut rotor (bagian yang berputar). Motor arus searah, sebagaimana namanya, menggunakan arus langsung yang tidak langsung/direct-unidirectional.
Motor DC adalah piranti elektronik yang mengubah energi listrik menjadi energi mekanik berupa gerak rotasi. Pada motor DC terdapat jangkar dengan satu atau lebih kumparan terpisah. Tiap kumparan berujung pada cincin belah (komutator). Dengan adanya insulator antara komutator, cincin belah dapat berperan sebagai saklar kutub ganda (double pole, double throw switch).
Pada prinsipnya motor listrik DC menggunakan fenomena elektromagnet untuk bergerak, ketika arus listrik diberikan ke kumparan, permukaan kumparan yang bersifat utara akan bergerak menghadap ke magnet yang berkutub selatan dan kumparan yang bersifat selatan akan bergerak menghadap ke utara magnet. Saat ini, karena kutub utara kumparan bertemu dengan kutub selatan magnet ataupun kutub selatan kumparan bertemu dengan kutub utara magnet maka akan terjadi saling tarik menarik yang menyebabkan pergerakan kumparan berhenti.
Gambar 22. Prinsip Kerja Motor
Untuk menggerakannya lagi, tepat pada saat kutub kumparan berhadapan dengan kutub magnet, arah arus pada kumparan dibalik. Dengan demikian, kutub utara kumparan akan berubah menjadi kutub selatan dan kutub selatannya akan berubah menjadi kutub utara. Pada saat perubahan kutub tersebut terjadi, kutub selatan kumparan akan berhadap dengan kutub selatan magnet dan kutub utara kumparan akan berhadapan dengan kutub utara magnet. Karena kutubnya sama, maka akan terjadi tolak menolak sehingga kumparan bergerak memutar hingga utara kumparan berhadapan dengan selatan magnet dan selatan kumparan berhadapan dengan utara magnet. Pada saat ini, arus yang mengalir ke kumparan dibalik lagi dan kumparan akan berputar lagi karena adanya perubahan kutub. Siklus ini akan berulang-ulang hingga arus listrik pada kumparan diputuskan.
g) LED Biru
LED (Light Emitting Diode) merupakan komponen elektronika yang dapat memancarkan cahaya monokromatik ketika diberikan tegangan maju.. Warna-warna cahaya yang dipancarkan oleh LED tergantung pada jenis bahan semikonduktor yang dipergunakannya. LED juga dapat memancarkan sinar inframerah yang tidak tampak oleh mata seperti yang sering kita jumpai pada Remote Control TV ataupun Remote Control perangkat elektronik lainnya.
Cara kerjanya pun hampir sama dengan Dioda yang memiliki dua kutub yaitu kutub Positif (P) dan Kutub Negatif (N). LED hanya akan memancarkan cahaya apabila dialiri tegangan maju (bias forward) dari Anoda menuju ke Katoda.
LED terdiri dari sebuah chip semikonduktor yang di doping sehingga menciptakan junction P dan N. Ketika LED dialiri tegangan maju atau bias forward yaitu dari Anoda (P) menuju ke Katoda (K), Kelebihan Elektron pada N-Type material akan berpindah ke wilayah yang kelebihan Hole (lubang) yaitu wilayah yang bermuatan positif (P-Type material). Saat Elektron berjumpa dengan Hole akan melepaskan photon dan memancarkan cahaya monokromatik (satu warna).
Gambar 23. Prinsip kerja LED
Gambar 24. Pinout LED
h) Transistor NPN 2N222
Transistor adalah sebuah komponen di dalam elektronika yang diciptakan dari bahan-bahan semikonduktor dan memiliki tiga buah kaki. Masing-masing kaki disebu sebagai basis, kolektor, dan emitor.
Emitor (E) memiliki fungsi untuk menghasilkan elektron atau muatan negatif.
Kolektor (C) berperan sebagai saluran bagi muatan negatif untuk keluar dari dalam transistor.
Basis (B) berguna untuk mengatur arah gerak muatan negatif yang keluar dari transistor melalui kolektor.
Fungsi dari transistor sendiri adalah memperkuat arus listrik yang masuk ke dalam rangkaian. Seperti yang telah disebutkan, transistor terdiri dari dua jenis yaitu NPN dan PNP. Transistor NPN akan aktif ketika kaki basis diberi arus listrik bermuatan negatif. Sebaliknya, transistor PNP akan aktif apabila kaki basis mendapatkan tegangan listrik positif. Pada transistor NPN, kaki basis memiliki kutub positif dan bersinggungan langsung dengan sumber listrik atau baterai. Sedangkan kaki emitor memiliki kutub negatif karena berhubungan langsung dengan massa. Kutub negatif juga ditemukan pada kaki kolektor yang menghubungkan massa di rangkaian listrik.
Gambar 25. NPN Transistor
Cara kerja transistor ini :
Apabila saklar dalam posisi tertutup atau terhubung arus listrik akan mengalir dari kutub baterai positif melewati beban (dalam hal ini lampu) kemudian menuju kaki kolektor dan berhenti di sana. Arus berhenti dikarenakan transistor masih belum mendapatkan pemicu sehingga posisinya tidak aktif. Hal ini menyebabkan lampu masih tetap mati. Pada waktu yang bersamaan, arus pemicu yang ukurannya lebih kecil dibandingkan arus listrik utama mengalir dari sumber listrik menuju ke resistor kemudian ke saklar, melewati kaki basis transistor lanjut ke emitor, dan berlanjut menuju massa. Karena lampu mendapatkan masa listrik, beban tersebut pun akan menyala.
i) Modul Relay
Modul relay adalah salah satu piranti yang beroperasi berdasarkan prinsip elektromagnetik untuk menggerakkan kontaktor guna memindahkan posisi ON ke OFF atau sebaliknya dengan memanfaatkan tenaga listrik. Peristiwa tertutup dan terbukanya kontaktor ini terjadi akibat adanya efek induksi magnet yang timbul dari kumparan induksi listrik.
Perbedaan yang paling mendasar antara relay dan sakelar adalah pada saat pemindahan dari posisi ON ke OFF. Relay melakukan pemindahan-nya secara otomatis dengan arus listrik, sedangkan sakelar dilakukan dengan cara manual.
Cara kerja relay :
Gambar 26. Prinsip Kerja Relay
Saat kumparan dialiri listrik, maka otomatis inti besi akan jadi magnet dan menarik penyangga sehingga kondisi yang awalnya tertutup jadi terbuka (Open). Sementara pada saat kumparan tak lagi dialiri listrik, maka pegas akan menarik ujung penyangga dan menyebabkan kondisi yang awalnya terbuka jadi tertutup (Close).
Secara umum kondisi atau posisi pada relay terbagi menjadi dua, yaitu:
• NC (Normally Close), adalah kondisi awal atau kondisi dimana relay dalam posisi tertutup karena tak menerima arus listrik.
• NO (Normally Open), adalah kondisi dimana relay dalam posisi terbuka karena menerima arus listrik.
Gambar 27. Pinout Relay
Berdasarkan gambar skematik relay di atas, berikut ini adalah keterangan dari ketiga pin yang sangat perlu kamu ketahui:
• COM (Common), adalah pin yang wajib dihubungkan pada salah satu dari dua ujung kabel yang hendak digunakan.
• NO (Normally Open), adalah pin tempat menghubungkan kabel yang satunya lagi bila menginginkan kondisi posisi awal yang terbuka atau arus listrik terputus.
• NC (Normally Close), adalah pin tempat menghubungkan kabel yang satunya lagi bila menginginkan kondisi posisi awal yang tertutup atau arus listrik tersambung.
j) DC-DC Buck Converter
DC Buck Converter adalah rangkaian elektronika yang berfungsi sebagai penurun tegangan DC ke DC (konverter DC-to-DC atau Choppers) dengan metode switching. Secara garis besar rangkaian konverter dc to dc ini memakai komponen switching seperti MOSFET (Metal Oxide Semiconductor Field Effect Transistor), thyristor, IGBT untuk mengatur duty cycle.
Secara umum komponen penyusun DC Chopper Tipe Buck (Buck Converter) antara
lain :
Sumber masukan DC
Rangkaian Kontrol (Drive Circuit)
Dioda Freewheeling
Induktor
Kapasitor
MOSFET
Beban (R)
Gambar 28. Rangkaian DC-DC Converter
Fungsi dari komponen penyusun diatas:
a. MOSFET digunakan sebagai pencacah arus sesuai dengan setting duty cycle sehingga keluaran DC Chopper sesuai dengan nilai yang setting
b. Drive Circuit digunakan untuk mengendalikan MOSFET, sehingga timing untuk MOSFET bekerja dapat dikendalikan kapan harus ON atau OFF
c. Induktor digunakan untuk menyimpan energi dalam bentuk arus. Energi tersebut disimpan dikala MOSFET on dan dilepas dikala MOSFET off
d. Dioda Freewheeling digunakan untuk mengalirkan arus yang dihasilkan induktor dikala MOSFET off
Prinsip kerja
MOSFET yang dipakai pada rangkaian DC Chopper Tipe Buck yaitu bertindak sebagai saklar yang sanggup membuka atau menutup rangkaian. Sehingga keluaran tegangan dapat dikontrol sesuai dengan duty cycle yang disetting.
Gambar 29. Rangkaian DC-DC Converter
Kinerja dari DC Chopper tipe buck dapat diperhatikan pada saat :
Gambar 30. DC-DC Converter dengan MOSFET
Ketika MOSFET on (tertutup) dan dioda off, arus mengalir dari sumber menuju ke induktor (pengisian induktor), disafilter oleh kapasitor, kemudian ke beban, kembali lagi ke sumber
Ketika MOSFET off (terbuka) dan dioda on, arus yang disimpan indukor dikeluarkan menuju ke beban kemudian ke dioda freewheeling dan kembali lagi ke inductor
k) Push button
Push button adalah satu komponen elektronika yang dapat memutus dan mengalirkan arus listrik dalam suatu rangkaian. Dimana pemutusan dan pengaliran ini terjadi karena prinsip pengalihan dari satu konduktor ke konduktor lain. Caranya dengan pengoperasian langsung secara manual oleh pengguna.
Push button berfungsi untuk memutus dan menyambungkan arus listrik. Biasanya push button ini digunakan untuk memicu jalannya suatu perangkat output seperti relay, buzzer, LED, maupun yang lainnya.
Cara Kerja Push Button
Pada dasarnya, prinsip kerja push button adalah pemutus dan penyambung aliran listrik. Namun dalam hal ini, ia tak bersifat mengunci. Jadi ia akan kembali ke posisi semua saat selesai ditekan. Saat push button ditekan, ia menjadi bernilai HIGH dan akan menghantarkan arus listrik. Sedangkan apabila dilepas, maka ia bernilai LOW dan memutus arus listrik. Namun cara kerja saklar push button kadang berbeda tergantung dari jenisnya. Apakah ia termasuk NO atau NC.
l) Potensiometer
Potensiometer (POT) adalah suatu jenis resistor yang nilai resistansinya dapat diatur sesuai dengan kebutuhan rangkaian elektronika ataupun kebutuhan pemakainya. Potensiometer merupakan keluarga resistor yang tergolong dalam kategori variabel resistor. Potensiometer memiliki 3 kaki terminal dengan sebuah shaft atau tuas yang berfungsi sebagai pengatur.
Gambar 31. Pinout Potensiometer
Pada dasarnya bagian-bagian penting dalam komponen potensiometer adalah :
a. Elemen resistif
b. Penyapu atau wiper
c. Terminal
Sebuah Potensiometer (POT) terdiri dari sebuah elemen resistif yang membentuk jalur (track) dengan terminal di kedua ujungnya. Sedangkan terminal lainnya (biasanya berada di tengah) adalah Penyapu (Wiper) yang dipergunakan untuk menentukan pergerakan pada jalur elemen resistif (Resistive). Pergerakan Penyapu (Wiper) pada Jalur Elemen Resistif inilah yang mengatur naik-turunnya Nilai Resistansi sebuah Potensiometer. Elemen Resistif pada Potensiometer umumnya terbuat dari bahan campuran Metal (logam) dan Keramik ataupun Bahan Karbon (Carbon).
Berdasarkan Track (jalur) elemen resistif-nya, Potensiometer dapat digolongkan menjadi 2 jenis yaitu Potensiometer Linear (Linear Potentiometer) dan Potensiometer Logaritmik (Logarithmic Potentiometer).
m) Komunikasi yang digunakan
1) UART
UART atau Universal Asynchronous Receiver-Transmitter adalah bagian perangkat keras komputer yang menerjemahkan antara bit-bit paralel data dan bit-bit serial. UART biasanya berupa sirkuit terintegrasi yang digunakan untuk komunikasi serial pada komputer atau port serial perangkat periperal. UART sekarang ini termasuk di dalam beberapa mikrokontroler (contohnya, PIC16F628). UART atau Universal Asynchronous Receiver Transmitter adalah protokol komunikasi yang umum digunakan dalam pengiriman data serial antara device satu dengan yang lainnya. Sebagai contoh komunikasi antara sesama mikrokontroler atau mikrokontroler ke PC. Dalam pengiriman data, clock antara pengirim dan penerima harus sama karena paket data dikirim tiap bit mengandalkan clock tersebut. Inilah salah satu keuntungan model asynchronous dalam pengiriman data karena dengan hanya satu kabel transmisi maka data dapat dikirimkan. Berbeda dengan model synchronous yang terdapat pada protokol SPI (Serial Peripheral Interface) dan I2C (Inter-Integrated Circuit) karena protokol membutuhkan minimal dua kabel dalam transmisi data, yaitu transmisi clock dan data. Namun kelemahan model asynchronous adalah dalam hal kecepatannya dan jarak transmisi. Karena semakin cepat dan jauhnya jarak transmisi membuat paket-paket bit data menjadi terdistorsi sehingga data yang dikirim atau diterima bisa mengalami error.Asynchronous memungkinkan transmisi mengirim data tanpa sang pengirim harus mengirimkan sinyal detak ke penerima. Sebaliknya, pengirim dan penerima harus mengatur parameter waktu di awal dan bit khusus ditambahkan untuk setiap data yang digunakan untuk mensinkronkan unit pengiriman dan penerimaan. Saat sebuah data diberikan kepada UART untuk transmisi Asynchronous, "Bit Start" ditambahkan pada setiap awal data yang akan ditransmisikan. Bit Start digunakan untuk memperingatkan penerima yang kata data akan segera dikirim, dan memaksa bit-bit sinyal di receiver agar sinkron dengan bit-bit sinyal di pemancar. Kedua bit ini harus akurat agar tidak memiliki penyimpangan frekuensi dengan lebih dari 10% selama transmisi bit-bit yang tersisa dalam data. (Kondisi ini ditetapkan pada zaman teleprinter mekanik dan telah dipenuhi oleh peralatan elektronik modern.)Setelah Bit Start, bit individu dari data yang dikirim, dengan sinyal bit terkecil yang pertama dikirim. Setiap bit dalam transmisi ditransmisikan serupa dengan jumlah bit lainnya, dan penerima mendeteksi jalur di sekitar pertengahan periode setiap bit untuk menentukan apakah bit adalah 1 atau 0. Misalnya, jika dibutuhkan dua detik untuk mengirim setiap bit, penerima akan memeriksa sinyal untuk menentukan apakah itu adalah 1 atau 0 setelah satu detik telah berlalu, maka akan menunggu dua detik dan kemudian memeriksa nilai bit berikutnya , dan seterusnya.
2) I2C
Inter Integrated Circuit atau sering disebut I2C adalah standar komunikasi serial dua arah menggunakan dua saluran yang didisain khusus untuk mengirim maupun menerima data. Sistem I2C terdiri dari saluran SCL (Serial Clock) dan SDA (Serial Data) yang membawa informasi data antara I2C dengan pengontrolnya. Piranti yang dihubungkan dengan sistem I2C Bus dapat dioperasikan sebagai Master dan Slave. Master adalah piranti yang memulai transfer data pada I2C Bus dengan membentuk sinyal Start, mengakhiri transfer data dengan membentuk sinyal Stop, dan membangkitkan sinyal clock. Slave adalah piranti yang dialamati master.
Sinyal Start merupakan sinyal untuk memulai semua perintah, didefinisikan sebagai perubahan tegangan SDA dari “1” menjadi “0” pada saat SCL “1”. Sinyal Stop merupakan sinyal untuk mengakhiri semua perintah, didefinisikan sebagai perubahan tegangan SDA dari “0” menjadi “1” pada saat SCL “1”. Kondisi sinyal Start dan sinyal Stop seperti tampak pada Gambar dibawah ini.
Gambar 32. Komunikasi I2C
Sinyal dasar yang lain dalam I2C Bus adalah sinyal acknowledge yang disimbolkan dengan ACK Setelah transfer data oleh master berhasil diterima slave, slave akan menjawabnya dengan mengirim sinyal acknowledge, yaitu dengan membuat SDA menjadi “0” selama siklus clock ke 9. Ini menunjukkan bahwa Slave telah menerima 8 bit data dari Master. Kondisi sinyal acknowledge seperti tampak pada Gambar dibawah ini
Gambar 33. Transfer data I2c
Dalam melakukan transfer data pada I2C Bus, kita harus mengikuti tata cara yang telah ditetapkan yaitu:
• Transfer data hanya dapat dilakukan ketikan Bus tidak dalam keadaan sibuk.
• Selama proses transfer data, keadaan data pada SDA harus stabil selama SCL dalam keadan tinggi. Keadaan perubahan “1” atau “0” pada SDA hanya dapat dilakukan selama SCL dalam keadaan rendah. Jika terjadi perubahan keadaan SDA pada saat SCL dalam keadaan tinggi, maka perubahan itu dianggap sebagai sinyal Start atau sinyal Stop.
Gambar 34. SDA SCL I2C
Arduino UNO (Master)
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <SPI.h>
#include <Wire.h>
#include "RTClib.h"
RTC_DS1307 rtc;
#include <math.h> //loads the more advanced math functions
#define WaterLevelPin A0
int waterLevel;
float sensorVoltage;
int adcRes = 1023;
float sensorLenght = 4.00;
int sensorValue;
int voltageLogic = 5;
//LiquidCrystal_I2C lcd(0x27, 16, 2);
LiquidCrystal_I2C lcd(0x20, 16, 2);
float readWaterLevel()
{
lcd.begin();
float height;
lcd.backlight();
sensorValue = analogRead(WaterLevelPin); // membaca tengan dari sensor dalam bentuk integer
height = sensorValue * sensorLenght / adcRes;
return height;
}
double Thermister(int RawADC)
{
// Function to perform the fancy math of the Steinhart-Hart equation
double Temp;
Temp = log(((10240000 / RawADC) - 10000));
Temp = 1 / (0.001129148 + (0.000234125 + (0.0000000876741 * Temp * Temp)) * Temp);
Temp = Temp - 273.15; // Convert Kelvin to Celsius
// Temp = (Temp * 9.0) / 5.0 + 32.0; // Celsius to Fahrenheit - comment out this line if you need Celsius
return Temp;
}
void setup()
{
// put your setup code here, to run once:
pinMode(WaterLevelPin, INPUT);
while (!Serial)
; // for Leonardo/Micro/Zero
Serial.begin(9600);
if (!rtc.begin())
{
Serial.println("Couldn't find RTC");
while (1)
;
}
if (!rtc.isrunning())
{
Serial.println("RTC is NOT running!");
// following line sets the RTC to the date & time this sketch was compiled
rtc.adjust(DateTime(F(__DATE__), F(__TIME__)));
// This line sets the RTC with an explicit date & time, for example to set
// January 21, 2014 at 3am you would call:
// rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0));
}
}
void loop()
{
waterLevel = readWaterLevel();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Water Level");
lcd.setCursor(0, 1);
lcd.print(waterLevel);
lcd.print(" cm ");
delay(2000);
DateTime now = rtc.now();
lcd.clear();
lcd.print("Time : ");
lcd.setCursor(0, 1);
lcd.print(now.year(), DEC);
lcd.print('/');
lcd.print(now.month(), DEC);
lcd.print('/');
lcd.print(now.day(), DEC);
lcd.print(' ');
lcd.print(now.hour(), DEC);
lcd.print(':');
lcd.print(now.minute(), DEC);
lcd.print(":");
lcd.print(now.second(), DEC);
delay(2000);
int val; // Create an integer variable
int temp; // Variable to hold a temperature value
val = analogRead(A1); // Read the analog port 0 and store the value in val
temp = Thermister(val); // Runs the fancy math on the raw analog value
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temperature : ");
lcd.setCursor(0, 1);
lcd.print(temp);
lcd.print(" C");
delay(2000);
Serial.print(temp);
Serial.print(",");
Serial.print(waterLevel);
Serial.print(",");
Serial.print(now.hour());
Serial.print(",");
Serial.println("");
}
Arduino UNO (Slave)
// Define Pin
int led1 = 4;
int led2 = 5;
int led3 = 6;
int led4 = 7;
int sw = 8;
int but = 9;
int pot = A0;
int fan = 11;
int pump = 10;
int lamp = 12;
#include <LiquidCrystal_I2C.h>
int butVal;
int swVal;
int counter;
int potVal;
int tempThres = 20;
int tmpVal;
int tmpThres;
int tmpLevel;
int tmpHour;
int levelThres = 10;
int hourThres = 16;
//LiquidCrystal_I2C lcd(0x27, 16, 2); Real
LiquidCrystal_I2C lcd(0x20, 16, 2); // Proteus
void setup() {
// put your setup code here, to run once:
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(sw, INPUT);
pinMode(but, INPUT);
pinMode(pot, INPUT);
pinMode(fan, OUTPUT);
pinMode(lamp, OUTPUT);
pinMode(pump, OUTPUT);
Serial.begin(9600);
lcd.begin();
lcd.backlight();
}
void loop() {
butVal = digitalRead(but);
swVal = digitalRead(sw);
if (swVal == 1)
{
digitalWrite(led1, HIGH);
if (butVal == 1)
{
counter += 1;
delay(1000);
}
if (counter == 0)
{
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Setting Mode");
delay(500);
}
if (counter >= 5)
{
counter = 0;
}
else if (counter == 1)
{
digitalWrite(led2, HIGH);
digitalWrite(led3, LOW);
digitalWrite(led4, LOW);
potVal = analogRead(pot);
tmpThres = map(potVal, 0, 1023, 0, 100);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Temp Thres: ");
lcd.print(tempThres);
lcd.setCursor(0, 1);
lcd.print("Change Thres: ");
lcd.print(tmpThres);
delay(500);
}
else if (counter == 2)
{
tempThres = tmpThres;
digitalWrite(led3, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led4, LOW);
potVal = analogRead(pot);
tmpLevel = map(potVal, 0, 1023, 0, 10);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Level Thres: ");
lcd.print(levelThres);
lcd.setCursor(0, 1);
lcd.print("Change Thres: ");
lcd.print(tmpLevel);
delay(500);
}
else if (counter == 3)
{
levelThres = tmpLevel;
digitalWrite(led4, HIGH);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
potVal = analogRead(pot);
tmpHour = map(potVal, 0, 1023, 0, 24);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hour Thres: ");
lcd.print(hourThres);
lcd.setCursor(0, 1);
lcd.print("Change Thres: ");
lcd.print(tmpHour);
delay(500);
}
else if (counter == 4) {
hourThres = tmpHour;
digitalWrite(led4, HIGH);
digitalWrite(led2, HIGH);
digitalWrite(led3, HIGH);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("temp : ");
lcd.print(tempThres);
lcd.print(" Hour:");
lcd.print(hourThres);
lcd.setCursor(0, 1);
lcd.print("Level : ");
lcd.print(levelThres);
delay(500);
}
else if (counter == 5) {
digitalWrite(led4, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
else {
lcd.clear();
digitalWrite(led4, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
}
}
else {
digitalWrite(led1, LOW);
digitalWrite(led4, LOW);
digitalWrite(led2, LOW);
digitalWrite(led3, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Operation Mode");
delay(500);
if (Serial.available() > 0)
{
lcd.clear();
int data1 = Serial.parseInt(); // Temperature
int data2 = Serial.parseInt(); // Water Level
int data3 = Serial.parseInt(); // Hours
if (data1 != 0)
{
lcd.setCursor(0, 0);
lcd.print("Temp : ");
lcd.print(data1);
lcd.setCursor(0, 1);
lcd.print("thres : ");
lcd.print(tempThres);
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Water : ");
lcd.print(data2);
lcd.setCursor(0, 1);
lcd.print("thres : ");
lcd.print(levelThres);
delay(1000);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Hour : ");
lcd.print(data3);
lcd.setCursor(0, 1);
lcd.print("thres : ");
lcd.print(hourThres);
delay(1000);
// Thres Temp
if (data1 > tempThres)
{
digitalWrite(fan, HIGH);
}
else {
digitalWrite(fan, LOW);
}
/// Thres Water
if (data2 > levelThres)
{
digitalWrite(pump, HIGH);
delay(4000);
digitalWrite(pump, LOW);
}
// Thres hours
if ((data3 >= hourThres) and (data3 <= hourThres + 6))
{
digitalWrite(lamp, HIGH);
}
else {
digitalWrite(lamp, LOW);
}
}
}
}
}
Flowchart Master
Flowchart slave
6. Rangkaian Simulasi [kembali]
Tidak ada komentar:
Posting Komentar