Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Arduino - Servomoteurs

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Arduino - Servomoteurs

Publié: Sam 21 Fév 2015, 19: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
Tuture
 
Messages: 22
Inscrit le: Lun 17 Fév 2014, 10:37

Re: Arduino - Servomoteurs

Publié: Dim 22 Fév 2015, 11: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...
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1688
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Servomoteurs

Publié: Dim 22 Fév 2015, 13: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.
Tuture
 
Messages: 22
Inscrit le: Lun 17 Fév 2014, 10:37

Re: Arduino - Servomoteurs

Publié: Dim 22 Fév 2015, 18: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.
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1688
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Servomoteurs

Publié: Dim 22 Fév 2015, 20:42 
Ok merci quand même
Tuture
 
Messages: 22
Inscrit le: Lun 17 Fév 2014, 10:37

Re: Arduino - Servomoteurs

Publié: Dim 22 Fév 2015, 22: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.
Guillaume22
Papotier
 
Messages: 145
Inscrit le: Dim 29 Sep 2013, 09:20

Re: Arduino - Servomoteurs

Publié: Lun 23 Fév 2015, 11: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 de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Lun 23 Fév 2015, 12: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 de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Lun 23 Fév 2015, 16: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...
Avatar de l’utilisateur
Trusty
Bavard
 
Messages: 64
Inscrit le: Lun 03 Déc 2012, 12:04
Localisation: Melun
Âge: 56
Echelle pratiquée: N
Prénom: Thierry

Re: Arduino - Servomoteurs

Publié: Lun 23 Fév 2015, 20: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:
Tuture
 
Messages: 22
Inscrit le: Lun 17 Fév 2014, 10:37

Re: Arduino - Servomoteurs

Publié: Lun 23 Fév 2015, 22: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.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Mar 24 Fév 2015, 11: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
Inscrit le: Lun 17 Fév 2014, 10:37

Re: Arduino - Servomoteurs

Publié: Mer 04 Mars 2015, 21: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:
Tuture
 
Messages: 22
Inscrit le: Lun 17 Fév 2014, 10:37

Re: Arduino - Servomoteurs

Publié: Jeu 05 Mars 2015, 11: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.
Avatar de l’utilisateur
jlb
Fécond
 
Messages: 679
Inscrit le: Jeu 04 Oct 2012, 16:38
Echelle pratiquée: N
Prénom: Jean-Luc

Re: Arduino - Servomoteurs

Publié: Ven 06 Mars 2015, 08:49 
Bonjour
Un grand merci pour cette reponse ultra rapide :ange3:
Cordialement
Philippe
Tuture
 
Messages: 22
Inscrit le: Lun 17 Fév 2014, 10:37

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité