Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Traitement du signal Discussion :

FFT avec changement de variable t ==> exp(at+b)


Sujet :

Traitement du signal

  1. #1
    Nouveau Candidat au Club
    FFT avec changement de variable t ==> exp(at+b)
    Bonjour,

    Je cherche à établir une fonction de transfert (pour bande passante) d'un ensemble d'acquisition en y entrant un sinus balayé de 1000 Hz à 1 MHz par exemple avec f en progression exponentielle sur 1 s (par exemple). J'utilise soit la détection des passages par zéro, soit une FFT glissante. Dans ce dernier cas, il est problématique de figer une fenêtre qui soit adaptée depuis les basses fréquences jusqu'aux hautes. J'ai l'idée de changer de variable t par exp(at+b) pour que cette fenêtre puisse rester constante. Mon problème c'est que je ne sais pas à la fin du calcul transformer la fréquence trouvée (le max dans la fenêtre) correspondant à la nouvelle variable vers ma variable d'origine (t). Vous avez une idée du calcul ?

    Merci d'avance.

    Cordialement.

  2. #2
    Membre expérimenté
    Si tu balaies en fréquence, tu as directement la fonction de réponse, en amplitude.
    Pourquoi chercher plus compliqué ?
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  3. #3
    Nouveau Candidat au Club
    Bonjour Nebulix,

    "Si je balaie en fréquence" je vais par exemple prendre 2 ms pour analyser le début (proche de 1 kHz), OK. Sauf que plus la fréquence du sinus balayé va augmenter jusqu'à 1 MHz plus je vais moyenner sur des fréquences différentes (2 ms c'est alors beaucoup trop long) et donc le résultat de fréquence est faux pour les fréquences élevées et inversement si je prends une fenêtre plus courte ce sont les fréquences basses que je ne peux analyser.

    Pour ce qui est des méthodes alternatives à la FFT (c'est vrai que balayer 1 million de points, voire 10 millions si on veut éviter le repliement, c'est sinon "compliqué" du moins très très long) j'utilise d'habitude plutôt les passages par zéro, mais là j'ai un cas particulier avec un signal bruité car la carte d'acquisition a une entrée 1400 V alors que bien sûr mon géné BF ne fournit que du 10 V. Tout ça fait que mes passages par zéro sont très bruités aussi, de même que la fréquence calculée.

    NB : ce n'est pas l'amplitude que je cherche, ça marche pas terrible par FFT, je fais autrement pour l'amplitude (genre détection glissante de max/min), c'est la fréquence que je cherche.

    Merci de ta réponse.

    A plus.

  4. #4
    Membre expérimenté
    Désolé mais je ne comprends plus rien. Il faudrait que tu expliques plus en détail ton problème ( mesurer une courbe de réponse ? ) et les outils dont tu disposes ( générateur, système de mesure )
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  5. #5
    Nouveau Candidat au Club
    Nous sommes un centre d'essai. Nous utilisons en particulier des chaines de mesures du type capteur + conditionneur + numériseur. Nous avons un laboratoire qui préalablement à nos essais de spécimens, essaie de "caractériser" nos cartes d'acquisition (numériseur), soit seule, soit avec la carte de conditionnement. "Caractériser" cela désigne plein de vérifications différentes comme la linéarité et la bande passante. Personnellement je voudrais remplacer la méthode qu'on utilise historiquement de mettre en entrée un signal sinus de fréquence connue et fixe de noter la réponse, puis etc. changement de fréquence, etc. par une méthode que je voudrais automatiser de rentrer un seul signal en 1 seule fois. Il faut qu'il présente toutes les fréquences que je veux tester. Plutôt que de considérer un bruit blanc ou rose, j'ai préféré commencer par un signal balayé. J'ai l'impression que c'est cette expression qui pose problème (?). Le signal de durée 1 s tout compris (par exemple) a une amplitude constante commence à 1000 Hz (par exemple) et finit à 1 MHz (par exemple) avec une progression de fréquence logarithmique que j'écris ln(f)=a.t+b.

    Dans le cas général des cartes d'acquisition que j'ai traitées jusqu'à présent je faisais numériser le signal par la carte à tester à la cadence de 100 kHz, 500 kHz ou 1 MHz (ou 10 MHz pour certaines cartes plus rapides). L'objectif est de fournir la fonction de transfert (module et phase en fonction de la fréquence). Mais en phase intermédiaire il peut être intéressant de caractériser la fréquence de sortie en fonction de celle d'entrée, non seulement pour mettre en évidence le repliement (s'il y en a ou s'il y a en a un peu) mais aussi pour détecter certains pb de linéarité (c'est rare).

    La méthode la plus rapide que j'ai trouvée c'est 1. de dater tous les passages à zéro (plusieurs centaines de milliers, mais j'ai un outil miracle qui fait ça en une seule fois) cela donne accès à la fréquence f = 1/2/Dt et à la phase (là j'ai des progrès à faire) et 2. de déterminer l'amplitude du sinus par une détection glissante de max (et de min car certaines cartes soit présentent un offset soit ne traitent pas rigoureusement les + comme les -.

    Là je dois dire qu'il serait bien mieux de disposer du signal d'entrée, mais j'ai pas. Soit que le généBF ne le fournit pas (?), soit qu'on sache pas l'en extraire, soit qu'on ne veuille pas faire une acquisition en parallèle avec une carte de référence (sans défaut elle...). Mais bon je sais reconstituer assez facilement le signal d'entrée numériquement à partir de la formule du sinus balayé, ça marche bien, y compris sur la phase a priori.

    Sauf que, patatrac, j'ai une carte d'acquisition pour laquelle ça marche plus (passages par zéro multiples par période à cause du bruit, je répète pas j'ai expliqué pourquoi dans ma réponse précédente, entrée 1400 V acquisition 10 V). Donc j'essaie une autre méthode : fenêtrage temporel couvrant plusieurs périodes, puis FFT, puis max de FFT (module) ==> fréquence du max (et amplitude si on veut mais... bref), puis fenêtre suivante avec ou sans recoupement, et idem détermination de f. Si on procède à largeur de fenêtre constante on ne peut pas être adapté à la fois en hautes et basses fréquences (que ce soit pour déterminer la fréquence du max ou pour son amplitude). Si on est adapté en basse fréquence (disons sur quelques périodes, en supposant que le temps est suffisamment court pour que f ne varie pas beaucoup) alors on ne l'est plus tout en hautes fréquences (1000 fois plus de périodes à 1 MHz qu'à 1 kHz pendant lesquelles la fréquence varie largement). On ne cherche plus un max sur 2 ou 3 raies mais sur un "patatoïde" ==> f faux et amplitude encore plus fausse que d'hab.

    Donc pour éviter cet inconvénient l'idée est de transformer logarithmiquement l'échelle en abscisse mais j'ai besoin du mathématicien qui va bien pour corriger en conséquence l'échelle des ordonnées.

    Voilà voilà. Je ne pense pas que je peux expliquer bien mieux sauf à mettre des petits dessins mais pour l'instant je ne suis pas sur la bonne machine.

    Merci de l'intérêt porté à ma question (même si pour l'instant on tourne autour, mais je suppose que c'est nécessaire).

    Cordialement.

  6. #6
    Membre expérimenté
    Je ne comprends pas ce que tu souhaites, ni toutes tes contraintes. Le repliement se produit quand tu échantillonnes à moins de 2 fois la fréquence d'entrée, nul besoin de mesure. La non linéarité intervient pour des grands signaux, alors que tu as du mal à sortir du bruit. Y a-t-il des contraintes sur le temps de mesure ou de calcul ? Une FFT sur 10^6 points ne me parait pas infaisable. Peux tu injecter une rampe par paliers, ce qui te ramène au cas classique ? Une fonction pseudo-aléatoire ? Est il vraiment économique d'utiliser du matériel bas de gamme ?
    etc, etc.
    Ce qui s'énonce clairement se conçoit bien ( Le hautbois)

  7. #7
    Nouveau Candidat au Club
    Ce que je souhaite : établir la fonction de transfert d'une voie d'acquisition d'une chaîne de mesure.

    Les contraintes que je m'impose : utiliser en entrée un sinus balayé (pour que toutes les fréquences testées soient présentes et en plus avec l'avantage de savoir quand elles sont présentes).

    Vu que je teste des ensembles de mesure tels qu'ils sont bâtis soit par le fournisseur (numérisation seule), soit par celui qui dispose des éléments (conditionneur + numériseur + choix du filtre et de ces caractéristiques si c'est une possibilité) ce n'est pas à moi de me préoccuper du repliement, il y en a ou pas, un peu (si filtrage "mou") ou en totalité (pas de filtrage) ou pas du tout (si on respecte Shannon), je m'en moque, dans tous les cas j'applique la même procédure et elle marche. L'un des intérêts est justement de mettre en évidence le repliement et bien-sûr le gain de la fonction de transfert pour les fréquences qui se replieraient.

    "Nul besoin de mesure" : comment savoir avec quel niveau la composante au-delà de fé/2 se replie si on ne mesure pas ? Et donc comment savoir si ce repliement est problématique ou non ? Voire s'il peut être utile (car parfois il l'est) ?

    Pour la non linéarité ou d'ailleurs tout phénomène étrange qui apparait en fréquence ou en temps, on ne s'attend effectivement pas qu'il y en ait, et on se trompe ! Ma méthode met ces problèmes en évidence. Je ne vois pas dans ce que j'ai dit qui peut faire croire que je teste des matériels de bas de gamme, nos mesureurs consacrent beaucoup de temps pour acheter les meilleurs. C'est d'ailleurs hors sujet car la procédure que j'utilise doit être indépendante de la qualité des matériels (quitte à ce qu'elle soit multiple).

    "j'ai du mal à sortir du bruit", non, j'ai du mal à utiliser la "méthode n°1" quand il y a du bruit et je m'oriente vers une autre méthode dont je sais qu'elle serait insensible au bruit. Pour cette autre méthode j'ai des lacunes mathématiques et c'est sur ce point que porte ma question.

    Des contraintes sur le temps : oui, ma patience (comme je ne fume pas, je drague pas, je bois pas de café, et qu'il fait pas forcément beau dehors, j'ai du mal à m'occuper pendant que ma machine tourne).

    Des FFT sur 10^6 oui mon outil préféré (FAMOS 7) fait sans problème jusqu'à 2^22. Mais encore une fois cela n'a aucun intérêt car il faut analyser par petits bouts et je ne vois pas l'intérêt de faire une FFT sur la totalité du signal (d'ailleurs là le repliement poserait un gros problème puisque je ne distinguerais plus les composantes repliées des autres).

    Injecter une rampe par palier, je suppose que tu veux dire des signaux sinusoïdaux à fréquence croissante rabouté en 1 seul signal. Là c'est toi qui complique. Et même si mon géné BF pouvait faire, ce n'est pas ma question. J'ai une méthode qui marche dans le cas général avec un sinus balayé je souhaite conserver une procédure unique et donc standard pour la personne du labo qui fait ses acquisitions de contrôle et c'est à moi de trouver la solution d'analyse qui va fonctionner sur le cas très particulier de la carte haute tension. A moi et à tous ceux qui voudraient m'aider sur ce forum (et qui auraient la compréhension du domaine bien-sûr).

    Mais merci quand même de communiquer cela ne peut que m'aider à réfléchir. Je précise juste que même si mon approche était peu pratique (ce que je ne crois pas) la réponse à ma question aurait un intérêt technique voire scientifique dans un cadre général (ou pour le fun si tu veux).

    Cordialement.

  8. #8
    Membre éclairé
    Spectre dans la brume
    Bonjour,

    Le balayage par une sinusoïde n'est effectivement pas identique à une sinusoïde fixe puisque nous avons une sin(c(at+b)t) (modulation de fréquence par une rampe). Si a est petit nous nous rapprochons d'une sinusoïde fixe. La première solution pourrait donc être de passer de 1 s à 10 s voir 100 s. La dérive aura toujours lieu mais sera plus faible.

    Une autre approche pourrait être de faire un passage à 1s, en tirer la plage de plus forte amplitude, refaire un passage en 1s sur une plage réduite centrée sur le max (la précision importe peu) et réitérer jusqu'à ce que la plage ait une largeur compatible avec la précision recherchée. Avec une hypothèse de réduction de moitié de la plage à chaque étape, la précision d'un Hz demande moins de 18 secondes.

    Interrogation : pourquoi résoudre un problème avec des conditions matérielles aussi éloignées de l'optimal (différence de sensibilité) ? Le coût d'ingénieur serait-il très inférieur au coût d'un générateur (ou ampli) haute tension (200V ce n'est pas monstrueux) ?

    Salutations
    Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better. (Samuel Beckett)

###raw>template_hook.ano_emploi###