• Tidak ada hasil yang ditemukan

ALAT PEMBERI MAKAN TERNAK AYAM SECARA OTOMATIS BERBASIS MIKROKONTROLER ARDUINO ATMEGA328 LAPORAN PROJEK AKHIR 2 NOVRINDAH MANUNGKALIT

N/A
N/A
Protected

Academic year: 2022

Membagikan "ALAT PEMBERI MAKAN TERNAK AYAM SECARA OTOMATIS BERBASIS MIKROKONTROLER ARDUINO ATMEGA328 LAPORAN PROJEK AKHIR 2 NOVRINDAH MANUNGKALIT"

Copied!
52
0
0

Teks penuh

(1)

ALAT PEMBERI MAKAN TERNAK AYAM SECARA OTOMATIS BERBASIS MIKROKONTROLER ARDUINO ATMEGA328

LAPORAN PROJEK AKHIR 2

NOVRINDAH MANUNGKALIT 162411063

PROGRAM STUDI D-III METROLOGI DAN INSTRUMENTASI FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM

UNIVERSITAS SUMATERA

UTARA MEDAN

2019

(2)

LEMBAR PENGESAHAN

Judul : Alat Pemberi Makan Ternak Ayam Secara Otomatis Berbasis Mikrokontroler Arduino ATMega328

Kategori : Projek Akhir II

Nama : Novrindah Manungkalit

NIM : 162411063

Program Studi ; Diploma (D3) Metrologi Dan Instrumentasi Departemen : Fisika

Fakultas : Matematika Dan Ilmu Pengetahuan Alam Universitas Sumatera Utara

Disetujui di Medan, Juli 2019

Disetujui Oleh

Program Studi D3 Metrologi dan Instrumentasi Dosen Pembimbing, Ketua,

Dr.Diana Alemin Barus, M.Sc Dr.Diana Alemin Barus, M.Sc NIP.196607291992032002 NIP.196607291992032002

(3)

PERNYATAAN

ALAT UKUR KUALITAS UDARA MENGGUNAKAN SENSOR GAS MQ135 BERBASIS MIKROKONTROLER ARDUINO UNO

PROJEK AKHIR 1

Saya mengakui bahwa Projek Akhir ini adalah hasil karya sendiri. Kecuali beberapa kutipan dan ringkasan yang masing-masing disebutkan sumbernya.

Medan, Juli 2019

NOVRINDAH MANUNGKALIT 162411063

(4)

PENGHARGAAN

Puji syukur penulis ucapkan kepada Tuhan Yang Maha Esa karena atas limpahan rahmat dan karunia-Nya sehingga Projek Akhir 1 ini dapat terselesaikan.

Dalam kesempatan ini penulis menyampaikan rasa ucapan terima kasih yang sebesar- besarnya kepada, Project Akhir 1 ini serta buat seluruh keluarga yang telah membantu, mendukung dan memberikan kelonggaran serta dukungan terhadap pendidikan saya hingga bisa seperti sekarang.

Serta orang-orang yang mendukung sehingga penulis dapat menyelesaikan Projek Akhir ini. Pada kesempatan ini penulis mengucapkan terima kasih banyak kepada :

1. Yth.Bapak Dekan Dr. Kerista Sebayang, MS beserta jajarannya di lingkungan FMIPA USU

2. Ibu Dr. Diana Alemin Barus, M.Sc, selaku Ketua Program Studi D3 Metrologi dan Instrumentasi FMIPA sekaligus dosen pembimbing saya. Penulis sangat berterima kasih untuk setiap bimbingan, masukan, saran bahkan waktu yang senantiasa diberikan kepada penulis sampai pada akhir penyelesaian projek akhir ini.

3. Bapak Dr, S.Si, M.Si selaku dosen penguji saya. Saya sangat berterima kasih untuk waktu yang senantiasa diberikan kepada penulis sampai pada akhir penyelesaian projek akhir ini.

4. Seluruh Dosen dan Karyawan Program Studi D3 Metrologi Dan Instrumentasi Departemen Fisika FMIPA-USU

5. Kepada teman-teman seperjuangan di D3 Metrologi dan Instrumentasi Stambuk 2016 atas dorongan dan kesabaran kalian untuk menghadapi teman seperti saya ini.

6. Kepada Ibu saya S. Manurung dan Abang saya Ps. Kardi Manungkalit, yang sudah selalu menyemangati, mendukung, memberi semua yang terbaik serta mendoakan saya hingga sampai saya bisa menyelesaikan Projek Akhir saya ini.

Tak ada gading yang tak retak tak ada sesuatu yang sempurna, begitu juga dengan Tugas Akhir saya ini. Penulis menyadari bahwa Projek Akhir ini belum sempurna. Untuk itu, penulis mengharapkan kritik dan saran yang bersifat konstruktif guna perbaikan di masa mendatang. Dan berharap ini bermanfaat dan dapat menambah wawasan kita.

Medan, Juli 2019 Penulis,

Novrindah Manungkalit

(5)

ALAT PEMBERI MAKAN TERNAK AYAM SECARA OTOMATIS BERBASIS MIKROKONTROLER ARDUINO ATMEGA328

ABSTRAK

Bagi peternak yang memiliki sejumlah besar ayam, dapat menjadi tugas yang sulit untuk menjaga mereka memberi makan sepanjang waktu.Apalagi jika peternak tersebut juga berprofesi sebagai petani. Umumnya para peternak memberikan pakan menggunakan tangan dan harus berjalan sepanjang kandang yang mana kandang ayam yang diternakkan dalam jumlah besar biasanya jauh dari pemukiman. Kegiatan seperti itu bagi peternak ayam akan menyita waktu dan tenaga. Alat ini akan membuat peternak menggunakan waktunya sebaik mungkin. Pemberian pakan ayam dapat dipermudah dengan penggunaan alat mekanik yang dikontrol oleh peralatan eletronik. Sistem ini merupakan alat kontrol yang mampu memberikan pakan ayam secara otomatis sesuai jadwal. Pengendali utama sistem ini menggunakan mikrokontroler yang di program dan di delay sebagai penyesuaian waktu pemberian pakan ayam. Metode yang digunakan adalah Prototyping yang memiliki keunggulan pengembang dapat bekerja lebih baik dalam menentukan kebutuhan setiap pelanggannya dan lebih menghemat waktu dalam pengembangan sistem.

Kata Kunci:, Pakan, Ternak, Mikrokontroller, Motor Servo, DC Converter LM2596

(6)

AUTOMATIC CHICKEN FEEDING EQUIPMENT BASED ON ARDUINO ATMEGA328 MICROCONTROLLER

ABSTRACT

For farmers who have a large number of chickens, it can be a difficult task to keep them feeding all the time. Especially if the farmer also works as a farmer. Generally farmers provide feed using their hands and must walk along the cage where large numbers of chicken farms are usually far from the settlement. Activities like that for chicken farmers will take time and energy. This tool will make farmers use their time as well as possible. Providing chicken feed can be facilitated by the use of mechanical devices that are controlled by electronic equipment. This system is a control device that is able to provide chicken feed automatically on schedule. The main controller of this system uses a microcontroller that is programmed and is delayed as an adjustment to chicken feeding time. The method used is Prototyping which has the advantage of developers can work better in determining the needs of each customer and save more time in developing the system.

Keyword : Animal Feed, Microcontroller, Servo Motor, DC Converter LM2596

(7)

DAFTAR ISI

Halaman

Persetujuan i

Pernyataan ii

Penghargaan iii

Abstrak iv

Abstract v

Daftar Isi vi

Daftar Tabel viii

Daftar Gambar ix

Bab 1. Pendahuluan

1.1 Latar Belakang 1

1.2 Tujuan 2

1.3 Rumusan Masalah 2

1.4 Batasan Masalah 2

1.5 Metodologi 2

1.6 Sistematika Penulisan 3

Bab 2. Tinjauan Pustaka

2.1 Mikrokontroler ATMega238 5

2.2 Arduino 8

2.2.1 Software Arduino 10

2.2.2 Hardware Arduino 10

2.3 Motor Servo 11

2.4 LCD (Liquid Crystal Display) 13

2.5 Power Supply 16

2.6 RTC DS1307 (Realtime Clock) 17

2.7 DC Converter LM2596 19

Bab 3.

3.1 Rancangan Diagram Blok Sistem 21

3.2 Fungsi Tiap Blok Sistem 22

3.3 Flowchart 23

3.4 Diagram Wiring 24

Bab 4.

4.1 Pengujian Power Supply 25

4.2 Pengujian Rangkaian Liquid Crystal Display (LCD) 2x16 25

4.3 Pengujian Alat 26

4.4 Data Pengamatan 44

(8)

Bab 5.

5.1 Kesimpulan 45

5.2 Saran 45

DAFTAR PUSTAKA 46

LAMPIRAN

(9)

DAFTARA TABEL

Halaman

Tabel 2.1 Deskripsi Pin Pada LCD 14

Tabel 4.1 Hasil Pengujian RTC 44

(10)

DAFTAR GAMBAR

Halaman

Gambar 2.1 Mikrokontroler ATMega328 5

Gambar 2.2 Pin Mikrokontroler Atmega328 6

Gambar 2.3 Arduino 8

Gambar 2.4 Motor Servo 12

Gambar 2.5 Prinsip Kerja Motor Servo 13

Gambar 2.6 LCD (Liquid Crystal Display) 14

Gambar 2.7 Rangkaian LCD pada Arduino Nano 16

Gambar 2.8 Rangkaian Power Supply pada Arduino Nano 17

Gambar 2.9 RTC DS1307 17

Gambar 2.10 Konfigurasi Pin RTC 18

Gambar 2.11 DC Converter LM2596 19

Gambar 3.1 Bagan Diagram Blok Sistem 21

Gambar 3.2 Flowchart Alat 23

Gambar 3.3 Rangkaian Keseluruhan Sistem Minimum 24

Gambar 4.1 Tampilan LCD pada saat Jadwal Pemberian Makanan Ternak 43 Gambar 4.2 Pengujian Alat untuk Jadwal Pemberian Makanan Ternak secara otomatis 44

(11)

BAB 1 PENDAHULUAN

1.1 Latar Belakang

Memelihara ayam sebagai hewan ternak membutuhkan banyak waktu dan tenaga.

Namun, dengan kesibukan lain yang bertambah para peternak kadang lalai atau lupa dalam mengurus ternak meraka, padahal hewan ternak yang tidak mendapatkan pakan teratur menjadi tidak sehat dan kurus. Masalah ini membuat banyak peternak rugi dalam memelihara hewan ternak. Untuk mengatasi masalah ini maka diciptakanlah alat yang akan membantu para peternak. Alat ini digunakan untuk memberikan hewan ternak makan teratur sesuai yang kita inginkan. Para peternak dapat mengatur jadwal pemberian makan hewan sesuai dengan keinginan melalui menu-menu yang telah disediakan. Perancangan alat makan hewan ternak ini terjadwal otomatis agar ternak ayam tersebut tetap bisa mendapatkan asupan makanan meskipun pemilik hewan ternak tersebut sedang melakukan aktifitas,

Pemberian pakan ayam dapat dipermudah dengan penggunaan alat mekanik yang dikontrol oleh peralatan elektronik. Sistem ini merupakan alat kontrol yang mampu memberikan pakan ayam secara otomatis sesuai jadwal. Pengendali utama sistem ini menggunakan Mikrokontroler yang dihubungkan dengan sebuah arduino dan pengatur waktu pemberian pakan ayam dengan real time clock (RTC). Alat otomasi ini memiliki dua bagian, yaitu wadah utama berfungsi sebagai tempat untuk menyimpan cadangan makanan yang dilengkapi DC Converter LM2596, dan wadah kedua sebagai tempat makan ternak ayam tersebut.

Real Time Clock berfungsi untuk mengatur jam makan hewan ternak, pemberian makan hewan ternak dilakukan pada jam 07.00 wib, dan jam 17.00 wib untuk makan pagi, siang, dan sore. Penggunaan Arduino ini digunakan sebagai alat pengontrol utama yang dapat diprogram untuk kerja alat sehingga motor Servo membuka wadah pangan dapat berjalan secara otomatis, sesuai dengan waktu yang telah ditetapkan. Dengan menggunakan alat ini maka hewan ternak akan tetap memdapatkan asupan makanan ketika pemelihara tidak dapat menyiapkan makanan untuk hewan ternak tersebut.

1.2 Tujuan

Dalam penulisan tugas akhir ini penulis mengangkat sebuah judul

“Alat Pemberi Makan Ternak Ayam Secara Otomatis Berbasis Mikrokontroler Arduino ATMega328”

Adapun tujuan dari pengangkatan judul ini adalah:

(12)

1. Pemilik hewan tidak perlu repot untuk memberi makan hewan ternak disaat ada kerjaan lain.

2. Makanan akan keluar sesuai dengan waktu yang telah ditetapkan.

3. Kegiatan pemilik yang lain tidak akan terganggu dengan aktifitas memberi makan hewan ternak yang harus tepat waktu.

1.3 Rumusan Masalah

Dari uraian diatas maka dapat dirumuskan masalah pembuatan tugas akhir ini sebagai berikut :

1. Bagaimana pengaturan jadwal pemberian pakan ternak ayam dengan menggunakan Real Time Clock (RTC)?

2. Bagaimana mengatur pembuka katup penutup penampung makanan ternak menggunakan Motor Servo?

1.4 Batasan Masalah

Dalam pembuatan tugas akhir ini penulis membatasi masalah, agar tidak meluasnya pembahasan-pembahasan yang timbul. Adapun batasan masalah dalam pembuatan tugas akhir ini adalah:

1. Pengaturan pemberi pakan ayam dengan Real Time Clock (RTC).

2. Pengaturan pengeluaran pakan ayam pada wadah menggunakan motor Sevo dengan ketetapan jam.

3. Jenis pakan ayam yang diberikan adalah makanan yang kering.

1.5 Metodologi

Untuk memperoleh sistem yang baik, tentu tidak terlepas dari cara atau metoda yang dipakai pada saat melakukan proses pembuatan tugas akhir ini, untuk itu dalam pembuatan tugas akhir ini digunakan langkah-langkah sebagai berikut:

1. Studi Literatur

Dalam metode ini dilakukan kajian literatur untuk melakukan pendekatan terhadap konsep-konsep yang digunakan. Dan untuk lebih meningkatkan pemahaman terhadap aspek-aspek teori yang mendukung pembuatan perangkat keras dan perangkat lunak.

2. Perancangan

Dalam hal ini dilakukan perancangan perangkat keras dan lunak yang berhubungan dengan tugas akhir.

(13)

3. Pembuatan Alat

Dalam hal ini dilakukan pembuatan tugas akhir sesuai dengan perancangan perangkat keras dan perangkat lunak.

a. Membuat dan menguji rangkaian microkontroller.

b. Merancang dan membuat serta menguji rangkaian sensor ultrasonik.

c. Merancang dan membuat serta menguji rangkaian motor servo (membuka/

menutup wadah).

d. Merancang dan membuat serta menguji sistem pengontrolan makan hewan peliharaan otomatis.

1.6 Sitematika Penulisan

Secara garis besar pembahasan dan pembuatan tugas akhir ini terbagi dalam beberapa bab yaitu:

BAB I PENDAHULUAN

Pada bab ini menjelaskan tentang latar belakang, tujuan pembuatan tugas akhir, rumusan masalah, batasan masalah, metode penulisan, serta sistematika penulisan dari pembuatan tugas akhir ini.

BAB II LANDASAN TEORI

Bab ini berisikan teori dasar atau penunjang yang diperoleh dari referensi yang dipublikasikan secara resmi dan berisi pengujian yang dilakukan yang dilakukan orang lain yang nantinya digunakan sebagai referensi dan penunjang pembuatan tugas akhir.

BAB III PERANCANGAN DAN PEMBUATAN ALAT

Bab ini berisi tentang perancangan dan pembuatan rangkaian perangkat keras dan perangkat lunak.

BAB IV PENGUJIAN DAN ANALISA

Bab ini berisikan pengujian dari alat yang dibuat, dan dilanjutkan dengan analisa sesuai dengan teori yang berhubungan dengan tugas akhir.

BAB V PENUTUP

Bab ini berisi tentang kesimpulan dari pembuatan keseluruhan alat yang disertai dengan saran untuk kesempurnaan laporan ini.

(14)

BAB 2

LANDASAN TEORI

2.1 Mikrokontroler ATMega328

Mikrokontroler adalah sebuah chip yang berfungsi sebagai pengontrol rangkaian elektronik dan umumnya dapat menyimpan program didalamnya. Dan berfungsi sebagai pengontrol rangkaian elektronik dan umumnya dapat menyimpan program yang umumnya terdiri dari CPU, memori, I/O tertentu dan unit pendukung seperti Analog-to-Digital Converter (ADC) yang sudah terintegrasi di dalamnya. Kelebihan utama dari mikrokontroler ialah tersedianya RAM dan peralatan I/O pendukung sehingga ukuran board mikrokontroler menjadi sangat ringkas. Mikrokontroler juga berfungsi menyimpan program di MCS51 ialah mikrokomputer CMOS 8 bit dengan 4 KB Flash PEROM (Programmable and Erasable Only Memory) yang dapat dihapus dan ditulisi sebanyak 1000 kali. Mikrokontroler ini diproduksi dengan menggunakan teknologi high density non-volatile memory. Flash PEROM on-chip tersebut memungkinkan memori program untuk diprogram ulang dalam sistem (in-system programming) atau dengan menggunakan programmer nonvolatile memory konvensional.

Kombinasi CPU 8 bit serba guna dan Flash PEROM, menjadikan mikrokontroler MCS51 menjadi mikrokomputer handal yang fleksibel. Mikrokontroler tersusun dalam satu chip dimana prosesor, memori, dan I/O terintegrasi menjadi satu kesatuan kontrol sistem sehingga mikrokontroler dapat dikatakan sebagai komputer mini yang dapat bekerja secara inovatif sesuai dengan kebutuhan sistem.

Gambar 2.1 Mikrokontroler ATMega328

ATMega328 merupakan mikrokontroler keluarga AVR 8 bit. Beberapa tipe mikrokontroler yang sama dengan ATMega8 ini antara lain ATMega8535, ATMega16, ATMega32, ATmega328, yang membedakan antara mikrokontroler antara lain adalah, ukuran memori, banyaknya GPIO (pin input/output), peripherial (USART, timer, counter, dll). Dari segi ukuran fisik, ATMega328 memiliki ukuran fisik lebih kecil dibandingkan dengan

(15)

beberapa mikrokontroler diatas. Namun untuk segi memori dan periperial lainnya ATMega328 tidak kalah dengan yang lainnya karena ukuran memori dan periperialnya relatif sama dengan ATMega8535, ATMega32, hanya saja jumlah GPIO lebih sedikit dibandingkan mikrokontroler diatas.

Gambar 2.2 Pin Mikrokontroler Atmega328

ATMega328 memiliki 3 buah PORT utama yaitu PORTB, PORTC, dan PORTD dengan total pin input/output sebanyak 23 pin. PORT tersebut dapat difungsikan sebagai input/outputdigital atau difungsikan sebagai periperal lainnya.

1. Port B

Port B merupakan jalur data 8 bit yang dapat difungsikan sebagai input/output. Selain itu PORTB juga dapat memiliki fungsi alternatif seperti di bawah ini.

a. ICP1 (PB0), berfungsi sebagai Timer Counter 1 input capture pin.

b. OC1A (PB1), OC1B (PB2) dan OC2 (PB3) dapat difungsikan sebagai keluaran PWM (Pulse Width Modulation).

c. MOSI (PB3), MISO (PB4), SCK (PB5), SS (PB2) merupakan jalur komunikasi SPI.

d. Selain itu pin ini juga berfungsi sebagai jalur pemograman serial (ISP).

e. TOSC1 (PB6) dan TOSC2 (PB7) dapat difungsikan sebagai sumber clock external untuk timer.

f. XTAL1 (PB6) dan XTAL2 (PB7) merupakan sumber clock utama mikrokontroler.

2. Port C

Port C merupakan jalur data 7 bit yang dapat difungsikan sebagai input/output digital.

Fungsi alternatif PORTC antara lain sebagai berikut.

a. ADC6 channel (PC0,PC1,PC2,PC3,PC4,PC5) dengan resolusi sebesar 10 bit. ADC dapat kita gunakan untuk mengubah input yang berupa tegangan analog menjadi data digital

(16)

b. I2C (SDA dan SDL) merupakan salah satu fitur yang terdapat pada PORTC. I2C digunakan untuk komunikasi dengan sensor atau device lain yang memiliki komunikasi data tipe I2C seperti sensor kompas, accelerometer nunchuck.

3. Port D

Port D merupakan jalur data 8 bit yang masing-masing pin-nya juga dapat difungsikan sebagai input/output. Sama seperti Port B dan Port C, Port D juga memiliki fungsi alternatif dibawah ini.

a. USART (TXD dan RXD) merupakan jalur data komunikasi serial dengan level sinyal TTL. Pin TXD berfungsi untuk mengirimkan data serial, sedangkan RXD kebalikannya yaitu sebagai pin yang berfungsi untuk menerima data serial.

b. Interrupt (INT0 dan INT1) merupakan pin dengan fungsi khusus sebagai interupsi hardware. Interupsi biasanya digunakan sebagai selaan dari program, misalkan pada saat program berjalan kemudian terjadi interupsi hardware/software maka program utama akan berhenti dan akan menjalankan program interupsi.

c. XCK dapat difungsikan sebagai sumber clock external untuk USART, namun kita juga dapat memanfaatkan clock dari CPU, sehingga tidak perlu membutuhkan external clock.

d. T0 dan T1 berfungsi sebagai masukan counter external untuk timer 1 dan timer 0.

e. AIN0 dan AIN1 keduanya merupakan masukan input untuk analog comparator.

ATMega328 adalah mikrokontroler keluaran dari atmel yang mempunyai arsitektur RISC (Reduce Instruction Set Computer) yang mana setiap proses eksekusi data lebih cepat dari pada arsitektur CISC (Completed Instruction Set Computer). Mikrokontroler ini memiliki beberapa fitur antara lain:

1. Memiliki EEPROM (Electrically Erasable Programmable Read Only Memory) sebesar 1KB sebagai tempat penyimpanan data semi permanen karena EEPROM tetap dapat menyimpan data meskipun catu daya dimatikan.

2. Memiliki SRAM (Static Random Access Memory) sebesar 2KB.

3. Memiliki pin I/O digital sebanyak 14 pin 6 diantaranya PWM (Pulse Width Modulation) output.

4. 32 x 8-bit register serba guna.

5. Dengan clock 16 MHz kecepatan mencapai 16 MIPS.

6. 32 KB Flash memory dan pada arduino memiliki bootloader yang menggunakan 2 KB dari flash memori sebagai bootloader.

7. 130 macam instruksi yang hampir semuanya dieksekusi dalam satu siklus clock.

(17)

2.2 Arduino

Gambar 2.3 Arduino

Arduino adalah nama keluarga papan mikrokontroler yang awalnya dibuat oleh perusahaan smart project. Salah satu tokoh penciptanya adalah Massimo Banzi. Papan ini merupakan perangkat keras yang bersifat “open source” sehingga boleh dibuat oleh siapa saja. Arduino dibuat dengan tujuan untuk memudahkan eksperimen atau perwujudan pelbagai peralatan yang berbasis mikrokontroler. Berbagai jenis kartu Arduino tersedia, antara lain Arduino Uno, Arduino Diecimila, Arduino Duemilanove, Arduino Leonardo, Arduino Mega, dan Arduino Nano. Walaupun ada pelbagi jenis kartu Arduino, secara prinsip pemrograman yang diperlukan menyerupai. Hal yang membedakan adalah kelengkapan fasilitas an pin-pin yang perlu digunakan.

Pada lingkungan arduino sudah didesain sedemikian rupa agar mudah digunakan bagi pemula yang tidak memiliki pengalaman software maupun pengalaman dalam bidang elektronika. Dengan arduino, anda bisa membangun objek yang bisa merespon pada atau mengendalikan lampu, suara, sentuhan, dan pergerakan Arduino sudah digunakan untuk membuat berbagai alat yang menakjubkan, termasuk instrumen musik, berbagai robot, LED matrix, game, furniture interaktif, dan bahkan baju interaktif.

Untuk memahami Arduino, terlebih dahulu kita harus memahami terlebih dahulu apa yang dimaksud dengan physical computing. Physical computing adalah membuat sebuah sistem atau perangkat fisik dengan menggunakan software dan hardware yang sifatnya interaktif yaitu dapat menerima rangsangan dari lingkungan dan merespon balik. Physical computing adalah sebuah konsep untuk memahami hubungan yang manusiawi antara lingkungan yang sifat alaminya adalah analog dengan dunia digital. Pada prakteknya konsep ini diaplikasikan dalam desain- desain alat atau projek-projek yang menggunakan sensor dan microcontroller untuk menerjemahkan input analog ke dalam sistem software untuk mengontrol gerakan alat-alat elektro-mekanik seperti lampu, motor dan sebagainya.

Pembuatan prototype atau prototyping adalah kegiatan yang sangat penting di dalam proses physical computing karena pada tahap inilah seorang perancang melakukan eksperimen dan

(18)

