Auteur Sujet: conseil pour voie évitement  (Lu 37057 fois)

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #15 le: mars 24, 2016, 08:52:47 pm »
Bonjour Marc,

C'est un bon début.
Bien sûr, un certain nombre de choses à corriger...  ;)

On va commencer par le schéma électronique :

Très clair, très lisible, un vrai plaisir à lire. Mais...

Commençons par les entrées.

1°) Tu as choisi la sécurité SNCF : voie libre à HIGH et occupée à LOW. Parfait.
Si un fil se coupe, on a une occupation par défaut, gage d'une sécurité maximale.
Bravo.
Je ne sais pas s'il faut des 10k mais ça me paraît correct.

Puis les sorties

2°) Pour les 6 signaux et le CD4009 (ou CD40106), il y a un problème : tu n'as pas mis de résistance 220 Ω pour chaque LED.

3°) Commande des aiguilles.
Les 2 aiguilles sont soit toutes les 2 directes, soit toutes les 2 déviées.
Donc, l'inverseur du CD4009 ne sert pas.
En plus, un CD4009 contient 6 inverseurs et tu as 6 signaux : tu en a juste besoin d'un seul, pile poil !

4°) Reste le plus important : c'est l'Arduino qui décide du sens de circulation des trains sur une voie donnée.
Donc, tu dois avoir un relais inverseur double pour chaque voie, de V1 à V4.

Toi, sur ton alimentation, tu décides du sens de déplacement (marche avant/arrière) par un inverseur général.
Mais comme tu vas sur une boucle de retournement, ton train rentre en marche avant et de droite à gauche et ressort toujours en marche avant, mais de gauche à droite !

Entre les  deux, l'Arduino devra avoir inversé les rails des voies 1 à 4.

D'où les 4 doubles inverseurs indépendants que je te conseille d'installer.

Dans ton schéma, ce ne sont donc pas des boutons (et, donc, des entrées), mais des bobines de relais et, donc des sorties !

5°) Je ne comprends pas à quoi servent les jumpers sur la droite.
Ce seraient des boutons pour étudier les 4 cas d'occupation possibles des voies 1 à 4 ?

On parlera du programme lui-même dans un deuxième temps.

Bon courage !!  ;D

Amicalement
Denis
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

marc

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #16 le: mars 24, 2016, 10:32:13 pm »
Bonsoir denis

Pour les 6 signaux et le CD4009 (ou CD40106), il y a un problème : tu n'as pas mis de résistance 220 Ω pour chaque LED.

Proteus fonctionne sans avoir besoin de résistances pour les LED, donc simplification du schéma, sachant bien sûr qu'au final il en faudra.

3°) Commande des aiguilles.
Les 2 aiguilles sont soit toutes les 2 directes, soit toutes les 2 déviées.
Donc, l'inverseur du CD4009 ne sert pas.


J'ai pensé qu'automatiquement les relais sont dans des positions opposées et qu'en en commandant qu'un seul, il était plus simple d'inverser le second avec une seule commande pour les 2.

4°) Reste le plus important : c'est l'Arduino qui décide du sens de circulation des trains sur une voie donnée.
Donc, tu dois avoir un relais inverseur double pour chaque voie, de V1 à V4.

Je ne comprends pas quand tu me dis que c'est l'arduino qui décide du sens de circulation. Dans mon montage de détection de courant pour chaque voie, j'ai incorporé une sortie m'indiquant le sens. J'ai donc en sortie du détection : 0 pour l'occupation et 1 pour libre, 0 pour la direction Gauche-droite et 1 pour la direction droite-gauche.

Toi, sur ton alimentation, tu décides du sens de déplacement (marche avant/arrière) par un inverseur général.
Mais comme tu vas sur une boucle de retournement, ton train rentre en marche avant et de droite à gauche et ressort toujours en marche avant, mais de gauche à droite !

Entre les  deux, l'Arduino devra avoir inversé les rails des voies 1 à 4.
D'où les 4 doubles inverseurs indépendants que je te conseille d'installer.

Là j'avoue ne pas bien comprendre ta réponse.

5°) Je ne comprends pas à quoi servent les jumpers sur la droite.

C'est pour simuler les contacts restant  à ma disposition sur les moteurs lents Lemaco, je pensais m'en servir pour envoyer une information à l'Arduino mais, vive la jeunesse, je ne sais plus pourquoi faire...

Pour la programmation, je dois avoir les neurones qui sautent car j'ai du mal à voir quelle est la meilleure façon (donc la plus simple) pour gérer tout cela.

1re possibilité : Quand le train A arrive par la voie 4, faut-il avant de le faire avancer, connaitre l'état des différents cantons et le sens du train étant dessus ?
2me possibilité : quand le train A arrive par la voie 4, faut-il vérifier au fur et à mesure de l'avancement du train. Par exemple, arrivée à l'entrée de l'aiguille 3, vérifier si la voie 2 ou 3 est libre. SI la voie 2 est libre, le train A se déplace dessus. Arrivé sur la voie 2, vérifier si la voie 1 est libre, etc...

Sans doute y-a-t il d'autres cas de figure mais à l'heure actuelle, je cherche, je cherche mais j'ai du mal à visualiser le résultat sans exemple concret.

Mais en tout cas, tous ces problèmes me passionnent et m'aident à passer un cap difficile, en retraite depuis 6 mois, je viens d'apprendre qu'après un cancer de la prostate, normalement guéri, je me tape un cancer du poumon. Vive la jeunesse. C'est pourquoi je m'accroche à mes problèmes de petit train pour me changer les idées et ne pas trop penser à ce qui m'attend. Je ne fais pas dans les pleureuses mais c'est pour t'expliquer mon acharnement à comprendre et à réaliser mon rêve.
Bonne soirée à toi

Cordialement

Marc







DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #17 le: mars 27, 2016, 03:24:19 pm »
Bonjour Marc,

Bien triste d'apprendre ces nouvelles sur ton état de santé...
La seule chose que je puisse dire, c'est que si tu veux trouver une activité qui t'occupe bien l'esprit, en choisissant l'Arduino, tu as frappé à la bonne porte !

Citer
3°) Commande des aiguilles.
Les 2 aiguilles sont soit toutes les 2 directes, soit toutes les 2 déviées.
Donc, l'inverseur du CD4009 ne sert pas.

J'ai pensé qu'automatiquement les relais sont dans des positions opposées et qu'en en commandant qu'un seul, il était plus simple d'inverser le second avec une seule commande pour les 2

Les deux Lemaco doivent être dans la même position et tu utilises 2 entrées (reliées simplement entre elles) et 2 sorties distinctes, une pour chaque moteur.
Plus simple que l'ULN2803, ça n'existe pas  :)

Citer
4°) Reste le plus important : c'est l'Arduino qui décide du sens de circulation des trains sur une voie donnée.
Donc, tu dois avoir un relais inverseur double pour chaque voie, de V1 à V4.

Je ne comprends pas quand tu me dis que c'est l'arduino qui décide du sens de circulation. Dans mon montage de détection de courant pour chaque voie, j'ai incorporé une sortie m'indiquant le sens. J'ai donc en sortie du détection : 0 pour l'occupation et 1 pour libre, 0 pour la direction Gauche-droite et 1 pour la direction droite-gauche.

Toi, sur ton alimentation, tu décides du sens de déplacement (marche avant/arrière) par un inverseur général.
Mais comme tu vas sur une boucle de retournement, ton train rentre en marche avant et de droite à gauche et ressort toujours en marche avant, mais de gauche à droite !

Entre les  deux, l'Arduino devra avoir inversé les rails des voies 1 à 4.
D'où les 4 doubles inverseurs indépendants que je te conseille d'installer.
Là j'avoue ne pas bien comprendre ta réponse.

Au niveau de la source traction, tu as un inverseur et grâce à lui, tu décides d'aller en marche avant ou en marche arrière.
Supposons qu'il n'y ait qu'un train et qu'un canton : c'est avec cet inverseur que tu changes de sens.
C'est toi qui décides du sens (marche avant/marche arrière).

Maintenant, il y a une autre façon de se déplacer : de gauche à droite ou de droite à gauche. Ce n'est pas la même chose.
Tu peux aller de gauche à droite en marche avant ou de gauche à droite en marche arrière, etc... Il y a 4 cas.

Le sens de déplacement (gauche/droite) sur un canton donné, c'est l'Arduino qui va le gérer, au niveau de chaque canton.
Et toi, tu gardes le choix (avant/arrière). Il faut les deux.

Donc, dans chaque canton, tu as un relai avec deux inverseurs (comme le Lemaco) qui sont reliés d'un côté au niveau des rails du canton (chaque relai inverseur gère 2 rails) et de l'autre reliés les uns aux autres à la source de traction. C'est le "commun traction".

Attention, j'emploie la dénomination officielle : voie 1 = canton 1, voie 2 = canton 2, ... voie 4 = canton 4.
Ce que tu appelles canton 1, on peut l'appeler zone 1 pour éviter la confusion.  ;)

On verra la programmation plus tard.
A mon avis, dans un premier temps, il faut gérer tous les cas possibles en arrivant par la droite sur le canton 4. C'est la façon de raisonner la plus simple.
On compliquera plus tard. Chaque chose en son temps.  :D

Amicalement
Denis
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

marc

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
)
« Réponse #18 le: mars 27, 2016, 10:27:48 pm »
bonsoir Denis
une petite question
Au niveau de la fonction if, peut-on imbriquer les else et les else if

Exemple :

if ..........
   if ..........
   else
   .......
else if ........

Me suis-je bien fait comprendre ?

Amitiés

Marc

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #19 le: mars 27, 2016, 10:32:23 pm »
Bien sûr, mais il faut bien aligner les accolades, pour ne pas que ça se croise.
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

marc

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #20 le: avril 29, 2016, 10:25:13 pm »
Re bonsoir Denis

J'ai continué à chercher sans grands résultats.
Dans un te tes mails, tu m'as fait un algorythme du genre :1 train : V4<,V3<,V1,V3>,V4>
etc..
Mais la première chose à faire lorsqu'un train arrive avec l'évitement, n'est-il pas de savoir qu'elles voies sont libres ou occupées et ensuite déterminer l'algorythme ??

Qu'en penses-tu?
Amitiés
Marc

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #21 le: avril 30, 2016, 08:13:18 am »
Bonjour Marc,

Content de te revoir... ;)
Je ne serais pas là aujourd'hui, mais je m'occupe de toi ce soir.
Oui, il faut tester tous les cantons.

En attendant ce soir, peux-tu me donner ton câblage électrique modifié, avec les relais d'inversion de chaque canton commandés par l'Arduino ?

Amicalement
Denis
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #22 le: mai 01, 2016, 10:14:42 am »
Bonjour Marc,
Quand on fait de l'Arduino, on est obligé de réfléchir à la fois au côté électronique (d'où ma question d'hier) et au programme.

Je vais démarrer le programme.

Commençons par un cas simple : un  seul train sur le réseau.

Comme la partie gérée par l'Arduino n'est qu'une partie de ton réseau, on supposera qu'au départ le train est ailleurs et que les 4 cantons sont vides.
Par ailleurs, les 3 inverseurs de sens (un par canton 2, 3, 4) sont au repos.
On va décider que quand le train va de gauche à droite, l'inverseur est au repos.

Le déclenchement du processus est l'occupation du canton à droite du canton 4 (ou l'aiguille qui y mène).

Comme il n'y a aucun train dans l'un des cantons de 1 à 4, c'est forcément qu'on vient par la droite.

Donc, il faut mettre l'inverseur du canton 4 à HIGH.

Le train peut alors circuler sur le canton 4.

Par défaut, l'aiguille 3 est tout droit.
Comme le canton 4 est occupé, on va mettre l'aiguille 3 à tout droit (ce qui ne sert rien ici) et mettre l'inverseur du canton 3 à HIGH.

Quand le canton 3 sera occupé, on met l'aiguille 2 à tout droit (ce qui ne servira sûrement à rien ici) et on met l'aiguille 1 à tout droit (c'est, j'imagine, vers le bas de ta boucle, dans le sens des aiguilles d'une montre).

On attend que le train soit uniquement sur le canton 1 pour qu'on puisse bouger l'aiguille 1.

On met alors l'aiguille 1 à déviée.

Dans ce premier exercice, on laisse l'aiguille 2 à tout droit.

On met l'inverseur du canton 3 à LOW pour aller de gauche à droite.
Le train avance sur le canton 3.

On met l'inverseur du canton 4 à LOW et le train peut sortir du circuit.

Pour ton schéma électrique, pour l'ULN2803, sur 2 on a la commande du Lemaco aiguille 2 et sur 3 la commande du Lemaco aiguille 3.

Dans le programme, j'ai supposé qu'on manipulait l'aiguille 1 via un 3ème Lemaco qui serait en 1 de l'ULN2803.
Mais on peut effectivement avoir une aiguille 1 talonnable laissée en position tout droit. Et pas de 3ème Lemaco.

Sur l'ULN2803, en 4, on a l'inverseur canton 2, en 5 l'inverseur canton 3 et en 6 l'inverseur canton 4.

Amicalement
Denis


"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)