Modelo de um transportador de correia com contador de produto e medição de peso

Tempo de leitura: 4 minutes

Este projeto explica como construir um sistema de transporte de correia com contador de produto e unidade de medição de peso.

Este sistema pode ser usado individualmente como um sistema secundário intermediário para transportar um produto (por exemplo: sacos de cimento embalados) de um sistema para outro.

Os botões de contador (+) e contador (-) são usados ​​para ajustar o número de produtos necessários.

O botão Enter é usado para definir a contagem de produto ajustada e ligar o sistema.

Neste projeto de modelo, a célula de carga é usada como o sensor de medição de peso para detectar se o produto está na faixa de 800g-1200g.

Se o produto não estiver dentro da faixa, o quarto motor (04) atuará como um braço de rejeição (movimento linear do parafuso) e empurrará o produto rejeitado da placa de medição de peso para um lado. (Para outro sistema ou lixeira)

Se o produto estiver na faixa de 800g-1200g, então o produto é transportado para a segunda área da correia usando o terceiro motor (03), que inicia a primeira correia transportadora.

O produto continuará ao longo da segunda área da esteira até ser detectado pelo sensor IR, que contará a passagem do produto.

Se a contagem de produtos definida e o número de produtos detectados pelo sensor de infravermelho forem iguais; o sistema irá parar após um período de tempo. (O atraso de tempo é usado para transportar o último produto contado a ser movido para a próxima área da correia)

Em seguida, a terceira correia transportará o produto para o próximo sistema.

 

Ferramentas e componentes

1 X Arduino Nano
1 X 16×2 LCD com Módulo I2C
2 X Módulo L298N
4 X motores 12VDC
1 X Célula de carga (15 kg) com módulo HX711
1 X IR Sensor
3 X botão de pressão
Fonte de alimentação 12VDC, 3A
Fios de conexão
Projeto de correia transportadora adequado

 

Componentes de conexão

Conectando o módulo i2c ao LCD, caso não tenha ele já soldado no seu LCD 16×2

 

Diagrama de circuito

Módulo L298N 01
Pino IN1 – Pino Arduino D12
Pino IN2 – Pino Arduino D11
Pino IN3 – Pino Arduino D10
Pino IN4 – Pino Arduino D09

Módulo L298N 02
Pino IN1 – Pino Arduino D08
Pino IN2 – Pino Arduino D07
Pino IN3 – Pino Arduino D06
Pino IN4 – Pino Arduino D05

Mantenha o jumper para ambos os módulos (ENA e ENB)

Célula de carga – HX711
Pino SCK – Pino Arduino D03
DT Pin – Arduino Pin D02
Fio verde para HX711 A + Pin
Fio branco para HX711 A- Pin
Fio vermelho para HX711 E + pino
Fio preto para HX711 E- Pin

Sensor infravermelho Sig. Pin – Arduino Pin D13

Botão do contador (+) – Arduino Pin A2
Botão do contador (-) – Arduino Pin A1
Botão Enter – Arduino Pin A0

Módulo I2C
Pin SDA – Arduino Pin A4
Pino SCL – Pino Arduino A5

Motores 01, 02 e 03 são usados para operar transportadores de correia. (Movimento de rotação)
04º motor é usado como braço de impulso (movimento linear)

 

Código Arduino

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

#include <Wire.h>
// Incluir a biblioteca: 
#include <LiquidCrystal_I2C.h>
// Cria o objeto lcd da classe LiquidCrystal_I2C: 
LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);

#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()
{
  // Inicializa o display LCD 16x2
  //lcd.begin (16, 2); para 
  // Inicializa o display LCD 20x4
  lcd.begin (20, 4);
  // Liga a luz de fundo do LCD
  lcd.setBacklight(HIGH); 

  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("Peso do Produto ");
  Serial.println("Medindo...");
  scale.begin(LOADCELL_DOUT_PIN, LOADCELL_SCK_PIN);
  scale.set_scale(2280.f);
  scale.tare();
  lcd.backlight();
  lcd.print("Peso do Produto");
  delay(1000);
  lcd.clear();
}

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

  Serial.print("uma leitura:\t");
  Serial.print(scale.get_units(), 1);
  Serial.print("\t| média:\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("CONTADOR =");
     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("Definir contagem");
     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("Definir contagem");
     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(" Contando =");
        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("Contagem Concluída");
        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(" Peso incomparável");
    delay(500);
    lcd.clear();
    lcd.print("Rejeitando");
    delay(500);
    lcd.clear();
  } else {
      digitalWrite(motorPin6,HIGH);
      digitalWrite(motorPin7,LOW);
      digitalWrite(motorPin6,LOW);
      digitalWrite(motorPin7,LOW);
   }
}

Segurança primeiro!

Sempre conecte a fonte de alimentação se tiver absoluta certeza de que os componentes estão conectados corretamente sem alterar a polaridade e causar curto-circuito na ligação.

 

Conclusão

Neste artigo, mostrei como fazer projeto de transportador de mercadorias com o Arduino. Espero que você tenha achado útil e informativo. Se sim, compartilhe com um amigo que também gosta de eletrônica e de fazer coisas!

Eu adoraria saber quais projetos você planeja construir (ou já construiu) com esse Projeto ou Parecido. Se você tiver alguma dúvida, sugestão ou se achar que falta algo neste tutorial, por favor, deixe um comentário abaixo.

Visits: 2 Visits: 1193532