Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 34

[ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité



  1. #1
    QuentinD

    [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité


    ------

    Bonjour a tous, je suis actuellement en train de chercher une solution pour changer le sens de rotation de mon moteur quant le moteur atteint sa tension de surintensité.

    Je pense mettre une résistance entre la borne + et - de mon pont en H pour déterminer l'intensité du moteur.

    Je posséde comme pont en H un 12C Motor Driver.

    J'aimerais donc savoir comment, a l'aide d'une resistance connecte sur mon pont en h determine la tension de surintensité de mon moteur pour pouvoir transmettre cette information a arduino pour changer le sens du moteur.

    Toute aide est la bienvenue !

    -----

  2. Publicité
  3. #2
    azad

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    C'est pour faire un "fin de course" ou "marche arrière" quand ça force ?

  4. #3
    DAUDET78

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    J'aime pas le Grec

  5. #4
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Bonjour

    Une solution peut consister à utiliser un capteur d'intensité sur un des fils d'alimentation du moteur. Tu as un exemple de shield toute faite ici : http://www.gotronic.fr/art-capteur-d...r391-21685.htm

  6. #5
    polo974

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Salut tout le monde (et surtout Daudet qui nous manquerait, s'il venait à prendre la poudre d’escampette).

    Là, comme ça en passant: ne pas oublier qu'au démarrage, le moteur consomme son courant maximal...

    Et c'est le double si l'alim est inversée brutalement ! ! !
    Daudet, tu vas nous manquer...

  7. A voir en vidéo sur Futura
  8. #6
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Merci pour toutes vos réponses.

    Je pense utiliser une résistance trés faible (aux alentoures de 2 ohms)relier au moteur pour determiner sa tension en volt avec un voltmetre. Je ferait tourner mon moteur et je le bloquerait pour avoir sa tension de surintensité. Je pourrais ensuite utiliser la loi d'homs pour déterminer I a sa tension de surintensité.

    Par contre je ne sais pas comment, une fois cette intensité determiner faire en sorte que le sens de rotation de mon moteur change a l'aide de ma résistance.

    Le principe reviens a un fin de course, une fois que la plaque de compression piloter par le moteur a fini de compresser, le moteur change de sens de rotation.

    En effet, je dispose d'un capteur d'intensité, mais a utiliser uniquement si je n'arrive pas a l'aide de la méthode dite précédemment.

    On m'a également dit que je pourrais avoir besoin d'un amplificateur différentiel mais je n'en vois pas l'utilité.

    un grand Merci pour votre aide !
    Dernière modification par QuentinD ; 27/01/2017 à 15h25.

  9. Publicité
  10. #7
    Yvan_Delaserge

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    On pourrait imaginer une résistance de faible valeur en série avec le moteur.
    En parallèle avec cette résistance, les LED de deux optocoupleurs. La sortie de chaque optocoupleur arrive sur une de deux entrées analogiques de l'Arduino.
    Le soft détermine à partir de quelle durée de surintensité, on active l'inversion du sens de rotation du moteur.

    Il faudra déterminer expérimentalement la valeur de la résistance en série avec le moteur. Car les diodes des optocoupleurs vont s'activer vers... combien de volts? voir la Datasheet.
    Et ensuite, voir aussi quelle sera la tension obtenue en sortie de l'optocoupleur en fonction de l'intensité traversant le moteur.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  11. #8
    Yvan_Delaserge

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Tête-bêche les LEDs des optocoupleurs.
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  12. #9
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Pourquoi chercher à faire une usine à gaz alors que j'ai indiqué un circuit qui fait exactement la même chose, avec moins de contraintes et de pertes ?

    Le capteur d'intensité indiqué plus haut revient à ajouter une résistance de l'ordre du milliohm, donc il n'y a aucune dissipation significative, tandis qu'avec une résistance de 2 ohms on va faire chauffer une résistance pour rien, et même limiter l’intensité, donc le couple du moteur, ce qui peut le bloquer avec un faible effort.

    En sortie de ce circuit on récupère directement une tension isolée et strictement positive (qui vaux moitié de la tension d'alim du circuit quand I = 0), il suffit de la lire sur une entrée analogique pour connaitre l'intensité parcourant le moteur. Il n'y a pas besoin d'ampli, le circuit se charge de tout.
    Dernière modification par RomVi ; 27/01/2017 à 18h54.

  13. #10
    Yvan_Delaserge

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    En effet, ta solution est bien meilleure. C'est un capteur à effet Hall et on trouve ça pour $ 1,83 sur E**y
    EFFETHAL.gif
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  14. #11
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Merci a tous pour vos réponses.

    La méthode des optocoupleurs me semble parfaite pour ce probléme.

    Si j'ai bien compris, je devrais mettre une résistance dans le circuit, lancer le moteur et déclancher un blocage pour avoir sa tension de surintensité. J'utiliserais ensuite la loi d'ohms pour determiner I.

    Il faudrait donc que je mette en série un optocoupleurs, Ou, des que l'intensité atteint le seuil de surintensité (Voir précedement) je dis d'envoyer l'information a arduino (déclancher le capteur). Mais je ne sais pas si il est possible de choisir la valeur de I pour activer le capteur et envoyer l'information a arduino. Je pourrais sinon changer la résistance précedente en trouvant sa valeur grace a la loi d'Oms mais j'ai peur que la résistance soit trop importante et modifie donc le circuit.

    Un grand merci pour votre aide !

  15. #12
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Merci également pour tas réponse Romvi, je dispose du capteur d'intensité que tu avais envoyer, mais je ne l'utiliserais que si l'utilisation des optocoupleurs est trop compliqué.

  16. Publicité
  17. #13
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Je vais finalement utiliser ce capteur de courant : http://www.gotronic.fr/art-capteur-d...r391-21685.htm

    Du coup, je vais regarder la surintensité de mon moteur. Pour sa, je vais faire tourner le moteur et le bloque manuellement.

    Par contre, je ne sais pas comment recuperer cette intensité ni ou branche le capteur dans le circuit.

    Si c'est impossible de voir en direct l'intensité du circuit, faudra t'il que j'utilise une résistance puis la loi d'oms ?

    Merci pour votre aide !

  18. #14
    Yvan_Delaserge

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    D'après la doc:

    Capteur de courant basé sur un ACS711 permettant de mesurer un courant de -12,5 A à +12,5 A. Une sortie analogique est proportionnelle au courant mesuré (1,65 V pour 0 A sous 3,3 V).

    Alimentation: 3,3 à 5 Vcc
    Consommation: 5,5 mA maxi
    Plage de mesure: -5 A à +5 A en AC ou DC
    Sensibilité: 110 mV/A
    Shunt: 1,2 mΩ
    T° de service: -40 à +85 °C
    Dimensions: 28 x 21 x 13 mm
    Référence fabricant: MR003-009.1

    Il y a une contradiction: A un endroit, ils disent que ça mesure de -12,5 A à +12,5 A.
    Et à un autre que ça mesure de -5 A à +5 A

    Mais quoi qu'il en soit le module fournit une tension de sortie de 110 mV/A.

    Donc c'est très simple, tu fais passer le courant qui va circuler dans le moteur par les deux grosses bornes bleues.
    Tu branches le GND et le + 5 V à l'alim de l'Arduino.
    Tu branches la borne out à une des entrés analogiques.
    Et tu écris un soft qui tienne compte des deux faits suivants:

    1) la tension que le module va fournir à l'entrée analogique de l'Arduino est de 1,65 V pour 0 A sous 3,3 V. Il faudra mesurer de combien elle est si tu l'alimentes avec 5 V.
    2) Sensibilité: 110 mV/A
    Un civet, un plat de côtes et puis, glissez-moi une petite paupiette avec.( Lino Ventura)

  19. #15
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Avant toute chose il serait souhaitable de brancher un ampèremètre en série dans ton circuit et de faire le test pour mesurer l'intensité moteur bloqué. De cette façon tu pourra choisir le module le plus adapté.

  20. #16
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Merci pour toutes vos réponses.

    Cependant je n'ai pas compris certains point.
    Yvan_Delaserge, j'ai bien compris pour le branche (enfin il me semble je dois le branche demain je verrais bien ^^) mais je n'ai pas compris la deuxième partit de tas réponse.

    Je n'ai pas compris l'histoire de ton soft, si tu pouvais m'en dire un peu plus s'il te plait car la je trouve sa très flou.

    Quant à RomVi, je ne peux pas voir sur arduino l'intensité actuel du circuit si le programme est lance et que le moteur tourne ?
    Et si ce n'est pas possible je pensais plus a prendre une résistance pour ensuite utiliser la loi d'ohms, après si on peut simplement utiliser un ampèremètre c'est plus simple c'est sur.

    Un grand merci pour votre soutiens

  21. #17
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Citation Envoyé par QuentinD Voir le message
    Quant à RomVi, je ne peux pas voir sur arduino l'intensité actuel du circuit si le programme est lance et que le moteur tourne ?
    Et si ce n'est pas possible je pensais plus a prendre une résistance pour ensuite utiliser la loi d'ohms, après si on peut simplement utiliser un ampèremètre c'est plus simple c'est sur.
    Oui c'est tout a fait possible, mais si tu mesures une intensité de 2A moteur bloqué par exemple c'est un peu dommage d'acheter un capteur -12,5 / +12,5A. Par ailleurs il est toujours bon de vérifier avec un ampèremètre pour voir si l'indication de l’Arduino semble correcte.

  22. #18
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    merci de l'info ^^

    Donc demain je mesure la tension de surintensité avec un capteur et je vérifierais avec un ampèremètre !
    Par contre, comment voir l'intensité actuel sur arduino avec le capteur ?

    Un grand merci pour toute l'aide que tu me fournit, demain je trouve la tension de surintensité et je commence le programme qui fera que le moteur change de sens de rotation des que l'intensité atteint son seuil de surintensité.

    Je te tiens au courant si je galère a programmer tout sa sur arduino ^^

  23. Publicité
  24. #19
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Juste une dernière question ^^

    Serait t'il possible d'utiliser proteus pour déterminer la tension de surintensité ? (Je ne sais pas si il y a l'option du blocage moteur)
    Dernière modification par QuentinD ; 01/02/2017 à 21h42.

  25. #20
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Citation Envoyé par QuentinD Voir le message
    Quant à RomVi, je ne peux pas voir sur arduino l'intensité actuel du circuit si le programme est lance et que le moteur tourne ?
    Non pas forcément, tu peux mesurer l'intensité avec l'arduino par le biais du programme, ou tu peux mesurer la tension avec un voltmètre et faire la conversion.

    Si l'intensité est égale à 0 l'Arduino affiche forcément 511 (en utilisant la même tension d'alimentation sur l'Arduino et le capteur). A cette valeur tu ajoutes 12.5 (soit 12, soit 13 puisque l'Arduino ne vas pas afficher de décimale) par A.

  26. #21
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Ok, une resistance sera donc necessaire, ou je peux directement utiliser le voltmetre sur le moteur ?

    pour la deuxieme partit, je ne comprend pas trop ce que c'est que ce fameux 511 afficher par arduino ainsi que les valeur ajoute.

    merci pour ton aide et excuse moi pour toutes ces questions, je suis encore un debutant ^^

  27. #22
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Quand tu lis une tension avec l'Arduino celui ci renvoie une valeur numérique sur 10 bits, qui varie de 0 à 1023.

    De son coté le module de mesure d'intensité délivre une tension qui est l'exacte moitié de sa tension d'alimentation. Si cette tension d'alim est la même que celle de l'Arduino alors celui ci va sortir une valeur numérique au centre de son échelle, soit 511.

    Quand je parlais d'utiliser un voltmètre sur le moteur je voulais dire par le biais du module: Tu poses les pointes de touche sur les bornes GND et OUT, le module étant alimenté, les borniers à vis étant en série avec les fils du moteur.

    Tu devrais te faire un schéma pour commencer.

  28. #23
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Merci pour explication, je vais utiliser un Voltmétre
    Je vais également faire un shéma sur proteus.

    Actuellement, mon Pont en H est relier a mon arduino uno alimenter par mon PC. le moteur connecte est trés faible donc pas besoin d'alimentation.

    Quant je lance le programme, tout semble marcher mais rien ne se passe, 2 minutes aprés des messages d'erreur arrivent.

    Le croquis utilise 4*912 octets (15%) de l'espace de stockage de programmes. Le maximum est de 32*256 octets.
    Les variables globales utilisent 672 octets (32%) de mémoire dynamique, ce qui laisse 1*376 octets pour les variables locales. Le maximum est de 2*048 octets.

    Le croquis utilise 4*912 octets (15%) de l'espace de stockage de programmes. Le maximum est de 32*256 octets.
    Les variables globales utilisent 672 octets (32%) de mémoire dynamique, ce qui laisse 1*376 octets pour les variables locales. Le maximum est de 2*048 octets.
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 3 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 4 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 5 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 6 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 7 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 8 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 9 of 10: not in sync: resp=0x5f
    avrdude: stk500_recv(): programmer is not responding
    avrdude: stk500_getsync() attempt 10 of 10: not in sync: resp=0x5f

    Je ne comprend pas les messages d'erreur :/

    Si tu as des explications, n'hésite pas

    si besoin je peux te founir le code en ZIP

    Un grand merci pour ton soutiens

    Je vais faire un schéma de ce pas

  29. #24
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    En faite, j'avais fait une erreur dans la connection.

    Le téléversement est termine mais rien ne se passe au niveau du moteur, je pense changer car Cette carte I2C me pose trop probléme.

  30. Publicité
  31. #25
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Si le moteur est alimenté par l'USB alors la carte de mesure d'intensité risque de ne pas être adaptée, et la mesure délivrée par l'Arduino va varier assez peu.
    Si tu as un ampèremètre commence déjà par mesurer directement (appareil en série sur un des fils du moteur), sans passer par le module. Commence par le plus gros calibre de mesure (généralement 10 ou 20A) par sureté.

  32. #26
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Excuse moi pour mon absence, j'ai reussit a faire marcher le moteur.

    J'ai donc fais la V1 de mon programme, je ne suis pas un expert arduino il y a surement pas mal de faute ^^

    Je rappelle le principe : Piloter un moteur avec un pont en H, suite a l'appuie sur un boutton le programme se lance (pas d'arret sur bouton) et allume une led.
    Des que l'intensité de surintensité est debloque le moteur change de sens, et des que un capteur fin de course est localisée le moteur s'arrete.

    En gros, le moteur pilote une plaque de compression qui compacte la canette, une fois finit remonte et s'arrete une fois le capteur detecter.

    Voici le programme :

    Code:
    #include <Wire.h>
    #include "groveI2CMotor.h"
    const int L1 = 2; // broche 2 du micro-contrôleur se nomme maintenant : L1
    const int BP = 3; // broche 3 du micro-contrôleur se nomme maintenant : BP
    const int Capt1= 7; // broche 7 du micro-contrôleur se nomme maintenant : Capt1
    
    void setup()  {
      pinMode(L1, OUTPUT); //L1 est une broche de sortie
      pinMode(BP, INPUT); // BP est une broche d'entree
      pinMode(Capt1, INPUT); // Capt1 est une broche d'entree
      Serial.begin(9600);
      Wire.begin(); // 
      delayMicroseconds(10000);
      Serial.println("setup begin");
      stepperrun();
    }
    
    void loop()  {
      // envoi les commandes au moteur
      int BP = digitalRead(BP); // Lecture de l'entree BP et sockage du résultats dans BP
      int test = digitalRead(Capt1);// Lecture de l'entree et sockage du résultats dans test
      if(BP==HIGH) // Si BP est à l'état haut
      digitalWrite(L1, HIGH); // Allumer L1
        Serial.println("sent DC speed 100");
        MotorSpeedSetAB(100,20);
        delay(10);                  // délai nécessaire
         while (test==LOW) // tant que le capteur n'est pas touche
        MotorDirectionSet(0b1010);  // 0b1010  rotation dans le sens positive
         if (;i<800;i++); // J'ai pas encore la surintensité, je part de l'hypotése que c'est 800ma, des que le capteur detecte 800MA le moteur change de sens.
        MotorDirectionSet(0b0101);  // 0B0101 Rotation dans le sens opposé
        if(test==high) {// Si test est à l'état haut
        digitalWrite(L1, LOW); // Eteindre L1
        //fin
        
      }
    
    }
    Si tu pouvais me dire ou tu vois les fautes sa m'arrangerait ^^

    un grand merci pour ton aide !
    Dernière modification par Antoane ; 14/02/2017 à 13h13. Motif: Ajout balises code

  33. #27
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Désolé, ce programme ne va pas du tout. Visiblement tu n'a pas compris le principe du capteur d'intensité et de la lecture analogique.
    Le principe est d'utiliser l'arduino comme un voltmètre qui viendra lire la tension sur les bornes de sortie du capteur d'intensité.

    L'arduino ne va pas te dire "il y a 2.7V", mais donnera une valeur entre 0 et 1023, sachant que 0 correspond à 0V et 1023 à la tension d'alimentation de l'Arduino après régulateur (en principe 5V)
    Pour lire cette tension il faut passer par l'une des 6 entrées analogiques et utiliser la fonction AnalogRead.
    Tu peux jeter un œil ici : https://openclassrooms.com/courses/p...ion-de-mappage

  34. #28
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    Merci pour ton aide ^^

    Je vais voir sa et modifie mon programme je te retient au courant.

  35. #29
    QuentinD

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    et le capteur ne donne pas une tension mais de l'intensité nan ?

  36. #30
    RomVi

    Re : [ARDUINO] changer le sens de rotation d'un moteur en fonction de son intensité

    En sortie du capteur on a une borne OUT sur laquelle on lit une tension par rapport à GND, et cette tension est directement proportionnelle à l'intensité parcourue dans la boucle qui passe par les borniers bleus.
    Cette tension est envoyée sur une entrée analogique de l'arduino. Dans le programme on récupère une valeur entière qui varie de 0 à 1023. Il faut alors s'arranger pour effectuer la conversion dans le programme.

    Je t'ai fais 2 petits graphiques en pièce jointe.
    Images attachées Images attachées

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Réponses: 69
    Dernier message: 14/05/2016, 16h28
  2. Changer sens rotation moteur 12 v .
    Par Liptonthe dans le forum Bricolage et décoration
    Réponses: 8
    Dernier message: 15/01/2014, 17h11
  3. Réponses: 6
    Dernier message: 08/03/2013, 10h49
  4. Réponses: 16
    Dernier message: 19/12/2008, 01h52
  5. Sens de rotation [moteur]
    Par dewitos dans le forum Électronique
    Réponses: 45
    Dernier message: 23/01/2008, 16h28
Découvrez nos comparatifs produits sur l'informatique et les technologies.