Სარჩევი:

FIR ფილტრაცია უფრო საიმედო სიხშირის გამოვლენისათვის: 5 ნაბიჯი
FIR ფილტრაცია უფრო საიმედო სიხშირის გამოვლენისათვის: 5 ნაბიჯი

ვიდეო: FIR ფილტრაცია უფრო საიმედო სიხშირის გამოვლენისათვის: 5 ნაბიჯი

ვიდეო: FIR ფილტრაცია უფრო საიმედო სიხშირის გამოვლენისათვის: 5 ნაბიჯი
ვიდეო: აიზეკ აზიმოვი - "მე, რობოტი" - აუდიო წიგნი 2024, ნოემბერი
Anonim
FIR ფილტრაცია უფრო საიმედო სიხშირის გამოვლენისთვის
FIR ფილტრაცია უფრო საიმედო სიხშირის გამოვლენისთვის

მე ნამდვილად დიდი თაყვანისმცემელი ვარ akellyirl– ის მიერ საიმედო სიხშირის გამოვლენის შესახებ DSP ტექნიკის გამოყენებით, მაგრამ ზოგჯერ ის ტექნიკა, რომელიც მან გამოიყენა, არ არის საკმარისად კარგი, თუ ხმაურიანი გაზომვები გაქვთ.

სიხშირის დეტექტორისთვის უფრო სუფთა შეყვანის მისაღებად ერთი მარტივი გამოსავალია გამოიყენოთ რაიმე სახის ფილტრი იმ სიხშირის გარშემო, რომლის ამოცნობაც გსურთ.

სამწუხაროდ, ციფრული ფილტრის შექმნა ადვილი არ არის და მათემატიკა საკმაოდ ბევრია ჩართული. ასე რომ, მე ვიფიქრე რაიმე სახის პროგრამის შექმნაზე, რომელიც გაამარტივებს ამგვარი ფილტრების შექმნას, საშუალებას მისცემს ვინმეს გამოიყენოს ისინი თავიანთ პროექტებში დეტალებში ჩაღრმავების გარეშე.

ამ ინსტრუქციაში, მე ვაპირებ გამოვავლინო 50Hz სინუსური ტალღა ხმაურიანი გაზომვით Arduino Uno– ით (Arduino ნამდვილად არ არის აუცილებელი).

ნაბიჯი 1: პრობლემა

Პრობლემა
Პრობლემა

წარმოიდგინეთ გაზომილი შეყვანის მონაცემები ზემოთ მრუდის მსგავსია - საკმაოდ ხმაურიანი.

თუ ჩვენ შევქმნით უბრალო სიხშირის დეტექტორს, როგორიც არის akellyirl's Instructable, შედეგი არის "-inf" ან ქვემოთ მოყვანილი კოდის შემთხვევაში: "დიახ, ძალიან ბევრი ხმაური …"

შენიშვნა: მე გამოვიყენე თითქმის ყველა აკელირლის კოდი, მაგრამ დავამატე 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 Post– ს ფილტრის გამოყენების ალგორითმისთვის!

ნაბიჯი 5: ისიამოვნეთ

მიირთვით
მიირთვით

როგორც ხედავთ, ახლა ჩვენ შეგვიძლია გამოვავლინოთ 50Hz სიგნალი თუნდაც ხმაურიან გარემოში?

გთხოვთ თავისუფლად მოერგოთ ჩემი იდეა და კოდი თქვენს საჭიროებებს. ძალიან მადლობელი ვიქნები თქვენი გაუმჯობესების ჩათვლით!

თუ მოგწონთ ჩემი ნამუშევარი, მე ნამდვილად ვაფასებ, თუ თქვენ მხარს დაუჭერთ ჩემს მუშაობას ვარსკვლავით GitHub– ზე!

Გმადლობთ მხარდაჭერისთვის!:)

გირჩევთ: