基于arduino的矿石分拣机

说明

  1. 接通电源,机器开始运作。
  2. 将货物放在传送带上,货物被传送带带到电子秤上进行称量。
  3. 满足称量标准的货物被放置于一边,不满足称量标准的货物被放置于另一边。
  4. 显示器上对合格与不合格的货物个数进行统计,并可实时显示货物重量和合格率,还可通过蓝牙设备将数据进行发送,对数据进行采集。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
// Hx711.DOUT - pin #A1
// Hx711.SCK - pin #A0
//serve_9 接9
//serve_10接10
//relay继电器接7
//SDA 接 模拟口A4 
//SCL 接 模拟口A5
/*                
 舵机接线:棕红橙:G V S 
       黑红白  G V S
 */
#include <Servo.h>   //加入舵机的函数库
#include <LiquidCrystal.h>
#include "HX711.h"
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

LiquidCrystal_I2C mylcd(0x27,16,2);
Servo servo_9;  // 给舵机定义一个名字
Servo servo_10;  // 给舵机定义一个名字
int sound=2;
int Relay = 7;//继电器
String inputString = "";    
String comdata = "";
int Weight = 0,m = 0,n = 0;
float s=0.0;

void setup()
{
    mylcd.init();
    mylcd.backlight();
    servo_9.attach(9);  // 舵机连接9号管脚
    servo_10.attach(10);  // 舵机连接10号管脚
    lcd.begin(16, 2);
	  Init_Hx711();				//初始化HX711模块连接的IO设置
    pinMode(Relay,OUTPUT);//继电器
    pinMode(sound,OUTPUT);
    Serial.begin(9600);
    Get_Maopi();		//获取毛皮
	  delay(3000);
	  Get_Maopi();		//获取毛皮
}

void loop()
{
  //int flag=0;
    servo_9.write(80);
    delay(15);
    servo_10.write(95);
    delay(15);
    Weight = Get_Weight();	//计算放在传感器上的重物重量
  delay(1000);
 
    if(Weight<0)
    {
      Weight=0;
      }
  /*lcd.setCursor(0, 1);
	lcd.print(Weight);	//串口显示重量
	lcd.print(" g");	//显示单位
   lcd.print("       ");*/
     digitalWrite(Relay,HIGH);
      //      delay(1000);
    if(Weight>5)
    { 

     //   flag=1;
         digitalWrite(Relay,LOW);
         delay(1000);
         Weight = Get_Weight();  //计算放在传感器上的重物重量
         delay(1000);
  /*    if(Weight>200)
      {
        digitalWrite(sound,HIGH);
        delay(1000);
        }*/
       if(Weight<=50)
       { 
          m+=1;
         s=(float)(n)/(float)(m+n);
     Serial.print(Weight);
     Serial.print(" g");
     Serial.print("不合格的为:");
     Serial.print(m);
     Serial.print("合格的为:");
     Serial.print(n);
     Serial.print(" 合格率:");
     Serial.print(s*100);
     Serial.println("%");
     Serial.println();
     mylcd.setCursor(0, 0);
    mylcd.print("m ");
    mylcd.print(m);
    mylcd.print("  n ");
    mylcd.print(n);
    mylcd.setCursor(0, 1);
    mylcd.print(Weight);
    mylcd.print(" g");
    mylcd.print("   s ");
    mylcd.print(s*100);
    mylcd.println("%  ");
    
     delay(2000);   //延时 
      // mylcd.clear();
     servo_10.write(170);
    delay(2000);
    servo_10.write(95);
    delay(2000);
 /*    Weight = Get_Weight();  //计算放在传感器上的重物重量
         delay(1000);
    if(-5<=Weight&&Weight<=5)
     {
      flag=0;
      }   
        while(flag);*/
    digitalWrite(Relay,HIGH);
    // delay(1000);
      }   
   if(Weight>50)
     {
          n+=1;
          s=(float)(n)/(float)(m+n);
     Serial.print(Weight);
     Serial.print(" g");
    Serial.print("  不合格的为:");
    Serial.print(m);
    Serial.print("  合格的为:");
    Serial.print(n);
    Serial.print("      合格率:");
    Serial.print(s*100);
    Serial.println("%");
    Serial.println();
    mylcd.setCursor(0, 0);
    mylcd.print("m ");
    mylcd.print(m);
    mylcd.print("  n ");
    mylcd.print(n);
    mylcd.setCursor(0, 1);
    mylcd.print(Weight);
    mylcd.print(" g");
    mylcd.print("   s ");
    mylcd.print(s*100);
    mylcd.println("%  ");
     delay(3000);   //延时
     servo_9.write(10);    
     delay(2000);
     servo_9.write(80);
     delay(2000);
  /*    Weight = Get_Weight();  //计算放在传感器上的重物重量
         delay(1000);
     if(-5<=Weight&&Weight<=5)
     {
      flag=0;
      }      
      while(flag);*/
     digitalWrite(Relay,HIGH);
    // delay(1000);
          }   
         
      }
 
}
//蓝牙
void serialEvent() {
  while (Serial.available()) {
    // get the new byte:
    char inChar = (char)Serial.read();
    // add it to the inputString:
    if(inChar == 'A' || inChar == 'a' )
    {
      digitalWrite(Relay,HIGH);
      delay(1000);
    }
    else  if(inChar == 'B' || inChar == 'b')
    {
      digitalWrite(Relay,LOW);
     delay(1000);   //延时
    }
  }
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
一、设计思路 碗筷自动分拣机是一种能够自动识别餐具种类并将其分拣为不同类别的机器。设计思路是通过使用arduino控制系统,结合图像处理算法和机械臂控制,实现对碗筷的快速、准确、高效分拣。 二、系统组成 1. 感应传感器:用于检测碗筷的进入和离开,将信号传输给控制系统。 2. 图像采集器:用于采集碗筷的图像,并通过算法对图像进行处理,识别出餐具的种类。 3. 机械臂:用于将识别出的餐具从传送带上拾取并放入相应的容器中。 4. 传送带:用于将碗筷从进料口送到机械臂的位置。 5. 控制系统:采用arduino开发板作为主控制器,控制整个系统的运行。 三、系统工作流程 1. 碗筷进入检测区:当碗筷进入检测区时,感应传感器会检测到,并将信号传输给控制系统。 2. 图像采集和识别:图像采集器会自动对碗筷进行拍照,并将图像传输给控制系统。控制系统会对图像进行处理,识别出餐具的种类。 3. 控制机械臂拾取:根据识别结果,控制机械臂将餐具从传送带上拾取并放入相应的容器中。 4. 碗筷离开检测区:当碗筷离开检测区时,感应传感器会检测到,并将信号传输给控制系统。控制系统会等待下一批碗筷的进入。 四、总结 碗筷自动分拣机的设计,使用了arduino控制系统、感应传感器、图像采集器、机械臂和传送带等组件。通过对碗筷进行自动识别和分拣,实现了碗筷的快速、准确、高效分拣的目的。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值