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

marc

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
conseil pour voie évitement
« le: mars 16, 2016, 06:49:27 pm »
bonjour à tous

Mon projet avance doucement grâce en partie à votre aide, ce dont je vous en remercie
Mon but est de construire mon réseau de la façon suivante : deux voies de "parade" faisant le tour de mon réseau (en U), avec gare cachée que je gère actuellement grâce à des relais, et une autre voie indépendante des deux précédentes avec 2 boucles de retournement et un ou deux évitements (avec gare, halle marchandise, etc...)
Mon premier programme sous arduino va consister à gérer ce que j'appelle le canton 1 de mon circuit comme représenté sur le schéma que je joins.
Gestion des voies, aiguillages et signaux est au menu, c'est à dire si une train arrive sur la voie 4, contrôler les possibilités que j'ai, c'est à dire si la voie 1 ou la voie 2 ou la voie 3 est occupée, dans quel sens le train étant sur ces cantons circule, pour savoir si les trains se suivent ou s'ils vont à la rencontre l'un de l'autre.
Cela fait 7 entrées à gérer (ils ou autres), 2 moteurs lents et 6 signaux. Les moteurs lents Lemaco et les signaux pouvant, je pense, être gérés de façon électronique à partir de sorties de l'Arduino.

Pensez-vous que l'Arduino Uno est suffisant pour ce genre de projet sinon quelle carte faudrait-il ?

Faut-il traiter les différents choix par des IF... else... ou bien par des SWITCH... CASE...

Y a-t-il une instruction pour sortir d'un IF du genre : if b=3 mettre sortie 1 à 0 sinon sortir du if.

Voilà!

J'ai du pain sur la planche et j'aime ça, alors, comme on dit, ce qui plaît ne coûte pas...

Merci à tous de votre aide

Amitiés

Marc


DDEFF

  • Hero Member
  • *****
  • Messages: 739
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #1 le: mars 16, 2016, 08:25:17 pm »
Bonjour Marc,

Allez, on y va...
Je vais commencer par la fin.

Il y a des articles pour ce genre de questions sur Locoduino :
Pour les if : http://www.locoduino.org/spip.php?article22
pour les switch : http://www.locoduino.org/spip.php?article23

Pour l'exemple que tu donnes :
if (b==3)
{
    mettre la sortie 1 à 0;
}
Tu noteras le deux signes "=", c'est important.
De même que le décalage de la ligne au milieu (indentation).
Si b=3, tu mets la sortie 1 à 0.
Sinon, on saute ce qu'il y a entre les accolades.

Je te laisse trouver comment on dit, en langage Arduino, "mettre la sortie 1 à 0".
Au cas où, pense à lire l'article http://www.locoduino.org/spip.php?article11

Par ailleurs, pour ton canton 1, tu dessines 3 aiguilles et tu parles de 2 moteurs  ???

La voie 1, tu la parcoure dans quel sens ?
J'imagine que tu rentres dans la boucle par en bas et tu sors par en haut ?

Ton programme marchera certainement avec un UNO. Je ne pense pas utile de prendre la taille au dessus.

Et, dernier conseil, commence par des if {...} else {...}. On verra les switch après.

Bonne lecture.
« Modifié: mars 16, 2016, 08:31:52 pm par DDEFF »
"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 #2 le: mars 16, 2016, 09:59:50 pm »
Merci DDEFF de ta réponse

je pensais que le canton 1 étant une boucle, l'attaquer par la gauche ou la droite n'était pas important, j'ai donc pensé laisser l'aiguillage 1 toujours dans la même position, cela écarte un problème et laisse des entrées/sorties de libre.
Je pense qu'il faut mettre :
digitalWrite(1,LOW);

je pense aussi qu'il est important de déterminer dans quel sens va chaque train?
Donc il faut faire un programme capable de dire quelle voie est occupée et dans quel sens va chaque train, c'est bien cela ?

J'ai prévu dans le circuit secondaire (schéma) de ne faire circuler que deux trains (dans un premier temps, le temps de comprendre la programmation de l'Arduino).

Encore merci pour tout
Amitiés
Marc

DDEFF

  • Hero Member
  • *****
  • Messages: 739
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #3 le: mars 17, 2016, 09:10:32 am »
Bonjour Marc,
Pour info, moi, c'est Denis  ;)

Il est important, effectivement de savoir où sont les trains et dans quel sens ils vont.

Pour la boucle, tu peux la parcourir dans les deux sens. Mais je posais la question pour savoir si l'ILS 5 était au début ou à la fin de la boucle.
Et tu peux aussi le laisser dans une position définie, talonnable.

Comme la boucle est toujours parcourue dans le même sens (sens inverse des aiguilles d'une montre), un seul ILS suffit pour détecter la présence.
Pour la voie 2 et la voie 3, il en faut 2 (un par sens)

Pour les moteurs Lemaco, on ne peut pas les alimenter directement par l'Arduino. Il faut un transistor.
Comme tu vas en avoir plusieurs à mettre, je te propose un ULN2803.
http://www.locoduino.org/spip.php?article10

Tu parles de 7 entrées. Je vois 5 ILS. Tu prévois quoi d'autre ?
"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 #4 le: mars 17, 2016, 02:28:04 pm »
Bonjour Denis
J'ai prévu un ILS (ILS1) avant l'aiguillage 3, sur la voie 4
Deux ILS sur la voie 2
Deux ILS sur la voie 3
Et un ILS sur la voie 1
Pour ce qui est de l'électronique, j'ai le logiciel Proteus qui m'aide bien à concevoir les circuits.
C'est plus dans la création de l'algorythme pour gérer informatiquement tous les cas de figure, qui me pose problème.
Bonne journée à toi
Amitiés
Marc

marc

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #5 le: mars 17, 2016, 04:12:52 pm »
Re bonjour Denis

J'ai la tête à l'ouest car  ce n'est pas des ILS que j'avais prévu mais des détections de courant, c'est-à-dire 4 entrées pour les voies 1 à 4 (0 voie occupée, 1 voie libre) et une diode branchée sur un rail de chaque sous canton pour avoir le sens du déplacement (0 pour Gauche-Droite) et (1 pour Droite-Gauche). C'est à partir de ça qu'il faut chercher tous les cas de figure possible, (ex. Voie 2 libre, train A sur voie 1, allant de gauche à droite). Est-ce la bonne façon d'aborder le problème?

D'avance merci
marc

DDEFF

  • Hero Member
  • *****
  • Messages: 739
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #6 le: mars 17, 2016, 04:29:46 pm »
La démarche me paraît saine.
Et, pour tout dire, je préfère la détection de courant aux ILS.
Au moins, on détecte les wagons isolés, etc.

Par contre, un petit schéma des branchements me siérait ( :) ) bien.
Pour un seul canton, c'est pour voir si j'ai bien compris.

Amitiés
Densi
"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
2
« Réponse #7 le: mars 18, 2016, 03:16:16 pm »
Bonjour Denis

Je t'ai mis en pièce jointe le fichier que tu m'as demandé et j'ai commencé à étudier la possibilité d'utilisé des multiplexeurs pour augmenter le nombre d'entrées/sorties de l'arduino.
Je pense qu'il me faut 5 entrées (1 par voie et 1 pour le sens) ainsi que 9 sorties pour tous les cas de figure possibles :
1 - Toutes les voies sont libres
2 - voie 4 occupée
3 - voie 3 occupée
4 - voie 2 occupée
5 - voie 1 occupée
6 - voies 3 et 4 occupées
7 - voies 2 et 3 occupées
8 - voies 1 et 4 occupées
9 - Voies 2 et 4 occupées

Qu'en penses-tu?

Amitiés
Marc

DDEFF

  • Hero Member
  • *****
  • Messages: 739
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #8 le: mars 18, 2016, 06:12:08 pm »
Bonjour Marc,

Il n'est pas nécessaire d'utiliser des multiplexeurs. C'est le programme qui va gérer les cas.

En entrée :

A0   : Voie 1 occupée
A1   : Voie 2 occupée
A2   : Voie 3 occupée
A3   : Voie 4 occupée

En sortie :

D2   : Signal 1 (voie 1)
D3   : Signal 2 (voie 2 gauche)
D4   : Signal 3 (voie 2 droite)
D5   : Signal 4 (voie 3 gauche)
D6   : Signal 5 (voie 3 droite)
D7   : Signal 6 (voie 4 gauche)
Les signaux sont rouge ou verts (deux feux)

On ne tient pas compte du sens de la voie 1 puisque c'est toujours le même.
D8   : Sens voie 2
D9   : Sens voie 3
D10 : Sens voie 4

D11  : Aiguille 2 déviée
D12 : Aiguille 3 déviée

Tu vois que tout tient sans extension.  :D

J'imagine la logique suivante :


1°) Un seul train :

V4<-, V3<-, V1, V3->, V4->

2°) Deux trains :

1er train : V4<-, V3<-, V1, V2 et s'arrête

2ème train : V4<-, V3<-, V1, V3 et s'arrête.

Puis le 1er train ressort : V2->, V4->
Comme il s'est arrêté, on a l'impression qu'il a été loin.

Puis le 2ème train ressort : V3->, V4->

Qu'en penses-tu ?

Amitiés
Denis

A part ça, la pièce jointe n'a pas marché... :(
« Modifié: mars 19, 2016, 05:28:45 am par DDEFF »
"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 #9 le: mars 18, 2016, 07:10:15 pm »
Encore une fois merci Denis

Je digère ce que tu m'as envoyé (je n'ai pas encore tes connaissances pour comprendre tout cela d'un coup). J'essaie de faire le montage avec Proteus et je te tiens bien sûr au courant.

Et encore merci de t'occuper de mon problème et qui sais, peut-être un jour à charge de revanche.

Très cordialement

Marc

DDEFF

  • Hero Member
  • *****
  • Messages: 739
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #10 le: mars 19, 2016, 05:31:09 am »
Bonjour Marc,

Je m'étais trompé hier. J'ai rectifié mon précédent post qui est bon maintenant.

Mais j'ai une remarque : Protéus, c'est pour simuler des circuits électroniques (je me trompe ?).
Je ne vois pas comment Arduino peut être modélisé.

Amicalement
Denis
« Modifié: mars 19, 2016, 08:55:51 am par DDEFF »
"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 #11 le: mars 19, 2016, 11:35:40 am »
Bonjour Denis
Je ne me sers que de la simulation de la carte, rien d'autre; J'écris le programme avec Arduino, l'enregistre en hexa et copie le tout dans la carte Arduino. Quelques composants branchés au bon endroit (led, bouton, relai) et on lance tout ca. Proteus va faire réagir l'arduino et les composants périphériques en fonction du programme.

Je t'envoie un petit fichier (si tu peux l'ouvrir) montrant la création d'un projet.

Amitiés

Marc

DDEFF

  • Hero Member
  • *****
  • Messages: 739
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #12 le: mars 19, 2016, 11:46:25 am »
J'ai bien eu ton fichier (qui est faux, puisque tu n'as pas d'ILS  :D )

Mais c'est à ta phrase :
et une diode branchée sur un rail de chaque sous canton pour avoir le sens du déplacement (0 pour Gauche-Droite) et (1 pour Droite-Gauche)que je faisais allusion. Je ne la comprends pas.
Et c'est là que je demandais un schéma.

Donc tu intégrerais une "copie" d'Arduino dans Protéus, avec simulation des composants annexes et tu testerais ainsi le fonctionnement global du circuit ?

Ce serait assez original.
Et ça donne des résultats ? Parce que c'est une piste très intéressante.
« Modifié: mars 19, 2016, 02:26:32 pm par DDEFF »
"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 #13 le: mars 19, 2016, 12:09:46 pm »
Re bonjour

Non bien sûr la diode ne sert à rien,  elle est restée d'un ancien test...

Je peux t'assurer que cela fonctionne parfaitement Je me suis payé le grand livre d'Arduino et reproduit quelques exemples du bouquin avec proteus et arduino. Cela fonctionne sans problème
Cordialement
Bon WE

Marc

marc

  • Newbie
  • *
  • Messages: 23
    • Voir le profil
Re : conseil pour voie évitement
« Réponse #14 le: mars 24, 2016, 03:33:06 pm »
bONJOUR Denis

J'avance, j'avance, tout doucement.
 Je joins un pdf du montage que je suis en train de faire avec Proteus et le programme qui va avec.
Je te laisse juger, si tu en as le temps.
Je vais chercher la carte Arduino Uno car elle vient d'arriver au point relais.
Tu m'auras beaucoup aidé dans ma démarche et je t'en remercie.

Ce que j'ai du mal à faire tout de suite, c'est à mettre au point les différents de figure et de les convertir en programme.

Je pense avoir un petit manque de logique...
Je te transmets également le programme incomplet qui fait fonctionner (ou pas) le montage dans PROTEUS.

Cordialement

Marc