Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Industrial Internet of Things >> Tertanam

Memahami Penyaringan Digital dengan Mikrokontroler Tertanam

Pelajari tentang metode yang banyak digunakan untuk memfilter dan memproses sampel data dalam domain waktu sambil melihat lebih dekat mesin Dual Biquad IIR unit PowerQuad di MCU LPC55S69.

Saat menangani sampel data yang dikumpulkan dari waktu ke waktu, atau dalam domain waktu, salah satu operasi paling dasar adalah "menyaring" data. Penting untuk memahami cara umum agar data dapat difilter secara digital untuk mencapai hasil terbaik dan membebaskan CPU untuk melakukan tugas lain, terutama jika menyangkut mikrokontroler tertanam.

Dalam artikel ini, pelajari tentang metode yang banyak digunakan untuk memfilter dan memproses sampel data dalam domain waktu. Selain itu, lihat lebih dekat mesin Dual Biquad IIR dari unit PowerQuad di LPC55S69 MCU — blok penyusun DSP serbaguna yang berguna dalam banyak kasus penggunaan pemfilteran.

Filter Umum untuk Data Sampel Berkelanjutan

Saat mengambil sampel data dalam domain waktu, data dikumpulkan secara terus-menerus pada tingkat yang diketahui dan tetap. Filter domain waktu menerima data ini sebagai input dan output sinyal baru yang dimodifikasi dalam beberapa cara. Output dari filter hanyalah sinyal domain waktu lain, yang dapat diproses lebih lanjut atau ditransfer ke konverter digital ke analog (DAC).

Kami biasanya mendekati filter dalam hal bagaimana mereka merespons gelombang sinus. Jika kita menganggap sinyal input sebagai gelombang sinus sederhana, filter dapat menyesuaikan amplitudo input serta menyesuaikan fasenya. Saat menerapkan sinyal kompleks ke filter, filter akan menyesuaikan amplitudo dan fase komponen sinusoidal sinyal. Bagaimana filter berperilaku pada rentang frekuensi disebut respons frekuensinya.

Operasi standar dalam domain waktu dilakukan oleh apa yang disebut filter Respons Impuls Hingga (FIR), yang mencampur sampel data terbaru dengan elemen yang dikumpulkan sebelumnya untuk mendapatkan sampel keluaran berikutnya.

Gambar 1. Sampel demi sampel pemrosesan filter menggunakan riwayat input.

Salah satu cara untuk menerapkan filter tersebut adalah dengan menyimpan sampel sebelumnya dalam array dan menggabungkannya menggunakan persamaan langsung:

x[n] // Input terbaru
x[n-1], x[n-2] // Dua sampel input sebelumnya
y[n] // Output berikutnya contoh

y[n] =b0 * x[n] + b1 * x[n-1] + b2 * x[n-2]

Cuplikan kode semu khusus ini menggabungkan sampel terbaru dengan dua sampel data sebelumnya. Ini mengalikan setiap sampel data dengan koefisien konstanta terpisah sebelum menjumlahkan hasilnya untuk mendapatkan sampel keluaran berikutnya. Singkatnya, ini mewakili operasi perkalian dan akumulasi sederhana, di mana koefisien konstan dan panjang riwayat mengontrol respons frekuensi filter.

Dengan memilih nilai yang sesuai untuk koefisien, dimungkinkan untuk membuat berbagai jenis filter. Jika filter melemahkan frekuensi tinggi, ia bertindak sebagai filter low-pass. Dengan melemahkan frekuensi rendah, filter yang dihasilkan akan berfungsi sebagai filter lolos tinggi. Anda juga dapat menggabungkan dua pendekatan, yang akan menghasilkan filter band-pass.

Filter FIR secara konseptual sederhana tetapi dapat memerlukan beberapa sampel data sebelumnya untuk mencapai kontrol yang tepat atas respons frekuensinya. Meskipun filter ini mudah dipahami dan diterapkan, menjalankannya pada CPU konvensional mungkin tidak praktis, terutama dengan riwayat berukuran sedang. Hal ini karena setiap sampel membutuhkan banyak operasi perkalian dan penjumlahan untuk menentukan keluarannya.

Salah satu metode untuk mengurangi jumlah riwayat yang diperlukan adalah dengan menggunakan keluaran filter yang ditentukan sebelumnya saat menghitung sampel keluaran berikutnya. Ini adalah akar dari kelas filter digital lain yang disebut filter Infinite Impulse Response (IIR):

// Contoh ini menggunakan konvensi penamaan yang telah ditetapkan sebelumnya
y[n] =b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y [n-1] + a1 * y[n-2]

Contoh di atas adalah kasus khusus dari filter IIR yang dikenal sebagai filter biquad — blok bangunan umum yang dapat di-cascade untuk membuat filter yang lebih besar. Pendekatan ini membutuhkan lebih sedikit koefisien dibandingkan dengan filter FIR untuk mencapai respons frekuensi yang diinginkan. Ada pengorbanan khusus yang perlu dipertimbangkan saat menggunakan pendekatan ini. Penggunaan umpan balik dapat menyebabkan filter berosilasi jika koefisien tidak dipilih dengan benar.

Juga, ada banyak alat yang dapat secara otomatis menghasilkan koefisien untuk semua kasus penggunaan umum. Adalah umum untuk menemukan "buku masak" untuk menghitung koefisien filter.

Gambar 2. Salah satu dari banyak alat yang secara otomatis menghasilkan koefisien.

