دائرة كاشف اللون مع كود اردوينو

جرب أداة القضاء على المشاكل





في هذا المنشور ، سنقوم ببناء دائرة يمكنها اكتشاف اللون وتشغيل المرحلات المخصصة. تم إنجاز هذا المشروع باستخدام مستشعر الألوان TCS3200 ولوحة Arduino.

استشعار اللون بواسطة TCS3200

إذا لم تكن قد قرأت المقالة السابقة ، فالرجاء الاطلاع عليها حيث ناقشنا أساسيات استشعار اللون باستخدام TCS3200



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

سيعطي هذا المشروع نظرة ثاقبة حول كيفية برمجة مستشعر الألوان لاكتشاف الألوان المختلفة وتشغيل المرحلات.



سننظر في الألوان الأساسية: الأحمر والأخضر والأزرق لهذا المشروع. يمكن لهذا المشروع التمييز بين هذه الألوان الثلاثة وتشغيل المرحلات ، كل مرحل لكل لون.

يمكن لـ TCS3200 اكتشاف أي عدد من الألوان ، ولكن لإبقاء المشروع مفهومًا ولإبقاء رمز البرنامج بسيطًا ، فإننا نركز فقط على الألوان الأساسية.

مخطط الرسم البياني:

التفاعل بين مستشعر الألوان Arduino و TCS3200

المخطط أعلاه مخصص للتفاعل بين مستشعر الألوان Arduino و TCS3200.

اتصالات التتابع:

مرحل توصيل مستشعر الألوان Arduino و TCS3200

قم بتشغيل Arduino بمحول 9V مع 500 مللي أمبير على الأقل. يعمل الترانزستور كمضخم للترحيل لأن دبابيس GPIO في Arduino لا يمكنها توفير تيار كافٍ للترحيل.

سوف يمتص الصمام الثنائي 1N4007 طفرات الجهد العالي من ملف الترحيل ، مما يحمي بقية مكونات أشباه الموصلات.

هذا يخلص الجهاز.

دعنا الآن نرى كيفية تحميل الكود ومعايرة المستشعر لمتطلباتك.
يمكن أن تختلف حساسية اللون من وحدة إلى أخرى ويمكن للضوء المحيط أن يغير حساسية اللون بشكل كبير.

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

لمعايرة وتحسين قراءات المستشعر ، اتبع الخطوات بدقة:

الخطوة 1: قم بتحميل الكود التالي مع إعداد الجهاز المكتمل.

//-----Program Developed by R.GIRISH-----// const int Red_relay = 9 const int Green_relay = 10 const int Blue_relay = 11 const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int var = 25 int red = 0 int green = 0 int blue = 0 int state = LOW int state1 = LOW int state2 = HIGH //-----------Enter Values--------// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //----------------------------// void setup() { Serial.begin(9600) pinMode(Red_relay, OUTPUT) pinMode(Green_relay, OUTPUT) pinMode(Blue_relay, OUTPUT) digitalWrite(Red_relay, LOW) digitalWrite(Green_relay, LOW) digitalWrite(Blue_relay, LOW) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() { int redH1 = Rx1 + var int redL1 = Rx1 - var int redH2 = Rx2 + var int redL2 = Rx2 - var int redH3 = Rx3 + var int redL3 = Rx3 - var int blueH1 = Bx1 + var int blueL1 = Bx1 - var int blueH2 = Bx2 + var int blueL2 = Bx2 - var int blueH3 = Bx3 + var int blueL3 = Bx3 - var int greenH1 = Gx1 + var int greenL1 = Gx1 - var int greenH2 = Gx2 + var int greenL2 = Gx2 - var int greenH3 = Gx3 + var int greenL3 = Gx3 - var //-----Sensing RED colour-----// digitalWrite(s2, state1) digitalWrite(s3, state1) red = pulseIn(out, state) delay(100) //------Sensing Green colour----// digitalWrite(s2, state2) digitalWrite(s3, state2) green = pulseIn(out, state) delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) blue = pulseIn(out, state) delay(400) if(red = redL1) { if(green = greenL1) { if(blue = blueL1) { Serial.println('Detected Colour: RED') Serial.println('') digitalWrite(Red_relay, HIGH) delay(1000) } } } if(red = redL2) { if(green = greenL2) { if(blue = blueL2) { Serial.println('Detected Colour: Green') Serial.println('') digitalWrite(Green_relay, HIGH) delay(1000) } } } if(red = redL3) { if(green = greenL3) { if(blue = blueL3) { Serial.println('Detected Colour: Blue') Serial.println('') digitalWrite(Blue_relay, HIGH) delay(1000) } } } } //------Program Developed by R.GIRISH--------//

الخطوة 2: افتح الشاشة التسلسلية ، وستجد معلمات اللون مثل هذا:

اجلب كائن اللون (يفضل الورق الملون) الأحمر والأزرق والأخضر.

الخطوه 3:

• ضع الورق الملون الأحمر بالقرب من مستشعر TCS3200.
• قم بتدوين قراءات R و G و B (الألوان الثلاثة) أثناء وضع ورقة اللون الأحمر.
• بالمثل لاحظ أسفل القراءة R و G و B للأوراق ذات اللون الأخضر والأزرق.

• ملاحظة: عند وضع أي من الألوان الثلاثة أمام TCS3200 ، قم بتدوين كل القراءات باللون الأحمر والأزرق والأخضر لكل ورقة ملونة ، والتي تحتاج إلى إدخالها في برنامج الكشف عن اللون الرئيسي.

الخطوة 4: اقرأ الخطوة 5 وقم بتحميل الكود الرئيسي أدناه (برنامج الكشف عن اللون)

//-- -- -- -- Enter Values-- -- --// //For RED Colour: int Rx1 = 92 int Gx1 = 240 int Bx1 = 53 //For GREEN Colour: int Rx2 = 228 int Gx2 = 163 int Bx2 = 64 //For BLUE Colour: int Rx3 = 300 int Gx3 = 144 int Bx3 = 45 //-- -- -- -- -- -- -- -- -- -- -- //

الخطوة الخامسة: في الكود أعلاه ، استبدل القيم بالقيم التي سجلتها مؤخرًا:

//--------Program Developed by R.GIRISH-------// const int s0 = 4 const int s1 = 5 const int s2 = 6 const int s3 = 7 const int out = 8 int frequency1 = 0 int frequency2 = 0 int frequency3 = 0 int state = LOW int state1 = LOW int state2 = HIGH void setup() { Serial.begin(9600) pinMode(s0, OUTPUT) pinMode(s1, OUTPUT) pinMode(s2, OUTPUT) pinMode(s3, OUTPUT) pinMode(out, INPUT) //----Scaling Frequency 20%-----// digitalWrite(s0, state2) digitalWrite(s1, state1) //-----------------------------// } void loop() ') delay(100) //------Sensing Blue colour----// digitalWrite(s2, state1) digitalWrite(s3, state2) frequency3 = pulseIn(out, state) Serial.print(' Blue = ') Serial.println(frequency3) delay(100) Serial.println('-----------------------------') delay(400) //---------Program Developed by R.GIRISH---------//

عندما تضع الورقة ذات اللون الأحمر على المجس ستحصل على ثلاث قراءات ، على سبيل المثال R = 56 | م = 78 | ب = 38.

ضع القيم 56 و 78 و 38 مثل هذا:

// للون الأحمر:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

وبالمثل ، بالنسبة للونين الآخرين وتحميل الكود.

الخطوة 6:

• افتح الشاشة التسلسلية وضع أيًا من الألوان الثلاثة أمام المستشعر.
• سترى اكتشاف الألوان على الشاشة التسلسلية في نفس الوقت ، يتم تنشيط مرحل اللون المقابل.

• قمت بالضغط على زر إعادة الضبط على لوحة Arduino لإلغاء تنشيط المرحل.

ملاحظة 1: قد لا تكتشف الدائرة الألوان ، إذا وضعت ظلًا / لونًا مختلفًا قليلاً من كائن / ورق أحمر ، أخضر ، أزرق ، بعد المعايرة. بمعنى آخر ، يجب عليك استخدام نفس الكائن / الورق الملون بالضبط لاكتشاف الألوان وتشغيل الترحيل.

ملاحظة 2: يمكن أن يؤثر الضوء المحيط على اكتشاف اللون ، لذا يرجى الحفاظ على ضوء ثابت بالقرب من المستشعر أثناء المعايرة وأيضًا أثناء اكتشاف الألوان.

النموذج الأولي للمؤلف:

نموذج مستشعر لون اردوينو

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




السابق: استخدام مستشعرات TSOP17XX بترددات مخصصة التالي: دارة شاحن بطارية متعددة باستخدام مكثف تفريغ