top of page
hyperf.jpg

capacitive sensor-חיישן קיבולי

Capacitive-Humidity-Sensor_final.jpg
דקמדםר.jpg

עורך: חן גורדאנה

שם הרכיב: חיישן קיבולי capacitive sensor

מטרת הרכיב: לחוש את קרבתו של עצם בעל מטען חשמלי (במקרה שלנו אדם) על ידי שינוי בקבליות החיישן.

אופן פעולת הרכיב (פשוט):

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

 

אופן פעולת הרכיב –(הסבר פנימי):

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

לינק לסרטון שמראה מהוא טרמין:

https://www.youtube.com/watch?v=-QgTF8p-284

diagram_edited.jpg

מקבל               שולח

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

delet.gif
diagram 2.png

מתקיים קבל

לא מתקיים קבל

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

 

הגורמים המגדילים את ערך הקבל הם: 

1.האדם הנוגע במשטח החישה

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

3.גודלו של משטח החישה- משטח גדול יותר יתן טווח ערכים גדול יותר (רגיש יותר).

(גודל החיישן כן קובע וכאשר החיישן גדול יותר הוא גם רגיש יותר והוא יוכל לחוש גם בלי מגע ישיר.)

 

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

 

את החיישן אנו יכולים להכין לבד בכל גודל וצורה באתר זה

)https://www.instructables.com/id/Capacitive-Sensing-for-Dummies/ ) ניתן לנסות להישתמש בחומרים שונים שישמשו כמשטח החישה.

pinout.png

ראה להלן ציור סכמטי של pinout:

Send pin הוא הפין השולח והוא מתחבר לפין 4 בארדואינו וreceive pin הוא הפין המקבל שיתחבר לפין 2 בארדואינו.

Foil הוא משטח החישה.

המערך שאני הכנתי הוא בעל 4 משטחי חישה בעצם 4 חיישנים מחוברים.

capa sense 4.jpg

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

אנו נשתמש בחיישן קיבולי שניתן להכין לבד (תמיד ניתן לכתוב בגוגל את שם החיישן ושם המודל והחברה ולאחר מכאן את המילה pinout אם רוכשים חיישן). מהארדואינו נוציא שני חוטים, אחד מפין 2(המקבל) והשני מפין 4(השולח). נחבר לשני צידיו של נגד 10kohm  (ניתן שימוש בנגדים בעלי ערך שונה. דבר זה יכול להשפיע על רגישות החיישן כאשר נגד בעל ערך של 1kohm יתן ערכים רק במגע ישיר ונגד בעל ערך של 40kohm יתן ערכים ממרחק של כמה סנטימטרים). את החלק שישמש כחיישן נחבר לנגד בצד המחובר לפין המקבל, במקרה שלנו פין 2.

קוד לדוגמה:

#include <CapacitiveSensor.h>

 

CapacitiveSensor sensor = CapacitiveSensor(4,2);        // 10 megohm resistor between pins 4 & 2, pin 2 is sensor pin, add wire, foil

 

void setup()                    

{

 

   sensor.set_CS_AutocaL_Millis(-1);     // turn off autocalibrate on channel 1 - just as an example

   Serial.begin(9600);

 

}

 

void loop()                    

{

    long start = millis();

    long total1 =  sensor.capacitiveSensor(30);

 

    Serial.print(millis() - start);        // check on performance in milliseconds

    Serial.print("\t");                    // tab character for debug window spacing

 

    Serial.print(total1);                  // print sensor output 1

 

    delay(10);                             // arbitrary delay to limit data to serial port 

}

 

https://www.instructables.com/id/Capacitive-Sensing-for-Dummies/

באתר זה ניתן ללמוד איך להכין את החיישן. זה האתר איתו אני עבדתי בהכנת החיישן שלי.


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

 

תחילה בקוד צריך לציין שיש לכלול את הספריות הדרושות לקריאת הערכים מהחיישן על ידי הפקודה include# ולאחר מכן את שם הספריה בה מדובר במקרה שלנו CapacitiveSensor.h .

(את הספריה ניתן למצוא בלינק בקטגוריה קבצים מצורפים).

בשורה השניה בקוד אנו בוחרים איך לקרוא לחיישן בקוד במקראה שלנו השם הוא sensor 

בשורה זו מצוין שהחיישן יהיה מחובר לפינים ספציפיים והם 2 ו4.

החלק הבא בקוד הוא setup והוא בשונה מחלק הloop ירוץ רק פעם אחת והוא מריץ כיול עצמי. 

בשלב הvoid loop מגדירים שני משתנים. משתנה אחד start יכיל את הזמן במילישניות ויתעדכן בכל חזרה של הלולאה. המשתנה  total1 יכיל את הערך החוזר מהחיישן הקיבולי (משך הזמן שלקח עד שהאות מהפין השולח התקבל בפין המקבל).

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

 


קבצים מצורפים: (קוד, ספריות):

הספריות שיש להוסיף לקוד:

https://playground.arduino.cc/Main/CapacitiveSensor/

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

https://www.instructables.com/id/Capacitive-Sensing-for-Dummies/

סימולציה של חיישן קיבולי:

יש להיכנס ללניק הבאה

http://falstad.com/circuit/

ובאתר הזה ללחוץ על file ולבחור importe from text ולהדביק את החלק הבאה

 

$ 1 0.000005 12.050203812241895 63 5 43

368 128 128 128 96 0 5

c 224 160 224 192 0 1e-8 0.47501741150078935

g 224 192 224 208 0

368 224 128 224 96 0 5

s 128 384 80 384 0 0 false

w 128 160 80 160 0

R 80 160 80 112 0 2 40 5 0 0 0.5

w 128 160 128 128 0

x 32 44 129 47 4 24 Send\sPin

x 154 43 282 46 4 24 Receive\sPin

w 224 160 224 128 0

r 128 160 224 160 0 500000

o 0 64 0 4103 1.25 1.6 0 2 0 3

o 3 64 0 4103 1.25 1.6 0 2 3 3

the touch sensor.png
touch sensor.png

חלופות לרכיב (יתרונות וחסרונות):

חיישן מגע touch sensor : 

חיישן דיגיטלי בעל שלושה פינים, פין הvcc שיחובר לפין 5v בארדואינו, פין הgnd שיחובר לפין הgnd בארדואינו ופין הout שיחובר לפין דיגיטלי בארדואינו. החיישן דומה לswitch וכאשר נוגעים במשטח אנו סוגרים את המעגל החשמלי וזה מצב אחד, המצב השני הוא כאשר אנו לא נוגעים במשטח. קיימת אי הבנה בין חיישן מגע לחיישן מגע קיבולי שהם שני דברים שונים, כאשר חיישן מגע הוא דומה יותר לswitch והוא דיגיטלי וחיישן מגע קיבולי הוא אנלוגי. ניתן למצוא שימוש בחיישן המגע במקומות בהם כפתור רגיל אינו רצוי (ניראות והשחיקה של הכפתור הרגיל לאורך זמן). כמובן שיש כמה סוגים של חיישן מגע והם עובדים באופנים שונים ולחלקם היכולת לחוש את ה"מגע" גם ממרחק מסוים. החיישן הוא היקר מהחלופות אבל עדיין ניתן להשיג אותו בפחות מ5 דולר. החיישן נותן מידע אמין ויכול לשמש כחלופה טובה ופשוטה יותר לתפעול לחיישן הקיבולי, מכיוון שהם ניראים דומים מאוד (מבחינת אסטטיקה).

 

בלינק הבא ניתן ללמוד על כל הסוגים השונים של חיישני מגע וגם חיישני מגע קיבוליים:

https://www.seeedstudio.com/blog/2019/12/31/what-is-touch-sensor-and-how-to-use-it-with-arduino/

בלינק הבא ניתן ללמוד איך להדפיס ערכים למסך סיריאלי עם חיישן המגע:

https://arduinogetstarted.com/tutorials/arduino-touch-sensor

limit switch.png

חיישן limit switch: 

חיישן הlimit switch הוא כפתור דיגיטלי שכאשר נלחץ  סוגר מעגל חשמלי. לחיישן יש שני מצבים, הראשון כאשר המעגל סגור (on) והשני כאשר המעגל פתוח (off). הרכיב אמין מאוד בערכים שהוא נותן ולרוב ניתן למצוא בו שימוש במערכות כמו מדפסת תלת מימד. יתרון של החיישן הוא המחיר הזול שלו, ניתן להשיג את החיישן בפחות מדולר אחד. אם המערכת שאתם בונים צריכה לחוש מגע ישיר, אין סיבה להסתבך עם חיישן קיבולי( שצורך סביבה מאוד יציבה בלי הפרעות) ואפשר להקל את העבודה בעזרת הlimit switch. 

 

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

https://www.electroschematics.com/turn-on-led-button-arduino/?utm_referrer=https%3A%2F%2Fwww.google.com%2F

ldr.png

חיישן אור: LDR

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

 

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

https://maker.pro/arduino/tutorial/how-to-use-an-ldr-sensor-with-arduino

table.png

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

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

שהספריות הועלו לקוד.

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

ליצור את החיבורים ללוח הארדואינו בדרך מסודרת וברורה למניעת טעויות.

לוגו חוף השרון.png
bottom of page