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 | 
 

 Faire sa propre centrale DCC

Aller en bas 
Aller à la page : Précédent  1, 2, 3 ... 11, 12, 13
AuteurMessage
aneta
Membre
avatar

Masculin Age : 67
Localisation : rennes
Nombre de messages : 55
Date d'inscription : 23/12/2011

MessageSujet: Re: Faire sa propre centrale DCC    Mar 28 Oct 2014, 11:37

[quote="SixtyFive"]Voici la routine :

Code:
// -----------------------------------------------------
//                       RFID
// -----------------------------------------------------

void checkRFID1(void)
..........

C'est bien la routine  que j'ai déjà téléchargée sur ton site. Mais celle-ci n'est bien qu'un sous ensemble du programme général ?
amicalement
aneta
Revenir en haut Aller en bas
SixtyFive
Membre
Membre
avatar

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

MessageSujet: Re: Faire sa propre centrale DCC    Mar 28 Oct 2014, 15:37

Oui, on trouve le programme général ici

Il fait partie du contrôleur de circuit.
Revenir en haut Aller en bas
http://bultez.fr
aneta
Membre
avatar

Masculin Age : 67
Localisation : rennes
Nombre de messages : 55
Date d'inscription : 23/12/2011

MessageSujet: Re: Faire sa propre centrale DCC    Jeu 30 Oct 2014, 20:36

Bonsoir,
j'ai quelque peu avancé sur le projet :
https://youtu.be/mCVYOIT_ifU

j'ai conservé le principe de photocoupleurs en sortie de l'arduino pour rendre l'ensemble RFID isolé de ce que l'on pourrait y associer . De plus les leds me permettent de visualiser le bon fonctionnement des sorties.
Je souhaiterais améliorer mon sketch : la suite de " if (comparetag(newtag, tagxx ...." est " imbuvable" et serait plus propre remplacée par une boucle !!!
Mais bon : je débute complètement en Arduino .


#include
SoftwareSerial RFID(2, 3); // RX and TX

int data1 = 0;
int ok ;
int numtrain ;
int i=0;
int PIN[8];
// les tags de chaque train : ( 3 trains dans ce sketch)
int tag1[14] = {2,48,65,48,48,56,55,70,52,49,70,54,54,3};
int tag2[14] = {2,48,67,48,48,52,65,55,54,67,57,70,57,3};
int tag3[14] = {2,48,66,48,48,51,70,52,68,51,68,52,52,3};
int newtag[14] = { 0,0,0,0,0,0,0,0,0,0,0,0,0,0}; // used for read comparisons

void setup()
{
// initialisation :envoie une commande à chaque sortie l'une après l'autre ( fait allumer les leds de contrôle  en )
// seul le premier klaxon sera diffusé !
for(i = 0; i < 8; i++)
   {
       PIN = i+4;
       pinMode(PIN[i], OUTPUT);
     digitalWrite(PIN[i], LOW);   // led ON
 delay(90);               // wait for a 1/16 second
 digitalWrite(PIN[i], HIGH);    // LED OFF
 //delay(10);               // wait  
   }
 
 
 
 
 
 
 RFID.begin(9600);    // start serial to RFID reader
 Serial.begin(9600);  // start serial to PC

}

boolean comparetag(int aa[14], int bb[14])
{
 boolean ff = false;
 int fg = 0;
 for (int cc = 0 ; cc < 14 ; cc++)
 {
   if (aa[cc] == bb[cc])
   {
     fg++;
   }
 }
 if (fg == 14)
 {
   ff = true;
 }
 return ff;
}

void checkmytags() // comparaison du tag lu avec le tag de chaque train enregistré
{
 ok = 0; // on met la variable à 0 et maintenant :
 // ok sera egal à 1 si on a trouvé le train correspondant, et à 0 si on a rien trouvé. Et là il y'a un problème !!
 // -1 s'il y a eu un pb de lecture
 if (comparetag(newtag, tag1) == true)
 {
   ok=1;
   numtrain =1;
   
   
   
 }
 if (comparetag(newtag, tag2) == true)
 {
   ok=1;
   numtrain =2;
   
   
 }
 if (comparetag(newtag, tag3) == true)
 {
   ok=1;
   numtrain =3;
   
   
 }
 
 
}

void readTags()
{
 ok = -1;

 if (RFID.available() > 0)
 {
   // lecture du tag qui passe
   delay(100); // pause pour laisser acquerir les data venant du port série
   for (int z = 0 ; z < 14 ; z++) // lit le contenu
   {
     data1 = RFID.read();
     newtag[z] = data1;
   }
   RFID.flush(); //  empeche multiple lecture

   // à quel train appartient ce tag ?
   checkmytags();
 }

 // et maintenant si c'est bon on active la sortie correspondante
 if (ok == 1)
 {
  // controle sur ecran
  Serial.print("train : ");
  Serial.print(numtrain);
   Serial.print("\n");
   // activation de l'optocoupleur et/ou allumage de la led correspondante
   digitalWrite(PIN[numtrain], LOW);   // led ON
 delay(90);              
 digitalWrite(PIN[numtrain], HIGH);    // LED OFF
 


 }
 else if (ok == 0) // On n'a pas trouvé de correspondance :
 //il y a un problème de saisie des chiffres des tags enregistrés !!
 {
 
 }
}

void loop()
{
 readTags();
}

[/i][/i][/i]
Revenir en haut Aller en bas
Trusty
Membre
Membre
avatar

Masculin Age : 56
Localisation : Melun
Nombre de messages : 904
Date d'inscription : 08/10/2012

MessageSujet: Re: Faire sa propre centrale DCC    Ven 31 Oct 2014, 08:02

Bien joué ! Le concept est plutôt sympa. Une suggestion d'amélio pour ta fonction de comparaison de tag:

Code:
boolean comparetag(int aa[14], int bb[14])
{
 for (int cc = 0 ; cc < 14 ; cc++)
 {
   if (aa[cc] != bb[cc])
   {
     return false;
   }
 }

 return true;
}

Ça accélérera un peu la comparaison en sortant dès qu'un entier n'est pas le même...

Autre optimisation pour checkmytags:

Code:
int checkmytags() // comparaison du tag lu avec le tag de chaque train enregistré
{
 // le retour sera égal au numéro du tag, ou à -1 si pas trouvé ou problème de lecture.
 if (comparetag(newtag, tag1) == true)
 {
   return 1;
 }

 if (comparetag(newtag, tag2) == true)
 {
   return 2;
 }

 if (comparetag(newtag, tag3) == true)
 {
   return 3;
 }

 return -1; // Si pas trouvé !
}

Cette nouvelle version évite le besoin de déclarer les variables globales ok et numtrain, ce qui est un bon principe de programmation.

Plus loin, tu peux écrire
Code:
int numtrain = checkmytags();
Revenir en haut Aller en bas
http://www.lapajaparis.net
aneta
Membre
avatar

Masculin Age : 67
Localisation : rennes
Nombre de messages : 55
Date d'inscription : 23/12/2011

MessageSujet: Re: Faire sa propre centrale DCC    Ven 31 Oct 2014, 10:09

Trusty a écrit:
Une suggestion d'amélio pour ta fonction de comparaison de tag:


Merci !
je m'en vais faire ....

amicalement

aneta
Revenir en haut Aller en bas
SixtyFive
Membre
Membre
avatar

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

MessageSujet: Re: Faire sa propre centrale DCC    Sam 03 Jan 2015, 18:31

Une idée m'est venue pour autoriser 2 détecteurs RFID sur le circuit:
Encadrer chaque détecteur RFID par 2 détecteurs infrarouge (barrière IR). Le tout en tunnel pour le cacher.

Principe: chaque détecteur IR détecté l'arrivée d'un train à proximité du détecteur RFID. Celui-ci est alors activé, puis désactivé aussitôt un train reconnu.
Le deuxième détecteur IR permet de connaître aussi le sens de déplacement du train (indispensable pour une double voie)

Sauf exception rare, les 2 détecteurs RFID ne devraient pas être activés en même temps, donc fonctionner correctement.

Je vais tester ça bientôt

A+
Revenir en haut Aller en bas
http://bultez.fr
aneta
Membre
avatar

Masculin Age : 67
Localisation : rennes
Nombre de messages : 55
Date d'inscription : 23/12/2011

MessageSujet: Re: Faire sa propre centrale DCC    Dim 04 Jan 2015, 11:33

Tout d'abord,
Bonne et heureuse année 2015 !!
J'ai terminé et mis en service le système RFID que j'interfacerai peut être un jour avec CDM RAIL http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=91&t=1551&start=10#p26040.
C'est vrai que c'est  bluffant !
D'ici quelques mois je vais installer un second lecteur à l'autre bout du réseau (3m environ). Et là je verrai les problèmes dont tu parles !
amicalement
aneta
Revenir en haut Aller en bas
SixtyFive
Membre
Membre
avatar

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

MessageSujet: Re: Faire sa propre centrale DCC    Jeu 23 Avr 2015, 07:19

