Translate

Membuat Conveyor System Alat Pemisah Kayu Otomatis Menggunakan Arduino dan Sensor jarak HC-SRF04

Membuat Conveyor System Alat Pemisah Kayu Otomatis Menggunakan Arduino dan Sensor jarak HC-SRF04


         Pada kesempatan kali ini saya akan menjelaskan mengenai bagaimana cara membuat sebuah alat yang menggunakan sistem konveyor sebagai penggeraknya yang mana difungsikan untuk pemilah kayu atau pemisah kayu yang standart ukurannya dan yang tidak standart ukurannya, jadi ada dua tempat peletakkan pada ujung konveyor, jika kayu didefinisikan kayu standart maka akan masuk ke kotak kayu standart namun jika tidak standart maka akan masuk ke kayu reject, alat ini menggunakan arduino sebagai kontrollernya dan pemisah kayu menggunakan motor servo, untuk sensor deteksi kayu menggunakan sensor jarak HC-SRF04 sebanyak 2 buah yang dipasang dibagaian atas dan bawah, untuk lebih jelasnya berkut adalah skema dan programnya.




a. Arduino UNO dan i2C LCD





b. Sensor Jarak HC-SRF04





c. Motor Servo





d. Motor DC + Gearbox






e. Sistem Konveyor






f. Program Arduino IDE

#include<Wire.h>
#include<Servo.h>
#include<LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

Servo myservo;
const int TRIG_PIN1=10;
const int ECHO_PIN1=11;

int counter = 0;
int cacat = 0;

const int TRIG_PIN2=3;
const int ECHO_PIN2=4;

long duration1,distanceCm1;
long duration2,distanceCm2;

int normal = 0;
int x = 100;

int waktu = 20;

int btlihat = 5;
int btreset = 6;

int btlihatx = 0;
int btresetx = 0;

void setup(){
  lcd.begin();
  lcd.clear();
  lcd.noCursor();
   
  pinMode(TRIG_PIN1,OUTPUT);
  pinMode(ECHO_PIN1,INPUT);

  pinMode(TRIG_PIN2,OUTPUT);
  pinMode(ECHO_PIN2,INPUT);
 
  pinMode(btlihat,INPUT_PULLUP);
  pinMode(btreset,INPUT_PULLUP);
 
  myservo.attach(9);
  myservo.write(5);
 
}

void loop(){
 
    btlihatx = digitalRead(btlihat);

    if(btlihatx == 0){
    lcd.clear(); 
    delay(3000);
    btlihatx = 1;
    setting();
    }

    digitalWrite(TRIG_PIN1,LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN1,HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN1,LOW);
    duration1=pulseIn(ECHO_PIN1,HIGH);
   
    distanceCm1=duration1/29.1/2;
   
    lcd.setCursor(0,1);
    lcd.print(distanceCm1);
    lcd.print(" bawah   ");
       
    digitalWrite(TRIG_PIN2,LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN2,HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN2,LOW);
    duration2=pulseIn(ECHO_PIN2,HIGH);
   
    distanceCm2=duration2/29.1/2;
   
    lcd.setCursor(0,0);
    lcd.print(distanceCm2);
    lcd.print(" atas   ");


if(distanceCm2 == 10){
    lcd.clear();
    lcd.setCursor(0,0);
    lcd.print("proses");
    sampling();
}

}


void sampling(){

    digitalWrite(TRIG_PIN1,LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN1,HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN1,LOW);
    duration1=pulseIn(ECHO_PIN1,HIGH);
   
    distanceCm1=duration1/29.1/2;
           
    digitalWrite(TRIG_PIN2,LOW);
    delayMicroseconds(2);
    digitalWrite(TRIG_PIN2,HIGH);
    delayMicroseconds(10);
    digitalWrite(TRIG_PIN2,LOW);
    duration2=pulseIn(ECHO_PIN2,HIGH);
   
    distanceCm2=duration2/29.1/2;

    lcd.setCursor(0,0);
    lcd.print("UP = ");
    lcd.print(distanceCm2);
    lcd.print("   ");
    lcd.print(counter);
   
    lcd.setCursor(0,1);
    lcd.print("BOT = ");
    lcd.print(distanceCm1);
    lcd.print("   ");

if((distanceCm2 == 14)&&(counter < waktu))
{
delay(1000);
myservo.write(10);
delay(x);
myservo.write(20);
delay(x);
myservo.write(30);
delay(x);
myservo.write(40);
delay(x);
myservo.write(50);
delay(x);
myservo.write(60);
delay(x);
myservo.write(70);
delay(x);
myservo.write(80);
delay(x);
myservo.write(90);
delay(x);
myservo.write(5);
counter = 0;
lcd.clear();
delay(1000);
lcd.setCursor(0,0);
lcd.print("REJECT");
delay(3000);
lcd.clear();
cacat++;
return;
}


if((distanceCm1 == 7)&&(counter < waktu))
{
delay(1000);
myservo.write(10);
delay(x);
myservo.write(20);
delay(x);
myservo.write(30);
delay(x);
myservo.write(40);
delay(x);
myservo.write(50);
delay(x);
myservo.write(60);
delay(x);
myservo.write(70);
delay(x);
myservo.write(80);
delay(x);
myservo.write(90);
delay(x);
myservo.write(5);
counter = 0;
lcd.clear();
delay(1000);
cacat++;
lcd.setCursor(0,0);
lcd.print("REJECT");
delay(3000);
lcd.clear();
return;
}


counter++;


if(counter > waktu){
lcd.clear();
 lcd.setCursor(0,0);
 lcd.print("STANDART");
counter = 0;
delay(3000);
lcd.clear();
normal++;
return;
}

sampling();
}




void setting(){

    btresetx = digitalRead(btreset);
    btlihatx = digitalRead(btlihat);
   
    if(btresetx == 0){
    cacat = 0;
    normal = 0;
    }
   
    if(btlihatx == 0){     
    lcd.clear(); 
    btlihatx = 1;
    delay(3000);
    return;
    }
   
    lcd.setCursor(0,0);
    lcd.print("REJECT = ");
    lcd.print(cacat);
    lcd.setCursor(0,1);
    lcd.print("STANDART = ");
    lcd.print(normal);

 delay(200);
 setting();
}





g. VIDEO HASILNYA












No comments:

Post a Comment