Servomoteurs et télécommande - slam

Servomoteurs et télécommande - slam

Messagepar CC72000 » 16 Juin 2020, 13:57

Bonjour à tous,

Je reproduis ici un message reçu de slam en MP, qui ne maitrise pas bien le forum.
et moi je ne maitrise pas l'arduino.

Message de slam :

Ainsi donc, dans la logique de mon inscription à votre Forum, c'est bien entendu pour demander une aide, ou plutôt une piste pour résoudre une logique informatique.
J'ai démarré sur Arduino Uno un petit programme pour l'ouverture/fermeture des portes d'une rotonde au moyen de 6 servomoteurs. Le contrôle de la vitesse est
effectué grâce à la boucle 'for' et la fonction 'delay'. Aucun soucis pour la réalisation.
Sauf que, dans le projet que je vise plus tard, je compte utiliser une carte Mega car j'aurai besoin de plus de sorties, mais également j'envisage aussi d'y implanter d'une
part le programme de la rotonde, celui du pilotage du pont tournant, ainsi que d'autres petites applications diverses dont je n'entrerai pas dans le détail pour le moment, j'en
suis pas prêt pour l'instant. Concernant le pont tournant, j'ai survolé le formidable développement de Xavier dont j'ai également fait référence pour un complément
d'information sur la programmation.
Mes premiers essais ont étés réalisés pour faire tourner un moteur CC avec accélération, décélération, temps de rotation divers dans les deux sens de l'ordre de la minute et donc utilisation de longs 'delay' et donc déception au moment de vouloir arrêter la rotation à un moment donné. C'est à cette époque que, à force de combinaisons diverse et consulta-
tions sur le Web, j'ai obtenu la réponse à mon petit soucis. Depuis cette époque, j'ai laissé un peu de côté la programmation pour m'occuper de la réalisation du plancher de la gare
cachée et de la pose du réseau. Mais confinement oblige, sans matériaux, le plancher supérieur a attendu, et donc favorable à la replongée dans l'informatique afin de trouver
des solutions au remplacement de ce fameux 'delay'. Plusieurs bibliothèques ont étés testées sans résultat pour mes applications (millisDelay, AsyncTimer, AsyncDelay,etc...)
et finir actuellement sur le sujet traité par Adafruit sur le Multi tasking !!! 1 et 2.
Bons exemples, mais pas du tout à ma portée pour arriver à réaliser ne fusse simplement que d' arrêter et déconnecter le servomoteur.
C'est donc le motif pour lequel, j'aimerais avoir les conseils de gens plus qualifiés que moi dans ce domaine. C'est un sujet que je voudrait résoudre pour mes applications futures,
sachant également que je peux avoir recours à la facilité en équipant chaque programme sur autant de cartes Nano, c'est pas motivant.
D'avance merci pour l'éventuelle piste à approfondir. Je joint également un jet de ce que je tente de résoudre.

Cordialement slam.

Servos.odt
(12.98 Kio) Téléchargé 82 fois
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problème...
Michel.
CC72000
 
Messages: 3063
Inscrit le: 25 Octobre 2014, 08:30
Localisation: 21240-Talant - Dijon ( Côte d'Or / Bourgogne )

Re: Arduino et pont tournant - slam

Messagepar slam » 16 Juin 2020, 17:26

Bonsoir à tous de la part de SLAM
En effet, après avoir lu le message de CC72000 m'informant avoir transféré gentiment le mien dans la rubrique "le coin du bricoleur",
j'étais sur le point de réécrire mon message car depuis, j'avais résolu le soucis exposé dans ce message et communiquer un nouveau
fichier joint. En effet, j'ai chargé le programme en y incluant une télécommande. C'est cette fois un peu plus complexe (voire beaucoup
plus) à résoudre car là, je SECHE dur et quelques nouveaux conseils seraient les bienvenus.
Je suis vraiment pas à l'aise dans ce forum à ne pas savoir envoyer une message dans le forum, sans passer par un message personnel.
Sur le message transféré gentiment par CC72000, j'ai tenté de modifier le précédent fichier joint sans savoir si l'opération avait réussi.
Désolé également si un membre de ce forum à voulu me répondre, ayant décortiquer mon premier fichier joint.
J'attend de voir la suite à mon beau cafouillage dans ce forum.
Cordialement ;<))
SLAM
slam
 
Messages: 14
Inscrit le: 04 Mai 2020, 14:08
Localisation: Belle-Ile en mer 56 Morbihan

Re: Arduino et pont tournant - slam

Messagepar Xavier » 17 Juin 2020, 17:10

Bonjour,

Il y a plusieurs manières de t'aider ...
La première serait de répondre à ton cahier des charges en te proposant un sketch adapté à tes besoins à partir des éléments dont je dispose. Si ce besoin est partagé avec d'autres, cela permettrait à d'autres encore d'en bénéficier.
La seconde serait de t'accompagner dans ton développement de A à Z: si je faisait cela pour chacun, il faudrait que j'y consacre tous mes loisirs !
La troisième serait de t'indiquer le forum Locoduino, fort bien fait, sur lequel tu pourrais poser tes questions.

De toute manière, tout projet commence par un cahier des charges aussi complet et précis que possible!

Pour ma part, je préfère multiplier les petits arduinos, types Nano, avec leurs petits programmes et surtout leurs pins au pas de 2.54mm. Je réserve le Mega au cas de manque de mémoire chronique.
Ce n'est surtout pas parce qu'il reste des pin disponibles qu'il faut en rajouter dans un sketch, le pousser aux limites de l'utilisation mémoire et le rendre instable.
J'ai appris à scinder les problèmes complexes en solutions simples! Le coût n'est pas plus élevé mais cela permet d'avoir des programmes indépendants que l'ont fait évoluer sans prendre de risque avec ce qui tourne.

J'ai donc une base commune que je reprends à chaque projet et complète de nouvelles briques si nécessaires. Cette base intégre le DCC, l'affichage sur un LCD, l'interfaçage USB de bas niveau.
Les briques dont je dispose permettent dors et déjà
- La commande des LEDS (clignotement, fading, temporisation)
- La commande des Servomoteurs (direct ou avec SlowMotion)
- La commande des moteurs pas à pas (avec un driver DRV8255)
- L'utilisation du DfPlayer et de ses mp3 pour la sonorisation
- L'utilisation des RFID en SPI (y compris l'écriture)
- La communication maitre-esclave en I2C (pour permettre à plusieurs sketchs de travailler de concert)
Ces briques permettent une utilisation standard que l'on peut toujours compléter pour les cas biscornus.
Il faudra bien entendu compléter cette liste de briques en fonction des futurs besoins.

J'essaie de rendre ces programmes génériques mais néanmoins adaptable à chaque utilisation par des CV.
Un programme de configuration, écrit avec Processing, permet de rendre ce paramétrage plus intuitif (plus besoin de manipuler l'USB de bas niveau): le sketch arduino est plus petit, Processing tourne sur mon PC!
Le tout constitue un ensemble cohérent, entièrement gratuit pour une utilisation personnelle ou en club.

Amicalement,
Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Arduino et pont tournant - slam

Messagepar slam » 18 Juin 2020, 20:44

Bonsoir Xavier

Merci pour ces renseignements et satisfait sur l'évolution finale de mon petit cafouillage dans l'utilisation de ce forum. Remerciement également à Michel pour avoir tenu compte de ma demande concernant la possibilité éventuelle de transférer mon message dans le cadre des Automatismes.Je pense également qu'il serait plus juste d'énoncer le titre tel que "Servomoteurs et télécommande".Ce n'est pas un critique, car Michel a fait tout son possible pour venir à mon aide pour mes premier pas dans ce forum.

Me concernant, comme écrit lors de ma présentation en réponse à Phil47, c'est lors d'une proposition de récupération d'un vieux réseau Ho de chez JOUEF que j'ai décidé de le réimplanter
à la maison. Ce matériel est donc ancien mais en bon état. Il est également assez complet, avec un grand nombre d'accessoires (rails, aiguilles, signaux et petits circuits électroniques (dont les
8 postes de contrôle par courant porteur de dernière génération) de cette époque (années 70) mais aussi des accessoires de décoration dont les plus importants étant une rotonde Faller
à 6 emplacements ainsi qu'un pont tournant Fleischmann de 48 positions.

Sans vouloir en refaire un réseau important, comme ancien technicien électricien, mon premier désir fut bizarrement d'automatiser ces deux derniers.J'ai jusqu'à ce jour, monté le niveau -1 de la gare de triage cachée. Le montage fut interrompu faute de matériaux avec le confinement et une reprise de l'ordinateur s'imposa. En premier, c'est à l'ouverture/fermeture des portes de la rotonde que je m'attaquai avec Arduino Uno. Un petit programme fut élaboré il y a quelque temps déjà et est fonctionnel tant mécaniquement qu' électroniquement. Pour le programme,
de contrôler le déplacement, j'ai utilisé la fonction "delay" dans la boucle "for". Suite à consultation sur le Web de sujets traitant de modélisme ferroviaire, j'ai donc navigué entre-autre sur
CDM-Rail dans lequel, ton formidable développement concernant le pont tournant a retenu mon attention. C'est, dès lors, à l'étude du programme, que l'idée m'est venue d'automatiser ces deux
accessoires avec la même télécommande, et donc éviter cette fonction bloquante. Effectivement, le plus simple c'est un programme individuel et une carte Nano pour chaque application.

De même, un programme provisoire dans le but de contrôler le déplacement du pont tournant, est réalisé pour vérifier son déplacement. Avec le circuit Pollolu que tu conseille, j'ai été obligé de concevoir un réducteur 1/6 afin d'avoir la possibilité de déplacer le pont par tranche de 15°, le moteur pas à pas étant un 200 pas. Outre l'absence de toutes les possibilités de ton programme mon petit montage mécanique fonctionne bien.

Et donc, personnellement, c'est avec l'envie d'éviter cette fonction "delay" que je m'y suis attardé et suite à la consultation sur le Web que j'ai trouvé un développement par Adafruit sur le multitâche. J'essaie de l'appliquer avec ce programme de contrôle des 6 servomoteurs. Le début est compris, disons l'ouverture de la porte, c'est Ok, et sèche pour la fermer.
Voilà en gros les petits projets que j'essaie de réaliser, encore une fois, sans prétention, étant donné le matériel en ma possession qui est je pense pas adaptable au contrôle DCC.

Merci d'avoir eu la patience de me lire.

A bientôt, cordialement;-)
Jean
slam
 
Messages: 14
Inscrit le: 04 Mai 2020, 14:08
Localisation: Belle-Ile en mer 56 Morbihan

Re: Arduino et pont tournant - slam

Messagepar Xavier » 18 Juin 2020, 21:26

Bonsoir,
Si tu souhaites utiliser des servomoteur, il existe la bibliothèque SlowMotionServo pour te simplifier la vie

Avec elle plus de delay. Les servomoteurs bougent lentement et permettent de faire autre chose en même temps.
Tu définis pour chaque servo les positions haute, basse, la vitesse et la courbe a suivre dans le setup.
Dans la boucle tu fait appel à la librairie pour qu'elle fasse bouger les servomoteurs et tu gère tes demandes d'ouverture et de fermeture. Rien de compliqué.
Si tu coinces, demande de l'aide (et surtout joint ton sketch pour ne pas parler dans le vide)

Quand au circuit Pollolu, son intérêt est de multiplier artificiellement le nombre de pas des moteurs pas a pas. Ainsi un moteur 400 pas passe à 32*400 pas
En bout de pont, les jeux mécaniques te poseront inévitablement des soucis avec une démultiplication. C'est pour cela que mon Pont (en N) est monté directement sur l'axe du moteur 400 pas.
L'autre intérêt c'est de pouvoir avoir une acceleration, suivi d'une vitesse en pallier, puis une déceleration, grâce à la bibliotheque AccelStepper elle aussi assez simple d'utilisation.

Ces 2 bibliothéques permettent de supprimer le delay.
Le multitâche est en fait inexécution morcelée mais linéaire de petits morceaux de taches.

