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 :

[LabVIEW 8.5 Version étudiant] Commande de servomoteur par port USB


Sujet :

LabVIEW

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut [LabVIEW 8.5 Version étudiant] Commande de servomoteur par port USB
    Bonjour à tous,

    Mon but est de piloter via Labview un robot muni de 4 servomoteurs, auxquels sont vissés des cercles faisant office de roues.

    Dans un premier temps, je m'intéresse bien évidemment à comment piloter un seul servomoteur.

    Le servomoteur en question est relié à une carte MuIn FT232R, équipée d'un microchip PIC18F2520. Cette carte est reliée à mon PC via un port USB.

    J'aimerais déjà savoir si la commande d'un moteur par voie RS323 ou USB est la même? Sous quelle forme faut-il rentrer la chaîne de caractère?

    J'ai déja établi un VI de lecture écriture du port en question (Vérification port par MAX ok).

    Merci d'avance pour vos réponses.

    EDIT: Lorsque j'envoie la chaîne *IDN\r\n, je n'ai rien en retour, alors que ma carte est bien connectée au PC via USB. Est-ce normal?

    Cordialement, Madjé.

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    Bonjour,

    J'ai déjà utiliser un module FT232 auparavant mais pas piloter par Labview mais avec du code en C++. Le protocole de communication avec le port USB de ta carte n'est pas simple. C'est pourquoi il y a normalement une DLL fournie avec le module FT232. Cette DLL te donnera accès aux principales fonctions (initialisation, écriture et lecture) et elle te permettra de programmer ton système à un niveau plus haut. Cependant, les commandes que tu dois y mettre dépendent de ce que ton PIC comprend. Il faudrait plus d'informations sur ta carte Multi Interface (que je ne connais pas par coeur). C'est à dire est ce que le PIC est programmé? l'as tu programmé? quelle est le PROTOCOLE c'est à dire les octets que tu dois envoyer sur la liaison série de
    ton PIC? Est ce que le constructeur de la carte t'as fourni une DLL pour piloter la carte? Si oui il serait plus judicieux de l'utiliser.

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Bonjour et merci de ta réponse.

    Il y a effectivement une DLL fournie avec le module. En outre, je viens de notifier ça sur la documentation de la platine:

    The board is equipped with a powerful
    PIC18F2520 running at 40MHz. It comes
    preloaded with a bootloader, for serial
    programming.

    Donc pour répondre à ta question, je pense que le PIC est déjà programmé (sauf erreur de ma part).

    Je viens également d'accéder à la documentation programmation de la carte. J'arrive via Labview à envoyer des commandes au moteur sous forme de trame.

    En fait, c'est juste le fait que je ne reçoive aucune réponse quand je lançe la trame d'identification qui m'inquiète un peu...

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    "The board is equipped with a powerful
    PIC18F2520 running at 40MHz. It comes
    preloaded with a bootloader, for serial
    programming."

    Justement, cela veut simplement dire que le PIC fonctionne avec une horloge de 40 MhZ et qu'il est préchargé du bootloader qui te donne la possibilité de programmer ton PIC par une liaison série.
    Je te renvoie à cette adresse pour plus d'infos.
    http://sjeffroy.free.fr/Prog__PIC/Bo...ootloader.html


    Est ce que tu as repris le projet (PIC déjà programmé)? Est ce que c'est une nouvelle carte que tu viens de te procurer? Sinon peut tu poster la DOC de ta carte pour que je vois plus clairement ton projet. Dans le cas ou c'est une nouvelle carte, il y a de forte chance pour que ton PIC ne soit pas programmé (là c'est une autre paire de manche voir forum programmation de PIC) car pour programmé un PIC c'est pas facile et c'est du langage C ou de l'assembleur donc rien à voir avec du Labview.

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    J'ai repris le projet d'un ancien étudiant. En fait je ne vois pas comment faire pour voir si il est déjà programmé ou pas (je suis pas très doué en prog)

    Je pense que oui, car dans Labview dès que je rentre l'instruction (trame), le moteur se déplace exactement ou je le souhaite, sans que j'ai rien à faire d'autre. A moins que je sois complètement à côté de la plaque...

    Voici l'adresse ou se trouve toute la documentation relative à la carte.

    http://www.lextronic.fr/P3108-platin...lti-usage.html

    Et merci du temps que tu m'accordes .

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    Après avoir lu la doc sur ta carte j'ai pu constaté que ton PIC possède déjà un programme basic qui te permet de configurer les différents périphérique de ton PIC (PWM, ADC etc....). J'ai aussi vu comment tu dois dialoguer avec ta carte.
    Cependant, il me faut aussi savoir comment ton moteur est relié à la carte. est ce que ton moteur est alimenté en PWM, passe-t-il par des étage de puissance.
    Peux tu poster ton programme LV ou des impression d'écran (je ne suis pas sur d'avoir la même version que toi, j'ai la 8.2).

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Le moteur est relié à la carte via les Ports B. Voici mon programme Labview.
    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    Si j'ai bien compris ta carte est relié à ton PC par une liaison USB. Alors que ton programme, utilise les VI destinés à la liaison RS232 (port COM du PC). J'ai aussi constaté que ta carte n'était pas forcément muni du module FT232R qui est le module USB.
    La programmation basique de ta carte doit normalement se faire par une liaison RS232 (port COM du PC). Donc, ton module FT232R est fourni à part. C'est ce module qui convertit les données USB que tu envoies du PC en données RS232 qui sont elles compréhensibles par par le PIC et inversement.
    Mais si tu passe par ce module FT232R tu dois utiliser la DLL de ce module et non les VI de la liaison série.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Salut, désolé de ma réponse tardive.

    Qu'entends-tu par utiliser la DLL du module et non les VI de la liaison série? Parce qu'actuellement, j'arrive bien à piloter le servo via les VI de labview (envoi de trames).

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    Ce que je veux dire c'est que normalement le module FT232R (le composant de ta carte qui as le connecteur USB) a lui même une DLL qui permet d'aller écrire et lire dans son buffer. C'est ce composant qui s'occupe de tranférer tes données (PC) au PIC et inversement. C'est ce composant qui fait la conversion (USB/RS232).
    Sinon je pense que j'ai manqué un épisode de ton projet. Est ce que tu peux m'envoyer l'ancien programme (s'il y en a un) et non celui que tu es en train de faire.

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Désolé pour le retard, je n'étais pas là de tout le week end.

    Il n'y a pas d'ancien programme, du moins je ne l'ai pas en ma possession. Tu en sais autant que moi sur le projet à l'heure actuelle. Mais je n'ai pas de souci concernant la commande en elle-même j'ai passé ce cap, par contre j'aurais une autre question.

    Je cherche à présent à afficher la position du servomoteur (par rapport à un axe que je choisirai arbitrairement). Y a-t-il un dispositif supplémentaire à avoir, ou la carte électronique permet déjà d'avoir cette information?

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    Désolé mais là je ne connais pas assez bien ton montage pour te proposer des solutions. Car, avec tous ce que tu m'as dit je n'ai toujours pas compris le fonctionnement de ton moteur (déplacement, alimentation, vitesse, position). D'après la doc de la carte que tu as, tu peux faire pas mal de choses (encore faut il avoir des bon capteurs).

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    En fait le moteur est relié via l'un des ports B de la carte. Il dispose de 3 câbles, un rouge (alimentation), un noir(masse) et un blanc(commande). Ci-joint la documentation de programmation du moteur: Les trames que j'envoie au moteur sont donc de la forme @ S n Hb Lb 0 0 # (voir doc partie "Servo").
    Pour l'instant d'après mes tests:
    -Pour Hb=4, Lb=1: rotation complète (180°) du moteur dans le sens horaire.
    -Pour Hb=1, et Lb=4, rotation complète dans le sens trigonométrique.
    -Pour Hb=8 et Lb= 1, rotation de 90° dans le sens horaire.
    -Pour Hb=1 et Lb=8, rotation de 90° dans le sens trigonométrique.

    Le moteur est commandé en position uniquement pour l'instant.

    Cordialement, Madjé
    Images attachées Images attachées

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    encore là, je me perds dans tes démarches et dans la doc de ta carte. La doc de ta carte précise que les valeurs à mettre dans Hb et Lb sont des valeurs comprises entre 500 et 2500 pour des rotation de +/- 90°.
    Comment se fait il que tu puisse te déplacer de 180° en une seule commande?
    Car pour moi, juste en lisant la doc tu ne peux te déplacer que de 90° max.
    Et d'après la doc la valeur pour +90° est 500 et -90° est 2500.
    Comment se fait-il que tes valeurs sont 2049 et 264?

    Sinon pour connaître ta position il faudrait que tu es un capteur de position (encodeur ou potentiomètre) qui t'indique la position du moteur. A moins que ton servomoteur dispose déjà de l'information de position (autre fil) que tu peux relié à une entrée de ton PIC.

  15. #15
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Il y a un truc que j'ai pas compris. Comment on peut connaître précisément la correspondance entre 8 par exemple et le temps en milisecondes des impulsions? Parce que je dois t'avouer que j'ai mis ça au pif.

    J'ai testé en modifiant les différentes valeurs de Hb et Lb pour m'en faire une idée, mais j'admets que le fonctionnement précis par rapport au graphique d'impulsions de commande du servomoteur m'est encore obscur.

    EDIT: Il n'y a que 3 fils pour le servomoteur donc je ne pense pas avoir l'information de commande. J'essaierai de le faire manuellement en travaillant sur les trames.

  16. #16
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Je galère vraiment à établir la formule, quelqu'un pourrait-il m'aider? C'est le noyau de mon stage, et ça fait 4 jours que je planche dessus sans rien trouver de convaincant.

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 53
    Points : 58
    Points
    58
    Par défaut
    Excuses moi j'étais en vacances.

    Tout d'abord j'en reviens au temps des impulsions et au Hb et Lb. Le Hb et Lb sont respectivement les octets de poids fort et faible de ta valeur.
    Si tu veux faire +90° c'est 500 que tu dois mettre dans Hb et Lb.
    Hb est le poids fort donc 2 exposant 8
    LB est le poids faible
    en binaire 500 ça fait 00000001 11110100 donc Hb=1 et Lb=244

    Si tu veux faire -90° c'est 2500 que tu dois mettre dans Hb et Lb
    2500 en binaire ça fait 00001001 11000100 donc Hb=9 et Lb=196

    C'est ce que je comprends avec ta doc. Mais il se peut qu'entre la doc et la pratique tu es des petites corrections à faire.

  18. #18
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Pas de souci, merci de ta réponse.

    J'avais effectivement compris ça entre temps.

    Actuellement j'ai un autre souci. Vu que Hb et Lb ont la forme de caractères ASCII, il me faudrait entrer ces valeurs au clavier. Je sais que pour écrire un caractère ASCII sous windows, il faut taper Alt+<Valeur en décimal du caractère>.

    Or Windows ne prends pas en compte les premiers caractères ASCII.

    Cf http://crteknologies.free.fr/program...rces/ascii.pdf

    Ca me dérange donc pas mal pour la valeur de Hb. Un moyen de contourner le problème serait de mettre Hb et Lb sous forme binaire, donc de commander le moteur en entrant une suite de 0 et de 1 à la place de Hb et Lb.

    Cela te semble-t-il possible?

Discussions similaires

  1. commande ouverture tiroir caisse par port USB
    Par Pascal88pm dans le forum 4D
    Réponses: 1
    Dernier message: 31/08/2010, 12h41
  2. Réponses: 9
    Dernier message: 09/11/2009, 03h12
  3. Réponses: 0
    Dernier message: 17/04/2009, 14h49
  4. LabVIEW version étudiante
    Par nem007 dans le forum LabVIEW
    Réponses: 1
    Dernier message: 06/01/2009, 20h23
  5. Envoyer commandes AT via un port USB
    Par mlepretre dans le forum Débuter
    Réponses: 13
    Dernier message: 19/09/2008, 17h36

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