یک فیلتر جلوه ای ساده

ساخت وبلاگ

این فیلتر بسیار ساده برای سرکوب خطاهای اندازه گیری تصادفی (تصادفی) استفاده می شود. این با نیازهای کم CPU (استفاده از حافظه و زمان محاسبات) مشخص می شود. ضرر تأخیر در سیگنال اندازه گیری و یک معادله فیلتر پیچیده است. برای محاسبه دقیق ریاضی ، مطمئناً بهتر است از سایر فیلترهای دیجیتال استفاده کنید.

هنگام اندازه گیری سیگنال های فیزیکی ، خطاهای تصادفی می تواند رخ دهد که به طور گسترده بر یک مدار کنترل تأثیر می گذارد یا می تواند به طور دروغین یک مقدار متوسط را تحریف کند. علت این خطاهای اندازه گیری گسترده است ، اما "گسل های خط" (به عنوان مثال اتصال کوتاه به زمین از یک خط سیگنال) و "خطاهای بیت" بیشتر اتفاق می افتد. مشترک با این خطاها ، تغییر سیگنال کوتاه قوی رخ می دهد.

Thumb of stochastic error

تصویر فوق آشفتگی را نشان می دهد: افزایش بسیار شیب دار به یک مقدار اندازه گیری بالا. یک کنترلر کلاسیک PID مطمئناً به این امر واکنش نشان می دهد.

راه حل این است که یک حلقه کنترل زیر را "پایدار" در برابر چنین خطاهایی ایجاد کنید - اما این باعث می شود واکنش کنترلر به طور قابل توجهی کاهش یابد.

به عنوان یک راه حل ساده دیگر ، سیگنال را می توان با کمک "میانگین در حال حرکت" درمان کرد - خطا با استفاده از میانگین "کاهش می یابد". سیگنال فیلتر شده به سیگنال اصلی به تأخیر می افتد ، بنابراین زمان اجرای گروه مسیر کنترل را افزایش می دهد. این باید هنگام طراحی حلقه کنترل در نظر گرفته شود.

اما حتی با این اقدام ، هنوز هم با افزایش شدید ، ارزش قابل توجهی بالا وجود دارد.

Thumb of moving average filter

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

شکل زیر این را نشان می دهد: منحنی "میانگین هوشمند" منحنی روش انتخاب شده را نشان می دهد.

Thumb of moving average without maxima

تأثیر اختلال بدون وخیم تر شدن بیشتر زمان در حال اجرا گروه به وضوح به حداقل می رسد. همچنین "خطاهای مضاعف" معمولی ناشی از "چرخش عقب" سیگنال فیلتر می شود.

Thumb of Smart filter with double error

سیستم فیزیکی برای تفسیر فیلتر مورد بحث مهم است. آیا فقط می توان "Outliers" مثبت را رخ داد؟یک اختلال معمولی چقدر است؟این اطلاعات تعریف می کند که مقادیر "حداکثر/حداقل" فیلتر می شوند و آیا فقط "مثبت" ، "منفی" یا هر دو مقدار باید فیلتر شوند.

مثال

کد نمونه زیر اجرای احتمالی این فیلتر را نشان می دهد.

/************************************************************************/ / * توابع یاور */ /************************************************************************/void data_filter_find_int_min_max(int16_t*data_array,uint16_t array_size,uint16_t*Min__Position,uint16_t*max_position) int16_t min_val,max_val;uint16_t i;uint16_t min_pos,max_pos;min_val=INT16_MAX;max_val=INT16_MIN;min_pos= 0;max_pos=آرایه_اندازه-1; /* ابتدا برای تعیین مقادیر حداکثر/دقیقه اجرا شود */ برای (i=0; iآرایه_اندازه; i++)  if (data_array[i]>max_val) max_val=آرایه_داده[i];max_pos= i; > دیگر if (data_array[i]min_val) min_val=آرایه_داده[i];min_pos= i; > > *موقعیت_min=min_pos; *حداکثر_موقعیت=max_pos; > /************************************************************************/ /* حذف فیلتر میانگین مین-مکس ساده */ /************************************************************************/int16_t data_filter_mima_array_int(int16_t*data_array,uint16_t array_size) جمع int32_t;uint16_t i,min_pos,max_pos;مجموع= 0;data_filter_find_int_min_max(data_array,آرایه_اندازه, &min_pos, &max_pos); برای (i=0; iآرایه_اندازه; i++)  if ((i!=max_pos) && (i!=min_pos)) مجموع+= (int32_t)(data_array[i]); > >مجموع/= (آرایه_اندازه-2); برگشت (int16_t)مجموع; > 

در صورت داشتن هرگونه سوال، پیشنهاد یا بازخورد، لطفاً از طریق ایمیل با ما تماس بگیرید.

کتاب آموزش بورس...
ما را در سایت کتاب آموزش بورس دنبال می کنید

برچسب : نویسنده : محسن زنجانچی بازدید : 33 تاريخ : چهارشنبه 8 شهريور 1402 ساعت: 18:39