1/160 - Echelle N

Le Forum consacré à l'Echelle N
 
AccueilAccueil  PortailPortail  ÉvènementsÉvènements  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
N'hésitez pas à consulter le calendrier et les événements du forum pour voir les manifestations près de chez vous !
Elections des modèles de l'année 2023 : Votez avant le 1er Avril !
Le deal à ne pas rater :
Google Pixel 7 5G – Smartphone 6,3″ OLED FHD+ 8 Go + 128 Go
316 €
Voir le deal

 

 PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement

Aller en bas 
+6
corwin92
Dodesir
F.GODEFERT
nordouest
patniste
GrandCharles
10 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
GrandCharles
Membre
Membre
GrandCharles


Masculin Age : 46
Localisation : 54700 PONT-A-MOUSSON
Nombre de messages : 1940
Date d'inscription : 29/12/2016

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 15 Juil 2018 - 0:35

Salut à tous !

Après avoir mis ce système en place, je comptais vous le partager.

Il s'agit d'une gestion de deux boucles de retournement. Pratique pour le cas d'un réseau de type "Os de chien" avec des aiguillages en travers !
Ce système comprend un Arduino, mais fonctionnerait aussi sans, à la différence que l'arduino permet de laisser le relais excité plus longtemps que l'activation du capteur infrarouge et donc éviter l'effet "mitraillette" des relais (je ne sais pas comment appeler ça autrement...). Il permet également de corriger certains problèmes de perturbations électriques. J'y reviendrai un peu plus tard...


Alors d'abord, je tiens à préciser que tout le matériel nécessaire va être listé ici avec les liens correspondants. Je ne cacherai pas que j'ai commandé en Chine, même si ça peut déplaire à certain. Je ne roule pas sur l'or et j'ai besoin d'économiser.


Alors c'est parti :

Liste du matériel :

- 1 platine de type Arduino : 3,18€
- 1 platine 4 relais 5V DC : 2,32€
- 1 platine + 4 détecteurs infrarouge : 2,50€
- fils électrique type câble téléphone + câbles utilisé pour le feeder

Arrow TOTAL : 8,00 € !!! Ca serait dommage de s'en priver, d'autant que ça fonctionne même lors de l'utilisation d'un logiciel avec cantonnement et tout le tralala !


Câblage :

Là, oui, il y a un peu de fil, mais ça n'est pas si compliqué en fin de compte...

En espérant que ce schéma soit assez clair (je ne connais pas l'auteur du circuit que j'ai repris, mais je l'en remercie ! Wink )

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Boucle10

Alors attention, il faut éviter au maximum de faire passer les trios de fils des 4 détecteurs le long du feeder. Ca a tendance à ramasser pas mal de perturbations et du coup, ça active les relais un peu aléatoirement. La solution reste d'utiliser comme noté sur le schéma du câble blindé torsadé. Du 6 fils + blindage pour deux détecteurs sera parfait, le système comprenant deux détecteurs côte-à-côte par boucle.

Par ailleurs, malgré mes trop pauvres connaissances en terme d'Arduino, quelques lignes de codes supplémentaires ont été ajoutées pour corriger également ces perturbations.

Code Arduino :

Je l'ai rédigé, donc j'ai autant vous le laisser, ça ne mange pas de pain et... bah oui, je suis comme ça, ça m'fait plaisir ! Very Happy

Code:
/*
***********************************************************************
**  Programme ARDUINO pour deux boucles de retournement à l'aide de  **                                        
**  détecteurs infrarouge                                            **
***********************************************************************
*/


int LED = 13;
int OUT9 = 9 ;// définit le numéro de broche de sortie 9
int OUT10 = 10 ;// définit le numéro de broche de sortie 10
int OUT11 = 11 ;// définit le numéro de broche de sortie 11
int OUT12 = 12 ;// définit le numéro de broche de sortie 12

int buttonpin3 = 3; // définit le numéro de broche de l'interface IR 1
int buttonpin4 = 4; // définit le numéro de broche de l'interface IR 2
int buttonpin5 = 5; // définit le numéro de broche de l'interface IR 3
int buttonpin6 = 6; // définit le numéro de broche de l'interface IR 4

int val1 ;// définit la variable de lecture de l'état de l'interface IR 1
int val2 ;// définit la variable de lecture de l'état de l'interface IR 2
int val3 ;// définit la variable de lecture de l'état de l'interface IR 3
int val4 ;// définit la variable de lecture de l'état de l'interface IR 4

unsigned long temps1;
unsigned long temps2;

long prevMillis1 = 0;
long prevMillis2 = 0;

byte antirebond = 50;      // permet d'eviter les rebonds du au materiel


void setup (){
  Serial.begin(9600);
  while(!Serial);
  pinMode(3,INPUT_PULLUP); // entrée 3 en mode PULLUP
  pinMode(4,INPUT_PULLUP); // entrée 4 en mode PULLUP
  pinMode(5,INPUT_PULLUP); // entrée 5 en mode PULLUP
  pinMode(6,INPUT_PULLUP); // entrée 6 en mode PULLUP
  
  pinMode (LED, OUTPUT) ;// initialise la LED en sortie
  pinMode (OUT9, OUTPUT); // initialise la broche en sortie 9
  pinMode (OUT10, OUTPUT); // initialise la broche en sortie 10
  pinMode (OUT11, OUTPUT); // initialise la broche en sortie 11
  pinMode (OUT12, OUTPUT); // initialise la broche en sortie 10  
  }



void loop (){
  
  val1 = digitalRead (buttonpin3) ;// lit la valeur de l'état de l'interface IR 1 et la mémorise dans la variable
  val2 = digitalRead (buttonpin4) ;// lit la valeur de l'état de l'interface IR 2 et la mémorise dans la variable
  val3 = digitalRead (buttonpin5) ;// lit la valeur de l'état de l'interface IR 3 et la mémorise dans la variable
  val4 = digitalRead (buttonpin6) ;// lit la valeur de l'état de l'interface IR 4 et la mémorise dans la variable

  delay(antirebond);              // antirebond pour la detection


  if ((val1 == LOW) || (val2 == LOW))  // teste si l'interface IR 1 ou IR 2 est active, c'est à dire si la variable val est à 1 ou à 0
  {
    
  digitalWrite (OUT9, LOW);// éteint la sortie
  temps1=millis();
  digitalWrite (OUT10, LOW);// éteint la sortie
  temps1=millis();
  }
  if ((val1 == HIGH) && (val2 == HIGH) && (millis()-temps1> 500))
  {
  digitalWrite (OUT9, HIGH);// éteint la sortie
  digitalWrite (OUT10, HIGH);// éteint la sortie
  prevMillis1 = millis();
  }
  
 

  if ((val3 == LOW) || (val4 == LOW))  // teste si l'interface IR 3 ou IR 4 est active, c'est à dire si la variable val est à 1 ou à 0
  {
    
  digitalWrite (OUT11, LOW);// éteint la sortie
  temps2=millis();
  digitalWrite (OUT12, LOW);// éteint la sortie
  temps2=millis();
  }
  if ((val3 == HIGH) && (val4 == HIGH) && (millis()-temps2> 500))
  {
  digitalWrite (OUT11, HIGH);// éteint la sortie
  digitalWrite (OUT12, HIGH);// éteint la sortie
  //prevMillis2 = millis();
  }
  
  

  if ((val3 == HIGH) && (val4 == HIGH) && (val1 == HIGH) && (val2 == HIGH))
  {
  digitalWrite (LED , LOW);
  }
  else
  {
  digitalWrite (LED, HIGH);
  }
}


Voilà, et ça fonctionne très bien. Plus besoin de relancer la centrale, il n'y a plus de court circuit !

Ce système est autonome une fois programmé et complètement invisible par le système maître. La rétrosignalisation fonctionne correctement également, et il n'y a absolument aucun à-coup dans le mouvement du train. La vitesse reste la même et, à part le bruit des relais, on ne remarque même pas le changement de polarité de la portion de voie en question.

Une dernière chose : s'il y a plusieurs cantons dans la boucle, il suffit d'en piloter un seul. Cependant, il faut bien faire attention comment est câblé le feeder du canton suivant sans quoi c'est comme si rien avait été fait. Seul le court-circuit aura été déplacé au canton suivant.

J'espère, même s'il est clair que je n'ai pas inventé le fil à couper l'eau chaude, que ce modeste tuto pourra aider toutes les personnes intéressées.

A vous de jouer !

Charles


PS : Je n'ai pas refflechi au cas "Analogique". Je ne sais donc pas si ce système y serait fonctionnel, bien que je ne vois pas pourquoi il ne le serait pas... à moins que le sens d'alimentation dans la voie influe sur le sens de la marche... je ne sais pas. Je ne m'y connais absolument pas en modélisme ferroviaire analogique. Désolé.
Revenir en haut Aller en bas
https://www.webcod.fr
patniste
Membre
Membre
patniste


Masculin Age : 78
Localisation : Lamballe22400
Nombre de messages : 12695
Date d'inscription : 19/07/2011

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 15 Juil 2018 - 9:40

Ca parait si simple, les boiboites, les fils, ok, ça peut aller mais la programmation là j'ai la tête dans le sac
Bravo à toi puisque ça fonctionne au poil
Revenir en haut Aller en bas
nordouest
Membre banni
Membre banni



Masculin Age : 103
Localisation : fort myers 27400
Nombre de messages : 388
Date d'inscription : 27/03/2018

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 15 Juil 2018 - 23:19

Bon un câblage analogique est quand même bien plus simple.....LOL
Moi qui hésitais à passer au numérique, je reste en analogique. bien moins de fils.... Very Happy
Revenir en haut Aller en bas
F.GODEFERT
Membre
Membre
F.GODEFERT


Masculin Age : 57
Localisation : BAR sur AUBE
Nombre de messages : 3343
Date d'inscription : 13/01/2008

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeLun 16 Juil 2018 - 7:23

Bonjour,
Heureux que cela marche et le cablâge est plus complexe sur le dessin que dans la réalité,car comme toi j'utilise un peu le même système et tout les modules (carte IR,relais,arduino) sont sur la même plaque,le câblage des détecteurs sur le réseau étant assuré avec du câble réseau(RJ45) blindé.
La différence est que j'ai blindé avec de l'alu la carte arduino éviter les pertubations.
Revenir en haut Aller en bas
Dodesir
Membre
Membre
Dodesir


Masculin Age : 81
Localisation : 78350 Jouy en Josas
Nombre de messages : 2402
Date d'inscription : 20/11/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeLun 16 Juil 2018 - 10:49

GrandCharles a écrit:
Salut à tous ! Je n'ai pas refflechi au cas "Analogique". Je ne sais donc pas si ce système y serait fonctionnel, bien que je ne vois pas pourquoi il ne le serait pas... à moins que le sens d'alimentation dans la voie influe sur le sens de la marche... je ne sais pas. Je ne m'y connais absolument pas en modélisme ferroviaire analogique. Désolé.

Merci et félicitations pour cette présentation

nordouest a écrit:
Bon un câblage analogique est quand même bien plus simple.....LOL
Moi qui hésitais à passer au numérique, je reste en analogique. bien moins de fils.... Very Happy

Ce qui est présenté c'est de l'analogique, le numérique c'est autre chose ....le signal qui alimente les rails est bien du courant continu

F.GODEFERT a écrit:
Bonjour,
Heureux que cela marche et le cablâge est plus complexe sur le dessin que dans la réalité,car comme toi j'utilise un peu le même système et tout les modules (carte IR,relais,arduino) sont sur la même plaque,le câblage  des détecteurs sur le réseau étant assuré avec du câble réseau(RJ45) blindé.
La différence est que j'ai blindé avec de l'alu la carte arduino éviter les pertubations.

Peux-tu nous faire voir comment tu as "blindé" ton Arduino?
Merci d'avance
Dominique
Revenir en haut Aller en bas
http://dominique.desir.free.fr/
nordouest
Membre banni
Membre banni



Masculin Age : 103
Localisation : fort myers 27400
Nombre de messages : 388
Date d'inscription : 27/03/2018

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeLun 16 Juil 2018 - 20:41

si c'est de l'analogique pourquoi réalimenter les virages de l'os de chien et pourquoi appeler ça une boucle de retournement alors que ce n'en est pas une
Revenir en haut Aller en bas
corwin92
Membre
Membre
corwin92


Masculin Age : 50
Localisation : 78
Nombre de messages : 1796
Date d'inscription : 21/08/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeLun 16 Juil 2018 - 23:04

Parce qu'en analogique comme en numérique, les "deux virages de l'os de chien" généreraient des courts-circuits.
A cause des aiguilles les deux voies de la partie centrale sont alimentées dans "le même sens".
Un tour dans la boucle ramène donc le train sur un tronçon en polarité inversée.
Il s'agit donc bien d'une boucle de retournement.
Revenir en haut Aller en bas
F.GODEFERT
Membre
Membre
F.GODEFERT


Masculin Age : 57
Localisation : BAR sur AUBE
Nombre de messages : 3343
Date d'inscription : 13/01/2008

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeLun 16 Juil 2018 - 23:15

Dodesir a écrit:
Peux-tu nous faire voir comment tu as "blindé" ton Arduino?

Disons rien de plus simple,
j'ai pris un sac plastique sur lequel j'ai mis de la colle en bombe ou j'ai ensuite collé du papier d'alu.
Ce sandwich je l'ai fixé à la colle chaude sur mon Arloco avec son arduino dessous.
Je ferais les photos plus tard.
Revenir en haut Aller en bas
nordouest
Membre banni
Membre banni



Masculin Age : 103
Localisation : fort myers 27400
Nombre de messages : 388
Date d'inscription : 27/03/2018

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 0:25

corwin92 a écrit:
Parce qu'en analogique comme en numérique, les "deux virages de l'os de chien" généreraient des courts-circuits.
A cause des aiguilles les deux voies de la partie centrale sont alimentées dans "le même sens".
Un tour dans la boucle ramène donc le train sur un tronçon en polarité inversée.
Il s'agit donc bien d'une boucle de retournement.
Quelle idée de ne pas isoler entre les aiguilles ! Ce que l'on a toujours fait et jamais de cours jus.
une boucle de retournement sert à ramener sur la même voie! Langage SNCF!
Revenir en haut Aller en bas
corwin92
Membre
Membre
corwin92


Masculin Age : 50
Localisation : 78
Nombre de messages : 1796
Date d'inscription : 21/08/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 3:15

si tu isoles entre les deux aiguilles, sans gestion specifique, il y aura un cc à chaque changement de voie via une aiguille.
Avec ce plan, il y a forcément un court-circuit à gérer, et en automatique, c'est plus simple de le gérer dans les "virages".
Revenir en haut Aller en bas
corwin92
Membre
Membre
corwin92


Masculin Age : 50
Localisation : 78
Nombre de messages : 1796
Date d'inscription : 21/08/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 10:23

Merci GrandCharles pour ce tuto.
Sais-tu si les détecteurs existent en plus petit.
Cela ne doit pas être facile à utiliser en zone décorée.
Revenir en haut Aller en bas
GrandCharles
Membre
Membre
GrandCharles


Masculin Age : 46
Localisation : 54700 PONT-A-MOUSSON
Nombre de messages : 1940
Date d'inscription : 29/12/2016

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 10:33

Salut Cyrille,

Je ne sais pas s'il en existe des plus petits, mais il est toujours possible de les mettre sous les voies a la verticale. Je sais qu'il en existe d'autre forme, ou alors il faut tarranger pour que ça soit dans une partir cachée.
Une dernière idée : remplacer les IR par des contacts ILS, mais ça impose de mettre des aimants sous les locomotives.

Charles
Revenir en haut Aller en bas
https://www.webcod.fr
corwin92
Membre
Membre
corwin92


Masculin Age : 50
Localisation : 78
Nombre de messages : 1796
Date d'inscription : 21/08/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 10:41

les leds sur les détecteurs sont des 5 ou des 3mm?
Revenir en haut Aller en bas
GrandCharles
Membre
Membre
GrandCharles


Masculin Age : 46
Localisation : 54700 PONT-A-MOUSSON
Nombre de messages : 1940
Date d'inscription : 29/12/2016

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 10:54

5mm sur les miens.

Charles
Revenir en haut Aller en bas
https://www.webcod.fr
tking-1007
Membre
Membre
tking-1007


Masculin Age : 74
Localisation : *
Nombre de messages : 427
Date d'inscription : 27/06/2008

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 11:25

GrandCharles a écrit:
Salut Cyrille,

Je ne sais pas s'il en existe des plus petits, mais il est toujours possible de les mettre sous les voies a la verticale. Je sais qu'il en existe d'autre forme, ou alors il faut tarranger pour que ça soit dans une partir cachée.
Une dernière idée : remplacer les IR par des contacts ILS, mais ça impose de mettre des aimants sous les locomotives.

Charles

Remplacement possible par des detecteurs compacts ( emetteur + recepteur ) a mettre sous les voies

CNY70 7x7 mm
SG-2BC D4 mm
ITR 8307 3x3 mm

A+ JL
Revenir en haut Aller en bas
corwin92
Membre
Membre
corwin92


Masculin Age : 50
Localisation : 78
Nombre de messages : 1796
Date d'inscription : 21/08/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 11:26

Ce doit probablement être la chaleur Sleep , mais j'ai du mal à comprendre le code.
De ma compréhension, une boucle est alimentée dans un "sens"  par défaut (2 détecteurs à LOW) , et la polarité est inversée quand les deux détecteurs passent à HIGH.
Ce que je n'arrive pas à comprendre, c'est que les deux détecteurs étant de part et d'autre de la coupure, ils sont à high lorsque le train est au dessus des deux, donc il y a déjà eu un court-circuit.
Ai-je manqué quelque chose ?  Embarassed
Revenir en haut Aller en bas
Dodesir
Membre
Membre
Dodesir


Masculin Age : 81
Localisation : 78350 Jouy en Josas
Nombre de messages : 2402
Date d'inscription : 20/11/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeMar 17 Juil 2018 - 13:44

corwin92 a écrit:
Merci GrandCharles pour ce tuto.
Sais-tu si les détecteurs existent en plus petit.
Cela ne doit pas être facile à utiliser en zone décorée.  

GrandCharles a écrit:
Salut Cyrille,

Je ne sais pas s'il en existe des plus petits, mais il est toujours possible de les mettre sous les voies a la verticale. Je sais qu'il en existe d'autre forme, ou alors il faut tarranger pour que ça soit dans une partir cachée.
Une dernière idée : remplacer les IR par des contacts ILS, mais ça impose de mettre des aimants sous les locomotives.

Charles

J'utilise, pour détecter la présence de trains, des TCRT5000 avec des LED de 3 mm que je pose entre les traverses (peu visible).
Il faut faire un peu de soudures car je déporte la platine dans un local technique (un bâtiment du décor). Pour être + efficace j'ai mis un collant blanc sous le matériel à détecter.

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Tcrt5010
Revenir en haut Aller en bas
http://dominique.desir.free.fr/
GrandCharles
Membre
Membre
GrandCharles


Masculin Age : 46
Localisation : 54700 PONT-A-MOUSSON
Nombre de messages : 1940
Date d'inscription : 29/12/2016

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeSam 21 Juil 2018 - 17:51

corwin92 a écrit:
Ce doit probablement être la chaleur Sleep , mais j'ai du mal à comprendre le code.
De ma compréhension, une boucle est alimentée dans un "sens"  par défaut (2 détecteurs à LOW) , et la polarité est inversée quand les deux détecteurs passent à HIGH.
Ce que je n'arrive pas à comprendre, c'est que les deux détecteurs étant de part et d'autre de la coupure, ils sont à high lorsque le train est au dessus des deux, donc il y a déjà eu un court-circuit.
Ai-je manqué quelque chose ?  Embarassed

Salut, désolé pour la réponse tardive, je suis en vacances, et comme la météo est un peu capricieuse aujourd'hui, j'en profite pour venir faire un petit tour sur le forum ! Wink


Alors, concernant le principe de fonctionnement :

dans un sens : le train se trouve sur le canton qui doit changer de polarité pour ne pas qu'il y ait de court-circuit lorsqu'il passe au canton suivant, donc juste avant d'y arriver, il passe devant le détecteur qui bascule le relais puis tout de suite après, il passe devant le second détecteur qui... ne change pas grand chose. Ce second détecteur sert dans l'autre sens.

Donc dans l'autre sens, lorsque le train passe sur le premier détecteur, il bascule le canton suivant avant que le train y arrive puis le second détecteur, pareil, ne sert à rien.

Dans les deux cas, la polarité du canton concerné revient à son état normal 500 ms après que le dernier wagon soit passé devant le second détecteur sur son trajet.

Concernant le code, il me semble bizarre également, mais il fonctionne bien comme ça. J'ai l'impression que les fonction ET (&&) et OU (||) sont inversées, mais quand je change le code, ça ne fonctionne plus que quand j'active les deux détecteurs... va comprendre...

Charles
Revenir en haut Aller en bas
https://www.webcod.fr
barbadidoua
membre s'en étant allé
membre s'en étant allé



Masculin Age : 64
Localisation : Challes les eaux / Chambéry
Nombre de messages : 202
Date d'inscription : 03/01/2008

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeSam 21 Juil 2018 - 19:56

Bonsoir,

Pour faciliter la compréhension du code, je me suis autorisé à le modifier comme suit :
Code:
/*
***********************************************************************
**  Programme ARDUINO pour deux boucles de retournement à l'aide de  **                                        
**  détecteurs infrarouge                                            **
***********************************************************************
*/

// L'utilisation de #define permet de definir un mnemonique qui sera remplacé par sa valeur à la compilation
// Cela permet de minimiser le nombre de variable non utilisées
#define LED         13 // Definit la led interne
#define Relais1     9  // définit la broche du relais 1
#define Relais2     10 // définit la broche du relais 2
#define Relais3     11 // définit la broche du relais 3
#define Relais4     12 // définit la broche du relais 4

#define Occupation1 3  // définit la broche de l'interface IR 1
#define Occupation2 4  // définit la broche de l'interface IR 2
#define Occupation3 5  // définit la broche de l'interface IR 3
#define Occupation4 6  // définit la broche de l'interface IR 4

// On definit des variables si leur valeur évolue lors de l'execution du programme.
int IR1 ;              // définit la variable de lecture de l'état de l'interface IR 1
int IR2 ;              // définit la variable de lecture de l'état de l'interface IR 2
int IR3 ;              // définit la variable de lecture de l'état de l'interface IR 3
int IR4 ;              // définit la variable de lecture de l'état de l'interface IR 4

unsigned long tempoBoucle1;
unsigned long tempoBoucle2;

#define antirebond 500 // permet d'eviter les rebonds dus au materiel (en ms)

// ============================================
// Initialisations
// ============================================
void setup (){
  Serial.begin(9600);
  while(!Serial);
  // Initialisation des Capteurs IR
  pinMode(Occupation1,INPUT_PULLUP);
  pinMode(Occupation2,INPUT_PULLUP);
  pinMode(Occupation3,INPUT_PULLUP);
  pinMode(Occupation4,INPUT_PULLUP);
  
  // Initialisation de la LED en sortie
  pinMode (LED, OUTPUT) ;            
  
  // Initialisation des Relais
  pinMode (Relais1, OUTPUT);         // initialise la broche en sortie 9
  pinMode (Relais2, OUTPUT);         // initialise la broche en sortie 10
  pinMode (Relais3, OUTPUT);         // initialise la broche en sortie 11
  pinMode (Relais4, OUTPUT);         // initialise la broche en sortie 10  
  
  Serial.begin(9600);                // Permet d'utiliser le Monitor pour comprendre ce qui se passe (debug)
}

// ============================================
// Gestion Boucle :
//   Teste les 2 capteurs d'occupations de la boucle
//   et positionne les relais correspondant
// L'utilisation du else if permet de voir tous les cas possibles.
// ============================================
void Gest_inversion(int Ir1, int Ir2, int R1, int R2, long tempoBoucle) {

  if ((Ir1 == LOW) || (Ir2 == LOW)) // Un train est detecté en entrée de la boucle (au moins une occupations)=> on ferme les relais
  {
    Serial.println("Un train est detecte en entrée de la boucle");
    digitalWrite (R1, LOW);    // ferme le relais 1
    digitalWrite (R2, LOW);    // ferme le relais 2
    tempoBoucle1=millis();     // Remise a zero de la temporisation de la boucle
  }
  else if ((Ir1 == HIGH) && (Ir2 == HIGH) && (millis()-tempoBoucle> antirebond)) // Passé le delais antirebond, il n'y a plus de train face aux 2 capteurs => on ouvre les relais
  {
    Serial.println("Passe le delais antirebond, il n'y a plus de train face aux 2 capteurs");
    digitalWrite (R1, HIGH);   // ouvre le relais 1
    digitalWrite (R2, HIGH);   // ouvre le relais 2
  }
  else if (Ir1 == HIGH) {
    Serial.println(String(Ir1) + " est encore occupe");  
  }
  else if (Ir2 == HIGH) {
    Serial.println(String(Ir2) + " est encore occupe");  
  }
  else {
    Serial.println("Le delais n'est pas encore passe");  
  }  
}

// ============================================
// boucle
// ============================================
void loop (){

  // lecture et memorisation des occupations
  IR1 = digitalRead (Occupation1) ; // lit la valeur de l'état de l'interface IR 1 et la mémorise dans la variable
  IR2 = digitalRead (Occupation2) ; // lit la valeur de l'état de l'interface IR 2 et la mémorise dans la variable
  IR3 = digitalRead (Occupation3) ; // lit la valeur de l'état de l'interface IR 3 et la mémorise dans la variable
  IR4 = digitalRead (Occupation4) ; // lit la valeur de l'état de l'interface IR 4 et la mémorise dans la variable

  delay(antirebond);                // antirebond pour la detection
  
// Les sous programmes permettent une meilleur comprehension du code.
  Gest_inversion(IR1, IR2, Relais1, Relais2, tempoBoucle1);
  Gest_inversion(IR3, IR4, Relais3, Relais4, tempoBoucle2);

  // mise a jour de la led
  if ((IR3 == HIGH) && (IR4 == HIGH) && (IR1 == HIGH) && (IR2 == HIGH))
    digitalWrite (LED , LOW);       // éteint la led si aucune occupation
  else
    digitalWrite (LED, HIGH);       // allume la led si au moins une occupation
}

(j'ai compilé mai pas testé, faute de matériel)
A priori :
- Les capteurs d'occupation donnent un 0 quand un train est en face.
- Les relais sont fermés à l'état bas.

J'espère avoir éclairé votre lanterne en évitant le paracétamol  scratch .

Amicalement, Xavier
Revenir en haut Aller en bas
http://barbadidoua.free.fr
nordouest
Membre banni
Membre banni



Masculin Age : 103
Localisation : fort myers 27400
Nombre de messages : 388
Date d'inscription : 27/03/2018

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeSam 21 Juil 2018 - 20:04

corwin92 a écrit:
si tu isoles entre les deux aiguilles, sans gestion specifique,  il y aura un cc à chaque changement de voie via une aiguille.
Avec ce plan, il y a forcément un court-circuit à gérer, et en automatique, c'est plus simple de le gérer dans les "virages".
Pendant des décennies on a alimenté sans gestion spécifique, et il n'y a jamais eu de court circuit .Je pense que vous vous compliquez sérieusement la vie.
Revenir en haut Aller en bas
corwin92
Membre
Membre
corwin92


Masculin Age : 50
Localisation : 78
Nombre de messages : 1796
Date d'inscription : 21/08/2007

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeSam 21 Juil 2018 - 23:42

nordouest a écrit:

Pendant des décennies on a alimenté sans gestion spécifique, et il n'y a jamais eu de court circuit .Je pense que vous vous compliquez sérieusement la vie.
Alors il faut que tu m'expliques comment tu alimenterais ce type de circuit sans gestion spécifique, car que ce soit maintenant ou il y a des décennies, quand une polarité  entre en contact avec l'autre, cela s'appelle un court-circuit, c'est une loi immuable de l'électricité et ce n'est pas demain la veille que cela changera.
Revenir en haut Aller en bas
ptitrain54
Membre
Membre



Masculin Age : 74
Localisation : NANCY
Nombre de messages : 358
Date d'inscription : 19/08/2008

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 22 Juil 2018 - 8:58

Bonjour Nordouest

Tu as raison, il y a 30 ans, toute cette électronique n'existait pas, et pourtant sur mon réseau de l'époque j'avais une boucle de retournement Smile

La solution était effectivement simple :

Dans la boucle, on créait une section complètement isolée du reste du circuit et qui était alimentée via un interrupteur inverseur
Lorsque le train arrivait sur cette section, on l'arrêtait, on inversait l'alimentation manuellement via l'interrupteur et on faisait repartir le train Rolling Eyes

En fait , l’électronique était dans notre cerveau et dans notre main Embarassed

Mais le court circuit existait bel et bien !!!!
Revenir en haut Aller en bas
GrandCharles
Membre
Membre
GrandCharles


Masculin Age : 46
Localisation : 54700 PONT-A-MOUSSON
Nombre de messages : 1940
Date d'inscription : 29/12/2016

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 22 Juil 2018 - 13:12

barbadidoua a écrit:
Bonsoir,

Pour faciliter la compréhension du code, je me suis autorisé à le modifier comme suit :
Code:
/*
***********************************************************************
**  Programme ARDUINO pour deux boucles de retournement à l'aide de  **                                        
**  détecteurs infrarouge                                            **
***********************************************************************
*/

// L'utilisation de #define permet de definir un mnemonique qui sera remplacé par sa valeur à la compilation
// Cela permet de minimiser le nombre de variable non utilisées
#define LED         13 // Definit la led interne
#define Relais1     9  // définit la broche du relais 1
#define Relais2     10 // définit la broche du relais 2
#define Relais3     11 // définit la broche du relais 3
#define Relais4     12 // définit la broche du relais 4

#define Occupation1 3  // définit la broche de l'interface IR 1
#define Occupation2 4  // définit la broche de l'interface IR 2
#define Occupation3 5  // définit la broche de l'interface IR 3
#define Occupation4 6  // définit la broche de l'interface IR 4

// On definit des variables si leur valeur évolue lors de l'execution du programme.
int IR1 ;              // définit la variable de lecture de l'état de l'interface IR 1
int IR2 ;              // définit la variable de lecture de l'état de l'interface IR 2
int IR3 ;              // définit la variable de lecture de l'état de l'interface IR 3
int IR4 ;              // définit la variable de lecture de l'état de l'interface IR 4

unsigned long tempoBoucle1;
unsigned long tempoBoucle2;

#define antirebond 500 // permet d'eviter les rebonds dus au materiel (en ms)

// ============================================
// Initialisations
// ============================================
void setup (){
  Serial.begin(9600);
  while(!Serial);
  // Initialisation des Capteurs IR
  pinMode(Occupation1,INPUT_PULLUP);
  pinMode(Occupation2,INPUT_PULLUP);
  pinMode(Occupation3,INPUT_PULLUP);
  pinMode(Occupation4,INPUT_PULLUP);
  
  // Initialisation de la LED en sortie
  pinMode (LED, OUTPUT) ;            
  
  // Initialisation des Relais
  pinMode (Relais1, OUTPUT);         // initialise la broche en sortie 9
  pinMode (Relais2, OUTPUT);         // initialise la broche en sortie 10
  pinMode (Relais3, OUTPUT);         // initialise la broche en sortie 11
  pinMode (Relais4, OUTPUT);         // initialise la broche en sortie 12
  
  Serial.begin(9600);                // Permet d'utiliser le Monitor pour comprendre ce qui se passe (debug)
}

// ============================================
// Gestion Boucle :
//   Teste les 2 capteurs d'occupations de la boucle
//   et positionne les relais correspondant
// L'utilisation du else if permet de voir tous les cas possibles.
// ============================================
void Gest_inversion(int Ir1, int Ir2, int R1, int R2, long tempoBoucle) {

  if ((Ir1 == LOW) || (Ir2 == LOW)) // Un train est detecté en entrée de la boucle (au moins une occupations)=> on ferme les relais
  {
    Serial.println("Un train est detecte en entrée de la boucle");
    digitalWrite (R1, LOW);    // ferme le relais 1
    digitalWrite (R2, LOW);    // ferme le relais 2
    tempoBoucle1=millis();     // Remise a zero de la temporisation de la boucle
  }
  else if ((Ir1 == HIGH) && (Ir2 == HIGH) && (millis()-tempoBoucle> antirebond)) // Passé le delais antirebond, il n'y a plus de train face aux 2 capteurs => on ouvre les relais
  {
    Serial.println("Passe le delais antirebond, il n'y a plus de train face aux 2 capteurs");
    digitalWrite (R1, HIGH);   // ouvre le relais 1
    digitalWrite (R2, HIGH);   // ouvre le relais 2
  }
  else if (Ir1 == HIGH) {
    Serial.println(String(Ir1) + " est encore occupe");  
  }
  else if (Ir2 == HIGH) {
    Serial.println(String(Ir2) + " est encore occupe");  
  }
  else {
    Serial.println("Le delais n'est pas encore passe");  
  }  
}

// ============================================
// boucle
// ============================================
void loop (){

  // lecture et memorisation des occupations
  IR1 = digitalRead (Occupation1) ; // lit la valeur de l'état de l'interface IR 1 et la mémorise dans la variable
  IR2 = digitalRead (Occupation2) ; // lit la valeur de l'état de l'interface IR 2 et la mémorise dans la variable
  IR3 = digitalRead (Occupation3) ; // lit la valeur de l'état de l'interface IR 3 et la mémorise dans la variable
  IR4 = digitalRead (Occupation4) ; // lit la valeur de l'état de l'interface IR 4 et la mémorise dans la variable

  delay(antirebond);                // antirebond pour la detection
  
// Les sous programmes permettent une meilleur comprehension du code.
  Gest_inversion(IR1, IR2, Relais1, Relais2, tempoBoucle1);
  Gest_inversion(IR3, IR4, Relais3, Relais4, tempoBoucle2);

  // mise a jour de la led
  if ((IR3 == HIGH) && (IR4 == HIGH) && (IR1 == HIGH) && (IR2 == HIGH))
    digitalWrite (LED , LOW);       // éteint la led si aucune occupation
  else
    digitalWrite (LED, HIGH);       // allume la led si au moins une occupation
}

(j'ai compilé mai pas testé, faute de matériel)
A priori :
- Les capteurs d'occupation donnent un 0 quand un train est en face.
- Les relais sont fermés à l'état bas.

J'espère avoir éclairé votre lanterne en évitant le paracétamol  scratch .

Amicalement, Xavier

Merci beaucoup !

Je vais tester ton code dès que je rentre de vacances. J'y ai déjà corrigé une petite erreur d'inattention. En tout cas, il est vraiment bien expliqué. Merci encore ! Wink

Charles
Revenir en haut Aller en bas
https://www.webcod.fr
nordouest
Membre banni
Membre banni



Masculin Age : 103
Localisation : fort myers 27400
Nombre de messages : 388
Date d'inscription : 27/03/2018

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 22 Juil 2018 - 18:10

corwin92 a écrit:
nordouest a écrit:

Pendant des décennies on a alimenté sans gestion spécifique, et il n'y a jamais eu de court circuit .Je pense que vous vous compliquez sérieusement la vie.
Alors il faut que tu m'expliques comment tu alimenterais ce type de circuit sans gestion spécifique, car que ce soit maintenant ou il y a des décennies, quand une polarité  entre en contact avec l'autre, cela s'appelle un court-circuit, c'est une loi immuable de l'électricité et ce n'est pas demain la veille que cela changera.
On a toujours isolé entre les aiguilles! Tu n'a jamais eu de réseau jouef? Tu avais des cours jus dessus?
Revenir en haut Aller en bas
nordouest
Membre banni
Membre banni



Masculin Age : 103
Localisation : fort myers 27400
Nombre de messages : 388
Date d'inscription : 27/03/2018

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitimeDim 22 Juil 2018 - 18:15

ptitrain54 a écrit:
Bonjour Nordouest

Tu as raison, il y a 30 ans, toute cette électronique n'existait pas, et pourtant sur mon réseau de l'époque j'avais une boucle de retournement Smile

La solution était effectivement simple :

Dans la boucle, on créait une section complètement isolée du reste du circuit et qui était alimentée via un interrupteur inverseur
Lorsque le train arrivait sur cette section, on l'arrêtait, on inversait l'alimentation manuellement via l'interrupteur et on faisait repartir le train Rolling Eyes

En fait , l’électronique était dans notre cerveau et dans notre main Embarassed

Mais le court circuit existait bel et bien !!!!
Sur une boucle de retournement oui, là ce n'en est pas une. C'est un OS de chien,(un cercle aplati). Une boucle c'est quand on rentre sur une partie duréseau au même endroit d'où lon en est sorti via une aiguille.
voici ce que c'est une boucle.
PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Boucle10
C'et sur une voie unique en principe. L'os de chien c'est fait pour faire de la fausse double voie.
[url=https://servimg.com/view/18539535/23PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Os_de_10[/url]

Tout ça pour dire que vous vous compliquez sérieusement la vie. Il ne faudrait pas que vous participiez à des expos avec de grands réseaux modulaire comme Stuttgart!

Revenir en haut Aller en bas
Contenu sponsorisé





PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Empty
MessageSujet: Re: PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement    PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  Icon_minitime

Revenir en haut Aller en bas
 
PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Boucles de retournement
» Deux boucles de retournement ?
» demande de conseils pour mon réseau
» Piloter un relais bistable avec Arduino
» Comment piloter des relais avec Photocoupleurs et Arduino ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
1/160 - Echelle N :: Modèles réduits à l'echelle N :: Les tutos-
Sauter vers: