מעגל גלאי צבעים עם קוד ארדואינו

נסה את הכלי שלנו לביטול בעיות





בפוסט זה אנו הולכים לבנות מעגל שיכול לזהות צבע ולהפעיל ממסרים שהוקצו בהתאמה. פרויקט זה נעשה באמצעות חיישן צבע TCS3200 ולוח Arduino.

חישת צבע על ידי TCS3200

אם לא קראת את המאמר הקודם, עיין בו במקום שדנו בו יסודות חישת צבע באמצעות TCS3200



הפרויקט המוצע עשוי להיות שימושי אם ברצונך שמעגל יבצע פעולה על בסיס צבעים. ישנם אוקיינוסים של יישומים המבוססים על זיהוי צבע בתחומי תעשייה שונים.

פרויקט זה ייתן תובנה כיצד נוכל לתכנת את חיישן הצבעים לזהות צבעים שונים ולהפעיל את הממסרים.



אנו נשקול את הצבעים העיקריים: אדום, ירוק וכחול עבור פרויקט זה. פרויקט זה יכול להבדיל בין שלושת הצבעים הללו ולהפעיל את הממסרים, כל ממסר לכל צבע.

ה- TCS3200 יכול לזהות כל מספר צבעים, אך כדי לשמור על הבנת הפרויקט וכדי לשמור על קוד התוכנית פשוט, אנו מתרכזים רק בצבעים הראשוניים.

תרשים מעגל:

ממשק חיישן הצבעים של Arduino ו- TCS3200

התרשים הנ'ל נועד להתממשק בין חיישן הצבעים Arduino ו- TCS3200.

חיבורי ממסר:

ממסר מחבר את חיישן הצבעים של Arduino ו- TCS3200

הפעל את Arduino עם מתאם 9V עם לפחות 500mA. הטרנזיסטור משמש כמגבר לממסר מכיוון שסיכות ה- GPIO של הארדואינו אינן יכולות לספק זרם מספיק לממסר.

הדיודה 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 //-- -- -- -- -- -- -- -- -- -- -- //

שלב 5: בקוד שלעיל החלף את הערכים בערכים שלך שרשמת לאחרונה:

//--------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 | G = 78 | B = 38.

הצב את הערכים 56, 78, 38 כך:

// לצבע אדום:
int Rx1 = 56
int Gx1 = 78
int Bx1 = 38

באופן דומה, עבור שני צבעים אחרים והעלה את הקוד.

שלב 6:

• פתח את המסך הטורי והנח את אחד משלושת הצבעים מול החיישן.
• תראה את זיהוי הצבעים בצג הסדרתי בו זמנית ממסר הצבעים המתאים מופעל.

• לחצת על לחצן האיפוס בלוח Arduino כדי להשבית את הממסר.

הערה 1: ייתכן שהמעגל לא יזהה את הצבעים, אם אתה מציב גוון / גוון מעט שונה של אובייקט / נייר בצבע אדום, ירוק, כחול, לאחר הכיול. במילים אחרות, עליכם להשתמש באותו אובייקט / נייר צבעוניים בדיוק כדי לזהות צבעים ולהפעיל ממסר.

הערה 2: אור הסביבה יכול להשפיע על זיהוי הצבעים לכן, אנא שמור על אור עקבי ליד החיישן בזמן הכיול וגם בזמן איתור צבעים.

אב הטיפוס של המחבר:

אב טיפוס של חיישן צבע Arduino

אם יש לך שאלות בנוגע לפרויקט זה, אנא הביע בסעיף ההערות, ייתכן שתקבל תשובה מהירה.




קודם: שימוש בחיישני TSOP17XX עם תדרים מותאמים אישית הבא: מעגל מטען סוללות מרובה באמצעות קבל dump