Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Sujets - Alex2lain

Pages: [1]
1
Présentez vous ! / PROBLEME IR
« le: janvier 15, 2021, 09:18:40 am »
Bonjour !
Je suis assez basique en ARDUINO, mais je me débrouille tant bien que mal pour créer mes projets pour mon réseau.
En tout cas, mes projets fonctionnent toujours sur breaboard avant essai d'exploitation sur mon réseau.
La théorie :
Sur une voie en boucle, j'ai créé un canton simple, qui me permet d'avoir 2 trains qui ne se rattrapent jamais.
1ere ILS le train coupe l'alimentation du train suivant, et passe un feu au rouge.
2eme ILS située quelques mètres plus loin, ce même train remet l'alimentation sur la voie vers le feu rouge et remet le feu au vert.

Pour le code :


int R1 = 4;                       // PILOTAGE RELAIS VOIE
int R2 = 5;                       // PILOTAGE RELAIS FEUX
int ILS1 = 2;                     // IR INFRAROUGE AMONT
int ILS2 = 3;                     // IR INFRAROUGE AVAL
int detection1;                   // DETECTION IR AMONT
int detection2;                   // DETECTION IR AVAL

void setup() {
 
pinMode(R1, OUTPUT);              // DECLARATION PIN 4
pinMode(R2, OUTPUT);              // DECLARATION PIN 5
pinMode(ILS1, INPUT_PULLUP);      // DECLARATION PIN 2
pinMode(ILS2, INPUT_PULLUP);      // DECLARATION PIN 3

digitalWrite(R1, HIGH);           // ETAT INITIAL RELAIS VOIE
digitalWrite(R2, HIGH);           // ETAT INITIAL RELAIS FEUX
}

void loop() {

detection1 = digitalRead(ILS1);   // ILS1 DETECTE LE PASSAGE DU TRAIN
if (detection1 == 0){
  digitalWrite(R1, LOW);          // RELAIS R1 COUPE ALIMENTATION VOIE POSITION DEVANT FEUX
  digitalWrite(R2, LOW);          // RELAIS R2 ALIMENTE LE FEUX ROUGE
}
detection2 = digitalRead(ILS2);   // ILS2 DETECTE LE PASSAGE DU TRAIN ( POSITION DETERMINEE SUIVANT LONGUEUR TRAIN )
if (detection2 == 0){
  digitalWrite(R1, HIGH);         // RELAIS R1 ALIMENTE VOIE DEVANT FEUX
  digitalWrite(R2, HIGH);         // RELAIS R2 ALIMENTE LE FEUX VERT
}
}

Mon problème :
Suivant le type de loco présente sur mon réseau, et pas forcément sur la voie concernée, mon système devient instable, et fait a peu près ce qu'il veut sans respecter les IR.
J'ai essayé de protéger les IR pour ne pas avoir de passage parasite qui déclencherait inopinément le programme.
Après une longue analyse, une bonne prise de tête, j'en ai déduit une hypothèse, j'ai trouvé en particulier que mes anciennes locos jouef dès fonctionnement me perturbaient mon système.
Ma question :
Y a t il quelque chose a changer sur mon code pour protéger mon système de perturbations extérieures ?
J'ai essayé de poser un antiparasitage par diode TVS dans mes locos jouef sans amélioration.
Je bute sur ce problème...
J'ajoute que j'ai aussi une gare cachée automatisée par arduino et IR pour 4 voies, même symptôme, au bout d'un moment si vous me permettez ça déconne autant. ( Si quelqu'un est intéressé, je peux joindre mon code et image fritzing de ma gare cachée ).
Au secours ! et merci pour vos contributions...

Pages: [1]