Au passage je signale à tout le monde la sortie du dernier article sur la centrale va-et-vient à base d'Arduino, qui se trouve sur Locoduino.

Le soft complet est décrit et contient bon nombre de trucs et astuces qui peuvent servir dans vos projets.

Je reste toujours déterminé à construire un réseau 100% Arduino.

Amicalement
Dominique
Revenir en haut Aller en bas
http://bultez.fr
SixtyFive
Membre
Membre
avatar

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

MessageSujet: Re: Faire sa propre centrale DCC    Mar 26 Déc 2017, 18:52

Toujours plus fort et plus loin !

J'ai presque fini ma dernière version de centrale DCC, basée sur DCCpp de Thierry et Gregg.

Il y a de multiples possibilités de pilotage de 12 machines simultanément. Je vous laisse découvrir ma dernière centrale DCCpp
Revenir en haut Aller en bas
http://bultez.fr
pn200
Membre
Membre


Masculin Age : 67
Localisation : Saint Amand
Nombre de messages : 253
Date d'inscription : 24/12/2013

MessageSujet: Re: Faire sa propre centrale DCC    Mar 26 Déc 2017, 20:50

Bonsoir SixtyFive
J'ai fait la centrale pour une loco qui fonctionne bien. 2 petits problèmes de matériel qui m'ont fait chercher la cause + un avec le code, j'avais mis 2 points au lieu de point virgule. Je ne pense pas faire celle-là (même en recopiant), car la moindre erreur sera une galère à dépanner. Sur ton plan le fil "courant" du MAX 471 est le même que le fil "MAX 471" sur A0 du Mega? Combien de temps mets-tu a la faire, montage + code
Revenir en haut Aller en bas
SixtyFive
Membre
Membre
avatar

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

MessageSujet: Re: Faire sa propre centrale DCC    Mar 26 Déc 2017, 21:34

Bonjour pn200,

pn200 a écrit:
Bonsoir SixtyFive
J'ai fait la centrale pour une loco qui fonctionne bien. 2 petits problèmes de matériel qui m'ont fait chercher la cause + un avec le code, j'avais mis 2 points au lieu de point virgule. Je ne pense pas faire celle-là (même en recopiant), car la moindre erreur sera une galère à dépanner. Sur ton plan le fil "courant" du MAX 471 est le même que le fil "MAX 471" sur A0 du Mega? Combien de temps mets-tu a la faire, montage + code

Oui le fil "courant" du MAX 471 est bien le même que le fil "MAX 471" sur A0 du Mega.

Pour monter cette centrale, le plus long est de rassembler les éléments (notamment les potentiomètres professionnels) et de concevoir la réalisation mécanique adaptée à ton réseau. Et surtout il faut savoir ce qu'on veut faire avec.
Ton cahier des charges n'est pas forcément le même que le mien.

Te donner un temps est difficile car elle n'est pas encore tout à fait terminée. Je procède par étape pour valider les sous-ensembles les uns après les autres (attendre que tout soit connecté avec l'ensemble du logiciel est assez suicidaire).

J'ai réalisé pas mal de programmes intermédiaires pour tester le clavier tactile d'une part, trouver l'astuce de la combinaison des boutons poussoirs et des leds sur la même broche du Mega, etc..
De plus j'avais déjà réalisé le logiciel CAN que je vais encore améliorer.
J'ai mis de coté la manette sans fil à base de NRF24, pour un peu plus tard.
Le configurateur a aussi été source de recherches pour combiner les éléments et que ça marche.
En plus je dois faire quelques mesures de performance pour voir si c'est bien stable et sûr.

Je te conseille plutôt de faire comme moi : maitriser et mettre au point les éléments les uns après les autres et cela t'apprendra plein de choses réutilisables ailleurs. D'ailleurs je vais décrire le soft d'abord élément par élément, et ne donner le soft final complet qu'à la fin, dans 1 ou 2 mois.
Copier le soft complet sans comprendre ne serait pas raisonnable !!!
Revenir en haut Aller en bas
http://bultez.fr
Contenu sponsorisé




MessageSujet: Re: Faire sa propre centrale DCC    

Revenir en haut Aller en bas
 
Faire sa propre centrale DCC
Revenir en haut 
Page 13 sur 13Aller à la page : Précédent  1, 2, 3 ... 11, 12, 13
 Sujets similaires
-
» Faire son propre Café-Tricot
» faire son propre mannequin (ter)
» [Aide]Comment faire sa propre bootanimation?
» Faire sa propre rom wm6.5 (WWE)
» peut-on faire nos propre dies ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
1/160 - Echelle N :: Exploitation :: Le numérique-
Sauter vers: