توصیه شده, مبانی الکترونیک, مقاله های سیسوگ

سوئیچ دیبانسینگ یا نویزگیری کلید

سوئیچ دیبانسینگ

زمانی که کلیدی را فشار می‌دهید برای تغییر وضعیت آن نیاز به کمی زمان است؛ به زمانی که دست را روی کلید فشار می‌دهید تا سیگنال به کلید برسد پریود تایم می‌گویند. حالا در برخی پروژه‌ها این زمان ممکن است دردسرساز شود. برای مثال، شما فرض کنید یک کی پد دارید و می‌خواهید زمانی که کلید # زده شده اتفاقی بیفتد ممکن در حین فشاردادن کلید درست زده نشود یا سیگنال به میکروکنترلر شما ارسال نشود و موجب مشکلاتی در پروژه شود، به بهینه‌سازی این کار دیبانسینگ هست.

شما دیباسینگ را هم به شکل نرم‌افزاری و هم به شکل سخت‌افزاری می‌توانید پیاده کنید. در ابتدا با استفاده از فیلتر بالاگذر نحوه پیاده‌سازی این مدار را تحلیل می‌کنیم. قبل از آن لازم است راجع به چند مورد صحبت کنیم.

مقاومت  pullup

این مقاومت به کلید و 5 ولت میکرو متصل می شود. فرض کنید کلید شما در حالت پیش فرض یک است. با وجود این مقاومت این اتفاق می افتد و در صورتی که کلید فشار داده شود، خروجی صفر می شود. برای جلوگیری از اتصال کوتاه شدن در مدار از این مقاومت ها استفاده می کنند، معمولا این مقاومت بین 4 تا 10 کیلو انتخاب می شود.

مقاومت  pulldown

این مقاومت بین کلید و زمین قرار می‌گیرد. این مقاومت هم به‌صورت داخلی از میکروکنترلر قابل‌پیاده‌سازی است. هدف استفاده از این مقاومت پیشگیری از ولتاژ بالا

روش‌های دیباسینگ سخت‌افزاری

مدار با گیت  NAND

در اینجا ما دو تا گیت NOT را با هم سری می‌کنیم. نیاز به یک مقاومت بین کلید و 5 ولت هم داریم که مقاومت پول آپ ما است اینجا شماتیک مدار را می‌توانید ببینید.

مدار با گیت NAND

مدار با گیت NAND

 

حالا نمونه طراحی شده این مدار در بردبورد و شکل خروجی سیگنال آن در اسیلوسکوپ را می‌بینم.

شکل خروجی سیگنال مدار NANDاگر دقت کنید سیگنال خروجی یک پالس مربعی پیدا کرده و دیگر نویزهای ناشی از فشاردادن مکرر کلید را نمی‌بینم.

مدار فیلتر پایین گذر

می‌توانیم از مدار RC برای کنترل این مدار استفاده کنیم؛ فقط نیاز داریم از یک گیت not به‌عنوان خروجی استفاده کنیم. برای اینکه خروجی سیگنال کلید را اصلاح کند به شماتیک زیر دقت کنید.

مدار فیلتر بالاگذردر مدار بالا هر زمان کلید صفر شود گیت آن را یک می‌کند و برعکس این کار موجب می‌شود سیگنال خروجی ما دچار اعوجاج نشود.

استفاده از آی سی

استفاده از ای سی برای دیبایسینگ سخت افزاریبرخی آی‌سی‌ها که در بازار هستند این امکان می‌دهند بدون طراحی مدار خاصی بتوانیم سوئیچ خود را کنترل و از نویزهای احتمالی جلوگیری کنیم.

دیبانسینگ نرم‌افزاری

با استفاده از زبان‌های برنامه‌نویسی و کمی تنظیمات شما می‌توانید دیبانسینگ را پیاده‌سازی کنید. ما در اینجا از آردوینو یونو استفاده می‌کنیم و برای این کار از کتابخانه آن استفاده می‌کنیم. در ابتدا طبق شماتیک زیر پیش برید.

این نمونه کد بدون دیبانسینگ

در کد بالا اگر کلید را چند بار فشار دهیم ممکن است خروجی سریال تغییر کند و پیغام اشتباه به ما نمایش داده بشود. حالا برای اصلاح این مشکل از کد زیر استفاده می‌کنیم. در این کد از کتابخانه آن استفاده شده است.

نمونه کد با دیبانسینگ

در کد بالا که می‌توانید درexampleهای کتابخانه دیبانسینگ آن را ببینید. استفاده از متد update در تابع pullbottons  موجب می‌شود که خروجی پین موردنظر ما درصورتی‌که یک باشد صفر شود و برعکس در این حالت true برمی‌گرداند. این متد از به‌وجودآمدن خطا در حین زدن کلید پیشگیری می‌کند. همچنین، inputpullup موجب می‌شود ما از واحد داخلی میکروکنترلر برای پول آپ استفاده کنیم.

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

2 دیدگاه در “سوئیچ دیبانسینگ یا نویزگیری کلید

  1. Avatar for حمید حمید گفت:

    لغت دیبانس یا debounce صحیح هست

  2. Avatar for مصطفی مصطفی گفت:

    Debounce?=دبایس؟
    فیلتر پایین گذر یا بالاگذر؟

دیدگاهتان را بنویسید

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