Controle de 2 servomoteurs avec Arduino
Répondre à la discussion
Affichage des résultats 1 à 28 sur 28

Controle de 2 servomoteurs avec Arduino



  1. #1
    invite0e10570c

    Controle de 2 servomoteurs avec Arduino


    ------

    Bonjour à tous

    Moi c´est Hanna, je suis nouvelle ici et m´interesse à tout ce qui touche à l´électromécanique.
    Ici je vais plus souvent poser des questions sur l´életronique programmable car je suis actuellement en train d´apprendre à utiliser un Arduino Uno
    J´étudie le plus possible, quand j´ai le temps, mais ça reste assez compliqué ^^
    Pour commencer, je voudrais savoir comment faire pour utiliser 2 servomoteurs en même temps, c´est à dire, comment écrire mon programme afin qu´il puisse fonctionner en même temps.
    Pour mes servomoteurs, voici les spécifications:

    Operating Speed (4.8V no load) : 0.12sec / 60 degrees
    Stall Torque (4.8V): 1.98 kg/cm
    Dead Band Width: 4usec
    Operation Voltage : 3.5 - 8.4 Volts
    Original box: NO

    Je poste également une image d´un support pour mon arduino que j´ai construit afin donner des idées à certain

    -----
    Images attachées Images attachées  

  2. #2
    Jack
    Modérateur

    Re : Controle de 2 servomoteurs avec Arduino

    L'idéal est d'utiliser la PWM de l'arduino. Je te laisse te renseigner un peu ...

  3. #3
    invitee05a3fcc

    Re : Controle de 2 servomoteurs avec Arduino

    Bonjour Hanna00006 et bienvenue sur FUTURA
    Citation Envoyé par Hanna00006 Voir le message
    je voudrais savoir comment faire pour utiliser 2 servomoteurs en même temps,
    Avant d'en commader deux ...vaudrait mieux commencer par en commander un !
    c´est à dire, comment écrire mon programme afin qu´il puisse fonctionner en même temps.
    Avant de penser au programme, il faudrait cogiter l'interface entre ton µC et le moteur. Tu est bien consciente que ton µC ne va pas attaquer les bobines des moteurs directement ?
    Pour mes servomoteurs, voici les spécifications:
    Il manque un point important: quel est le courant demandé par la bobine du moteur (ou sa résistance interne ) ?

  4. #4
    invite105cee1c

    Re : Controle de 2 servomoteurs avec Arduino

    Ce sont des servos de modèles réduit ,d'aprés la description, je sais que certains sont tout à fait commandable directement par un microcontroleur sans passer par une quelquonque interface ,pour avoir fait des essais ça ne pose pas de problèmes .
    ces servos disposent en général d'un circuit de commande/puissance ( pont en H) intégré au boitier .

    il faudrait pour bien faire avoir la description détaillée des servos que tu comptes utiliser , mais je sais que c'est assez difficile à trouver.

    je pense que comme dit plus haut il faudrait que tu commences avec un seul servo , on trouve pas mal de chose sous google sur la façon de les utiliser avec un uC.

    Mais sinon il est tout à fait possible de commander 2 servos .

  5. A voir en vidéo sur Futura
  6. #5
    invitee05a3fcc

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par extremgear Voir le message
    Ce sont des servos de modèles réduit ,d'aprés la description,
    Effectivement, ma réponse #3 est plutôt axée pour un moteur DC

  7. #6
    invite0e10570c

    Re : Controle de 2 servomoteurs avec Arduino

    J´ai déjà utilisé un servo moteur avec l´exemple offert par arduino et un autre qui me permété de tester l´angle de mes servos en utilisant une fenêtre où je devais encoder un nombre de 600 à 2300 (assez compliqué à comprendre).
    A la base c´était 300 et 2600 mais mes servos ne permetté pas d´aller jusque là car j´entandé qu´ils forcés pour tenter d´aller plus loin...
    J´ai déjà beaucoup lu sur les servomoteurs, et même si je veux commencer par un seul servomoteur je dois quand même comprendre le langage de base arduino. J´ai lu un tuto complet sur le langage arduino mais bon...
    Maintenant pour la PWM, j´ai trouvé les renseignement ici
    http://www.siteduzero.com/sciences/t...m-de-l-arduino
    un grand merci car j'avais pas pensé à ca...
    étudier n´est pas un problème mais j´aimerais savoir QUOI étudier
    Ici, c´est bien de me dire par quoi je dois commencer
    Cogiter l'interface entre ton µC et le moteur? je ne comprends pas... c´est sûrement le problème que j ai eu tout au début, ou mes servomoteurs ne voulaient pas fonctionner Par la suite, comme par magie, ca a fonctionné... Pour le courant demandé par la bobine du moteur ou sa résistance interne j´en ai vraiment aucune idée :S en quoi c´est important de savoir ca? ici c´est le lien ou j´ai acheté mes servos:
    http://www.ebay.de/itm/SG90-9G-Micro...30869356085%26
    Et oui c´est pour le modélisme j´ai choisi ces servos au hasard, car comme j´avais aucune idée de ce que je devais acheter, j´ai pris les moins cher :P J´en racheterai par la suite, qui peuvent faire un tour complet, quand je saurais déjà utiliser les 2 que j´ai ici

  8. #7
    invitee05a3fcc

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par Hanna00006 Voir le message
    ici c´est le lien ou j´ai acheté mes servos:
    http://www.ebay.de/itm/SG90-9G-Micro...30869356085%26
    On a un message rouge d'erreur en Teuton ........

  9. #8
    invite58fbfa63

    Re : Controle de 2 servomoteurs avec Arduino

    Si tu vas sur le site ARDUINO, la version française, bien que certains points soient mieux expliqués sur la version anglaise, tu vas pouvoir étudier le langage de base ARDUINO..

    http://arduino.cc/fr/Main/Reference

    Tu vas y trouver les explications de la structure, des variables et constantes et des fonctions utilisables dans l'univers ARDUINO..

  10. #9
    invite0e10570c

    Re : Controle de 2 servomoteurs avec Arduino

    En Teuton c´est un site allemand, je suis allemande ^^
    Ca ici c´est le nom de mes servos "SG90 9G Micro/Mini Servos Futaba walkera Hitec HS-55 For TREX 450 Hubschrauber"
    Mais à par ca je sais pas ou je vais trouver les infos qui corresponde vraiment à mes servos sur un autre site...
    Ok pour le site arduino francais, je vais aller voir ca Ici je me bourre encore le crane avec la PWM :P

  11. #10
    invite58fbfa63

    Re : Controle de 2 servomoteurs avec Arduino

    Pour le PWM, tu as pas trop a te casser la tête, les fonction nécessaires sont déjà créée dans la librairie ARDUINO..

    http://arduino.cc/fr/Main/AnalogWrite

  12. #11
    inviteb7c50add

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par Hanna00006 Voir le message
    A la base c´était 300 et 2600 mais mes servos ne permetté pas d´aller jusque là
    L'intervalle de 300 à 2600 c'est ce qu'il y a écrit à propos de la description de tes servomoteurs? Car ça serait étonnant que le petit outils proposé par Arduino.cc permette cela car dans la lib servo.h c'est défini de 544 à 2400. Si tu regardes le fichier servo.h à la ligne 88 et 89 tu as (#define MIN_PULSE_WIDTH 544 #define MAX_PULSE_WIDTH 2400).
    A priori, si Arduino.cc défini une course de 180° max c'est parce que les servomoteurs bas de gamme, qui sont d'ailleurs fait pour 90°, pourraient être facilement endommagés si on leur implique une plus grande course, donc le principe c'est de prendre le risque d'aller sur 180° mais pas plus!

  13. #12
    polo974

    Re : Controle de 2 servomoteurs avec Arduino

    regarde le message 5 (de pilatomic) du fil http://forums.futura-sciences.com/el...e-arduino.html
    il y a un lien vers la bonne lib pour piloter des servos de modélisme.

    ces servos se commandent avec des pulses de largeur variable et non pas en pwm (en théorie on pourrait y arriver, mais pour les servos, c'est seulement la durée de l'état actif qui compte, alors qu'en pwm, c'est le rapport cyclique).
    Jusqu'ici tout va bien...

  14. #13
    Jack
    Modérateur

    Re : Controle de 2 servomoteurs avec Arduino

    mais pour les servos, c'est seulement la durée de l'état actif qui compte, alors qu'en pwm, c'est le rapport cyclique
    Je ne vois pas où est le problème. Une fois la période définie, Ton est directement proportionnel au rapport cyclique.

    A+

  15. #14
    inviteb7c50add

    Re : Controle de 2 servomoteurs avec Arduino

    C'est très étrange, en effet, j'ai bien regardé la documentation à propos de l'Arduino ; et à certain endroit c'est dit que les broches PWM sont à 490Hz donc une largeur d'impulsion de 2ms environs et que l'on choisi le rapport cyclique avec analogWrite() avec des valeurs comprises entre 0 et 255 ; et à d'autre endroit c'est dit que les broches PWM permettent de gérer un servomoteur, à savoir envoyer une impulsion à l'état haut pendant 544 à 2400us avec des intervalles de 20 ms via la lib servo.h et la creation de l'objet servo.

    Du coup je n'y comprends plus rien, eh eh !!!

  16. #15
    invite58fbfa63

    Re : Controle de 2 servomoteurs avec Arduino

    C'est des fonctions déjà créée en C.. la fonction analogWrite() et les fonctions de la lib servo.h sont différentes, et te permettent de faire des choses différentes..

  17. #16
    invite861d9b56

    Re : Controle de 2 servomoteurs avec Arduino

    Avec Arduino ce qui est genial c'est que beaucoup du travail est deja fait !!!
    La preuve: http://arduino.cc/fr/Main/LibrairieServo une librairie qui contient tout le nécessaire au fonctionnement des servos !

  18. #17
    invite58fbfa63

    Re : Controle de 2 servomoteurs avec Arduino

    C'est plus ou moins génial.. mais pour quelqu'un qui ne connait que peu le C, oui c'est très pratique..

  19. #18
    polo974

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par Jack Voir le message
    Je ne vois pas où est le problème. Une fois la période définie, Ton est directement proportionnel au rapport cyclique.

    A+
    Il n'y a pas de problème, c'est juste que le principe du servo de modélisme ne considère que le Ton donc la durée du cycle peut être variable (ça peut être la somme de tous les états actifs d'une dizaine de servos par exemple). Il faut connaitre la fréquence du timer pour définir le Ton .

    Alors que le pour le pwm c'est le rapport cyclique qui transporte l'information. Il n'est pas nécessaire de connaitre la fréquence du timer pour avoir un bon rapport cyclique.

    C'est une différence, et je pense qu'il faut en avoir conscience pour éviter de faux raisonnements ou de mauvaises surprises.
    Jusqu'ici tout va bien...

  20. #19
    invite0e10570c

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par MartinPod417 Voir le message
    L'intervalle de 300 à 2600 c'est ce qu'il y a écrit à propos de la description de tes servomoteurs?
    Non, c´est ce qu´il y avait d´écrit dans un programme tout fait. C´était pour un type de servo qui permetté cette amplitude. J´ai vu que cette amplitude était trop grande pour mes servos car il forcé. Quand je l´est ai acheté il y en avait aussi un qui forcé des le départ car il y avait un angrenage qui touché la carcasse et faisait chauffer le moteur. Avec mes servos j ai donc défini la course moi même en la diminuant quand je voyais que ca forcé.

  21. #20
    invite0e10570c

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par polo974 Voir le message
    ces servos se commandent avec des pulses de largeur variable et non pas en pwm
    Oui, j´ai lu ca aussi je pense que j´avais aussi lu il y a un bon moment maintenant que les servos peuvent donc aussi fonctionner avec les autres broches qui ne sont pas PWM. Et au début j´avais lu une histoire qui disait que les seros ne pouvaient être connecté que sur les broches 9 et 10... Oui je vais aller voir le message 5 de pilatronic Merci.

  22. #21
    invite0e10570c

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par MartinPod417 Voir le message
    Du coup je n'y comprends plus rien, eh eh !!!
    Oui, comme je viens juste d´écrire en haut, j´ai aussi déjà vu un peu de tout

  23. #22
    invite0e10570c

    Re : Controle de 2 servomoteurs avec Arduino

    Citation Envoyé par LordBlack Voir le message
    C'est des fonctions déjà créée en C.. la fonction analogWrite() et les fonctions de la lib servo.h sont différentes, et te permettent de faire des choses différentes..
    Ah ok, c´est bon à savoir Merci

  24. #23
    invite861d9b56

    Re : Controle de 2 servomoteurs avec Arduino

    Je en suis quand même pas sur qu'il soit très judicieux d'utiliser une sortie PWM pour un servo... En effet, le servo nécessite un temps Ton donné, facilement faisable avec un delay_ms en arduino, tandis qu'avec du pwm c'est (à mon gout) trop aléatoire, à moins d'être tout a fait sûr de ce qu'on veut faire !

    Le PWM joue principalement sur le rapport cyclique !

  25. #24
    Jack
    Modérateur

    Re : Controle de 2 servomoteurs avec Arduino

    En effet, le servo nécessite un temps Ton donné, facilement faisable avec un delay_ms en arduino, tandis qu'avec du pwm c'est (à mon gout) trop aléatoire
    Je ne vois pas en quoi une pwm peut présenter un quelconque aspect aléatoire: par exemple, on fixe une période de 10 ms, un rapport cyclique de 1/10, Ton sera invariablement égale à 1 ms, ce qui n'est pas garanti avec une tempo logicielle.
    L'avantage de la pwm, c'est qu'elle est normalement assurée par une fonction hardware du µC (d'où la précision), ce qui permet au soft de "vivre sa vie" sans plus avoir à se préoccuper de générer le signal.
    Je ne connais pas bien les arduinos, mais je viens de regarder la doc de la fonction delay. Il est écrit qu'elle est interruptible, donc si une autre tâche génère des interruptions, le délai est faussé, donc aléatoire, au contraire de la pwm.

    A+

  26. #25
    invite861d9b56

    Re : Controle de 2 servomoteurs avec Arduino

    En effet, aléatoire n'était pas vraiment le mot approprié, mais je ne suis pas convaincu, en effet, en théorie c'est tout à fait utilisable, mais en pratique, pour un arduino je ne suis même pas sur qu'on puisse choisir la fréquence du pwm... Enfin apparemment si: http://forum.arduino.cc/index.php/topic,37596.0.html mais c'est pas fait pour être changé facilement (en tout cas pas dans l'idée arduino)

    Pourquoi ne pas utiliser la fonction millis() ? Ou même faire sa propre interruption quoi...

  27. #26
    Jack
    Modérateur

    Re : Controle de 2 servomoteurs avec Arduino

    Comme je l'ai dit, je ne suis pas "pointu" en ARDUINO.

    Ce que je sais en revanche, c'est que si une fonction est intégrée en dur dans un µC, elle travaillera mieux que son équivalent en soft.
    Pourquoi ne pas utiliser la fonction millis() ?
    ca va obliger le µC à interroger en permanence son compteur de temps, donc à travailler à 99,9999% de son temps pour rien.
    Ou même faire sa propre interruption quoi...
    Pourquoi pas, en utilisant une interruption générée toutes les x µs par exemple. mais ça revient à utiliser un timer harware.

    A+

  28. #27
    invitebd358db9

    Re : Controle de 2 servomoteurs avec Arduino

    Bonjour,

    je débute aussi avec un servo (j'aimerais en piloter 6 avec un pic 18F46K22 par exemple),

    j'ai commencé en voulant utiliser une sortie PWM car lorsqu'il est bien programmer on peux facilement modifier le duty cycle tout en gardant la periode constante pour faire varier le Ton (attention au garde fou), mais mon problème c'est que la quartz de ma carte utilisant le pic est trop rapide et je n'ai pas envie de le changer car cela modifierait aussi le timing de mes port uart (9600 baude) déjà programmé.

    2eme soution l'utisation d'un timer tout les 100 µs (attention que si l’interruption intervient trop souvent il y a un risque que le programme ne puisse rien faire d'autre que l'interupt) mais cela donne pour les +ou- 2ms utile (400µs = 0° à 2.4ms= 180°)que 20 valeur de réglage -> un step = 9°, ce qui n'est pas très précis.

    3eme solution, toujours utiliser un interupt mais cette fois en reglant la valeur de chargement à chaque interupt differente, c'est à dire:
    exemple pour Ton = 1ms et periiode = 20ms
    a) chargement pour 1er interupt à 1ms
    b) 1er interupt provoquer => rechargement prochain interupt pour 19ms (Toff)
    c) 2eme interupt provoquer => rechargement prochain interupt pour 1mS
    d) ect.

    ceci permet une bien plus grande précision, donc si on veut augmenter Ton il faut aussi diminuer Toff

    je suis occuper maintenant à tester de piloter 2 ou 3 servo via le même interupt donc en recalculant de le rechargement du timer pour les servo en fct de leur Ton respectif.

    cela fonctionne pas trop mal, enfin j'ai juste un petit problème pour lequel je suis occuper à chercher pour l'instant mais si vous avez une idée je suis preneur aussi.
    ce problème c'est que à 2 ou 3 endroit lorsque je fais augmenter le Ton de µs en µs le servo recul de plusieurs degré et le Ton augmenter suivant, celui-ci revient à son bon positionnement ??
    est ce du au fait que l’incrémentation est trop petite ?

  29. #28
    polo974

    Re : Controle de 2 servomoteurs avec Arduino

    je ne sais pas comment tu gères tes différents servos dans ta version 3.

    perso, je ferais un truc du genre:
    (descendre tous les IOservo)
    t0: monter IOservo1, armer timer pour Tservo1
    t1: descendre IOservo1, monter IOservo2, armer timer pour Tservo2
    t2: descendre IOservo2, monter IOservo3, armer timer pour Tservo3
    ...
    tn: descendre IOservon, armer timer pour Tlong (10 à 20ms)
    et hop, on boucle

    l'irq de ce timer en priorité max (si possible) et les autres irq ré-autorisant au plus vite une autre irq de priorité supérieure.
    sinon, le jitter sera inévitable.

    mais il semble qu'il y a une librairie toute faite pour piloter les servos... enfin, pour les arduino, les pics c'est autre chose (et je ne lirais pas la doc d'un pic, question de religion ).
    Jusqu'ici tout va bien...

Discussions similaires

  1. Contrôle de moteur DC via Arduino
    Par oniff dans le forum Électronique
    Réponses: 12
    Dernier message: 21/02/2013, 22h43
  2. 500 servomoteurs sur arduino...?
    Par inviteb6198e20 dans le forum Électronique
    Réponses: 5
    Dernier message: 02/02/2013, 12h21
  3. Contrôle de servomoteurs et mesure
    Par inviteddd69442 dans le forum Électronique
    Réponses: 1
    Dernier message: 23/02/2009, 00h48
  4. Controle de 12 servomoteurs
    Par invite5d1bc976 dans le forum Électronique
    Réponses: 1
    Dernier message: 21/05/2008, 18h27
  5. controle de servomoteurs avec le port parallele
    Par inviteb1694711 dans le forum Électronique
    Réponses: 1
    Dernier message: 23/02/2007, 10h45
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...