FFT pour un signal analogique en temps réel

Bonjour,
Je souhaite calculer la FFT d'un signal sortant d'un générateur de fonctions?
Comment je dois le faire sur Labview? J'arrive pas à trouver les bonnes fonctions qui transforment ce signal qui est en temps réel en un signal manipulable par la fonction FFT disponible. sur la palette de fonctions de Labview.
Merci d'avance pour toute remarque, aide ou suggestion.

Greetings Sir,
You can find many examples of the correct use FFT functions inside the LabVIEW Example files. The FFT functions come in two version,the 'default' and the 'point by point'
The links above show the wiring options of each of these functions.
Be aware that these vi's do not come with the LabVIEW Base version, they are available in the LabVIEW Full and onwards.
Kind Regards,
Wouter
Applications Engineering
National Instruments Belgium

Similar Messages

  • Synchronisation de l'acquisition de signaux analogique par un codeur incrémental

    Bonjour,
    Pour mon stage, je dois réaliser un VI par le biais de LabVIEW. Ce VI sera utilisé dans de le cadre de la caractérisation de moteur électrique.
    J'ai à ma disposition un cDAQ-9174 avec 2 modules qui sont : 9215 pour les signaux analogiques et 9411 pour les signaux numériques.
    On me demande de faire l'acquisition de signaux analogique comme un capteur de couple, une sonde à effet hall, ... en fonction de la position angulaire du moteur. Pour déterminer cette dernière, j'ai un codeur incrémental avec une résolution de 5000 point sachant qu'il possède une voie A, B et un index de position.
    Pour le moment, je suis parvenu à réaliser un projet permettant de mettre la position angulaire et la valeur de la tension du capteur dans un tableau pour chaque position différente. Je rencontre un problème qui est que je n'ai aucun contrôle sur l'échantillonnage. En effet, je n'ai pas un pas angulaire constant. Si l'utilisateur fait tourner le moteur très lentement, on arrive à avoir un échantillon tous les 0.018°, mais s'il tourne à une vitesse d'environ 15s/tour, il se peut que l'on ait des échantillons tous les degrés.
    J'aimerai faire une acquisition de mes signaux analogiques à chaque nouveaux angles avec une résolution angulaire choisit par l'utilisateur.
    J'ai mis une pièce jointe montant mon VI réalisé.
    En vous remerciant par avance
    Cordialement
    Pièces jointes :
    VI.jpg ‏135 KB

    Je n'ai pas beaucoup de temps en ce moment pour entrer dans tous les détails mais le principe consiste à utiliser le codeur pour déclencher les acquisitions de manière matérielle.
    Cela revient à dire qu'un échantillon de chaque signal AI et un échantillon de position est lu à chaque changement d'état de ce signal de déclenchement.
    Dans les exemples s'installant avec LabVIEW, vous trouverez des VIs montrant comment procéder pour une acquisition déclenchée par un signal externe.
    Si la résolution de 5000 impulsions/tour du codeur est suffisante, il vous suffit d'utiliser le signal A (ou B) du codeur en l'adaptant si nécessaire pour les niveaux TTL de la NI-9215. En utilisant un LS7184 configuré en mode X4, cette résolution pourrait être facilement multipliée par 4 en ajoutant de plus un filtrage hardware pour éliminer les éventuels parasites sur les signaux.
    C'est un principe que j'applique fréquemment avec les cartes DAQ multifonctions PCI. Il faudrait toutefois encore vérifier que le déclenchement externe est supporté par les deux modules que vous utilisez; vérification que je n'ai pas le temps de faire.

  • Echantillonner l'acquisition d'un signal analogique [Windev15]

    Bonjour à toute la communauté !
    J'aimerai refaire appel à votre expérience en se qui concerne l'acquisition d'un signal analogique avec une carte National Instrument 6009 USB. Je code sur Windev 15 et 16.
    Mon problème :
    Je peux relever un ensemble de point, mais pas suivant un échantillonnage.
    Mon code :
    Nbr_point est un entier
    Nbr_point=20
    TabValeur est un tableau de 20 réels
    eNbrEchLu est un entier
    Résultat est un réel
    eErreur=AppelDLL32("nicaiu.dll","DAQmxCfgSampClkTiming",eTaskhandle1,Null,200,10280,10178,300)
    Trace("rate : ",eErreur)
    eErreur=AppelDLL32("nicaiu.dll","DAQmxStartTask",eTaskhandle1)
    eErreur = AppelDLL32("nicaiu.dll","DAQmxReadAnalogF64",eTaskhandle1,Nbr_point,10.0,0,&TabValeur,Nbr_moy,&eNbrEchLu,Null)
    eErreur=AppelDLL32("nicaiu.dll","DAQmxStopTask",eTaskhandle1)
    Le code d'erreur renvoyé, dit que le nombre de paramètres de la fonction "DAQmxCfgSampClkTiming" est mauvais. Ce problème est déjà arrivé à un autre utilisateur :
    [URL="http://forums.ni.com/t5/Discussions-de-produit-de-NI/Lire-une-tension-toutes-les-3ms-avec-Windev-8-s..."]http://forums.ni.com/t5/Discussions-de-produit-de-NI/Lire-une-tension-toutes-les-3ms-avec-Windev-8-s...
    Si il y a une autre possibilité d’échantillonner je suis tout ouïe .
    Merci d'avance.

    C'est corrigé, en rajoutant le paramètre "null" l'acquisition fonctionne presque.
    Il reste tout de même une erreur. Peut-on déclarer plusieurs "clock" internes au boitier NI-6009 ? En effet lorsque je fais 2 échantillonnages de signaux, l'acquisition est partagée en deux, et je perd un signal sur deux .
    Nbr_moy est un entier
    Nbr_moy=10
    TabValeur est un tableau de Nbr_moy réels
    TabValeur2 est un tableau de Nbr_moy réels
    TabValeur3 est un tableau de 100 réels
    eNbrEchLu est un entier
    eNbrEchLu2 est un entier
    Résultat est un réel
    Résultat2 est un réel
    Itération est un entier
    Itération = 1
    i est un entier
    grCrée("GR_tension",grCourbe,Faux)
    grDestinationChamp("GR_tension",IMG_Graph)
    grDessine("GR_tension")
    eErreur=AppelDLL32("nicaiu.dll","DAQmxCfgSampClkTiming",eTaskhandle1,"",400.0,10280,10178,500,Null)
    eErreur=AppelDLL32("nicaiu.dll","DAQmxCfgSampClkTiming",eTaskhandle3,"",400.0,10280,10178,500,Null)
    BOUCLE
    eErreur = AppelDLL32("nicaiu.dll","DAQmxReadAnalogF64",eTaskhandle1,Nbr_moy,10.0,0,&TabValeur,Nbr_moy,&eNbrEchLu,Null)
    eErreur = AppelDLL32("nicaiu.dll","DAQmxReadAnalogF64",eTaskhandle3,Nbr_moy,10.0,0,&TabValeur2,Nbr_moy,&eNbrEchLu2,Null)
    POUR i = 1 A Nbr_moy
    Résultat=Résultat+TabValeur[i]
    FIN
    POUR i = 1 A Nbr_moy
    Résultat2=Résultat2+TabValeur2[i]
    FIN
    Résultat=Résultat/Nbr_moy
    Résultat2=Résultat2/Nbr_moy
    TabValeur3[Itération]=Résultat
    LIB_U_lue=Arrondi(Résultat,3)
    grAjouteDonnée("GR_tension",1,Itération,Résultat)
    grAjouteDonnée("GR_tension",2,Itération,Résultat2)
    grDessine("GR_tension")
    Itération=Itération+1
    A FAIRE TANTQUE Itération<=100

  • Envoi de signal analogique continu avec Labview

    Bonjour,
    Je voudrais savoir comment envoyer un signal analogique continue avec le DAQ assistant de Labview.
    En effet je possède une carte d'acquisiton NI 6008 et lorsque je veux envoyer un message analogique de 5V en tension ( ce qui est normalement possible avec ma carte ) il me met un message d'erreur. Je ne peux que envoyer un échantillon sur commande...
    Merci d'avance pour la réponse.
    Cordialement.

    What error message do you get??
    Plus, I suggest you to use appropriate example VI's shipped with LabVIEW for Analog generation.
    You will find it at Find Examples>>Hardware input output>> DAQmx>> Analog generation>> Voltage>> i suggest 'Generate Multiple Volt Updates-Int clock.vi,  to start with

  • Display FFT of input signal which receive from VISA read ?

    Hi.
    I receive data from MCU whcih sampling frequency is constant and we assumed it is S. now I get data from MCU with using VISA read block. I can display data, perform some functios like filtering, multiply and save them in txt files. all thing is OK.
    but when I want to see FFT of incomig data on chart , it doesn't work !! I use this VI for calculate and display FFT of input signal (from VISA read) and display it which in Y-Axis is magnitude and X-Axis is frequency. 
    in your mind why this is not work and what I must done for show input signal FFT and frequency components ?
    Thanks.

    If I understood this correctly, you are getting the correct results when outputting to a text file but you are not able to see the results when trying to output to a chart?
    This discussion may be of some help to you.
    Rob S
    Applications Engineer
    National Instruments

  • Which daq card supports to perform fft operation on complex analog signal

    i need to process complex analog waveform for radar based applications.i need a suitable daq card for doing that task.please specify suitable card and application notes to perform dsp based applications.

    The answer to your question depends largely on the sample rate, resolution, and number of channels you want to have. The first place I would look is the M Series devices at  http://www.ni.com/dataacquisition/mseries.htm. Using LabVIEW, these analog input devices can read in a signal and easily perform an FFT on it.
    Michael P
    National Instruments

  • Décaller un signal dans le temps

    Bonjour,
    Dans ma programmation, je récupère deux signaux provenant de deux détecteur selfique installé à 180° l'un l'autre avec un rotor ferromagnétique en leur milieu.  
    Les signaux que je récupère sont en opposition de phase. J'aimerais pour les comparer entre eux, que les signaux soient en phase. Mais je n'arrive pas à faire ce bout de programmation... 
    J'ai déjà essayé en rajoutant Pi au signal en passant par sa FTT, mais celà ne marche pas car mon signal n'est pas purement sinusoïdale. Sur le programme en pièce jointe il y a le complexe conjugée pour déphasé, celà marche mais a des moments il se désynchronise (cf Essai).
    Merci d'avance pour vos réponses et d'avoir pris le temps de lire ceci.
    Cordialement Julien.
    Pièces jointes :
    Programme.docx ‏67 KB
    Essai.docx ‏43 KB

    Bonjour,
    si vous passez par des waveform, il est possible d'utiliser la fonction "aligner des waveforms".
    Cordialement
    Cordialement
    L.MICOU

  • Générer un train de signal analogique

    Bonjour,
    j'ai un travail de fin d'étude qui consiste à créer un simulateur sur labview . pour éviter désormais d'utiliser le stimulateur mannuel.
    c'est un nouveau logiciel pour moi et je n'arrive pas à choisir les modules adaptés représentant ceux du stimulateur actuel. ma carte 'acquisition est PCIe-6341.
    1-je voudrai générer un signal de durée 0.2s, avec un temps de répétition de 10ms,largeur du pic 500microsecondes,à une tension 5v.
    2-choisir une ou plusieurs impusions.
    Pièces jointes :
    Gensignal6_03_2014..vi ‏97 KB

    bj  et merci ecore pour ta proposition,
    dsl pour tout ce silence cause de maladie.
    je ne l'ai pas trouvé, mais cela ma aider' à trouver  une solution à un de mes problèmes : l'analyse en temps réel.
    cependant j'aimerai avoir de l'aide concernant "le déclenchement d'un enregistrement avec un délai de 200ms".
    ci-dessous joint mon programme.
    Pièces jointes :
    testTReel_T_L10_04_2014_.vi ‏317 KB

  • How to do FFT of vibrations signal?

    Hello,
    I'm trying to measure the time and frequency spectrum of a vibrations signal.
    My time plot seems to be ok, but my FFT graph doesn't look right.
    An expected vibration FFT graph of a bearing should look like peaks at various frequencies, but my FFT graph looks only like a linear line.
    Does anyone know what's wrong with my attached program?
    Thank you.
    Y.Yang
    Attachments:
    3 axis white and green sensors v2.vi ‏122 KB

    Your code looks fine.  I double checked how you're acquiring data, and it seems fine.  I'm pretty sure that you are acquiring an FFT and the graph is just not scaled correctly.  Do the following:
    Right Click Waveform Graph 2 >> X Scale >> AutoScale X
    Right Click Waveform Graph 2 >> Y Scale >> AutoScale Y
    I've also attached an example of what I've done to get the FFT from a simulated signal.
    Che T.
    Applications Engineer
    National Instruments
    Attachments:
    FFT.vi ‏67 KB
    fft.png ‏43 KB

  • Digitaliser un signal analogique CVI

    Bonjour,
    Je possède une PCIe 6323 sur un banc de test multiproduit. Ce banc devant accueillir plusieurs interfaces, chacune d'elle est détrompée électriquement grâce à 4 bits (tension 0V-5v).
    Au départ l'acquisition de ce codage était faite sur 4 entrées PFI (plus 2 pour d'autre capteur tout ou rien) de la 6323 mais ayant besoin de les récupérer je souhaite faire cette acquisition sur des entrées analogique. J'ai donc créé une tache dans laquelle j'utilise la fonction suivante pour configurer mes entrées:
     DAQmxCreateAIVoltageChan (gmxPosageTask, "Dev1/ai10:15", "Codage Posage", DAQmx_Val_Cfg_Default, 0.0, 5.0, DAQmx_Val_Volts,"")
    Je cherche maintenant à récupérer les valeurs de ces entrées de façon à avoir un 1 pour un niveau supérieur à 2,5V (par exemple) ou un 0 pour une valeur inférieure à 2,5V. J'ai tenté avec un
    DAQmxReadBinaryU32 (gmxPosageTask, 1, 1.0, DAQmx_Val_GroupByChannel, puiVal, 6, &written, 0)
    Mais j'ai une eurreur sur puiVaL qui serait trop petit!!!! Pourtant il est déclaré comme unsigned int *puiVal.
    Quelqu'un pourrait il m'aider sur ce pb ou me dire si j'utilise la bonne fonction ou pas SVP.
    Merci d'avance.
    Résolu !
    Accéder à la solution.

    N'ayant pas de réponse, j'ai finalement trouvée une solution a mon pb. Si cela peut aider quelqu'un, voici ce que j'ai fait:
    J'ai réalisé une acqisition des entrées grâce à un
    DAQmxReadAnalogF64(gmxPosageTask, 1, 1.0, DAQmx_Val_GroupByChannel, puiVal2, 6, &written, 0)
    Puis j'ai créé un mot de 6 bits en comparant mes valeurs à 2,5V
    for ( i=0; i<6; i++)
       if ( puiVal2[i]<2,5 )
           (*puiVal) = ((*puiVal) |(0<<i));
        else
            (*puiVal) = ((*puiVal) |(1<<i));
    Voila, je ne sais pas si c'était le plus simple à faire (bien que n'étant pas compliqué) mais si ça peut aider...

  • FFT d'un signal

    Bonjour
    J'ai réalisé une application qui échantillonne des signaux à 5kHz (avec une carte NIUSB6210).
    Je souhaite garder uniquement le signal à 50Hz de ces signaux (avec une FFT) et avoir la courbe à 50 Hz.
    Est ce que ce traitement et possible?
    Si oui comment?
    Merci
    Cordialement
    Damien

    Bonjour,
    Merci d'avoir posté votre question sur le forum de national instruments.
    Ce traitement est possible, il vous fait consulter l'aide labVIEW et aller dans recherche d'exemples. Il vous faut utiliser un passe bande en choississant le bonne ordre etc...
    J'ai trouvé un VI sur la FFT. Vous pouvez le consulter et prendre exemple.
    Brice S.
    National Instruments France
    Pièces jointes :
    Frequency Analysis of a Filter Design - DFD.vi ‏32 KB

  • FFT avec un signal d'entrée variable

    hello to all
    who has an idea how I can change the input FFT Example (windowed FFT) which in underneath the tree Labview 2011
    see Figure telque entry that I would change is cerculer black
    Pièces jointes :
    pa.jpg ‏346 KB

    Hello basmasag,
    I'm not sure what you want to do, but you can modify this part of the diagram with some E/S from modules installed on your target for example.
    You can put instead of 'sine wave generator', 'square wave generator' for example too.
    I hope it's help you.
    Regards,
    Jérôme Henrion | NIF - Application Engineer | PXI Captain
    Certified LabVIEW Developer

  • Apply FFT on recording signal

    Hi,
    since the ios 4 we can take advantage of the accelerate framework which holds the vDSP API and this has a FFT in it. I want to use that for the microphone input and filter low tones with a low pass filter. can somebody explain me how to apply the FFT to my microphone input and then deal with the data from the FFT or does somebody has a link for me explaining that?
    would really appreciate that, thx.
    palmdale

    I dont think I more info about this. Try googling yor way around or try looking into the free books apple has provided for developers. You might find something in these books.
    http://www.tuaw.com/2010/12/19/apple-posts-free-developer-documentation-for-iboo ks-users/

  • Perform FFT on stationary signal

    so once i capture all my data (mains 50Hz) and i want to perform an FFT on it, how do i then do it while its stationary. ive almost got some code finished, however, its still going to be streaming isnt it?.  i need to make stationary. any advice? 
    cheers.

    You can accumulate data in a buffer until you reach the amount of data you want to analyze. Then clear the buffer and start over. Or you can use the Point-by-Point VIs which will do the accumulation for you. If you open the PtbyPt VIs you will find that they build an internal buffer.
    Lynn

  • Pb : génération de signaux analogiques

    J'utlise une carte NI6713. Je voudrai pouvoir piloter les 8 sorties de cette carte afin de sortir des fréquence différentes à des moments différents. Or il me semble que les drivers disponibles ne le permettent pas (fonctions WFM : WFM_Op n'est utilisable qu'une seule fois)

    J'utlise une carte NI6713. Je voudrai pouvoir piloter les 8 sorties de cette carte afin de sortir des fréquence différentes à des moments différents. Or il me semble que les drivers disponibles ne le permettent pas (fonctions WFM : WFM_Op n'est utilisable qu'une seule fois)

Maybe you are looking for

  • Problem with Categories in Numbers

    Hello everybody. I`ve got a problem which I guess is not answered yet. I try to explain it with pictures you can find on my google+ site here (no registration necessary.) : https://plus.google.com/105570680872963266365/posts/AMXAATUCtJT?defplm&hl=de&

  • Logout failure by AuthContext

    Hi All, I have setup a J2EE agent and IdServer successfully. I would like to write a logout jsp/servlet at agent side server. I try to use AuthContext where logout method is offered. Here is the code: AuthContext lc = new AuthContext(token); lc.logou

  • UnmarshalException - Method not found

    I am using weblogic 7. The server and client are separate machines. When I ran the client, the following error appeared: Start server side stack trace: java.rmi.UnmarshalException: Could not unmarshal method ID; nested exception is: java.rmi.Unmarsha

  • How can speed up loading Plug-in

    I developed a applet program. It works well now. However, my customers complain the speed of its start-up. I checked the time and came to the conclusion that it is for slow load of Plug-In. How can I speed up it. Is there any way that activates the p

  • Problem in using Select Single

    Hi Experts, This is Prabhakar The following requirement is giving littlebit trouble to me. Here I don't know how to use Select single for selecting maktx field from MAKT table and how to link it to MARC and MBEW tables. How i will write code using wi