حساس الألوان

كيف نرى الألوان ؟

قبل شرح الية عمل هذا الحساس يجب ان نعرف كيف نرى الالوان أولاً.

يتكون الضوء الأبيض من ثلاثة ألوان أساسية (الأحمر والأخضر والأزرق) ، والتي لها أطوال موجية مختلفة. تتحد هذه الألوان مع بعضها البعض لتشكيل كل الألوان المختلفة(بنفسجي , برتقالي …).

عندما يسقط الضوء الأبيض على أي سطح، يتم امتصاص بعض الأطوال الموجية للضوء وينعكس بعضها اعتمادًا على خصائص مادة السطح، ويكون اللون الذي نراه هو نتيجة انعكاس ما تبقى من الأطوال الموجية إلى أعيننا.

How-we-see-colors

التّعريف بالحسّاس وآلية عمله

  • مكوّنات الحسّاس
    أربع ديودات لتسليط الضّوء على الجسم الّذي يتمّ اختباره.
    شريحة على سطحها مصفوفة 8×8 من الفوتوديودات، تقوم بامتصاص الأشعة الضّوئيّة المنعكسة عن الأجسام وتمرير تيّار متناسب مع شدّة  الضّوء، وهي حسّاسة للألوان: أخضر، أزرق، أحمر، (بعض عناصر المصفوفة خالية لا تتحسّس للضوء.)
    محوّل تيّار-إلى تردّد.
  • آليّة عمل الحسّاس
    إنّ آليّة عمله مطابقة تماماً لآليّة الرؤية وتمييز الألوان، فيتمّ باستخدام الديودات المضيئة تسليط ضوء أبيض على الجسم الّذي يمتص كل الأطوال الموجية ما عدا المطابقة للونه تنعكس عنه، تقوم بعد ذلك مصفوفة الديودات بامتصاص الأشعة المنعكسة وتوليد تيّار متناسب مع شدة الضّوء، وفي النّهاية يقوم المحوّل بتحويل التّيارّ إلى إشارة مربّعة (بنسبة تعديل 50%) بتردّد متناسب مباشرةً مع شدّة الإضاءة. مرجع.
color-recognition-sensor-tcs3200-module-for-arduino-1844-970x728
حسّاس اللّون
photodiode Array for Sensor color
مصفوفة الفوتوديودات

المواصفات وعمل المنافذ

  • جهد التّغذية: 5v.
  • تيّار العمل: 2mA.
  •  عمل المنافذ:
    1- GND: منفذان للأرضي، يستخدم واحد فقط أثناء العمل.
    2- LED: يضع الخرج على حالة الممانعة المرتفعة عن إعطائه قيمة 5v، مما يسمح بالتّوصيل متعدّد الوحدات مع المتحكّم.
    3-4- S0,S1: تستخدم لتغيير مقياس التّردّد بما يتناسب مع عمل المتحكّم.
    5- Vcc: منفذان للتّغذية، يستخدم واحد فقط أثناء العمل.
    6-7- S2,S3: تستخدم لتحديد الضّوء الّذي تتمّ قراءته من خلال تحديد الفوتوديودات الّتي تعمل (الحساسة للأخضر أم الأزرق أم الأحمر أم الخلايا الخالية في المصفوفة).
    8- out: إشارة الخرج.
S0S1مقياس تردّد الخرج
LLلا يوجد خرج
HL2%
LH20%
HH100%
S2S3اللّون المقروء في الخرج
LLأحمر
HLأزرق
LH_______
HHأخضر

البرمجة والتوصيل مع الاردوينو :

إنّ توصيل الحسّاس مع أردوينو عمليّة سهلة وبسيطة، موضّحة في الشّكل المجاور:
نصل المنفذ Vcc إلى منفذ 5v في الأردوينو، ومنفذ الأرضي إلى الأرضي، أمّ باقي البنّات المستخدمة فيتمّ وصلها إلى البنّات الرّقميّة في الأردوينو ومن ثمّ يتمّ تحديد حالتها (خرج أم دخل) في الكود.

ولبرمجة هذا الحسّاس، يجب تنفيذ ما يلي:

أولاً : معايرة الحساس

في هذه المرحلة نقوم بتحصيل القيم المعايريّة الّتي يقرؤها الحسّاس لكلّ لون، وذلك إمّا باختبار كلّ لون على حدىً أو يمكن اختبار اللونين الأبيض والأسود فهما يحتويان على الأطوال الموجيّة الرّئيسيّة بقيمها العظمى والدّنيا، ومن ثمّ وقراءة التردّدات النّاتجة.

ثانياً : توظيف القيم المعايرة

في هذه المرحلة نقوم باستخدام القيم المعيارية المحصلة من عملية المعايرة لكشف الألوان.

color sensor with arduino

معايرة الحساس :

نقوم بداية بتوصيل الحسّاس كما هو موضّح في الشّكل السّابق.

ننتقل لكتابة الكود المبين جانباً ونوجه الحساس إلى ورقة ذات لون أزرق حتّى نحصل منها على القيمة المعياريّة العليا لتردّد اللّون الأزرق، وللحصول على القيمة الدّنيا يمكن استخدام ورقة باللّون الأسود.
نكرّر هذه العمليّة لكلّ من اللّونين الأخضر والأحمر حتّى نحصل على القيم المعياريّة لكلّ الألوان الرّئيسيّة.

ملاحظة: يعمل هذا الحساس بشكل مباشر مع الاردوينو دون الحاجة لمكتبة خاصة.

فيديو توضيحي.

الكود

				
					#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;
void setup() {
pinMode(S0, OUTPUT);
pinMode(S1, OUTPUT);
pinMode(S2, OUTPUT);
pinMode(S3, OUTPUT);
pinMode(sensorOut, INPUT);
digitalWrite(S0,HIGH);
digitalWrite(S1,LOW);
Serial.begin(9600); }
void loop() {
digitalWrite(S2,LOW);
digitalWrite(S3,LOW);
redFrequency = pulseIn(sensorOut, LOW);
Serial.print(" RED = ");
Serial.print(redFrequency);
delay(100);
digitalWrite(S2,HIGH);
digitalWrite(S3,HIGH);
greenFrequency = pulseIn(sensorOut, LOW);
Serial.print(" GREEN = ");
Serial.print(greenFrequency);
delay(100);
digitalWrite(S2,LOW);
digitalWrite(S3,HIGH);
blueFrequency = pulseIn(sensorOut, LOW);
Serial.print(" BLUE = ");
Serial.println(blueFrequency);
delay(100); }
				
			

التعرف على الالوان :

بعد حصولنا على القيم المعايريّة الدّنيا والعليا لتردّدات الألوان، يمكننا استخدامها في الكود المجاور للتّعرف على الألوان.

في الاسطر 25 , 32 , 39 يجب تبديل العلامات (XX ,  XX ) بالقيم التي حصلنا عليهامن عملية المعايرة (تختلف من حساس لأخر ) وبعد تحميل الكود نستطيع أن نرى على شاشة السيريال اظهار اسم اللون الذي يقوم الحساس بتحسسه ( فقط سيتعرف على اللالوان الرئيسية – احمر , اخضر , ازرق وذلك لتبسيط الكود قدر المستطاع ).

بإمكاننا جعل الحساس يتعرف على المزيد من الالوان وذلك بإضافة شروط اكثر ومعايرة اللونين الابيض والاسود بالإضافة للألوان الرئيسية.

يمكن استخدام هذا الحساس في تطبيقات المعامل في عمليات الفرز بناءاً على اللون. مرجع للتّطبيقات العمليّة.

الكود

				
					#define S0 4
#define S1 5
#define S2 6
#define S3 7
#define sensorOut 8
int redFrequency = 0;
int greenFrequency = 0;
int blueFrequency = 0;
int redColor = 0;
int greenColor = 0;
int blueColor = 0;
void setup() {
  pinMode(S0, OUTPUT);
  pinMode(S1, OUTPUT);
  pinMode(S2, OUTPUT);
  pinMode(S3, OUTPUT);
  pinMode(sensorOut, INPUT);
  digitalWrite(S0,HIGH);
  digitalWrite(S1,LOW);
  Serial.begin(9600);}
void loop() {
  digitalWrite(S2,LOW);
  digitalWrite(S3,LOW);
  redFrequency = pulseIn(sensorOut, LOW);
  redColor = map(redFrequency, XX, XX, 255,0);
  Serial.print("R = ");
  Serial.print(redColor);
  delay(100);
  digitalWrite(S2,HIGH);
  digitalWrite(S3,HIGH);
  greenFrequency = pulseIn(sensorOut, LOW);
  greenColor = map(greenFrequency, XX, XX, 255, 0);
  Serial.print(" G = ");
  Serial.print(greenColor);
  delay(100);
  digitalWrite(S2,LOW);
  digitalWrite(S3,HIGH);
  blueFrequency = pulseIn(sensorOut, LOW);
  blueColor = map(blueFrequency, XX, XX, 255, 0);
  Serial.print(" B = ");
  Serial.print(blueColor);
  delay(100);
  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!");  } }
				
			

انتقل إلى المتجر

حساس اللون

35.00 ر.س

اردوينو اونو | ARDUINO UNO

50.00 ر.س

ليد RGB

05.00 ر.س

أسلاك توصيل M-F

15.00 ر.س
انتقال إلى الأعلى