Discussions au sujet de NI LabVIEW

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

Trigger sur sinusoidale et signal carré

Bonjour à tous,

 

je souhaite réaliser un calcul uniquement pendant un laps de temps déterminé grâce à un trigger sur front montant d'un signal carré et autre sur le franchissement de la valeur 0 d'une sinusoidale.

ne pouvant encore connecter mon système d'acquisition je me contente de simuler ces signaux dans labview. mon problème est le suivant:

les triggers ne semblent pas bien bien fonctionner lorsque je monte en fréquence... j'explique !

 - cas du trigger sur front montant: fonctionne jusquà un signal carré de 10Hz, au delà, il reste bloqué à 1... j'ignore pourquoi

 - cas de la détection de franchissement du zéro: fonctionne jusquà une sinusoide de 49Hz, ne fonctionne pas à 50Hz mais semble refonctionner à 51Hz....

j'ai eu beau chercher sur la toile, je ne comprends ce que j'ai fait de mal !

 

j'ai mis le code en pièce jointe.

 

si vous pouviez m'aider ça serait cool 🙂

0 Compliments
Message 1 sur 2
1 901 Visites

Bonjour,

 

Je n'ai regardé que la sinusoïde mais les problèmes sont certainement applicables aux signaux carrés.

 

1) Les fonctions que tu utilises pour simuler les signaux génèrent plusieurs périodes par itération de boucle while. Avec tes paramètres (sinusoïde, 50Hz, 10 000 Hz en échantillonnage, 1000 échantillons par itération), à chaque itération la fonction génère 5 périodes (50/10000*1000).

 

2) La fonction de trigger a besoin d'être appelée deux fois pour comparer l'échantillon en entrée. Pas LES échantillons, échantillon au singulier. Ton VI des points rouges en entrée, ça veut dire qu'il change le type de donnée du fil connecté en double (DBL). Pour ça, le VI ne garde que la dernière valeur du signal en entrée. L VI ne vérifie pas le franchissement du 0 pour les 5 périodes mais seulement une fois à chaque appel. 

 

1) & 2) "fonctionne jusqu'à 49Hz, pas à 50Hz mais 51Hz ok." Parce que les paramètres du générateur de signal utilise des multiples de 50. Pour 50 Hz (ou 25, ou 5, etc), la dernière valeur des 5 périodes sera toujours la même donc en comparant ces valeurs, le VI ne voit jamais de franchissement du 0. Pour d'autres fréquences (49 Hz ou 51 Hz par exemple) la dernière valeur sera légèrement différente à chaque itération et finalement le VI détectera un franchissement. Mais le nombre de franchissement sera complètement faux.

 

Pour détecter un franchissement il va falloir comparer les valeurs plusieurs fois par période. En paramétrant le générateur de signal à 50Hz, 500 d'échantillonnage et 2 échantillons par itération tu vas détecter tous les franchissements de 0. Tu devras certainement créer une boucle while spécifique si tu utilises d'autres paramètres pour les signaux carrés.

Une autre solution serait de générer plusieurs périodes mais de traiter tous les échantillons et pas seulement le dernier.

 

Yddet

0 Compliments
Message 2 sur 2
1 842 Visites