Model of a Belt Conveyor With Product Counter & Weight Measurement




This Project explains how to build a belt conveyor system with product counter and weight measurement unit.

This system can be used individually as an intermediate secondary system to convey a product (eg: packed cement bags) from one system to another.

Counter(+) & counter(-) buttons are used to adjust the number of products required.

Enter button is used to set the adjusted product count and turn on the system.

In this model project, load cell is used as the weight measuring sensor to detect whether the product is in 800g-1200g range.

If the Product is not within the range, the fourth motor(04) will act as a reject arm(screw linear motion) and push the rejected product from the weight measuring plate to a side.(to an another system or waste bin)

If the product is in the 800g-1200g range, then the product is conveyed to the second belt area using third motor(03), which starts the first belt conveyor.

The product will continue along the second belt area until it gets detected by the IR sensor, which will count the product passing through.

If the set product count and number of products detected by IR sensor is equal; the system will stop after a time delay. (Time delay is used to convey the last counted product to be moved to the next belt area)

Then the third belt will convey the product to the next system.

Tools & Components

1 X Arduino Nano

1 X 16x2 LCD with I2C Module

2 X L298N Module

4 X 12V DC Motors

1 X Load Cell(15kg) with HX711 Module

1 X IR Sensor

3 X Push Button

12VDC,3A Power Supply

Connecting Wires

Suitable belt conveyor design

Connecting Components

 Connecting i2c module to LCD


Circuit Diagram


L298N Module 01
IN1 Pin    - Arduino Pin D12
IN2 Pin    - Arduino Pin D11
IN3 Pin    - Arduino Pin D10
IN4 Pin    - Arduino Pin D09

L298N Module 02
IN1 Pin    - Arduino Pin D08
IN2 Pin    - Arduino Pin D07
IN3 Pin    - Arduino Pin D06
IN4 Pin    - Arduino Pin D05

Keep the Jumper in for both modules (ENA & ENB)

Load Cell - HX711
SCK Pin   - Arduino Pin D03
DT Pin     - Arduino Pin D02
Green Wire to  HX711 A+ Pin
White Wire to  HX711 A- Pin
Red Wire to HX711 E+ Pin
Black Wire to HX711 E- Pin

IR sensor Sig. Pin  - Arduino Pin D13

Counter(+) Push Button - Arduino Pin A2
Counter(-)  Push Button - Arduino Pin A1
Enter Push Button           - Arduino Pin A0

I2C Module
SDA Pin  - Arduino Pin A4
SCL Pin  - Arduino Pin A5

01 ,02 & 03 motors are used to operate belt conveyors.(Rotational Motion)
04th motor is used as a push arm (Linear Motion)

Arduino Code

//2020 Craftybin.blogspot.com
//Author : Chathura H.

#include "HX711.h"
const int LOADCELL_DOUT_PIN = 2;
const int LOADCELL_SCK_PIN = 3;
HX711 scale;

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

#define plus A2
#define minus A1
#define enter A0

const int motorPin1  = 5;
const int motorPin2  = 6;
const int motorPin3  = 7;
const int motorPin4  = 8;
const int motorPin5  = 9;
const int motorPin6  = 10;
const int motorPin7  = 11;
const int motorPin8  = 12;

int IR = 13;
int count1 = 0;
int count2 = 0;
int detect1 = HIGH;
int detect2 = LOW;
int detect3 = LOW;
int detect4 = LOW;

void setup()
{
  lcd.begin();
  pinMode(motorPin1, OUTPUT);
  pinMode(motorPin2, OUTPUT);
  pinMode(motorPin3, OUTPUT);
  pinMode(motorPin4, OUTPUT);
  pinMode(motorPin5, OUTPUT);
  pinMode(motorPin6, OUTPUT);
  pinMode(motorPin7, OUTPUT);
  pinMode(motorPin8, OUTPUT);
  pinMode(IR,INPUT);
  pinMode(plus,INPUT);
  pinMode(minus,INPUT);
  pinMode(enter,INPUT);
  Serial.begin(9600);
  delay(100);
 
  Serial.println("Product Weight ");
  Serial.println("Measuring...");
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(2280.f);
  scale.tare();
  lcd.backlight();
  lcd.print("Product Weight");
  delay(1000);
  lcd.clear();
 
}


