Discussions au sujet des autres produits NI

annuler
Affichage des résultats de 
Rechercher plutôt 
Vouliez-vous dire : 

me corriger : "générer deux sinus en décalage de phase"

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.

Tout télécharger
0 Compliments
Message 1 sur 4
3 015 Visites

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.

 

sortie moteur3.png 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

0 Compliments
Message 2 sur 4
2 984 Visites

Bonjour,

 

Je vous fournis en pièce jointe un VI qui peut resoudre votre problème.

 

Cordialement,

0 Compliments
Message 3 sur 4
2 981 Visites

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". 

Message Edité par Binoyte le 08-03-2009 09:49 AM
0 Compliments
Message 4 sur 4
2 960 Visites