חיישן אור - LDR - Light Dependant Resistor
חיישן היכול למדוד את עוצמת האור הנמצאת בסביבתו. שמו באנגלית מסגיר את אופן פעולתו - נגד תלוי אור, כלומר נגד שמשנה את התנגדותו בתלות באור אליו הוא נחשף.
מבנה חיישן אור
החיישן מורכב מדיסקית עגולה העשוייה חומר קרמי. הדיסקית מחולקת לשני אזורים המופרדים בינהם על ידי חומר הנקרא קדמיום סולפיד CdS . חומר זה אחראי להתנהגות החשמלית של החיישן. משני החצאי הקרמיים יוצאים גם שתי קטבים מוליכים המתחברים את המערכת.
אופיין שינוי התנגדות
החיישן משנה את התנגדותו בהתאם לעוצמת האור אליה הוא נחשף. כאשר החיישן בחושך מוחלט אז התנגדותו מאוד גבוהה (ניתן לראות קטע מדף נתוני היצרן), ואילו כאשר הוא מואר התנגדותו יורדת באופן מהיר. עוצמת תאורה נמדדת ביחידות מידה הנקראות LUX.
אופן המדידה של החיישן
כמו מרבית החיישנים שנשתמש בהם יחד עם בקר ארדואינו, החיישן מודד תופעה פיזיקלית שמתורגמת למתח חשמלי אותו מודד הבקר בחיבור הפינים. החיישן מקבל זרם קבוע מהבקר דרך חיבור ל-5 וולט. מחברים את החיישן נגד נוסף בטור בגודל של 10000 אוהם כדי ליצור מחלק מתח. בגלל שינוי ההתנגדות של החיישן, חלוקת המתח בין הנגד והחיישן משתנה בהתאם. הבקר מודד את מפל המתח על הנגד ומתרגם את ערך המתח לערך מספרים בין 0-1023 כמו לכל החיבורים האנאלוגיים.
קריאת ערך החיישן בתוכנית
הגדרת משתנים - לכל חיישן קלט INPUT מגדירים שני משתנים גלובליים. משתנה אחד ישמש לשמירת מספר הפין אליו מחובר החיישן ונקרא לו ldrPin, ואילו המשתנה השני ישמש לשמירת הערך שנקרא מהחיישן המייצג את מידת התאורה ונקרא לו ldrValue.
בניגוד לחיישנים אנאלוגים, אין חובה להגדיר את סוג הפין בעזרת פונקצית pinMode מכיוון שפין אנאלוגי הוא רק קלט. בתור הרגל תכנות טוב אנחנו רושמים לכל הרכיבים את סוגם כדי שיהיה קל לקרוא ולהביןאת התוכנית.
קריאת הערך מהבקר יכול להתבצע גם ב-setup וגם ב-loop והיא נעשית על ידי שימוש בפונקציה analogRead. פונקציה זו מקבלת כפרמטר את מספר הפין אותו יש לקרוא ldrPin. הפונקציה מחזירה ערך התחום 0-1023 ואותו נשמור במשתנה ldrValue כדי שנוכל לעשות שימוש בהמשך.
תכנות הבקר
משתנים - לכל רכיב קלט מגדירים שני משתנים - משתנה לאחסון מספר הפין אליו מחברים את הנורה, ומשתנה לאחסון הערך הנקלט מהחיישן.
#define ldrPin A1
int ldrValue = 0;
SETUP - הגדרת סוג הפין כרכיב פלט (בחיבור לפין אנאלוגי אין חובה לרשום פונקציה זו)
pinMode(ldrPin,INPUT);
קריאת ערך החיישן - קריאת המתח מהפין אליו החיישן מחובר וקבלת ערך מותאם בין 0-1023
ldrValue = analogRead(ldrPin);
בדיקת הערך ופעולה - שימוש בתנאי לוגי לקבלת החלטה מה לבצע
if (ldrValue > 400){
digitalWrite(ledPin,HIGH);
}
else{
digitalWrite(ledPin,LOW);
}
תוכנית דוגמא שגורמת להדלקת נורת לד כאשר חשוך בחוץ
סרטונים קצרים המסבירים את הנושא