RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用TCS3200和Arduino UNO制作顏色分選機(jī)

科技觀察員 ? 來源:circuitdigest ? 作者:Abhimanyu Pandit ? 2022-09-01 16:55 ? 次閱讀

顧名思義,顏色分類就是簡(jiǎn)單地根據(jù)事物的顏色對(duì)事物進(jìn)行分類。它可以通過看到它來輕松完成,但是當(dāng)要分類的東西太多并且這是一項(xiàng)重復(fù)性任務(wù)時(shí),自動(dòng)色選機(jī)非常有用。這些機(jī)器有顏色傳感器來感知任何物體的顏色,并在檢測(cè)到顏色伺服電機(jī)后抓住物體并將其放入相應(yīng)的盒子中。它們可用于顏色識(shí)別、顏色區(qū)分和顏色分類很重要的不同應(yīng)用領(lǐng)域。一些應(yīng)用領(lǐng)域包括農(nóng)業(yè)(基于顏色的谷物分選)、食品工業(yè)、鉆石和采礦業(yè)、回收等。應(yīng)用不僅限于此,還可以進(jìn)一步應(yīng)用于不同的行業(yè)。

在本教程中,我們將使用顏色傳感器 TCS3200、一些伺服電機(jī)和 Arduino 板制作顏色分選機(jī)。本教程將包括彩球的分類并將它們保存在相關(guān)的彩盒中。盒子將處于固定位置,伺服電機(jī)將用于移動(dòng)分揀手以將球保持在相關(guān)盒子中。

所需組件

Arduino UNO

TCS3200 顏色傳感器

伺服電機(jī)

跳線

面包板

色選機(jī)械臂底盤的制作方法

為了制作包括底盤、臂、滾輪、墊子在內(nèi)的完整設(shè)置,我們使用了 2 毫米厚的白色Sunboard。它在固定商店很容易買到。我們使用切紙機(jī)切割 Sunboard Sheet 和 FlexKwik 或 FeviKwik 來連接不同的部分。以下是構(gòu)建顏色分類臂

的一些步驟:

1)拿取防曬板。

poYBAGMQckuATBUeAAHWP3lVEGU977.png

2) 如圖所示,用刻度尺和記號(hào)筆測(cè)量好所有邊后,將陽光板切成小塊。

poYBAGMQckiAJo2uAAP45qHpkTo684.png

pYYBAGMQckSAHAGFAAJQ0lzPifQ899.png

pYYBAGMQckWAQ6zkAAKL4GWX2RY662.png

3)現(xiàn)在將兩塊陽光板放在一起,然后在上面倒一滴 FeviKwik 將它們粘在一起。按照?qǐng)D繼續(xù)連接。

pYYBAGMQcjuAcOu0AAIcwKv3Rpg671.png

4) 將所有部件連接在一起后,這臺(tái)色選機(jī)將如下所示:

poYBAGMQcjyARr0gAAQfIitSbJk495.png

TCS3200 顏色傳感器

poYBAGMQcjOAWhuTAAR2KfpVTe0574.png

TCS3200 是一種顏色傳感器,可以通過正確的編程檢測(cè)任意數(shù)量的顏色。TCS3200 包含 RGB(紅綠藍(lán))陣列。如圖所示,在顯微鏡下可以看到傳感器眼睛內(nèi)部的方框。這些方塊是 RGB 矩陣的數(shù)組。這些盒子中的每一個(gè)都包含三個(gè)傳感器,一個(gè)用于感測(cè)紅光強(qiáng)度,一個(gè)用于感測(cè)綠光強(qiáng)度,最后一個(gè)用于感測(cè)藍(lán)光強(qiáng)度。

pYYBAGMQciuAcTIRAABOAmwuRN4263.png

這三個(gè)陣列中的每個(gè)傳感器陣列都是根據(jù)需要單獨(dú)選擇的。因此它被稱為可編程傳感器。該模塊可以用來感知特定顏色并離開其他顏色。它包含用于該選擇目的的過濾器。第四種模式稱為“無濾鏡模式”,其中傳感器檢測(cè)白光。

Arduino色選機(jī)電路圖

這個(gè)Arduino 顏色分類器的電路圖很容易制作,不需要太多連接。示意圖如下。

poYBAGMQciiAdIDVAACqTkuMOc0450.png

這是色選機(jī)設(shè)置背后的電路:

pYYBAGMQciSARENlAAPgdMe1fNI960.png

對(duì) Arduino Uno 進(jìn)行編程以對(duì)彩色球進(jìn)行分類

對(duì) Arduino UNO 進(jìn)行編程非常簡(jiǎn)單,需要一個(gè)簡(jiǎn)單的邏輯來簡(jiǎn)化顏色分類所涉及的步驟。最后給出了帶有演示視頻的完整程序。

由于使用的是伺服電機(jī),所以伺服庫是程序的重要組成部分。這里我們使用兩個(gè)伺服電機(jī)。第一個(gè)伺服將彩球從初始位置移動(dòng)到 TCS3200 檢測(cè)器位置,然后移動(dòng)到將落下的分揀位置。移動(dòng)到分揀位置后,第二個(gè)伺服將使用其手臂將球落到所需的顏色桶中。請(qǐng)參閱最后給出的視頻中的完整工作。

第一步將包含所有庫并定義伺服變量。

#include 
伺服拾取伺服;
伺服下降伺服;

TCS3200 顏色傳感器可以在沒有庫的情況下工作,因?yàn)橹恍枰獜膫鞲衅饕_讀取頻率來決定顏色。所以只需定義 TCS3200 的引腳號(hào)。

#define S0 4 
#define S1 5 
#define S2 7 
#define S3 6 
#define sensorOut 8 
int 頻率 = 0; 
詮釋顏色=0;

使選擇引腳作為輸出,因?yàn)檫@將使彩色光電二極管高或低,并將TCS3200 的 Out 引腳作為輸入。OUT 引腳將提供頻率。最初選擇頻率縮放為 20%。

  pinMode(S0,輸出);
  pinMode(S1,輸出);
  pinMode(S2,輸出);
  pinMode(S3,輸出);
  pinMode(傳感器輸出,輸入);
  數(shù)字寫入(S0,低);
  數(shù)字寫入(S1,高);

伺服電機(jī)連接在 Arduino 的引腳 9 和 10。將拾取彩球的拾取伺服器連接在引腳 9 上,將根據(jù)顏色掉落彩球的下落伺服器連接在引腳 10 上。

  pickServo.attach(9); 
  dropServo.attach(10);

最初,拾取伺服電機(jī)設(shè)置在初始位置,在這種情況下為 115 度。它可能會(huì)有所不同,并且可以相應(yīng)地進(jìn)行定制。電機(jī)在延遲一段時(shí)間后移動(dòng)到檢測(cè)器區(qū)域并等待檢測(cè)。

  pickServo.write(115); 
  延遲(600);
  for(int i = 115; i > 65; i--) { 
    pickServo.write(i); 
    延遲(2);
  }
  延遲(500);

TCS 3200從Out Pin 讀取顏色并給出頻率。

  顏色 = 檢測(cè)顏色();
  延遲(1000);

根據(jù)檢測(cè)到的顏色,下落伺服電機(jī)以特定角度移動(dòng),并將彩球落入相應(yīng)的盒子中。

  開關(guān)(顏色){
    案例1:
    dropServo.write(50);
    休息; 
    案例2:
    dropServo.write(80);
    休息; 
    案例3:
    dropServo.write(110);
    休息; 
    案例4:
    dropServo.write(140);
    休息; 
    案例5:
    dropServo.write(170);
    休息; 
    案例0:
    中斷;
  }
  延遲(500);

伺服電機(jī)返回初始位置,等待下一個(gè)球被拾取。

  for(int i = 65; i > 29; i--) { 
    pickServo.write(i); 
    延遲(2);
  }
  延遲(300);
  for(int i = 29; i < 115; i++) { 
    pickServo.write(i); 
    延遲(2);
  }

函數(shù)detectColor()用于測(cè)量頻率并比較顏色頻率以得出顏色結(jié)論。結(jié)果打印在串行監(jiān)視器上。然后它返回用于移動(dòng)下降伺服電機(jī)角度的案例的顏色值。

詮釋檢測(cè)顏色(){

寫入 S2 和 S3 (LOW,LOW) 會(huì)激活紅色光電二極管以獲取紅色密度讀數(shù)。

  數(shù)字寫入(S2,低);
  數(shù)字寫入(S3,低);
  頻率 = 脈沖輸入(傳感器輸出,低);
  int R = 頻率;
  Serial.print("紅色 = "); 
  Serial.print(frequency);//打印紅色頻率
  Serial.print(" "); 
  延遲(50);

寫入 S2 和 S3(低、高)會(huì)激活藍(lán)色光電二極管以獲取藍(lán)色密度讀數(shù)。

  數(shù)字寫入(S2,低);
  數(shù)字寫入(S3,高);
  頻率 = 脈沖輸入(傳感器輸出,低);
  int B = 頻率;
  Serial.print("藍(lán)色 = ");
  Serial.print(頻率);
  序列號(hào).println(" ");

寫入 S2 和 S3 (HIGH,HIGH) 會(huì)激活綠色光電二極管以獲取綠色密度讀數(shù)。

  數(shù)字寫入(S2,高);
  數(shù)字寫入(S3,高);

  // 讀取輸出頻率
  頻率 = pulseIn(sensorOut, LOW); 
  int G = 頻率;
  Serial.print("綠色 = "); 
  Serial.print(頻率);
  序列號(hào).print(""); 
  延遲(50);

然后比較這些值以做出顏色決定。不同實(shí)驗(yàn)設(shè)置的讀數(shù)不同,因?yàn)樵谶M(jìn)行設(shè)置時(shí)每個(gè)人的檢測(cè)距離都不同。

 如果(R<22 & R>20 & G<29 & G>27){
    顏色 = 1; // Red 
    Serial.print("檢測(cè)到的顏色是 = "); 
    Serial.println("RED"); 
  } 
  if(G<25 & G>22 & B<22 &B>19){
    顏色 = 2; // 橙色
      Serial.println("橙色"); 
  } 
  if(R<21 & R>20 & G<28 & G>25){
    顏色 = 3; // 綠色
      Serial.print("檢測(cè)到的顏色是 = "); 
    Serial.println("綠色"); 
  } 
  if(R<38 & R>24 & G<44 & G>30){
    顏色 = 4; // 黃色
       Serial.print("檢測(cè)到的顏色是 = "); 
    Serial.println("黃色"); 
  } 
  if (G<29 & G>27 & B<22 &B>19){
    顏色 = 5; // 藍(lán)色
     Serial.print("檢測(cè)到的顏色是 = ");
    Serial.println("藍(lán)色"); 
  }
  返回顏色;
}

這樣就完成了使用 TCS3200 和 Arduino UNO 的色選機(jī)。如果需要,您還可以對(duì)其進(jìn)行編程以檢測(cè)更多顏色。

#include

伺服拾取伺服;

伺服下降伺服;


#define S0 4

#define S1 5

#define S2 7

#define S3 6

#define sensorOut 8

int 頻率 = 0;

詮釋顏色=0;


int detectColor() {

// 激活紅色光電二極管以讀取

digitalWrite(S2, LOW);

數(shù)字寫入(S3,低);

頻率 = 脈沖輸入(傳感器輸出,低);

int R = 頻率;

Serial.print("紅色 = ");

Serial.print(frequency);//打印紅色頻率

Serial.print(" ");

延遲(50);


// 激活藍(lán)色光電二極管以讀取

digitalWrite(S2, LOW);

數(shù)字寫入(S3,高);

頻率 = 脈沖輸入(傳感器輸出,低);

int B = 頻率;

Serial.print("藍(lán)色 = ");

Serial.print(頻率);

序列號(hào).println(" ");



// 激活綠色光電二極管以讀取

digitalWrite(S2, HIGH);

數(shù)字寫入(S3,高);

// 讀取輸出頻率

頻率 = pulseIn(sensorOut, LOW);

int G = 頻率;

Serial.print("綠色 = ");

Serial.print(頻率);

序列號(hào).print("");

延遲(50);


延遲(50);


//不同設(shè)置

的讀數(shù)不同 //根據(jù)您的項(xiàng)目和檢測(cè)到的讀數(shù)更改讀數(shù)

if(R<22 & R>20 & G<29 & G>27){

color = 1; // Red

Serial.print("檢測(cè)到的顏色是 = ");

Serial.println("RED");

}

if(G<25 & G>22 & B<22 &B>19){

顏色 = 2; // 橙色

Serial.println("橙色");

}

if(R<21 & R>20 & G<28 & G>25){

顏色 = 3; // 綠色

Serial.print("檢測(cè)到的顏色是 = ");

Serial.println("綠色");

}

if(R<38 & R>24 & G<44 & G>

30){顏色 = 4; // 黃色

Serial.print("檢測(cè)到的顏色是 = ");

Serial.println("黃色");

}

if (G<29 & G>27 & B<22 &B>19){

顏色 = 5; // 藍(lán)色

Serial.print("檢測(cè)到的顏色是 = ");

Serial.println("藍(lán)色");

}

返回顏色;

}


無效設(shè)置(){

pinMode(S0,輸出);

pinMode(S1,輸出);

pinMode(S2,輸出);

pinMode(S3,輸出);

pinMode(傳感器輸出,輸入);


//頻率縮放到 20% 選定

的 digitalWrite(S0, LOW);

數(shù)字寫入(S1,高);


pickServo.attach(9);

dropServo.attach(10);


序列號(hào).開始(9600);

}


void loop() {

//伺服電機(jī)的初始位置

pickServo.write(115);

延遲(600);



for(int i = 115; i > 65; i--) {

pickServo.write(i);

延遲(2);

}

延遲(500);

//通過調(diào)用函數(shù)讀取顏色值。將結(jié)論值保存在變量

color = detectColor();

延遲(1000);


開關(guān)(顏色){

案例1:

dropServo.write(50);



休息;


案例2:

dropServo.write(80);

休息;


案例3:

dropServo.write(110);

休息;


案例4:

dropServo.write(140);

休息;


案例5:

dropServo.write(170);

休息;



案例0:

中斷;

}

延遲(500);



for(int i = 65; i > 29; i--) {

pickServo.write(i);

延遲(2);

}

延遲(300);



for(int i = 29; i < 115; i++) {

pickServo.write(i);

延遲(2);

}

顏色=0;

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 伺服電機(jī)
    +關(guān)注

    關(guān)注

    85

    文章

    2043

    瀏覽量

    57808
  • Arduino
    +關(guān)注

    關(guān)注

    188

    文章

    6468

    瀏覽量

    186951
  • 分選機(jī)
    +關(guān)注

    關(guān)注

    0

    文章

    24

    瀏覽量

    6779
  • TCS3200
    +關(guān)注

    關(guān)注

    0

    文章

    23

    瀏覽量

    15557
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    TCS230/TCS3200的脈沖問題

    最近正在做一個(gè)TCS3200顏色芯片設(shè)計(jì),電路搭好之后,發(fā)現(xiàn)輸出的脈沖幅值在0.14-0.06V,太小了。這是不能被單片機(jī)識(shí)別的。請(qǐng)問各位大哥原因可能是什么?
    發(fā)表于 11-15 11:56

    請(qǐng)問顏色傳感器GY-33 TCS34725和TCS3200有什么區(qū)別?

    請(qǐng)教顏色傳感器GY-33 TCS34725和TCS3200的具體區(qū)別?哪種用于檢測(cè)透明瓶中液體顏色更好?有沒有做過相關(guān)實(shí)驗(yàn)的朋友,希望大家給出點(diǎn)建議,非常感謝。
    發(fā)表于 03-26 07:17

    基于STM32F103的TCS3200顏色傳感器使用

    基于STM32F103的TCS3200顏色傳感器的使用團(tuán)隊(duì)布置的任務(wù)內(nèi)容是2019年中國(guó)機(jī)器人大賽的題目,小車運(yùn)行過程中需要對(duì)不同物料進(jìn)行顏色上的識(shí)別。因此我最近就學(xué)了TCS3200
    發(fā)表于 08-10 07:15

    介紹單片機(jī)如何使用TCS3200顏色識(shí)別傳感器

    應(yīng)用場(chǎng)景與單片機(jī)連接arduino連接方式stm32連接方式3 實(shí)現(xiàn)效果5 相關(guān)代碼6 最后1 簡(jiǎn)介Hi,大家好,這里是丹成學(xué)長(zhǎng),今天向大家介紹單片機(jī)如何使用顏色識(shí)別傳感器,以arduino單片機(jī)為例
    發(fā)表于 01-07 08:23

    如何調(diào)試TCS3200顏色傳感器模塊?

    如何調(diào)試TCS3200顏色傳感器模塊?
    發(fā)表于 03-09 06:34

    TCS3200顏色傳感器配套資料

    TCS3200顏色傳感器是一個(gè)比較簡(jiǎn)單功能強(qiáng)大的顏色傳感器,可以識(shí)別有紅綠藍(lán)三原色組成的各種顏色
    發(fā)表于 11-04 17:10 ?74次下載

    基于TCS3200顏色識(shí)別的自動(dòng)分揀系統(tǒng)

    TCS3200相關(guān)的應(yīng)用以及參數(shù)等等。方便學(xué)習(xí)
    發(fā)表于 11-19 14:08 ?90次下載

    基于TCS3200顏色傳感器

    基于TCS3200顏色傳感器實(shí)驗(yàn)畫圖辨別顏色等等
    發(fā)表于 02-25 10:50 ?71次下載

    TCS3200顏色傳感器的使用說明詳細(xì)資料免費(fèi)下載

    TCS3200顏色傳感器是一款全彩的顏色檢測(cè)器,包括了一塊TAOS TCS3200RGB感應(yīng)芯片和4個(gè)白光LED燈,TCS3200能在一定的
    發(fā)表于 04-19 08:00 ?23次下載
    <b class='flag-5'>TCS3200</b><b class='flag-5'>顏色</b>傳感器的使用說明詳細(xì)資料免費(fèi)下載

    基于STM32F103的TCS3200顏色傳感器的使用

    ; 團(tuán)隊(duì)布置的任務(wù)內(nèi)容是2019年中國(guó)機(jī)器人大賽的題目,小車運(yùn)行過程中需要對(duì)不同物料進(jìn)行顏色上的識(shí)別。因此我最近就學(xué)了TCS3200顏色傳感器的基本原理和代碼的具體實(shí)現(xiàn)。網(wǎng)上對(duì)該模塊的使用基本是基于
    發(fā)表于 12-01 10:51 ?46次下載
    基于STM32F103的<b class='flag-5'>TCS3200</b><b class='flag-5'>顏色</b>傳感器的使用

    使用TCS3200Arduino Uno制作Arduino Chameleon

    電子發(fā)燒友網(wǎng)站提供《使用TCS3200Arduino Uno制作Arduino Chameleon.zip》資料免費(fèi)下載
    發(fā)表于 10-27 09:55 ?2次下載
    使用<b class='flag-5'>TCS3200</b>和<b class='flag-5'>Arduino</b> <b class='flag-5'>Uno</b><b class='flag-5'>制作</b><b class='flag-5'>Arduino</b> Chameleon

    使用TCS3200/230進(jìn)行顏色檢測(cè)

    電子發(fā)燒友網(wǎng)站提供《使用TCS3200/230進(jìn)行顏色檢測(cè).zip》資料免費(fèi)下載
    發(fā)表于 02-03 11:40 ?0次下載
    使用<b class='flag-5'>TCS3200</b>/230進(jìn)行<b class='flag-5'>顏色</b>檢測(cè)

    使用TCS230 TCS3200顏色傳感器制作顏色檢測(cè)器

    電子發(fā)燒友網(wǎng)站提供《使用TCS230 TCS3200顏色傳感器制作顏色檢測(cè)器.zip》資料免費(fèi)下載
    發(fā)表于 02-13 16:48 ?7次下載
    使用<b class='flag-5'>TCS</b>230 <b class='flag-5'>TCS3200</b><b class='flag-5'>顏色</b>傳感器<b class='flag-5'>制作</b><b class='flag-5'>顏色</b>檢測(cè)器

    TCS3200顏色傳感器模塊原理圖及參考代碼

    TCS3200顏色傳感器模塊參考代碼原理圖文檔資料
    發(fā)表于 05-25 15:51 ?4次下載

    使用TCS3200模塊進(jìn)行顏色識(shí)別

    該項(xiàng)目用于檢測(cè)顏色并使用TCS3200顏色傳感器模塊和Arduino板在LCD上顯示顏色名稱。傳感器使用彩色光電二極管輸出紅色,綠色和藍(lán)色的
    的頭像 發(fā)表于 10-15 16:11 ?2101次閱讀
    使用<b class='flag-5'>TCS3200</b>模塊進(jìn)行<b class='flag-5'>顏色</b>識(shí)別
    RM新时代网站-首页