ماژول TCS3200

آشنایی با ماژول TCS3200 یک سنسور رنگی کامل است

ماژول TCS3200 یک سنسور رنگی کامل است که برای تشخیص و شناسایی طیف گسترده‌ای از رنگ‌های مرئی به کار می‌رود. این ماژول به خاطر دقت مناسب و قیمت مقرون به صرفه‌اش، انتخابی محبوب در پروژه‌های الکترونیکی و رباتیک، به خصوص پروژه‌های “خودت بساز” (DIY) است.

نحوه کار ماژول TCS3200

هسته اصلی این ماژول، تراشه سنسور TAOS TCS3200 است. این تراشه دارای یک آرایه ۸x۸ از فتودیودها (Photodiodes) است. این فتودیودها به چهار دسته تقسیم می‌شوند که هر دسته دارای یک فیلتر رنگی متفاوت است:

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

نور محیط یا نور تابیده شده از LED‌های روی ماژول، به سطح شیء برخورد کرده و بازتاب آن به سمت این فتودیودها می‌رسد. هر فیلتر فقط به نور مربوط به رنگ خود اجازه عبور می‌دهد. برای مثال، فیلتر قرمز فقط نور قرمز را عبور می‌دهد و نورهای آبی و سبز را مسدود می‌کند.

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

پایه‌های کنترلی و نحوه راه‌اندازی

ماژول TCS3200 دارای چندین پایه برای کنترل و دریافت اطلاعات است:

  • VCC و GND: پایه‌های تغذیه که معمولاً بین ۲.۷ تا ۵.۵ ولت کار می‌کنند.
  • OUT: این پایه، خروجی فرکانس موج مربعی را ارائه می‌دهد که با شدت نور متناسب است.
  • S0 و S1: این دو پایه برای تنظیم مقیاس فرکانس خروجی استفاده می‌شوند. با تنظیم این پایه‌ها، می‌توانید حساسیت سنسور را تغییر دهید و فرکانس خروجی را برای میکروکنترلر خود بهینه کنید (مثلاً ۲٪، ۲۰٪ یا ۱۰۰٪).
  • S2 و S3: این دو پایه برای انتخاب فیلتر رنگی مورد نظر (قرمز، سبز، آبی یا شفاف) به کار می‌روند. با تنظیم ترکیبی از HIGH و LOW کردن این پایه‌ها، می‌توانید سنسور را مجبور کنید تا فقط به یکی از رنگ‌های اصلی حساسیت نشان دهد.

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

کاربردها

این ماژول به دلیل سادگی و کارایی، در پروژه‌های متنوعی استفاده می‌شود:

  • ربات‌های تعقیب خط رنگی: این ربات‌ها می‌توانند با تشخیص خطوط رنگی روی زمین، مسیر خود را دنبال کنند.
  • دسته‌بندی اشیاء بر اساس رنگ: در خطوط تولید کوچک، می‌توان از این سنسور برای جداسازی اشیائی مانند مهره‌ها یا قطعات کوچک بر اساس رنگشان استفاده کرد.
  • تشخیص رنگ محیط: برای تنظیم نور محیط بر اساس رنگ‌های غالب.
  • پروژه‌های آموزشی و سرگرمی: یک ابزار عالی برای آشنایی با سنسورهای الکترونیکی و مفهوم تشخیص رنگ برای دانش‌آموزان و علاقه‌مندان به الکترونیک.
// تعریف پایه‌های ماژول TCS3200
#define S0 8
#define S1 9
#define S2 10
#define S3 11
#define OUT 4
#define LED_PIN 13 // پایه برای روشن و خاموش کردن LED های ماژول

// متغیرهایی برای نگهداری مقادیر فرکانس هر رنگ
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;

void setup() {
  // تنظیم پایه‌های ورودی و خروجی
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(OUT, INPUT);
  pinMode(LED_PIN, OUTPUT);

  // تنظیم مقیاس فرکانس به ۱۰۰%
  // این تنظیم دقت سنسور را افزایش می‌دهد
  digitalWrite(S0, HIGH);
  digitalWrite(S1, HIGH);
  
  // روشن کردن LED های ماژول برای نوردهی
  digitalWrite(LED_PIN, HIGH);

  // شروع ارتباط سریال برای نمایش خروجی
  Serial.begin(9600);
  Serial.println("TCS3200 Color Sensor Test");
}

void loop() {
  // فراخوانی تابع readColor برای خواندن مقادیر رنگ‌ها
  readColor();

  // نمایش مقادیر فرکانس روی Serial Monitor
  Serial.print("R: ");
  Serial.print(redFrequency);
  Serial.print("   G: ");
  Serial.print(greenFrequency);
  Serial.print("   B: ");
  Serial.println(blueFrequency);

  // منطق ساده برای تشخیص رنگ بر اساس مقادیر فرکانس
  // این مقادیر تقریبی هستند و ممکن است بسته به نور محیط و شیء متفاوت باشند
  // برای دقت بیشتر، باید با کالیبره کردن مقادیر، این بخش را بهینه کنید
  if (redFrequency > greenFrequency && redFrequency > blueFrequency) {
    Serial.println("Detected Color: RED");
  } else if (greenFrequency > redFrequency && greenFrequency > blueFrequency) {
    Serial.println("Detected Color: GREEN");
  } else if (blueFrequency > redFrequency && blueFrequency > greenFrequency) {
    Serial.println("Detected Color: BLUE");
  } else if (redFrequency > 1000 && greenFrequency > 1000 && blueFrequency > 1000) {
    Serial.println("Detected Color: WHITE");
  } else if (redFrequency < 500 && greenFrequency < 500 && blueFrequency < 500) {
    Serial.println("Detected Color: BLACK");
  } else {
    Serial.println("Detected Color: UNKNOWN or MIXED");
  }
  
  Serial.println("------------------------------------");

  delay(2000); // تاخیر برای خواندن داده‌ها هر ۲ ثانیه
}

// تابعی برای خواندن مقادیر فرکانس هر رنگ
void readColor() {
  // انتخاب فیلتر قرمز
  digitalWrite(S2, LOW);
  digitalWrite(S3, LOW);
  redFrequency = pulseIn(OUT, LOW); // خواندن فرکانس

  // انتخاب فیلتر سبز
  digitalWrite(S2, HIGH);
  digitalWrite(S3, HIGH);
  greenFrequency = pulseIn(OUT, LOW); // خواندن فرکانس

  // انتخاب فیلتر آبی
  digitalWrite(S2, LOW);
  digitalWrite(S3, HIGH);
  blueFrequency = pulseIn(OUT, LOW); // خواندن فرکانس
}

تصالات سخت‌افزاری

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

پایه ماژول TCS3200پایه آردوینو
VCC5V
GNDGND
OUTDigital Pin 4
S0Digital Pin 8
S1Digital Pin 9
S2Digital Pin 10
S3Digital Pin 11
LEDDigital Pin 13

نکته: پایه‌های S0 و S1 برای تنظیم مقیاس فرکانس به کار می‌روند. در این برنامه، ما آن‌ها را روی High قرار می‌دهیم تا فرکانس خروجی ۱۰۰% باشد. این کار دقت سنسور را در بیشتر پروژه‌ها افزایش می‌دهد.

همچنین بررسی کنید

ساخت یک پروب تفاضلی مجازی (Pseudo-Differential)

ساخت یک «پروب تفاضلی مجازی» با استفاده از دو پروب معمولی، یک ترفند بسیار کاربردی …

دیدگاهتان را بنویسید

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