تشغيل الأحمال: الترانزستور والمرحّل
المتحكّم يقرّر، لكن طرفه ضعيف: يعطي بضعة مليأمبيرات بجهد 5 V. المصباح، شريط الإضاءة، المضخّة والسخّان تحتاج إلى أمبيرات، وأحيانا إلى جهد 12 V أو إلى جهد الشبكة 230 V. في هذا الفصل نتعلّم كيف يشغّل الطرف الصغير حملا كبيرا بأمان: بالترانزستور كمفتاح، بترانزستور MOSFET، بالمرحّل وبمرحّل الحالة الصلبة. نتعلّم أيّ مفتاح نختار لكل حمل وكيف نوصله، ونكتب البرنامج الذي يقود كل دائرة.
- طرف المتحكّم له حدود تيار، ونحسب هل يستطيع أن يشغّل حملا مباشرة، مثل ليد مع مقاومة.
- نشغّل حملا بترانزستور NPN كمفتاح، ونعرف دور مقاومة القاعدة وكيف نوصل الحمل.
- نختار ترانزستور MOSFET بمستوى منطقي للأحمال الكبيرة، ونفهم لماذا لا يكاد يسخن.
- نخفّت شريط LED بتعديل عرض النبضة ونحسب نسبة التشغيل.
- نشغّل مرحّلا عبر ترانزستور مع ديود الحماية، ونفهم لماذا لا نستغني عنه.
- نصف مبدأ مرحّل الحالة الصلبة ونقارن بين أنواع المفاتيح.
מדוע הדק אינו מפעיל עומס ישירות – لماذا لا يشغّل الطرف الحمل مباشرة؟ (Pin Current Limits)
طرف المخرج في المتحكّم هو مفتاح إلكتروني صغير داخل الشريحة: يصل الطرف بجهد 5 V عند HIGH وبالأرضي عند LOW. هذا المفتاح مبني لتيارات صغيرة. ورقة بيانات المتحكّم ATmega328P في لوحة Uno تحدّد قيما قصوى مطلقة (ערכים מרביים מוחלטים)، وتجاوزها يتلف الشريحة:
| المقدار | القيمة | معناها |
|---|---|---|
| تيار طرف واحد — موصى به | 20 mA | نصمّم دائما تحت هذه القيمة |
| تيار طرف واحد — حدّ أقصى مطلق | 40 mA | لا نقترب منه أبدا |
| مجموع تيارات كل الأطراف (عبر VCC و GND) | 200 mA | لا يُوزَّع على طرف واحد |
مصباح 12 V يحتاج إلى جهد لا يعطيه الطرف، وملف مرحّل صغير يسحب نحو 71 mA (نحسبه لاحقا)، أي أكثر من الحد الأقصى المطلق. الحل دائما واحد: الطرف يعطي إشارة تحكّم صغيرة فقط، ودائرة القيادة (מעגל הנעה, דרייבר) تفتح وتغلق تيار الحمل الكبير، والحمل يأخذ تياره من مصدر منفصل:
الليد مع مقاومة على التوالي – נורית LED עם נגד טורי:
الليد (נורית LED) حمل صغير يستطيع الطرف تشغيله مباشرة، بشرط أن نحدّ تياره بمقاومة على التوالي. على الليد المضاء يبقى جهد شبه ثابت يسمى جهد الأمام VF (מתח קדמי)، والباقي VCC − VF يقع على المقاومة. لتيار مطلوب IF تكون مقاومة التوالي:
للأحمر:
نختار القيمة القياسية الأكبر التالية من سلسلة E12، فيكون التيار أصغر قليلا من المطلوب ولا يتجاوزه. هكذا نحسب الثلاثة:
| الليد | VF | R المحسوبة | R القياسية | IF الفعلي |
|---|---|---|---|---|
| أحمر | 2 V | 300 Ω | 330 Ω | 9.1 mA |
| أخضر | 2.2 V | 280 Ω | 330 Ω | 8.5 mA |
| أزرق | 3.3 V | 170 Ω | 180 Ω | 9.4 mA |
مجموع التيارات إذا أضاءت الثلاثة معا 27 mA ، وهو بعيد عن حدّ 200 mA الكلّي.
טרנזיסטור כמפסק – الترانزستور كمفتاح (BJT as a Switch)
في ترانزستور NPN نضع الحمل بين المصدر +12 V والمجمع (קולט)، ونصل الباعث (פולט) بالأرضي. هذا يسمى مفتاحا في الجهة المنخفضة (מיתוג בצד הנמוך): الترانزستور يقطع أو يصل طرف الحمل السفلي بالأرضي. الطرف يعطي تيارا صغيرا للقاعدة (בסיס) عبر مقاومة القاعدة RB (נגד בסיס). تيار قاعدة صغير يتحكّم في تيار مجمع أكبر منه بعشرات المرات، فيكفي الطرف أن يعطي بضعة مليأمبيرات.
كيف نختار ونوصل؟
- الترانزستور: 2N2222A يصلح لأحمال تيار مستمر حتى بضع مئات المليأمبيرات: مصباح صغير، ملف مرحّل، طنّان. لأحمال أكبر نختار ترانزستور MOSFET (البند 10.3).
- مقاومة القاعدة: لا نستغني عنها أبدا، فهي تحدّ تيار القاعدة وتحمي الطرف والترانزستور. لحمل حتى نحو 150 mA تكفي عادة RB = 1 kΩ: يعطي الطرف نحو 4.3 mA فقط، وهذا يكفي ليدخل الترانزستور الإشباع.
- الحمل: بين +12 V والمجمع، والباعث إلى الأرضي، وأرضي مصدر الحمل مشترك مع أرضي المتحكّم.
- حمل حثّي (ملف مرحّل، محرّك): نضيف ديود الحماية على الحمل (البند 10.4).
نجعل الدائرة نظام تحكّم كاملا: المقاومة الضوئية تقيس الضوء، والمتحكّم يشعل المصباح عند الظلام. في الظلام تكبر مقاومة المقاومة الضوئية فتنخفض القيمة الخام على A0. نستعمل عتبتين: نشعل تحت 300 ونطفئ فوق 400. الفرق بينهما تخلّف (היסטרזיס) يمنع المصباح من الرمش عندما يتذبذب الضوء حول عتبة واحدة.
const int LDR_PIN = A0;
const int LAMP = 8; // to R_B -> base of Q1
const int ON_LEVEL = 300; // darker than this -> lamp ON
const int OFF_LEVEL = 400; // brighter than this -> lamp OFF
bool lampOn = false;
void setup() {
Serial.begin(9600);
pinMode(LAMP, OUTPUT);
}
void loop() {
int raw = analogRead(LDR_PIN);
if (!lampOn && raw < ON_LEVEL) lampOn = true;
if (lampOn && raw > OFF_LEVEL) lampOn = false;
digitalWrite(LAMP, lampOn ? HIGH : LOW);
Serial.print("raw = "); Serial.print(raw);
Serial.print(" lamp: "); Serial.println(lampOn ? "ON" : "OFF");
delay(500);
}raw = 450 lamp: OFF raw = 350 lamp: OFF raw = 290 lamp: ON raw = 250 lamp: ON raw = 330 lamp: ON raw = 380 lamp: ON raw = 420 lamp: OFF
في القراءتين 330 و 380 بقي المصباح مضاء، لأن القيمة لم تتجاوز 400 بعد: هذا هو التخلّف.
MOSFET ברמה לוגית כמפסק – ترانزستور MOSFET بمستوى منطقي (Logic-Level MOSFET)
الترانزستور 2N2222A ممتاز حتى بضع مئات المليأمبيرات. لشريط LED يسحب أمبيرين أو لمضخّة نحتاج إلى مفتاح آخر: ترانزستور MOSFET من نوع N. أطرافه: البوابة G (שער)، المصرف D (מרזב) والمنبع S (מקור). البوابة معزولة، فلا يمر فيها تيار ثابت: الترانزستور يُقاد بالجهد VGS وليس بالتيار.
| VGS,th | RDS,on (VGS = 10 V) | RDS,on (5 V) | RDS,on (4 V) | لطرف 5 V؟ | |
|---|---|---|---|---|---|
| IRLZ44N | 1…2 V | 22 mΩ | 25 mΩ | 35 mΩ | نعم |
| IRF540N | 2…4 V | 44 mΩ | غير مضمونة | غير مضمونة | لا |
لماذا لا يكاد يسخن؟ لأن مقاومة توصيله صغيرة جدا. شريط LED مكتوب عليه 12 V ، 24 W يسحب 2 A. مع IRLZ44N عند VGS = 5 V (25 mΩ) يتحوّل في الترانزستور نحو 0.1 W فقط إلى حرارة، فلا يحتاج إلى مشتّت حراري. أما 2N2222A فلا يصلح هنا أصلا، لأن أكبر تيار مجمع مسموح له 600 mA.
مقاومة البوابة ومقاومة الخفض – נגד שער ונגד משיכה למטה:
البوابة تتصرّف مثل مكثّف صغير، يشحنه الطرف عند كل تبديل بتيار لحظي. مقاومة البوابة RG (بين 150 Ω و 220 Ω) تحدّ هذا التيار. ومقاومة الخفض Rpd (نحو 10 kΩ) بين البوابة والأرضي تُبقي البوابة عند 0 V حين يكون الطرف طافيا، عند تشغيل اللوحة أو أثناء رفع البرنامج، فيبقى الحمل مطفأ. مقاومة الخفض أكبر بكثير من مقاومة البوابة، فعند HIGH تبقى البوابة قريبة جدا من 5 V.
تعديل عرض النبضة: تخفيت الشريط – אפנון רוחב פולס: עמעום:
| الرمز | المعنى | وحدة القياس |
|---|---|---|
| D | نسبة التشغيل (تُكتب أيضا بالنسبة المئوية) | — |
| ton , T | زمن التشغيل وزمن الدورة | [s] |
| N | القيمة في analogWrite(pin, N) ، من 0 إلى 255 | — |
| Pavg , P | متوسط قدرة الحمل، وقدرته عندما يعمل دائما | [W] |
في Uno يعمل analogWrite() فقط على الأطراف المعلَّمة بالرمز ~ : 3، 5، 6، 9، 10، 11. التردّد نحو 490 Hz في الأطراف 3، 9، 10، 11 ونحو 980 Hz في 5 و 6 (حسب وثائق Arduino). نقود الشريط من D9، ونقرأ مقاومة متغيّرة على A0 لنختار الإضاءة:
const int POT = A0;
const int STRIP = 9; // PWM pin (~490 Hz) -> gate resistor
void setup() {
Serial.begin(9600);
pinMode(STRIP, OUTPUT);
}
void loop() {
int raw = analogRead(POT); // 0..1023
int pwm = raw / 4; // 0..255
analogWrite(STRIP, pwm);
float duty = pwm * 100.0 / 255.0; // [%]
Serial.print("raw = "); Serial.print(raw);
Serial.print(" pwm = "); Serial.print(pwm);
Serial.print(" duty = "); Serial.print(duty, 1); Serial.println(" %");
delay(300);
}raw = 0 pwm = 0 duty = 0.0 % raw = 256 pwm = 64 duty = 25.1 % raw = 512 pwm = 128 duty = 50.2 % raw = 768 pwm = 192 duty = 75.3 % raw = 1023 pwm = 255 duty = 100.0 %
ממסר – المرحّل (Electromechanical Relay)
| الملامس | الملف بدون تيار | الملف مع تيار |
|---|---|---|
| NO | مفتوح عن COM | موصول بـ COM |
| NC | موصول بـ COM | مفتوح عن COM |
COM هو الملامس المشترك (משותף)، و NO هو الملامس المفتوح في الراحة (מגע פתוח במנוחה)، و NC هو الملامس المغلق في الراحة (מגע סגור במנוחה). نصل الحمل عادة بين COM و NO ، فيعمل الحمل فقط عندما يعمل الملف. ولحساب تيار الملف وقدرته نستعمل قانون أوم وقانون القدرة مع الجهد الاسمي للملف Vcoil ومقاومته Rcoil:
(أ) نحسب تيار الملف وقدرته.
(ب) هل يستطيع الطرف تشغيله مباشرة؟
(ب) لا: 71.4 mA أكبر من الحد الأقصى المطلق للطرف 40 mA. لذلك نشغّله من الطرف D7 عبر الترانزستور 2N2222A مع مقاومة قاعدة 1 kΩ كما في البند 10.2 ، أو نستعمل وحدة مرحّل جاهزة.
تصنيف الملامسات (דירוג מגעים): ملامسات المرحّل SRD-05VDC-SL-C مصنّفة 10 A عند 250 V متناوب و 10 A عند 30 V مستمر (قيمة نموذجية حسب ورقة البيانات). الجهد المستمر المسموح أصغر، لأن قوس التيار المستمر لا ينطفئ وحده. ووحدة المرحّل كلها قد تكون مصنّفة لقيم أصغر: نقرأ ورقة بيانات الوحدة.
ديود الحماية – דיודת חופש:
الملف حمل حثّي: يختزن طاقة في مجاله المغناطيسي، ويعارض كل تغيّر مفاجئ في تياره. عندما يفتح الترانزستور، يحاول الملف أن يُبقي التيار يمرّ، فيرفع جهد المجمع قفزة جهد (קוץ מתח השראתי) أكبر بكثير من جهد التغذية، وقد تخترق الترانزستور. ديود الحماية (דיודת חופש) الموصول على الملف بالعكس يفتح مسارا لهذا التيار، فيدور في الملف والديود حتى يتلاشى، ولا يرتفع جهد المجمع فوق VCC + 0.7 V = 5.7 V.
وحدة المرحّل الجاهزة – מודול ממסר מוכן:
في المختبر نستعمل غالبا وحدة مرحّل فيها المرحّل، الترانزستور، ديود الحماية ومصباح بيان، وأحيانا مقرن ضوئي، مع أطراف تحكّم VCC ، GND و IN وأطراف ملامسات NO ، COM و NC. في وحدات كثيرة المدخل IN فعّال عند LOW: المرحّل يعمل عندما نكتب LOW. هذا ليس قاعدة: نفحص الوحدة بدون حمل قبل أن نوصل شيئا بالملامسات.
البرنامج يبدّل حالة المرحّل عند كل ضغطة. التبديل يجب أن يحدث مرة واحدة لكل ضغطة، ولذلك نزيل ارتداد التلامس بالانتظار حتى تبقى قراءة الزرّ ثابتة 50 ms ، بواسطة millis() وبدون delay(). ونكتب مستوى «مطفأ» على الطرف قبل أن نجعله مخرجا، فلا يعمل المرحّل لحظة عند التشغيل.
const int BUTTON = 2, RELAY = 7;
const int RELAY_ON = LOW, RELAY_OFF = HIGH; // active-LOW module: check yours!
const unsigned long DEBOUNCE_MS = 50;
bool relayOn = false;
int lastReading = HIGH, stableState = HIGH, presses = 0;
unsigned long lastChange = 0;
void setup() {
Serial.begin(9600);
pinMode(BUTTON, INPUT_PULLUP);
digitalWrite(RELAY, RELAY_OFF); // set the level before enabling output
pinMode(RELAY, OUTPUT);
}
void loop() {
int reading = digitalRead(BUTTON);
if (reading != lastReading) lastChange = millis();
lastReading = reading;
if (millis() - lastChange < DEBOUNCE_MS || reading == stableState) return;
stableState = reading;
if (stableState == HIGH) return; // act on press only
relayOn = !relayOn;
presses++;
digitalWrite(RELAY, relayOn ? RELAY_ON : RELAY_OFF);
Serial.print("press "); Serial.print(presses);
Serial.print(" relay: "); Serial.println(relayOn ? "ON" : "OFF");
}press 1 relay: ON press 2 relay: OFF press 3 relay: ON press 4 relay: OFF
(أ) نحسب تيار الملف وقدرته.
(ب) هل يجوز تشغيله مباشرة من طرف Uno؟
ממסר מצב מוצק – مرحّل الحالة الصلبة (Solid-State Relay, SSR)
- عزل ضوئي (בידוד אופטי): الضوء وحده ينقل الأمر من الليد إلى المخرج، فلا اتصال كهربائي بين المتحكّم وجهد الشبكة.
- التشغيل عند المرور بالصفر (מיתוג במעבר אפס): المرحّل يوصل لحظة يكون جهد الشبكة قريبا من الصفر، فيقلّ التيار المفاجئ والتشويش. لذلك لا يصلح لتعديل عرض النبضة السريع.
- تيار التسرّب (זרם זליגה): وهو «مفتوح» يمرّر المخرج تيارا صغيرا، فقد يتوهّج حمل صغير جدا. نقطع الحمل بمفتاح عادي قبل أي عمل عليه.
- الحرارة: وهو موصل يبقى على المخرج هبوط جهد شبه ثابت، فيسخن المرحّل مع تيار الحمل، ويحتاج إلى مشتّت حراري (גוף קירור) عند التيارات الكبيرة.
حوالي 7 W من الحرارة في علبة صغيرة: نركّب المرحّل على مشتّت حراري حسب تعليمات الصانع. المرحّل الكهرومغناطيسي، بالمقابل، لا يكاد يسخن في ملامساته.
השוואה ובחירת המפסק – مقارنة واختيار المفتاح (Choosing a Switch)
| ترانزستور NPN | MOSFET | المرحّل | مرحّل الحالة الصلبة | |
|---|---|---|---|---|
| الأحمال | مستمر، مئات mA | مستمر، أمبيرات | مستمر ومتناوب | متناوب |
| العزل | لا | لا | نعم | نعم: ضوئي |
| تعديل عرض النبضة | نعم | نعم، ممتاز | لا | لا (المرور بالصفر) |
| الضياع في المفتاح | صغير في الإشباع | صغير جدا | الملف يستهلك | هبوط جهد: مشتّت |
| اهتراء وصوت | لا | لا | نعم: نقرة | لا |
| من الطرف | مقاومة قاعدة | مقاومة بوابة ومقاومة خفض | ترانزستور وديود | غالبا مباشرة |
القاعدة العملية: حمل تيار مستمر صغير: ترانزستور NPN. حمل تيار مستمر كبير أو تخفيت: MOSFET بمستوى منطقي، ومعه ديود حماية إذا كان الحمل حثّيا. حمل تيار متناوب يُبدَّل أحيانا أو يحتاج إلى عزل تامّ: المرحّل. حمل تيار متناوب يُبدَّل كثيرا: مرحّل الحالة الصلبة، لأنه لا يهترئ.
(أ) شريط LED 12 V مع تخفيت.
(ب) سخّان ماء 230 V يعمل بتحكّم تشغيل-إيقاف ويُبدَّل كل بضع ثوانٍ.
(ج) طنّان 12 V يسحب 30 mA.
ملخّص قوانين الفصل:
| القانون | الصيغة |
|---|---|
| مقاومة التوالي لليد | R = VCC − VFIF |
| نسبة التشغيل | D = tonT = N255 |
| متوسط القدرة مع تعديل عرض النبضة | Pavg = D·P |
| تيار الملف وقدرته | Icoil = VcoilRcoil , Pcoil = Vcoil2Rcoil |
قاموس المصطلحات – מילון מונחים:
| بالعربية | بالعبرية (كما تظهر في الامتحان) | English |
|---|---|---|
| الحمل | עומס | Load |
| الحد الأقصى المطلق | ערך מרבי מוחלט | Absolute maximum rating |
| دائرة القيادة | מעגל הנעה (דרייבר) | Driver |
| الأرضي المشترك | אדמה משותפת | Common ground |
| جهد الأمام | מתח קדמי | Forward voltage |
| مقاومة على التوالي | נגד טורי | Series resistor |
| الترانزستور كمفتاح | טרנזיסטור כמפסק | Transistor switch |
| القطع · الإشباع | קיטעון · רוויה | Cut-off · Saturation |
| القاعدة · المجمع · الباعث | בסיס · קולט · פולט | Base · Collector · Emitter |
| مقاومة القاعدة | נגד בסיס | Base resistor |
| مفتاح في الجهة المنخفضة | מיתוג בצד הנמוך | Low-side switch |
| ترانزستور MOSFET بمستوى منطقي | MOSFET ברמה לוגית | Logic-level MOSFET |
| البوابة · المصرف · المنبع | שער · מרזב · מקור | Gate · Drain · Source |
| جهد العتبة | מתח סף | Threshold voltage |
| مقاومة التوصيل | התנגדות בהולכה | On-resistance |
| المشتّت الحراري | גוף קירור | Heat sink |
| تعديل عرض النبضة · نسبة التشغيل | אפנון רוחב פולס · מחזור עבודה | PWM · Duty cycle |
| المرحّل (الريليه) | ממסר | Relay |
| الملف · الملامسات | סליל · מגעים | Coil · Contacts |
| مفتوح في الراحة · مغلق في الراحة | מגע פתוח במנוחה · מגע סגור במנוחה | Normally open · Normally closed |
| تصنيف الملامسات | דירוג מגעים | Contact rating |
| ديود الحماية (ديود العجلة الحرّة) | דיודת חופש | Flyback diode |
| قفزة الجهد | קוץ מתח השראתי | Inductive kick |
| مرحّل الحالة الصلبة (SSR) | ממסר מצב מוצק | Solid-state relay |
| العزل الضوئي | בידוד אופטי | Optical isolation |
| التشغيل عند المرور بالصفر | מיתוג במעבר אפס | Zero-cross switching |
| تيار التسرّب | זרם זליגה | Leakage current |
أسئلة للتمرين:
(أ) هل تيار كل طرف ضمن الموصى به؟
(ب) ما مجموع التيار، وهل هو ضمن الحد الكلّي؟