uji coba dari berbagai jenis komponen, ukuran, parameter, program komputer dan sebagainya berulang-ulang kali sampai diperoleh kombinasi yang paling tepat. Dalam hal ini perhitungan angka-angka dan rumus yang akurat bukanlah satu-satunya faktor yang menjadi kunci sukses di dalam mendesain sebuah alat karena ada banyak faktor eksternal yang turut berperan, sehingga proses mencoba dan menemukan/mengoreksi kesalahan perlu melibatkan hal-hal yang sifatnya non-eksakta. Prototyping adalah gabungan antara akurasi perhitungan dan seni.

Arduino dikenal karena perangkat kerasnya yang hebat, tetapi anda juga membutuhkan software untuk memprogram perangkat keras terssebut. Baik hardware dan softwarenya disebut dengan “Arduino”.

2.2.1 Software Arduino

Program software, disebut dengan sketch, dibuat di dalam komputer menggunakan arduino Integrated Devolopment Environtment (IDE). IDE memnungkinkan anda untuk menulis dan meng-edit code dan mengkonversinya menjadi instruksi yang bisa dipahami oleh perangkat keras (Hardware) Arduino. IDE juga bisa mentrasfer instruksi ke dalam board Arduino (sebuah proses yang disebut uploading). IDE arduino merupakan software yang sangat canggih ditulis dengan menggunakan java. IDE arduino terdiri dari:

1. Editor Program

Sebuah window yang memungkinkan pengguna menulis dan mengedit program dalam bahasa processing

2. Compiler

Sebuah modul yang mengubah kode program menjadi kode biner bagaimanapun sebuah mikrokontroler tidak akan bisa memahami bahasa processing.

3. Uploader

Sebuah modul yang memuat kode biner dari komputer ke dalam memory di dalam papan Arduino

2.2.2 Hardware Arduino

Board Arduino adalah tempat di mana code yang anda tulis akan dieksekusi. Board hanya bisa mengontrol dan merespod pada sinyal listrik, jadi komponen tertentu yang terpassang dengannyalah yang memungkinkannya bisa berinteraksi dengan dunia sesungguhnya.

Komponen ini bisa berupa senso, yang menkonversi beberapa aspek dari lingkungan nyata menjadi listrik sehingga board bisa merasakannya, atau aktuator yang mendapatkan listrik dari board dan mengkonversinya menjadi sesuatu yang bisa mengubah lingkungan nyata.

Beberapa contoh sensor diantaranya termasuk switch, accelerometer, dan sensor jarak ultrasound. Aktuator adalah sesuatu seperti lampu dan LED, speaker, motor, dan layar.

Terdapat banyak sekali board resmi yang bisa anda gunakan dengan software Arduino dan

(19)

cakupan kecocokannya luas sekali dari board Arduino yang di hasilkan oleh anggota komunitasnya. Board yang paling terkenal berisi sebiuah konektor USB yang bisa digunakan untuk menyalurkan daya dan koneksi untuk mengupload software anda ke dalam board. Anda bisa mendapatkan board sekecil mungkin seperti perangko, seperti Arduino Mini, dan Pro Mini; board yang lebih besar memiliki koneksi yang lebih banyak dan memiliki processor yang lebih kuat, seperti Arduino Mega; dan board yang dibangun untuk aplikasi tertentu, seperti LilyPad untuk aplikasi yang dipakai (seperti baju dan lain-lain), Fio untuk project yang tidak menggunakan kabel (wireless), dan Arduino Pro untuk aplikasi yang ditanam (project mandiri yang mampu beroperasi menggunakan baterai). Dan masih banyak lagi Arduino Board yang disesuaikan, seperti berikut ini:

 Arduni Nano, board kecil yang memiliki kemampuan USB, dari Gravitech

 Bare Bones Board, board murah yang disertai atau tidak kemampuan USB, dari Modern device

 Boarduino. Sebuah bord murang yang mendukung penggunaan breadboard, dari Adafruit Industries

 Seeeduino, sebuah board variasi flexibel standart USB, dari seeed studio bazaar

 Teensy dan Teensy++, board kecil tetapi sangat serbaguna, dari PJRC.

2.3 Motor Servo

Motor servo adalah sebuah perangkat atau aktuator putar (motor) yang dirancang dengan sistem kontrol umpan balik loop tertutup (servo), sehingga dapat di set-up atau di atur untuk menentukan dan memastikan posisi sudut dari poros output motor. motor servo merupakan perangkat yang terdiri dari motor DC, serangkaian gear, rangkaian kontrol dan potensiometer.

Serangkaian gear yang melekat pada poros motor DC akan memperlambat putaran poros dan meningkatkan torsi motor servo, sedangkan potensiometer dengan perubahan resistansinya saat motor berputar berfungsi sebagai penentu batas posisi putaran poros motor servo.

Penggunaan sistem kontrol loop tertutup pada motor servo berguna untuk mengontrol gerakan dan posisi akhir dari poros motor servo. Penjelasan sederhananya begini, posisi poros output akan di sensor untuk mengetahui posisi poros sudah tepat seperti yang di inginkan atau belum, dan jika belum, maka kontrol input akan mengirim sinyal kendali untuk membuat posisi poros tersebut tepat pada posisi yang diinginkan. Untuk lebih jelasnya mengenai sistem kontrol loop tertutup, perhatikan contoh sederhana beberapa aplikasi lain dari sistem kontrol loop tertutup, seperti penyetelan suhu pada AC, kulkas, setrika dan lain sebagainya. Motor servo biasa digunakan dalam aplikasi-aplikasi di industri, selain itu juga digunakan dalam

(20)

berbagai aplikasi lain seperti pada mobil mainan radio kontrol, robot, pesawat, dan lain sebagainya.

Gambar 2.4 Motor Servo

Ada dua jenis motor servo, yaitu motor servo AC dan DC. Motor servo AC lebih dapat menangani arus yang tinggi atau beban berat, sehingga sering diaplikasikan pada mesin-mesin industri. Sedangkan motor servo DC biasanya lebih cocok untuk digunakan pada aplikasi- aplikasi yang lebih kecil. Dan bila dibedakan menurut rotasinya, umumnya terdapat dua jenis motor servo yang dan terdapat di pasaran, yaitu motor servo rotation 180⁰ dan servo rotation continuous.

Motor servo standard (servo rotation 180⁰ ) adalah jenis yang paling umum dari motor servo, dimana putaran poros outputnya terbatas hanya 90⁰ kearah kanan dan 90⁰ kearah kiri. Dengan kata lain total putarannya hanya setengah lingkaran atau 180⁰ .

Motor servo rotation continuous merupakan jenis motor servo yang sebenarnya sama dengan jenis servo standard, hanya saja perputaran porosnya tanpa batasan atau dengan kata lain dapat berputar terus, baik ke arah kanan maupun kiri.

Prinsip kerja motor servo yaitu, Motor servo dikendalikan dengan memberikan sinyal modulasi lebar pulsa (Pulse Wide Modulation / PWM) melalui kabel kontrol. Lebar pulsa sinyal kontrol yang diberikan akan menentukan posisi sudut putaran dari poros motor servo.

Sebagai contoh, lebar pulsa dengan waktu 1,5 ms (mili detik) akan memutar poros motor servo ke posisi sudut 90⁰ . Bila pulsa lebih pendek dari 1,5 ms maka akan berputar ke arah posisi 0⁰ atau ke kiri (berlawanan dengan arah jarum jam), sedangkan bila pulsa yang diberikan lebih lama dari 1,5 ms maka poros motor servo akan berputar ke arah posisi 180⁰ atau ke kanan (searah jarum jam). Lebih jelasnya perhatikan gambar dibawah ini.

(21)

Gambar 2.5 Prinsip kerja Motor Servo

Ketika lebar pulsa kendali telah diberikan, maka poros motor servo akan bergerak atau berputar ke posisi yang telah diperintahkan, dan berhenti pada posisi tersebut dan akan tetap bertahan pada posisi tersebut. Jika ada kekuatan eksternal yang mencoba memutar atau mengubah posisi tersebut, maka motor servo akan mencoba menahan atau melawan dengan besarnya kekuatan torsi yang dimilikinya (rating torsi servo). Namun motor servo tidak akan mempertahankan posisinya untuk selamanya, sinyal lebar pulsa kendali harus diulang setiap 20 ms (mili detik) untuk menginstruksikan agar posisi poros motor servo tetap bertahan pada posisinya.

2.4 LCD (Liquid Crystal Display)

