آردوینو arduino, پروژه, پروژه آردوینو, توصیه شده, کتابخانه برنامه نویسی

پیاده سازی فیلتر دیجیتال و عملیات پردازش سیگنال DSP در آردوینو – قسمت دوم

پردازش سیگنال dsp با آردوینو

در این مقاله، بر روی یک آردوینو کتابخانه DSP را اضافه و نقش فیلترهای آنالوگ RLC و RC را در دو حالت‌های مختلف بالا گذر و پایین گذر طراحی طراحی می‌کنیم! البته در نظر داشته باشید که فیلتر طراحی شده، بیشتر جنبه آموزشی داشته و ممکن است در بعضی موارد پاسخ درستی نداشته باشد. اما به طور کلی، برای درک عملکرد فیلترها می‌تواند مفید باشد. هدف از این مقاله، بررسی و تست این موضوع است که آیا با آردوینو می‌توان یک فیلتر DSP طراحی کرد؟
با این مقاله از سیسوگ همراه باشید.

 

DSP چیست؟

DSP مخفف عبارت Digital Signal processor است و در واقع یک ریزپردازنده تخصصی یا یک بلوک از یک تراشه است که معماری داخلی آن برای عملیات‌های پردازش سیگنال دیجیتال بهینه سازی شده است. DSP تراشه‌هایی از جنس MOS هستند. این تراشه‌ها به‌طور گسترده در سیگنال‌های صدا، تصویر، مخابرات، رادار، دریاب صوتی و سیستم‌های تشخیص گفتار استفاده می‌شوند.

 

پنجره بندی سیگنال چیست؟

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

 

 

دانلود کتابخانه

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

دانلود کتابخانه dsp آردوینو

 

نصب کتابخانه

پس از دانلود کتابخانه DSP همانند کتابخانه‌های دیگر آن را از مسیر زیر به آردوینو خود اضافه کنید:

Sketch -> Include Library -> Add.ZIP Library

افزودن کتابخانه زیپ به آردوینو

 

نحوه استفاده از کتابخانه

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

فیلتر FiltersOnePole

این فیلتر دیجیتال تک قطبی، در واقع نقش فیلترهای مقاومت و خازنی (RC) را تقلید می‌کند. هم برای فیلترهای بالاگذر و هم فیلترهای پایین گذر.

فیلتر FiltersTwoPole

این فیلتر دیجیتال دو قطبی، نقش فیلتر آنالوگ مقاومت – سلف – خازن (RLC) را بازی می‌کند. از آنجایی که یک فیلتر RLC تنها یک نوسان ساز هارمونیکی ضعیف است، به خوبی می‌توان با استفاده از کلاس FiltersTwoPole و با تنظیم کیفیت و فرکانس تشدید (رزونانس)، آن را پیاده سازی کرد.

 

برای استفاده از کتابخانه آردوینو و فیلترهای آن، ابتدا می‌بایست یک شیء (Object) از روی فیلتر دلخواه بسازید. همچنین با استفاده از متدها می‌توانید بالا گذر یا پایین گذر بودن فیلترها را مشخص کنید:

 

مثال های کتابخانه

برنامه نمونه (Example) خود کتابخانه فیلتر DSP را می‌توانید از طریق منوی زیر باز کنید:

File -> Examples -> Filters-master

اجرای مثال های کتابخانه ای آردوینو

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

در برنامه نمونه، شما تنها کافی است تا در حلقه Loop تابعی که نیاز دارید را از حالت توضیح (کامنت) خارج کنید. به یاد داشته باشید که برای مشاهده نتیجه فیلترهای DSP فوق، حتماً در آردوینو سرعت پنجره‌ی سریال را بر روی 57600 تنظیم کنید.

 

 

نتیجه  اعمال حالت فیلتر DSP TwoPole در پنجره سریال آردوینو

time: 0.01 in: 0.00 +/- 0.05 (100.00 +/- 70.71) LP2: 0.00 +/- 0.00 (0.0 +/- 50.00) LP2A: 0.00 +/- 0.00 LP2B: 0.00 +/- 0.00
time: 5.00 in: 50.91 +/- 71.34 (100.00 +/- 70.71) LP2: 49.87 +/- 61.73 (0.0 +/- 50.00) LP2A: 50.71 +/- 71.06 LP2B: 47.22 +/- 49.36
time: 10.00 in: 85.18 +/- 74.43 (100.00 +/- 70.71) LP2: 84.84 +/- 59.21 (0.0 +/- 50.00) LP2A: 85.16 +/- 74.20 LP2B: 83.80 +/- 37.04

 

همچنین برای تست حالت فیلتر DSP OnePole خروجی زیر را در پنجره سریال آردوینو خواهید دید:

time: 0.00 in: 0.00 +/- 0.04 (100.00 +/- 70.71) LP1: 0.00 +/- 0.00 (100.00 +/- 50.00) HP1: 0.00 +/- 0.11 (0.0 +/- 50.00)
time: 5.00 in: 50.89 +/- 71.33 (100.00 +/- 70.71) LP1: 50.12 +/- 61.28 (100.00 +/- 50.00) HP1: 0.78 +/- 35.42 (0.0 +/- 50.00)
time: 10.00 in: 85.18 +/- 74.43 (100.00 +/- 70.71) LP1: 84.92 +/- 58.37 (100.00 +/- 50.00) HP1: 0.26 +/- 45.26 (0.0 +/- 50.00)

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

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

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

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

2 دیدگاه در “پیاده سازی فیلتر دیجیتال و عملیات پردازش سیگنال DSP در آردوینو – قسمت دوم

  1. Sadegh tyz گفت:

    سلام ممنون از مطلب مفیدتون…حالا که باب پردازش سیگنال باز شده لطفا نحوه کار با کتابخانه cmsis dsp رو هم توضیح بدین چون هیچ مطلبی راجع بهش در سایتای فارسی وجود نداره و برای کارهای الکترونیک قدرت بسیار کاربردی هست.

    1. Digi Boy Digi Boy گفت:

      سلام.
      خواهش می‌کنم. اگر تونستیم، حتماً.