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

Arduino Discussion :

Asservissement en courant Arduino


Sujet :

Arduino

  1. #21
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 617
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 617
    Points : 56 722
    Points
    56 722
    Billets dans le blog
    40
    Par défaut
    DC ou CC, on parle bien de la même chose

    La question est de savoir si, histoire de simplifier, tu ne pourrais pas te contenter de freiner ou bloquer la transmission une fois que le système détecte la préhension.

    Je vois plusieurs manières :
    - la transmission (tout le bazar mécanique derrière le moteur) est irréversible. Quand tu coupes l'alimentation du moteur, la transmission est "bloquée" mécaniquement. Dans ce cas il n'y a rien d'autre à faire que de couper le moteur.
    - introduire un dispositif de freinage mécanique (commandé par l'Arduino)
    - faire un freinage magnétique.

    C'est pour ça qu'il faudrait qu'on en sache plus sur ton interface de commande des moteurs et toute la mécanique derrière.

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Ha mais c'est parce que je n'utilise que l'anglais c'est pour ça XD. Donc oui c'est bien des moteurs CC....

  3. #23
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    But you are French ?
    Est ce que tu aurais un vrai doc pour le moteur car le lien que tu donnes n'est que la partie commerciale. A moins que j'ai mal regardé mais je n'ai vu aucun pdf !?

    J'ai bien peur que des moteurs pas à pas euent été une meilleur solution pour maintenir un couple.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Oui pardon je mettais trompé de lien tout à l'heure...
    ici

    Mais sinon oui je suis entièrement d'accord des moteurs step by step ou des servomoteurs auraient été plus judicieux...Mais je n'ai pas eu le choix :s

  5. #25
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Bon, si je comprends bien le problème, je pense honnêtement que l'utilisation d'un moteur CC pour ce genre de problème est délicat.
    De plus il s'agit d'une prothèse de main, donc jouer sur la vitesse de rotation dans un sens ou dans l'autre c'est risqué et la main risque de trembler avec les oscillations ^^.

    De ma connaissance et de mon expérience, et d'après ce que j'ai compris du problème, je pense que ce ne sont pas les moteurs idéals pour ce genre de manipulation.

    Après pour les servomoteurs un autre problème se posera pour toi: ils seront capables de tenir une position sans problème, mais à ma connaissance tu ne peux pas contrôleur leur force car tu leur donne une position. Si tu ordonne à la main de prendre un gobelet en plastique, tu dois soit être exactement à la bonne position ou alors tu risques de broyer le verre (ou de le faire tomber).

    Donc ça soulève beaucoup de problèmes


    Edit: Je viens de voir que tu as posté quelques secondes avant moi, je n'avais pas vu ton message ^^

  6. #26
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Bon, ça fait un peu spam tout ça, mais si vraiment tu n'as pas le choix, j'ai une petite solution en tête.
    Je ne sais pas si elle est réalisable, mais ça vaut la peine de le dire! ^^

    Si tu n'as que les moteurs brushless, ça veut dire qu'ils tournent sur eux même, est-ce qu'avec un système de vis tu ne pourrais pas avoir le même résultat qu'avec les servomoteurs?

    Je m'explique, avec un dessin car j'adooooore paint (blague):
    Nom : ex.png
Affichages : 418
Taille : 6,0 Ko

    La pointe du moteur est attachée à un engrenage, qui quand il tourne va faire monter ou descendre une Vis, qui représenterai les doigts par exemple. Du coup quand la vis rencontrerai une force le moteur pourrait arrêter de tourner ou alors très doucement, de sorte à maintenir une certaine force...


    Bon c'est peut être pas la meilleure idée mais au moins tu as les moteurs CC ^^

  7. #27
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Je précise que la prothèse de main a été conçue de la manière suivante (d'un point de vu mécanique):
    Chaque doigt est relié à un chenillard qui sera déplacé linéairement par un moteur DC. Excepté le pouce qui est un système de poulie.

  8. #28
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Ben du coup c'est le même principe que le schéma en fait, la vis c'est le chenillard. Dans cette configuration effectivement alors il faut bien un moteur brushless. En tournant ton moteur va entrainer le chenillard qui va baisser ou monter les doigts (avec plus ou moins un système d'engrenage sans doute).
    On en revient donc aux explications pour les moteurs brushless . C'est plus clair déjà ^^

    Donc dans ce cas il faudrait savoir à quel moment ton moteur force trop, qui signigie une pression trop forte pour porter l'objet. Et on en revient à ce qu'on disait au début je pense. Tu peux envoyer un signal représentant une vitesse de rotation dans un sens ou dans l'autre.
    J'ai juste un petit doute: est-ce que tu peux changer le sens de rotation de ton moteur? Je sais que c'est possible en changeant les branchements mais je ne sais plus si c'est faisable en envoyant un signal électrique différent.

    Du coup tu sauras en tous les cas la puissance envoyée à ton moteur car si je comprend bien elle est contrôlée par la volonté de serrer plus fort un objet.
    Tu peux ajouter des capteurs ou pas sur ta main? Ou tout est déjà en place?

  9. #29
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Désolé de répondre seulement maintenant!
    Alors, il est effectivement possible de changer le sens de rotation à tout moment. En effet, le sens de rotation est controlé par les pins AIN1 et AIN2.
    Donc si je mets AIN1 à l'état haut et AIN2 à l'état bas je tourne dans un sens et vice versa.

    A priori je pourrais mettre d'autres capteur tel que des capteurs de vitesse ou de position. Pour être honnête avec vous c'est déjà en prévision mais pas pour mon stage qui se termine en fin de semaine prochaine.

    EDIT:
    Bon le code semble fonctionner approximativement pour ouvrir et fermer la main. Seul problème, c'est que je suis incapable de savoir la valeur envoyé par le capteur et donc de ce fait incapable de déterminer la condition que je dois mettre pour arreter mes moteurs/maintenir mes moteurs à une certaine puissance.

  10. #30
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Ca me parait étrange que tu ne puisse pas connaitre la valeur de tes capteurs. Ton capteur est bien branché à ta carte et tu n'es pas en mesure de lire ses données? J'ai un peu de mal à comprendre pour le coup ^^

  11. #31
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Je me suis mal exprimé pardon. Je peux reçois bien les valeurs mais je ne sais pas comment faire pour savoir exactement la valeur reçu puisque je n'ai rien pour afficher cette valeur!!

  12. #32
    Membre confirmé
    Avatar de deletme
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2011
    Messages : 257
    Points : 519
    Points
    519
    Par défaut
    Tu peux utiliser la console pour afficher tes valeurs ^^
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live."
    - Martin Golding
    Traduction obligatoire : "Toujours écrire du code en gardant en tête que le mec qui en assurera la maintenance est un psychopathe violent qui connait votre adresse"

  13. #33
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Citation Envoyé par deletme Voir le message
    Tu peux utiliser la console pour afficher tes valeurs ^^
    Exactement, avec le logiciel que tu utilises, donc le logiciel Arduino, tu as juste à afficher la console et tu peux y imprimer tes valeurs! ^^
    Utilise Serial.print(...);

    Le lien ici:
    https://www.arduino.cc/en/serial/print

  14. #34
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Bonjour,

    Après avoir réalisé quelques tests, les problèmes continues! J'arrive à afficher quelques chose sur le moniteur seulement voila, qu'importe le courant traversant le moteur, il est affiché -13,514 mA...
    J'avoue ne pas comprendre du tout...cela ne devrait pas être possible puisque jai toujours la même valeur qu'il y est du courant dans mes moteurs ou non.
    Pourriez-vous m'aider de nouveau s'il vous plaît?

    Le code que j'utilise est le suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
     
    #include <Metro.h>
     
    //Define the interval
    Metro MyInterval = Metro(10);
     
    //Motor 1
    int pinAIN1 = 9; //Direction
    int pinAIN2 = 8; //Direction
    int pinPWMA = 3; //Speed
     
    //Motor 2
    int pinBIN1 = 11; //Direction
    int pinBIN2 = 12; //Direction
    int pinPWMB = 5; //Speed
     
    //Standby
    int pinSTDBY = 10;
     
    //Current sensor
    const int pinCurrentSensor = A0;
    double VoltageValue = 0;
    double CurrentValue = 0;
     
     
    void setup()
    {
    //Set the PIN Modes
      pinMode(pinAIN1, OUTPUT);
      pinMode(pinAIN2, OUTPUT);
      pinMode(pinBIN1, OUTPUT);
      pinMode(pinBIN2, OUTPUT);
      pinMode(pinSTDBY, OUTPUT);
      pinMode(pinPWMA, OUTPUT);
      pinMode(pinPWMB, OUTPUT);
      pinMode(pinCurrentSensor, INPUT);
      Serial.begin(9600);
    }
     
    void loop()
    {
      VoltageValue = analogRead(pinCurrentSensor)*5.0/1023.0;
      //1023 matches with 10-bits available with Arduino UNO. 
      //This is used to do a conversion
      CurrentValue = (VoltageValue - 2.5)/0.185; //0.185 matches with the sensitivity of the sensor
      //2,5 matches with the voltage corresponding 0 current
      Serial.print("Current = ");
      Serial.print(CurrentValue, 3);
      Serial.print("\n");
      if(MyInterval.check() != 1) //Check if the metro has passed its interval
      {
        if(CurrentValue < 0.2)
        {
          digitalWrite(pinAIN1, LOW);
          digitalWrite(pinAIN2, HIGH);
          digitalWrite(pinBIN1, HIGH);
          digitalWrite(pinBIN2, LOW);
          digitalWrite(pinSTDBY, HIGH);
          analogWrite(pinPWMA,130);
          analogWrite(pinPWMB,130);
        }
        else
          analogWrite(pinPWMA,0);
          analogWrite(pinPWMB,0);
      }
    }
    Bon j'ai résolu un premier problème. Je m'étais trompé dans les branchements de mon capteur. Du coup maintenant j'ai bien une mesure différent suivant s'il y a du courant ou non dans mon moteur. Cependant, si le courant est supèrieur à 0, le capteur ne semble pas faire la différent entre 0,4A et 0,7A par exemple. Est-ce normal?

    Par avance merci

  15. #35
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Citation Envoyé par Vincent PETIT Voir le message
    Attention il y a de forte chance que la sortie VO est la même tête que le signal PWM que tu envois sur le moteur. A vérifier et prendre en compte pour la mesure.
    J'avais écrit ça quelques postes avant.
    As tu mis un oscillo sur la sortie de ton capteur ? Qui te dit qu'il sort une tension linéaire ?

    Si jamais VO de ton capteur de courant à la même forme que la PWM qui alimente le moteur alors tu risques de lire de tout et n'importe quoi. Et d'autant plus que tu ne maîtrises pas du tout le moment où tu fais une analog Read.

    Dit nous en un peu plus sur la tronche de VO du capteur à effet hall.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  16. #36
    Membre averti
    Avatar de ChipsAlaMenthe
    Homme Profil pro
    Ingénieur en eau chaude et ballon rond
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Ingénieur en eau chaude et ballon rond
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 394
    Points
    394
    Par défaut
    Tu ne dois pas regarder le bon Pin sur ton capteur. La tension envoyée doit forcément varier, c'est un capteur et c'est sa façon de communiquer.
    Tu devrais peut être nous donner la référence de ton capteur et ton schéma de branchement (uniquement le capteur).

  17. #37
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Je ne comprends pas une chose, comment le signal ne peut il pas être linéaire alors que je suis en courant continue???
    Etant donné que je mesure le courant aux bornes d'un moteurs, je devrais avoir en sortie (donc sur la borne VO du capteur) une tension continue non?

    La référence du capteur: ici

    Et voici le schéma:
    Nom : Sans titre.jpg
Affichages : 342
Taille : 25,7 Ko

  18. #38
    Modérateur

    Avatar de Vincent PETIT
    Homme Profil pro
    Consultant en Systèmes Embarqués
    Inscrit en
    Avril 2002
    Messages
    3 190
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant en Systèmes Embarqués
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 190
    Points : 11 573
    Points
    11 573
    Par défaut
    Tu envois un signal PWM sur ton moteur et il n'est pas continu.
    La science ne nous apprend rien : c'est l'expérience qui nous apprend quelque chose.
    Richard Feynman

  19. #39
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Hum okay. Je vais faire de nouveaux tests alors. Je vous tiens au courant dés que possible.
    Sur mon poste précédent, j'ai fait un EDIT. J'y ais ajouté la référence de mon capteur (disponible en PDF) ainsi qu'un schéma de mon montage (au cas où j'aurai fais un mauvais câblage).

  20. #40
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2014
    Messages
    84
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2014
    Messages : 84
    Points : 19
    Points
    19
    Par défaut
    Suite à quelques tests, j'ai remarqué que mes câbles connectés au moteur n'était pas bien branché...
    Après avoir remis tout bien correctement, le courant s'affiche bien.

    Donc au final tout fonctionne à merveille

    Merci à vous pour votre aide!

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 4 PremièrePremière 1234 DernièreDernière

Discussions similaires

  1. Réponses: 24
    Dernier message: 13/04/2013, 17h51
  2. Date courante
    Par missllyss dans le forum SQL
    Réponses: 5
    Dernier message: 29/08/2003, 11h09
  3. Exécuter la classe courante ??
    Par sami_c dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 17/03/2003, 17h47
  4. repertoire courant
    Par mobee dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2002, 13h03
  5. [VB6] [Système] Tuer un processus courant
    Par mdoyer dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 22/10/2002, 14h47

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