پیاده سازی فیلتر دیجیتال و عملیات پردازش سیگنال 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)

حمایت از Digi Boy

خوشحال میشیم برای تداوم و کیفیت ما رو حمایت کنید.

0 نفر

پــــســنــدیـده انـد

توجه

Digi Boy

به دانش فزای و به یزدان گرای، که او باد جان تو را رهنمای (فردوسی)

دیدگاه ها

2 دیدگاه

  • Sadegh tyz
    ۲۰ بهمن ۱۳۹۸

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

    • Digi Boy
      Digi Boy
      ۲۱ بهمن ۱۳۹۸

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

پر بحث ترین ها

مسابقه دوم : چالش برنامه نویسی به زبان C

مسابقه اول سیسوگ (مسابقه اول: درک سخت افزار) انتقادهای زیادی رو در پی داشت تا جایی که حتی خودمم به نتیجه مسابقه...

Zeus ‌ Zeus ‌
  • 2 سال پیش

راه اندازی LCD گرافیکی Nokia 1661 و دانلود کتابخانه آن

LCD گرافیکی یکی از مهم ترین پارامترهای موجود در طراحی انواع مدارات الکترونیکی پیچیده و حتی ساده است ، نمایش وضعیت و...

Zeus ‌ Zeus ‌
  • 4 سال پیش

ریموت کدلرن و چکونگی دکد کردن آن به همراه سورس برنامه

ریموت کنترل امروزه کاربرد زیادی پیدا کرده است؛ از ریموت‌های درب بازکن تا ریموت‌های دزدگیر و کنترل روشنایی همه از یک اصول اولیه پیروی می‌کنند و آن‌هم ارسال اطلاعات به‌صورت بی‌سیم است....

Zeus ‌ Zeus ‌
  • 5 سال پیش

همه چیز درباره ریموت کنترل‌های هاپینگ

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

Zeus ‌ Zeus ‌
  • 5 سال پیش

مسابقه سوم: استخراج داده از رشته ها در زبان C

نزدیک به 5 ماه از مسابقه دوم سیسوگ می‌گذره و فکر کردم که بد نیست یک چالش جدید داشته باشیم! البته چالش‌ها...

Zeus ‌ Zeus ‌
  • 2 سال پیش

مسابقه ششم: بزن میکروکنترلر را بسوزون!

بزنم میکروکنترلر را بسوزونم اونم تو  این شرایط!، طراحی مسابقه از اون چیزی که به نظر می‌رسه سخت‌تر است، باید حواست باشه...

Zeus ‌ Zeus ‌
  • 11 ماه پیش

آموزش قدم به قدم راه اندازی +NRF24L01

آموزش قدم به قدم راه اندازی +NRF24L01  با کتابخانه سازگار با انواع میکروکنترلرها و کامپایلرها قبل از اینکه قسمت بشه با ماژول...

رسول خواجوی بجستانی رسول خواجوی بجستانی
  • 3 سال پیش

ساخت ماینر با FPGA و ARM

چند ماهی هست که تب بیت کوین و ارزهای دیجیتال خیلی بالا رفته! چه شد که این پست را نوشتم همانطور که...

Zeus ‌ Zeus ‌
  • 3 سال پیش

کار با ماژول تمام عیار mc60 – قسمت دوم – راه اندازی OpenCPU

در قسمت اول به یکسری اطلاعات کلی ماژول mc60 پرداختیم، با نرم افزار QNavigator کار کردیم و یک هدربرد هم برای کار...

Mahdi.h   Mahdi.h  
  • 3 سال پیش

مسابقه چهارم: کدام حلقه سریع‌تر است؟

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

Zeus ‌ Zeus ‌
  • 1 سال پیش
سیـــســـوگ

مرجع متن باز آموزش الکترونیک