Arduino - Servomoteurs

Toutes les discussions sur l'Arduino !

Modérateur : MOD

Répondre
Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » sam. 21 févr. 2015, 18:47

Bonjour
D'abord un grand merci pour ce montage :D
Je l'ai realise dans son integralite en chargeant le programme complet a la fin du tuto avec la visu par led
Cela fonctionne hormis un soucis,

A la mise sous tension, a la premiere pression sur n'importe quel BP, le servo se deplace tres vite puis prends sa vitesse normale, uniquement a la premiere mise sous tension
Je ne comprends pas ???
Quzlqu'un peut-il m'aider ?
Merci d'avance

Avatar du membre
Arduino
Prolixe
Messages : 1699
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Arduino - Servomoteurs

Message par Arduino » dim. 22 févr. 2015, 10:26

Bonjour Tuture,

Je ne suis pas un spécialiste de ce problème, mais cela a réveillé des souvenirs car ton problème a été évoqué dans ce fil en fin de page 4 et début de page 5 (frétillement erratique du servo).
Il semblerait que Guillaume22 ait trouvé une solution ; elle est expliquée en page 6 par son post du 14 janvier 2014.
Essaie cela en attendant que Guillaume22 ou jlb puisse t'en dire plus.

Et cela m'a fait plaisir de relire cette très belle réalisation de jlb... :coeur1: Finalement, beaucoup de choses ont été produites par les Arduineurs de ce forum pour agrémenter un réseau de trains miniatures ; le projet APTE suit son cours...

Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » dim. 22 févr. 2015, 12:59

Merci pour cette réponse rapide
je vais essayer cela mais c'est bizarre, cela donne plutôt l'impression d'être un problème de programmation que parasite car le servo ne "frétille" pas mais réagi normalement à la pression sur le BP mais une fraction de seconde en vitesse rapide pour très bien fonctionner par la suite, il en est de même pour les autre servos. En terme plus clairs, a la mise sous tension, les servos se positionnent bien, Puis, à la PREMIERE PRESSION, le servo se déplace TRES RAPIDEMENT pour prendre une vitesse normale lente. Mais cela se fait juste à la premiere pression.
D'ailleurs, pour éviter des problèmes de positionnement servos au départ, comme j'ai du les alimenter par alimentation externe à l'arduino du fait du nbre de servos, j'ai, par le biais d'une simple porte and et condensateur, décalé la mise sous tension "puissance " des servos, ce qui fait que, a la mise sous tension générale, l'arduino est alimenté, puis 5 secondes plus tard, les servos le sont ce qui évite tout mouvement du servo du fait que la partie "commande" est stabilisée avant la mise sous puissance des servos.
Je vais essayer la manip de la résistance de tirage et vous tiens au courant.
Un grand merci pour ce forum et LOCODUINO également.

Après de multiples essais, c'est à la mise sous tension que les servos, dépare le programme, ne restent pas dans la position initiale mais se repositionnent TRES RAPIDEMENT, ce qui peut être très gênant pour l'utilisation du servo pour la porte d'un bâtiment, par exemple.

Avatar du membre
Arduino
Prolixe
Messages : 1699
Enregistré le : mer. 25 sept. 2013, 17:14

Re: Arduino - Servomoteurs

Message par Arduino » dim. 22 févr. 2015, 17:47

Si la résistance ne résout pas le problème, le mieux sera d'attendre que Guillaume ou Jean-Luc donne leur réponse, ils surveillent régulièrement ce forum.
Et si j'ai une idée lumineuse, je la posterai, mais il est vrai que je n'ai pas utilisé de servos depuis un moment et que je ne connais pas bien la bibliothèque.

Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » dim. 22 févr. 2015, 19:42

Ok merci quand même

Guillaume22
Papotier
Messages : 145
Enregistré le : dim. 29 sept. 2013, 09:20

Re: Arduino - Servomoteurs

Message par Guillaume22 » dim. 22 févr. 2015, 21:01

A mon avis, le servo va à 90° d'abord puis va à la 1ère position définie.
Tout est dans la méthode attach qui fait aller le servo à 90. Pour cela, la méthode write avant ou l'autre comme on veut pour spécifier l'angle de départ.

Cela implique d'autres choses, savoir dans quelle position on l'a laissée soit eeprom soit une fonction avant extinction qui place les servo dans une position de base.

Il me semble que ce programme était une démonstration de mouvement lent du servo. En rapport avec un réseau, cela sera un peu plus compliqué, car il faut gérer les angles de début et fin de course ainsi que la façon de définir la position de début.

Avatar du membre
jlb
Fécond
Messages : 686
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Arduino - Servomoteurs

Message par jlb » lun. 23 févr. 2015, 10:59

Bonjour,

Guillaume à répondu pertinemment.

C’est le comportement qui est programmé. À l’allumage, les servos sont positionnés à l’angle minimum. Ça se passe dans le constructeur de DescripteurServo et dans la méthode connecte de la classe DescripteurServo.

Donc si vous avez éteint le montage avec des servos à l’angle maximum, ces derniers vont se positionner d’un coup à l’angle minimum quand vous le rallumez.

La suggestion de Guillaume de stocker la position en EEPROM à l'extinction est tout à fait valable mais suppose une procédure d'extinction. Une solution alternative et plus facile à mettre en œuvre est de stocker en EEPROM la position atteinte systématiquement et de ne pas éteindre alors qu'un servo est en mouvement. l'EEPROM du microcontrôleur de l'Arduino Uno supporte 100 000 cycles d'écriture ce qui permet 50000 mouvement d'aiguillage :)

Avatar du membre
jlb
Fécond
Messages : 686
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Arduino - Servomoteurs

Message par jlb » lun. 23 févr. 2015, 11:29

Guillaume22 a écrit :Il me semble que ce programme était une démonstration de mouvement lent du servo. En rapport avec un réseau, cela sera un peu plus compliqué, car il faut gérer les angles de début et fin de course ainsi que la façon de définir la position de début.
Le réglage des butées est présent. Il n'y a finalement que cette histoire de mémorisation de la position d'arrêt à rajouter

Avatar du membre
Trusty
Bavard
Messages : 66
Enregistré le : lun. 03 déc. 2012, 11:04
Echelle pratiquée : N
Prénom : Thierry
Localisation : Melun
Âge : 56

Re: Arduino - Servomoteurs

Message par Trusty » lun. 23 févr. 2015, 15:27

Pour être précis (et si j'ai bien compris) , un servo calcule sa position d'après le voltage présent à son entrée : 0v position mini, 5v position maxi... Lorsque l'Arduino démarre, les pins sont remises à zéro, et lorsque le attach intervient, il va lire la valeur du voltage à ce moment là et en déduit sa position de départ qu'il rallie à vitesse grand V !
La solution est effectivement de faire un analogWrite avant le attach d'une valeur mémorisée quelque part, comme l'EEPROM !
Enfin, les mouvements erratiques des servos au repos sont surement dûs à l'imprécision du voltage de la broche analogique combinée avec l'imprécision de la lecture de la valeur courante par le servo. J'ai remédié à ce problème dans UAD en proposant une pin d'alimentation optionnelle sur laquelle on peut brancher un relais ou un transistor qui ne fournira l'alimentation au servo qu'au moment des mouvements...

Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » lun. 23 févr. 2015, 19:20

MERCI POUR CES RÉPONSES RAPIDES.
SERAIT-IL POSSIBLE, tout en gardant ce fonctionnement actuel de modifier le prog afin que le servo se positionne mais surtout "lentement" car c'est cette rapidité d'exécution qui me pose problème, imaginez les aiguillages a quel vitesse ils vont se placer à l'initial, je ne vous parle pas des barrières de passages à niveaux :P :P
Je suis plus que novice dans la programmation. si quelqu'un peut m'aider sur ce coup là, ce serait impec... :roll:

Avatar du membre
jlb
Fécond
Messages : 686
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Arduino - Servomoteurs

Message par jlb » lun. 23 févr. 2015, 21:10

Bonsoir,

La seul moyen est de mémoriser la position des servos dans l'EEPROM. En effet, faire un mouvement lent vers une position cible suppose de connaître la position de départ. Or, à l'allumage, hormis si la dernière position connue est mémorisée, ce n'est pas possible. Je m'occupe d'ajouter la mémorisation en EEPROM dès que possible.

Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » mar. 24 févr. 2015, 10:20

Bonjour
merci pour ces infos que je vais essayer de décripter en me replongeant dans ma Bible Arduino. En espérant que jib trouvera une solution.
Je reste attentif sur le forum.
Cordialement
Philippe :dodo:

Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » mer. 04 mars 2015, 20:00

Bonsoir

après avoir passé quelques heures à essayer de décrypter les infos de JIB, je dois dire que arduino a eu raison de moi :evil:
Mes maigres compétences en programmation ne me permettent pas actuellement d'avancer. je pense sérieusement retourner à un système "classique" avec portes logiques que je maitrise beaucoup mieux.
Cela dit, j'aimerais quand même aller jusqu'au bout du projet, je n'aime pas laisser tomber un montage en cours, d'autant plus que le travail abattu par son auteur mérite que l'on persévère.
Cordialement
Philippe :moi:

Avatar du membre
jlb
Fécond
Messages : 686
Enregistré le : jeu. 04 oct. 2012, 16:38
Echelle pratiquée : N
Prénom : Jean-Luc
Site Internet : http://modelleisenbahn.triskell.org

Re: Arduino - Servomoteurs

Message par jlb » jeu. 05 mars 2015, 10:47

Bonjour Philippe,

Je n'ai pas encore eu le temps de remettre en place la manip. La modification dans le code est rapide à faire mais il faut quand même que je teste :) Je fais ça ce week-end.

Tuture
Messages : 22
Enregistré le : lun. 17 févr. 2014, 09:37

Re: Arduino - Servomoteurs

Message par Tuture » ven. 06 mars 2015, 07:49

Bonjour
Un grand merci pour cette reponse ultra rapide :ange3:
Cordialement
Philippe

Répondre