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 !
Le deal à ne pas rater :
Smartphone Xiaomi 14 – 512 Go- 6,36″ 5G Double SIM à 599€
599 €
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 : Précédent  1, 2
AuteurMessage
Jeanmi67
Membre
Membre
Jeanmi67


Masculin Age : 71
Localisation : Antibes
Nombre de messages : 275
Date d'inscription : 12/09/2010

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeDim 22 Juil 2018 - 19:11

nordouest a écrit:
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.

C'est là qu'est l'os, hélas...

Si nordouest veut bien se donner la peine de relire le premier post de GrandCharles (15/07/2018 - 0:35) :
GrandCharles a écrit:
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 !

Donc en reprenant le schéma "Os de chien en voie simple" et que l'on y rajoute quatre aiguilles, comme dans le schéma montré dans le même post de GrandCharles, on voit assez clairement que cela génère deux boucles de retournement quand un train parcourt les itinéraires matérialisés en rouge ci-dessous.
PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 Os_110

Jean-Michel
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  - Page 2 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  - Page 2 Icon_minitimeDim 22 Juil 2018 - 19:24

Sauf si tu isoles entre tes aiguilles qui, en fait , ne servent pas à grand chose. Comme on faisait avant et qui est en principe la règle. Ce qui était bien plus simple et moins source de panne!
Revenir en haut Aller en bas
GrandCharles
Membre
Membre
GrandCharles


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

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeDim 22 Juil 2018 - 19:35

Mais si les aiguilles sont alimentées quand même, il y aura un court circuit au moment du passage de la locomotive.

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


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

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeDim 22 Juil 2018 - 20:04

GrandCharles a écrit:
Mais si les aiguilles sont alimentées quand même, il y aura un court circuit au moment du passage de la locomotive.

Charles

C'est bien cela que nordouest ne semble pas vouloir comprendre.
Revenir en haut Aller en bas
Jeanmi67
Membre
Membre
Jeanmi67


Masculin Age : 71
Localisation : Antibes
Nombre de messages : 275
Date d'inscription : 12/09/2010

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeDim 22 Juil 2018 - 20:21

 
Je ne sais pas s'il ne veut pas comprendre, mais il pourrait nous expliquer ce qu'il sous-entend avec cette phrase :
nordouest a écrit:
...tes aiguilles qui, en fait , ne servent pas à grand chose....

Jean-Michel
Revenir en haut Aller en bas
Dodesir
Membre
Membre
Dodesir


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

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeDim 22 Juil 2018 - 21:07

nordouest a écrit:
Sauf si tu isoles entre tes aiguilles qui, en fait , ne servent pas à grand chose. Comme on faisait avant et qui est en principe la règle. Ce qui était bien plus simple et moins source de panne!

C'est effectivement les aiguillages qui compliquent le système mais GrandCharles a bien le droit de les juger utile, voire nécessaire...
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 : 1972
Date d'inscription : 29/12/2016

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeJeu 2 Aoû 2018 - 21:56

GrandCharles a écrit:
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

Salut à toi !

Je viens de tester ton code et il fonctionne mais... (parce qu'il y a un "mais", désolé...) il y a trop de temps entre le moment où le détecteur détecte une présence et le moment où le relais bascule. Par conséquent, le trais arrive sur le court-circuit avant que le relais bascule.

Aurais-tu une idée .

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



Masculin Age : 65
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  - Page 2 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  - Page 2 Icon_minitimeJeu 2 Aoû 2018 - 22:21

Bonsoir,

Tu peux diminuer la valeur de antirebond:
#define antirebond 500 // permet d'eviter les rebonds dus au materiel (en ms)

En la passant a 50, cela devrait être suffisant.
Si cela ne fonctionne pas, une autre solution serait de relire lR1 et IR2 temps que 5 lectures successives identiques ne sont pas observées. Cela est à mon avis un meilleur anti-rebond, qui de plus n'introduit pratiquement aucun retard (contrairement au delay)

Si tu le souhaites, je pourrai regarder la modification, mais je suis en plein démarrage d'un projet au travail, et ne serai pas disponible avant la fin du mois.

Amicalement,
Revenir en haut Aller en bas
http://barbadidoua.free.fr
GrandCharles
Membre
Membre
GrandCharles


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

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeJeu 2 Aoû 2018 - 22:30

Merci encore, je vais regarder ça. Je t'avoue que la première solution est la plus simple à tester. Je ne suis pas encore assez fort pour comprendre que faire pour effectuer la seconde. Même en fin de mois, je serais ravi de voir comprendre comme tu réalises ça. Ca sera avec plaisir, d'autant que tes commentaires sont explicites dans le code.

Par contre, il y a deux fois :

Code:
Serial.begin(9600);

J'imagine qu'il y en a un de trop, non ?

Charles

EDIT : A 50, c'est déclenche plus vite, mais ça se désactive aussi plus vit. Je voudrais que lorsqu'il y a une détection même très brève, le relais s'active tout de suite et se désactive 500ms après. Par contre, qu'il reste activé tant qu'il détecte. C'est pour évite qu'il claque deux fois s'il détecte 2 "parties" de la même locomotives en mois de 500ms. Je ne sais pas si c'est clair...

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



Masculin Age : 65
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  - Page 2 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  - Page 2 Icon_minitimeVen 3 Aoû 2018 - 18:41

Bonsoir,

Effectivement le second n'est pas nécessaire (sauf pour voir si tu suis jocolor )

Pour l'obliger les relais à rester fermés 500 ms tu peux modifier Gest_inversion comme suit:
delay(500); // temporisation de 500ms a l'occupation
tempoBoucle1=millis(); // Remise a zero de la temporisation de la boucle

Je supprimerais aussi dans Loop:
delay(antirebond); // antirebond pour la detection

Ainsi, la mise à jour des occupations se fait plus souvent (plus de delay systématique) mais le programme est bloqué antirebond ms dès qu'une occupation est détectée.

A vérifier ...

Amicalement,

Xavier

Revenir en haut Aller en bas
http://barbadidoua.free.fr
GrandCharles
Membre
Membre
GrandCharles


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

PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 Icon_minitimeSam 4 Aoû 2018 - 17:41

Salut !

Je viens d'essayer avec ces nouveaux paramètres et le déclenchement est toujours légèrement en retard... Je crois que je vais lui remettre mon code pour voir s'il y a une réelle différence.

Charles
Revenir en haut Aller en bas
https://www.webcod.fr
Contenu sponsorisé





PAS CHER : 4 détecteurs IR, 4 relais, 1 Arduino : 2 boucles de retournement  - Page 2 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  - Page 2 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 2 sur 2Aller à la page : Précédent  1, 2
 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: