- ابزارآلات و آهنربا
-
ابزارآلات
- ابزار اندازه گیری (مولتیمتر، کولیس و . . .)
- ابزار سوراخکاری (مته، سه نظام، چهار نظام، پنج نظام و . . .)
- ابزار و تجهیزات کار (پیچ گوشتی، انبردست، سیمچین، پنس و . . .)
- برد بورد، فیبر خام و سوراخدار (فیبر مدار چاپی و PCB)
- پیچ و اسپیسر (پیچ و مهره رباتیک و اسپیسر پلاستیکی و فلزی)
- سیم و کابل (سیم افشان، فلت، باندی، کابل شارژ، پرینتر، و . . .)
- لحیمکاری (هویه، نوک هویه، پایه هویه، سیم لحیم، روغن لحیم و . . . )
- منبع تغذیه، باتری و جاباتری (باتری قلمی، نیم قلمی، کتابی و . . . )
-
ابزارآلات
- برد هوشمند
- پرینتر سه بعدی
- رباتیک و پروازی
- ماژول
- قطعات الکترونیک
- کیت الکترونیکی و انواع جعبه
- موتور
- اصناف مختلف
راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو
سنسورهای تشخیص رنگ باعث میشوند تا سیستمهای اتوماسیون بسیار دقیقتر فعالیت کنند. این سنسورها در صنایع مختلف از جمله خوراکیها و نوشیدنیها استفاده میشوند تا مواد، رنگها و . . . مشخص گردند. در این میان، اگرچه سنسورهای اینچنینی که قیمت بیشتری دارند در صنایع به کار میروند ولی راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو بیشتر در پروژههای دانشجویی صورت میپذیرد پس برای یادگیری چگونگی انجام این کار، با بلاگ بهنام رباتیک همراه باشید.
فهرست مطالب
آشنایی با TCS230 قبل از شروع پروژه راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو
امروز قرار است ماژولی را به شما معرفی کنیم که میتواند به راحتی و با دقت قابلقبولی، رنگها را تشخیص دهد. این ماژول نسبتاً ارزان اما کاربردی، TCS230 میباشد. نحوه فعالیت این ماژول بدین گونه است که در هر پیکسل 3 فوتو دیود وجود دارد که هر یک از آنها سه رنگ قرمز، سبز و آبی را تشخیص میدهد.
جدول مقداردهی پینهای S1 تا S4
انتخاب رنگ فوتو دیود |
S4 |
S3 |
نسبت فرکانس سیگنال خروجی |
S1 |
S0 |
قرمز |
L |
L |
خاموش |
L |
L |
آبی |
H |
L |
2 درصد |
H |
L |
بدون فیلتر |
L |
H |
20 درصد |
L |
H |
سبز |
H |
H |
100 درصد |
H |
H |
لوازم مورد نیاز برای پروژه راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو
آشنایی با پینهای TCS230
- GND: اتصال به زمین
- پین خروجی فعال (OE). از این پین به ندرت استفاده میشود و معمولاً در بیشتر ماژولها فعال است. چنانچه فعال نبود، آن را روی حالت LOW قرار دهید.
- S0 و S1. جهت انتخاب بازه فرکانس
- S2 و S3. جهت انتخاب آرایه رنگ
- Out. جهت انتخاب سطح موج مربعی TTL
- VCC: جهت تأمین انرژی. به پین 2.7 تا 5.5 ولت منبع تغذیه وصل میشود.
سیمکشی مدار راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو
وصل کردن ماژول TCS230 به آردوینو بسیار ساده است. تمامی پینها به غیر از پین OE استفاده شده و ماژول انرژی مورد نیاز خود را از خروجی 5 ولت آردوینو دریافت میکند.
هیچکدام از پینهای استفاده شده در آردوینو نقش حیاتی ایفا نمیکنند زیرا خودِ ماژول هیچ ویژگی بخصوصی ندارد که به پینها مربوط باشد. بر این اساس، اگر میخواهید از سایر پینها استفاده کنید، امکانپذیر خواهد بود فقط مطمئن باشید که اعداد مربوط به پینها را در کدنویسی تغییر دهید.
کدنویسی پروژه راه اندازی سنسور تشخیص رنگ TCS230 با آردوینو
در ادامه کدهای مورد نیاز برای راهاندازی این پروژه را مشاهده میکنید. برای شفافیت بیشتر و فهم بهتر آنها، توضیحات لازم ارائه شده است.
در کدهای زیر مقدار خوانده شده از هر یک از سه فوتو دیود قرمز، سبز و آبی را در سریال مانیتور نشان میدهیم:
تعریف پایههای ماژول TCS230 برای آردوینو
const int s0 = 5;
const int s1 = 4;
const int s2 = 7;
const int s3 = 6;
const int out = 8;
تعریف متغیرهای رنگها
int red = 0;
int green = 0;
int blue = 0;
راهاندازی سریال
void setup()
{
Serial.begin(9600);
تعریف پایههای S0 تا S4 به عنوان خروجی
pinMode(s0, OUTPUT);
pinMode(s1, OUTPUT);
pinMode(s2, OUTPUT);
pinMode(s3, OUTPUT);
با تعریف مقدار High برای دو پایه S0 و S1، فرکانس به نسبت 50 به 50 خروجی میدهد.
digitalWrite(s0, HIGH);
digitalWrite(s1, HIGH);
سپس ابتدا پایههای S2 و S3 را روی مقدار Low میگذاریم تا بتوانیم فقط رنگ قرمز را تشخیص دهیم.
}
void loop()
{
digitalWrite(s2, LOW);
digitalWrite(s3, LOW);
با استفاده از تابع PulseIn، مقدار خروجی را میخوانیم و متغیر رنگ مربوطه که در اینجا قرمز است را مقداردهی میکنیم. توجه داشته باشید که آرگمان دوم شرطی را بررسی خواهیم کرد تا اگر مقدار خروجی برابر با High بود، مقدار Low به تابع نامبرده داده شود و در غیر این صورت، مقدار High گردد.
red = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
اینک مقدار پایه S3 را High میکنیم تا بتوانیم رنگ آبی را بررسی کنیم.
digitalWrite(s3, HIGH);
با استفاده از تابع PulseIn، مقدار خروجی را میخوانیم و متغیر رنگ مربوطه که در اینجا آبی است را مقداردهی میکنیم. توجه داشته باشید که آرگمان دوم شرطی را بررسی خواهیم کرد تا اگر مقدار خروجی برابر با High بود، مقدار Low به تابع نامبرده داده شود و در غیر این صورت، مقدار High گردد.
blue = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
اینبار مقدار پایه S2 را High میکنیم تا بتوانیم رنگ سبز را بررسی کنیم.
digitalWrite(s2, HIGH);
با استفاده از تابع PulseIn، مقدار خروجی را میخوانیم و متغیر رنگ مربوطه که در اینجا سبز است را مقداردهی میکنیم. توجه داشته باشید که آرگمان دوم شرطی را بررسی خواهیم کرد تا اگر مقدار خروجی برابر با High بود، مقدار Low به تابع نامبرده داده شود و در غیر این صورت، مقدار High گردد.
green = pulseIn(out, digitalRead(out) == HIGH ? LOW : HIGH);
حالا مقادیر به دست آمده را چاپ میکنیم.
Serial.print("R Intensity:");
Serial.print(red, DEC);
Serial.print(" G Intensity: ");
Serial.print(green, DEC);
Serial.print(" B Intensity : ");
Serial.print(blue, DEC);
Serial.println()
در انتها نیز میزان تأخیر را روی 300 میلیثانیه تنظیم میکنیم. لازم به ذکر است که امکان تغییر این تأخیر وجود دارد.
delay(300);
خروجی کد، سه متغیر رنگ میدهد که بین 0 تا 255 عددی را ارائه خواهد کرد تا با استفاده از آن رنگها را تشخیص دهیم. برای مثال، اگر متغیر 255 و سایر متغیرها تقریباً 0 بودند، رنگ قرمز خواهد بود. همچنین، با ترکیب این سه رنگ میتوانید هر رنگی که دوست دارید را دریافت کنید.