LCD adalah singkatan dari kata liquid crystal display, yaitu panel penampil yang dibuat dari bahan kristal cair. Kristal dengan sifat-sifat khusus yang menampilkan warna lengkap yang berasal dari efek pantulan/transmisi cahaya dengan panjang gelombang pada sudut lihat tertentu, merupakan salah satu rekayaan penting yang menunjang kebutuhan akan peralatan elektronik serba tipis da ringan. Pada dasarnya, secara garis besar efek cahaya pada bahan penyusun LCD dapat dideskripsikan sebagai berikut: operasi PDLC (polymer dispersed liquid crystal) pada keadaan transparan (pixel kiri) dan pada keadaan hamburan (pixel kanan). Pada keadaan transparen, tegangan dikenalkan pada pixel, oleh karenanya mengarahkan kristal cair dalam droplet/ titik kecil dan menciptakan indek sesuai kondisi dimana no sesuai np. Pada keadaan hamburan, sumbu simetris pada droplet secara acak diorientasikan, menciptakan indek tidak sesuai n antara droplet dan matrik pengkapsulan.

(22)

Gambar 2.6 LCD (Liquid Crystal Display) Tabel 2.1 Deskripsi Pin Pada LCD

Pin Deskripsi

1 Ground

2 Vcc

3 Pengatur kontras

4 “RS” Instruction/Register Select 5 “R/W” Read/Write LCD Registers

6 “EN” Enable

7-14 Data I/O Pins

15 Vcc

16 Ground

LCD (Liquid Crystal Display) juga merupakan suatu jenis media tampil yang menggunakan kristal cair sebagai penampil utama. LCD sudah digunakan diberbagai bidang misalnya alal–alat elektronik seperti televisi, kalkulator, ataupun layar komputer. Pada bab ini aplikasi LCD yang dugunakan ialah LCD dot matrik dengan jumlah karakter 2 x 16. LCD sangat berfungsi sebagai penampil yang nantinya akan digunakan untuk menampilkan status kerja alat.

Adapun fitur yang disajikan dalam LCD ini adalah : 1. Terdiri dari 16 karakter dan 2 baris

2. Mempunyai 192 karakter tersimpan 3. Terdapat karakter generator terprogram 4. Dapat dialamati dengan mode 4-bit dan 8-bit 5. Dilengkapi dengan back light.

6. Tersedia VR untuk mengatur kontras.

7. Pilihan konfigurasi untuk operasi write only atau read/write.

(23)

8. Catu daya +5 Volt DC.

9. Kompatibel dengan DT-51 dan DT-AVR Low Cost Series serta sistem mikrokontroler/mikroprosesor lain.

Prinsip kerja LCD yaitu, pada aplikasi umumnya RW diberi logika rendah “0”. Bus data terdiri dari 4-bit atau 8-bit. Jika jalur data 4-bit maka yang digunakan ialah DB4 sampai dengan DB7. Sebagaimana terlihat pada table diskripsi, interface LCD merupakan sebuah parallel bus, dimana hal ini sangat memudahkan dan sangat cepat dalam pembacaan dan penulisan data dari atau ke LCD. Kode ASCII yang ditampilkan sepanjang 8-bit dikirim ke LCD secara 4-bit atau 8 bit pada satu waktu. Jika mode 4-bit yang digunakan, maka 2 nibble data dikirim untuk membuat sepenuhnya 8-bit (pertama dikirim 4-bit MSB lalu 4- bit LSB dengan pulsa clock EN setiap nibblenya). Instruksi pembacaan hanya satu, yaitu Get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke “0”. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallel baik 4-bit atau 8-bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting.

Untuk mengirim data ke LCD program harus menset EN ke kondisi high “1” dan kemudian menset dua jalur kontrol lainnya (RS dan R/W) atau juga mengirimkan data ke jalur data bus. Saat jalur lainnya sudah siap, EN harus diset ke “0” dan tunggu beberapa saat (tergantung pada datasheet LCD), dan set EN kembali ke high “1”. Ketika jalur RS berada dalam kondisi low “0”, data yang dikirimkan ke LCD dianggap sebagai sebuah perintah atau instruksi khusus (seperti bersihkan layar, posisi kursor dll). Ketika RS dalam kondisi high atau “1”, data yang dikirimkan adalah data ASCII yang akan ditampilkan dilayar. Misal, untuk menampilkan huruf “A” pada layar maka RS harus diset ke “1”.

Jalur kontrol R/W harus berada dalam kondisi low (0). Saat informasi pada data bus akan dituliskan ke LCD. Apabila R/W berada dalam kondisi high “1”, maka program akan melakukan query (pembacaan) data dari LCD. Instruksi pembacaan hanya satu, yaitu get LCD status (membaca status LCD), lainnya merupakan instruksi penulisan. Jadi hampir setiap aplikasi yang menggunakan LCD, R/W selalu diset ke “0”. Jalur data dapat terdiri 4 atau 8 jalur (tergantung mode yang dipilih pengguna), DB0, DB1, DB2, DB3, DB4, DB5, DB6 dan DB7. Mengirim data secara parallelbaik 4-bit atau 8-bit merupakan 2 mode operasi primer. Untuk membuat sebuah aplikasi interface LCD, menentukan mode operasi merupakan hal yang paling penting. Mode 8-bit sangat baik digunakan ketika kecepatan menjadi keutamaan dalam sebuah aplikasi dan setidaknya minimal tersedia 11

(24)

pin I/O (3 pin untuk kontrol, 8 pin untuk data).Sedangkan mode 4 bit minimal hanya membutuhkan 7-bit (3 pin untuk kontrol, 4 pin untuk data).

Gambar 2.7 Rangkaian LCD pada Arduino Nano

2.5 Power Supply

Power Supply atau dalam bahasa Indonesia disebut dengan Catu Daya adalah suatu alat listrik yang dapat menyediakan energi listrik untuk perangkat listrik ataupun elektronika lainnya. Pada dasarnya Power Supply atau Catu daya ini memerlukan sumber energi listrik yang kemudian mengubahnya menjadi energi listrik yang dibutuhkan oleh perangkat elektronika lainnya. Oleh karena itu, Power Supply kadang-kadang disebut juga dengan istilah Electric Power Converter. Pada umumnya Power Supply dapat diklasifikasikan menjadi 3 kelompok besar, yakni berdasarkan Fungsinya, berdasarkan Bentuk Mekanikalnya dan juga berdasarkan Metode Konversinya.

(25)

Gambar 2.8 Rangkaian Power Supply pada Arduino Nano

2.6 RTC DS1307 (Realtime Clock)

Gambar 2.9 RTC DS1307

Komponen Realtime clock adalah komponen IC penghitung yang dapat difungsikan sebagai sumber data waktu baik berupa data jam, hari, bulan maupun tahun. Komponen DS1307 berupa IC yang perlu dilengkapi dengan komponen pendukung lainnya seperti crystal sebagai sumber clock dan Battery External 3,6 Volt sebagai sumber energy cadangan agar fungsi penghitung tidak berhenti.

Bentuk komunikasi data dari IC RTC adalah I2C yang merupakan kepanjangan dari Inter Integrated Circuit. Komunikasi jenis ini hanya menggunakan 2 jalur komunikasi yaitu SCL dan SDA. Semua microcontroller sudah dilengkapi dengan fitur komunikasi 2 jalur ini, termasuk diantaranya Arduino Microcontroller.

(26)

Gambar 2.10 Konfigurasi Pin RTC

Anda dapat mengkombinasikan display Seven segment, display jenis LCD ataupun jenis matrix led untuk menampilkan data dari IC RTC. Dengan bantuan Arduino microcontroller semua opsi tersebut akan menjadi lebih mudah. Koneksi ke arduino dilakukan dengan menggunakan I2C. Oleh karena itu, pin SDA dihubungkan ke pin 4 dan SCL ke pin 5. Contoh penyusunan rangkaian yang menghubungkan Arduino dan modul RTC.

Komponen RTC DS1307 memiliki ketelitian dengan Error sebesar 1 menit per tahunnya.

Fungsi pin dari komponen RTC S1307 adalah sebagai berikut :

1. Pin Vcc (Nomor 8) berfungsi sebagai sumber energy listrik Utama. Tegangan kerja dari komponen ini adalah 5 volt, dan ini sesuai dengan tegangan kerja dari microcontroller Arduino Board

2. Pin GND (Nomor 4) Anda harus menghubungkan ground yang dimiliki oleh komponen RTC dengan ground dari battery back-up

3. SCL berfungsi sebagai saluran clock untuk komunikasi data antara Microcontroller dengan RTC

4. SDA berfungsi sebagai saluran Data untuk komunikasi data antara Microcontroller dengan RTC

5. X1 dan X2 berfungsi untuk saluran clock yang bersumber dari crustal external 6. Vbat Berfungsi sebagai saluran energy listrik dari Battery external.

2.7 DC Converter LM2596

LM2596 ini ada kode dari IC buck keluaran texas instrument, menurut datasheet dari website TI diperoleh data maksimum voltase input adalah 45volt, dengan voltase range 4,5 – 40volt dengan suhu kerja 25℃. Untuk DC-DC berarti modul ini inputan DC dan keluaran juga DC. Sedangkan HW-441, ini mungkin kali yah, penamaan modul dari sang penciptanya.

(27)

Gambar 2.11 DC Converter LM2596 Modul ini memiliki spesifikasi :

Module Properties: non-isolated step-down module (buck)

Rectification: non-synchronous rectification

Input voltage :4.5-35V

Output Voltage :1.25-30V (adjustable)

Output current: rated current 2A, Recommended less than 2A,13W

Efficiency: Up to 92% (The higher the output voltage, the higher the efficiency)

Switching frequency: 150KHz

Minimum pressure: 2V

Operating Temperature: Industrial (-40°c to +85°c) (output power of 10W or less)

Full load temperature rise: 40°c

Load regulation: ± 0.5%

Voltage regulation: ± 0.5%

Output Efficiency :

Input 12.00V 0.497A Output 4.953V 0.998A 4.941W Efficiency 82.85%

Input 12.00V 1.032A Output 4.943V 1.998A 9.878W Efficiency 79.76%

Input 12.00V 1.632A Output 4.921V 2.999A 14.76W Efficiency 75.37%

Input 23.99V 1.738A Output 11.96V 2.999A 35.88W Efficiency 86.05%

Dari spek diatas, kita dapat memberikan input dari range 7 – 35 volt, masih berada dalam range spek IC Buck. Sehingga kita lebih leluasa dalam mencari sumber daya untuk modul ini, bisa adaptor, bisa batery. Untuk output kita bisa lakukan pengaturan, dengan menggunakan potensiometer yang telah disediakan dalam rangkaian modul tersebut. Untuk pengetesan kita dapat melakukan test singkat, dengan menggunakan powersupply modif dari PSU komputer bekas, dengan keluaran PSU sebesar 12 volt, dengan Max 28Amp.

(28)

Motor Servo

BAB 3

PERANCANGAN SISTEM

3.1 Rancangan Diagram Blok Sistem

Alat pemberian pakan ternak otomatis yang dirancang pada penelitian ini adalah seperti sistem pada bagan diagram blok dibawah ini :

Pengujian perblok dilakukan dengan tujuan untuk menyesuaikan nilai pemasukan dan nilai keluaran tiap-tiap blok sesuai dengan perancangan yang dilakukan sebelumnya.

Proses

Output

Input

Gambar 3.1 Bagan Diagram Blok Sistem

Sistem kontrol alat ini menggunakan sumber listrik yang merupakan sumber daya utama yang digunakan di keseluruhan sistem. Sumber daya kemudian diteruskan ke rangkaian Arduino dan selanjutnya disebarkan keseluruhan sistem rangkaian baik itu input maupun output.

Berdasarkan pada bagan di atas, mikrokontroler berfungsi sebagai pengendali utama, motor DC sebagai proses atau pengadukan pakan, DC Converter LM2596 menerima proses dari mikrokontroler yang kemudian memberikan perintah kepada RTC DS1307 untuk menutup dan membuka penampang pakan ternak.

3.2 Fungsi Tiap Blok Sistem 1. Power Supply

Power Supply

Arduino uno ATMEGA

328

Dc Converter LM2596

RTC (Realtime clock) DS1307

Display LCD

(29)

Fungsi: Sebagai sumber listrik pada alat yang dirancang.

2. Motor Servo

Fungsi: Sebagai pengatur pengeluaran makanan pada wadah 3. Arduino Nano

Fungsi: Sebagai pemproses data yang diberikan oleh sensor.

4. LCD

Fungsi: Sebagai penampil data hasil akhir.

5. RTC (Realtime Clock) DS1307

Fungsi: Pengaturan jadwal pemberi makanan hewan ternak 6. Dc Converter LM2596

Fungsi: untuk menaikkan tegangan keluaran

(30)

3.3 Flowchart

NO

YES

Gambar 3.2 Flowchart Alat Start

Baca Jadwal RTC

Apakah Waktu = Jadwal

Proses Servo terbuka

Delay 1 detik

Tampilkan Data LCD Proses Servo

menutup

End

(31)

3.4 Diagram Wiring

Pengujian sistem secara keseluruhan dilakukan dengan tujuan untuk mengetahui unjuk kerja alat setelah perangkat keras dan perangkat lunak diintegrasikan bersama.

Gambar 3.3 Rangkaian Keseluruhan Sistem Minimum

(32)

BAB 4

ANALISA DAN PENGUJIAN

Pada bab ini, akan dibahas tentang pengujian alat berdasarkan perancangan dari sistem yang telah dibuat. Pengujian ini dilakukan untuk mengetahui kerja dari sistem dan untuk mengetahui apakah sistem telah bekerja sesuai dengan perancangan atau belum. Untuk memudahkan dalam menganalisa dan menghindari terjadinya kesalahan.

Pengujian alat dilakukan secara terpisah dimaksudkan agar mengetahui kondisi dari tiap blok atau rangkaian. Setelah semua rangkaian telah bekerja dengan baik maka dilakukan pengujian secara keseluruhan.

4.1 Pengujian Power Supply

Pengujian rangkaian power supply ini bertujuan untuk mengetahui tegangan yang dikeluarkan oleh rangkaian tersebut, dengan mengukur tegangan keluaran dari power supply menggunakan multimeter digital. Setelah dilakukan pengukuran maka diperoleh besarnya tegangan keluaran sebesar 5 volt. Dengan begitu dapat dipastikan apakah terjadi kesalahan terhadap rangkaian atau tidak. Setelah itu rangkaian power supply dihubungkan ke sumber arus listrik.

4.2 Pengujian Liquid Crystal Display (LCD) 2x16

Bagian ini hanya terdiri dari sebuah LCD dot matriks 16×2 karakter yang berfungsi sebagai tampilan hasil pengukuran dan tampilan dari beberapa keterangan.

Pengujian LCD dilakukan dengan menghubungkan LCD ke Arduino dan diprogram. Program yang dijalankan adalah menampilkan tulisan hello World! Pada baris pertama LCD. Pada baris kedua ditampilkan counter angka naik dimulai dari angka 0.

Program :

// include the library code:

#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

void setup() {

(33)

// set up the LCD's number of columns and rows:

lcd.begin(16, 2);

// Print a message to the LCD.

lcd.print("hello, world!");

}

void loop() {

// set the cursor to column 0, line 1

// (note: line 1 is the second row, since counting begins with 0):

lcd.setCursor(0, 1);

// print the number of seconds since reset:

lcd.print(millis() / 1000);

}

4.3 Pengujian Alat

Pengujian sistem secara keseluruhan ini dilakukan dengan menggabungkan semua peralatan ke dalam sebuah sistem yang terintegrasi. Tujuannya untuk mengetahui bahwa rangkaian yang dirancang telah bekerja sesuai yang diharapkan.

#include <avr/interrupt.h>

#include <avr/io.h>

#include <Wire.h>

#define DS1307_I2C_ADDRESS 0x68

#include <LiquidCrystal.h>

#include <Servo.h>

#define servoPin 9

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);

Servo myservo;

// Variable Servo Data int servoClose = 85;

int servoOpen = 130;

(34)

int pos;

// Variable jadwal

byte jamPakan1 = 7, jamPakan2 = 17;

byte second, minute, hour, dayOfWeek,Week, dayOfMonth, month, year;

// A array of the weekday

char* days[] = { "NA", "Mon", "Tue", "Wed", "Thu", "Fry", "Sat", "Sun" };

// Convert normal decimal numbers to binary coded decimal byte decToBcd(byte val)

{

return ( (val/10*16) + (val%10) );

}

// Convert binary coded decimal to normal decimal numbers byte bcdToDec(byte val)

{

return ( (val/16*10) + (val%16) );

}

// 1) Sets the date and time on the ds1307 // 2) Starts the clock

// 3) Sets hour mode to 24 hour clock // Assumes you're passing in valid numbers void setDateDs1307(byte second, // 0-59 byte minute, // 0-59

byte hour, // 1-23 byte dayOfWeek, // 1-7

byte dayOfMonth, // 1-28/29/30/31 byte month, // 1-12

byte year) // 0-99 {

Wire.beginTransmission(DS1307_I2C_ADDRESS);

Wire.write(0);

(35)

Wire.write(decToBcd(second)); // 0 to bit 7 starts the clock Wire.write(decToBcd(minute));

Wire.write(decToBcd(hour)); // If you want 12 hour am/pm you need to set // bit 6 (also need to change readDateDs1307)

Wire.write(decToBcd(dayOfWeek));

Wire.write(decToBcd(dayOfMonth));

Wire.write(decToBcd(month));

Wire.write(decToBcd(year));

Wire.endTransmission();

}

// Gets the date and time from the ds1307 void getDateDs1307(byte *second, byte *minute,

byte *hour,

byte *dayOfWeek, byte *dayOfMonth, byte *month, byte *year) {

// Reset the register pointer

Wire.beginTransmission(DS1307_I2C_ADDRESS);

Wire.write(0);

Wire.endTransmission();

Wire.requestFrom(DS1307_I2C_ADDRESS, 7);

// A few of these need masks because certain bits are control bits *second = bcdToDec(Wire.read() & 0x7f);

*minute = bcdToDec(Wire.read());

*hour = bcdToDec(Wire.read() & 0x3f); // Need to change this if 12 hour am/pm *dayOfWeek = bcdToDec(Wire.read());

*dayOfMonth = bcdToDec(Wire.read());

*month = bcdToDec(Wire.read());

*year = bcdToDec(Wire.read());

(36)

}

const int buttonMode = 11;

int previousReadingMode = HIGH;

int counterMode = 0;

const int buttonData = 12;

const int buttonDataDown = 10;

int previousReadingData = HIGH;

int previousReadingDataDown = HIGH;

int counterData = 0;

byte modeChange = 0;

byte allTimeChange = 0;

void setup() {

Wire.begin();

Serial.begin(9600);

pinMode(buttonMode,INPUT_PULLUP);

pinMode(buttonData,INPUT_PULLUP);

pinMode(buttonDataDown,INPUT_PULLUP);

lcd.begin (16,2);

lcd.clear();

lcd.setCursor(0,0);

lcd.print (" Pakan Ternak ");

lcd.setCursor(0,1);

lcd.print (" Otomatis ");

delay(2000);

lcd.clear();

myservo.attach(servoPin);

myservo.write(servoClose);

delay(1000);

myservo.detach();

}

(37)

void loop() {

switch (modeChange) {

case 0:

if(digitalRead(buttonMode) == LOW) {

lcd.clear();

counterData = hour;

modeChange = 1;

delay(500);

} else {

printTimeLcd();

} break;

case 1:

if(digitalRead(buttonMode) == LOW) {

lcd.clear();

counterData = minute;

modeChange = 2;

delay(500);

} else {

setHour();

} break;

case 2:

if(digitalRead(buttonMode) == LOW)

(38)

{

lcd.clear();

counterData = dayOfWeek;

modeChange = 3;

delay(500);

} else {

setMinute();

} break;

case 3:

if(digitalRead(buttonMode) == LOW) {

lcd.clear();

counterData = dayOfMonth;

modeChange = 4;

delay(500);

} else {

setDayOfWeek();

} break;

case 4:

if(digitalRead(buttonMode) == LOW) {

lcd.clear();

counterData = month;

modeChange = 5;

delay(500);

(39)

} else {

setDayOfMonth();

} break;

case 5:

if(digitalRead(buttonMode) == LOW) {

lcd.clear();

counterData = year;

modeChange = 6;

delay(500);

} else {

setMonth();

} break;

case 6:

if(digitalRead(buttonMode) == LOW) {

lcd.clear();

counterData = hour;

modeChange = 7;

delay(500);

} else {

setYear();

} break;

(40)

case 7:

outTime();

modeChange = 0;

break;

} }

void setHour() {

lcd.setCursor(3,0);

lcd.print("Set Hour");

lcd.setCursor(7,1);

lcd.print(counterData);

int readingData = digitalRead(buttonData);

int readingDataDown = digitalRead(buttonDataDown);

// If the reading used to be LOW and is now HIGH, that marks the transition of a button being pushed

// a transition of HIGH to LOW would indicate the button being released, but that's not what we're counting here

if (previousReadingData == HIGH && readingData == LOW) { counterData++;

}

if (previousReadingDataDown == HIGH && readingDataDown == LOW) { counterData--;

}

hour = counterData;

if (counterData > 23) {

counterData = 0;

}

if (counterData < 0) {

counterData = 23;

(41)

}

if (counterData < 10) {

lcd.setCursor(8,1);

lcd.print(" ");

counterData = counterData;

}

previousReadingData= readingData;

previousReadingDataDown= readingDataDown;

}

void setMinute() {

lcd.setCursor(3,0);

lcd.print("Set Minute");

lcd.setCursor(7,1);

lcd.print(counterData);

int readingData = digitalRead(buttonData);

int readingDataDown = digitalRead(buttonDataDown);

// If the reading used to be LOW and is now HIGH, that marks the transition of a button being pushed

// a transition of HIGH to LOW would indicate the button being released, but that's not what we're counting here

if (previousReadingData == HIGH && readingData == LOW) { counterData++;

}

if (previousReadingDataDown == HIGH && readingDataDown == LOW) { counterData--;

}

minute = counterData;

if (counterData > 59) {

counterData = 0;

}

(42)

if (counterData < 0) {

counterData = 59;

}

if (counterData < 10) {

lcd.setCursor(8,1);

lcd.print(" ");

counterData = counterData;

}

previousReadingData= readingData;

previousReadingDataDown= readingDataDown;

}

void setDayOfWeek() {

lcd.setCursor(0,0);

lcd.print("Set day (mon->1)");

lcd.setCursor(7,1);

lcd.print(counterData);

int readingData = digitalRead(buttonData);

int readingDataDown = digitalRead(buttonDataDown);

// If the reading used to be LOW and is now HIGH, that marks the transition of a button being pushed

// a transition of HIGH to LOW would indicate the button being released, but that's not what we're counting here

if (previousReadingData == HIGH && readingData == LOW) { counterData++;

}

if (previousReadingDataDown == HIGH && readingDataDown == LOW) { counterData--;

}

dayOfWeek = counterData;

if (counterData > 7)

(43)

{

counterData = 1;

}

if (counterData < 1) {

counterData = 7;

}

previousReadingData= readingData;

previousReadingDataDown= readingDataDown;

}

void setDayOfMonth() {

lcd.setCursor(3,0);

lcd.print("Set Date");

lcd.setCursor(7,1);

lcd.print(counterData);

int readingData = digitalRead(buttonData);

int readingDataDown = digitalRead(buttonDataDown);

// If the reading used to be LOW and is now HIGH, that marks the transition of a button being pushed

// a transition of HIGH to LOW would indicate the button being released, but that's not what we're counting here

if (previousReadingData == HIGH && readingData == LOW) { counterData++;

}

if (previousReadingDataDown == HIGH && readingDataDown == LOW) { counterData--;

}

dayOfMonth = counterData;

if (counterData > 31) {

counterData = 1;

}

(44)

if (counterData < 1) {

counterData = 31;

}

if (counterData < 10) {

lcd.setCursor(8,1);

lcd.print(" ");

counterData = counterData;

}

previousReadingData= readingData;

previousReadingDataDown= readingDataDown;

}

void setMonth() {

lcd.setCursor(3,0);

lcd.print("Set Month");

lcd.setCursor(7,1);

lcd.print(counterData);

int readingData = digitalRead(buttonData);

int readingDataDown = digitalRead(buttonDataDown);

// If the reading used to be LOW and is now HIGH, that marks the transition of a button being pushed

// a transition of HIGH to LOW would indicate the button being released, but that's not what we're counting here

if (previousReadingData == HIGH && readingData == LOW) { counterData++;

}

if (previousReadingDataDown == HIGH && readingDataDown == LOW) { counterData--;

}

month = counterData;

if (counterData > 12)

(45)

{

counterData = 1;

}

if (counterData < 1) {

counterData = 12;

}

if (counterData < 10) {

lcd.setCursor(8,1);

lcd.print(" ");

counterData = counterData;

}

previousReadingData= readingData;

previousReadingDataDown= readingDataDown;

}

void setYear() {

lcd.setCursor(3,0);

lcd.print("Set Year");

lcd.setCursor(7,1);

lcd.print(counterData);

int readingData = digitalRead(buttonData);

int readingDataDown = digitalRead(buttonDataDown);

// If the reading used to be LOW and is now HIGH, that marks the transition of a button being pushed

// a transition of HIGH to LOW would indicate the button being released, but that's not what we're counting here

if (previousReadingData == HIGH && readingData == LOW) { counterData++;

}

if (previousReadingDataDown == HIGH && readingDataDown == LOW) { counterData--;

}

(46)

year = counterData;

second = 50;

if (counterData > 26) {

counterData = 16;

}

if (counterData < 16) {

counterData = 26;

}

if (counterData < 10) {

lcd.setCursor(8,1);

lcd.print(" ");

counterData = counterData;

}

previousReadingData= readingData;

previousReadingDataDown= readingDataDown;

}

