http://ejournal.unp.ac.id/index.php/jtev/index
Volume 5  Nomor 2 2019 ISSN: 2302-3309

## PEMOGRAMAN ALAT PENIMBANG DAN PACKING BERAS BERBASIS MIKROKONTROLER
Juli Sardi 1 * , Mhd Iqbal 1 , Ali Basrah Pulungan 1 , Habibullah 1
1 Jurusan Teknik Elektro, Fakultas Teknik, Universitas Negeri Padang *Corresponding author, e-mail: julisardi@ft.unp.ac.id

## Abstrak
Pada  umumnya,  proses  penimbangan  beras  di  Indonesia  dilakukan  dengan  cara  manual,  ini  akan mengakibatkan resiko beras tumpah dan memakan waktu lama. penelitian ini bertujuan untuk membuat program  aplikasi  pengontrolan  pengantongan,  penimbang,  dan  packing  beras  otomatis  untuk mempermudah  pekerjaan  para    penjual  beras.  Pada  perancangan  ini,  mikrokontroler  ATmega  328 digunakan  sebagai  pusat  pengendali  sistem  secara  keseluruhan,  motor  servo  untuk  membuka  dan menutup  katup  pada  bak  penampungan,  sensor  loadcell  untuk  menimbang  beras,  tombol  untuk menentukan  jumlah  berat  yang  diinginkan,  serta  LCD  sebagai  media  penampil  data  disetiap  proses pengerjaan.  Pemograman  menggunakan software Arduino  IDE.  Berdasarkan  hasil  pengujian,  maka didapatkan hasil pada saat sensor loadcell membaca jumlah nilai berat beras yang telah ditimbang adalah 2  kg  dan  4  kg.  Jika  tombol  1  di  tekan  ,  maka  motor  servo  akan  berputar  dan  beras  akan  keluar  dari penampungan dan loadcell akan menimbang 2 kg, proses berikutnya dengan mengaktifkan motor dc 1 pada bagian belt conveyor untuk menjalankan kantong beras yang telah berisikan beras untuk menuju ke bagian  mekanik  pengepresan  beras,  belt    conveyor  akan  berhenti  sampai  kondisi  sensor  infrared  2 mendeteksi kantong plastik, jika telah terdeteksi dan motor dc 1 dimatikan maka proses pengepresan akan dimulai,  ditandai  dengan  aktifnya  central  lock  dan  heater  untuk  kondisi  pemilihan  berat  2000  gram. Selesai menimbang akan tampil pada LCD jumlah berat yang diinginkan. Berdasarkan pengujian tersebut, maka dapat disimpulkan bahwa kerja alat yang dirancang dan dibuat telah bekerja dengan efisien.
Kata Kunci: Sensor Load Cell, Mikrokontroller, Penimbangan Beras

## Abstract
In general, the process of weighing rice in Indonesia is done manually, this will lead to the risk of spilling rice and takes a long time. This study aims to create an application program for controlling bagging, weighing, and automatic rice packing to facilitate the work of rice sellers. In this design, the ATmega 328 microcontroller is used as the central control system as a whole, servo motor to open and close the valve in the container, loadcell sensor to weigh rice, buttons to determine the desired amount of weight, and LCD as a data display media in each process. Programming using Arduino IDE software. Based on the test results, the results obtained when the loadcell sensor reads the total weighted value of rice is 2 kg and 4 kg. If button 1 is pressed, the servo motor will spin and the rice will come out of the container and the loadcell will weigh 2 kg, the next process is by activating the dc motor 1 in the conveyor belt to run the rice bag containing the rice to go to the mechanical presses of rice , the conveyor belt will stop until the condition of the infrared sensor 2 detects a plastic bag, if it has been detected and the dc motor 1 is turned off then the pressing process will begin, marked by the active central lock and heater for the weight selection conditions of 2000 grams. Finished weighing will appear on the LCD the desired amount of weight. Based on these tests, it can be concluded that the work tools designed and created have worked efficiently
Keywords : Sensor Load Cell, Microcontroller, Weighing Rice
Load Cell Sensor IR1 Sensor IR2 ATMega328 Selenoid (Press) Motor Servo LCD 2x16 Buzzer Motor DC 1 Power Supply 5Vdc Tombol 1 Tombol 2 Heater Power Supply 12Vdc Motor DC 2

## PENDAHULUAN
Kemajuan teknologi otomasi industri dan komunikasi pada saat ini sudah semakin pesat dan luas. Hal ini didorong oleh kebutuhan industri dan komunikasi yang semakin berkembang dan bervariasi dari tahun ketahun. Mesin otomatis memiliki banyak kelebihan misalnya kecepatan proses  pengemasan  dan  penggunaaan  bahan  kemas  dengan  harga  yang  lebih  murah dibandingkan dengan harga mesin manual. Namun, dari segi harga mesin otomatis lebih mahal dibandingkan dengan mesin  manual.  Sehingga bagi  pelaku  Industri  Kecil Menengah  (IKM), hal  ini  lebih  menjadi  kendala  dalam  pengadaannya  disebabkan  keterbatasan  modal.  Dari keterbatasan  biaya  dan  efisiensi  tempat  bagi  industri  kerja  mandiri  (IKM)  maka  timbulnya sebuah ide menciptakan suatu alat yang berfungsi sebagai pengisian dan packing beras  yang minimalis dalam pemanfaatan dan biaya yang relatif kecil dan cara kerja serta kegunaan yang tidak  kalah  dengan  industri  besar.  tujuan  penelitian  ini  adalah  membuat  program  dari  alat pengantongan,  penimbangan,  dan  sekaligus  pemackingan  beras  otomatis    berbasis mikrokontroler sehingga didapatkan timbangan beras yang lebih efisien.
Timbangan  pada  dasarnya  adalah  alat  untuk  mengukur  berat/massa.  Timbangan didefinisikan  juga  sebagai  suatu  alat  untuk  menentukan  massa  suatu  benda  dengan memanfaatkan  gaya  gravitasi  yang  bekerja  pada  benda  tersebut.  Pada  timbangan  terdapat parameter dasar yang penting. Sistem kontrol adalah kombinasi dari beberapa komponen yang bekerja bersama-sama untuk suatu besaran atau keadaan. Besaran atau keadaan ini yang diukur dan  diubah  oleh  kontroler  sehingga  menpengaruhi  nilai  variable  yang  dikontrol  [1]. Mikrokontroler  adalah  sebuah  komputer  kecil  (“ special  purpose computers ”)   di   dalam satu   IC   yang   berisi   CPU,   memori, timer ,   saluran komunikasi serial dan parallel, Port input/output ,  ADC.  Mikrokontroler  digunakan  untuk  suatu  tugas  dan  menjalankan  suau program [2].
Bahasa C adalah bahasa pemograman yang dapat dikatakan berada diantara bahasa beraras tinggi  dan  beraras  rendah  [3].  Bahasa  beraras  rendah  artinya  bahasa  yang  berorientasi  pada mesin, sedangkan beraras tinggi berorientasi pada manusia. Bahasa beraras rendah, misalnya bahasa  assembler,  ditulis  dengan  sandi  yang  hanya  dimengerti  oleh  mesin  sehingga  hanya digunakan bagi  yang memprogram mikroprosesor. Bahasa beraras rendah merupakan bahasa yang  membutuhkan  kecermatan  tinggi  bagi  pemogram  karena  perintahnya  harus  rinci, ditambah lagi masing-masing pabrik mempunyai sandi perintah sendiri [4].

## METODE
Blok diagram keseluruhan sistem terlihat pada Gambar 1 berikut:
Power  supply  digunakan  untuk  memberikan  muatan  arus  yang  dibutuhkan  olehtiap-tiap modul rangkaian.Pada rangkaian ini penulis menggunakan 2 buah sumber tegangan pada power supply, sumber tegangan 5 Vdc dan   12 Vdc. Mikrokontroler ATMega328 merupakan bagian yang berfungsi untuk memproses input yang dimasukan dan menghasilkan berupa aktifasi pada entity ouput berupalcd 2x16, motor dc, solenoid dan buzzer. Sensor Infrared Merupakan sensor yang  difungsikan  untuk  mendeteksi  kantong  plastik  disaat  pengisian  beras  (sensor  IR1)  dan pendeteksian kantong plastik disaat pengepresan kantong plastic (sensor IR2). Sensor Loadcell Merupakan  sebagai  media  input  yang  berfungsi  mendeteksi  beban  beras  yang  akan  diisikan kedalam kantong plastik. Motor Servo Berfungsi sebagai pengerak katub buka dan tutup tempat pengisian  beras  pada  kantong  plastik.  Motor  DC  Berfungsi  sebagai  pengerak  belt  conveyor untuk memindahkan kantong plastik dari proses pingisian beras ke proses pengepresan  kantong plastik.  Buzzer  Berfungsi  sebagai  media  yang  mengeluarkan  bunyi  sebagai  penanda  kondisi proses pengisian dan proses pengepresan selesai. Heater Berfungsi sebagai pemanas kantong plastik atau untuk pengemas beras dengan kantong plastik.
Pada perancangan alat ini sistem bekerja secara otomatis, dimana sistem bekerja tanpa adanya kendali atau control dari lua rsistem,  kendali keseluruhan sistem dikendalikan hanya melalui Mikrokontroler ATMega328. Dimana Sistem pengisian dan pengepresan plastic beras secara otomatis, nilai data yang di keluarkan akan dikirimkan ke Mikrokontroler ATMega328 untuk  diproses,  dari  nilai  data  tersebut  akan  menghasilkan  keluaran  berupa  aktifasi  dari tampilan pada LCD, aktifasi pergerakan buka dan tutup katub beras, aktifasi pada penggerak bell conveyor dan aktifasi buzzer sebagai penanda proses telah selesai. Perangkat lunak yang digunakan untuk pembuatan program inia dalah ARDUINO, yaitu sebuah perangkat lunak yang digunakan  untuk  pemograman  mikrokontroler  ATMega  328  yang  menggunakan  bahasa  C. Adapun prosedur perancangan program alat pengantongan dan penimbangan beras otomatis ini yaitu:  Merancang  sistem  kerja  alat  dan  Penentuan  Input/Output.  Identifikasi  I/O  yang  akan digunakan terlihat pada Tabel 1.
Tabel 1. Identifikasi I/O ATMega 328 Perangkat Pin yang Digunakan Keterangan Tombol 1 dan    tombol 2 Portb.0 dan portb.1 Input Sensor loadcell Portd2 dan portd.3 Input Sensor IR 1 dan sensor IR2 Portd5 dan portd.6 Input LCD Portc.4 dan Portc.5 Output Servo Portd.4 Output Motor dc1 Portb.2 Output Motor dc2 Portb.3 dan Portb.4 Output Selenoid Portb.5 Output Buzzer Portd.7 Output Heater Portc.0 Output
Pada  perancangan  software  ini  terdiri  dari  diagram  alir (flowchart). Flowchart  berfungsi sebagai  acuan  dalam  membuat  listing  program.  Pada  Flowchart  berisi  penentuan  instruksi- instruksi  dari  program  yang  akan  dibuat.  Gambar  2  berikut  merupakan  flowchart  dari perancangan alat.
Gambar 2. Folowchart Pemograman Pada Alat Penimbang Beras Otomatis
Flowchart diatas di mulai  (START) dan Inisisalisasi port dan register, Jika sensor IR1 “0” pengisian beras kekantong plastik akan aktif Kemudian motor servo akan aktif, selenoid akan terbuka 45 derajat.  Kantong plastik  akan terisi beras dan sensor beban akan aktif jika beban beras mencapai 5000 gram atau 5 kg, LCD akan menampilkan kapasitasberas. Apabila beban beras tidak sampai 5000 gram maka selenoid akan terus terbuka, hingga kantong plastik akan terisi beras sampai mencapai 5000 gram. Setelah pengisian selesai servo aktif  dan  selenoid menutup kembali, untuk menghentikan pengisian beras pada kantong plastik . Kemudian motor DC akan aktif.  Motor  DC  sebagai  conveyor  yang mengantarkan kantong plastik  yang telah terisi beras ketempat pengepresan .Jika sensor IR2 mendeteksi adanya plastik atau berlogika 1, maka conveyor akan berhenti. Mesin press akan aktif, untuk mengaktifkan mesin press itu harus dengan  mengaktifkan  heater  pemanas  dari  pengepresan.  Setelah  itu  selenoid  aktif.  Proses pengepresan dimulai selama 2 detik, Selenoid dimatikan dilanjutkan dengan motor DC ON dan Buzer ON selama 5 detik menandakan pengepressan sudah selesai.

## HASIL DAN PEMBAHASAN
1. Deklarasi library yang digunakan
#include "hx711.h" #include <Servo.h> #include <Wire.h> #include <LiquidCrystal_I2C.h> //=================================
Pada deklarasi di atas terdapat pendeklarasian #include <LiquidCrystal.h> yang berfungsi sebagai library LCD yang digunakan pada  Arduino Uno. #include <HX711.h> berfungsi untuk driver  pembacaan  nilai  loadcell.  Pendeklarasian  #include  <  Servo.h>  berfungsi  untuk menyatakan pada program ini memanfaatkan motor Servo sebagai pembuka dan penutup tangki beras.

## 2. Inisialisasi Pin
Liquid Crystal_I2C lcd(0x3f,16,2);   // inisialisasi LCD Hx711 scale(3,2 );                  // Inisialisasi Sensor loadcell Servo myservo;                      // inisialisasi Servo => myservo //================================= // pin I/O //================================= int tombol1 = 8; int tombol2 = 9; int sensor1 = 5; int sensor2 = 6; int buzzer = 7;
int motor1 = 11; int selenoid = 10; int motor2 = 12; int motor22 = 13; int heater = 14;
Pada program inisialisasi di atas pin yang digunakan untuk LCD yaitu pin SDA dan SCL. Pin D2 dan D3 sebagai masukan dari pembacaan sensor loadcell, sedangkan pin D4 digunakan untuk  mengontrol  motor  servo.  D5  dan  D6  digunakan  sensor,Pin  D7  digunakan  untuk mengotrol buzzer, Pin B5 digunakan untuk selenoid, C0 digunakan untuk mengatur Heater.

## 3. Konfigurasi Program
Serial.begin(9600); lcd.init(); lcd.backlight(); myservo.attach(9); pinMode(sensor1,INPUT); pinMode(sensor1,INPUT); pinMode(tombol1,INPUT);
pinMode(tombol2,INPUT); pinMode(motor1,OUTPUT); pinMode(motor2,OUTPUT); pinMode(motor22,OUTPUT); pinMode(selenoid,OUTPUT); pinMode(buzzer,OUTPUT); pinMode(heater,OUTPUT);
Program  di  atas  merupakan  sketch  yang  digunakan  untuk  menset  pin  yang  digunakan sebagai input/output pada rangkaian Arduino Uno.
digitalWrite(motor1, LOW); digitalWrite(motor2, LOW); digitalWrite(motor22, LOW); digitalWrite(buzzer, LOW); digitalWrite(heater, LOW);
Pada sketch diatas merupakan program yang akan dijalankan hanya ketika program Arduino dijalankan untuk pertama kalinya dengan kondisi awal output atau keluaran yang dipakai pada program. Pada baris pertama dari fungsi ini yaitu digital Write(motor1,LOW) , dimana pada pin 14 logika yang diberikan yaitu 0 ( low ) artinya pada kondisi awal indikator hijau dalam keadaan mati, berikut digital Write (motor2,LOW) logika program  yang dituliskan yaitu 0 ( low ) pada pin 15, sehingga indikator merah juga dalam keadaan mati, digital  Write  (buzz,LOW) logika program  yang  dituliskan  yaitu  0  ( low )  pada  pin  13  dan digital  Write  (heater,LOW) logika program yang dituliskan yaitu 0 ( low ) pada pin 23 menyatakan bahwa heater tidak bekerja.

## 4. Tampilan LCD
Berikut ini adalah program untuk tampilan lcd dengan ukuran 2 baris x 16 karakter, jika teks lebih dari 16 Karakter maka teksnya akan terpotong.
lcd.clear(); lcd.setCursor(0, 0); lcd.print("  NEZA AZKIAH   "); lcd.setCursor(0, 1); lcd.print("  NIM:14064036  "); delay(5000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("  MHD. IQBAL    "); lcd.setCursor(0, 1); lcd.print("  NIM:14064032  "); delay(5000); lcd.clear(); lcd.setCursor(0, 0); lcd.print("  Entri Tombol "); lcd.setCursor(0, 1); lcd.print(" Pilihan Berat  "); delay(3000);
//lcd.clear(); lcd.setCursor(0, 0); lcd.print(" 1. 2000gr      "); lcd.setCursor(0, 1); lcd.print(" 2. 4000gr      "); delay(3000); }
Hasil program yang sudah dijalankan terlihat pada Gambar 3.
Gambar 3. Hasil Tampilan pada LCD
Pada listing program diatas terdapat lcd.setCursor (0,0), listing program tampilan lcd yang digunakan, kemudian dilanjutkan dengan lcd.clear(), adalah fungsi  untuk menghapus isi layar lcd. Setalah isi layar lcd dikosongkan maka pada kolom petama baris kedua akan ditampilkan ENTRI TOMBOL dan pada kolom pertama baris kedua akan ditampilakan PILIHAN BERAT dengan perintah lcd.print, selanjutnya mengesekusi sintaks delay(2000).
5. Program Menentukan Berat Beras melalui  Tombol
a. Tombol 1 ditekan dengan kapasitas berat 2000 gram
if (digitalRead(tombol1) == LOW){     // jika tombol pilihan1 ditekan kapasitas=2000.0; stt=1; lcd.setCursor(0, 0); lcd.print(" Pilihan Berat: "); lcd.setCursor(0, 1); lcd.print(" 1. 2000gr      "); delay(2000);
Serial.println("motor belt conveyor aktif");
jalan(); lcd.clear();
lcd.setCursor(0, 0); lcd.print("  Entri Tombol  "); lcd.setCursor(0, 1); lcd.print(" Pilihan Berat  "); delay(2000) lcd.clear(); lcd.setCursor(0, 0); lcd.print(" 1. 2000gr      "); lcd.setCursor(0, 1); lcd.print(" 2. 4000gr      "); delay(2000); }

## b. Tombol 2 ditekan dengan kapasitas 4000 gram
if (digitalRead(tombol2) == LOW){       // jika tombol pilihan2 ditekan kapasitas=4000.0; stt=2; lcd.setCursor(0, 0); lcd.print(" Pilihan Berat: "); lcd.setCursor(0, 1); lcd.print(" 2. 4000gr      "); delay(2000); digitalWrite(motor1,HIGH); jalan(); lcd.clear(); lcd.setCursor(0, 0); lcd.print("  Entri Tombol  "); lcd.setCursor(0, 1); lcd.print(" Pilihan Berat  "); delay(2000); lcd.clear(); lcd.setCursor(0, 0); lcd.print(" 1. 2000gr      "); lcd.setCursor(0, 1); lcd.print(" 2. 4000gr      "); delay(2000); } }

## 6. Proses pengisian beras dan pengepresan kantong plastic
void jalan1() { beban= float(scale.getGram());    // baca sensor loadcell if (beban< 1) { beban = 0.0; } if (beban> 10.0) { beban = beban * 10.0;
} lcd.setCursor(6, 1); lcd.print(beban); lcd.print(" gr"); Serial.print("Load: ");Serial.println(beban); if (beban>=kapasitas) {       // jikakondisibeban= kapasitas tutup(); digitalWrite(motor1,HIGH); delay(1000); while (digitalRead(sensor2) == HIGH){}  // tunggusampaikondisi sensor IR2 mendeteksiplastik digitalWrite(motor1,LOW); if (stt==1) {               // register tukberat 2000gram digitalWrite(selenoid,HIGH); digitalWrite(heater,HIGH); delay(2000); digitalWrite(selenoid,LOW); digitalWrite(heater,LOW); delay(3000); digitalWrite(motor1,HIGH); digitalWrite(buzzer,HIGH); delay(3000); digitalWrite(motor1,LOW); digitalWrite(buzzer,LOW); kapasitas=0; beban=0; stt=0; return; } else if (stt==2) {        // register tukberat 4000gram naik_press(); digitalWrite(selenoid,HIGH); digitalWrite(heater,HIGH); delay(2000); digitalWrite(selenoid,LOW); digitalWrite(heater,LOW); delay(2000); turun_press(); digitalWrite(motor1,HIGH); digitalWrite(buzzer,HIGH); delay(3000); digitalWrite(motor1,LOW); digitalWrite(buzzer,LOW); kapasitas=0; beban=0; stt=0; return; } } jalan1(); }

## PENUTUP
Penelitian ini menghasilkan program alat penimbangan dan packing beras otomatis ke dalam kontong plastik menggunakan mikrokontroler Atmega328 sebagai alat kontrol utama dan motor servo sebagai pembuka dan penutup katup pada penampung. Pada pengujian dan analisa yang dilakukan  maka  dapat  diperoleh  kesimpulan  bahwa  pembuatan  program  dengan  bahasa  C Arduino  IDE  dalam  pembuatan    pemograman    alat  penimbang  dan  packing  beras    berbasis mikrokontroler ATmega328 telah berjalan seperti yang diinginkan. Pada proses penimbangan dan pengepresan sudah bekerja sesuai dengan yang  diharapkan, dimana lama panas pada heater diatur oleh Mikrokontroler. Namun pada penimbangan 4000 gram melebihi batas toleransi, dan pada proses pengemasan 4000 gram bisa dikatan sedikit terhambat oleh Selenoid dan motor Dc yang tidak berkerja secara optimal.

## DAFTAR PUSTAKA
[1] Ogata, Katsuhiko. Teknik Kontrol Automatis Jilid. Jakarta: Erlangga. 1996
[2] Andrianto, Heri. Pemrograman Mikrokontroler AVR ATMega 16 Menggunakan Bahasa C (Code Vision AVR) . Informatika, Bandung. 2012
[3] Utami, Ema dan Sukrisno. 10 Langkah Belajar Logika dan Algoritma,   Menggunakan Bahasa C dan C++ . Yogyakarta: Andi. 2005.
[4] Rahmat c,Antonius. Algoritma dan Pemograman dengan Bahasa C. 2010

## Biodata Penulis
Juli Sardi , lahir di Pulau Punjung, 18 Juli 1987. Sarjana Pendidikan di Jurusan Teknik Elektro FT UNP 2010. Tahun 20013 memperoleh gelar Master Teknik di jurusan Teknik Elektro Pasca sarjana ITS. Staf pengajar di jurusan Teknik Elektro FT UNP sejak tahun 2014- sekarang.