TCS3200 חיישן צבע

18.png
2.png

עורך: בר שניג

שם הרכיב: חיישן צבע TCS3200


מטרת הרכיב:

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


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

3.png

צבעי היסוד הללו משולבים לידי צבעים נוספים:

4_edited.jpg
5.png

אופן פעולת הרכיב – הסבר פנימי:
תאמינו או לא, אבל לכל סוג פילטר (אדום, כחול או ירוק) יש שש עשרה פוטודיודות הממירות אור לזרם חשמלי. לאור יש אורכי גל שונים שחלקם נקלטים בחומר וחלקם מוחזרים. כפי שאנו רואים צבעים באופן בו גלים באור משתקפים לעיניים שלנו, כך גם החיישן קולט את גווני ה-RGB בצבע שמולו. הייחודיות בחיישן ה-RGB הוא שפעולתו מתבססת על כך ששילוב של שלושה צבעים (ירוק, אדום וכחול) בלבד פורשים את כל מניפת הצבעים הקיימים. הגילוי הזה הועלה במאה ה- 19 כאשר חוקרים גילו שעין האדם רגישה לצבעים הללו, ואפשר על ידי צילום 3 תמונות שכל אחת בצבע יסוד אחר, והרכבתם יחד לשחזר תמונה צבעונית מלאה. זה בסיס מחקר ה-RGB שבעקבותיו ניתן לכמת ערכים בין 0 ל-255 של RGB וכך ליצור צבעים חדשים בגוונים רבים.

ניתן להמחיש זאת בעזרת טבלת הצבעים מותאמת RGB בקישור הבא:

https://www.rapidtables.com/web/color/RGB_Color.html

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

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

ניתן לראות בתרשים הבא את התהליך כדלקמן:

6.png

Pinout:

מלבד GND ו-VCC כל הפינים הם דיגיטליים. אין חשיבות למספר הפין.

*פינים אלו נועדו כדי לבחור את רמת ה"פולסים". כפי שיוצג בהמשך, במהלך הקוד יש להפחית את מידת ה"פולסים" ל20% בשביל שהמספר שמייצג אותם יהיה קריא ונוח במסך הסיריאלי.

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

20.png
21.png

דיאגרמת חיווט:


 


 








 

 


 

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

7.png

קוד לדוגמה:


 






 

8.png

הקוד הנ"ל נלקח מהמאמר: "Guide for TCS230/TCS3200 Color Sensor with Arduino". 

קישור למאמר:

https://randomnerdtutorials.com/arduino-color-sensor-tcs230-tcs3200/

21.png

 

תיאור קוד לדוגמה:

הקוד מהווה את הבסיס לקריאת צבעים. מטרת הקוד הנ"ל היא להדפיס את ערכי צבעי היסוד: R (אדום), G (ירוק) וB (כחול). על סמך קוד זה ניתן להגדיר עבור טווח של ערכים מסוימים של RGB קריאה של צבע מסוים. הצבע עם הערך הנמוך ביותר מבין צבעי היסוד הוא הגוון הבולט מבין שלושת הצבעים. לדוגמה, אם ערך ה-R הוא נמוך יותר מG וB אז הוא הגוון הבולט.

בטבלה המצורפת ישנו תיאור של ההגדרות לקליטת הערכים של כל צבע:


להלן הקוד המתואר בתמונה המצורפת כקובץ הניתן להעתקה לתוכנת הארדואינו: https://github.com/RuiSantosdotme/Random-Ner d-Tutorials/raw/master/Projects/color/Color_Sensor_TCS230_TCS3200_1.ino

9.png

חלופות לרכיב:

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


החיישן הראשון: חיישן צבע TCS34725 RGB.

החיישן מספק קליטה של ערכי אדום, ירוק וכחול ומציג במסך הסיריאלי את ערכי ה-RGB, מידת עוצמת האור האור הנראה ליחידות שטח (LUX) וטמפרטורת הצבע. שורה במסך הסיריאלי לדוגמה:

Color Temp: 4554 K – Lux: 379 – R: 1122 G: 831 B: 776 C: 1429

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

10.png

יתרונות:

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

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

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

חסרונות:

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

  2. לעיתים מספר רב של נתונים וערכים יכול לבלבל את המשתמש ולסרבל את השימוש בחיישן.

11.png

המסך הסיריאלי בעת הפעלת החיישן:

12.png

החיישן השני: חיישן אינפרא אדום  (IR sensor).

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

13.png
15.png
14.png

יתרונות:

  1. התגובה חד משמעית: 0 או 1.

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

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

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

חסרונות:

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

  2. כאשר הרובוט עוקב אחר קו שחור, על הקרקע להיות בצבע לבן, ולהיפך. כלומר, במרחב צבע הרצפה צריך להיות מנוגד לצבע הקו.

1_edited.jpg

שגיאות שכדאי להימנע מהן וטיפים מועילים:

  1. כאשר מכיילים כל צבע יש לעבוד ביסודיות ובסדר. יש לכתוב באופן מסודר את טווח הערכים של קריאת הצבע בתאורה המוארת והחזקה ביותר, ואז מנגד יש להחשיך את אזור קריאת הצבע ולכתוב את הערכים המתקבלים בכל מצב. כפי שתיארתי קודם, הצבע עם הערך הנמוך ביותר מבין צבעי היסוד הוא הגוון הבולט מבין שלושת הצבעים. למשל, ניתן להגדיר בתכנות שעבור הצבע האדום טווח הערכים של R נע בין 100 ל-400 וגם ערך ה-R הוא הקטן ביותר מבין ערכי ה-RGB.

  2. בשביל להימנע מתקלות ושגיאות לאורך הדרך, חשוב ראשית לחווט את החוטים כך שהתקבעו באופן הולם הן לבקר והן בהלחמה איכותית לחיישן.

  3. יש לעבוד בזהירות בשביל להימנע מתקלות ובעיות בדרך.

19.png
16_edited.jpg
לוגו חוף השרון.png