Discussions au sujet de NI LabVIEW

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

[Débutant en LabView] Compteur de pics

Résolu !
Accéder à la solution

Bonjour à tous !

 

Je suis actuellement en stage et je dois réaliser un programme qui inclut un compteur de pics. J'ai passé énormément de temps à essayer différentes solutions, mais je n'y arrive pas. Je m'explique :

 

Pour commencer je vous met dans le contexte : j'ai un galet qui tourne à une vitesse V. Ce galet est équipé d'un système (à base d'aimant + bobine) qui envoie une impulsion électrique de quelques dizièmes de Volts à chaque tour.

Je relie cette tension à une carte NI 9229 et la lis avec LabView via un Waveform Chart. Tout marche à merveille, j'ai la tension qui défile, et je peux voir les pics envoyés par le galet à chaque tour.

Je voudrais maintenant créer un compteur de tours, et un affichage de la vitesse de rotation instantannée du galet. Il suffit donc pour cela de compter les pics, et d'afficher cette valeur (je précise que je veux que la valeur de ce compteur s'affiche en temps réel). Puis pour le calcul de la vitesse, rien de bien sorcier non plus, mon problème n'est pas là.

Ce que je n'arrive pas à faire c'est créer le compteur de pics. J'ai essayé avec la fonction Peak Detector, celle-ci donne en sortie le nombre de pics trouvés dans le bloc de données actuel. Il faut donc que j'aditionne le nombre de pics trouvé pour chaque bloc de manière à incrémenter mon compteur... mais c'est là que ça pèche : je n'y arrive pas...

 

Je sais pourtant que mon problème n'est pas très compliqué, mais je ne suis pas un expert en LabView, et personne dans ma boite n'est capable de m'aider. Vous êtes donc mon seul espoir Smiley clignant de l'œil

 

Est-ce que quelqu'un a déjà eu ce type de problème, ou est-ce que quelqu'un connait un moyen simple de le résoudre ?

 

Merci beaucoup d'avance !

 

0 Compliments
Message 1 sur 11
5 612 Visites

il va être difficile de définir la bonne méthode qui donne la vitesse à partir du signl si on ne sait pas quelle "gueule" a le signal.

 

peux-tu faire un enregistrement du signal sur un temps "assez long" et le poster qu'on sache à quoi s'en tenir?


We have two ears and one mouth so that we can listen twice as much as we speak.

Epictetus

Antoine Chalons

0 Compliments
Message 2 sur 11
5 604 Visites

Salut, et merci pour ta réponse !

 

Voici un extrait du signal qu'on mesure. Comme tu peux le voir la difficulté n'est pas dans le traitement du signal, car il est déjà bien propre et avec peu de bruit.

La détection des pics n'est donc pas un problème non plus : avec Peak Detector ça marche parfaitement, il suffit que je règle le seuil et la largeur comme il faut. Ce qui me pose problème c'est plutôt le comptage, car le VI Peak Detector ne donne que le nombre de pics du bloc de données actuel... Or je voudrais que le compteur compte le nombre de pics qu'il y a eu entre le début de la mesure et l'instant présent, et ce, affiché en temps réel (oui car je ne veux pas seulement la vitesse, je veux aussi le nombre de tours effectués depuis le début).

M'enfin je suis parti sur l'idée d'utiliser Peak Detector, mais il y a peut être des solutions plus simples ?

 

 Exemple signal toppeur.png

0 Compliments
Message 3 sur 11
5 598 Visites
Solution
Accepté par l'auteur du sujet Polokus

Bonjour Polokus,

 

Réalisez vous l'acquistion et le traitement de votre signal en continu dans une boucle "while" ?

 

Dans ce cas, vous pouvez utiliser un registre à décalage dans la boucle "while" où vous réalisez votre acquisition. Un registre à décalage permet de transmettre une donnée d'une itération à l'autre de la boucle. Ainsi vous pouvez additionner à chaque itération le nombre de pics que vous venez de compter dans le bloc de données courant, au nombre total de pics des itérations précédentes.

 

Vous trouverez ci-joint un exemple d'utilisation.

 

Bien Cordialement,

 

0 Compliments
Message 4 sur 11
5 576 Visites

Bonjour Isabelle,

 

Merci beaucoup pour votre réponse, je n'avais pas pensé du tout aux shift registers, c'est une solution simple qui marche parfaitement bien ! Mon problème est résolu Smiley heureux

Il ne me reste plus qu'à trouver le paramétrage adéquat pour détecter les pics, car ça ne marche pas aussi bien que je l'ésperais, mais je pense m'en sortir seul (je redemanderai de l'aide au cas où).

 

Encore merci ! Ce forum se révèle fort utile 😉

0 Compliments
Message 5 sur 11
5 559 Visites

Tant mieux si la réponse d'Isabelle correspond à ton besoin.

 

Je me permet aussi de rebondir :

De ce que je comprends, tu utilise une entrée analogique + du traitement de données, pour au final faire du comptage.

Peut-être que tu devrais regarder aussi vers les fonctions de comptage dédiées (nombres d'impulsion et fréquence dans ton cas), qui utilisent plutôt des entrées numériques.

 

Bon courage

 

antoine

 

 

 

0 Compliments
Message 6 sur 11
5 549 Visites

Bonjour Antoine,

 

En fait le comptage des impulsions n'est qu'une petite partie de mon programme.

Je vous passe les détails, mais mon application sert à acquérir différentes grandeurs analogiques (j'utilise pour ça 3 des 4 entrées de la 9229) qui ont besoin d'être traitées et visionnées en même temps que le compteur de distance et de vitesse (que je plug sur la 4ème entrée). C'est pour ça que je suis parti sur ce type de solution ; c'est ce qui me semblait le plus logique.

 

J'ai par contre de nouveau un problème (ça n'a pas trainé me direz vous ^^) :

 

Mon compteur de pics marche maintenant très bien, mais je n'arrive pas à construire le calculateur de vitesse...

J'ai essayé plusieurs choses, comme par exemple lancer un chrono quand on appuie sur un bouton, et en même temps stocker la valeur actuelle du nombre de pics, puis quand le chrono atteind 1 ou 2 secondes, le stopper et relever la nouvelle valeur du nombre de pics. Ensuite il n'y a plus qu'à faire (nb de pics à t2 - nb de pics à t1)/(t2-t1) puis à convertir tout ça en rad/s pour obtenir la vitesse. Il n'y a plus qu'à... sauf que LabVIEW ne semble pas être d'accord avec moi : ça ne marche pas du tout, et je ne sais pas pourquoi.

 

Je reconnais que ma méthode n'est peut être pas très adaptée à un langage comme LabVIEW... Y a t-il un moyen "classique" de calculer une vitesse instantannée avec LabVIEW ?

0 Compliments
Message 7 sur 11
5 518 Visites

Bonjour Antoine,

 

Peux-tu créer un nouveau topic pour ce nouveau sujet ? Comme cela les personnes qui consulteront le forum pourront accéder plus facilement aux informations.

 

Merci par avance,

 

0 Compliments
Message 8 sur 11
5 509 Visites

Bonjour Isabelle

 

Je pense qu'il y a méprise....

Antoine, c'est moi :  j'ai (essayé 🙂 de contribuer à répondre à la question.

 

Polokus, c'est l'auteur du post à qui j'ai répondu. Dans son dernier message, il relance le sujet car malgré les réponses, son pbm n'est pas résolu. 

Il ne me semble pas que ça soit un nouveau probléme,  juste qu'il a été un peu rapide à dire que son pbm était résolu...

 

Mais je n'ai peut-être pas tout compris, si c'est le cas désolé.

 

Pour repondre à Polokus :  comme je le disait au dessus, je pense que la solution "basique" est justement d'utiliser le compteur de la carte, en comptage de periode ou fréquence plutot que de faire une aquisition analogique retraitée....

 

J'essairai de faire demain un exemple, la je n'ai pas trop le temps.

 

A+

 

antoine

0 Compliments
Message 9 sur 11
5 504 Visites

Bonsoir Antoine (pour de vrai cette fois, désolée pour le mauvais entête...),

 

Le NI 9229 n'est pas une carte d'acquisition mais un module pour cDAQ ou cRIO, il ne possède pas de compteurs (mais si il en avait eu, cette solution aurait effectivement été une bonne solution !).

 

Les problèmes de Polokus semblent liés à l'implémentation d'une architecure adaptée à ses besoins plus qu'à l'utilisation des fonctions de comptage en particulier, d'où le nouveau topic.

 

Bonne soirée,

 

 

0 Compliments
Message 10 sur 11
5 495 Visites