الصنّاع العرب

مقاومات الرفع (Pull-up Resistors)

مقدمة

يكثر استخدام مقاومات الرفع عند التعامل مع المتحكمات الدقيقة (microcontrollers) (MCUs) أو أي من أجهزة المنطق الرقمي الأخرى. في هذا الدرس سنشرح متى وأين نستخدم مقاومات الرفع، ثم سنقوم بإجراء بعض الحسابات البسيطة لتوضيح مدى أهمّية مقاومات الرفع.

 مواضيع مقترحة للقراءة

ما هي مقاومات الرفع؟

لنفترض أن لديك متحكم دقيق ذو منفذ مُهيأ كطرف دخل. إذا لم يتم توصيل هذا المنفذ بأي شيء وفي نفس الوقت قام برنامجك بقراءة حالة هذا المنفذ، فهل سيقرأ أنه في حالة مرتفعة (high) (أي أنه متصل مع مصدر الجهد (VCC)) أم سيقرأ أنه في حالة منخفضة (low) (أي أنه متصل مع الأرضي (ground))؟ من الصعب تخمين هذا. هذه الحالة يُطلق عليها اسم التعويم (floating). لتجنب حدوث هذه الحالة الغير محددة نلجأ إلى استخدام مقاومات الرفع أو مقاومات الخفض (pull-down resistors) لضمان أن هذا الطرف إما في حالة مرتفعة أو في حالة منخفضة بينما يتم استخدام قدر صغير من التيار.

للتبسيط سنقوم بالتركيز على مقاومات الرفع لأنها أكثر استخداماً من مقاومات الخفض. سواء كان المقاوم مقاوم رفع أو خفض فإن نفس القوانين تنطبق في الحالتين، والفرق الوحيد هو أن مقاوم الرفع يتم توصيله بالجهد العالي (عادة ما يكون 3.3V أو 5V ويشار إليه بـ VCC) بينما يتم توصيل مقاوم الخفض بالأرضي.

في الغالب يتم استخدام مقاومات الرفع مع أزرار (buttons) ومفاتيح (switches).

بوجود مقاوم رفع يقرأ منفذ الدخل (input pin) حالة مرتفعة عند عدم ضغط الزر. بعبارة أخرى يمكننا القول أن هناك كمية ضئيلة من التيار تسري بين مصدر الجهد ومنفذ الدخل (وليس إلى الأرضي) وبالتالي يقرأ منفذ الدخل قيمة قريبة من قيمة مصدر الجهد (VCC). وعندما يتم ضغط الزر يقوم بتوصيل منفذ الدخل مباشرة بالأرضي، أي أن التيار يسري خلال المقاوم إلى الأرضي، وبالتالي يقرأ منفذ الدخل حالة منخفضة. تذكر دوماً أنه بدون وجود مقاوم الرفع فسيقوم الزر بتوصيل مصدر الجهد إلى الأرضي مباشرة، وهذا أمر سيء يُطلق عليه القصر (short).

إذن ما هي قيمة المقاوم الذي يجب استخدامه؟

الإجابة السهلة والقصيرة لهذا السؤال هي أنه يجب استخدام مقاوم رفع تتراوح قيمته حول 10KΩ.

يُطلق على مقاوم الرفع منخفض القيمة (يسبب سريان تيار أكبر) اسم مقاوم رفع قوي. بينما مقاوم الخفض مرتفع القيمة (يسبب سريان تيار أقل) يُطلق عليه مقاوم رفع ضعيف.

لا بد أن يتم اختيار قيمة مقاوم الرفع بناء على شرطين أساسيين:

  1. عندما يتم ضغط الزر يقرأ منفذ الدخل حالة منخفضة. وتتحكم قيمة المقاوم R1 في كمية التيار الذي يسري من مصدر الجهد خلال الزر ومنه إلى الأرضي.
  2. أثناء عدم ضغط الزر يقرأ منفذ الدخل حالة مرتفعة. وتتحكم قيمة مقاوم الرفع في الجهد الواقع على منفذ الدخل.

لتحقيق الشرط الأول يجب عدم استخدام مقاوم بقيمة منخفضة للغاية. فكلما قلت المقاومة زادت القدرة المستخدمة عند ضغط الزر. لذلك نحتاج لاستخدام مقاوم بقيمة كبيرة (10KΩ)، ولكن يجب اختيار تلك القيمة بدقة بحيث لا يجب أن تكون كبيرة للغاية حتى لا يحدث تعارض مع الشرط الثاني. فمثلاً إذا استخدمنا مقاوم بقيمة 4MΩ فإنه سيعمل كمقاوم رفع ولكن مقاومته كبيرة للغاية (أو ضعيفة) لدرجة قد تجعله لا يقوم بوظيفته بشكل صحيح دائماً.

القاعدة الأساسية لتحقيق الشرط الثاني هي استخدام مقاوم رفع (R1) قيمته أقل بعشر مرات من قيمة مقاومة الدخل (R2) الخاصة بمنفذ الدخل. منفذ الدخل الخاص بأي متحكم دقيق له مقاومة تتراوح قيمتها بين 100k و 1MΩ. عندما لا يتم الضغط على المفتاح تمر كمية ضئيلة للغاية من التيار من مصدر الجهد خلال R1 ومنه إلى منفذ الدخل. يتم تجزيئ التيار بين كل من مقاوم الرفع R1 و مقاوم منفذ الدخل R2، وهذا الجهد يجب أن يكون كبيراً بدرجة تكفي لأن يقرأ منفذ الدخل حالة مرتفعة.

على سبيل المثال، إذا قمت باستخدام مقاوم بقيمة 1MΩ كمقاوم رفع R1 وكانت مقاومة منفذ الدخل أيضاً بحدود 1MΩ (وهما يشكلان معاً مجزئ جهد) فستكون قيمة الجهد المطبق على منفذ الجهد بحدود نصف قيمة جهد المصدر VCC، وفي هذه الحالة يحدث خلل. فبالنسبة لنظام يعمل على جهد 5V، كيف يقرأ المتحكم الدقيق جهداً بقيمة 2.5V؟ هل هو في حالة مرتفعة أم منخفضة؟ هذا الأمر غير محسوم بالنسبة للمتحكم الدقيق وربما يقرأ حالة مرتفعة أو حالة منخفضة. حل هذه المشكلة يتمثل في استخدام مقاوم بقيمة بين 10KΩ و 100KΩ.

بسبب شيوع الحاجة لاستخدام مقاومات الرفع تحتوي الكثير من المتحكمات الدقيقة –مثل المتحكم الدقيق ATmega328 المستخدم في بطاقات أردوينو- على مقاومات رفع داخلية يمكن تفعيلها أو تعطيلها. لتفعيل مقاوم الرفع على بطاقة أردوينو يمكن استخدام السطر البرمجي التالي في دالة ()setup:

pinMode(5, INPUT_PULLUP); // Enable internal pull-up resistor on pin 5

هناك أمر آخر يجب توضيحه، وهو أنه كلما زادت قيمة مقاوم الرفع كلما زاد بطء استجابة منفذ الدخل لتغيرات الجهد. وهذا يحدث لأن النظام الذي يغذي منفذ الدخل هو في الأساس عبارة عن مكثف (capacitor) متصل بمقاوم الرفع وبالتالي يتكون مرشح RC، ومرشحات RC تستغرق بعض الوقت للشحن والتفريغ. إذا كانت لديك إشارة سريعة التغير (مثل USB) فإن استخدام مقاوم رفع ذو قيمة كبيرة يمكن أن يؤدي إلى تقييد سرعة تغيير حالة المنفذ. لهذا السبب غالباً ما نجد مقاومات بقيمة 1KΩ إلى 4.7KΩ في خطوط إشارات USB.

حساب قيمة مقاوم الرفع

لنفترض أنك تريد تحديد التيار الذي يمر عند ضغط الزر الموجود بالدائرة بحدود 1mA، وجهد المصدر VCC= 5V. ما هي قيمة المقاوم الذي يجب استخدامه لتحقيق ذلك؟

حساب قيمة مقاوم الرفع الذي يجب استخدامه أمر سهل للغاية، وذلك باستخدام قانون أوم.

في حالتنا هذه نجعل قانون أوم بالصورة الآتية:

جهد المصدر= التيار المار خلال R1 مضروباً في R1

بإعادة ترتيب المعادلة السابقة اعتماداً على قواعد الجبر يمكننا حساب قيمة المقاوم:

تذكر أنه يجب أن تقوم بتحويل جميع الوحدات إلى فولت، أمبير، أوم قبل إجراء الحسابات (مثل 1 ملي أمبير = 0.001 أمبير). الحل الذي توصلنا عليه هو مقاوم بقيمة 5KΩ.

المضي قدماً

الآن أصبحت لديك معرفة بمقاومات الرفع وكيفية عملها. لتعلم المزيد عن المكونات الإلكترونية وتطبيقاتها قم بالاطلاع على هذه الدروس:

تمّت ترجمة هذه المادّة من موقع sparkfun تحت تصريح كرييتف كومّونز 3 (Creative Commons 3.0)

عبدالله خيري

أضف تعليق

اترك رد

تابعنا