void loop()
{
  detect1 = digitalRead(IR);
  detect2 = digitalRead(plus);
  detect3 = digitalRead(minus);
  detect4 = digitalRead(enter);

  Serial.print("one reading:\t");
  Serial.print(scale.get_units(), 1);
  Serial.print("\t| average:\t");
  Serial.println(scale.get_units(10), 1);

  scale.power_down();      
  delay(100);
  scale.power_up();

  if (detect1 == LOW) {   
    if(count1 < 10)
      count1++;
    else
      count1 = 0;
  lcd.backlight();
  lcd.print("COUNTER =");
  delay(500);
  lcd.clear();
  lcd.print(count1);
  delay(500);
  lcd.clear();
  }
 

  if (detect2 == HIGH) {
    if(count2 < 10)
      count2++;
    else
      count2 = 0;
  lcd.backlight();
  lcd.print("Set Count");
  delay(500);
  lcd.clear();
  lcd.print(count2);
  delay(500);
  lcd.clear();
  }
 

  if (detect3 == HIGH) {      
    if(count2 < 10)
      count2--;
    else
      count2 = 0;
   lcd.backlight();
  lcd.print("Set Count");
  delay(500);
  lcd.clear();
  lcd.print(count2);
  delay(500);
  lcd.clear();
  }
 

  if (detect4 == HIGH){

  if (count2 > count1){
    digitalWrite(motorPin1,HIGH);
    digitalWrite(motorPin2,HIGH);
    digitalWrite(motorPin3,HIGH);
    digitalWrite(motorPin4,HIGH);
    lcd.backlight();
    lcd.print(" Counting =");
    delay(500);
    lcd.clear();
    lcd.print(count1);
    delay(500);
    lcd.clear();  
  }

  else if (count2 <= count1){
    digitalWrite(motorPin1,LOW);
    digitalWrite(motorPin2,LOW);
    digitalWrite(motorPin3,LOW);
    digitalWrite(motorPin4,LOW);
  lcd.backlight();
  lcd.print("Count Completed");
  delay(500);
  lcd.clear();
  lcd.print(count1);
  delay(500);
  lcd.clear();   
  }
  }

  else {
    digitalWrite(motorPin1,LOW);
    digitalWrite(motorPin2,LOW);
    digitalWrite(motorPin3,LOW);
    digitalWrite(motorPin4,LOW);   
  }

if (scale.get_units() > 1200 || scale.get_units() < 800)
  {
    digitalWrite(motorPin4,LOW);
    digitalWrite(motorPin5,LOW);
   
    digitalWrite(motorPin6,HIGH);
    digitalWrite(motorPin7,LOW);
    delay(1000);
    digitalWrite(motorPin6,LOW);
    digitalWrite(motorPin7,HIGH);
    delay(1000);
  lcd.backlight();
  lcd.print(" Weight Unmatched");
  delay(500);
  lcd.clear();
  lcd.print("Rejecting");
  delay(500);
  lcd.clear();
}

else {
    digitalWrite(motorPin6,HIGH);
    digitalWrite(motorPin7,LOW);
    digitalWrite(motorPin6,LOW);
    digitalWrite(motorPin7,LOW);
}
}






Safety First !
Always Connect the power supply if you are absolutely sure that the components are connected correctly without changing polarity and short circuited the wiring.
Even if it seems nothing is wrong : DOUBLE CHECK EVERYTHING !!
Your Feedback is very important to us. 
Please Leave a comment about how you feel about this project.




14 Comments

  1. I would like to know the software you used for simulating those circuit diagrams above, thank you.

    ReplyDelete
  2. Hi !
    Your project seems very nice !
    I have a similar project but I have some issues with the weighing.
    My load cell is placing just below the upside belt. Depending on the "tense" of the belt the weigh can vary a lot.
    How did you figured this issue out ? How do you deal with the belt's weight itself ? what is the placement of your loadcell ?
    Many thanks in advance for your help.
    Regards

    PS : sorry for my bad english...

    ReplyDelete
  3. Thanks for the useful information.I have been reading a lot of stuff about it. but the way in it is presented is nice.
    Hand Sanitiser Station

    ReplyDelete
  4. You have worked nicely with your insights. Lots of valuable data can be taken from your article. Genuinely it is a significant article for us.Blasting Equipment Suppliers Pan India

    ReplyDelete
  5. The delightful article you have posted here. This is a good way to increase our knowledge. Continue sharing this kind of articles, Thank you.fuse box switches up or down

    ReplyDelete
  6. The information in the post you posted here is useful because it contains some of the best information available. solar panel maintenance and repair service martin county. Thanks for sharing it. Keep up the good work.

    ReplyDelete
  7. You have given great content here. I am glad to discover this post as I found lots of valuable data in your article. Thanks for sharing an article like this.Commercial Electric Services Oregon

    ReplyDelete
  8. This article contains a lot of valuable info. I am amazed by the quality of the info and also it is a beneficial article for us, Thanks for share it.Commercial Electrical Contractors Oregon

    ReplyDelete
  9. Great job for publishing such a nice article. Your article isn’t only useful but it is additionally really informative. Read more info about Buy Arduino Compatible Boards Online. Thank you because you have been willing to share information with us.

    ReplyDelete

Post a Comment

Previous Post Next Post