ویژگیهای سنسور رنگ GY-31 TCS3200
سنسور رنگ TCS3200 به کمک 64 دیود نوری، عمل تشخیص رنگ را انجام میدهد. خروجی این سنسور یک موج مربعی میباشد. شدت رنگ مستقیما از فرکانس این موج مربعی به دست میآید. این 64 دیود نوری از 16 دیود با فیلتر قرمز، 16 دیود با فیلتر سبز، 16 دیود با فیلتر آبی و 16 دیود نوری شفاف بدون فیلتر تشکیل شده است. هر 16 عدد از این دیودها به صورت موازی به هم وصل شدهاند. برای تشخیص هر رنگ، دیودهای نوری مربوط به آن رنگ فعال میشوند.
دیتاشیت سنسور TCS3200 را میتوانید از اینجا دانلود کنید.
GY-31 TCS3200 Color Recognition Sensor Datasheet
معرفی پایه های (Pinout) سنسور رنگ GY-31 TCS3200
سنسور رنگ TCS3200 دارای پایههایی به شرح زیر است:
- VCC: تغذیه ماژول – 2.7 تا 5.5 ولت
- GND: زمین
- OUT: سیگنال خروجی
پایه های کنترلی:
- S0: پایه ورودی جهت انتخاب مقیاسگذاری فرکانس خروجی
- S1: پایه ورودی جهت انتخاب مقیاسگذاری فرکانس خروجی
- S2: پایه ورودی جهت انتخاب نوع دیودهای نوری
- S3: پایه ورودی جهت انتخاب نوع دیودهای نوری
- LED: پایه کنترل LED
نکته
دو پایه S2 و S3 برای انتخاب یکی از 4 نوع دیودهای نوری میباشد. جدول زیر حالت های مختلف را نشان میدهد.
نکته
پین اوت (Pinout) این ماژول را میتوانید در تصویر زیر مشاهده کنید.
لوازمی که به آن احتیاج دارید
قطعات مورد نیاز
نرم افزارهای مورد نیاز
راه اندازی سنسور رنگ GY-31 TCS3200 با آردوینو
گام اول: سیم بندی
مطابق مدار زیر سنسور GY-31 را به آردوینو متصل کنید.
گام دوم: کد
کد زیر را روی برد آردوینو آپلود کنید.
/*
GY-31-TCS3200-Color-Recognition-Sensor-Module
Modified on 29 Dec 2020
by Amir Mohammad Shojaee @ Electropeak
Home
based on create.arduino.cc Example
*/
#define s0 8
#define s1 9
#define s2 10
#define s3 11
#define out 12
int data=0;
void setup()
{
pinMode(s0,OUTPUT);
pinMode(s1,OUTPUT);
pinMode(s2,OUTPUT);
pinMode(s3,OUTPUT);
pinMode(out,INPUT);
Serial.begin(9600);
digitalWrite(s0,HIGH); //Putting S0/S1 on HIGH/HIGH levels means the output frequency scalling is at 100% (recommended)
digitalWrite(s1,HIGH);
}
void loop() //Every 0.2s we select a photodiodes set and read its data
{
digitalWrite(s2,LOW); //S2/S3 levels define which set of photodiodes we are using LOW/LOW is for RED LOW/HIGH is for Blue and HIGH/HIGH is for green
digitalWrite(s3,LOW);
Serial.print("Red value= ");
data=pulseIn(out,LOW); //here we wait until "out" go LOW, we start measuring the duration and stops when "out" is HIGH again
Serial.print(map(data,60,15,0,100));
Serial.print("\t");
delay(20);
digitalWrite(s2,LOW);
digitalWrite(s3,HIGH);
Serial.print("Blue value= ");
data=pulseIn(out,LOW); //here we wait until "out" go LOW, we start measuring the duration and stops when "out" is HIGH again
Serial.print(map(data,80,11,0,100));
Serial.print("\t");
delay(20);
digitalWrite(s2,HIGH);
digitalWrite(s3,HIGH);
Serial.print("Green value= ");
data=pulseIn(out,LOW); //here we wait until "out" go LOW, we start measuring the duration and stops when "out" is HIGH again
Serial.print(map(data,80,20,0,100));
Serial.print("\t");
delay(20);
Serial.println();
delay(200);
}
ابتدا 4 پایه کنترلی را به عنوان خروجی میکروکنترلر و سپس پایه خروجی سنسور را به عنوان ورودی میکروکنترلر تعیین میکنیم. در ادامه از طریق دو پایه S0 و S1 وضعیت مقیاس فرکانس را مشخص میکنیم. سپس از طریق پایه های S2 و S3 رنگ موردنظر را انتخاب میکنیم. در ادامه با دستور pulseIn به ترتیب شدت سه رنگ قرمز، آبی و سبز را ثبت کرده و در Serial Monitor نمایش میدهیم.
نکته
میتوانیم خروجی پالس سنسور را از طریق دستور map کالیبره کنیم و مقدار شدت هر رنگ را بین بازه 0 تا 100 قرار دهیم.
برای این کار بایستی ابتدا سنسور را در وضعیتی کاملا ثابت قرار داده و سپس سریال مانیتور در آردوینو را باز کرده و به ترتیب کاغذها با رنگ های قرمز، سبز و آبی را روبهروی سنسور قرار دهیم. رنج تغییر هر رنگ را یادداشت میکنیم و این رنج را از طریق دستور map به رنج 0 تا 100 تغییر میدهیم.
خروجی Serial Monitor را زمانی که به ترتیب سه رنگ قرمز، سبز و آبی را روبهروی سنسور قرار میدهیم، در شکل زیر میبینید.
خروجی رنگ قرمز:
خروجی رنگ سبز:
خروجی رنگ آبی: