le 07-30-2009 11:01 AM
Le sujet est assez présent sur le forum.Mais j'ai pas la solution à mon "problème".
Voilà je dois, pour alimenter un moteur, générer deux signaux sinusoïdaux en quadrature de phase (décalage de pi/2).
La fréquence est fixe 400Hz. On doit pouvoir inverser les phases (freinage, rotation en sens inverse) et modifier l'amplitude (vitesse du moteur) à la volée.
J'ai fait un premier jet avec les vi "simuler un signal". Ca marche mais ça consomme pas mal de ressource et ça ne me semble pas très léger.
J'ai fait une deuxième solution ou là je calcul une période que je stocke dans un tableau. Et ensuite je rebalaye "éternellement" ce tableau. C'est beaucoup moins gourmant en ressource. Mais là je ne maitrise visiblement plus la fréquence en sortie.
Pouvez vous regarder et me corriger, voire me proposer carrément un nouveau porduit ? Avec un maximum de commentaires et de pédagogie ça serait un must.
Je vous remercie par avance.
le 07-31-2009 09:04 AM
bon j'ai une nouvelle version à proposer. ça m'a l'air plus clair comme code. Sauf que ...
la fréquence n'est pas tenue et surtout elle change d'une phase à l'autre. La carte utilisée est une pci-6221. La tâche est configurée en «1 échantillon sur demande» (logiciel). Les paramètres d'échantillonnage des vi «génération de waveform sinusoïdaux» sont paramétrés pour ne donner qu'une seule période, qui sera répétée n fois dans la boucle.
Pour améliorer, je ne sais pas :
1) si je dois utiliser finite samples ou continuous samples
2) si je dois utiliser une boucle cadencée ou non (je suis sous windows)
3) si je dois mettre le vi write hors de la boucle, après le cadencement, et le vi start dans la boucle (ça me parait louche)
4) toutes vos suggestions sont les bienvenues
le 07-31-2009 09:30 AM
Bonjour,
Je vous fournis en pièce jointe un VI qui peut resoudre votre problème.
Cordialement,
Aurélien J.
National Instruments France
08-03-2009 09:47 AM - modifié 08-03-2009 09:49 AM
Bon eh bien ça marche ! Je n'ai fais que supprimer le VI "start task" avant la boucle while. Je ne comprends pas trop pourquoi ça marche. Sans doute grâce à l'option autostart du VI "write task"
Et aussi pour le vi de cadencement de la tâche, j'ai changé "finite samples" en "continuous samples".