תוכן עניינים:

סינון FIR לאיתור תדרים אמינים יותר: 5 שלבים
סינון FIR לאיתור תדרים אמינים יותר: 5 שלבים

וִידֵאוֹ: סינון FIR לאיתור תדרים אמינים יותר: 5 שלבים

וִידֵאוֹ: סינון FIR לאיתור תדרים אמינים יותר: 5 שלבים
וִידֵאוֹ: ברנרדו קסטרופ Λ ג'ון Vervaeke על מטה-תודעה 2024, יולי
Anonim
סינון FIR לאיתור תדר אמין יותר
סינון FIR לאיתור תדר אמין יותר

אני מעריץ גדול מאוד של ההנחיות של akellyirl בנושא זיהוי תדרים מהימנים באמצעות טכניקות DSP אבל לפעמים הטכניקה שבה השתמש לא מספיק טובה אם יש לך מדידות רועשות.

תיקון קל אחד לקבלת קלט נקי יותר לגלאי התדרים הוא החלת מסנן כלשהו סביב התדר שברצונך לזהות.

למרבה הצער, יצירת פילטר דיגיטלי אינה קלה ויש לא מעט מתמטיקה. אז חשבתי ליצור איזושהי תוכנית שתפשט את יצירת פילטרים כאלה, כדי לאפשר לכל אחד להשתמש בהם בפרויקטים שלהם מבלי לחפור בפרטים.

במדריך זה אני הולך לזהות גל סינוס של 50 הרץ במדידה רועשת עם Arduino Uno (Arduino ממש לא הכרחי).

שלב 1: הבעיה

הבעיה
הבעיה

תארו לעצמכם שנתוני הקלט הנמדדים נראים כמו העקומה שלמעלה - די רועש.

אם נבנה גלאי תדרים פשוט כמו זה שב- Instructable של akellyirl, התוצאה היא "-inf" או במקרה של הקוד להלן: "כן, יותר מדי רעש …"

הערה: השתמשתי כמעט בכל הקוד של akellyirl אך הוספתי למעלה מערך rawData המכיל את המדידות הרועשות.

להלן תוכל למצוא את כל הקוד בקובץ בשם "unfiltered.ino".

שלב 2: הפתרון

הפתרון
הפתרון

מכיוון שנתוני הקלט רועשים אך אנו יודעים את התדירות אותה אנו מחפשים, נוכל להשתמש בכלי שיצרתי בשם easyFIR כדי ליצור מסנן Bandpass ולהחיל אותו על נתוני הקלט, מה שמביא לקלט נקי הרבה יותר לגלאי התדרים (התמונה למעלה).

שלב 3: EasyFIR

EasyFIR
EasyFIR

הכלי easyFIR די קל לשימוש, פשוט הורד את מאגר GitHub והפעל את הקובץ easyFIR.py עם דוגמה אחת של המדידות שלך (בפורמט CSV).

אם תפתח את הקובץ easyFIR.py, תמצא 5 פרמטרים (ראה תמונה למעלה) אתה יכול וצריך לשנות בהתאם לתוצאה שתרצה להשיג. לאחר ששינית את 5 הפרמטרים ותבצע את קובץ הפייתון, תראה את המקדמים המחושבים במסוף שלך. מקדמים אלה הם חיוניים לשלב הבא!

מידע נוסף על השימוש המדויק ניתן למצוא כאן:

שלב 4: סינון

סִנוּן
סִנוּן

כעת, אם חישבת את מקדמי המסנן הדרושים, די קל להחיל את הפילר בפועל על גלאי התדרים.

כפי שאתה יכול לראות בתמונה למעלה, עליך להוסיף רק את המקדמים, את הפונקציה ApplyFilter ולאחר מכן לסנן את מדידות הקלט.

להלן תוכל למצוא את כל הקוד בקובץ בשם "filtered.ino".

הערה: תודה רבה לפוסט Stack Overflow הזה על אלגוריתם יישומי המסנן הנהדר!

שלב 5: תהנה

תהנה
תהנה

כפי שאתה יכול לראות, כעת אנו מסוגלים לזהות אות 50 הרץ אפילו בסביבה רועשת?

אנא אל תהסס להתאים את הרעיון והקוד שלי לצרכים שלך. אשמח מאוד לכלול את השיפורים שלך!

אם אתה אוהב את העבודה שלי, אעריך מאוד אם תתמוך בעבודתי עם כוכב ב- GitHub!

תודה על התמיכה שלך!:)

מוּמלָץ: