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

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

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

 

DSP چیست؟

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

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

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

 

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

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

A Realtime Digital Signal Processing (DSP) Library for Arduino

نصب کتابخانه

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

Sketch -> Include Library -> Add.ZIP Library

Sketch -> Include Library -> Add.ZIP Library

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

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

فیلتر FiltersOnePole

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

فیلتر FiltersTwoPole

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

 

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

FilterOnePole filterOneLowpass( LOWPASS, testFrequency ); //ساخت فیلتر one pole (RC)

FilterTwoPole myFilter;// two pole ساخت یک شی جدید از روی کلاس 
myFilter.setAsFilter( LOWPASS_BUTTERWORTH, testFrequency ); //تنظیم رفتار کلاس برای شبیه سازی فیلتر پایین گذر
مثال های کتابخانه

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

File -> Examples -> Filters-master

File -> Examples -> Filters-master

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

void loop() {
testOnePoleFilters();
testTwoPoleFilters();
}

 

در برنامه نمونه، شما تنها کافی است تا در حلقه 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)

 

 

 

منبع:سیسوگ

مطلب قبلیراه‌اندازی پورت VGA با FPGA (بازی تتریس)
مطلب بعدیمدیریت و اتصال همزمان به چند وای فای در ESP8266

پاسخ دهید

لطفا نظر خود را وارد کنید!
لطفا نام خود را در اینجا وارد کنید