void outTime() {

setDateDs1307(second, minute, hour, dayOfWeek, dayOfMonth, month, year);

}

void printTimeLcd() {

byte second, minute, hour, dayOfWeek,Week, dayOfMonth, month, year;

String s,m,h,d,mth;

getDateDs1307(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,

&year);

///////////////////////////////////////// instruction for display /////////////////////////

if (second < 10) { s = "0" + String(second,DEC); } else { s = String(second,DEC); } if (minute < 10) { m = "0" + String(minute,DEC); } else { m = String(minute,DEC); }

(47)

if (hour < 10) { h = "0" + String(hour,DEC); } else { h = String(hour,DEC); } if (dayOfMonth < 10) { d = "0" + String(dayOfMonth,DEC); } else { d = String(dayOfMonth,DEC); }

if (month < 10) { mth = "0" + String(month,DEC); } else { mth = String(month,DEC); }

Week = dayOfWeek,DEC;

lcd.setCursor(0,0);

lcd.print(" ");

lcd.print(h); lcd.print(":"); // hour lcd.print(m); lcd.print(":"); // minute lcd.print(s); // second

lcd.print(" ");

lcd.setCursor(0,1);

lcd.print(" ");

lcd.print(days[Week]); lcd.print(","); // day lcd.print(d); lcd.print("/"); // date

lcd.print(mth); lcd.print("/"); // month lcd.print(year,DEC); //year

lcd.print(" ");

/////////////////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////// instruction for servo /////////////////////////

if(hour == jamPakan1 && minute == 0 && second <=2 || hour == jamPakan2 && minute

== 0 && second <=2 ) {

lcd.clear();

lcd.setCursor(0,0);

lcd.print(" Jadwal Tiba ");

lcd.setCursor(0,1);

lcd.print("Memberikan Pakan");

servoOpenProcess();

delay(250);

servoCloseProcess();

(48)

lcd.clear();

lcd.setCursor(0,0);

lcd.print(" Pakan telah");

lcd.setCursor(0,1);

lcd.print(" Diberikan");

delay(2000);

lcd.clear();

} }

void servoCloseProcess(){

myservo.attach(servoPin);

for (pos = servoOpen; pos >= servoClose; pos -= 1) { myservo.write(pos);

delay(1);

}

delay(500);

myservo.detach();

delay(500);

}

void servoOpenProcess(){

myservo.attach(servoPin);

for (pos = servoClose; pos <= servoOpen; pos += 1) { myservo.write(pos);

delay(1);

}

delay(500);

myservo.detach();

delay(500);

}

(49)

Gambar 4.1 Tampilan LCD pada saat Jadwal Pemberian Makanan Ternak

Gambar 4.2 Pengujian Alat untuk Jadwal Pemberian Makanan Ternak secara otomatis

4.4 Data Pengamatan

Pengujian RTC disini bertujuan untuk mengetahui apakah RTC mampu menjadi pewaktu (jam,menit,detik,tanggal,bulan dan tahun) namun untuk alat ini pewaktu yang dimanfaatkan cuma berupa jam,menit dan detik. Pada pengujian kali ini dilakukan pengambilan data dalam bentuk perbandingan waktu (jam,menit) yang ditampilkan RTC dan jam yang ditampilkan Android dengan zona GMT+7

Tabel4.1 Hasil Pengujian RTC Pemberian Pakan Jadwal Makan Keluaran

Pagi 07.00 Servo membuka 40

derajat

Sore 17.00 Servo membuka 40

derajat

(50)

Dari data pengukuran diatas maka terlihat bahwa pembacaan RTC tidak terjadi kesalahan maka RTC bisa dijadikan pewaktu yang akurat seperti halnya jam android. RTC ini mampu bekerja untuk mengupdate waktu sesuai dengan pewaktu lainnya meski sumber utama diputuskan karena RTC sudah dibekali dengan baterai sebagai supply cadangan.

(51)

BAB 5

KESIMPULAN DAN SARAN

5.1 Kesimpulan

Dari hasil penelitian dan pembahasan tentang Alat Pemberi Makan Ternak Ayam Secara Otomatis Berbasis Mikrokontroler Arduino ATMega328 dapat disimpulkan bahwa:

1. Pembacaan pengaturan RTC sama dengan waktu yang ada pada jam android, RTC akan memberikan sinyal ke motor servo setiap jam 07.00 dan 17.00 wib.

2. Motor servo akan terbuka selama 60 detik pada keluaran pertama dari tahapan pemberian pakan ayam setiap hari, kemudian motor servo akan terbuka selama 5 detik pada keluaran pakan ayam sampai LCD menampilkan “Jadwal Tiba Memberikan Pakan”.

5.2 Saran

Diharapkan alat ini dapat lebih dikembangkan lagi, baik dari segi fungsi maupun aplikasi serta implementasi yang lebih baik dan luas, seperti :

1. Dilakukan penyempurnaan pada desain, hardware termasuk pemilihan sensor dan mikrokontrollernya agar hasil yang diinginkan lebih sempurna.

2. Pengembangan selanjutnya dapat ditambahkan dengan ukuran penyimpanan makanan ayam yang lebih besar supaya pakan ayam dapat diberikan untuk waktu yang lama.

(52)

DAFTAR PUSTAKA

Wardoyo, Siswo. 2015. “Pengantar Mikrokontroler dan Aplikasi pada Arduino”.

Cilegon: Teknosain

Susanto, Indra. 2018. “Microcontroller Menguasai Arduino”. Yogyakarta:

Teknosain

Muis, saludin. 2018. “Prinsip Kerja LCD dan Pembuatannya”. Yogyakarta:

Graha Ilmu

Kadir, Abdul. 2015. “Arduino Panduan Mempelajari Aneka Proyek Berbasis Mikrokontroler”. Yogyakarta: ANDI

Arindya, Raditia. 2013. “Penggunaan dan Pengaturan Motor Listrik”.

Yogyakarta: Graha Ilmu

https://teknikelektronika.com/pengertian-motor-dc-prinsip-kerja-dc-motor/

Diakses pada : 29 mei 2019

http://ym-try.blogspot.com/2014/02/atmega328.html Diakses pada : 30 mei 2019

https://proyekarduino.wordpress.com/2015/04/01/pengetahuan-dasar-rtc-ds1307/

Diakses pada : 15 juni 2019

https://arjunaldi.staff.telkomuniversity.ac.id/preview-lm2596-step-module/

Diakses pada : 22 juni 2019

http://trikueni-desain-sistem.blogspot.com/2014/03/Pengertian-Motor-Servo.html Diakses pada : 15 Juli 2019

Gambar

Gambar 2.1 Mikrokontroler ATMega328
Gambar 2.2  Pin Mikrokontroler Atmega328
Gambar 2.3 Arduino
Gambar 2.4 Motor Servo
+7

Referensi

Dokumen terkait

Pada bab ini akan diulas tentang hal yang berhubungan dengan perancangan perangkat lunak agar alat yang dirancang dapat bekerja sesuai dengan fungsi yang

Alat pemberi pakan ayam otomatis ini telah dirancang agar dapat mengatur waktu makan ayam sehingga tidak ada pengeluaran pakan yang berlebih, serta dapat

Perancangan alat dengan sensor Infrared berbasis arduino menggunakan conveyor belt agar sistem automatic serta Layar LCD yang dapat diaplikasikan sebagai sistem pembaca barang

RTC DS3231 memberi sinyal kepada mikrokontoler arduino uno sebagai kendali untuk mengendalikan motor servo agar dapat membuka dan menutup sesuai waktu yang telah

Perbedaan penjemur gabah ini dengan jemuran pakaian otomatis adalah pada sistem kontrolnya, dimana akan digunakan Mikrokontroler Atmega328 dari board Arduino Uno

Perbedaan penjemur gabah ini dengan jemuran pakaian otomatis adalah pada sistem kontrolnya, dimana akan digunakan Mikrokontroler Atmega328 dari board Arduino Uno

Saran Rancang Bangun Alat Pemberi Pakan Otomatis Ikan Lele dapat bekerja dengan baik, namun sebelum memberikan pakan ikan lebih baik dilakukan kalibrasi terlebih dahulu untuk

Berdasarkan hasil pengujian sistem kontrol, sistem dapat berjalan sesuai dengan yang diharapkan, dimana nilai berat dapat ditampilkan di LCD, motor servo dapat bekerja berdasarkan