Générateur de sinus à fréquence variable
Bonjour à tous,
Comme le titre l'indique, je cherche à mettre en oeuvre un générateur de tension sinusoidale à fréquence variable. J'ai actuellement réussi un créer une partie de mes attentes, c'est à dire que je génère bien une tension sinusoidale variant d'une fréquence F1 à une fréquence F2 dans un temps imparti. Cependant j'aimerai, une fois ma fréquence arrivée à ma valeur F2 décrémenter vers ma fréquence F1 . ( F1-F2-F1-F2 etc selon le nombre de cycle que je souhaite réaliser .)
Je vous joint le Vi que j'ai réalisé, Pour ma part je pense que c'est au niveau du bloc "chirp" que la modification doit-etre réalisée mais je après diverses tantatives je n'y arrive point..
Cordialement
Pièces jointes :
test avec DAQ assistant 2.vi 50 KB
Chirp.png 1320 KB
Bonjour Geoff54,
Merci d'avoir posté sur le forum NI.
Je ne suis pas sur d'avoir bien compris, votre signal est-il simplement un générateur sinusoïsale dont l'amplitude décrémente en gardant constant l'offset ou votre signal doit il avoir la même forme que celui dans le VI ci joint?
Pourriez vous éventuellement nous renvoyer votre projet (il manque une dépendance).
Cordialement.
P Denis
National Instruments
Pierre_D
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
LabVIEW Tour
Journées Techniques dans 10 villes en France, du 4 au 20 novembre 2014
Pièces jointes :
test.zip 12 KB
Similar Messages
-
Bonjour à tous,
Je cherche à générer un signal sinusoidale à fréquence variable à partir du FPGA d'un cRio, mais rien n'y fais, le vi "Sine Wave Generator" ne marche pas...
Quelqu'un connaitrait-il une alternantive à ce VI?
Cordialement,
Nathan
Résolu !
Accéder à la solution.Ah mince j'avais oublier ce post ^^
Au final j'ai résolu mon probleme, je ne sais pas pourquoi ca ne marchait pas mais j'ai trouvé une alternative qui fonctionne à l'aide du VI Générateur de fonction élémentaire disponible dans la palette génération de waveform.
A bientot
Nathan -
Acquisition fréquence variable et basse fréquence
Bonjour,
Je suis débutant en LV et dois mesurer la vitesse de rotation d'un moteur qui ralenti. Pour cela, un capteur de vitesse
me délivre un signal traité par une carte électronique. Un signal carré est issu de cette carte
dont la fréquence est image de la vitesse de rotation du moteur (160 Hz => 1600 tr/min et 0 Hz => 0 tr/min).
La carte électronique apporte quelque fluctuation de fréquence, j'utilise donc deux compteur large gamme
pour mesurer la fréquence.
Mon problème est le suivant:
Mon objectif est d'avoir en "temps réel" ( juste une indication, pas de "vrai" temps réel)
sur ma face avant la vitesse de ralentissement de mon moteur. Cela fonctionne lorsque celui ci tourne
jusqu'à 150 tr/min environ (15 Hz) en dessous mon VI bloque et je viens même dépasser le time out fixé lors
de l'acquisition. Il faudrai au moins que j'observe le ralentissement jusqu'à 10 tr/min.
Si quelqu'un a une idée pour pallier ce problème.
Par avance merci pour votre aide
Vincent V.
Pièces jointes :
Ralentissement.vi 83 KBC'est toujours le même soucis quand on a (le grand plaisir) de rencontrer un débutant :
1) un Block Diagramme qui fait plusieurs écrans
2) des dizaines de variables locales partout, partout
3) ... bravo !!!! ... tu es passé a côté de la 3eme chose qui caractérise un débutant .... les structures séquences il n'y en a pas (ouf)
Pourquoi utiliser toutes ces variables locales ???
... alors que tu disposes sur le Diagramme de toutes les informations .
Pourquoi ne cables-tu pas directement sur le terminal correspondant ? (au llieu de RE-lire l'info via une variable locale)
Je ne vois aucune gestion de l'erreur sur ton Diagramme.
Tu as plusieurs noeuds de propriété "de réinitialisation" ... ces noeuds sont flottant !!!
Qui te dis que cette "réinitialisation" se fera en début d'exécution et pas à la fin ?
Avec labview, le séquencement du code se fait via le "flux de données" .... sans flux de données l'ordre d'exécution est inconnu.
Cabler les entrées/sorties d'erreur permet d'établir un flux de données.
La première chose :
réduire ton code à UN écran (au passage, aligne, fait "du propre")
supprime tes variables locales.
crée un flux de données pour tes noeuds de propriété. -
Lire une fréquence variable, parfois nulle
Bonjour,
Je voudrais lire une fréquence avec DAQmx, sur une carte PCI 6624 (compteurs).
J'arrive à le faire simplement avec le DAQ Express, mais le problème est que cette fréquence varie au cours du temps, et peut, dans certains cas, être nulle. Quand elle est nulle, j'ai une erreur comme quoi le timeout est dépassé.
Comment puis-je faire pour résoudre ce problème ? Avec les noeuds de propriété ?
Je voudrais pouvoir lire la fréquence en permanence, et savoir quand elle est nulle, sans avoir d'erreur...
Merci d'avance.Reliez le VI que j'avais posté ici à la sortie du cluster d'erreur de votre VI Express en définissant son entrée Erreur à annuler selon l'erreur en cas de fréquence nulle (-200474 si je ne m'abuse). Alternativement, le même résultat peut être obtenu en utilisant General Error Handler.vi en définissant ses entrées de la manière suivante :
exception action : cancel error on match
exception code : code de l'erreur à ignorer
La capture d'écran ci-dessous illuste les deux variantes :
Donnez-moi des nouvelles si le VI Express devait tout de même afficher une boîte de dialogue avec l'erreur et je vous indiquerai alors les opérations suivantes à réaliser.
Message Edité par JB le 04-07-2008 10:11 AM
Attachments:
Example_VI_BD2.png 4 KB -
TestStand : génération automatique de steps et problème de référence VeriStand
Bonjour,
je développe actuellement un générateur automatique de séquences TestStand en LabVIEW.
Certains de mes steps devant s'interfacer avec VeriStand, j'ai donc créé un premier step codé en LabVIEW qui se connecte à VeriStand et qui stocke la référence obtenue dans une variable TS de type Object.
Le problème vient lorsque je souhaite transmettre cette référence à d'autres steps LabVIEW qui doivent interagir avec VeriStand. En effet, j'ai l'erreur suivante qui apparaît dans TS lorsque j'ouvre la séquence que j'ai généré :
Le problème disparaît lorsque je clique sur le bouton "Reload VI prototype".
J'ai constaté que ce problème n'apparaissaît qu'avec les steps LabVIEW qui nécessitent une référence vers VeriStand sur leur connecteur (que ce soit en direct sur le connecteur ou via un cluster).
Une de mes hypothèses serait que cela vient du fait que ma référence vers VS n'a pas de valeur par défaut.
Qu'en pensez vous ?
BenoîtBonjour Benoît,
Avez-vous bien en sortie de votre VI une sortie de type référence ?
Si oui l'envoyez-vous bien aux step suivant ?
Voici deux liens qui vous permettrons de simplifier votre utilisation. Il existe des steps VeriStand créés spécialement pour faciliter leurs utilisation.
https://decibel.ni.com/content/docs/DOC-40123
https://decibel.ni.com/content/docs/DOC-25218
Cordialement,
Alexis JUBIN -
Parallélisme FPGA - Génération / Echantillonnage
Bonjour à tous,
Je travail actuellement sur une application sensé générér un signal sinusoïdale à fréquence variable, qui sera alors envoyé dans un procédé de commande. Cette même application doit alors échantillonnée la sortie de ce procédé.
Les deux partie marche parfaitement séparement, mais une fois ensemble, je constate des sauts sur l'oscilloscope du sinus généré ainsi que sur l'échantillonnage...
J'ai essayer de jouer sur les fréquences d'échantillonnage, mais rien n'y fais...
Quelqu'un aurait une idée de où le probleme peut venir?
Cordialement,
Nathan
P.S.: Vous trouverez en piece jointes mes codes, c'est peut etre plus pratique pour dépanner
Résolu !
Accéder à la solution.
Pièces jointes :
Regul Num.zip 389 KBEn général c'est une jolie preuve par 3 selon la profondeur de la FIFO, la fréquence d'acquisition FPGA (ou génération), et le temps de cycle côté RT.
Exemple : si j'acquiers dans le FPGA 1 échantillon toutes les 10µS, et je l'envoie dans ma FIFO DMA, côté RT je dois faire en sorte de lire 1000 éléments toutes les 10ms (arbitrairement) (à condition d'avoir une FIFO FPGA suffisamment grande pour qu'elle envoie les données vers le controleur au fil de l'eau sans en perdre).
Dans la pratique, pour lire ces 1000 éléments, il y a plusieurs méthodes, l'essentiel est de ne pas perdre de données, de ne pas avoir un CPU à 100% et de ne pas laisser les FIFOs se remplir.
Une illustration complète dans le classique cRIO Dev Guide :
- http://www.ni.com/compactriodevguide/f/
La leçon 3 contient notamment un exemple.
--Eric
Eric M. - Application Engineering Specialist
Certified LabVIEW Architect
Certified LabWindows™/CVI Developer -
DAQmx : Synchronisation de deux compteurs
Bonjour,
Je commence à travailler avec DAQmx et je tombe sur un os. De multiples recherches un peu partout n'ayant pas résolu mon problème (pourtant simple), je me décide à envoyer un message sur ce forum.
J'ai un boîtier USB-6212 et je souhaite générer deux trains d'impulsions (en fait, une horloge et une impulsion de fréquence variable). L'impulsion a une durée égale à une demie période d'horloge et doit impérativement avoir son front montant alors que l'horloge est à son état bas.
Pour cela, je pensais utiliser les deux compteurs ctr0 et ctr1. J'arrive parfaitement à générer l'horloge et l'impulsion, mais seulement en mode de cadencement "Implicite (compteur)" et évidemment, elles ne sont pas synchronisées entre elles. Quand j'essaye de passer en mode "Horloge d'échantillonage", j'ai droit à deux erreurs selon le cas: l'une qui me dit que je n'ai pas le droit d'utiliser le mode "échantillons continus" et que je dois utiliser "point à point", et l'autre qui me dit que "point à point" n'est pas supporté.
Connaissez-vous un moyen de contourner le problème ?
Je joins mon vi (qui ne marche pas...).
Merci de votre aide et bonne soirée !
JB
Pièces jointes :
Essai_Synch.vi 29 KBBonjour et merci de ta réponse.
Je ne suis pas sûr de bien comprendre comment faire ce que tu dis. DAQmx a encore beaucoup de zones d'ombres pour moi...
Dans le vi joint, j'ai essayer de faire ce que tu dis. Il fonctionne, mais les deux pulses ne sont pas synchrones.
Est-ce que STP tu pourrais le regarder rapidement et me dire si c'est bien ce à quoi tu pensais ?
Merci beaucoup !
JB
Pièces jointes :
Essai_Sync_3.vi 25 KB -
Erreur de calcul amplitude FFT à f = 0Hz
Avec l'objet sousMesuresSpectrales [subSpectralMeasurements.vi] de la librairie LabView, sous LabVIEW7.1\vi.llb\express\express analysis\SpectralBlock.llb, je constate un problème de calcul sur la FFT pour fréquence = 0 Hz en amplitude.
Dans mon application, j'ai exporté ce VI express pour n'utiliser que certaines de ses fonctionnalités, en autres propriétés : "Paramètres du signal" pour afficher sa FFT.
Normalement, à la fréquence = 0Hz, l'amplitude max et efficace doivent être identiques et correspondre à la composante continue i.e DC value. Ce résultat n'est pas observé. J'observe le rapport racine de 2 habituel pour une valeur pic ou RMS à f = 0Hz.A présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
Bonjour,
pour parametrer un compte mail, le choix pop/imap ne s'offre plus et le compte mail ainsi créé se fait automatiquement en imap.
Commet faire pour eviter que lorsque j'efface un message de mon iphone il soit effacé aussi du serveur ?
il n'y a plus d'option effacer du serveur : jamais comme sur les versions precedentes.
merci d'avance si qq a une solutionBonjour Florent_A,
Merci déja de t'interesser à mon sujet, pour répondre à ta question la tempo de 50 ms dans la boucle for n'a pas d'intéret particulier je l'ai supprimé, cependant le problème est toujours le même.
certe partie consiste à générer un tableau d'amplitude et de fréquence à partir des points de cassures définis auparavant.
Je résume :
1°) définition du profilé ( points de cassures principaux)
2°) Bloc Sweep sine ( construit un tableau pour générer les amplitude et fréquences intermédiaires entre ces points de cassures, plus le paramètre "fréquency line" est important plus le nombre de points générés sont conséquents)
Mon système est assez simple voici ma boucle de régulation :
Je réalise un asservissement, j'ai une génération d'un signal sinusoidale de fréquence variable et une mesure d'amplitude à l'aide d'un accéléromètre.
cordialement -
Bonjour,
J'ai changé d'ipod à Noel, et j'ai reçu comme cadeau le nouvel ipod nano 6è generation.
Il fonctionnait trés bien jusque hier quand il s'est mis à s'arrêter au bout de quelques secondes avec la mise en veille de l'écran!
Que faut-il faire pour que mon ipod fasse ce que j'en attends : lire de la musique en continu?
Merci de m'aider car je ne sais pas quoi faire!
J'ai déjà essayé les commandes de réglage de la veille, sans véritable succès!
J'ai réinstallé le logiciel sur itune, restauré puis synchronisé, aucune évolution...
Rien n'y fait, je suis bloqué avec cette panne!
D'avance, merci!A présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
Bonjour,
je viens vers vous car je bloque sur une question d'échantillonage..
Je dispose d'un boitier NI USB 6211 ( 16 bit , 250 kS/s ) , j'utiliserai son entrée analogique et sa sortie analogique aux mêmes fréquences . La fréquence maximale que je serai amené à mesurée est de 15 Hz et au maximum 7500 Hz.
Mon entrée analogique récéptionne une accélération et ma sortie analogique génère une tension sinusoidale à fréquence variable.
Quelle formule concrète permet de définir le nombre d'échantillons à prélever ?
Cordialement
Résolu !
Accéder à la solution.Bonjour Geof,
Je principe est d'utiliser le théorème de Nyquist. Celui ci indique que pour retrouver être capable de récupérer la fréquence de ton signal, il faut échantillonner à une fréquence égale au minimum à deux fois la fréquence la plus élevée de ton signal.
>> Sampling Theorem
>> Bandwidth, Sample Rate, and Nyquist Theorem
Cela permet de récupérer la bonne fréquence/période de ton signal. Pour récupérer la bonne forme du signal, il faudra augmenter cette proportion. En principe, il est conseillé d'échantillonnée à une fréquence de 5 à 10 fois la fréquence max de ton signal.
Cela répond-il à ta question?
Bonne journée,
M-Junior -
salut les amis!
alors je voulais faire un teste toute simple, ce teste c'est comparer deux réel! et faire un test si la deuxieme valeur depasse la premiere un messgae s'affiche! et ceci en boucle puisque un des réel est variable!!
j'ai fait comme indique l'image ci-joint! et ca n'a pas marché!
des suggéstions? et merci
Pièces jointes :
test.PNG 7 KBoui, plus "propre" ... mais la propreté n'est pas la finalité de se passer des "locales".
Une variable locale est un "objet" qui se trouve "en dehors" du flux de données.
Tu ne maîtrises pas "le moment" où la valeur du Contrôle sera effectivement dupliquée dans sa variable locale correspondante.
La variable locale est-elle "à jour", ne l'est-elle pas ? ... tu ne peux avoir aucune certitude absolue à ce sujet.
La seule façon d'être certain, est d'encapsuler la variable locale dans une structure séquence, de façon à forcer cette locale a se trouver "dans" le flux.
Ici, le code est simple ... mais si tu lis et écris dans une locale à des endroits différents, vois depuis des process différents (boucles différentes),
là ... tu auras des soucis de " race condition ".
Labview est un langage qui est basé sur le "flux de données". Je suis contre tous les objets qui "brisent" ou "forcent" ce flux ... structure séquence, variable locale ...
Eventuellement, un cas ou les variables locales peuvent être utilisées (en écriture), est le cas de l'initialisation avant exécution.
et bien entendu ... dans une structure séquence et dans le flux. Jamais de "locale flotante".
Les locales sont des objets "exotiques", qu'il faut utiliser le moins possible et toujours avec beaucoup de réflexion. -
Bonjour j ai un MBA et je souhaite liberer de la place sur SSD et j ai donc acquis un disque dur externe de 1T .
Quelle est la procedure a suivre pour deplacer la bibliotheque ITUNES et IPHOTOS sur le disque externe et y acceder
merci d vance
jmpA présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
depuis 15 jours je n'arrives plus à utiliser la souris liée au Trackpad . Le curseur se déplace mais lors d'appui sur le carré celui -ci dysfonctionne et n'ouvre pas les applications ou bien avec retard
La souris externe USB fonctionne parfaitement
QSue dois je faire
J'ai procédé à un controle avec CD d'installation et remise à jour après réparation et réinstallation complète sans résultats
Est ce une panne électrique ou bien Logicielle ?A présent , je réussis à mesurer mon accélération, obtenir le déplacement et ma vitesse ( pour tenir compte du gabari ) et je réalise un singnal sinusoidale de fréquence variable ! Dois-je utiliser la fonction PID pour mon asservissement ?
Je ne sais également pas comment tenir compte des points de cassures de mon "gabari" présent en pièce jointe auparavant ? Help -
Fréquence maximal générée par sbrio-9631 et carte de sorties analogiques NI-9263
Bonjour,
Je suis relativement nouveau au concept de programmation LabView. Voici donc mon problème. J'essai de générer une onde sinus variable en fréquence de 100 à 500 kHz. Je suis partie d'un exemple fourni avec le kit d'évaluation SBRIO NI9631 que j'ai modifié selon mes besoins particuliers. La partie du FPGA fait appel à un générateur d'onde sinus dans une boucle. J'obtiens une belle forme sinusoïdal que j'envoie conjointement avec un autre signal dans une pile FIFO pour traitement ultérieur dans le HOST. Tout va bien jusque-là mais, lorsque ma demande (en periodes/tick) dépasse 10kHz, la fréquence actuelle commence à diminuer pour atteindre 0Hz pendant que la demande de fréquence est de +/-20kHz (mesure prise à l'aide d'un oscilloscope extérieur) et ainsi-de-suite pour toute la gamme de fréquence demandée sans jamais dépasser 10kHz. Est-ce la limitation du kit d'évaluation? Quelqu'un a une idée?
Pièces jointes :
AO_FPGA.jpg 257 KBBonjour,
Lorsque vous dépassez 10kHz, la génération sur AO0 et AO1 se passe bien ? (si vous mesurez à l'oscilloscope).
J'ai modifié votre code coté RT, car vous n'aviez pas spécifié de buffer pour les FIFOs DMA coté RT. De plus, il ne faut pas que vous preniez 1024 points à chaque tour de boucle, sinon la FIFO va être pleine.
Coté FPGA, j'ai modifié le remplissage de la FIFO DMA. Pouvez vous vérifier que vous n'avez pas de TimeOut ? Si vous avez un TimeOut, vous essayez d'écrire dans une FIFO pleine, et vous perdez des points.
Vous trouverez le code en pièce jointe. Dites moi si il y a du changement.
Cordialement,
PS: Je ne comprends pas à quoi sert le code pour attendre une IRQ coté RT, car vous ne générez pas d'IRQ.
Benoit S. - Field Sales Engineer
Certified LabVIEW Developer
Certified TestStand Developer
National Instruments France
#adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
Été de LabVIEW 2014
12 présentations en ligne, du 30 juin au 18 juillet
Pièces jointes :
Filter and DC-RMS.zip 883 KB
Maybe you are looking for
-
Nokia 5800 - the contact list doubles in size by d...
Hello, I own a Nokia 5800, After updating firware from v11 to v20, i started facing a weird problem. from the home screen when i press the contacts button, the contact list comes up as expected, but after about half a sec, all the contacts gets dou
-
Cannot pay bill! URGENT PLEASE READ!
i cannot afford to pay my bill this month i was let go from my job 2 weeks before giving birth my employer lied about reason i was fired so i was denied unemployment for 7 weeks and now have to reapply ive exhausted all the money i had in my account
-
Oracle BI Apps questions, kindly help
Hi All, I wanted to checkout the preconfigured reports that come with Oracle BI applications, for this i had download and installed OBIEE 10.1.3.4.1 ORacle BI Applications 7.9.5 Informatica PowerCenter 8.6.0 Oracle EBS R12, Question 1) I see that the
-
Sqlj TestInstallSQLJ.sqlj
Trying to translate this sample code brougt the following error: unexpected error occurred... java.lang.NoSuchMethodError: sqlj.runtime.profile.ref.EntryInfoImpl.<init>(Ljava /lang/String;IIIILjava/lang/Object;[Lsqlj/runtime/profile/TypeInfo;[Lsqlj/r
-
I made the mistake of changing permissions within page info on my fantasy football site. Was trying to get rid of an advertisement that covered areas of the page and prevented me from setting my weekly starting lineup. Rather than doing that, it has