Mục lục:

Lọc FIR để phát hiện tần số đáng tin cậy hơn: 5 bước
Lọc FIR để phát hiện tần số đáng tin cậy hơn: 5 bước

Video: Lọc FIR để phát hiện tần số đáng tin cậy hơn: 5 bước

Video: Lọc FIR để phát hiện tần số đáng tin cậy hơn: 5 bước
Video: Lọc FIR pha tuyến tính - [Xử lý số tín hiệu] - Tập 6 2024, Tháng mười một
Anonim
Lọc FIR để phát hiện tần số đáng tin cậy hơn
Lọc FIR để phát hiện tần số đáng tin cậy hơn

Tôi thực sự là một fan hâm mộ lớn của hướng dẫn của akellyirl về Phát hiện tần số đáng tin cậy bằng kỹ thuật DSP nhưng đôi khi kỹ thuật mà anh ấy sử dụng không đủ tốt nếu bạn có các phép đo nhiễu.

Một cách khắc phục dễ dàng để có được đầu vào sạch hơn cho bộ dò tần số là áp dụng một số loại bộ lọc xung quanh tần số bạn muốn phát hiện.

Thật không may, việc tạo ra một bộ lọc kỹ thuật số không phải là dễ dàng và có khá nhiều phép toán liên quan. Vì vậy, tôi đã nghĩ đến việc tạo ra một số loại chương trình để đơn giản hóa việc tạo các bộ lọc như vậy, cho phép bất kỳ ai sử dụng chúng trong các dự án của họ mà không cần tìm hiểu chi tiết.

Trong phần Có thể hướng dẫn này, tôi sẽ phát hiện sóng sin 50Hz trong một phép đo nhiễu với Arduino Uno (Arduino không thực sự cần thiết).

Bước 1: Vấn đề

Vấn đề
Vấn đề

Hãy tưởng tượng dữ liệu đầu vào được đo trông giống như đường cong ở trên - khá nhiễu.

Nếu chúng ta tạo một bộ dò tần số đơn giản như một bộ dò trong akellyirl's Guiductable, thì kết quả là "-inf" hoặc trong trường hợp mã bên dưới: "Yeah, quá nhiều tiếng ồn …"

Lưu ý: Tôi đã sử dụng khá nhiều mã của akellyirl nhưng đã thêm một mảng rawData ở trên cùng chứa các phép đo nhiễu.

Dưới đây, bạn có thể tìm thấy toàn bộ mã trong một tệp có tên "unsiltered.ino".

Bước 2: Giải pháp

Giải pháp
Giải pháp

Vì dữ liệu đầu vào bị nhiễu nhưng chúng tôi biết tần số chúng tôi đang tìm kiếm, chúng tôi có thể sử dụng một công cụ mà tôi đã tạo có tên easyFIR để tạo bộ lọc Bandpass và áp dụng nó cho dữ liệu đầu vào, dẫn đến đầu vào sạch hơn nhiều cho bộ dò tần số (hình trên).

Bước 3: EasyFIR

EasyFIR
EasyFIR

Công cụ easyFIR khá dễ sử dụng, chỉ cần tải xuống kho lưu trữ GitHub và chạy tệp easyFIR.py với một mẫu phép đo của bạn (ở định dạng CSV).

Nếu bạn mở tệp easyFIR.py, bạn sẽ tìm thấy 5 tham số (xem hình trên) bạn có thể và nên thay đổi tùy thuộc vào kết quả bạn muốn đạt được. Sau khi bạn chỉnh sửa 5 tham số và thực thi tệp python, bạn sẽ thấy các hệ số được tính toán trong thiết bị đầu cuối của mình. Các hệ số này rất quan trọng cho bước tiếp theo!

Thông tin thêm về cách sử dụng chính xác có thể được tìm thấy tại đây:

Bước 4: Lọc

Lọc
Lọc

Bây giờ nếu bạn đã tính toán các hệ số bộ lọc cần thiết, thì khá dễ dàng để áp dụng bộ lọc thực tế cho bộ dò tần số.

Như bạn thấy trong hình trên, bạn chỉ cần thêm các hệ số, hàm applyFilter và sau đó lọc các phép đo đầu vào.

Dưới đây, bạn có thể tìm thấy toàn bộ mã trong một tệp có tên "filter.ino".

Lưu ý: rất cảm ơn Bài đăng tràn ngăn xếp này vì thuật toán ứng dụng bộ lọc tuyệt vời!

Bước 5: Thưởng thức

Thưởng thức
Thưởng thức

Như bạn có thể thấy, bây giờ chúng ta có thể phát hiện tín hiệu 50Hz ngay cả trong môi trường ồn ào?

Vui lòng điều chỉnh ý tưởng và mã của tôi theo nhu cầu của bạn. Tôi sẽ rất biết ơn khi bao gồm những cải tiến của bạn!

Nếu bạn thích công việc của tôi, tôi sẽ thực sự đánh giá cao nếu bạn ủng hộ công việc của tôi với ngôi sao trên GitHub!

Cảm ơn sự hỗ trợ của bạn!:)

Đề xuất: