חיישנים תעשייתיים
במפעל איננו משתמשים במודולים הקטנים שהכרנו על לוח הניסויים, אלא בחיישנים חסונים בבית אטום, הפועלים במתח 24 V ועומדים בפני אבק, מים, רעידות ורעש חשמלי. בפרק זה נכיר את חיישני המגע ואת חיישני הקרבה, את המוצא התקני NPN ו-PNP ואת לולאת הזרם 4–20 mA, ונלמד כיצד לחבר אותם לבקר בבטחה.
- נבחין בין מגע פתוח במנוחה (NO) לבין מגע סגור במנוחה (NC), ונסביר מדוע מעגלי עצירה מחוברים במגע NC.
- נתאר את עקרון הפעולה של מפסק גבול, מפסק לחץ, מצוף ותרמוסטט.
- נסביר את עקרון הפעולה של חיישן קרבה השראתי, קיבולי ואופטי, ונבחר את החיישן המתאים.
- נחבר חיישן תלת-גידי בעל מוצא NPN או PNP לעומס ולמבוא של PLC.
- נחבר חיישן 24 V לבקר 5 V דרך מודול מצמד אופטי מוכן, ונספור פריטים על מסוע.
- נקרא אות 4–20 mA בבקר, נמיר אותו ליחידות הנדסיות ונזהה נתק בחוט.
חיישני מגע (Contact Sensors)
הפשוטים שבהם הם חיישני המגע: חלק מכני נע (זרוע, ממברנה, מצוף, פס מתכתי) פותח מגע חשמלי או סוגר אותו. המוצא שלהם הוא מפסק בעל שני מצבים, כמו הלחצן שהכרנו בפרק 3.
מפסק גבול:
למפסק שלושה הדקים: המשותף COM, מגע פתוח במנוחה NO, שנסגר כשלוחצים על הזרוע, ומגע סגור במנוחה NC, שנפתח כשלוחצים עליה. "במנוחה" פירושו: במצב מנוחה, בלי לחץ על הזרוע.
כשל בטוח: מדוע NC במעגלי עצירה?:
התקלה הנפוצה ביותר היא נתק במעגל. במגע NO האות "עצור" הוא סגירת המעגל, וחוט קטוע מונע אותו לתמיד בלי שנשים לב. במגע NC המעגל סגור בעבודה רגילה, ואות העצירה הוא פתיחתו; לכן חוט קטוע נראה לבקר כמו הגעה לגבול, והמכונה נעצרת.
| מה קרה? | עצירה במגע NO | עצירה במגע NC |
|---|---|---|
| עבודה רגילה | המעגל פתוח, המכונה פועלת | המעגל סגור, המכונה פועלת |
| החלק הגיע לגבול | המעגל נסגר, המכונה נעצרת | המעגל נפתח, המכונה נעצרת |
| החוט נקטע | שום דבר אינו משתנה: המכונה לא תיעצר בגבול! | המעגל נפתח, המכונה נעצרת (בטוח) |
נחבר את המגע NC בין D3 לבין האדמה, עם נגד המשיכה למעלה הפנימי. בעבודה רגילה נקרא LOW; כשהזרוע נלחצת או כשהחוט נקטע נקרא HIGH ונעצור את המנוע. את המנוע מייצגת נורית חיווי על D8 (בפרק 10 נפעיל מנוע אמיתי דרך ממסר).
const int LIMIT = 3; // NC contact to GND, INPUT_PULLUP
const int MOTOR = 8; // LED stands for the motor relay
int lastState = -1;
void setup() {
pinMode(LIMIT, INPUT_PULLUP);
pinMode(MOTOR, OUTPUT);
Serial.begin(9600);
}
void loop() {
int s = digitalRead(LIMIT); // LOW = contact closed = normal
bool run = (s == LOW);
digitalWrite(MOTOR, run ? HIGH : LOW);
if (s != lastState) { // print only on change
lastState = s;
Serial.print("D3 = ");
Serial.print(s);
if (run) Serial.println(" -> motor ON");
else Serial.println(" -> STOP (limit or broken wire)");
}
}D3 = 0 -> motor ON D3 = 1 -> STOP (limit or broken wire) D3 = 0 -> motor ON D3 = 1 -> STOP (limit or broken wire)
השורות: השער נע; הגיע לגבול; חזר והזרוע השתחררה; קטענו את החוט בכוונה — והמנוע נעצר כמו בגבול. במכונה אמיתית התנועה אינה חוזרת מעצמה אחרי העצירה, אלא רק אחרי לחיצה חדשה על לחצן הפעלה.
מפסק לחץ (פרסוסטט):
לכל מפסק לחץ יש הפרש מיתוג ΔP, והוא ההיסטרזיס שמונע הפעלה והפסקה תכופות: מדחס שמופסק בלחץ 8 bar והפרש המיתוג שלו 1.5 bar חוזר לפעול בלחץ 6.5 bar.
מצוף (מפסק מפלס):
בדגמים רבים מקבלים NO או NC על ידי היפוך המצוף. בנוזל עצמו אין זרם, ולכן המצוף מתאים למים ולדלק.
תרמוסטט דו-מתכתי:
כשהפס מתקרר הוא חוזר להיות ישר, והמגע נסגר שוב. כך פועל התרמוסטט במגהץ ובדוד החימום: הוא מפסיק את החימום בטמפרטורה הרצויה ומחזיר אותו כשהטמפרטורה יורדת.
חיישני קרבה (Proximity Sensors)
חיישן קרבה מזהה את הגוף בלי לגעת בו. אין בו מגע מכני, ולכן הוא אינו נשחק ואין בו קפיצות מגע, והוא פועל מיליוני פעמים ובמהירות. המוצא שלו הוא טרנזיסטור אלקטרוני (סעיף 8.3).
חיישן קרבה השראתי:
| ערכים טיפוסיים לפי גיליון הנתונים | M12 | M18 | M30 |
|---|---|---|---|
| Sn לחיישן מותקן בשקע | 2 mm | 5 mm | 10 mm |
| Sn לחיישן שאינו מותקן בשקע | 4 mm | 8 mm | 15 mm |
המספר M12, M18 או M30 הוא הקוטר של הבית המתוברג במילימטרים: ככל שהחיישן גדול יותר, הוא מזהה ממרחק גדול יותר. מתכות שאינן ברזליות, כמו אלומיניום ונחושת, מושפעות מן השדה פחות מפלדה, ולכן החיישן מזהה אותן ממרחק קצר הרבה יותר, לפעמים פחות ממחצית Sn.
חיישן קרבה קיבולי:
בעזרת פוטנציומטר הכיוון נבחר את הרגישות הנמוכה ביותר שעדיין מזהה את החומר הרצוי. דוגמה נפוצה: נצמיד את החיישן לדופן של מכל פלסטיק, והוא יזהה את הנוזל שבתוכו ולא את הדופן הדקה. מים מזוהים ממרחק גדול יותר מאשר פלסטיק ועץ.
חיישן קרבה אופטי:
- מחסום אור: הגוף חוסם את הקרן בין משדר ומקלט נפרדים. הטווח הארוך ביותר והאמינות הגבוהה ביותר, אבל צריך חיווט בשני הצדדים.
- רטרו-רפלקטיבי: הקרן חוזרת ממחזיר אור שאינו צריך חשמל. חיווט בצד אחד בלבד; גוף מבריק עלול להטעות אותו.
- דיפיוזי: הגוף עצמו מחזיר את האור. אין צורך במחזיר אור, אבל הטווח קצר יותר ותלוי בצבע הגוף.
השוואה בין חיישנים תעשייתיים:
בטבלה מופיע גם החיישן העל-קולי התעשייתי: הוא פועל לפי העיקרון של המודול HC-SR04 מפרק 7, אבל בבית תעשייתי. הוא מזהה כל גוף שמחזיר קול, בלי קשר לצבעו או לשקיפותו, ולכן משתמשים בו רבות למדידת מפלס במכל מלמעלה.
| החיישן | העיקרון | מה הוא מזהה | טווח טיפוסי | המוצא |
|---|---|---|---|---|
| מפסק גבול | זרוע ומגע | גוף הלוחץ על הזרוע | מגע ישיר | NO/NC |
| מפסק לחץ / מצוף / תרמוסטט | ממברנה, מצוף, פס | לחץ, מפלס, טמפרטורה בנקודת הכיוון | נקודת הכיוון | NO/NC |
| קרבה השראתי | זרמי מערבולת | מתכות בלבד | 2–15 mm | NPN/PNP |
| קרבה קיבולי | שינוי הקיבול | כמעט כל חומר | עד כ-25 mm | NPN/PNP |
| אופטי | חסימת הקרן או החזרתה | גוף שאינו שקוף | מפחות ממטר ועד עשרות מטרים | NPN/PNP |
| על-קולי תעשייתי | זמן ההד | כל גוף שמחזיר קול, גם זכוכית ונוזלים | מעשרות סנטימטרים ועד מטרים אחדים | NPN/PNP או 4–20 mA |
חיישן תלת-גידי: מוצא NPN ומוצא PNP (Three-Wire DC Sensor)
- יציאת PNP (מקורית): בעת זיהוי הטרנזיסטור מחבר את הגיד השחור לחיובי, והזרם יוצא מן החיישן אל העומס. על הגיד השחור נמדוד כ-24 V. זה הדגם הנפוץ באירופה ובישראל.
- יציאת NPN (שוקעת): בעת זיהוי הטרנזיסטור מחבר את הגיד השחור לשלילי, והזרם נכנס מ-+24 V דרך העומס אל החיישן. על הגיד השחור נמדוד כ-0 V.
- גם המבוא של ה-PLC הוא "עומס" (נגד ודיודה פולטת אור), ויש לו הדק משותף: לחיישן PNP נחבר את המשותף ל-0 V, ולחיישן NPN ל-+24 V.
- לכל חיישן יש פונקציה: NO (המוצא פעיל כשיש גוף) או NC (כשאין גוף).
חיבור חיישן 24 V לבקר (Interfacing a 24 V Sensor)
בעת זיהוי מוצא PNP נותן כ-24 V, והמתח המרבי המותר על הדק של Arduino Uno הוא כ-5.5 V (גיליון הנתונים של ATmega328P); ולוח ESP32 פועל ב-3.3 V ואינו עומד ב-5 V. לכן תמיד נזדקק למעגל התאמה בין החיישן לבקר.
הפתרון המוכן: מודול מצמד אופטי:
בשוק יש מודולים מוכנים למטרה זו: כרטיס קטן ועליו מצמד אופטי כמו PC817 והנגד המתאים ל-24 V, עם שני הדקי מבוא ושני הדקי מוצא. בצד החיישן נחבר את הגיד השחור למבוא המודול ואת 0 V להדק השני שלו; הנגד 4.7 kΩ מגביל את הזרם בדיודה הפולטת לכמה מיליאמפר. בצד הבקר הטרנזיסטור פועל כמו לחצן לאדמה עם INPUT_PULLUP: בעת זיהוי נקרא LOW, ובלי זיהוי נקרא HIGH.
סקיצה: ספירת פריטים על מסוע:
חיישן השראתי PNP מחובר דרך המצמד האופטי אל ההדק D2, וכל פחית מתכת נותנת פולס LOW. בחיישן אין קפיצות מגע, אבל במפעל יש הפרעות מן המנועים, והמוצא עלול להתנדנד כשקצה הפחית נמצא בדיוק בגבול המרחק. לכן נקבל את המצב החדש רק אם נשאר יציב 20 ms (סינון קפיצות לפי זמן).
const int SENSOR = 2; // optocoupler output, LOW = object
const unsigned long DEBOUNCE_MS = 20;
int stableState = HIGH, lastRaw = HIGH;
unsigned long lastChange = 0, count = 0;
void setup() {
pinMode(SENSOR, INPUT_PULLUP);
Serial.begin(9600);
Serial.println("Conveyor counter ready");
}
void loop() {
int raw = digitalRead(SENSOR);
if (raw != lastRaw) { // input moved: restart the timer
lastRaw = raw;
lastChange = millis();
}
if (millis() - lastChange >= DEBOUNCE_MS && raw != stableState) {
stableState = raw; // the new state is stable
if (stableState == LOW) { // a new object reached the sensor
count++;
Serial.print("t = "); Serial.print(millis());
Serial.print(" ms count = "); Serial.println(count);
}
}
}Conveyor counter ready t = 420 ms count = 1 t = 1170 ms count = 2 t = 1923 ms count = 3 t = 2620 ms count = 4
עברו ארבע פחיות, שהתחילו בזמנים 400, 1150, 1900, 2600 ms. פולס הפרעה באורך 3 ms בזמן 800 ms לא נספר. בפחית השלישית המוצא התנדנד אחרי 2 ms, ומדידת הזמן התחילה מחדש; לכן הספירה הופיעה 23 ms אחרי תחילת הפחית במקום 20 ms.
לולאת זרם 4–20 mA (4–20 mA Current Loop)
לחץ, מפלס, טמפרטורה וספיקה הם גדלים תקביליים, והחיישן עשוי להיות במרחק מאות מטרים מלוח הבקרה. כאן נשתמש במשדר: חיישן עם מעגל הממיר את המדידה לזרם. כך פועלים משדרי הטמפרטורה, הלחץ והמפלס במפעל.
- התנגדות הגידים אינה משנה את האות: במעגל טורי הזרם זהה בכל נקודה, והמשדר שומר עליו, ולכן נגד המדידה "רואה" את הזרם הנכון גם בקו ארוך. אות מתח היה נחלש לאורך הקו.
- חסינות בפני הפרעות: ההתנגדות של הלולאה קטנה, והמתח שמשרה מנוע סמוך כמעט אינו משנה את הזרם.
- אפס חי: תחילת התחום היא 4 mA ולא אפס. חוט קטוע נותן 0 mA — ערך "בלתי אפשרי" שממנו הבקר יודע שיש תקלה. ומן ה-4 mA ניזון המשדר הדו-גידי עצמו.
ההמרה פשוטה כי הקשר לינארי: 4 mA הוא האפס של התחום, 20 mA הוא סופו, וביניהם 16 mA המכסים את כל התחום. בדיוק באמצע, ב-12 mA, אנחנו במחצית התחום.
| סימן | משמעות | יחידת מידה |
|---|---|---|
| I | זרם הלולאה | [mA] |
| x | הגודל הנמדד ביחידות הנדסיות | [bar, °C, m] |
| xmin , xmax | תחילת התחום של המשדר וסופו (ב-4 mA וב-20 mA) | [bar, °C, m] |
הבקר קורא מתח, ולכן נעביר את הזרם דרך נגד מדידה (שנט) מדויק של 250 Ω. לפי חוק אוהם הזרם 4 mA הופך למתח 1 V, והזרם 20 mA — למתח 5 V: התחום 1–5 V נמצא בתוך התחום של הממיר התקבילי-ספרתי של Uno. השרשרת כולה: הערך הגולמי N ← המתח ← הזרם ← הלחץ.
סקיצה: קריאת משדר לחץ וזיהוי נתק:
בתעשייה מדידה נחשבת תקינה בין 3.8 mA לבין 20.5 mA בערך, ומתחת ל-3.8 mA — תקלה (ההמלצה NAMUR NE 43). הסקיצה ממירה את הערך הגולמי למתח, אחר כך לזרם, ואחר כך ללחץ. הזרם 20 mA נותן 5 V, כלומר N = 1023, והממיר אינו מבחין בינו לבין זרם גדול יותר; לכן במצב זה נדפיס "תחום מלא".
const int LOOP_PIN = A0; // 250 ohm shunt, via 4.7k
const float R_SHUNT = 250.0; // ohm
const float P_MAX = 10.0; // bar at 20 mA (0 bar at 4 mA)
void setup() {
Serial.begin(9600);
}
void loop() {
int n = analogRead(LOOP_PIN);
float v = n * 5.0 / 1023.0;
float mA = v / R_SHUNT * 1000.0;
Serial.print("N = "); Serial.print(n);
Serial.print(" I = "); Serial.print(mA, 2); Serial.print(" mA ");
if (mA < 3.8) {
Serial.println("FAULT: open loop");
} else if (n >= 1023) {
Serial.println("P >= 10 bar (ADC full)");
} else {
float p = (mA - 4.0) / 16.0 * P_MAX;
if (p < 0) p = 0;
Serial.print("P = "); Serial.print(p, 2); Serial.println(" bar");
}
delay(1000);
}N = 205 I = 4.01 mA P = 0.00 bar N = 368 I = 7.19 mA P = 2.00 bar N = 655 I = 12.81 mA P = 5.50 bar N = 1023 I = 20.00 mA P >= 10 bar (ADC full) N = 0 I = 0.00 mA FAULT: open loop
השורות הן עבור הזרמים 4, 7.2, 12.8, 20, 0 mA, לפי הסדר; בשורה האחרונה קטענו את החוט. הזרם 7.2 mA נקרא כ-7.19 mA: הרזולוציה מוגבלת על ידי הצעד של הממיר.
סיכום נוסחאות הפרק:
| החוק | הנוסחה |
|---|---|
| הפרש המיתוג של מפסק לחץ | Pon = Poff − ΔP |
| מזרם הלולאה לגודל | x = xmin + I − 416·(xmax − xmin) |
| המתח על נגד המדידה | V = I·Rsh |
| מן הערך הגולמי למתח (Uno) | V = N·51023 |
מילון מונחים:
| עברית | English | العربية |
|---|---|---|
| מפסק גבול | Limit switch | مفتاح نهاية المشوار |
| מגע פתוח / סגור במנוחה | NO / NC contact | التلامس المفتوح / المغلق عادةً |
| כשל בטוח | Fail-safe | الأمان عند العطل |
| מפסק לחץ (פרסוסטט) | Pressure switch | مفتاح الضغط |
| הפרש מיתוג | Switching differential | فرق التشغيل |
| מצוף (מפסק מפלס) | Float switch | مفتاح العوّامة |
| תרמוסטט | Thermostat | منظّم الحرارة (الثرموستات) |
| פס דו-מתכתי | Bimetallic strip | الشريحة ثنائية المعدن |
| חיישן קרבה השראתי / קיבולי / אופטי | Inductive / capacitive / photoelectric | حسّاس اقتراب حثّي / سعوي / ضوئي |
| מרחק חישה נומינלי | Rated sensing distance | مسافة الاستشعار الاسمية |
| מחסום אור / רטרו-רפלקטיבי / דיפיוזי | Through-beam / retro-reflective / diffuse | حاجز ضوئي / انعكاسي / منتشر |
| חיישן תלת-גידי | Three-wire sensor | الحسّاس ثلاثي الأسلاك |
| יציאת PNP (מקורית) | PNP (sourcing) output | مخرج PNP (يغذّي التيار) |
| יציאת NPN (שוקעת) | NPN (sinking) output | مخرج NPN (يسحب التيار) |
| מצמד אופטי | Optocoupler | المقرن الضوئي |
| בידוד גלווני | Galvanic isolation | العزل الغلفاني |
| משדר | Transmitter | المرسِل |
| לולאת זרם 4–20 mA | 4–20 mA current loop | حلقة التيار 4–20 mA |
| נגד מדידה (שנט) | Shunt resistor | مقاومة القياس |
| אפס חי | Live zero | الصفر الحيّ |
שאלות לתרגול:
א. ספירת פחיות אלומיניום ממרחק 1 mm.
ב. זיהוי בקבוק פלסטיק ובו מים.
ג. זיהוי ארגזים על מסוע ברוחב 4 m.
ד. זיהוי מפלס נוזל דרך הדופן של מכל פלסטיק.