منو

بازر (Buzzer)

مقدمه

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

بازر چیست؟

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

بازر

انواع بازر

بازرها از نظر ساختار و عملکرد به دو دسته اصلی تقسیم می‌شوند:

1. بازر اکتیو (Active Buzzer)

  • ویژگی: داخلی آن دارای نوسان‌ساز است و با اعمال ولتاژ مستقیم (DC) صدا تولید می‌کند.
  • نحوه استفاده: فقط کافی است آن را به ولتاژ وصل کنید؛ صدا تولید می‌کند.
  • مزیت: راه‌اندازی بسیار ساده.
  • عیب: امکان کنترل فرکانس یا نوع صدا وجود ندارد.

2. بازر پسیو (Passive Buzzer)

  • ویژگی: داخلی آن نوسان‌ساز ندارد و برای تولید صدا نیاز به سیگنال PWM یا مربعی دارد.
  • نحوه استفاده: باید با میکروکنترلر یا آی‌سی تایمر فرکانس خاصی تولید شود.
  • مزیت: می‌توان نوع صدا، فرکانس و حتی آهنگ تولید کرد.
  • عیب: برنامه‌نویسی پیچیده‌تر نسبت به نوع اکتیو.

کاربردهای بازر

  • اعلام هشدار در سیستم‌های امنیتی
  • صدای دکمه فشرده‌شده در دستگاه‌های خانگی
  • آلارم پایان فرآیند در دستگاه‌های صنعتی
  • هشدار حرارت بالا یا پایین آمدن ولتاژ
  • تایمر و کرنومترها
  • اعلام وضعیت در پروژه‌های میکروکنترلری

ساختار داخلی بازر

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

معرفی کتابخانه بازر

در این بخش، کتابخانه‌ای که برای کنترل بازر نوشته‌ شده به صورت کامل بررسی و توضیح داده می‌شود. این کتابخانه قابلیت تولید صدای متناوب با تعداد تکرار دلخواه و تأخیر زمانی مشخص را دارد و برای بازرهای اکتیو بسیار مناسب است.

فایل هدر کتابخانه

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

تعریف پایه‌ها

  • BUZ_DDR: رجیستر تعیین جهت پورت (خروجی یا ورودی).
  • BUZ_PIN: پایه‌ای که بازر به آن متصل شده.
  • BUZ_PORT: رجیستر برای کنترل وضعیت پایه (روشن/خاموش).
  • BUZ_PINMASK: ایجاد ماسک بیت برای کنترل دقیق پایه.

ماکروهای کنترل بازر

  • BUZ_ON: روشن کردن بازر
  • BUZ_OFF: خاموش کردن بازر
  • BUZ_STAT: بررسی وضعیت فعلی پایه بازر

متغیرهای داخلی

buzer_counter: شمارنده زمان روشن/خاموش بودن بازر

buzer_delay: تأخیر بین روشن و خاموش شدن

buzer_repeat: تعداد دفعاتی که بازر باید صدا تولید کند

راه‌اندازی اولیه بازر

این تابع پایه متصل به بازر را به خروجی تبدیل می‌کند و مطمئن می‌شود که بازر در ابتدا خاموش باشد.

تابع هندل یا مدیریت بازر

این تابع باید در حلقه اصلی یا تایمر فراخوانی شود. این تابع وظیفه دارد روشن و خاموش شدن متناوب بازر را بر اساس delay و repeat مدیریت کند.

تابع تولید صدا

با فراخوانی این تابع، بازر شروع به کار می‌کند. برای مثال:

یعنی بازر با تأخیر 100 میلی ثانیه روشن و خاموش شده و این چرخه را 3 بار تکرار کند.

بررسی وضعیت اشغال بودن بازر

این تابع بررسی می‌کند که آیا بازر هنوز در حال فعالیت است یا خیر. اگر هنوز صدا می‌دهد یا دفعات باقی مانده دارد، مقدار 1 بازمی‌گرداند.

مثال کاربردی استفاده از کتابخانه بازر

فرض کنید می‌خواهید هنگام وقوع خطا در سیستم، بازر 5 بار با فاصله زمانی مشخص به صدا درآید:

در این مثال، اگر خطا تشخیص داده شود، بازر 5 بار با تأخیر 200 به صدا در می‌آید.

مثال استفاده از وقفه تایمر برای کنترل بازر

در این مثال از تایمر صفر (Timer0) میکروکنترلر AVR استفاده می‌کنیم تا به‌صورت تناوبی هر 1 میلی‌ثانیه وقفه ایجاد کند و درون وقفه، تابع buzzer_handel() را صدا بزنیم. این روش باعث اجرای دقیق، منظم و بدون تأخیر تابع بازر می‌شود.

کد کامل مثال با استفاده از وقفه تایمر:

نکات مهم این روش:

نیاز به هیچ تأخیری در حلقه اصلی نیست.

اجرای دقیق بدون اختلال در زمان‌بندی سایر توابع.

مناسب برای پروژه‌هایی با Multitasking دستی (مانند کنترل رله، سنسور، LCD و…).

فرکانس CPU در مثال بالا 1MHz فرض شده است. اگر فرکانس شما فرق دارد، مقدار OCR0 را باید متناسب تغییر دهید.

نتیجه‌گیری

بازرها ابزارهای ساده اما پرکاربردی در طراحی سیستم‌های تعبیه‌شده هستند. با شناخت انواع آن، نحوه عملکرد، و استفاده از کتابخانه‌های بهینه مثل کتابخانه‌ای که در این مقاله معرفی شد، می‌توانید پروژه‌هایی دقیق، قابل اعتماد و حرفه‌ای طراحی کنید. این کتابخانه به‌صورت ساده اما مؤثر امکان مدیریت صدای هشدار را در پروژه‌های میکروکنترلری برای شما فراهم می‌کند.

abolfazl وب‌سایت

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