مقاومت Pull up

مقاومت Pull up

مقدمه

مقاومت Pull up  توی الکترونیک یه چیز خیلی عمومی و معمولی هست  به خصوص وقتی که از میکروکنترلرها یا قطعات منطقی دیجیتال استفاده میکنیم. ما میخوایم توی این آموزش بگیم که کی و کجا باید از این مقاومت استفاده کنیم. در ضمن یه سری محاسبات کوچک هم انجام میدیم تا بفهمیم که چرا اصلا این مقاومت Pull up اینقدر مهمه. البته من پیشنهاد میکنم قبل از خوندن این مطلب، مطالب زیر رو هم حتما بخونید:

مقاومت چیست؟ بخش اول     
 مقاومت چیست؟ بخش دوم 
ولتاژ، جریان ، مقاومت و قانون اهم
سطح منطقی در الکترونیک

مقاومت Pull up چیست؟

فرض کنید یه میکروکنترلر داریم و یکی از پایه هاش رو به صورت ورودی تعریف کردیم. اگه هیچی به این پایه وصل نباشه و کد شما جوری باشه که وضعیت این پایه رو بخونه. حالا موقعی میخونیم این پایه 1 هست یا 0 ؟  معلوم نیست. ممکنه یه لحظه یک باشه ممکنه یه لحظه صفر. برای این که از این وضعیت ها جلوگیری کنیم از مقاومت Pull up یا Pull down استفاده میکنیم تا مطمین بشیم که یا صفره اون پایه و یا یک. ضمن این که جریان بسیار کمی هم این مقاومت مصرف میکنه. 

توی این نوشته ما بیشتر روی مقاومت Pull up تمرکز میکنیم چون معمول تر از مقاومت Pull down هست. البته مفاهیمشون کاملا یکسانه و تنها تفاوتشون اینه که مقاومت Pull up وصل میشه به VCC ( معمولا یا 5 ولت هست و یا 3.3 ولت) و مقاومت Pull down وصل میشه به GND ( زمین)

مقاومت های Pull up اغلب با سوییچ ها و کلیدها استفاده میشن. شکل زیر رو ببینید:

نمونه ای از کاربرد مقاومت Pull up در میکروکنترلر

با مقاومت Pull up موقعی کلید رو فشار نداده باشیم  پایه ورودی در وضعیت منطقی 1 یعنی سطح ولتاژ VCC که 5 ولت یا 3.3 ولت میتونه باشه قرار میگیره. به عبارت دیگه یه مقدار جریان بین پایه VCC و پایه ورودی جا به جا میشه بنابراین پایه ورودی وقتی کلید فشار داده نشده مقداری نزدیک به VCC رو میخونه اما وقتی که کلید رو فشار بدیم مستقیم وصل میشه به زمین و یه مقدار جریان جاری میشه از طریق مقاومت به زمین و پایه ورودی مقدار GND رو میخونه. حتما یادتون باشه که اگه این مقاومت نباشه VCC مستقیم به GND وصل میشه و باعث میشه مدارتون اتصال کوتاه بشه و بعدش چه اتفاقای بدی میتونه بیفته. 

مقدار مقاومت Pull up چقدر باید باشد؟

اگه بخوایم یه جواب کوتاه و سریع بگیم اینه که مقدار مقاومت باید یه چیزی در حدود 10KΩ باشه. ولی اگه می خواید خیلی کامل بدونید مقدارش چقدر باید باشه پس ادامه مطلب رو بخونید:

نکته:
اگر مقدار مقاومت انتخاب شده کوچک باشد، چون مقدار زیادی جریان جاری میشود به آن مقاومت Pull up قوی ( Strong Pull up ) و اگر مقدار مقاومت بزرگ باشد چون جریان کمی جاری میشود به آن مقاوم Pull up ضعیف (weak pull up) گفته میشود.

 شکل زیر رو که در زیر اومده ببینید چون بعدا یه خورده باهاش کار داریم. توی این شکل مقاومت R1 مقاومت Pull up و مقاومت R2 امپدانس داخلی یه پین هست.

مقاومت Pull up و امپدانس داخلی یک پین

 

برای انتخاب یه مقاومت Pull up مناسب باید دو تا شرط زیر ارضا بشن:

  1. موقعی کلید فشرده شد پایه ورودی مستقیما به زمین وصل میشه. مقدار مقاومت R1 تعیین میکنه که چه جریانی بین VCC و GND از طریق کلید جاری میشه .
  2. موقعی کلید فشار داده نشده پایه ورودی در سطح منطقی 1 قرار میگیره. مقدار مقاومت Pull up ، ولتاژی که روی پایه ورودی میفته رو کنترل میکنه.

برای شرط 1 ما نباید از یه مقاومت خیلی کوچک استفاده کنیم، مقاومت خیلی کوچیک باعث میشه توان بیشتری مصرف بشه وقتی کلید رو میزنیم. شما معمولا به یه مقاومت با اندازه بزرگ احتیاج دارید(مثلا 10KΩ). همچنین نمیتونیم یه مقاومت خیلی بزرگ هم انتخاب کنیم چون باعث بشه ولتاژ روی پایه ورودی اونقدر کم بشه که نزدیک به صفر برسه و در واقع در تضاد با شرط 2 باشه. مثلا یه مقاومت 4MΩ  برای Pull up خوب نیست. چون باعث میشه اصلا ولتاژی روی پایه ورودی نیفته موقعی کلید بازه.

قانون عمومی برای شرط 2 اینه که مقدار مقاومت Pull up ای که انتخاب میکنیم (R1) باید کمتر از 1/10 امپدانس داخلی پایه مورد نظر ما باشه. امپدانس داخلی پایه ها توی میکروکنترلرهای مختلف چیزی حدود 100 کیلو تا 1 مگا اهم هست.
وقتی کلیدی رو فشار ندادیم یه جریان خیلی کمی از VCC به سمت پایه ورودی از طریق مقاومت R1 جاری میشه. مقاومت R1 که Pull up هست و مقاومت R2 که امپدانس داخلی پایه مورد نظر ما هست تشکیل یه مقسم ولتاژ میدن و ولتاژی که روی پایه ایجاد میشه باید به اندازه کافی بزرگ باشه که پایه مقدار سطح ولتاژ 1 رو بخونه.

مثلا اگه مقاومت Pull up که انتخاب میکنید مقدارش 1M اهم باشه و امپدانس داخلی پایه مورد نظر ما هم 1M اهم باشه. در این حالت طبق فرمول مقسم ولتاژ، ولتاژی حدود 1/2 ولتاژ  VCC میفته روی پایه ورودی که معلوم نیست پایه مورد نظر ما بتونه اون رو به صورت سطح منطقی 1 تشخیص بده. مثلا اگه میکرو با 5 ولت کار کنه آیا 2.5 ولت رو سطح منطقی 1 تشخیص میده یا سطح منطقی 0 ؟ ولی اگه ما بیاییم و یه مقاومت 10 کیلو یا 100 کیلو بذاریم دیگه این مشکل رو نداریم.

چون مقاومت Pull up خیلی کاربرد داره اکثر میکروکنترلرها مثل Atmega328  که توی بردهای arduino هم استفاده میشه خودشون یه Pull up داخلی دارن که میتونه فعال یا غیر فعال بشه. برای این که این مقاومت Pull up داخلی رو توی پایه های آردوینو فعال کنید میتونید از کد زیر توی تابع Setup استفاده کنید:

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

   

نکته دیگه ای  که باید به اون اشاره کنیم اینه که هر چه مقاومت پولاپ بزرگتر باشه پین مورد نظر به تغییرات ولتاژ کندتر پاسخ می ده. و این بخاطر اینه که سیستمی که کار تغذیه پین ورودی را به عهده داره لزوما یک خازنه که با یک مقاومت Pull up کوپل شده است بنابراین تشکیل یک فیلتر RC می ده و فیلتر RC هم نیاز به یک زمان دارد تا شارژ و دشارژ انجام بشه. اگر شما یک تغییر سیگنال پرسرعت(همانند USB) دارید یک مقاومت پولاپ بزرگ می تونه سرعت رو در تغییر حالت پین محدود بسازه. و به این دلیله که شما اغلب یک مقاومت 1 تا 4.7کیلواُهم را روی خطوط سیگنال USB مشاهده می کنید.

محاسبات مقاومت Pull up

شکل اول صفحه رو یه بار دیگه در نظر بگیرید و به مساله ی زیر فک کنید:

مساله:حالا فرض کنید توی مدار بالا وقتی کلید فشار داده میشه میخوایم جریان جاری شده رو به 1mA محدود کنیم. اگه مقدار VCC برابر 5 ولت باشد. مقدار مقاومت Pull up چقدر است؟

کار زیادی سختی نیست. باید از قانون اهم استفاده کنیم.

قانون اهم

 برای مدار بالا این قانون میشه:

قانون اهم در این مدار

الان با یه طرفین وسطین ساده خیلی راحت میتونیم مقدار مقاومت R1 رو محاسبه کنیم:

مقدار مقاومت R1

فقط توجه کنید که همه واحد ها باید قبلش به اهم و ولت و آمپر تبدیل بشن که در نهایت مقدار مقاومت میشه 5KΩ 

اینم پایان یکی دیگه از جلسات ما. اگه دوست دارید از مطالب جدید ما مطلع بشید و یا مطالبی رو بخونید که توی سایت منتشر نمیشن میتونید ما رو در تلگرام و یا اینستاگرام دنبال کنید:

 

نوشتن نظر

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Optionally add an image (JPEG only)