מאפייני חיישנים ומדידה
לפני שנחבר חיישן כלשהו לבקר, נשאל: מה הוא מודד, באיזה תחום, ומהו השינוי הקטן ביותר שנראה בקריאה שלו? גיליון הנתונים עונה בשפה משלו: תחום מדידה, רגישות ורזולוציה. בפרק הזה נלמד את השפה הזאת, ונראה איך הממיר התקבילי-ספרתי הופך את המתח של החיישן למספר: מספר הסיביות, 2n רמות ומתח הייחוס, ואחר כך נחזור מן הערך הגולמי למתח ולגודל הפיזיקלי. בסוף נבחר חיישן לפרויקט בעזרת רשימת בדיקה פשוטה.
- נגדיר חיישן ופונקציית תמסורת, ונמיר את מתח המוצא של LM35 לטמפרטורה.
- נבחין בין חיישן פעיל לחיישן סביל ובין סוגי המוצא: תקבילי, דו-מצבי וספרתי.
- נסביר תחום מדידה ורגישות כפי שהם מופיעים בגיליון הנתונים.
- נסביר איך הממיר התקבילי-ספרתי הופך מתח לערך גולמי, ונמיר ערך גולמי למתח ולגודל פיזיקלי.
- נחשב רזולוציה ממספר הסיביות וממתח הייחוס, ונשווה בין Uno ל-ESP32.
- נכיר מאפיינים נוספים בגיליון הנתונים, ונבחר חיישן בעזרת רשימת בדיקה פשוטה.
חיישן ופונקציית התמסורת (Sensor and Transfer Function)
החיישן LM35 הוא דוגמה ברורה: מתח המוצא שלו עומד ביחס ישר לטמפרטורה במעלות צלזיוס, וכל מעלה מעלה את המוצא ב-10 mV (ערך טיפוסי לפי גיליון הנתונים). תחום המדידה שלו לפי גיליון הנתונים הוא בין −55 °C ל-150 °C; ערכים שליליים דורשים חיבור מיוחד, ובחיבור הפשוט עם הזנה יחידה הוא מודד רק מעל 2 °C בערך.
סוגי חיישנים וסוגי מוצא (Sensor and Output Types)
מצד הבקר חשוב לנו סוג המוצא, כי הוא קובע לאיזה הדק נחבר את החיישן ובאיזו פונקציה נקרא אותו:
מוצא תקבילי (LM35, מחלק מתח עם NTC או LDR) נחבר להדק תקבילי ונקרא בעזרת analogRead(); מוצא דו-מצבי (מפסק גבול, חיישן תנועה PIR, מצוף) נחבר להדק ספרתי ונקרא בעזרת digitalRead(); ומוצא ספרתי (DHT22, DS18B20, חיישני I2C) נקרא דרך הדק ספרתי ובעזרת ספרייה. החיישן העל-קולי HC-SR04 מוסר פולס שרוחבו עומד ביחס ישר למרחק, ונמדוד אותו בעזרת pulseIn().
(א) צמד תרמי.
(ב) LDR במחלק מתח.
(ג) DHT22.
תחום מדידה, רגישות ורזולוציה (Range, Sensitivity, Resolution)
ממתח למספר: הממיר התקבילי-ספרתי:
הבקר אינו עובד ישירות עם מתח. הממיר התקבילי-ספרתי שבתוכו משווה את המתח בהדק למתח הייחוס Vref, ומוסר מספר שלם שנקרא הערך הגולמי N. ממיר בן n סיביות מחלק את הטווח שבין 0 ל-Vref ל-2n רמות, ולכן הערך הגולמי הוא בין 0 ל-Nmax = 2n − 1:
| הלוח | מספר הסיביות n | מספר הרמות 2n | הערך הגולמי N | מתח הייחוס Vref |
|---|---|---|---|---|
| Arduino Uno | 10 | 1024 | 0…1023 | 5 V |
| ESP32 | 12 | 4096 | 0…4095 | 3.3 V |
הערך הגולמי עומד ביחס ישר למתח: 0 V נותן 0, ו-Vref נותן Nmax. בסקיצה הולכים בכיוון ההפוך: מן הערך הגולמי למתח, ומן המתח לגודל הפיזיקלי בחלוקה ברגישות.
(א) איזה ערך גולמי מוסר הממיר (החלק השלם)?
(ב) הסקיצה ממירה את הערך הזה למתח ואחר כך לטמפרטורה. מה היא מציגה?
ההבדל הקטן בין 37 °C ל-36.7 °C נובע מכך שהערך הגולמי הוא מספר שלם: הממיר אינו רואה שינוי קטן מצעד אחד.
מתח הצעד הבודד של ממיר בן n סיביות הוא ΔV, ונמיר אותו ליחידת הגודל הנמדד בחלוקה ברגישות S:
(א) עם Uno (10 סיביות, 5 V).
(ב) עם ESP32 (12 סיביות, 3.3 V).
הצעד של ESP32 קטן בערך פי 6: פי ארבעה יותר רמות, ומתח ייחוס נמוך יותר.
מאפיינים נוספים בגיליון הנתונים (Other Datasheet Properties)
בגיליון הנתונים יש מאפיינים נוספים. בספר הזה לא נחשב אותם, אבל חשוב להבין את משמעותם כשקוראים גיליון נתונים או משווים בין שני חיישנים:
- דיוק: עד כמה הקריאה קרובה לערך האמיתי; הוא ניתן כשגיאה הגדולה ביותר המותרת. דוגמה: הדיוק של DHT22 בטמפרטורה הוא ±0.5 °C (ערך טיפוסי לפי גיליון הנתונים).
- לינאריות: האם פונקציית התמסורת היא קו ישר? את הקריאה של חיישן לינארי ממירים בחילוק פשוט. דוגמה: LM35 לינארי, והנגד התלוי-טמפרטורה NTC אינו לינארי.
- זמן תגובה: הזמן שהקריאה צריכה כדי להדביק שינוי פתאומי בגודל הנמדד. דוגמה: גשש טמפרטורה שמעבירים למים חמים צריך כמה שניות עד שהקריאה שלו מתייצבת.
- סחף: שינוי איטי בקריאה במשך הזמן, בזמן שהגודל הנמדד קבוע. דוגמה: הלחות שמודד DHT22 נסחפת בכ-±0.5 %RH לשנה (ערך טיפוסי).
כשצריך קריאה מדויקת יותר מבצעים כיול: משווים את קריאת החיישן לקריאה של מכשיר ייחוס מדויק, ומוסיפים לסקיצה תיקון שמקרב את הקריאה לערך האמיתי.
בחירת חיישן (Choosing a Sensor)
לפני שבוחרים חיישן עוברים על רשימת בדיקה קצרה, ועונים על כל שאלה לפי גיליון הנתונים:
- מה מודדים ובאיזה תחום? תחום המדידה של החיישן צריך לכסות את התחום שהפרויקט צריך.
- מה סוג המוצא? תקבילי, דו-מצבי או ספרתי: הוא קובע לאיזה הדק נחבר את החיישן, ובאיזו פונקציה או ספרייה נקרא אותו.
- האם הוא מתאים למתח של הבקר? ה-Uno עובד ב-5 V, וה-ESP32 עובד ב-3.3 V ואינו סובל 5 V בהדקים שלו.
- האם הרזולוציה והדיוק מספיקים? משווים אותם למה שהפרויקט דורש.
- כל כמה זמן צריך קריאה? יש חיישנים איטיים: DHT22 מוסר קריאה חדשה לכל היותר פעם בשתי שניות.
- איפה הוא עובד? במים, באבק, בחום גבוה — ומה המחיר שלו.
דוגמה: מדידת טמפרטורה בחממה בין 0 ל-50 °C בדיוק של ±1 °C, קריאה כל 5 s, עם הבקר ESP32 שפועל במתח 3.3 V. נכתוב את הדרישות בעמודה, ומולן את מה שאומר גיליון הנתונים של כל חיישן מועמד:
| מאפיין | הדרישה | LM35 | DS18B20 | DHT22 |
|---|---|---|---|---|
| מוצא וספרייה | — | תקבילי 10 mV/°C, בלי ספרייה | ספרתי 1-Wire, הספריות OneWire + DallasTemperature | ספרתי בחוט אחד, ספריית DHT |
| תחום מדידה | 0…50 °C | −55…150 °C | −55…125 °C | −40…80 °C |
| דיוק | ±1 °C | ±1 °C ב-25 °C | ±0.5 °C (−10…85 °C) | ±0.5 °C |
| רזולוציה | 0.5 °C | לפי הממיר | 0.0625 °C | 0.1 °C |
| פועל ב-3.3 V? | כן | לא (מ-4 V) | כן (3.0…5.5 V) | כן |
| זמן בין קריאות | 5 s | מיידי (תקבילי) | 750 ms | 2 s |
הערכים טיפוסיים לפי גיליונות הנתונים, ובפרויקט נבדוק בגיליון הנתונים של הדגם שקנינו. ההחלטה: LM35 יוצא מן התחרות, כי הוא צריך לפחות 4 V. החיישנים DS18B20 ו-DHT22 עומדים בכל הדרישות: נבחר ב-DHT22 אם נרצה למדוד גם לחות, וב-DS18B20 בגשש אטום בתוך האדמה או המים.
על איזה לוח?:
לפני שבוחרים חיישן שואלים גם: באיזה לוח נקרא אותו? ההדקים של Uno עובדים ב-5 V, וההדקים של ESP32 ושל רספברי פיי ב-3.3 V ואינם עומדים ב-5 V, ולרספברי פיי אין ממיר תקבילי-ספרתי (פרק 4). הטבלה מסכמת את החיישנים שבספר:
| החיישן | המוצא | Arduino Uno | ESP32 | Raspberry Pi |
|---|---|---|---|---|
| DHT22 | ספרתי | ישירות | ישירות, הזנה 3.3 V | ישירות, ספריית פייתון |
| DS18B20 | ספרתי (1-Wire) | ישירות | ישירות | ישירות, 1-Wire מובנה |
| PIR | ספרתי | ישירות | ישירות, המוצא 3.3 V | ישירות, המוצא 3.3 V |
| לחצן רגעי | ספרתי | ישירות | ישירות | ישירות |
| HC-SR04 | ספרתי (פולס) | ישירות | מחלק מתח על ECHO | מחלק מתח על ECHO |
| LM35 | תקבילי | ישירות | ישירות, הזנה 5 V | דרך ממיר חיצוני |
| LDR | התנגדות (מחלק) | ישירות | ישירות, מחלק מ-3.3 V | דרך ממיר חיצוני |
| פוטנציומטר | תקבילי | ישירות | ישירות, מ-3.3 V | דרך ממיר חיצוני |
| ACS712 | תקבילי | ישירות | מחלק מתח על המוצא | ממיר חיצוני ומחלק מתח |
סיכום נוסחאות הפרק:
| החוק | הנוסחה |
|---|---|
| פונקציית התמסורת של LM35 | Vout = 10 mV/°C · T |
| רוחב התחום | FS = xmax − xmin |
| מספר הרמות של הממיר והערך הגולמי הגדול ביותר | 2n , Nmax = 2n − 1 |
| מערך גולמי למתח | V = N·VrefNmax |
| הרזולוציה של הממיר | ΔV = Vref2n |
| רזולוציה ביחידות הגודל הנמדד | Δx = ΔVS |
מילון מונחים:
| עברית | English | العربية |
|---|---|---|
| חיישן | Sensor | الحسّاس (المستشعر) |
| מתמר | Transducer | مُحوِّل الطاقة |
| פונקציית תמסורת (אופיין) | Transfer function | دالّة النقل |
| חיישן פעיל · חיישן סביל | Active · passive sensor | حسّاس فعّال · حسّاس سلبي |
| מוצא תקבילי · ספרתי | Analog · digital output | مخرج تماثلي · رقمي |
| מוצא דו-מצבי (בינארי) | Binary (switching) output | مخرج ثنائي الحالة |
| תחום מדידה | Measuring range | مدى القياس |
| רוחב התחום (סקאלה מלאה) | Span (full scale, FS) | عرض المدى (المدى الكامل) |
| רגישות | Sensitivity | الحساسية |
| ממיר תקבילי-ספרתי | Analog-to-digital converter (ADC) | المحوّل التماثلي-الرقمي |
| ערך גולמי · מתח ייחוס | Raw value · reference voltage | القيمة الخام · جهد المرجع |
| רזולוציה (הפרדה) | Resolution | دقّة التمييز |
| דיוק · לינאריות | Accuracy · linearity | الدقّة · الخطّية |
| זמן תגובה · סחף | Response time · drift | زمن الاستجابة · الانجراف |
| כיול · מכשיר ייחוס | Calibration · reference instrument | المعايرة · جهاز مرجعي |
שאלות לתרגול:
(א) חשבו את רוחב התחום.
(ב) הסקיצה קראה ממנו 150 °C. האם אפשר לסמוך על הקריאה?
(א) בכמה משתנה המוצא לכל 1 kPa (הרגישות)?
(ב) מהו המוצא ב-50 kPa?
(א) 8 סיביות.
(ב) 10 סיביות.
(ג) 12 סיביות.
(ב) ה-ESP32 (12 סיביות, 3.3 V) קרא מחיישן את הערך הגולמי N = 2048. מהו המתח בהדק?
(א) HC-SR04.
(ב) PIR.
(ג) DS18B20.
(ד) LDR במחלק מתח.
(ה) מפסק גבול.
(א) האם הטמפרטורה האמיתית היא בדיוק 23.0625 °C?
(ב) בין אילו ערכים היא נמצאת?