LOCODUINO

Parlons Arduino => Débuter => Discussion démarrée par: will6454 le novembre 10, 2020, 01:41:45 pm

Titre: Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: will6454 le novembre 10, 2020, 01:41:45 pm
Bonjour à tous,
Nouveau sur ce forum , je suis en train de réaliser un réseau en tour de pièce sur 3 niveaux , il y a 23 aiguillages Peco que je voudrais actionner par servo moteurs. J'ai lu des tas de sujets sur le net concernant le système Arduino et cela me plait beaucoup , cependant comme je suis novice dans ce domaine , je voudrais savoir si quelqu'un pourrait m'aider à la mise en oeuvre de tous ces composants . D'après ce que j'ai lu il me faut donc 4 cartes Arduino UNO mais faut il une alimentation 9V pour chacune ou est ce qu'une seule suffit ?   Y a t'il d'autres composants à ajouter sachant que je souhaiterais commander l'ensemble depuis un TCO ?
Désolé si mes questions vous parraissent basiques mais on ne peux pas exceller dans tous les domaines...... lol
Merci d'avance à tout ceux qui me donneront un coup de main.
Will       
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: Pierre59 le novembre 10, 2020, 02:39:17 pm
Bonjour

Un seul Arduino avec un module à base de PCA9685 permet de commander 16 servos. Plus avec plusieurs modules.
Il y a plein d'articles la dessus.

Pierre
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 10, 2020, 02:41:15 pm
Bonjour et bienvenue.

encore plus simple : vous pouvez piloter 23 servo avec une carte Mega : la référence dit jusqu'à 48.
https://www.arduino.cc/reference/en/libraries/servo/

Ce d'autant que vous envisagez un TCO.
Faites "rechercher" en haut à droite avec TCO pour faire votre choix parmi les diverses réalisations.

Mais commencez par vous familiariser avec l'environnement Arduino, le site éditorial est là pour ça.

Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: Tony04 le novembre 10, 2020, 03:47:53 pm
Bonjour,

et peut-être voir à quelles distances ils se trouvent les uns des autres, qu'en pensent les spécialistes ?

Cordialement
Antoine
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 10, 2020, 04:26:46 pm
Bonjour Antoine,
tu penses aux problèmes de parasites ? Le Locodrome a du servir de test. Les satellites et le CAN sont certainement la panacée. Mais pour débuter la marche est un peu haute.
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: Tony04 le novembre 10, 2020, 04:38:12 pm
Coucou Michel,

et à quelle distance maximum penses-tu que la liaison d'un servo est fiable (avec une 10K entre + et signal) ?
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 10, 2020, 05:26:35 pm
Réponse imparable : ça dépend (de l'environnement) mais globalement je pense que comme c'est de l'analogique et que le servo est en butée, l'impact des parasites est (relativement) faible.
Mais je n'ai pas vraiment d'expérience.
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: will6454 le novembre 10, 2020, 05:30:14 pm
Oulà là !  ça y est je suis déjà largué....  Bon en tous cas merci de votre intervention rapide , je vais essayer de trouver un maximum d'infos sur l'environnement Arduino et m'en imprégner petit à petit.   Alors je reprends dans l'ordre des réponses , un module PCA 9685 c'est quoi cette bête là....?  En ce qui concerne la carte mega j'ai déjà vu un peu ses capacités et donc ce serait plutôt le bon choix d'après vous ?  Je vois que vous évoquez un problème de distance des aiguillages mais par rapport à quoi , la carte , entre eux ou autre chose ? 
Encore merci de vous intéresser à mon projet.
Titre: Re : Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: Tony04 le novembre 10, 2020, 05:38:16 pm
comme c'est de l'analogique et que le servo est en butée

Pourquoi en analogique et pourquoi en butée, moi aussi je suis largué ?  :)
Titre: Re : Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: Pierre59 le novembre 10, 2020, 05:53:23 pm
un module PCA 9685 c'est quoi cette bête là....? 

Un module  PCA 9685 c'est une petite carte ou un shield Arduino qui se connecte à l'Arduino et qui permet de contrôler 16 servos, avec deux exemplaires on contrôle 32 servos.

Pierre
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: will6454 le novembre 10, 2020, 06:19:47 pm
Merci Pierre pour ta réponse en ce qui concerne le PCA 9685 , j'ai bien compris sa fonction mais effectivement ne vaut il pas mieux utiliser une carte mega ?
Titre: Re : Re : Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 10, 2020, 06:21:50 pm
comme c'est de l'analogique et que le servo est en butée

Pourquoi en analogique et pourquoi en butée, moi aussi je suis largué ?  :)

Je veux dire qu'il n'y a pas de code sur le fil pour piloter un servo c'est du 0-5V.
Et pour un aiguillage, il n'y a que deux positions et il vaut mieux que l'aiguille soit bien en contact avec le rail avant que le fin de course intervienne (si il y en a)

La question de la distance, c'est justement la longueur des fils du servo :
soit on centralise (Mega p.e.) et les fils partent en étoile.
soit on décentralise (satellite ou décodeur localisé à coté de l'aiguillage) et on réduit la longieur des dits fils.
Titre: Re : Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 10, 2020, 06:37:46 pm
le PCA 9685 versus mega ?

C'est une question d’architecture, le mega peut avoir pas mal de chose à faire, gérer l' I2C en rajoute, réciproquement avec 23 aiguillages, ce sera un beau sapin de Noël avec pas mal de branches. Et le TCO en plus ...
Il faut regarder ce qui a déjà été fait. (éviter le syndrome de l'eau tiède)

En tout cas l' I2C est à réserver à des distances (très) courtes. C'est du numérique 5V pas redondant.
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: jfs59 le novembre 10, 2020, 06:46:43 pm
Bonsoir

Citer
Je veux dire qu'il n'y a pas de code sur le fil pour piloter un servo c'est du 0-5V.

Bah si désolé c est une forme de codage car c est du pwm avec variation du rapport cyclique entre deux bornes de timing
pas du tout ou rien

Cordialement
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: will6454 le novembre 10, 2020, 07:15:51 pm
J'essaye de tenir le cap parmi vos explications mais ce n'est pas évident pour un "plus" que débutant que je suis.....
Concrètement est ce que quelqu'un peut vraiment m'aider en me disant ce que je peux et dois faire pour piloter dans un premier temps mes aiguillages à partir d'un TCO tout simple avec le dessin des aiguilles , des poussoirs et des leds pour signaler leur position ?  C'est peut être basique pour vous mais comprenez que pour moi c'est un monde nouveau et j'ai regardé sur ce site mais je n'ai pas trouvé un sujet où l'on parle de choses simples pour ceux qui ne connaissent rien .... sans parler obligatoirement de CAN de satellites , de PWN ,de BUS et tous ces termes inconnus à ce jour.
Donc si une personne ( ou plusieurs ) accepte mon ignorance en se portant à mon niveau afin que je puisse mettre en oeuvre quelque chose de correct pour mon réseau  alors d'avance un grand merci pour son aide.
will   
Titre: Re : Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 10, 2020, 08:20:09 pm
Bonsoir

Citer
Je veux dire qu'il n'y a pas de code sur le fil pour piloter un servo c'est du 0-5V.

Bah si désolé c est une forme de codage car c est du pwm avec variation du rapport cyclique entre deux bornes de timing
pas du tout ou rien

Cordialement

Bien sur qu'il y a de l'information sur le fil, sinon ce serait de magie. Mais c'est une information analogique et non numérique.

Il faut voir que si il y a une perturbation à un instant, il y aura un décalage du servo moteur juste à cet instant. Si il est en butée, ça passera inaperçu.
C'est sans rapport avec la conséquence d'un code erroné en I2C qui peut rendre toute la séquence suivante inopérante voire catastrophique si il s'agit de la configuration des registres.
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: Pierre59 le novembre 11, 2020, 09:43:13 am
Bonjour

Bon je pense que pour aborder un tel projet avec un (ou des) Arduino il faut l'aborder par le haut. Il faut commencer par compter le nombre de fils qu'il faudrait connecter à l'Arduino :
- 23 fils pour les servos
- 2x23=46 pour les leds du TCO
- 23 ou 46 pour les boutons du TCO

C'est loin de tenir sur un Arduino (même un Mega), on peut multiplier les Arduinos ou essayer de limiter le nombre de fils connectés.

Pour limiter le nombre de fils on a deux solutions (entre autres) :
- utiliser des "expandeurs" qui augmentent le nombre de fils connectables. Le PCA9685 en est un, il est utilisable pour les servos mais aussi pour les leds. Il existe aussi des expandeurs pour les fils en entrée comme pour les boutons du TCO. Ces expandeurs se connectent en I2C avec seulement deux fils sur l'Arduino

- utiliser un TCO virtuel sur un PC, une tablette, un écran I2C (pouvant être tactile), … cela nécessite que zéro fils (utilisation du câble USB) ou deux fils (utilisation de l'I2C) et supprime tous les fils du TCO

Pierre
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: simontpellier le novembre 12, 2020, 11:08:28 am
Bonjour Will,

je vais tenter de vous aider à répondre à ce souci tout à fait compréhensible :
Citer
Concrètement est ce que quelqu'un peut vraiment m'aider en me disant ce que je peux et dois faire pour piloter dans un premier temps mes aiguillages à partir d'un TCO tout simple avec le dessin des aiguilles , des poussoirs et des leds pour signaler leur position ?  C'est peut être basique pour vous mais comprenez que pour moi c'est un monde nouveau et j'ai regardé sur ce site mais je n'ai pas trouvé un sujet où l'on parle de choses simples pour ceux qui ne connaissent rien .... sans parler obligatoirement de CAN de satellites , de PWN ,de BUS et tous ces termes inconnus à ce jour.
Donc si une personne ( ou plusieurs ) accepte mon ignorance en se portant à mon niveau afin que je puisse mettre en oeuvre quelque chose de correct pour mon réseau  alors d'avance un grand merci pour son aide.
will   

Ce que vous devez d'abord comprendre, c'est que 23 aiguillages c'est déjà énorme et va IMPOSER de l'apprentissage, du matériel, du code, des essais et que la question du TCO n'en est qu'une parmi les autres.

Donc ce qui pourrait vous aider vraiment à mon avis serait de procéder très progressivement :
- le réseau, pas trop de problème à se faire plaisir à le construire en anticipation de tout ce qu'il faudra développer ensuite pour le faire fonctionner à son idée
(idée qui évoluera, vous verrez...) si vous veillez à ce qu'il soit très évolutif lui aussi en ce qui concerne les possibilités de découpage en zones électriques.
- le contrôle commande... là il faut y aller doucement.
 Avec un seul Arduino, pour commencer c'est vraiment préférable !, vous pourrez tout de même et facilement commander deux ou trois moteurs par PWM, à vous de voir comment vous les enverrez sur les rails et sur quelles parties du réseau pour commencer.
Vous pourrez également manœuvrer quelques aiguilles (par solénoïdes au début avant de peut être passer à des servomoteurs ?) et donc brancher sur votre Arduino les poussoirs et les leds du TCO si vous partez sur un pseudo TCO physique, en provisoire.
Vous devrez ensuite regarder les solutions permettant d'étendre les possibilités et ça sera forcément un mix entre multiplier les Arduino (ou autres) et utiliser des expandeurs, il y en a de toutes sortes qui démultiplieront tout ce que vous voudrez : les PWM , les ports digitaux, les ports analogiques. Avec leur protocole de communication propriétaire que vous devrez accepter avec leurs avantages et ...inconvénients auxquels vous devrez remédier.
Et là vous en arriverez à vous poser la question d'un bus CAN et vous serez en plein dans le truc... c'est obligé !
Et je n'ai pas parlé des capteurs.
Ni du code car sans chef d'orchestre pas de musique !

C'est un chemin, quasi initiatique, absolument incontournable (au sens propre).
Mais "n'ayez pas peur" car ça n'était pas mon but en vous décrivant ce processus. Retenez pour l'instant qu'avec un seul Arduino on peut déjà faire beaucoup et très simplement commencer à faire vivre votre réseau.

Bon courage (et retenez aussi que vous avez Locoduino)
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: msport le novembre 12, 2020, 07:10:45 pm
Bonsoir,

je pense qu'effectivement vous ne pouvez pas faire l'économie de vous familiariser avec l'environnement Arduino et son vocabulaire car vous devrez construire votre projet à partir des briques que vous trouverez sur Locoduino et ailleurs.

Locoduino a pris l'option du CAN pour gérer les réseaux étendus.
Actuellement cette architecture est représentée par le Locoduinodrome avec la série d'article "La carte Satellite V1" qui gère les servos des aiguillages.
https://www.locoduino.org/spip.php?article249
Vous souhaitez une solution plus simple pour votre projet qui est néanmoins étendu.
 
Vu le nombre d'aiguillages que vous prévoyez, vous pouvez expérimenter :

1. le PCF9574 avec un clavier en matrice qui gèrera 16 boutons à impulsion (donc 48 avec trois exemplaires)
2. le PCA9685 qui vous permettra de gérer 16 servos  (donc 32 avec deux exemplaires)
  et un autre pour gérer 16 LED  (donc 32 avec deux exemplaires et 64 avec quatre exemplaires)
  Donc six PCA9685 pour votre projet, or on peut en chainer 62.

L'I2C est très sensible aux parasites, et je ne conseillerais pas de dépasser 50 cm. C'est donc le signal des servos qu'il faudra transporter. A vérifier donc que les servos choisis supportent la distance.

Vous trouverez ci-après les schémas de câblage pour les trois cas d'emploi. LED, SERVOS et KEYPAD (schemas.zip)
Les liens pour le matériel. (eBay.zip)
Les liens vers les sites donnant des exemples. Dont les github des bibliothèques (voir également les exemples fournis avec les bibliothèques) (liens.zip)
Certains ne vous seront pas immédiatement utiles.
Les exemples des sites signalés. (sketches.zip)

Vous aurez besoin de mettre en application "comment installer une bibliothèque" du site éditorial.
https://www.locoduino.org/spip.php?article71

Bien noter que la vocation de Locoduino n'est pas d'écrire des programmes pour ses lecteurs mais bien de les aider sur une base concrète.

Bon courage.
Titre: Re : Comment piloter 23 servo moteurs pour aiguillages avec des cartes Arduino
Posté par: will6454 le novembre 13, 2020, 09:27:48 am
Bonjour,
Un grand merci à tous pour votre aide , je vais suivre vos conseils , me familiariser petit à petit avec l'environnement Arduino , j'ai déjà plus de connaissances qu'à mon arrivée sur ce forum .....
Je vais progresser lentement mais surement , j'ai encore beaucoup de travail de structure sur le réseau et je ne manquerai pas de revenir vers vous pour un complément d'informations en ce qui concerne la gestion .
A bientôt
Will