Menggunakan Mesin PowerQuad IIR Biquad

Unit PowerQuad LPC55S69 menggabungkan perangkat keras khusus untuk menghitung filter biquad IIR. Menggunakan PowerQuad untuk memfilter sampel data yang dikumpulkan akan membuat CPU bebas melakukan tugas lain.

Seperti dibahas di atas, algoritme filter tidak rumit untuk diterapkan, tetapi dapat menghabiskan banyak waktu CPU. Unit PowerQuad dari LPC55S69 MCU berisi perangkat keras khusus yang dioptimalkan untuk banyak pemfilteran dan operasi matematika yang kompleks. Ini terhubung melalui bus AHB dan antarmuka koprosesor Arm® Cortex®-M33.

Lingkungan pengembangan standar untuk LPC55S69 adalah IDE MCUXpresso berbasis Eclipse gratis. SDK LPC55S69 berisi banyak contoh berguna, beberapa di antaranya adalah contoh aplikasi PowerQuad.

Gambar 3. Memilih contoh filter digital PowerQuad.

Proyek contoh 'powerquad_filter' berisi beberapa contoh konfigurasi filter yang berbeda. File 'powerquad_filter.c' memiliki beberapa fungsi yang mendemonstrasikan penyiapan filter dasar.

Sebelumnya, artikel tersebut membahas filter yang menggunakan 'Formulir Langsung I', yang merupakan implementasi paling mudah. Namun, PowerQuad mengatur ulang aliran operasi perkalian dan penambahan tanpa mengubah hasilnya, yang mengarah ke 'Bentuk Langsung II', yang tidak memerlukan riwayat input dan output untuk disimpan. Sebagai gantinya, riwayat perantara v[n] disimpan, juga disebut sebagai status filter.

Beberapa register pada bus AHB digunakan untuk menyimpan status dan koefisien untuk menyiapkan PowerQuad untuk operasi filter IIR. Dalam contoh SDK, status filter diinisialisasi dalam fungsi PQ_BiquadRestoreInternalState.

Setelah itu selesai, filter siap untuk memproses sampel data. Ini dilakukan dalam fungsi PQ_VectorBiquadDf2F32 di fsl_powerquad_filter.c:

Gambar 4. Implementasi Filter IIR Bervektorisasi

Fungsi ini dirancang untuk memproses blok sampel input dalam kelipatan delapan. Data dapat ditransfer dari register inti pemrosesan utama LPC55S69 ke co-prosesor yang terpasang, yang dalam hal ini adalah PowerQuad, dengan bantuan instruksi MCR.

PowerQuad kemudian akan melakukan pekerjaan penyaringan — cara yang jauh lebih efisien untuk melakukan banyak operasi perkalian dan penambahan daripada yang dilakukan pada salah satu inti Cortex-M33 LPC55S69. Setelah PowerQuad selesai, hasilnya dapat diakses dengan instruksi MCR, yang memindahkan data dari co-processor kembali ke register CPU internal.

Mesin IIR Biquad Ganda untuk Pemfilteran Digital

MCU LPC55S69 dilengkapi dengan unit PowerQuad (yang berisi dua mesin biquad terpisah) yang dapat membantu mempercepat penyaringan dan operasi matematika yang kompleks. Register bus AHB digunakan untuk mengonfigurasi fungsi PowerQuad IIR, dan data dipertukarkan antara inti PowerQuad dan Cortex-M33 melalui antarmuka koprosesor.

SDK LPC55S69 di MCUXpresso adalah titik awal yang baik. Namun, kodenya tidak dioptimalkan karena dimaksudkan agar mudah dipahami. Ingatlah bahwa meskipun PowerQuad dapat mempercepat aplikasi pemfilteran secara signifikan, CPU tetap harus mentransfer data dari dan ke co-prosesor PowerQuad.

NXP memiliki Alat Desain &Visualisasi Filter Biquad IIR Biquad untuk membantu dalam mengonfigurasi perangkat lunak. Halaman komunitas NXP juga menawarkan pandangan mendalam tentang unit PowerQuad LPC55S69 MCU dan kemampuannya.

Artikel Industri adalah bentuk konten yang memungkinkan mitra industri untuk berbagi berita, pesan, dan teknologi yang bermanfaat dengan pembaca All About Circuits dengan cara yang tidak sesuai dengan konten editorial. Semua Artikel Industri tunduk pada pedoman editorial yang ketat dengan tujuan menawarkan kepada pembaca berita, keahlian teknis, atau cerita yang bermanfaat. Sudut pandang dan pendapat yang diungkapkan dalam Artikel Industri adalah dari mitra dan belum tentu dari All About Circuits atau penulisnya.


Tertanam

  1. Logika Digital Dengan Umpan Balik
  2. Mengapa digital?
  3. Ringkasan tentang Teknologi IC Untuk Mikrokontroler dan Sistem Tertanam
  4. Apa yang Saya Lakukan dengan Data?!
  5. Mempercepat transformasi digital dengan Data IoT, berkat Cisco dan IBM
  6. Pemeliharaan di dunia digital
  7. Memberdayakan Tim Manufaktur Digital Dengan Pengetahuan
  8. Perangkat Lunak Industri Terintegrasi Dengan TI
  9. GE Digital:Wawasan Operasional dengan Data &Analisis
  10. Menggerakkan Pabrik Digital dengan Data MES Real-Time