Mesin Pengisian Galon Berbasis Arduino Mega2560

 

Mesin Pengisian Galon Berbasis Arduino Mega2560

Disusun oleh :

          1. Anugrah Firdaus Dhamastito(3.32.20.3.01)
          2. Aziz Gunawan (3.32.20.3.04)
          3. Dzulfahmi Irfan (3.32.20.3.07)
          4. Reza Septia Isnaeni (3.32.20.3.18)
          5. Sri Lestari (3.32.20.3.21)

EK-3D

Latar Belakang

      Pada 2 tahun lalu CV Nadia Karya yang berlokasi di Dukuh Nglimut RT.01 RW.01 Desa Gonoharjo Kecamatan Limbangan ingin mempercepat produksi dengan membuat alat filling gallon. Ada beberapa station pada sistem alat tersebut, Flushing, Filling, Dropping dan Heating. CV. Nadia Karya membuat system alat tersebut sendiri namun system belum selesai dikarenakan SDM yang belum memadai. Dari kasus tersebut, Kami memutuskan membuat sistem otomatisasi pada Mesin Pengisian Galon berbasis Arduino Mega2560. Sehingga Proses produksi yang sebelumnya dilakukan secara konvensional, nantinya dapat dilakukan secara otomatis oleh sistem dimana hal ini dapat memudahkan dan membuat produksi lebih efektif.

Komponen yang digunakan : 

  1. Arduino Mega 2560
  2. Sensor Inframerah
  3. Sensor Water Flow
  4. Driver Motor L298N
  5. Push Button
  6. LCD
  7. Aktuator Linier
  8. Pompa Air
  9. Motor SteppeR
  10. Konveyor
  11. Motor DC

Cara Kerja :

Alat ini terbagi dari beberapa bagian. Pada bagian yang pertama terdapat satu konveyor yang dimana terdapat nozel untuk flashing dari galon. Kemudian terdapat aktuator linier yang berfungsi untuk mendorong galon ke konveyor 2. Kemudian pada bagian selanjutnya terdapat rotari, aktuator di mana berfungsi untuk filling atau mengisi galon. Untuk komponen elektronik untuk inputan kami menggunakan sensor infrared sebanyak 7 buah, 3 pada bagian sensor satu. Kemudian 2 sensor pada pendorong dan 3 sensor pada filling, kemudian ada sensor water flow yang terletak dibagian filling untuk penggerak. Kami menggunakan 2 pompa dc, satu motor linier, aktuator, motor stepper, 2 motor dc kuning. Untuk mikrokontroler yang kami gunakan kami menggunakan Arduino Mega2560 yang kemudian kami buat universalnya agar dapat menampung banyak sensor dan penggerak. Driver motor yang kami gunakan ada modul L298N sebanyak 3 buah.

 

Sensor IR satu pada bagian pojok konveyor satu akan mendeteksi botol. konveyor akan bergerak sampai sensor IR 2 mendeteksi. Kemudian konveyor berhenti dan pompa satu akan menyala. Mengalirkan air menuju nozzle yang terdapat pada konveyor satu dan akan membilas botol sepersekian detik. Kemudian pompa mati, konveyor bergerak kembali menuju stopper botol yang berada dibawah, dan sensor IR 3 akan mendeteksi botol kemudian aktuator linier akan bergerak maju mendorong botol. Sampai sensor IR 4 terdeteksi dan aktuator kembali ketempat semula, kemudian koveyor 2 akan bergerak, mengantar botol pada rotary filling. Sampai sensor IR 5 mendeteksi, konveyor 2 akan berhenti dan motor stepper pada rotary filling akan bergerak. Sampai sensor IR 6 mendeteksi botol, motor stepper akan berhenti, dan pompa akan bekerja mengalirkan air menuju nozel dan mengisi botol, water flow sensor mendeteksi jumlah volume air yang sudah di tentukan, pompa mati dan motor stepper bergerak kembali sampai botol keluar dari tempat rotary filling nya, IR 7 akan mendeteksi botol dan menghitung jumlah botol.


POWER POINT Klik link disini











#include <Wire.h>
#include <Stepper.h>
#include <LiquidCrystal.h>
const int rs = 19, en = 15, d4 = 17, d5 = 11, d6 = 16, d7 = 10;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

