Auteur Sujet: Information générale  (Lu 11946 fois)

jean56

  • Invité
Information générale
« le: mars 13, 2021, 04:28:56 pm »
Bonjour Locoduino,
Avant de me présenter et vous exposer mon projet de réseau Ho et ne pas vous faire perdre du
temps, je commencerai donc par juste une question d'ordre général.

Depuis un peu moins de 2 ans, je suis inscrit au forum de CdmRail. Le premier objet de cette
inscription à un forum fut concernant le pilotage de servo-moteurs sans utiliser la fonction
"delay". C'est alors que j'ai eu comme interlocuteur Mr Xavier Bouillard qui, avec beaucoup
de conseils informatiques (sur Arduino) est arrivé à me faire établir un programme assez
performant.

Cela, juste avant la période estivale 2020 pendant laquelle j'ai suspendu l'étude sur Arduino
et l'intention de la reprendre à la rentrée sur un autre projet.
Malheureusement, Xavier a été emporté par un AVC au mois d'octobre dernier.
Le sujet concernait son formidable développement à propos du pilotage d'un pont
tournant auquel j'avait d'innombrable questions quant au fonctionnement.

Et venons-en au but:
Seriez-vous disposé a intervenir sur son programme par une aide a m'apporter ?
J'ai consulté le dossier sur votre forum ainsi que le développement de Mr Ravaut.
Je n'ai malheureusement plus la dextérité dans les doigts pour effectuer les divers
travaux à effectuer.
Je pense aussi en essayant d'adopter le développement de Xavier lui rendre cet
hommage afin de promouvoir son travail en tant que passionné entre-autre
de modélisme ferroviaire.
 
Quelle que soit votre réponse, merci et peut-être à une participation et une présentation
plus complète.

Cordialement,

Jean SMAL

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Re : Information générale
« Réponse #1 le: mars 13, 2021, 04:57:09 pm »
Bonjour Jean,
Bienvenue sur Locoduino  ;D

Il n'est pas dans les habitudes de Locoduino de faire ou corriger un programme Arduino d'un membre ou visiteur, sauf en cas d'intérêt pédagogique pour la communauté et si quelqu'un peut et veut bien y contribuer.

La première chose que vous devriez faire est de mettre ce programme en PJ dans votre réponse et surtout :
- son cahier des charges
- les problèmes que vous rencontrez.

Cela dit, je vous conseille de regarder la bibliothèque SlowMotionServo (https://github.com/Locoduino/SlowMotionServo) qui devrait répondre à vos attentes car elle n'utilise pas la fonction delay().

Si vous êtes nouveau sur Locoduino, je vous conseille également de faire le tour du propriétaire car il regorge de réponses à toutes les questions que vous ne vous posez pas encore  ;) :D ;D

Amicalement

Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3045
  • 100% Arduino et N
    • Voir le profil
Choisissez un titre de sujet plus précis svp.
« Réponse #2 le: mars 13, 2021, 04:59:22 pm »
Je vous conseille également de changer le titre de votre sujet par quelque chose de plus précis : utilisez la fonction "Modifier".
Je supprimerai cette réponse ensuite.
Merci d'avance.
« Modifié: mars 13, 2021, 05:01:26 pm par Dominique »
Cordialement,
Dominique

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Pilotage d'un moteur pas-à-pas d'un pont tournant
« Réponse #3 le: mars 13, 2021, 07:38:42 pm »
Bonjour et bienvenue à Locoduino.

on identifie un de vos échanges avec Xavier sur le forum CDM-Rail concernant l'ouverture des portes de remise :
http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=91&t=4077&start=0&hilit=xavier+pont+tournant
Votre réalisation semble bien correspondre à la bibliothèque que cite Dominique et qui fait l'objet de l'article :
https://www.locoduino.org/spip.php?article159. Vous êtes probablement arrivé à terminer cette réalisation.

Pour ce qui est du pilotage d'un pont tournant avec un moteur pas à pas, malheureusement le site de Xavier ne semble plus accessible.
http://fadiese.hd.free.fr/cms/index.php
Son message initial du 15/7/2015 montre un projet ambitieux qui a probablement évolué entretemps.
http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=45&t=2229
Mais vous pouvez vous familiariser avec la commande des moteurs pas-à-pas avec :
https://www.locoduino.org/spip.php?article196

Ce type de projet mobilise des compétences, du temps et du matériel, difficile de dire si il y en a un en cours ou réalisé chez les lecteurs de Locoduino.


Cordialement

jean56

  • Invité
Re : Information générale
« Réponse #4 le: mars 15, 2021, 12:27:15 pm »
Bonjour Dominique,

Quelques précisions concernant ma première intervention.

Concernant les liens proposés, ces derniers ne sont plus accessibles depuis peu,
ce qui me semble normal étant donné les circonstances.

Concernant ma demande, il ne s'agit pas de corriger ou de modifier en quoi que
ce soit le programme de cette personne mais de pouvoir éventuellement m'aider
dans la compréhension de ce programme. Un dernier message de CdmRail suite
au décès de Xavier m'informait ne plus pouvoir me conseiller pour l'instant, car
il devait être le seul à maîtriser la programmation sur Arduino entre-autres.
Il utilisait largement la variable String pour laquelle je demandais de l'aide.

Si néanmoins ma requête n'est pas retenue, je comprend bien votre réticence
et vous remercie d'avoir pris le temps de me lirez et me répondre.

Cordialement,

J.SMAL

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Information générale
« Réponse #5 le: mars 15, 2021, 01:11:11 pm »
Bonjour Jean (et  bienvenu sur le forum)

Le plus simple reste de poser vos questions de façon concrete et le plus documenté (références) possible pour faciliter la prise en main du sujet. Le sujet est "compatible" avec la finalité du forum et il y a des gens qui ont les compétences ici. La remarque de Dominique & de Michel, je pense, est surtout relative à la question de l'intéret porté : le sujet est intéressant dans l'absolu, mais comme chacun a ses préoccupations et que ce projet est relativement volumineux, "rentrer dans le projet pour vous aider" peut nécessiter un temps qu'il appartiendra à chacun de décider ou pas de vous consacrer.

En tout état de cause, de l'énergie que vous mettrez à faciliter ce parcours aux autres dépendra probablement la capacité de chacun à vous aidez. Je suis de ceux là mais ils sont nombreux sur le forum dans mon cas...

Donc à vous de jouer : posez le plus efficacement possible vos questions très ciblées et allons-y pas à pas....et on verra ou ça nous mène ! ;)
Sébastien.
La perfection est un chemin, non un but...

jean56

  • Invité
Présentation
« Réponse #6 le: mars 15, 2021, 04:51:33 pm »
Bonjour AmadeusHF,

Content d'avoir reçu le message.
Et donc je vais me présenter en même temps que mon projet (cela risque d'être long !!!)
Heureux retraité de 73 ans déplacé dans le Morbihan et encore très occupé. Il y a peu
de temps, j'ai eu la chance de me voir offrir gracieusement un ancien réseau Jouef (années 70)
démonté et en cartons. 5 locos (vapeur), un grand nombre de wagons en tout genre, aiguillages,
décrocheurs, et +. Entre-autres pièces importantes, une rotonde Faller à 6 emplacements mais
aussi un pont tournant Fleischmann 48 positions. Le réseau était également piloté par les ensembles
JouefMatic.

Dès lors, faute également de moyens financiers relativement élevés, j'ai donc opté pour rester en analogique
et oublier le Dcc. Néanmoins, ayant eu pour métier, en temps qu'électro-mécanicien dans l'industrie lourde
j'y ai acquis quelques notions d'informatique commencée avec le DOS !!!
Avec ces deux derniers gros accessoires, s'û été dommage de ne pas les automatiser. J'opté donc pour Arduino.
Après de nombreux tests, essais et programmes concernant les moteurs CC, Pas à pas et servo-moteurs, je suis
passé au concret.

Tout d'abord la rotonde. Elle est commandée par une télécommande TV au moyen de 6 servo-moteurs et c'est en
grande partie grâce à mon interlocuteur de CdmRail que j'ai pu réaliser un programme actuellement fonctionnel.
La partie mécanique de transformation du mouvement angulaire en mouvement linéaire ne me posa pas de
problèmes, mécanicien oblige. J'ai effectivement eu recourt à la bibliothèque SlowMotionServo. Ceci juste avant
la période estivale 2020.

En se qui concerne le pont tournant, cela s'annonce plus complexe en terme de programme. Le pont doit être d'époque
et le process de mouvement est un peu dépassé, néanmoins précis, mais aussi un bruit pas très agréable.
Option prise: après une transformation réversible, càd que le mécanisme d'origine peu être réinstallé, j'ai opté
pour l'adaptation d'un moteur pas à pas. C'est un moteur  200 pas sous 12volts et donc avec un déplacement de
1°8 et pour un pont à 48 emplacements ça va pas. Mécanique encore et réalisation d'un réducteur 1/3 sur l'abre
moteur. Ce moteur est piloté par un driver Pololu avec la multiplication des pas par 8 et 360°/3/8 = 15°. Les essais sont
concluants et il y a une bonne précision d'approche en face du rail demandé.

C'est donc la raison du choix élaboré par Mr Xavier Bouillard en terme de programme de pilotage. Ces essais étaient semble-
il concluant. Bien entendu, le programme posté sur le Forum de CdmRail n'est pas exploitable tel quel et demande donc un
certain travail de réflexion de la part de qui veut l'utiliser. En effet, les diverses commandes sont écrite à partir de
variable String. Malgré la lecture de tous les exemples de l'IDE Arduino, je n'y comprend pas grand chose, ne sachant
non plus par où commencer sans avoir une aide.

Il y a d'autres projets, j'ai réalisé une gare cachée, une gare non pas voyageurs mais plutôt une gare de triage, avec en projet
un atelier de maintenance et en fond de plan un site industriel.

J'ai été long mais c'est une présentation je pense complète.

Bonne soirée, cordialement

jean

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Decodeur Dcc pont tournant Arduino + Shield + programme
« Réponse #7 le: mars 15, 2021, 05:40:31 pm »
Bonsoir et merci pour votre présentation.
Est-ce que le programme est resté dans l'état d'origine  de 2014 (ci-dessous) ? En avez vous une autre version ?
Dites nous quelle est votre optique pour la commande du pont : DCC, IR, PC ?
Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Information générale
« Réponse #8 le: mars 15, 2021, 05:43:26 pm »
La commande de moteurs pas à pas est un domaine connu des Arduino : les imprimantes 3D d'entrée de gamme sont pour la plupart des Arduino un peu stéroidés qui pilotent 4 moteurs (NEMA souvent ou équivalent) via des "drivers" tels que les modules polulu ou autre issus des projets open source.

Vous avez donc la partie électronique et le réducteur pour gagner en précision de positionnement.

De ce que vous me dites, le code qui gère le moteur fonctionne déjà ? Je me trompe ?
Donc votre problème serait l'interface homme / machine pour piloter la chose ?

Dans le descriptif du projet que vous évoquez, que j'ai parcouru rapidement, je vois de nombreuses choses : la prise en charge RC5 pour une télécommande IR,....un projet effectivement lourd. La mise au point du décodeur DCC est-elle faite ?

Pouvez-vous compléter votre synthèse du sujet avec ce qui existe et marche, existe et ne marche pas, n'existe pas, principalement focalisée sur le plan logiciel ?

Le projet parle d'une interface "console" / ligne de commande, l'équivalent d'un interpréteur DOS (dans vos références) pour injecter des commandes au pont et le configurer. Est-ce utile ? Si la partie décodeur DCC est en place, une programmation via des CV pourrait s'avérer plus facile à réaliser...
Sébastien.
La perfection est un chemin, non un but...

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Information générale
« Réponse #9 le: mars 15, 2021, 05:43:46 pm »
(posté en meme temps que "M" ;)
Sébastien.
La perfection est un chemin, non un but...

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Decodeur Dcc pont tournant Arduino + Shield + programme
« Réponse #10 le: mars 15, 2021, 05:58:26 pm »
Pour connaitre le début de l'histoire, la copie du post initial de Xavier Bouillard sur CDM-rail lien ci-dessus.

A sa lecture, j'imagine que Jean voudrait transposer le programme VBA dont le source n'est plus disponible pour piloter le pont depuis un ordinateur. A lui de dire.

DCC_Turntable_Decoder

L'ensemble proposé ici permet de piloter un pont tournant ou transbordeur. Il utilise impérativement un moteur pas à pas. Le moteur choisi est alimenté en 5V, pour 400 pas (0.9°). C'est en effet la précision du moteur qui assure le bon positionnement de l'ensemble. La fluidité du mouvement est rendue possible grace au DRV8824 de Pollolu qui multiplie le nombre de pas par 32.

La position courante du pont est sauvegardée en Eeprom donc conservée après extinction du montage.

La configuration peut être effectuée :
- A partir d'une console.
- A l'aide du programme de configuration sur PC.

Les paramètres suivants sont disponibles :
- Adresse de base du décodeur Dcc (les 40 adresses se suivent obligatoirement)
- Nombre de voies
- Réglage du zéro (voie de référence)
Le programme de configuration permet également de piloter le pont!
- Demi tour
- Voie précédente
- Voie suivante

Le pilotage est aussi possible à l'aide d'une télécommande de télévision RC5 (Philips)
- Aller à la voie ... :
- Aller à la voie précédente :
- Aller à la voie suivante :
- Demi tour :

Et par un clavier 4*3
- Demi tour : *
- Fade : #

En mode console, les commandes à passer sont les suivantes:
- Adresse Dcc : A <Adresse>
- Nombre de voies : M
- Step : S <Step>
- Zéro : Z
- Aller à la voie ... : T <Voie>
- Aller à la voie précédente : <
- Aller à la voie suivante : >
- Demi tour : R

- Liste : L
- Aide : ?
- Qui : W

En complément un signal clignote quand le pont est en mouvement. Cette information est également disponible pour une rétro-signalisation vers le logiciel de pilotage.
La rétro-signalisation de l'occupation du pot et des voies sont à prévoir en sus.

L'alimentation du décodeur est assurée par le Shield à partir du signal Dcc. Il reste possible de dialoguer via l'USB, l'Arduino coupant automatiquement l'alimentation USB quand une tension est détectée sur Vin (fournie par le Shield)
L'alimentation du moteur est indépendante (5V continu)

L’Arduino est de type Mega afin de pouvoir supporter l’ensemble des spécifications souhaitées.

Un programme écrit en VB.net 2010 utilise les commandes USB pour offrir une interface utilisateur plus conviviale. Ce programme permet de régler et piloter le pont.

Il me manque encore quelques composants pour achever le prototype et faire une vidéo...

Le schéma est joint.
(autres détails sur CDM-rail)
Cordialement

jean56

  • Invité
Re : Pilotage servo-moteurs et moteur pas à pas
« Réponse #11 le: mars 17, 2021, 11:41:52 am »
Bonjour,
Tout d'abord, merci pour toutes ces réponses mais à relire (en toute cordialité bien sûr)

En effet, j'ai noté vouloir rester en analogique concernant le réseau.
Néanmoins, avec la rotonde et le pont tournant, j'ai envisagé l'étude d'Arduino
pour en réaliser une commande RC5 (TV). C'est fonctionnel pour la
rotonde actuellement mais à  l'étude pour le pont.

Je suis au courant (sans jeu de mot) du sujet traité pour le pont tournant pour en
avoir jusqu'à présent réalisé le circuit imprimé et testé.
Je ne souhaite pas utiliser la partie Dcc, ni la partie Keypad, seulement le dévelop-
pement USB et RC5. L'ayant testé, il est normal qu'en l'état, il ne fonctionne pas, Xavier,
tel que je l'ai connu (trop peu hélas) n'était pas du genre à poster quelque chose que ce
soit TOUT CUIT...

Je reviens sur la commande d'ouverture fermeture des portes qui est donc fonctionnelle
en l'état mais je n'utilise pas l'objet String comme proposé sur le forum CdmRail.
J'ai donc écrit le programme en :
Déclarant les codes reçus par la télécommande,
(#define bouton1  0x.....) et ainsi de suite,
et dans le loop(), le switch (RC) suivis des (case: )et le code RC.

Avant d'aller plus loin, c'est l'objet String qui m'intéresse beaucoup mais dont je n'arrive
pas du tout à assimiler la mise en oeuvre. Dans les exemples fournis par l'IDE Arduino
j'ai beau déployer tous les exemples et ne rien assimiler. Par contre, parmi tous ces exemples
un seul semble pour moi être celui qui me concerne, à savoir l'exemple String Constructor.
C'est donc sur ce point que j'aimerais avoir une aide pour la programmation.

Et à ce propos, autre question aux spécialistes que vous êtes, quelle différence notable y a t'il
entre un programme construit par celui que j'ai utilisé pour la rotonde et celui que j'aurais pu
réaliser avec l'objet String. Est-ce une question de mémoires, de rapidité de traitement par le
compilateur, ou tout autre chose ?

Merci pour vos éclairages avisés et me faire évoluer dans la programmation Objet

Cordialement
jean




msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Information générale
« Réponse #12 le: mars 17, 2021, 12:40:05 pm »
Bonjour,
désolé, pour ma part, je vais en rester là car je ne parviens pas à comprendre de quoi vous nous parlez.
Surtout qu'il s'agit de programmes publiés sur d'autres forums dont vous ne nous donnez ni la référence. ni le listing.
Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Information générale
« Réponse #13 le: mars 17, 2021, 02:02:52 pm »
En programmation objet, les types fondamentaux sont généralement encapsulés dans ... des objets, ce qui permet d'associer les données et le code qui les manipulent.

String est une classe objet qui sert à manipuler une chaine de caractères.

En langage C, vous utiliseriez une variable de type char* à laquelle vous allouez une zone mémoire, puis vous utilisez des fonctions de la librairie standard de manipulation des chaines pour traiter le contenu : strcpy, sscanf, sprintf, etc...

En C++, on va plutot utiliser un objet String pour obtenir le meme résultat final, mais de façon plus élégante...plus "objet".

Tous les langages modernes utilisent ce paradigme : Java, C#, C++...et bien entendu la plupart des langages "scriptés".

Vous focalisez sur "String" comme étant une clef centrale d'un programme. C'est forcément erroné : String est une simple chaine de caractères. Ca ne peut en soit constituer un programme ou etre un élément déterminant du programme.

Soit votre programme est "vide" et ne fait rien, et vous ne voyez que des bribes de ce qui aurait du forme une base de travail (par exemple une liste de chaines de caractères contenant les commandes futures à écrire), soit il y a dans vos sources une quantité importante de code que vous n'avez pas exploré.

Votre projet prévoyait une "console de paramétrage", donc une ligne de commande qui devait permettre d'injecter des ordres au clavier, puis une restitution à l'écran d'un résultat. Il est évident que pour faire cela il faut manipuler du texte :le flux des touches saisies, puis la génération des réponses. Il faut donc manipuler des "String" à un moment ou un autre, comme le fait la classe SerialCommand de DCC++. Mais la partie traitant cet aspect représente 20 lignes de codes sur plusieures centaines traitant d'autre chose.

Si tout ce que je viens de vous dire est "du petit chinois" pour vous, il faut que vous preniez le probleme à la base : vous ne pouvez pas programmer (et encore moins utiliser des objets) sans comprendre la terminologie de base des langages : classe, objet, types fondamentaux, et notamment opérations sur les chaines de caractere. C'est par là qu'il faut commencer.

Pour le reste, et comme l'a indiqué msport ci-avant, si vous voulez de l'aide il nous faut plus de données. En particulier les sources, les exemples de ce que vous avez testé ou pas, ce que vous ne comprenez pas, etc. Petit pas par petit pas.
Sébastien.
La perfection est un chemin, non un but...