Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Arduino - Bloc automatique

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Arduino - Bloc automatique

Publié: Dim 03 Nov 2013, 19:38 
Suite à la demande de la modération et la suggestion de Ramboman, je vous propose un fil sur le cantonnement.

Je vais publier une série d'articles (un article tous les 3-4 jours) avec pour objectif de donner aux débutants les clés concrètes pour mettre en oeuvre l'Arduino sur le sujet du cantonnement.

Nous commencerons par un cantonnement simple qui gère uniquement les signaux Ensuite, nous nous pencherons sur la gestion de l'alimentation des trains avec démarrage et arrêt progressif.

Afin de satisfaire Gufrero, l'exemple sera une boucle de 8 cantons.

Il faut juste que je me perfectionne en C car j'utilise la programmation en Pascal.
C'est presque pareil : les begin-end sont remplacés par des accolades et il y a quelques différences de syntaxe.

Allez, c'est parti, je travaille sur le premier article.
Avatar de l’utilisateur
lgperrin
Papotier
 
Messages: 165
Inscrit le: Dim 04 Mars 2012, 14:36
Localisation: Pontoise
Âge: 56
Echelle pratiquée: N-HO

Re: Arduino - Bloc automatique

Publié: Dim 03 Nov 2013, 20:12 
Merci Georges pour cette superbe initiative. :coeur1:

Il semble effectivement que ce fil (cantonnement) soit une préoccupation de beaucoup d'Arduineurs.

De plus, tu vas t'adresser aux débutants, ce qui est une bonne chose car les spécialistes ont déjà des idées très précises sur ce qu'ils veulent réaliser (et qui n'est pas toujours comme on le préconise).

gufrero sera content que cela comporte 8 cantons, et les autres pourront adapter à plus ou moins selon leur envie

Tu proposes un projet qui est progressif ; d'abord la signalisation, ensuite l'alimentation, ce qui permettra aux débutants de progresser en douceur sans être noyés dès le départ. :roll:

Concernant le langage Arduino, on rectifiera si tu fais quelques erreurs de syntaxe ; le langage est très simplifié par rapport au C/C++, donc dans peu de temps, tu le maitriseras.

Je suis donc certain que ce fil va avoir de nombreux adeptes. Alors bon courage.

Christian

PS : j'ai lu ton article sur les MOSFET et effectivement, il n'y a pas photos, voici des composants très intéressants. Si tu en as d'autres, je suis preneur :wink:
Avatar de l’utilisateur
Arduino
Démonstratif
 
Messages: 1515
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Bloc automatique

Publié: Dim 03 Nov 2013, 20:27 
Merci Christian.

Je sais que Georges est un prénom royal :ange: mais moi c'est Gérard, tu sais celui qui fume du ... :mdr2:
Avatar de l’utilisateur
lgperrin
Papotier
 
Messages: 165
Inscrit le: Dim 04 Mars 2012, 14:36
Localisation: Pontoise
Âge: 56
Echelle pratiquée: N-HO

Re: Arduino - Bloc automatique

Publié: Dim 03 Nov 2013, 21:22 
ARTICLE 1

Pour la suite, je vous propose le réseau suivant qui est basé sur le bloc automatique lumineux (BAL) de la SNCF :

Image

En modélisme, lorsqu'un signal est fermé, il faut détecter l'arrivée d'un train à proximité immédiate du signal afin de l'arrêter. On utilise des zones d'arrêt qui commencent environ 30 cm en amont du signal (en HO) et se terminent à l'aval du signal à une distance qui est fonction du réalisme souhaité et de la place disponible.

Le réseau devient le suivant :

Image

Vous noterez que les zones portent le même numéro que le signal situé à l'amont immédiat. La zone z1 agit sur le signal S1, ..., la zone z8 agit sur le signal S8.

Lorsque la zone Z1 est occupée par un train qui se dirige vers le signal S2, le signal S1 présente l'indication sémaphore (feu rouge) et le signal S8 présente l'indication avertissement (feu jaune).

Image

Le train continue à progresser et attaque la zone d'arrêt du signal S2 ; la signalisation reste inchangée :

Image

Imaginons que c'est un petit locotracteur qui circule très lentement ; il a dégagé Z1 et occupe uniquement la zone d'arrêt de S2 ; le signal S1 présente toujours l'indication sémaphore :

Image

Le train continue sa progression et attaque la zone Z2 ; les signaux S1 et S2 présentent l'indication sémaphore :

Image

Le train libère la zone d'arrêt du signal S2 ; le signal S2 présente l'indication sémaphore, le signal S1 présente l'indication avertissement et le signal S8 présente désormais l'indication voie libre (feu vert) :

Image

Tout cela est connu de tous, y compris des débutants. C'est un simple rappel qui va nous permettre de proposer les équations d'allumage des feux d'un signal :

Feu rouge (sémaphore) allumé si :
la zone aval est occupée
ou
la zone d'arrêt du signal suivant est occupée

Feu jaune (avertissement) allumé si :
le signal aval présente l'indication sémaphore
et
la zone aval n'est pas occupée
et
la zone d'arrêt du signal suivant n'est pas occupée

Feu vert (voie libre) allumé si :
le signal aval ne présente pas l'indication sémaphore
et
la zone aval n'est pas occupée
et
la zone d'arrêt du signal suivant n'est pas occupée

Jusqu'ici, rien de bien transcendant.

Dans l'article suivant, nous verrons comme traduire les équations d'allumage des feux (équations logiques ou utilisation des If...Else) ; cela permettra à chacun, en fonction de ses connaissances, d'utiliser l'une ou l'autre méthode.

Il n'est pas possible, dans le cadre de ce fil, de présenter toutes les notions utiles. Je renverrai vers des liens externes qui permettrons à chacun d'approfondir ces notions.

Liens sur le fonctionnement du bloc SNCF (non limitatif) :

http://fr.wikipedia.org/wiki/Block_automatique_lumineux
http://www.metro-pole.net/expl/signal/bal.htm

un doc sur les signaux en général :

http://e.bournez.free.fr/signalisation.pdf
Avatar de l’utilisateur
lgperrin
Papotier
 
Messages: 165
Inscrit le: Dim 04 Mars 2012, 14:36
Localisation: Pontoise
Âge: 56
Echelle pratiquée: N-HO

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 10:04 
Il y a plusieurs manières de réaliser ce projet, mon commentaire n'est donc certainement pas une critique... J'ai pris deux options différentes pour arriver au même résultat :
-> j'utilise les feux pour interdire la sortie d'un canton plutôt que l'entrée dans le canton suivant... c'est lié à ma logique qui veut qu'un arduino gère son canton dans son entièreté... en gros, ça revient au même, mais ça facilite la programmation parce que la zone d'arrêt et la zone d'aiguilles éventuelle qui suit sont détectés et alimentés par le même arduino... ça permet de respecter à la lettre la notion de limite de canton.
-> les zones d'arrêt ne sont pas des zones ou le courant est coupé... ce sont des zones de détection spécifiques qui indique à l'arduino qu'il y a lieu de s'arrêter devant le feu rouge... il n'est pas concevable de faire autrement si on roule en double traction ou avec une rame réversible dont l'engin moteur est à l'arrière.
-> accessoirement la détection sur la zone d'aiguille ou sur une zone prévue à cet effet peut indiquer un franchissement de signal et provoquer un arrêt d'urgence... ça n'est pas bien difficile avec des if..then..else ;)
-> on a vu que le coût de la détection est dérisoire, j'ai donc mis d'office cinq détecteurs par arduino : pleine voie, zone d'arrêt dans chaque sens et zone d'aiguille/franchissement dans chaque sens.
-> pour la signalisation : je fais plutôt dans le voie étroite américain (LGB) donc ce sont des sémaphores activés par relais comme les aiguilles (en attendant un circuit MOS-FET que je comprenne) ou un signal lumineux extra-simple, une LED bicolore rouge verte. Je n'ai pas implanté le ralentissement pour l'instant.
Avatar de l’utilisateur
Ramboman
Disert
 
Messages: 423
Inscrit le: Lun 23 Oct 2006, 18:13
Localisation: Waterloo, Belgique
Âge: 72
Echelle pratiquée: LGB

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 10:39 
Bonjour,

Pourquoi les sémaphores sont-ils munis d'un œilleton ?

Si j'ai bien compris, si on essaye de reconstituer l'emprise géographique d'un canton, Cn = Zn + Sn+1

Pourquoi implanter le sémaphore en début de canton et non en fin ? (C'est l'éternel dilemme . . .)
Avatar de l’utilisateur
PIC18F
Bavard
 
Messages: 61
Inscrit le: Dim 01 Jan 2012, 16:50
Localisation: LE HAVRE (Seine Maririme)
Âge: 63
Echelle pratiquée: HO
Prénom: Philippe
Club: AMHA

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 10:54 
PIC18F a écrit:Pourquoi les sémaphores sont-ils munis d'un œilleton ?

Si je me rappelle tout comme il faut, l'oeilleton signifie que le signal peut être franchi (sémaphore). S'il est éteint, c'est normalement un carré (infranchissable). Il doit présenter alors deux feux rouges (l'oeilleton est là pour lever l'ambigüité si un des deux feux rouges est grillé).


PIC18F a écrit:Pourquoi implanter le sémaphore en début de canton et non en fin ? (C'est l'éternel dilemme . . .)
Dans la réalité, le signal protège les circulations. En aval, donc. Il interdit donc l'entrée d'un convoi dans le canton qu'il protège (et pas la sortie de celui d'avant).
Dans la pratique et de premier abord, en pleine voie c'est la même chose.
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 20587
Inscrit le: Jeu 22 Fév 2007, 13:51
Localisation: Aude
Âge: 49
Prénom: Olivier
Club: Intermittent des Rigollots©

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 11:36 
Ayant réalisé une automatisation de mon réseau en VisualBasic3 puis VB6 (soft écrit par un ami informaticien) depuis 10 ans, nous avons appliqué les principes énoncés plus haut par ramboman.
Nos locos n'ont pas de mécanicien, il faut donc adapter les règles à notre petit monde.
" Il interdit donc l'entrée d'un convoi dans le canton qu'il protège (et pas la sortie de celui d'avant)."
Oui c'est vrai, mais pour nous cela conduit à agir sur la traction du canton qui est avant le signal. On agit donc bien pour l'empêcher de sortir.
Pour simplifier la logique, le signal est considéré comme appartenant au canton auquel il s'adresse. Nous l'avons d'ailleurs baptisé FEUSOR (sortie) dans le soft. En effet, un train se présentant devant le signal (entrée en zone "d'arrêt") exécutera l'ordre correspondant aux feux présentés : jaune, commencement de la rampe de ralentissement, rouge : lancement rampe d'arrêt.

Pour les trains plus longs qu'un canton ou pour la double traction, le problème du maintien de la même consigne dans toutes les zones occupées par ce train n'est pas simple. Les zones où le feu s'est fermé au passage du train doivent continuer à être alimentées de la même façon que la tête du train. Une notion de cantons maitre/esclaves est utilisée dans le soft. Nous nous sommes limités à 5 cantons occupés par un même train. Dans la gare principale, mes trains de 2m occupent couramment 3 cantons courts.
Dernière édition par Matabiau le Lun 04 Nov 2013, 11:50, édité 2 fois au total.
informatisé oui, mais pas trop
Avatar de l’utilisateur
Matabiau
Loquace
 
Messages: 1127
Inscrit le: Mar 27 Oct 2009, 14:08
Localisation: 31 (ex 58 et 94)
Âge: 67
Echelle pratiquée: HO III/IV
Prénom: Michel
Club: privé Villeneuve (LR805/822)

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 11:47 
Roc a écrit:Si je me rappelle tout comme il faut, l'oeilleton signifie que le signal peut être franchi (sémaphore). S'il est éteint, c'est normalement un carré (infranchissable). Il doit présenter alors deux feux rouges (l'oeilleton est là pour lever l'ambigüité si un des deux feux rouges est grillé).


Nous sommes bien d'accord que l’œilleton n'est éteint qu'en présence d'un carré. Sur un sémaphore (S, A, VL) il serait présenté en permanence donc inutile.

Roc a écrit:Dans la réalité, le signal protège les circulations. En aval, donc. Il interdit donc l'entrée d'un convoi dans le canton qu'il protège (et pas la sortie de celui d'avant).
Dans la pratique et de premier abord, en pleine voie c'est la même chose.


C'est bien la théorie, mais on s'aperçoit que lorsqu'on conçoit une carte canton avec un signal 3 feux, c'est plus facile d'attribuer à la carte canton le signal de sortie car ses équations sont les mêmes que celles du passage d'un canton l'autre.

____ZOn_____ _ZAn_ ____ZOn+1_____ _ZAn+1_ __ZOn+2_____ _ZAn+2_

On reconstitue l'équation du canton : Cn = ZOn + ZAn

A l'attaque de ZAn :
Si Cn+1 occupé -> arrêt du train -> Sn = Sémaphore
Sinon si Cn+2 occupé -> passage au ralentit -> Sn = Avertissement
sinon -> passage pleine vitesse -> Sn = Voie libre.

Ce n'est que mon avis.
Avatar de l’utilisateur
PIC18F
Bavard
 
Messages: 61
Inscrit le: Dim 01 Jan 2012, 16:50
Localisation: LE HAVRE (Seine Maririme)
Âge: 63
Echelle pratiquée: HO
Prénom: Philippe
Club: AMHA

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 12:29 
On est d'accord : je parlais des cantons dans la réalité.
Pour ce qui nous concerne, l'information lue sur le signal correspond à celle (tension dans la voie ou message DCC) envoyée à la machine du... canton précédant.
.
Avatar de l’utilisateur
Roc
Promesse tenue
 
Messages: 20587
Inscrit le: Jeu 22 Fév 2007, 13:51
Localisation: Aude
Âge: 49
Prénom: Olivier
Club: Intermittent des Rigollots©

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 12:36 
"le problème du maintien de la même consigne dans toutes les zones occupées par ce train n'est pas simple"...
On a deux cas de figure:
-> soit les sources sont commutées par relais (ou inverseurs à l'ancienne);
-> soit chaque canton a sa propre source, ce qui est mon choix.
Pour autant qu'on ne s'amuse pas à couper le courant manu militari dans une zone d'arrêt... la source garde le contrôle du convoi sur tous les cantons occupés par le train... cqfd
Avatar de l’utilisateur
Ramboman
Disert
 
Messages: 423
Inscrit le: Lun 23 Oct 2006, 18:13
Localisation: Waterloo, Belgique
Âge: 72
Echelle pratiquée: LGB

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 12:37 
Bonjour,

Tous les points soulevés vont être traités dans mes articles.
Je souhaite le faire à mon rythme de manière à ne pas déboussoler les débutants.

Un pas après l'autre permet d'avancer doucement mais sûrement.

Néanmoins, je vais reprendre vos différentes questions et je vais y répondre ce jour.
Avatar de l’utilisateur
lgperrin
Papotier
 
Messages: 165
Inscrit le: Dim 04 Mars 2012, 14:36
Localisation: Pontoise
Âge: 56
Echelle pratiquée: N-HO

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 13:12 
Les deux pieds sur le frein ;)
Avatar de l’utilisateur
Ramboman
Disert
 
Messages: 423
Inscrit le: Lun 23 Oct 2006, 18:13
Localisation: Waterloo, Belgique
Âge: 72
Echelle pratiquée: LGB

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 14:02 
Implantation des signaux
Je ne vais traiter que le cas de la signalisation SNCF, car je ne connais pas suffisamment la signalisation des autres compagnies.
Je vais aussi me limiter à la signalisation automatique de type BAL (bloc automatique lumineux) ; il existe le bloc manuel (BM), le bloc à permissivité restreinte (BAPR), ... ainsi que tous les autres signaux : limitation de vitesse, limitation de manoeuvre, baisser panto, coupez courant, ...

En préambule, un signal lumineux peut avoir deux fonction :
- espacement des trains (cantonnement) : il a pour objet d'interdire ou de limiter la pénétration sur un canton occupé. Par canton, il faut comprendre portion de pleine voie entre deux signaux de cantonnement.
- protection d'un point : il a pour objet de protéger, notamment, une zone d'aiguillage pour éviter le cisaillement ou la prise en écharpe.

Un signal de cantonnement est muni d'une plaque F qui indique que le mécanicien peut le franchir fermé sous certaine condition : en marche à vue, c'est à dire être en capacité de s'arrêter avant tout obstacle.

Un signal de protection est muni d'une plaque NF qui indique que le mécanicien ne peut pas le franchir de lui même s'il présente l'indication carré (2 feux rouges). Il peut le franchir uniquement sur autorisation de l'aiguilleur après délivrance d'un bulletin C qui précise les conditions de franchissement : vitesse limite, arrêt à tel PK, reprise de la vitesse normale après ... Si le carré présente un feu rouge avec l'oeuilleton allumé, le mécanicien considère le signal comme un sémaphore et peut le franchir sous les même conditions qu'un sémaphore de pleine voie.

Les carrés sont toujours équipés d'un oeuilleton, par contre la réglementation des sémaphores a varié dans le temps. Il me semble, qu'à une époque, les sémaphores de pleine voie n'étaient plus équipés d'oeuilleton.
Il faut comprendre qu'un oeuilleton sur un signal de pleine voie a pour objet de rassurer le mécanicien qui arrive à pleine vitesse devant un signal éteint (lampe grillée) : freinage d'urgence en se demandant s'il n'y a pas un obstacle.
Dans la réalité, lorsqu'une lampe est grillée, le sémaphore précédant passe à l'indication avertissement (feu jaune) afin d'imposer que le train arrive à vitesse réduite vers le signal éteint. Mais, il y a toujours le cas de la lampe qui grille après que le signal précédent ai été franchi, dans ce cas l'oeuilleton permet la levée de doute.
Avatar de l’utilisateur
lgperrin
Papotier
 
Messages: 165
Inscrit le: Dim 04 Mars 2012, 14:36
Localisation: Pontoise
Âge: 56
Echelle pratiquée: N-HO

Re: Arduino - Bloc automatique

Publié: Lun 04 Nov 2013, 14:09 
Pilotage d'un train
Dans mes prochains articles, je proposerai que le pilotage du train s'effectue par le signal vers lequel il se dirige. Nous verrons également comment gérer les trains avec une loco en queue ; ce n'est pas compliqué.
Dans mes exemples, chaque canton sera piloté par un PWM et je n'utiliserai pas de relais.

Dans ce fil, je ne traiterai pas des zones d'aiguilles ; cela ferra l'objet d'un autre fil : les itinéraires en zone de poste.

Mais chaque chose en son temps.
Avatar de l’utilisateur
lgperrin
Papotier
 
Messages: 165
Inscrit le: Dim 04 Mars 2012, 14:36
Localisation: Pontoise
Âge: 56
Echelle pratiquée: N-HO

Suivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 2 invité(s)