IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

LabVIEW Discussion :

Calculer la vitesse d'un moteur


Sujet :

LabVIEW

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut Calculer la vitesse d'un moteur
    Bonjour,
    Je récupère les impulsions d'un codeur incrémental pour connaitre le nombre de cycles qu'a fait mon moteur. J'aimerai connaitre la vitesse de mon moteur avec ces informations. En sachant que j'ai une impulsion par révolution, il faudrait relever le nombre d'impulsions dans un laps de temps connu pour ensuite le ramener en tr/min. Mon problème est que je ne sais pas comment réaliser ceci, avec une structure cadencée? un compteur d'impulsions? Est ce que quelqu'un aurai un exemple ?
    J'ai déjà regardé les aides et les exemples et là je sèche.
    Merci A+
    Greg

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Personne n'as une piste pour m'aider ???
    Je pensé à lire toutes les secondes le nombre de cycle effectué et le soustraire au nombre de cycles réalisé à n-1.
    Mais je ne c'est pas quels boucle utiliser, et où la mettre ?
    A+
    Greg

  3. #3
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Salut,
    est ce que tu peux envoyer une copie d'écran de la partie où tu fais l'acquisition des impulsions? Je suis avec LV7.1 () alors m'envoie pas un vi en 8.xxx..
    A+
    L'ami des tout petits

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Bonjour,
    Voici mon Vi en Version 8.0 et c'est la version la plus basse que je peux faire.
    J'ai rajouter des images pour ceux qui ne peuvent pas lire mon VI.
    Merci
    A+
    Greg
    Images attachées Images attachées    
    Fichiers attachés Fichiers attachés

  5. #5
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Salut,
    je pense qu'il y a une boucle while autour de la structure case. J'ai une remarque sur la façon de programmer en labVIEW. Le truc est de garder en tête qu'un vi est un ensemble de flux de données qui transitent dans des câbles, vont dans des variables, etc.
    C'est pourquoi je ne suis pas partisant d'utiliser les "feedback nodes" mais plutôt les registres à décalage pour récupérer les valeurs d'une boucle précédente. Je t'envoie 2 vi. Fais en ce que tu veux:

    - le 1er, c'est le comptage des impulsions en utilisant les registres à décalage. J'ai commenté pour que ce soit plus lisible. C'est en gros ce que je te suggère de faire à la place des "feedback nodes". Avec les registres, on imagine plus facilement où les données transitent, quand est ce qu'elles s'arrêtent et attendent, etc.

    - le 2ème vi, c'est la réponse à ta question. J'utilise le vi "tick count" pour récupérer un nbr de ms écoulées depuis on ne sait quand. Et à chaque tour de boucle, je compare le nouveau nbr de ms avec celui de départ. Quand la différence des 2 atteint le temps de comptage, la boucle s'arrête. Et tu peux récupérer le nbr d'impulsions pour faire le calcul de la vitesse.

    Maintenant, tu peux appliquer la modif entre le 1er et le 2eme vi à ton programme si tu ne veux pas le changer. Libre à toi. Mais j'ai tenu à bien faire le 1er pour t'inciter à prendre l'habitude des registres.
    Voilà c'est tout!

    Bon courage pour la suite
    Fichiers attachés Fichiers attachés
    L'ami des tout petits

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci Gabi pour le temps passé sur mon problème, ainsi que de m'avoir fait découvrir les registres à décalages.
    Ta solution m'a fait avancé dans mon programme principal, je t'en remercie mais y aurai-t-il un moyen pour garder le nombre total d'impulsions. Car dans mon application je dois faire un certain nombre de cycles (d'impulsion car dans mon cas une impulsion = un cycle). Or dans ta solution proposé mon nombre d'impulsion se remet à zéro pour chaque temps de comptage.
    J'ai essayé d'afficher mon nombre d'impulsions en dehors des boucles while (mais sans succés ).
    Je tente à partir de ton programme des modifications, mais pour l'instant cela ne donne rien.
    A+
    Greg

  7. #7
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    A la fin du prog, j'ai marqué un truc du genre "le nbr d'impulsions pour la mesure est récupéré ici". Il suffit de cabler ce registre à la sortie du while qui englobe le tout, et de ressortir un tableau (clic droit sur le petit carré bleu... ->autoriser l'indexation). Tu obtiens un tableau dont chaque case est le nombre d'impulsions comptées lors d'une seconde.
    L'ami des tout petits

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Salut,
    J'ai réussi à afficher ce que je voulais grâce au indication que tu m'as données, mais le nombre d'impulsion total s'affiche qu'une fois sortie de la dernière boucle while. Est ce que ce serai possible de l'avoir en temps "réel" comme l'afficheur du Nb d'impulsion ?
    A+
    Greg
    Images attachées Images attachées  

  9. #9
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Salut,
    c'est un bon exercice, je te met sur la voie:
    - dans "nb impulsions 3", tu récupère le nombre d'impulsions après chaque comptage.
    - Il faut créer un autre registre à décalage identique à celui de "nb impulsions".
    - La différence c'est qu'au lieu de l'initialiser avec 0, il faut lui mettre la somme des valeurs précédentes, c-a-d mettre un registre à décalage sur la grande boucle while

    Tu peux essayer?
    L'ami des tout petits

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Merci Gabi pour ces informations, je vais essayer et je te tiens au courant.
    A+
    Greg

  11. #11
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Salut Gabi,
    J'ai suivi tes instructions pour réaliser cette dernière fonction qui est de visualiser le nombre total d'impulsion et de le voir évoluer en "temps réel".
    Voici une image en pièce jointe de ce que j'ai fait. Le problème c'est que "Nb impulsions 4 " m'affiche la même valeur que "Nb impulsions 3" avec un décalage ( normal ). Or je voudrais que cela m'affiche la même chose que "Nb d'impulsions"mais sans une relise à zéro automatique dû au temps de comptage.
    Est ce que quelqu'un aurait une idée pour réaliser ceci ?
    Merci
    A+
    Greg
    Images attachées Images attachées  

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 44
    Points : 32
    Points
    32
    Par défaut
    Salut,
    J'ai enfin réussi ce que je voulais faire : connaitre la vitesse d'un moteur grâce à un codeur incrémental qui me délivre un top à chaque tour.
    Au niveau du concept c'est assez simple, en sachant qu'à chaque tour on a un top, il faut compter le temps entre 2 fronts montant (top). Puis le ramener en tr/min.
    En pièce jointe voici les solutions (une qui s'implante dans un diagramme sans boucle while, une autre qui s'implante dans une boucle while).
    En espérant que cela peut servir...
    Ciao A+
    Greg
    Fichiers attachés Fichiers attachés

  13. #13
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Salut,
    désolé pour le retard, j'étais en vacances.
    je ne peux pas ouvrir les vi, je suis encore en 7.1
    Sinon pour la copie d'écran, tu peux améliorer le code en reliant le registre de "nb impulsions 4" à un nouveau registre sur le while intérieur: ainsi, le case qui te sert à incrémenter "nb impulsions 4" peut etre intégré au while intérieur. Ca fait plus propre et en plus ca résout le problème que tu as cité sur ton avant dernier post (si t'as pas déjà trouvé cette solution, ca va de soit ).

    A+
    gabi
    L'ami des tout petits

  14. #14
    Membre averti

    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    190
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2003
    Messages : 190
    Points : 305
    Points
    305
    Par défaut
    Et pour finaliser mes dires, voila la solution à laquelle je pensais.
    Fichiers attachés Fichiers attachés
    L'ami des tout petits

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [LabVIEW 8.6][Débutant] Vitesse d'échantillonnage
    Par nem007 dans le forum LabVIEW
    Réponses: 0
    Dernier message: 06/05/2009, 15h22
  2. [LabView 8.5][Débutant] Position en vitesse
    Par yoann23 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 06/03/2008, 08h56
  3. Réponses: 0
    Dernier message: 10/10/2007, 13h22
  4. [débutant] calcul sur date
    Par Regis.C dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 04/01/2005, 10h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo