Mesin Pengisian Galon Berbasis Arduino Mega2560
Disusun oleh :
- Anugrah
Firdaus Dhamastito(3.32.20.3.01)
- Aziz
Gunawan (3.32.20.3.04)
- Dzulfahmi
Irfan (3.32.20.3.07)
- Reza
Septia Isnaeni (3.32.20.3.18)
- 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 :
- Arduino Mega 2560
- Sensor Inframerah
- Sensor Water Flow
- Driver Motor L298N
- Push Button
- LCD
- Aktuator Linier
- Pompa Air
- Motor SteppeR
- Konveyor
- 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
_page-0001.jpg)
_page-0002.jpg)
_page-0003.jpg)
_page-0004.jpg)
_page-0005.jpg)
_page-0006.jpg)
_page-0007.jpg)
_page-0008.jpg)
_page-0009.jpg)
_page-0010.jpg)
_page-0011.jpg)
_page-0012.jpg)
_page-0014.jpg)
_page-0015.jpg)
_page-0016.jpg)
#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
Posting Komentar