استفاده از مقاومتهای Pull-up در مدارات میکروکنترلری بسیار رایج است و شاید شما هم از این مقاومتها در مدارات خود استفاده میکنید. در این پست نگاهی تخصصی تر به دلایل استفاده از این مقاومتها و نحوهی محاسبه آنها میاندازیم. بیشترین کاربرد این مقاومتها در زمانی است که پایهای از میکروکنترلر به عنوان ورودی تعریف شود، در این حالت اگر این پایه به تغذیه یا زمین متصل نباشد، اگر مقدار این پایه را در برنامه بخوانیم، این پایه چه مقداری خواهد داشت؟ یک یا صفر؟
به این حالت اصطلاحا حالت float یا شناور میگویند و و نمیتوان در مورد وضعیت منظقی پایه در این حالت اظهار نظر قطعی کرد، یعنی ممکن است پایه در وضعیت یک منطقی باشد یا صفر. علاوه بر عدم مشخص بودن وضعیت منطقی یک پایه در این حالت، امکان ورود نویز به مدارات داخلی میکروکنترلر نیز از این طریق وجود دارد. برای جلوگیری از این شرایط از مقاومتهای Pull-up یا بالاکش یا مقاومتهای Pull-down یا پایین کش استفاده میشود. مقاومتهای بالاکش بین تغذیه مدار و پایه میکروکنترلر وصل میشوند و مقاومتهای پایین کش بین پایه میکروکنترلر و زمین وصل میشوند. با وجود شباهت هر دو، استفاده از مقاومتهای بالاکش در مدارات رایج تر است.
در شکل بالا، در حالتی که کلید در وضعیت باز قرار دارد، جریان کمی (با توجه به مقاومت ورودی پایه میکروکنترلر) از مقاومت به درون پایه میکروکنترلر وارد میشود و وضعیت منطقی این پایه در حالت یک قرار میگیرد. با فشرده شدن کلید، جریان مقاومت از طریق کلید به زمین منتقل میشود و وضعیت منطقی پایه در حالت صفر قرار میگیرد.
- نکته 1 : از مقاومت برای جلوگیری از اتصال کوتاه شدن تغذیه به زمین هنگام متصل وصل شدن کلید استفاده میشود، در غیر اینصورت میتوان پایه میکروکنترلر را مستقیما به تغذیه متصل نمود.
- نکته 2 : استفاده از مقاومت بالاکش به دلیل افزایش جریان، مقدار توان مصرفی مدار را کمی افزایش میدهند.
- نکته 3 : معمولا در میکروکنترلرها مقاومت بالاکش در همهی پایهها یا برخی پایهها به صورت داخلی قرار داده شده است و با نوشتن مقدار مناسب در رجیسترهای مربوطه، در وضعیتی که پایه به عنوان ورودی تعریف شده است، این مقاومت بالاکش فعال میشود. در برخی کاربردها لازم است علاوه بر مقاومت بالاکش داخلی، برای افزایش مصونیت پایههای میکروکنترلر در برابر نویزهای محیطی، مقاومت بالاکش به صورت خارجی نیز قرار داده شود.
محاسبه مقدار مقاومت بالاکش
برای محاسبه مقدار مقاومت بالاکش باید دو نکته را مد نظر قرار داد :
- زمانی که کلید فشرده میشود، مقاومت میزان جریان کشی از منبع تغذیه را با توجه به قرار گیری ولتاژ تغذیه در دو سر آن تعیین میکند.
- در زمان باز بودن کلید، مقاومت بالاکش ولتاژ روی پایه میکروکنترلر را تعیین میکند.
با در نظر گرفتن مورد اول، استفاده از مقاومتهای کوچک با توجه به افزایش جریان و توان مصرفی مطلوب نیست و باید سعی شود از مقاومتهای بزرگ استفاده شود. اما افزایش مقدار مقاومت نباید با مورد دوم تضاد پیدا کند.
طبق مورد دوم، مقاومت نباید آنقدر بزرگ باشد تا ولتاژ مورد نیاز برای پایهی میکروکنترلر برای تشخیص سطح منطقی یک کافی نباشد. در واقع با توجه به شکل زیر، در ورودی پایه میکروکنترلر یک مقاومت با مقدار 100K اهم تا 1M اهم وجود دارد (R2) که ولتاژ تغذیه بر روی این دو مقاومت تقسیم میشود. اگر مقدار مقاومت بالاکش (R1) بزرگتر از حد مجاز باشد، ولتاژ روی پایه میکروکنترلر طبق رابطه تقسیم ولتاژ کمتر از حد مورد نیاز میکروکنترلر برای تشخیص سطح منطقی یک میشود و عملا وضعیت پایه مشابه حالت شناور میشود.
معمولا برای رعایت این نکته باید سعی شود که مقاومت بالاکش برای ایجاد سطح ولتاژ کافی برای ورودی از 1/10 مقاومت ورودی پایه میکروکنترلر (R2) بزرگتر نباشد. علاوه ملاحظات بالا، از آنجایی که مدار متصل شده به پایه ورودی میکروکنترلر معمولا دارای ظرفیت خازنی میباشد، این خازن با مقاومت بالاکش تشکیل یک فیلتر RC داده و همان طور که میدانیم در حالت تحلیل در حوزه زمان، مدت زمانی طول میکشد تا خازن به طور کامل شارژ و دشارژ شود و این مدت زمان با افزایش مقدار مقاومت، افزایش پیدا خواهد کرد، این مسئله باعش کاهش سرعت پاسخ میکروکنترلر به تغییر در ورودیها میشود. به همین دلیل در ارتباط USB معمولا از مقاومتهای بالاکش 1K اهم تا حداکثر 4.7K اهم استفاده میشود.
مقدار مقاومت بالاکش برای جریانی مشخص طبق قانون اهم، از تقسیم ولتاژ تغذیه بر جریانی که میخواهیم از تغذیه کشیده شود (هنگام اتصال کلید) به دست میآید. به عنوان مثال با در نظر گرفتن تغذیه 5v و جریان 1mA:
منابع :
learn.sparkfun.com