volatile double waterFlow;
int
enB_2  = 46,     enA_3 = 44,
IN3_2 = 32,      IN1_3 = 26,
IN4_2 = 33,      IN2_3 = 27,
enA_2 = 12,
IN1_2 = 34,
IN2_2 = 35,
ir1 = A0, ir2 = 4, ir3 = 2, ir4 = A2, ir5 = A3, ir6 = A4, ir7 = 18,
pompa1 = 47,
pompa2 = 48,
count = 0;
int stepsPerRevolution = 200;
Stepper myStepper(stepsPerRevolution, 22, 23, 24, 25); //DRIVER 1
boolean state = true;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  lcd.begin(16, 2);
  pinMode(pompa1, OUTPUT); // POMPA
  pinMode(pompa2, OUTPUT);
  pinMode(enB_2, OUTPUT); // DRIVER
  pinMode(IN3_2, OUTPUT);
  pinMode(IN4_2, OUTPUT);
  pinMode(enA_3, OUTPUT);
  pinMode(IN1_3, OUTPUT);
  pinMode(IN2_3, OUTPUT);
  pinMode(IN2_2, OUTPUT);
  pinMode(IN1_2, OUTPUT);
  pinMode(enA_2, OUTPUT);
  pinMode(ir1, INPUT);    // sensor
  pinMode(ir2, INPUT);
  pinMode(ir3, INPUT);
  pinMode(ir4, INPUT);
  pinMode(ir5, INPUT);
  pinMode(ir6, INPUT);
  pinMode(ir7, INPUT);
  attachInterrupt(2, filling, RISING);
  attachInterrupt(3, stopp, LOW);
  myStepper.setSpeed(60);
  int count;
  count = 0;
  waterFlow = 0;
  lcd.setCursor(3, 0);
  lcd.print("TETAP");
  lcd.setCursor(3, 1);
  lcd.print("SEMANGAT :)");
  delay(500);
  lcd.clear();
}

void loop() {
  
  lcd.setCursor(0, 0);
  lcd.print("JUMLAH BOTOL: ");
  lcd.print(count);
  lcd.setCursor(0, 2);
  lcd.print("Jumlah Air: ");
  lcd.print(waterFlow);

  int stepsPerRevolution = 200;
  myStepper.setSpeed(60);
  int ir1_read = digitalRead(A0);
  int ir2_read = digitalRead(4);
  int ir3_read = digitalRead(2);
  int ir4_read = digitalRead(A2);
  int ir5_read = digitalRead(A3);
  int ir6_read = digitalRead(A4);
  //Serial.println(ir7_read);
  analogWrite(enB_2, 160); // Conv 2
  analogWrite(enA_3, 255); // actuator
  analogWrite(enA_2, 230); // Conv 1

  if (ir1_read == 0)
  {
    digitalWrite(34, HIGH);
    digitalWrite(35, LOW);
  }
  if (ir2_read == 0) {
    digitalWrite(34, LOW);
    digitalWrite(35, LOW);
    digitalWrite(47, HIGH);
    delay(8000);
    ir2_read = 1;
    digitalWrite(47, LOW);
    delay(1000);
    digitalWrite(34, HIGH);
    digitalWrite(35, LOW);
    delay(800);
  }
  if (ir3_read == 0) {
    digitalWrite(34, LOW); //conv 1 off
    digitalWrite(35, LOW);
    digitalWrite(26, HIGH); // act on
    digitalWrite(27, LOW);
    delay(8600);
    digitalWrite(26, LOW); // DORONG
    digitalWrite(27, HIGH);
    delay(8600);

  }

  if (ir4_read == 0) {
    digitalWrite(32, LOW); //conv2 on
    digitalWrite(33, HIGH);
  }
  if (ir5_read == 0) {
    int stepsPerRevolution = 200;
    Stepper myStepper(stepsPerRevolution, 22,23,24,25); //DRIVER 1
    myStepper.setSpeed(60);
    
    digitalWrite(32, LOW); // conv2 off
    digitalWrite(33, LOW);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
  }
  // if (ir6_read == 0) {
  // }

  if (!digitalRead(ir7) && state) {
    count++;
    state = false;
    Serial.print("Jumlah Botol: ");
    Serial.println(count);
    delay(100);
  }
  if (digitalRead(ir7))
  {
    state = true;
    delay(100);
  }
  if (waterFlow >= 0.06) {
    //stepsPerRevolution = 200;
    //myStepper.setSpeed(60);
    digitalWrite(48, LOW);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
    waterFlow = 0;
    delay(5000);
  }
}

void filling()   // interrupt 1
{
  digitalWrite(23, LOW); //pompa mati
  digitalWrite(22, LOW);
  waterFlow += 1.0 / 5880.0;
  if (waterFlow >= 0.06)
  {
    digitalWrite (48, LOW);
    //stepsPerRevolution = 200;
    //myStepper.setSpeed(60);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
    myStepper.step(stepsPerRevolution);
  }
}

void stopp() {
  digitalWrite(23, LOW);
  digitalWrite(22, LOW);
  if (waterFlow <= 0.00) {
    digitalWrite(48, HIGH);
  }

}


Komentar