Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial Internet of Things >> Embarqué

Comprendre le filtrage numérique avec des microcontrôleurs intégrés

Découvrez les méthodes largement utilisées pour filtrer et traiter les échantillons de données dans le domaine temporel tout en examinant de plus près le moteur Dual Biquad IIR de l'unité PowerQuad dans le microcontrôleur LPC55S69.

Lorsqu'il s'agit d'échantillons de données collectés au fil du temps ou dans le domaine temporel, l'une des opérations les plus élémentaires consiste à « filtrer » les données. Il est important de comprendre les manières courantes dont les données peuvent être filtrées numériquement pour obtenir les meilleurs résultats et libérer un processeur pour effectuer d'autres tâches, en particulier lorsqu'il s'agit de microcontrôleurs intégrés.

Dans cet article, découvrez les méthodes largement utilisées pour filtrer et traiter les échantillons de données dans le domaine temporel. Examinez également de plus près le moteur Dual Biquad IIR de l'unité PowerQuad dans le MCU LPC55S69 - un bloc de construction DSP polyvalent utile dans de nombreux cas d'utilisation de filtrage.

Filtres communs pour les données échantillonnées en continu

Lors de l'échantillonnage de données dans le domaine temporel, les données sont collectées en continu à un taux fixe connu. Les filtres de domaine temporel acceptent ces données en entrée et produisent un nouveau signal qui est modifié d'une manière ou d'une autre. La sortie d'un filtre n'est qu'un autre signal du domaine temporel, qui peut être traité davantage ou transféré vers un convertisseur numérique-analogique (DAC).

Nous abordons généralement les filtres en fonction de leur réaction aux ondes sinusoïdales. Si nous considérons un signal d'entrée comme une simple onde sinusoïdale, le filtre peut ajuster l'amplitude de l'entrée ainsi que sa phase. Lors de l'application d'un signal complexe au filtre, il ajustera l'amplitude et la phase des composantes sinusoïdales du signal. Le comportement du filtre sur une plage de fréquences s'appelle sa réponse en fréquence.

Une opération standard dans le domaine temporel est effectuée par les filtres dits à réponse impulsionnelle finie (FIR), qui mélangent l'échantillon de données le plus récent avec les éléments collectés précédemment pour obtenir l'échantillon de sortie suivant.

Figure 1. Traitement de filtre échantillon par échantillon en utilisant un historique de l'entrée.

Une façon d'implémenter un tel filtre consiste à stocker les échantillons précédents dans un tableau et à les combiner à l'aide d'une équation simple :

x[n] // L'entrée la plus récente
x[n-1], x[n-2] // Les deux échantillons d'entrée précédents
y[n] // La prochaine sortie échantillon

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

Cet extrait de pseudo-code particulier combine l'échantillon le plus récent avec les deux échantillons de données précédents. Il multiplie chaque échantillon de données avec un coefficient constant séparé avant de résumer les résultats pour obtenir l'échantillon de sortie suivant. En résumé, cela représente une simple opération de multiplication et d'accumulation, où les coefficients constants et la longueur de l'historique contrôlent la réponse en fréquence du filtre.

En choisissant des valeurs appropriées pour les coefficients, il est possible de construire différents types de filtres. Si le filtre atténue les hautes fréquences, il agit comme un filtre passe-bas. En atténuant les basses fréquences, le filtre résultant fonctionnera comme un filtre passe-haut. Il est également possible de combiner les deux approches, ce qui aboutira à un filtre passe-bande.

Les filtres FIR sont conceptuellement simples, mais peuvent nécessiter un certain nombre d'échantillons de données préalables pour obtenir un contrôle précis de sa réponse en fréquence. Bien que ce filtre soit facile à comprendre et à mettre en œuvre, son exécution sur un processeur conventionnel peut être fastidieux, en particulier avec un historique de taille moyenne. En effet, chaque échantillon nécessite de nombreuses opérations de multiplication et d'addition pour déterminer la sortie.

Une méthode pour réduire la quantité d'historique requise consiste à utiliser les sorties de filtre déterminées précédemment lors du calcul de l'échantillon de sortie suivant. C'est la racine d'une autre classe de filtres numériques appelés filtres à réponse impulsionnelle infinie (IIR) :

// Cet exemple utilise les conventions de nommage précédemment établies
y[n] =b0 * x[n] + b1 * x[n-1] + b2 * x[n-2] + a1 * y [n-1] + a1 * y[n-2]

L'exemple ci-dessus est un cas particulier du filtre IIR connu sous le nom de filtre biquad - un bloc de construction commun qui peut être mis en cascade pour construire des filtres plus grands. Cette approche nécessite moins de coefficients par rapport à un filtre FIR pour obtenir la réponse en fréquence souhaitée. Il y a des compromis spéciaux à considérer lors de l'utilisation de cette approche. L'utilisation de la rétroaction peut faire osciller les filtres si les coefficients ne sont pas choisis correctement.

En outre, de nombreux outils existent qui peuvent générer automatiquement les coefficients pour tous les cas d'utilisation courants. Il est courant de trouver des « livres de cuisine » pour calculer les coefficients de filtrage.

Figure 2. L'un des nombreux outils qui génèrent automatiquement des coefficients.

Utilisation des moteurs biquad PowerQuad IIR

L'unité LPC55S69 PowerQuad intègre un matériel dédié pour le calcul des filtres biquad IIR. L'utilisation du PowerQuad pour filtrer les échantillons de données collectés laissera le CPU libre d'effectuer d'autres tâches.

Comme indiqué ci-dessus, les algorithmes de filtrage ne sont pas compliqués à mettre en œuvre, mais ils peuvent prendre beaucoup de temps CPU. L'unité PowerQuad du MCU LPC55S69 contient du matériel dédié optimisé pour de nombreux filtrages et opérations mathématiques complexes. Il est connecté via le bus AHB et l'interface du coprocesseur Arm® Cortex®-M33.

L'environnement de développement standard du LPC55S69 est l'IDE gratuit basé sur Eclipse MCUXpresso. Le SDK LPC55S69 contient de nombreux exemples utiles, dont certains sont des exemples d'applications PowerQuad.

Figure 3. Sélection de l'exemple de filtre numérique PowerQuad.

L'exemple de projet « powerquad_filter » contient quelques exemples de différentes configurations de filtres. Le fichier « powerquad_filter.c » a plusieurs fonctions qui illustrent les configurations de filtre de base.

Plus tôt, l'article traitait d'un filtre qui utilise la « Forme directe I », qui est la mise en œuvre la plus simple. Cependant, le PowerQuad réorganise le flux des opérations de multiplication et d'ajout sans modifier le résultat, ce qui conduit à la « Forme directe II », qui ne nécessite pas le stockage de l'historique des entrées et des sorties. Au lieu de cela, un historique intermédiaire v[n] est stocké, également appelé état de filtre.

Une poignée de registres sur le bus AHB sont utilisés pour stocker l'état et les coefficients pour configurer le PowerQuad pour les opérations de filtrage IIR. Dans les exemples SDK, l'état du filtre est initialisé dans la fonction PQ_BiquadRestoreInternalState.

Une fois cette opération terminée, le filtre est prêt à traiter les échantillons de données. Cela se fait dans la fonction PQ_VectorBiquadDf2F32 dans fsl_powerquad_filter.c :

Figure 4. Implémentation du filtre IIR vectorisé

Cette fonction est conçue pour traiter des blocs d'échantillons d'entrée par multiples de huit. Les données peuvent être transférées d'un registre du cœur de traitement principal du LPC55S69 à un coprocesseur attaché, qui est le PowerQuad dans ce cas, à l'aide de l'instruction MCR.

Le PowerQuad effectuera ensuite le travail de filtrage - un moyen beaucoup plus efficace d'effectuer de nombreuses opérations de multiplication et d'ajout qu'il ne l'aurait été sur l'un des cœurs Cortex-M33 du LPC55S69. Une fois le PowerQuad terminé, le résultat est accessible avec l'instruction MCR, qui déplace les données d'un coprocesseur vers un registre CPU interne.

Le moteur Dual Biquad IIR pour le filtrage numérique

Le MCU LPC55S69 est livré avec une unité PowerQuad (qui contient deux moteurs biquad séparés) qui peut aider à accélérer le filtrage et les opérations mathématiques complexes. Les registres de bus AHB sont utilisés pour configurer les fonctions du PowerQuad IIR et les données sont échangées entre les cœurs PowerQuad et Cortex-M33 via l'interface du coprocesseur.

Le SDK LPC55S69 dans MCUXpresso est un bon point de départ. Le code, cependant, n'est pas optimisé car il est censé être facile à comprendre. Gardez à l'esprit que même si le PowerQuad peut accélérer considérablement le filtrage des applications, le processeur doit toujours transférer des données depuis et vers le coprocesseur PowerQuad.

NXP dispose d'un outil utile de conception et de visualisation de filtres IIR Biquad pour vous aider à configurer le logiciel. La page communautaire de NXP offre également un aperçu détaillé de l'unité PowerQuad du MCU LPC55S69 et de ses capacités.

Les articles sur l'industrie sont une forme de contenu qui permet aux partenaires de l'industrie de partager des actualités, des messages et des technologies utiles avec les lecteurs d'All About Circuits d'une manière qui ne convient pas au contenu éditorial. Tous les articles de l'industrie sont soumis à des directives éditoriales strictes dans le but d'offrir aux lecteurs des nouvelles utiles, une expertise technique ou des histoires. Les points de vue et opinions exprimés dans les articles de l'industrie sont ceux du partenaire et pas nécessairement ceux d'All About Circuits ou de ses rédacteurs.


Embarqué

  1. Logique numérique avec commentaires
  2. Pourquoi le numérique ?
  3. Que dois-je faire avec les données ? !
  4. Accélérer la transformation numérique avec les données IoT, grâce à Cisco et IBM
  5. Maintenance dans le monde numérique
  6. Donner aux équipes de fabrication numérique les connaissances
  7. Les logiciels industriels s'intègrent à l'informatique
  8. GE Digital :informations opérationnelles avec données et analyses
  9. Piloter l'usine numérique avec des données MES en temps réel