چطور نویزهای حاصل از تغییر حالت کلید ( switch bounce ) را حذف کنیم

نویزهای حاصل از تغییر حالت کلید

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

کاربر تصور می کند این اتصال به یکباره رخ داده است در صورتیکه بین فشرده شدن کلید و اتصال پایدار کلید در بازه زمانی یک میلی ثانیه معمولا  10 تا 100 مرتبه قطع و وصل صورت گرفته است. همین قطع و وصل در هنگام رهاسازی کلید یا سوئیچ نیز رخ می دهد.

نویزهای حاصل از تغییر حالت کلید 1

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

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

انواع کلید

حذف نویزهای حاصل از تغییر حالت کلید

معمولا از روش های زیر برای حذف نویز کلید استفاده می شود.

حذف به صورت سخت افزاری

حذف نویز با مدار RC

ابتدا رفتار سوئیچها را بدون حذف نویز با آی سی HCF4017BE بررسی می کنیم. این آی سی در پایه 14 سیگنال کلاک را دریافت می کند. و بعد از دریافت کلاک،led  در پایه Q1 روشن می شود.

هنگامی که آی سی سیگنال کلاک بعدی را دریافت می کند، آی سی Q1 را خاموش و  Q2 را روشن می کند.
این کار ادامه پیدا می کند تا به Q8 ( پایه 9) می رسد. پایه 9 به پایه 15 که پایه ریست است متصل شده است و بعد از آن شمارش از پایه Q0  شروع می کند.

مدار HCF4017BE

ابتدا بدون مهار نویز، مدار را می بندیم.

کلید - مقاومت

مدار را به دو صورت A و B  می توان بست.

تصاویری از اسیلوسکوپ با کلیدهای مختلف:

شکل موج نویزهای حاصل از تغییر حالت کلید

از شکل موج ها اینطور به نظر می رسد که یک کلید چندین بار فشرده شده است در صورتیکه فقط یکبار کلید فشرده شده است. 

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

هنگامی که خازن اضافه می شود در واقع یک مدار RCخواهیم داشت. 

مدار RC


خازن مدار RC تغییرات سریع ناشی از سوئیچینگ را فیلتر می کند و نویزهای حاصل از تغییر حالت کلید را حذف می کند.
با اضافه کردن یک دیود سرعت حذف پرشها و نویزها افزایش می یابد. دیود مطابق تصویر نشان داده شده به مدار اضافه می گردد، بنابراین زمان شارژ خازن کاهش می یابد.

مدار RC با دیود

شکل موجهای اسیلوسکوپ با مدار قبلی متفاوت است. مدار RC نویز را فیلتر کرده است.

شکل موجها بعد از حذف نویزهای حاصل از تغییر حالت کلید

ویدئو تاثبر اضافه کردن خازن 0/1 میکرو فاراد به مدار را نشان می دهد.

شکل موج سوئیچ C با مدار بدون خازن B و با خازن D به صورت زیر است.

شکل موج سوئیچ C

حذف نویز با فلیپ فلاپ

در روش حذف نویز سخت افزاری، از یک فلیپ فلاپ S-Rبرای حذف نویزهای حاصل از تغییر حالت کلید استفاده می شود.

قطعات مورد نیاز:

دیاگرام مدار:

مدار فلیپ فلاپ

همانگونه که در دیاگرام مشخص است دو گیت nand( آی سی 74HC00) یک فلیپ فلاپ SR را تشکیل داده اند. اگر کلید کلنگی در طرف A   باشد خروجی لاجیک” یک ” است.مقاومتهای استفاده شده مقاومتهای pull-up   هستند. هنگامی که کلید در حال حرکت و تولید نویز است، فلیپ فلاپ خروجی را ثابت نگه می دارد.

آی سی حذف کننده نویز کلید

از جمله آی سی های حذف نویز موجود MAX6816  و MC14490  و LS118  را می توان نام برد.

دیاگرام مدار زیر حذف نویز با استفاده از آی سی MAX6816   را نشان می دهد.

مدار حذف نویز حاصل از تغییر حالت کلید با آی سی

حذف نویز به صورت نرم افزاری

هنگام کار با میکرو کنترلرها می توان به گونه ای دیگر با نویزها برخورد کرد تا در هزینه و فضای سخت افزاری صرفه جویی شود.
بعضی از برنامه نویسان خیلی به نویزهای حاصل از تغییر حالت کلید اهمیت نمی دهند و فقط یک تاخیر 50 میلی ثانیه ای بعد از اولین نویز اضافه می کنند. در این حالت میکروکنترلر 50 میلی ثانیه به خاطر نویز متوقف می شود و سپس برنامه ادامه پیدا می کند. این روش، روش مناسبی نیست چرا که با انتظار در تاخیر، میکرو را مشغول نگه داشته است.

راه دیگر، استفاده از interrupt (وقفه) برای گذر از نویز تغییر وضعیت کلید است. مراقب باشید interrupt  ممکن است در دو لبه بالایی و پایینی عمل کند. در مورد استفاده از این روش نظرات مختلفی وجود دارد.

کد نرم افزاری ساده حذف نویز در آردوینو

کد آردوینو

این کد در Arduino IDE نوشته شده است.

برنامه زیر تغییر وضعیت دو LED را با یک میکروکنترلر PIC نشان می دهد.

کد PIC


این برنامه در MPLAB X و با کامپایلر  XC8 نوشته شده است.میکروکنترلر  PIC 16F628A است و از یک اسیلاتور داخلی 4MHX استفاده شده است. 

مدار میکروکنترلر بدون حذف نویزهای کلیذ:

مدار با حذف نرم افزاری نویز:

مقالات مشابه

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

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

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات