1/160 - Echelle N

Le Forum consacré à l'Echelle N
 
AccueilAccueil  PortailPortail  S'enregistrerS'enregistrer  Connexion  
Le Forum recherche un administrateur motivé. Contactez l'administration pour postuler !

Partagez | 
 

 simulation semaphore 3 feux

Aller en bas 
Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7  Suivant
AuteurMessage
VAUBAN38
Membre
Membre
avatar

Masculin Age : 66
Localisation : GRENOBLE
Nombre de messages : 467
Date d'inscription : 04/02/2012

MessageSujet: Re: simulation semaphore 3 feux   Jeu 9 Jan 2014 - 21:04

Fonction intéressante ce While, mais selon le positionnement du détecteur, n'y a-t-il pas le risque qu'une "multidétection" persiste suite à une rupture fugitive de détection ?

Car s'il est vrai que dans le positionnement choisi par Piston93 (sous voie et dans l'axe) les attelages sont en théorie détectés et donc pas y avoir de rupture, cela devient beaucoup plus hasardeux en position par dessus (celle que je vais utiliser) où il faut "jouer" dans la latitude de détection 0.5 / 5 cm, ce qui devient difficile avec des machines à pantographes où pour garder la hauteur utile de passage on risque de ne pas détecter les attelages mais simplement les machines et wagons....

Pour mon programme j'ai préféré mettre un "delay" correspondant approximativement au passage du train le plus grand, puisque par définition deux trains ne peuvent se suivre immédiatement du fait du cantonnement.

Cela semble être satisfaisant en test de fonctionnement.

Qu'en pensez-vous ?
Revenir en haut Aller en bas
Jojo37
membre s'étant en-allé
membre s'étant en-allé
avatar

Masculin Localisation : Loches(37)
Nombre de messages : 912
Date d'inscription : 12/02/2009

MessageSujet: Re: simulation semaphore 3 feux   Jeu 9 Jan 2014 - 22:21

Bonsoir à tous.
J'ai beau regarder et reregarder,je ne trouve pas la vidéo dont quelqu'un parle dans ce sujet.
Merci à celui qui la remontera
Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Jeu 9 Jan 2014 - 22:36

VAUBAN38 a écrit:
Fonction intéressante ce While, mais selon le positionnement du détecteur, n'y a-t-il pas le risque qu'une "multidétection" persiste suite à une rupture fugitive de détection ?

Oui il y a un risque. Mais on va y aller doucement. Il faudrait faire un anti-rebond, c'est à dire valider le démasquage du capteur avec un délai.

On va y venir
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Jeu 9 Jan 2014 - 22:37

Bonsoir

Jojo37 a écrit:
Bonsoir à tous.
J'ai beau regarder et reregarder,je ne trouve pas la vidéo dont quelqu'un parle dans ce sujet.
Merci à celui qui la remontera

Elle n'est pas embarquée dans un message, il faut suivre ce lien :

https://dl.dropboxusercontent.com/u/67740546/dds_microbot.m4v

Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
Jojo37
membre s'étant en-allé
membre s'étant en-allé
avatar

Masculin Localisation : Loches(37)
Nombre de messages : 912
Date d'inscription : 12/02/2009

MessageSujet: Re: simulation semaphore 3 feux   Jeu 9 Jan 2014 - 23:45

Rebonsoir à tous.
J'aurai donc pu repasser les pages les unes après les autres ,quel idiot.
Merci jlb pour le lien.
Revenir en haut Aller en bas
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 8:01

l'ordre des lignes de commande est il important dans l'absolu?
par exemple

Citation :

//on eteint le vert
 digitalWrite(ledVerte, LOW);  
    /* Allume le rouge 5 secondes */
    digitalWrite(ledRouge, HIGH);
     /* Attend que le capteur soit démasqué */
    while (digitalRead(pinCapteur) == LOW);
    delay(5000);
    digitalWrite(ledRouge, LOW);

    /* Allume le orange 5 secondes */
    digitalWrite(ledOrange, HIGH);
    delay(5000);
    digitalWrite(ledOrange, LOW);
    /* Allume le vert */
    digitalWrite(ledVerte, HIGH);


sera-t-il équivalent à

Citation :

//on eteint le vert
digitalWrite(ledVerte, LOW);  
   /* Allume le rouge 5 secondes */
   digitalWrite(ledRouge, HIGH);
   
   delay(5000);
   digitalWrite(ledRouge, LOW);
/* Attend que le capteur soit démasqué */
   while (digitalRead(pinCapteur) == LOW);

   /* Allume le orange 5 secondes */
   digitalWrite(ledOrange, HIGH);
   delay(5000);
   digitalWrite(ledOrange, LOW);
   /* Allume le vert */
   digitalWrite(ledVerte, HIGH);

Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 8:08

L'ordre est TRÈS important

Dans le premier programme, le feu restera au rouge tant que le capteur sera masqué. Le rouge sera éteint 5s après que le capteur ait été démasqué.

Dans le second, le feu restera au rouge 5s puis sera éteint et le restera tant que le capteur sera masqué. Donc tout sera éteint sur le sémaphore. L'orange s'allumera dès que le capteur sera démasqué.
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 8:14

merci pour cette précision qui sera utile à tous
donc dans la conception d'un programme, bien faire la liste des actions voulues et la traduire bien dans l'ordre en lignes de programmation  Exclamation 
Revenir en haut Aller en bas
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 8:16

bon, je vais au dodo  Very Happy  et testerai cela plus tard
Revenir en haut Aller en bas
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 22:06

la fonction while avait l'air d’être efficace avec les délais de 5 sec mais pas avec 15 sec, tant pis pour l'instant je laisse tel quel pour St Mandé

j'ai tout installé sur le module. La détection se fait même avec un wagon ayant un chassis noir donc apparemment pas besoin de mettre une étiquette blanche sous le matériel roulant. Essai fait avec un wagon trix lavamat. A confirmer avec un wagon court mais je pense que les motrices seront détectées dans 90% des cas, on verra à l'usage.
en tout cas, l'essai valide l'utilisation du MICROBOT juste sous la voie dans le sens de la longueur pour une détection de convois.
Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 22:20

Il n'y a pas de relation entre le while et les attentes par delay().

Qu'est ce qui se passe quand tu mets 15s ?

Pourrais-tu copier coller ici le code tel qu'il est ?

Le capteur fait une mesure toutes les 2,5ms. Un wagon de 5cm devrait passer à presque 20m/s pour ne pas être vu. Ça devrait aller je pense Smile


Dernière édition par jlb le Ven 10 Jan 2014 - 22:35, édité 1 fois
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 22:28

voili voilou

Citation :


void loop()
{
 if (digitalRead(pinCapteur) == LOW) {
    // Un objet est présent au dessus du capteur
    // On démarre la séquence des feux
//on eteint le vert
 digitalWrite(ledVerte, LOW);
    /* Allume le rouge 15 secondes */
    digitalWrite(ledRouge, HIGH);
     /* Attend que le capteur soit démasqué */
    while (digitalRead(pinCapteur) == LOW);
    delay(15000);
    digitalWrite(ledRouge, LOW);

    /* Allume le orange 15 secondes */
    digitalWrite(ledOrange, HIGH);
    delay(15000);
    digitalWrite(ledOrange, LOW);
    /* Allume le vert */
    digitalWrite(ledVerte, HIGH);

 } // accolade qui ferme le if
// accolade qui ferme la fonction loop()


Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 22:32

Je ne vois rien qui cloche.

Qu'est ce qui se passe avec 15000 au lieu de 5000 ?
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Ven 10 Jan 2014 - 22:43

j'essaierai de voir cela demain pendant nos essais de modules sceNic.
Revenir en haut Aller en bas
SixtyFive
Membre
Membre
avatar

Masculin Age : 70
Localisation : 91340
Nombre de messages : 191
Date d'inscription : 21/12/2012

MessageSujet: Re: simulation semaphore 3 feux   Sam 11 Jan 2014 - 14:20

Excellente réalisation !
Je vais ajouter un de ces capteurs infrarouge à mon circuit car le placement sous la voie peut s'avérer plus facile qu'une barrière avec un émetteur et un récepteur de chaque côté de la voie.

On voit que le branchement d'un capteur se réduit à 3 fils (+5v, Gnd et Signal). C'est une sorte de standard en robotique. C'est ce qui rend l'Arduino très pratique.

En ce qui concerne l'anti-rebond, je vous invite à regarder mon dernier soft qui en contient un:

http://bultez.fr/public/TCO-Soft.zip

Si vous avez besoin d'explications, n'hésitez pas a me le demander.
Car j'avais besoin de garder le "temps réel" donc de ne pas utiliser les instructions "delay".
Revenir en haut Aller en bas
http://bultez.fr
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 13:03

résultats des essais d'hier. le fonctionnement a été un peu (  Rolling Eyes  ) erratique. avec recul et avis de corwin92, je pense plutôt à un problème matériel, déplacement du capteur, obstruction partielle du capteur. Je vais agrandir son emplacement dans le sens de la longueur et essayer en le déplaçant. Au pire ablation des traverses.
Revenir en haut Aller en bas
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 13:05

que se passe-t-il si la broche SLP n'est pas raccordée?
Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 13:21

Si elle flotte, elle chope le rayonnement électromagnétique ambiant et un coup le capteur fonctionne, un coup il est coupé. Par conséquent, OUT doit aussi se balader


Dernière édition par jlb le Dim 12 Jan 2014 - 13:34, édité 1 fois
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 13:29

jlb a écrit:
Si elle flotte, elle chope le rayonnement électromagnétique ambiant et un coup le capteur fonctionne, un coup il est coupé. Par conséquent, OUT soit aussi se balader
OUT est bien raccordée.
est ce FET non raccordée qui perturbe?
Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 13:33

FET non

Ce que je voulais dire est que si SLP est en l'air, le capteur va être ou non en veille selon le bruit électromagnétique et que par conséquent OUT va suivre en donnant des détections là où il n'y en a pas.

Si tu parles de SLP en l'air, je suppose que c'était le cas Smile Il était en l'air ou non ?

Quand tu parles de fonctionnement erratique, ça se traduit par quoi ? détection alors qu'il n'y a rien ? non détection ?
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 13:41

non SLP est bien branchée comme tu me l'a conseillé, sur sortie 6. Ainsi que je l'ai dit, je suis les consignes surtout sur des sujets que je suis loin de maitriser.

a un moment, j'ai eu détection sans rien avec un cycle rouge jaune rouge jaune. puis la même chose avec un passage éclair sur le vert. Puis plus tard dans l'après midi vert mais sans détection des machines, par contre détection quand passage d'un doigt au dessus du capteur.
Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 14:18

Ok, et donc tu as bien un

pinMode(pinSLP, OUTPUT);
digitalWrite(pinSLP, HIGH);

dans setup()

Citation :

a un moment, j'ai eu détection sans rien avec un cycle rouge jaune rouge jaune. puis la même chose avec un passage éclair sur le vert.

Les deux doivent être identiques. Le passage par le vert sur le premier a été tellement bref que tu ne l'as pas vu. Un faux positif. On peu corriger ça par logiciel en ne validant une détection que si il y a 2 lectures LOW avec un intervalle de disons 30ms. Essaye ça avant de charcuter tes traverses.

Donc au lieu d'avoir simplement :

Citation :

  if (digitalRead(pinCapteur) == LOW) {

          blah blah blah

  }


On utilise une variable permettant de se rappeler l'état précédent du capteur. Comme ceci :

Citation :

byte etatPrecedentCapeur = HIGH;

void loop()
{
  byte nouvelEtatCapteur = digitalRead(pinCapteur);
  
  if (nouvelEtatCapteur == LOW && etatPrecedentCapeur == LOW) {

          blah blah blah

  }
  
  etatPrecedentCapeur = nouvelEtatCapteur;
  delay(30); // entre 20 et 50 ms
}


De cette manière, il faut 2 lectures à LOW espacées de 30ms pour valider une détection

Citation :

Puis plus tard dans l'après midi vert mais sans détection des machines, par contre détection quand passage d'un doigt au dessus du capteur.

Je pense que la détection doit être limite limite avec du noir. La sensibilité doit sans doute varier selon la température ce qui explique ce comportement différent. Quand j'avais essayé avec un wagon, le dessous noir n'était pas détecté. J'ai bien peur qu'il faille mettre une étiquette blanche sous la locomotive.
Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 16:18

voilà, j'ai fait les corrections, cela donne ceci, pour vérification

Citation :

/* les numéros de pin des LED de manière à avoir leur couleur en clair dans le programme */
const int ledRouge = 2;
const int ledOrange = 3;
const int ledVerte = 4;
const int pinCapteur = 5;
const int pinSLP = 6;
void setup()
{
pinMode(pinSLP, OUTPUT);
  digitalWrite(pinSLP, HIGH);
   pinMode(pinCapteur, INPUT);
    pinMode(ledRouge, OUTPUT);
    pinMode(ledOrange, OUTPUT);
    pinMode(ledVerte, OUTPUT);
    digitalWrite(ledVerte, HIGH);
    digitalWrite(ledRouge, LOW);
   digitalWrite(ledOrange, LOW);
   byte etatPrecedentCapteur = HIGH;

}

void loop()
{
  byte nouvelEtatCapteur = digitalRead(pinCapteur);
 if (digitalRead(pinCapteur) == LOW) {
    // Un objet est présent au dessus du capteur
    // On démarre la séquence des feux
//on eteint le vert
 digitalWrite(ledVerte, LOW);
    /* Allume le rouge 15 secondes */
    digitalWrite(ledRouge, HIGH);
     /* Attend que le capteur soit démasqué */
    while (digitalRead(pinCapteur) == LOW);
    delay(15000);
    digitalWrite(ledRouge, LOW);

    /* Allume le orange 15 secondes */
    digitalWrite(ledOrange, HIGH);
    delay(15000);
    digitalWrite(ledOrange, LOW);
    /* Allume le vert */
    digitalWrite(ledVerte, HIGH);

 } // accolade qui ferme le if
 etatPrecedentCapteur = nouvelEtatCapteur;
 delay(30)
 //espacement de lecture en LOW pour detection
// accolade qui ferme la fonction loop()


avant que je compile et fasse televerser (en trimbalant le portable dans mon "atelier" pour le branchement USB sur l'arduino fixé sous le module  Laughing )
Revenir en haut Aller en bas
piston93
Membre
Membre
avatar

Masculin Age : 58
Localisation : seine st denis
Nombre de messages : 9513
Date d'inscription : 01/11/2007

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 16:21

le byte nouvelEtatCapteur = digitalRead(pinCapteur) est bien avant le if conditionnel?
Revenir en haut Aller en bas
jlb
Membre
Membre
avatar

Masculin Age : 54
Localisation : Ici
Nombre de messages : 1479
Date d'inscription : 31/12/2011

MessageSujet: Re: simulation semaphore 3 feux   Dim 12 Jan 2014 - 16:26

Le if est pas bon et il manque la déclaration de la variable etatPrecedentCapteur avant loop()

Comme ceci :

Citation :

byte etatPrecedentCapteur = HIGH;

void loop()
{
  byte nouvelEtatCapteur = digitalRead(pinCapteur);
  
  if (nouvelEtatCapteur == LOW && etatPrecedentCapteur == LOW) {
    // Un objet est présent au dessus du capteur
    // On démarre la séquence des feux
    // on eteint le vert
    digitalWrite(ledVerte, LOW);
    /* Allume le rouge */
    digitalWrite(ledRouge, HIGH);
    
    /* Attend que le capteur soit démasqué */
    while (digitalRead(pinCapteur) == LOW);
    
    /* Attend 15 secondes */
    delay(15000);
    digitalWrite(ledRouge, LOW);
    
    /* Allume le orange 15 secondes */
    digitalWrite(ledOrange, HIGH);
    delay(15000);
    digitalWrite(ledOrange, LOW);
    /* Allume le vert */
    digitalWrite(ledVerte, HIGH);
  }
  
  etatPrecedentCapteur = nouvelEtatCapteur;
  delay(30); // entre 20 et 50 ms
}

Revenir en haut Aller en bas
http://modelleisenbahn.triskell.org
Contenu sponsorisé




MessageSujet: Re: simulation semaphore 3 feux   

Revenir en haut Aller en bas
 
simulation semaphore 3 feux
Revenir en haut 
Page 5 sur 7Aller à la page : Précédent  1, 2, 3, 4, 5, 6, 7  Suivant
 Sujets similaires
-
» Feux d'artifice
» le fil à feux
» Modif grand feux ---> petit feux
» Ho! Les belles couleurs (feux d'artifice)
» système de feux stop "maison"

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 :: Electricité / Electronique-
Sauter vers: