118ELEC | مجله خبری الکترونیک و رباتیک
  • خانه
  • اخبار
    • اخبار الکترونیک
    • اخبار رباتیک
  • آموزش ها
    • الکترونیک
      • الکترونیک مقدماتی
        • معرفی قطعات الکترونیک
        • تجهیزات اندازه‌گیری
      • الکترونیک پیشرفته
      • الکترونیک دیجیتال
      • الکترونیک صنعتی
    • میکروکنترلرها
      • میکروکنترلر چیست و انواع آن
    • آردوینو
      • آردوینو چیست
      • پروژه آردوینو
    • اینترنت اشیاء
      • اینترنت اشیاء مقدماتی
      • اینترنت اشیاء پیشرفته
    • شبکه‌های کامپیوتری و ارتباط داده
      • can
    • طراحی و ساخت PCB
      • روش های ساخت پی سی بی
    • باتری‌ها
      • باتری چیست؟
      • باتری لیتیوم یون
    • موتور و درایور
      • درایور موتور
      • موتور DC
    • رباتیک
      • مباحث پایه رباتیک
      • ربات مسیر یاب
      • ربات جنگجو
      • سایر ربات ها
  • پروژه
    • پروژه آردوینو
    • پروژه Esp
  • سرگرمی الکترونیک
  • درباره ما
    • درباره ما
    • تماس با ما
  • نویسنده شو!
    • راهنمای ثبت نام و درج مقاله
    • نشر مقاله
    • ثبت نام
    • ورود
    • بازیابی رمز عبور
بدون نتیجه
مشاهده همه نتیجه
  • خانه
  • اخبار
    • اخبار الکترونیک
    • اخبار رباتیک
  • آموزش ها
    • الکترونیک
      • الکترونیک مقدماتی
        • معرفی قطعات الکترونیک
        • تجهیزات اندازه‌گیری
      • الکترونیک پیشرفته
      • الکترونیک دیجیتال
      • الکترونیک صنعتی
    • میکروکنترلرها
      • میکروکنترلر چیست و انواع آن
    • آردوینو
      • آردوینو چیست
      • پروژه آردوینو
    • اینترنت اشیاء
      • اینترنت اشیاء مقدماتی
      • اینترنت اشیاء پیشرفته
    • شبکه‌های کامپیوتری و ارتباط داده
      • can
    • طراحی و ساخت PCB
      • روش های ساخت پی سی بی
    • باتری‌ها
      • باتری چیست؟
      • باتری لیتیوم یون
    • موتور و درایور
      • درایور موتور
      • موتور DC
    • رباتیک
      • مباحث پایه رباتیک
      • ربات مسیر یاب
      • ربات جنگجو
      • سایر ربات ها
  • پروژه
    • پروژه آردوینو
    • پروژه Esp
  • سرگرمی الکترونیک
  • درباره ما
    • درباره ما
    • تماس با ما
  • نویسنده شو!
    • راهنمای ثبت نام و درج مقاله
    • نشر مقاله
    • ثبت نام
    • ورود
    • بازیابی رمز عبور
بدون نتیجه
مشاهده همه نتیجه
118ELEC | مجله خبری الکترونیک و رباتیک
بدون نتیجه
مشاهده همه نتیجه

راه اندازی سنسور تشخیص رنگ TCS230/TCS3200 با آردوینو

118elec .com توسط 118elec .com
20 اسفند 1401
در پروژه آردوینو, دسته‌بندی نشده, سنسورها
0

در این مقاله به آموزش تشخیص رنگ با استفاده از سنسور رنگ TCS230 یا TCS3200 و آردوینو پرداخته شده است.

حسگر تشخیص رنگ یک قطعه‌ی ساده و با کاربری آسان است که با استفاده از آن می توان رنگ یک شئ را تشخیص داد و پس از تشخیص رنگ، اقدامات دیگر را در سیستم آغاز کرد. این نوع سنسور راه‌حل‌های آسانی را برای مرتب‌سازی و بسته‌بندی در یک محیط صنعتی ارائه می‌دهد درحالی که هنوز سنسورهای گران‌قیمت در صنایع استفاده می‌شوند، سنسورهای مقرون به صرفه مانند TCS3200 را می‌توان برای کاربردهای DIY (خودت انجامش بده!) مورد استفاده قرار داد. بنابراین در این مقاله به این فکر کردیم که یک سنسور رنگی TCS3200 را با یک آردوینو متصل کنیم و در ادامه با جزئیات این سنسور و عملکرد آن آشنا شوید. پس بدون بحث بیشتر، بیایید مستقیماً به آن بپردازیم.

سنسور تشخیص رنگ TCS3200 می‌تواند رنج گسترده‌ای از رنگ‌ها را بر اساس طول موج آن تشخیص دهد. این سنسور همانطور که پیداست در پروژه‌هایی مانند تشخیص یکسان بودن رنگ‌ها، دسته‌بندی براساس رنگ، خواندن نوار تست و غیره کاربرد دارد.

سنسور تشخیص رنگ TCS3200

پیشنهاد می‌کنیم قبل از انجام تشخیص رنگ و را‌ه‌اندازی این سنسور با استفاده از آردوینو، ابتدا با اجزای اصلی این ماژول سنسور کوچک آشنایی اولیه پیدا کنید.

همانطورکه در تصویر سنسور تشخیص رنگ TCS3200 در ذیل مشاهده می‌کنید، هسته اصلی این سنسور تراشه TAOS TCS3200 RGB است و روی برد آن چهار LED برای تاباندن نور به جسم قرار داده شده است.

سنسور تشخیص رنگ TCS3200

مشخصات فنی سنسور TCS3200:

  • ولتاژ تغذیه: 2.7V تا 5.5V
  • ابعاد: 28.4mm x 28.4mm (1.12” x 1.12”)
  • نوع ارتباط: TTL دیجیتال
  • قابلیت تبدیل شدت نور به فرکانس با رزولوشن بالا
  • دارای خروجی فرکانسی گسترده با قابلیت تنظیم مقیاس فرکانس
  • قابلیت ارتباط مستقیم با میکروکنترلر

سنسور TCS3200 چگونه کار می‌کند؟

سنسور تشخیص رنگ TCS3200 دارای یک آرایه از فتودیود با چهار فیلتر مختلف است. به زبان ساده، فتودیود یک المان نیمه هادی است که شدت نور را به جریان تبدیل می‌کند. فیلترهای این سنسور عبارتند از:

  • 16 فتودیود با فیلتر قرمز (حساس به طول موج قرمز)
  • 16 فتودیود با فیلتر سبز (حساس به طول موج سبز)
  • 16 فتودیود با فیلتر آبی (حساس به طول موج آبی)
  • 16 فتودیود بدون فیلتر

اگر با دقت و از نزدیک به تراشه TCS3200 نگاه کنید، فیلترهای مختلف آن را به راحتی می‌بینید.

تراشه TCS3200

با انتخاب فیلتر آرایه‌ی فتودیود، می‌توانید شدت رنگ‌های مختلف را تشخیص دهید. این سنسور دارای یک مبدل جریان به فرکانس است که خروجی فتودیودها را به موج مربعی  تبدیل می‌کند (فرکانس این موج مربعی متناسب با شدت رنگ جسم مقابل سنسور می‌باشد) و سپس این فرکانس با آردوینو خوانده و رنگ جسم موردنظر تشخیص داده می‌شود. این مراحل در شکل زیر نشان داده شده است.

نحوه ارسال فرکانس و امواج مربعی از تراشه TCS3200 به آردوینو

پین اوت:

ترتیب پایه‌های سنسور در شکل نشان داده شده است:

پایه‌های خروجی تراشه TCS3200
توضیحاتI/Oشماره پایه
زمین تغذیه GND (4)
فعال ساز خروجی- این پایه active low استIOE (3)
فرکانس خروجیOOUT (6)
انتخاب مقیاس فرکانس خروجیIS0, S1 (1, 2)
انتخاب فیلتر فتودیودI 
تغذیه سنسور VDD (5)

انتخاب فیلتر:

برای انتخاب رنگی که توسط فتودیود تشخیص داده می‌شود، باید از پایه‌های S2 و S3 استفاده کنید. فتودیودها به صورت موازی به یکدیگر متصل شده‌اند و با Low و High کردن پایه‌های S2 و S3 در ترکیب‌های مختلف، می‌توانید فتودیودهای مختلفی را انتخاب کنید. این ترکیب‌های مختلف در جدول زیر آورده شده است:

S3S2نوع فتودیود
LowLowقرمز
HighLowآبی
LowHighبدون فیلتر
HighHighسبز

انتخاب مقیاس فرکانس خروجی:

پایه‌های S0 و S1 برای انتخاب مقیاس فرکانس خروجی استفاده می‌شوند. مقیاس فرکانس خروجی می‌تواند یکی از مقادیر 100%، 20% و 2% باشد. این مقیاس‌بندی کمک می‌کند که خواندن خروجی سنسور با انواع فرکانس شمارها یا میکروکنترلرها با دقت بالایی انجام شود. در جدول زیر تنظیمات پایه‌های S0 و S1 گفته شده است:

S1S0مقیاس فرکانس خروجی
LLحالت خاموشی
HL2%
LH20%
HH100%

برای آردوینو، مقیاس فرکانس خروجی روی 20% تنظیم می‌شود. بنابراین، پایه S0 برابربا High و پایه S1 باید Low باشد.

تشخیص رنگ با آردوینو و TCS3200

در این مثال به شما آموزش داده می‌شود تا به کمک آردوینو و سنسور رنگ TCS3200 رنگ‌ها را تشخیص دهید. این سنسور دقت خیلی بالایی ندارد اما می‌تواند برای تشخیص رنگ در پروژه‌های ساده مفید باشد.

برای انجام این پروژه  به سنسور تشخیص رنگ TCS3200 یا TCS230، آردوینو UNO و سیم‌ جامپر نیاز دارید.

شماتیک طرح راه اندازی سنسور تشخیص رنگ:

اتصال سنسور TCS3200 به آردوینو بسیار ساده است. نحوه اتصالات سیم‌های این پروژه در شکل زیر نشان داده شده است.

نحوه سیم کشی ماژول سنسور تشخیص رنگ TCS3200 به ماژول آردوینو

اتصال سنسور با آردوینو به این صورت است:

  • SO : پایه دیجیتال 4
  • S1 : پایه دیجیتال 5
  • VCC :5V
  • S3 : پایه دیجیتال 6
  • S2 : پایه دیجیتال 7
  • OUT : پایه دیجیتال 8

کد برنامه:

برای این راه‌اندازی ابتدا باید دو مرحله کدنویسی در محیط برنامه‌نویسی آردوینو را به آسانی پشت‌سر بگذاریم که آن‌ها عبارتنداز:

  1. خواندن و نمایش فرکانس خروجی روی سریال مانیتور. با قرار دادن جسم با رنگ‌های مختلف روبه‌روی سنسور، مقادیر مختلف فرکانس روی سریال مانیتور نمایش داده می‌شود.
  2. متمایز کردن رنگ‌های مختلف از یکدیگر. مقدار فرکانسی که در کد قبل به دست آمده است برای متمایز کردن رنگ‌های مختلف استفاده می‌شود و رنگ‌های قرمز، سبز و آبی از یکدیگر متمایز می‌شوند.

1. خواندن فرکانس خروجی

در این مرحله کد زیر را روی برد آردوینو خود آپلود کنید.

// TCS230 or TCS3200 pins wiring to Arduino
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

// Stores frequency read by the photodiodes
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

void setup() {
  // Setting the outputs
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  
  // Setting the sensorOut as an input
  pinMode(sensorOut, INPUT);
  
  // Setting frequency scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
   // Begins serial communication 
  Serial.begin(9600);
}
void loop() {
  // Setting RED (R) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  
  // Reading the output frequency
  redFrequency = pulseIn(sensorOut, LOW);
  
   // Printing the RED (R) value
  Serial.print("R = ");
  Serial.print(redFrequency);
  delay(100);
  
  // Setting GREEN (G) filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  greenFrequency = pulseIn(sensorOut, LOW);
  
  // Printing the GREEN (G) value  
  Serial.print(" G = ");
  Serial.print(greenFrequency);
  delay(100);
 
  // Setting BLUE (B) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  blueFrequency = pulseIn(sensorOut, LOW);
  
  // Printing the BLUE (B) value 
  Serial.print(" B = ");
  Serial.println(blueFrequency);
  delay(100);
}

بعد انتقال تکه کد بالا، سریال مانیتور آردوینو را باز کنید و بادریت را روی 9600 تنظیم کنید. یک جسم آبی را در فواصل مختلف روبه‌روی سنسور قرار دهید. شما باید خروجی را در دو حالت مختلف ذخیره کنید: یک حالت، موقعی که جسم از سنسور دور است و حالت دیگر، زمانی که جسم به سنسور نزدیک است.

ایجاد حالت شناسایی رنگ آبی در دو وضعیت دور و نزدیک برای سنسور تشخیص رنگ TCS3200 با یک صفحه آبی رنگ و مسطح در جلوی سنسور

سپس مقادیر نشان داده شده روی سریال مانیتور را بررسی کنید. فرکانس آبی (B) باید در مقایسه با قرمز (R) و سبز (G) کمتر باشد. شکل زیر خروجی سنسور روی سریال مانیتور را نشان می‌دهد.

نمایش خروجی بعد از تشخیص رنگ آبی روی سریال مانیتور آردوینو

متوجه می‌شوید که با قرار دادن جسم آبی رنگ در مقابل سنسور، فرکانس آبی (B) بین دو مقدار 59 و 223 (در شکل بالا مشخص شده است) تغییر می‌کند.

توجه: شما نمی‌توانید از دو مقدار 59 و 223 در برنامه خود استفاده کنید. شما باید این مقادیر را برای سنسور و جسم خود به دست بیاورید و کمترین و بیشنرین فرکانس برای رنگ آبی را یادداشت کنید. زیرا در ادامه به آن نیاز خواهید داشت. مراحل گفته شده را برای جسم‌های قرمز و سبز رنگ نیز انجام دهید و دو حد بالایی و پایینی فرکانس خروجی را برای هر رنگ یادداشت کنید.

ایجاد حالت شناسایی رنگ‌های قرمز و سبز برای سنسور تشخیص رنگ TCS3200

متمایز کردن رنگ‌های مختلف از یکدیگر

این برنامه مقادیر فرکانس خروجی را به یک مقدار RGB نگاشت می‌کند. (این مقادیر بین 0 و 255  است)

در بخش قبل زمانی که جسم آبی به سنسور نزدیک بود و سنسور بیشترین نور آبی را دریافت می‌کرد، مقدار فرکانس خروجی 59 و زمانی که جسم از سنسور فاصله زیادی داشت، مقدار فرکانس خروجی 223 به دست آمد.

بنابراین در RGB، فرکانس 59 با 255 و فرکانس 223 با 0 متناظر است.  نگاشت با تابع map() انجام می‌شود. فقط کافی است در کد زیر در تابع map() پارامترهای XX را با مقادیر خودتان جایگزین کنید.

// TCS230 or TCS3200 pins wiring to Arduino
#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8

// Stores frequency read by the photodiodes
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

// Stores the red. green and blue colors
int redColor = 0;
int greenColor = 0;
int blueColor = 0;

void setup() {
  // Setting the outputs
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  
  // Setting the sensorOut as an input
  pinMode(sensorOut, INPUT);
  
  // Setting frequency scaling to 20%
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  
  // Begins serial communication
  Serial.begin(9600);
}

void loop() {
  // Setting RED (R) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  
  // Reading the output frequency
  redFrequency = pulseIn(sensorOut, LOW);
  // Remaping the value of the RED (R) frequency from 0 to 255
  // You must replace with your own values. Here's an example: 
  // redColor = map(redFrequency, 70, 120, 255,0);
  redColor = map(redFrequency, XX, XX, 255,0);
  
  // Printing the RED (R) value
  Serial.print("R = ");
  Serial.print(redColor);
  delay(100);
  
  // Setting GREEN (G) filtered photodiodes to be read
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  greenFrequency = pulseIn(sensorOut, LOW);
  // Remaping the value of the GREEN (G) frequency from 0 to 255
  // You must replace with your own values. Here's an example: 
  // greenColor = map(greenFrequency, 100, 199, 255, 0);
  greenColor = map(greenFrequency, XX, XX, 255, 0);
  
  // Printing the GREEN (G) value  
  Serial.print(" G = ");
  Serial.print(greenColor);
  delay(100);
 
  // Setting BLUE (B) filtered photodiodes to be read
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  
  // Reading the output frequency
  blueFrequency = pulseIn(sensorOut, LOW);
  // Remaping the value of the BLUE (B) frequency from 0 to 255
  // You must replace with your own values. Here's an example: 
  // blueColor = map(blueFrequency, 38, 84, 255, 0);
  blueColor = map(blueFrequency, XX, XX, 255, 0);
  
  // Printing the BLUE (B) value 
  Serial.print(" B = ");
  Serial.print(blueColor);
  delay(100);

  // Checks the current detected color and prints
  // a message in the serial monitor
  if(redColor > greenColor && redColor > blueColor){
      Serial.println(" - RED detected!");
  }
  if(greenColor > redColor && greenColor > blueColor){
    Serial.println(" - GREEN detected!");
  }
  if(blueColor > redColor && blueColor > greenColor){
    Serial.println(" - BLUE detected!");
  }
}

برای متمایز کردن رنگ‌های مختلف سه حالت وجود دارد:

  • وقتی R بیشترین مقدار را در بین مقادیر RGB دارد، جسم مقابل سنسور قرمز رنگ است.
  • وقتی G بیشترین مقدار را دارد، جسم مقابل سنسور سبز رنگ است.
  • وقتی B بیشترین مقدار را دارد، جسم مقابل سنسور آبی رنگ است.

حالا یک جسم دلخواه مقابل سنسور قرار دهید، رنگ تشخیص داده شده برای جسم باید در سریال مانیتور نمایش داده شود: قرمز، سبز یا آبی.

توجه: با افزایش تعداد جملات شرطی در کد خود می‌توانید رنگ‌های دیگر که ترکیبی از این سه رنگ هستند را نیز با سنسورتان تشخیص دهید.

جمع بندی:

در این مقاله به آموزش تشخیص رنگ توسط سنسور TCS3200 و آردوینو پرداخته شد. شما می‌توانید تنها با اضافه کردن یک سرو موتور به این پروژه، یک دستگاه دسته‌بندی بر اساس رنگ بسازید.

به نظر شما چه پروژه‌های دیگری با این سنسور می‌توان انجام داد؟

نظرات و سوالات خودتان را در مورد این آموزش با ما در میان بگذارید.

پست قبلی

نحوه ارتقاء مبدل XL4015

118elec .com

118elec .com

دیدگاهتان را بنویسید لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

راه اندازی سنسور تشخیص رنگ TCS230/TCS3200 با آردوینو

توسط 118elec .com
20 اسفند 1401
0
راه اندازی سنسور تشخیص رنگ TCS230/TCS3200 با آردوینو

در این مقاله به آموزش تشخیص رنگ با استفاده از سنسور رنگ TCS230 یا TCS3200 و آردوینو پرداخته شده است....

بیشتر بخوانید

نحوه ارتقاء مبدل XL4015

توسط 118elec .com
20 اسفند 1401
0
تغییر مبدل XL4015 با استفاده ازمحدود‌کننده‌های قابل تنظیم جریان

در این آموزش روشی ساده برای ارتقای ماژول XL4015، که یک مبدل DC به DC باک می‌باشد، با استفاده از...

بیشتر بخوانید

پیشرفت نوسان سازها در راستای پاسخ به نیازهای روز تکنولوژی

توسط نویسنده 2
20 اسفند 1401
0
پیشرفت نوسان سازها در راستای پاسخ به نیازهای روز تکنولوژی

Part components inside joystick of a console game نوسان سازهای ساعت، سیگنال مرجع دقیق زمان‌بندی‌شده‌ای برای کنترل مدار الکترونیکی ارائه...

بیشتر بخوانید

درباره ما

وبسایت خبری 118ELEC یک وبسایت تخصصی در زمینه الکترونیک و رباتیک می باشد که تمام تمرکز خود را در این زمینه گذاشته و سعی دارد تا مکانی از هر جهت بی نقص را برای کاربران این حوزه فراهم آورد. اخبار الکترونیک و رباتیک، پروژه الکترونیک و رباتیک، معرفی و آشنایی با قطعات الکترونیک، از برنامه های مهم این مجموعه می باشد.

ارتباط با ما از طریق:

118elec@gmail.com

  • اصول مقاله نویسی
  • درباره ما
  • تماس با ما

Copyright © تمام حقوق این سایت متعلق به 118elec می‌باشد.

بدون نتیجه
مشاهده همه نتیجه
  • خانه
  • اخبار
    • اخبار الکترونیک
    • اخبار رباتیک
  • آموزش ها
    • الکترونیک
      • الکترونیک مقدماتی
      • الکترونیک پیشرفته
      • الکترونیک دیجیتال
      • الکترونیک صنعتی
    • میکروکنترلرها
      • میکروکنترلر چیست و انواع آن
    • آردوینو
      • آردوینو چیست
      • پروژه آردوینو
    • اینترنت اشیاء
      • اینترنت اشیاء مقدماتی
      • اینترنت اشیاء پیشرفته
    • شبکه‌های کامپیوتری و ارتباط داده
      • can
    • طراحی و ساخت PCB
      • روش های ساخت پی سی بی
    • باتری‌ها
      • باتری چیست؟
      • باتری لیتیوم یون
    • موتور و درایور
      • درایور موتور
      • موتور DC
    • رباتیک
      • مباحث پایه رباتیک
      • ربات مسیر یاب
      • ربات جنگجو
      • سایر ربات ها
  • پروژه
    • پروژه آردوینو
    • پروژه Esp
  • سرگرمی الکترونیک
  • درباره ما
    • درباره ما
    • تماس با ما
  • نویسنده شو!
    • راهنمای ثبت نام و درج مقاله
    • نشر مقاله
    • ثبت نام
    • ورود
    • بازیابی رمز عبور

Copyright © تمام حقوق این سایت متعلق به 118elec می‌باشد.

خوش آمدید!

ورود به حساب کاربری خود در زیر

رمز عبور را فراموش کرده اید؟ ثبت نام

ایجاد حساب جدید!

پر کردن فرم های زیر برای ثبت نام

تمام زمینه ها مورد نیاز است. ورود

رمز عبور خود را بازیابی کنید

لطفا نام کاربری یا آدرس ایمیل خود را برای تنظیم مجدد رمز عبور خود وارد کنید.

ورود