Filtres extrêmement basse fréquence

13

J'ai une carte d'acquisition de données (A / D + processeur de signal numérique) et je veux vérifier si un filtre passe-haut numérique (implémenté dans DSP) à une fréquence de coupure extrêmement basse (0,05 Hz) fonctionne réellement.

S'il s'agissait d'une fréquence que je pouvais générer avec un générateur de signaux, ce serait facile à vérifier, mais 0,05 Hz est trop faible et je ne peux pas la générer. Comment les ingénieurs vérifient-ils ce type de filtres?

doubleE
la source
3
Mon esprit est époustouflé par cette question et ses réponses! Je n'ai jamais envisagé de filtrer cette fréquence basse :)
bitsmack
6
@bitsmack J'ai vu un passe-haut de 50 milliHz dans un instrument d'électrogastrographie (EGG).
Nick Alexeev
Certains générateurs de signaux ont à la fois le bouton MHz et le bouton mHz.
AndrejaKo
Pouvez-vous introduire un signal de test sous forme numérique dans le DSP? Il est facile de générer n'importe quelle fréquence sous forme numérique. --- L'inconvénient est que vous ne testerez pas la partie analogique et A / N de la carte.
pabouk
1
@bitsmack Cela signifie que vous devrez attendre longtemps avant que les choses s'arrangent et que le "balayage" soit très lent (heures et heures), mais il est bon de tester les performances réelles en temps réel au moins une fois avant de croire que cela fonctionnera ralenti (après avoir testé, il s'est accéléré). Des choses comme le repliement peuvent élever la tête.
Spehro Pefhany

Réponses:

18

Je suppose que cela dépend de plusieurs facteurs, entre autres l'ordre du filtre, mais vous avez quelques possibilités:

  1. Trouvez un générateur de signaux qui y arrive. Ce sont plutôt bon marché de nos jours.
  2. Faites confiance aux mathématiques. Il s'agit d'un filtre numérique et en tant que tel, il évolue avec la fréquence d'échantillonnage. Si vous pouvez augmenter la fréquence d'échantillonnage de deux ordres de grandeur, vous auriez un filtre avec une coupure de 5 Hz, beaucoup plus facile à mesurer. De même, si le facteur limitant devient l'ADC, vous pouvez l'isoler du filtre et alimenter certaines données numériques artificielles.
  3. Utilisez une réponse échelonnée (de nombreux signaux à large bande feraient l'affaire). Calculez la réponse échelonnée du filtre souhaité et comparez-le avec le résultat. Ou, alternativement, calculer la réponse en fréquence au moyen de la FFT de la réponse échelonnée.

Nous utilisons une variante de l'alternative 3 dans certaines de nos configurations de test, non pas parce que nous ne pouvons pas générer les formes d'onde lentes requises, mais parce que la coupure <0,01 Hz de nos filtres analogiques serait beaucoup trop longue à caractériser si nous essayions même un balayage de fréquence approximatif . Cela a réduit le temps de test de plus d'une heure à quelques minutes.

Edgar Brown
la source
10

μμ

Malheureusement, vous ne pouvez pas obtenir ce niveau avec des modules DDS bon marché (par exemple AD9850) car le mot de réglage n'est que de 32 bits et l'horloge est généralement de 125 MHz, ce qui fait une résolution de 0,03 Hz. Je suppose que cela vous donnerait quelques points de données (0,0291 / 0,0582 / 0,0873 Hz)

Vous pouvez également le nourrir une étape et regarder la réponse du domaine temporel.

Spehro Pefhany
la source
2
Si votre module DDS peut prendre un signal d'horloge externe, il vous suffit de l'overclocker! Un DDS est vraiment un
diviseur
1
@ThreePhaseEel Vous pouvez le faire mais ce ne sera pas une sortie très agréable en général à moins que vous ne repensiez le filtre passe-bas de sortie, qui est généralement quelque chose comme un filtre elliptique LC à 5 pôles. Dans le cas de l'OP, puisque la fréquence maximale est si basse, il ou elle pourrait probablement simplement ajouter un filtre RC passe-bas de 1 Hz à la sortie et obtenir un bon signal.
Spehro Pefhany
Convenu que vous auriez besoin d'un post-filtre - les AD9850 ont une horloge minimale de 1 MHz btw, ce qui est un peu limitant, mais toujours suffisamment pour obtenir les résultats
souhaités
@ThreePhaseEel Bien sûr, même 8 ou 10 MHz donnerait une résolution de 0,002 ou 0,0024 Hz.
Spehro Pefhany
6

Option 1: test sur le PC.

Si votre code DSP est écrit en C, vous pouvez configurer un faisceau de test dans GCC ou Visual Studio. Vous connaissez la fréquence d'échantillonnage de votre code DSP, utilisez donc Excel pour générer un fichier CSV d'entrée de test et demandez à votre faisceau de test de vider une sortie de fichier CSV que vous pouvez vérifier.

Option 2: test sur le DSP avec une interface PC.

Si votre code DSP doit s'exécuter sur le DSP, vous pouvez toujours utiliser le PC pour le tester. Configurez un faisceau de test sur le DSP qui reçoit une valeur du PC, exécute une étape du filtre DSP, puis signale la sortie du filtre pour cette étape au PC (via USB, RS-232 ou TCP / IP selon comment vous vous connectez au DSP). Vous aurez également besoin d'un faisceau de test côté PC pour envoyer et recevoir ces valeurs. Encore une fois, vous pouvez configurer un fichier CSV d'entrée de test sur le PC, passer des échantillons successifs au code de filtre et vider une sortie de fichier CSV que vous pouvez vérifier.

Pour les deux...

Si vous filtrez à 0,05 Hz, il est probable que votre fréquence d'échantillonnage soit également assez lente. L'utilisation d'un faisceau de test vous permettra d'exécuter ces tests plus rapidement qu'en temps réel, ce qui rendra votre processus de test plus efficace.

Graham
la source
5

Si vous avez également un convertisseur N / A dans votre système DSP, vous pouvez générer ce signal extrêmement basse fréquence dans le logiciel et le renvoyer à votre entrée A / N. Vous pouvez également utiliser une carte D / A ou un adaptateur USB pour générer le signal. LabJack est un exemple de tels appareils, mais il y en a beaucoup d'autres avec des prix / capacités variables. Une autre possibilité serait d'utiliser un micro contrôleur + DAC pas cher comme Raspberry Pi ou Arduino

MartinH
la source
2

S'il s'agissait d'une fréquence que je pouvais générer avec un générateur de signaux, ce serait facile à vérifier, mais 0,05 Hz est trop faible et je ne peux pas la générer. Comment les ingénieurs vérifient-ils ce type de filtres?

Il existe trois bonnes façons de vérifier la réponse du filtre, l'une est une fonction delta dirac (une fonction d'impulsion ou une impulsion courte), l'autre est une entrée pas à pas et la dernière est un balayage de fréquence.

Avec les instruments que j'utilise, les expériences peuvent durer de quelques semaines à plusieurs mois, certains de nos systèmes physiques ont une réponse de l'ordre des jours. La meilleure façon de vérifier ces systèmes \ filtres est d'utiliser une entrée pas à pas, puis de mesurer la constante de temps. Si vous vous souvenez de la constante de temps pour une entrée de tension est:

V(t)=V0(1-e-t/τ)

τ=RC

entrez la description de l'image ici
Source: http://mit6002.blogspot.com/2011/05/1011-parallel-rc-circuit-step-input.html

(l'image a une source de courant avec une résistance parallèle qui équivaut à une source de tension avec une résistance série)

Pic de tension
la source
0

Vous pourriez probablement générer un signal de 50 MHz assez lisse à la main à l'aide d'un potentiomètre et d'une montre-bracelet.

Vous pouvez également calculer la réponse échelonnée attendue de votre filtre. Donnez à votre matériel une entrée pas à pas en actionnant un commutateur. Tracez la sortie sur une minute environ (si la base de temps de votre oscilloscope ne va pas aussi lentement, enregistrez un multimètre sur bande vidéo et transcrivez les lectures à chaque seconde). Comparez la réponse mesurée par étape à ce que vous aviez prévu. S'ils correspondent (assez étroitement, en tenant compte des imprécisions ADC / DAC / timing), votre filtre fonctionne comme prévu.

péricynthion
la source