在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何讓小型云臺機械手實現按顏色分揀物品?

jf_72402704 ? 來源:jf_72402704 ? 作者:jf_72402704 ? 2023-01-05 12:56 ? 次閱讀

1. 功能說明

在小型云臺機械手附近設置一個工作臺,并安裝一個顏色識別傳感器。將紅色、藍色工件分別放置在傳感器上,如果檢測的物料的顏色為紅色,機械臂將物體放在機械臂的左側,如果檢測的物料的顏色為藍色,機械臂將物體放在機械臂的右側,否則,機械臂不動作。

2. 使用樣機

本實驗使用的樣機是用探索者兼容零件制作的。

poYBAGO2VxeAZ2oVAAUaBjjz4Gw152.png

3. 功能實現

3.1 電子硬件

在這個示例中,采用了以下硬件,請大家參考:

pYYBAGO2V2iAYGD9AAAW1Y3XZSM812.png

將夾爪、腕關節、底座關節的舵機分別接在擴展板的D4、D7以及D11舵機接口上,顏色傳感器接在A0、A4、A3口上。

poYBAGO2V36AWAc5AAVsbk6Un9U815.png

3.2 編寫程序

編寫并燒錄以下程序(Color_Sorting_Robot.ino),該程序將實現演示視頻中的動作。

編程環境:Arduino 1.8.19

/*******************************************************************************************
版權說明:Copyright 2022 Robottime(Beijing) Technology Co., Ltd. All Rights Reserved.
Distributed under MIT license.See file LICENSE for detail or copy at
https://opensource.org/licenses/MIT
by 機器譜 2022-12-21 https://www.robotway.com/
---------------------------------------------------------------------------------------
實驗需求:
用顏色傳感器實現顏色識別。
實現思路:
程序的整體思路為:在機械臂前方安裝顏色傳感器,如果檢測的物料的顏色為紅色,機械臂將
物體放在機械臂的左側,如果檢測的物料的顏色為藍色,機械臂將物體放在機械臂的右側,
否則,機械臂不動作。
實驗接線:
最上端的機械爪舵機接D4;
中間的機械身軀舵機接D7;
最下端的機械底座舵機接D11;
顏色傳感器的接線為
S1 S2 5V GND S3 S2 5V GND OUT LED 5V GND
| | | | | | | | | | | |
A0 A1 5V GND A5 A4 5V GND D2 A3 5V GND
********************************************************************************************/
//顏色傳感器原理
/*首先進行白平衡,把一個白色物體放置在TCS3200顏色傳感器之下,兩者相距10mm左右,點亮傳感器上的
4個白光LED燈,用Arduino控制器定時器設置一固定時間1s,然后選通三種顏色的濾波器,讓被測物體反
射光中紅、綠、藍三色光分別通過濾波器,計算1s時間內三色光分別對應的TCS3200的輸出脈沖數,再通過
算式得到白色物體RGB值255與三色光脈沖數的比例因子。有了白平衡后,得到的RGB比例因子,則其他顏色
物體反射光中紅、綠、藍三色光對應的1s內TCS3200輸出信號脈沖數乘以R、G、B比例因子,就可換算出被測
物體的RGB標準值。*/
#include "TimerOne.h" //顏色傳感器需要用到的定時函數庫
#include //舵機驅動需要的函數庫
ServoTimer2 myservo[3]; //舵機聲明
#define servo_num 3 //舵機數量
#define Servo_Speed 20 //舵機速度
#define Upward_servo_close 66 //機械爪閉合的角度值
#define Upward_servo_open 115 //機械爪張開的角度值
#define Middle_servo_down 105 //機械臂的初始角
#define Middle_servo_init 85 //機械臂的初始角
#define Middle_servo_left 10 //機械臂向左偏的角度
#define Middle_servo_left1 50 //機械臂向左偏的角度
#define Down_servo_middle 75 //機械底座初始角度值
#define Down_servo_left 5 //機械底座向左偏的角度值
#define Down_servo_right 145 //機械底座向右偏的角度值
int servo_pin[3]={4,7,11}; //定義舵機引腳號
float value_init[3]={Upward_servo_open, Middle_servo_left, Down_servo_middle};//舵機初始角度
int f=20; //舵機從角度A轉到角度B分的分數
//把TCS3200顏色傳感器各控制引腳連到Arduino數字端口
#define S0 A0 //物體表面的反射光越強,TCS3002D的內置振蕩器產生的方波頻率越高,
#define S1 A1 //S0和S1的組合決定輸出信號頻率比率因子,比例因子為2%
//比率因子為TCS3200傳感器OUT引腳輸出信號頻率與其內置振蕩器頻率之比
#define S2 A4 //S2和S3的組合決定讓紅、綠、藍,哪種光線通過濾波器
#define S3 A5
#define OUT 2 //TCS3200顏色傳感器輸出信號輸入到Arduino中斷0引腳,并引發脈沖信號中斷
//在中斷函數中記錄TCS3200輸出信號的脈沖個數
#define LED A3 //控制TCS3200顏色傳感器是否點亮
int g_count = 0; // 計算與反射光強相對應TCS3200顏色傳感器輸出信號的脈沖數
// 數組存儲在1s內TCS3200輸出信號的脈沖數,它乘以RGB比例因子就是RGB標準值
int g_array[3];
int g_flag = 0; //濾波器模式選擇順序標志
float g_SF[3]; // 存儲從TCS3200輸出信號的脈沖數轉換為RGB標準值的RGB比例因子
// 初始化TSC3200各控制引腳的輸入輸出模式
//設置TCS3002D的內置振蕩器方波頻率與其輸出信號頻率的比例因子為2%
void TSC_Init()
{
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(OUT, INPUT);
pinMode(LED, OUTPUT);
digitalWrite(S0, LOW);
digitalWrite(S1, HIGH);
}
//選擇濾波器模式,決定讓紅、綠、藍,哪種光線通過濾波器
void TSC_FilterColor(int Level01, int Level02)
{
if(Level01 != LOW)
Level01 = HIGH;
if(Level02 != LOW)
Level02 = HIGH;
digitalWrite(S2, Level01);
digitalWrite(S3, Level02);
}
//中斷函數,計算TCS3200輸出信號的脈沖數
void TSC_Count()
{
g_count ++ ;
}
//定時器中斷函數,每1s中斷后,把該時間內的紅、綠、藍三種光線通過濾波器時,
//TCS3200輸出信號脈沖個數分別存儲到數組g_array[3]的相應元素變量中
void TSC_Callback()
{
switch(g_flag)
{
case 0:
TSC_WB(LOW, LOW); //選擇讓紅色光線通過濾波器的模式
break;
case 1:
g_array[0] = g_count; //存儲1s內的紅光通過濾波器時,TCS3200輸出的脈沖個數
TSC_WB(HIGH, HIGH); //選擇讓綠色光線通過濾波器的模式
break;
case 2:
g_array[1] = g_count; //存儲1s內的綠光通過濾波器時,TCS3200輸出的脈沖個數
TSC_WB(LOW, HIGH); //選擇讓藍色光線通過濾波器的模式
break;
case 3:
g_array[2] = g_count; //存儲1s內的藍光通過濾波器時,TCS3200輸出的脈沖個數
TSC_WB(HIGH, LOW); //選擇無濾波器的模式
break;
default:
g_count = 0; //計數值清零
break;
}
}
//設置反射光中紅、綠、藍三色光分別通過濾波器時如何處理數據的標志
//該函數被TSC_Callback( )調用
void TSC_WB(int Level0, int Level1)
{
g_count = 0; //計數值清零
g_flag ++; //輸出信號計數標志
TSC_FilterColor(Level0, Level1); //濾波器模式
Timer1.setPeriod(100000); //設置輸出信號脈沖計數時長1s
}
//初始化
void setup()
{
TSC_Init();
Serial.begin(9600); //啟動串行通信
Timer1.initialize(100000); // defaulte is 1s
Timer1.attachInterrupt(TSC_Callback); //設置定時器1的中斷,中斷調用函數為TSC_Callback()
//設置TCS3200輸出信號的上跳沿觸發中斷,中斷調用函數為TSC_Count()
attachInterrupt(0, TSC_Count, RISING);
digitalWrite(LED, HIGH);//點亮LED燈
// delay(1500); //延時4s,以等待被測物體紅、綠、藍三色在1s內的TCS3200輸出信號脈沖計數
//通過白平衡測試,計算得到白色物體RGB值255與1s內三色光脈沖數的RGB比例因子
g_SF[0] = 0.53; //紅色光比例因子
g_SF[1] = 0.65; //綠色光比例因子
g_SF[2] = 0.54; //藍色光比例因子
//紅、綠、藍三色光對應的1s內TCS3200輸出脈沖數乘以相應的比例因子就是RGB標準值
reset();
}
//主程序
int Now_Color = 0; //存儲上一次顏色傳感器檢測的數值
int Last_Color = 0; //存儲當前顏色傳感器檢測的數值
void loop()
{
Last_Color = Color_Detection();
Now_Color = Color_Detection();
if( Last_Color == Now_Color) //如果兩次檢測的數值相同
//(這里是為了防止顏色傳感器檢測出錯,所以檢測了兩次)
{
switch(Now_Color)
{
case 1:
Serial.print("Red"); //如果檢測到的物料為紅色,將物料放到機械臂的左側
Servo_Left();
Now_Color = 0; Last_Color = 0;
break;
case 2:
Serial.print("Blue");//如果檢測到的物料為藍色,將物料放到機械臂的右側
Servo_Right();
Now_Color = 0; Last_Color = 0;
break;
case 3:
Serial.print("NONE");//否則,機械臂不動作;
Serial.println();
Now_Color = 0; Last_Color = 0;
break;
}
}
}
int Color_Detection() //顏色檢測函數
{
int color[3];
g_flag = 0;
for(int i=0; i<3; i++) {
color[i] = g_array[i] * g_SF[i];
}
Serial.println((String)(color[0]) + '+' + (String)(color[1]) + '+' + (String)(color[2]) + '+');
delay(500);
if( (color[0] > color[1]) && (color[0] >color[2]) && ( (color[1]+color[2])
return 1; //如果檢測到的顏色為紅色,返回1;
}
else if( (color[2] > color[1]) && (color[2] >color[0]) ){
return 2; //如果檢測到的顏色為藍色,返回2;
}
else { return 3; } //否則,機械臂不動作;
}
void reset() //舵機角度初始化
{
for(int i=0;i
{
myservo[i].attach(servo_pin[i]);
myservo[i].write(map(value_init[i],0,180,500,2500));
}
}
void servo_move(float value0, float value1, float value2) //舵機轉動
{
float value_arguments[3] = {value0, value1, value2};
float value_delta[servo_num];
for(int i=0;i
{
value_delta[i] = (value_arguments[i] - value_init[i]) / f;
}
for(int i=0;i
{
for(int k=0;k
{
value_init[k] = value_delta[k] == 0 ? value_arguments[k] : value_init[k] + value_delta[k];
}
for(int j=0;j
{
myservo[j].write(map(value_init[j],0,180,500,2500));
delay(Servo_Speed);
}
}
}
void Servo_Left() //將物料放到機械臂的左側
{
servo_move(Upward_servo_open, Middle_servo_left, Down_servo_middle);//初始化動作
servo_move(Upward_servo_open, Middle_servo_init, Down_servo_middle);//機械臂下降
servo_move(Upward_servo_close, Middle_servo_init, Down_servo_middle);//機械爪閉合(抓取貨物)
servo_move(Upward_servo_close, Middle_servo_left1, Down_servo_middle);//機械臂上抬
servo_move(Upward_servo_close, Middle_servo_down, Down_servo_left); //機械臂下降,機械底座向左轉
servo_move(Upward_servo_open, Middle_servo_down, Down_servo_left); //機械爪張開(釋放貨物)
servo_move(Upward_servo_open, Middle_servo_left, Down_servo_middle);//機械臂回復到初始角度
}
void Servo_Right() //將物料放到機械臂的右側
{
servo_move(Upward_servo_open, Middle_servo_left, Down_servo_middle);//初始化動作
servo_move(Upward_servo_open, Middle_servo_init, Down_servo_middle);
servo_move(Upward_servo_close, Middle_servo_init, Down_servo_middle);
servo_move(Upward_servo_close, Middle_servo_left1, Down_servo_middle);
servo_move(Upward_servo_close, Middle_servo_down, Down_servo_right);
servo_move(Upward_servo_open, Middle_servo_down, Down_servo_right);
servo_move(Upward_servo_open, Middle_servo_left, Down_servo_middle);
}

審核編輯黃昊宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 機器人
    +關注

    關注

    211

    文章

    28704

    瀏覽量

    208687
  • 機械手
    +關注

    關注

    7

    文章

    339

    瀏覽量

    29772
收藏 人收藏

    評論

    相關推薦

    案例分析,搬運機械手如何選擇電機?

    ? ? ? 在選擇搬運機械手的電機時,需要考慮多個因素以確保電機的性能滿足機械手的運行需求。以下是一個詳細的案例分析,說明如何為搬運機械手選擇合適的電機。 ? ? ? ? 一、電機類型選擇
    的頭像 發表于 01-21 16:44 ?108次閱讀
    案例分析,搬運<b class='flag-5'>機械手</b>如何選擇電機?

    LabVIEW運動控制(一):EtherCAT運動控制器的SCARA機械手應用

    通過LabVIEW進行SCARA機械手的開發應用
    的頭像 發表于 01-09 11:42 ?513次閱讀
    LabVIEW運動控制(一):EtherCAT運動控制器的SCARA<b class='flag-5'>機械手</b>應用

    機器視覺運動控制一體機在DELTA并聯機械手視覺上下料應用

    機器視覺運動控制一體機在DELTA并聯機械手視覺上下料的應用
    的頭像 發表于 10-24 09:02 ?523次閱讀
    機器視覺運動控制一體機在DELTA并聯<b class='flag-5'>機械手</b>視覺上下料應用

    AI視角下的ZR機械手市場:速程精密科技獨占鰲頭

    AI視角下的ZR機械手市場:速程精密科技獨占鰲頭 在智能制造的浪潮中,AI技術以其獨特的數據分析能力和市場洞察力,成為評估行業格局的重要工具。近期,通過AI的深度分析,國內ZR機械手市場的競爭格局
    的頭像 發表于 09-25 16:14 ?341次閱讀

    機械手 OEM 的應用

    中心,機械手可以快速地將包裹從傳送帶上分揀到不同的區域,以便進行后續的配送。 倉儲管理 :在倉儲管理中,機械手 OEM 可以與倉儲管理系統相結合,實現貨物的自動存儲和取出。它能夠根據系
    發表于 09-18 10:31

    明治案例 | 【BGS背景抑制】【大光斑】機械手吸取網布有無檢測

    在自動化生產線中,機械手需要準確地識別和吸取特定位置上的網布。網狀物抓取網布表面存在大小不一的孔洞,這給傳統傳感器帶來了很大挑戰。傳統的點光斑傳感器在檢測時可能因孔洞而漏檢,或因顏色復雜而誤檢。因此
    的頭像 發表于 08-30 12:48 ?304次閱讀
    明治案例 | 【BGS背景抑制】【大光斑】<b class='flag-5'>機械手</b>吸取網布有無檢測

    “快、準、穩”——阿普奇AK5在機械手領域的應用解決方案

    程序實現抓取、搬運物件或操作工具等自動作業,如今工業機械手已然成為現代制造生產系統中的一個重要組成部分。 (點焊) (噴涂) (裝配空調) (穿針引線) 那么,機械手是由什么組成的呢? ? 常見的
    的頭像 發表于 08-09 14:50 ?433次閱讀
    “快、準、穩”——阿普奇AK5在<b class='flag-5'>機械手</b>領域的應用解決方案

    機器視覺控制機械手的具體過程

    機器視覺控制機械手是一種將機器視覺技術與機械手控制技術相結合的自動化技術。它通過機器視覺系統獲取目標物體的圖像信息,然后利用圖像處理技術對圖像進行分析和處理,從而實現機械手的精確控制
    的頭像 發表于 07-04 10:40 ?977次閱讀

    C#之Delta并聯機械手的視覺同步分揀

    Delta并聯機械手視覺識別后如何在流水線進行物料的同步分揀。
    的頭像 發表于 07-03 09:52 ?1241次閱讀
    C#之Delta并聯<b class='flag-5'>機械手</b>的視覺同步<b class='flag-5'>分揀</b>

    PLC在機械手控制系統中的具體應用

    隨著工業自動化技術的飛速發展,機械手作為現代制造業中不可或缺的重要設備,其智能化、自動化水平不斷提高。在機械手控制系統中,PLC(可編程邏輯控制器)因其可靠性高、編程簡單、功能強大等優點,被廣泛應用
    的頭像 發表于 06-17 10:46 ?1758次閱讀

    EtherCAT運動控制器Delta機械手應用

    以正運動ZMC406R運動控制器為例,講解Delta機械手運動控制應用開發。
    的頭像 發表于 05-09 10:47 ?1760次閱讀
    EtherCAT運動控制器Delta<b class='flag-5'>機械手</b>應用

    工業網關的數字化車間機械手和工業生產設備遠程監控解決方案應用

    工業生產環境中,數字化車間機械手和工業生產設備的遠程監控日益成為一種趨勢。隨著工業互聯網的快速發展和智能制造的興起,傳統的生產方式已經難以適應市場的需求和競爭的壓力,因此,數字化車間機械手和工業生產
    的頭像 發表于 03-29 13:43 ?529次閱讀
    工業網關的數字化車間<b class='flag-5'>機械手</b>和工業生產設備遠程監控解決方案應用

    ZR機械手:提高生產效率,降低成本的有效途徑-速程精密

    ZR機械手:提高生產效率,降低成本的有效途徑-速程精密 在制造業中,如何提高生產效率、降低成本一直是企業追求的目標。隨著科技的不斷進步,ZR機械手作為一種新型的自動化設備,逐漸成為實現這一
    的頭像 發表于 02-28 15:14 ?785次閱讀
    ZR<b class='flag-5'>機械手</b>:提高生產效率,降低成本的有效途徑-速程精密

    ZR機械手:推動制造業向更高水平發展

    ZR機械手:推動制造業向更高水平發展-速程精密 隨著科技的不斷發展,制造業正面臨著巨大的變革。在這個過程中,ZR機械手以其卓越的性能和創新的技術,成為了推動制造業向更高水平發展的重要力量。 ZR
    的頭像 發表于 02-28 15:06 ?601次閱讀
    ZR<b class='flag-5'>機械手</b>:推動制造業向更高水平發展

    搬運機械手連接“搭子”哪家選?YM系列工業級連接器真搭

    搬運機械手是工廠、流水線上非常重要的角色,用于完成對貨品或工件的取放動作。搬運機械手能否做到流暢的工作,穩定且更有保障的持續安全供電連接是非常關鍵的一環。YM系列連接器為搬運機械手提供連接支持搬運
    的頭像 發表于 02-19 14:03 ?540次閱讀
    搬運<b class='flag-5'>機械手</b>連接“搭子”哪家選?YM系列工業級連接器真搭
    主站蜘蛛池模板: 一区二区在线看 | 天天操天天操天天射 | 99成人 | 成人一级网站 | 成人午夜亚洲影视在线观看 | 韩国特黄特色a大片免费 | 欧美一级精品高清在线观看 | 天堂视频在线视频观看2018 | 免费观看视频在线 | 免费福利片2022潦草影视午夜 | 欧美成人午夜精品一区二区 | 大黄网站色多多 | 中文字幕一区二区三区精彩视频 | 免费在线观看你懂的 | 久热国产在线 | 色婷婷婷婷 | 奇米影视999 | 四虎美女 | 永久免费看www色视频 | 欧美色视频日本片高清在线观看 | 亚洲男人天堂手机版 | 国产成人综合一区人人 | 色婷婷基地 | 亚洲最大成人网色 | 99久久99久久免费精品蜜桃 | www.色婷婷 | 高清不卡日本v在线二区 | 天堂网在线资源www种子 | 人人干人人模 | 男女爱爱是免费看 | 成人a毛片免费全部播放 | 午夜官网| 中国三级视频 | 一级毛片免费在线观看网站 | 全黄h全肉边做边吃奶在线观看 | 双性人皇上被c到哭 | 天堂资源8中文最新版在线 天堂资源地址在线 | 欧美资源在线观看 | 亚洲29p| 五月婷婷综合网 | 人人爽人人干 |