Amicalement,
Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Servomoteurs et télécommande - slam

Messagepar CC72000 » 19 Juin 2020, 08:23

Bonjour Jean,

slam a écrit:Je pense également qu'il serait plus juste d'énoncer le titre tel que "Servomoteurs et télécommande".

Suffit de le demander :lol:
S'il n'y a pas de solutions, c'est qu'il n'y a pas de problème...
Michel.
CC72000
 
Messages: 3063
Inscrit le: 25 Octobre 2014, 08:30
Localisation: 21240-Talant - Dijon ( Côte d'Or / Bourgogne )

Re: Servomoteurs et télécommande - slam

Messagepar slam » 20 Juin 2020, 14:37

Bonjour,
Tout d'abord à Michel, EH! OUI. Merci pour tout ;<))).
Quant à Xavier,

J'ai en effet, comme bien conseillé, j'ai survolé le site LOCODUINO et vu un exemple avec la bibliothèque SlowMotionServo. Je vais donc
m'y référer afin d'en tirer quelque chose. Concernant le pilotage du pont tournant, j'y reviendrai plus tard pour un complément d'informations.
Mais dans l'immédiat, comment ferais-tu, étant donné qu'il a 48 positions, càd autant de fois 7.5° avec un moteur pas à pas de 200 pas par
tour, ce moteur étant le plus courant. J'ai peur qu'avec l'erreur du calcul de l'angle obtenu si minime soit-elle mais reportée autant de fois
pour atteindre l'endroit, ne permette une bonne précision, même avec le driver POLLOLU ? Y a t'il des moteur pas à pas de 240 pas ?
Mes recherche ont étés vaines. Je vais donc pour l'instant essayer de résoudre mon problème de télécommande, car à mon avis, c'est là
que cela bloque. Afin de contrôlé avoir bien reçu le code de la télécommande, il y a une led à allumer au premier appui, et éteindre au second.

Dans le programme essai que j'ai testé, sans la partie détection du code, mon servo fonctionne correctement, ainsi que la led. Dès qu'il y a
la partie détection, il n'y a plus que la led qui fonctionne et sur le moniteur série, auquel je demande d'écrire le "pos", contrairement au cas
précédent, "pos" s'incrémente seulement de 1 à chaque appui. C'est juste pour t'en informer. Je te tient au courant de l'évolution de tout cela
avec si besoin est , avec une copie du sketch.

Je voudrais également m'occuper du plateau supérieur pour l'achat de la matière première avant la fermeture éventuelle pou congés du seul
magasin de bricolage sur l'île m'évitant ainsi un déplacement en FRANCE


Bonne fin de semaine, à bientôt ;-)
Et cordialement.
slam
 
Messages: 14
Inscrit le: 04 Mai 2020, 14:08
Localisation: Belle-Ile en mer 56 Morbihan

Re: Servomoteurs et télécommande - slam

Messagepar Xavier » 20 Juin 2020, 16:59

Bonjour Jean,

Reste dans des moteurs courants: Je ne connais pas de moteurs 240 pas.

200*32=6400 pas, soit un angle par pas de 0,05625 degrés.
6400/48=150 pas entre chaque voie
Si c'était à refaire (je me penche actuellement sur la question!), je partirai du principe que la voie 0 (position de repos) est à l'angle 0 donc au pas 0.
La voie n est alors au pas n*150.

Tu peux éventuellement affiner en donnant un offset que tu conserverai en Eprom (dans un CV) allant de 0 à 255 ou plutôt de -127 à +128. Par défaut il vaudrait 128=0.
Cela permettrait de corriger les petites approximations dans la pose de tes voies.

Connaissant la position actuelle et la destination, tu calcul ainsi le nombre de pas à effectuer -Offset de la position de départ + l'offset de la position d'arrivée et tu déplace ton pont de ce nombre de pas.
La bibliotheque AccelStepper s'occupe de l'accélération et de la decélération. Il te suffit dans la boucle de vérifier à chaque fois si le moteur tourne ou pas.

Attention: si le pont bloque, le moteur pas à pas va rater des pas, mais toi, tu ne le saura pas, à moins de mettre une roue codeuse indiquant la position physique, et là c'est plus cher et plus compliqué!

Pense à mettre une procédure pour rechercher le zéro du pont au démarrage (capteur optique de souris PC sur un ergo en bout de pont)
Interdit toute nouvelle commande temps que le pont tourne + une temporisation

Dans un premier temps, je donnerai la position de destination par USB (plus simple à tester) puis une fois ta réception par télécommande au point, tu passes ton information.
J'ai pour habitude de bien séparer la partie commandes de la partie exécution, ce qui simplifie la mise au point. Cela permet aussi que cette information puisse venir par plusieurs canaux: USB, DCC, Clavier, Télécommande ...
En début de boucle, tu reçois les commandes, d'où quelles viennent, puis tu les exécutes.

Dis, c'est où ton île ? C'est l’île de la citée ? :roll:

Amicalement,
Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Servomoteurs et télécommande - slam

Messagepar slam » 23 Juin 2020, 16:15

Bonjour Xavier
Pour les explications concernant le pont tournant, c'est du costaux et pour l'instant, je les laisse sous le coude tout en gardant
ces notes précieuses.
Pour revenir à la télécommande des portes de la rotonde, une petite information. Elle de marque Faller et possède une tringlerie
à l'intérieur pour l'ouverture et la fermeture. Cette tringlerie est terminée côté portes par un triangle sans base relié aux deux portes
et à l'autre extrémité pliée vers le bas avec une butée. Une loco à l'intérieur pousse ces portes, à mis chemin ce triangle se déploie et
ouvre complètement les portes. Evidemment, les portes restent ouvertes et lorsque la loco réintègre son emplacement, pousse cette
butée pour fermer les portes.
Mais tu connais peut-être le système et mon bla-bla… Tout cela pour dire qu'il n'y a qu'un seul servomoteur par emplacement.

J'ai donc fait des essais avec la bibliothèque SlowMotionServo. C'est très bien développé mais je retombe également avec les mêmes
problèmes qu'avec les essais sur le multi tâches. Du coup, j'ai tout remis à plat et essayé dans un premier temps avec un bouton
poussoir. Un appui ouvre, un second ferme. Mais voilà cela coince toujours et ne vois plus par où commencer. Au fichier joint que je
t'envoie (sous OpenOffice), l'exécution de l'ouverture se fait bien et pas le reste. Peut-être qu'a force de faire des essais, je sature
et j'ai probablement besoin que l'on m'aiguille sur une autre façon d'aborder la logique du fonctionnement.

De toute évidence, je vais passé maintenant un peu à la réalisation du plancher supérieur et reprendre l'informatique à la rentrée.
Ce n'est donc pas du tout urgent, c'est bientôt les vacances et la mer commence à devenir bonne pour les baignades(16,17°).
C'est en effet le beau "Caillou" qu'est Belle Ile en Mer.;-))))

Merci pour cet agréable début sur ce forum, à bientôt
Cordialement Jean.;-)
Pièces jointes
Essai.odt
Commande servomoteurs
(15.95 Kio) Téléchargé 81 fois
slam
 
Messages: 14
Inscrit le: 04 Mai 2020, 14:08
Localisation: Belle-Ile en mer 56 Morbihan

Re: Servomoteurs et télécommande - slam

Messagepar Xavier » 23 Juin 2020, 19:51

Bonjour Jean,

Voici un rapide exemple de ce que disais il y a peu :
SlamSlowMotionServo.ino.txt
SlamSlowMotionServo
(4.53 Kio) Téléchargé 101 fois
(renomme le sans le .txt pour pouvoir l'utiliser)
Pas de delay, la bibliotheque SlowMotionServo, des commandes par USB, ou un bouton pour inverser la position du servomoteur.
Je ne l'ai pas essayé physiquement :oops: mais tu ne devrais pas rencontrer de souci.

Tous mes sketchs sont construits sur cette structure de base.
Pose des questions et tu aura peut-être des réponses ... Ne demande rien et tu sera certain de ne rien apprendre ! :lol:

Amicalement,
Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Suivant

Retourner vers Automatismes

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron