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.


Messages - Dominique

Pages: 1 ... 149 150 [151] 152 153 ... 187
2251
Les réseaux / Re : Projet Dominique
« le: juillet 21, 2017, 07:46:50 pm »
Je reprends doucement la description de mon réseau !

Nous en étions aux détecteurs d'occupation qui sont reliés, chez moi, au TCO physique. J'avais aussi parlé du module de commandes d'aiguilles, du module de traction et du gestionnaire.

Au départ je n'avais pas idée de la manière de gérer l'ensemble du réseau par un gestionnaire, je ne soupçonnais pas l'étendue de la complexité et le nombre de choses à relier ensemble.

C'est pour cela que le découpage en modules reliés par un bus CAN m'a semblé idéal.

Pour mettre les idées en place, les rôles du module TCO physique (avec des leds et des clés) devait :
  • représenter l'ensemble du réseau de façon simple
  • récupérer les occupations et allumer une led rouge dans la zone de la détection
  • permettre de commander les aiguilles
  • visualiser le sens droit ou dévié de chaque aiguille par une led verte allumée du bon coté
  • envoyer des messages au gestionnaire à chaque changement d'occupation ou de libération
  • envoyer des messages au gestionnaire à chaque changement de clé d'aiguille
  • recevoir des messages du gestionnaire pour allumer les leds d'aiguille

Il a donc fallu définir un certain nombre de messages CAN comme ceci :

Id CAN en Reception :
  • Id = 20H (commande de led clef)
  • Id = 21H (demande d'état de toutes les clefs)
Id CAN en  Emission :
  • Id = 11H (clef d'aiguille)
  • Id = 10H (occupations)

Je reviendrai plus loin sur les valeurs des octets de message qui suivent l'ID (maximum 8 octets, je n'utilise qu'un seul octet en général).

Le choix des messages CAN est très structurant pour le projet. Mon choix n'est pas le seul possible, il faut bien choisir un jour. Car cela définit les filtres CAN, les fonctions d'émission et réception et le traitement des messages reçus (parsing en anglais, mot qui revient souvent sur Locoduino), que l'on retrouvera partout dans les modules du réseau.

J'ai donc :

Une routine d'interruption qui se charge de récupérer tous les messages CAN acceptés dans une mémoire tampon :
/*
 *  ISR CAN
 */
 
void MCP2515_ISR()
{
     Flag_Recv = 1;
}

/*
 * Routine de récuperation des messages CAN dans la memoire circulaire _Circule
 * appelee par LOOP lorsque Flag_Recv = 1;
 */
 
void CAN_recup()
{
  unsigned char len = 0;                // nombre d'octets du message
  unsigned char buf[8];                 // message
  unsigned char Id;                     // Id

  while (CAN_MSGAVAIL == CAN.checkReceive())  {
    CAN.readMsgBuf(&len, buf);          // read data, len: data length, buf: data buf
    Id = CAN.getCanId();
    if ((_Ncan+len+2) < sizeof(_Circule))  { // il reste de la place dans _Circule
      _Circule[_indexW] = Id;           // enregistrement de Id
      _indexW++;
      _Ncan++;
      if (_indexW == sizeof(_Circule))  {_indexW = 0;}
      _Circule[_indexW] = len;          // enregistrement de len
      _indexW++;
      _Ncan++;
      if (_indexW == sizeof(_Circule))  {_indexW = 0;}
      for (byte z = 0; z<len; z++)  {
        _Circule[_indexW] = buf[z];      // enregistrement du message
        _indexW++;
        _Ncan++;
        if (_indexW == sizeof(_Circule))  {_indexW = 0;}
      }
    } else {
      _CANoverflow = 1;   // depassement de la capacite de Circule
                          // message perdu (pas enregistré dans Circule)
    }
  }
}


Et le traitement des messages CAN dans la loop :
  /*
   *  traitement des messages dans le buffer _Circule
   */
   
  while (_Ncan > 2)  {                // messages dans _Circule : au moins 3 bytes
    //digitalWrite(LedV, HIGH);       // led activité CAN reste allumée jusqu'à loop suivante
    _Ncan--;
    RId = _Circule[_indexR];          // recup Id
    _indexR++;
    if (_indexR == sizeof(_Circule))  {_indexR = 0;}
    _Ncan--;
    Rlen = _Circule[_indexR];         // recup longueur
    _indexR++;
    if (_indexR == sizeof(_Circule))  {_indexR = 0;}
    if (_dumpCan)  {     
      Serial.print("CAN id ");
      Serial.print(RId);
      Serial.print(", data ");
    }
    for (int k = 0; k < Rlen; k++)  {
      _Ncan--;
      Rbuf[k] = _Circule[_indexR];  // recup octets message
      _indexR++;
      if (_indexR == sizeof(_Circule))  {_indexR = 0;}
      if (_dumpCan)  { 
      Serial.print("0x");
      Serial.println(Rbuf[k], HEX);
      }
    } // le message est dans les globales RId, Rlen et Rbuf[..]
    curCLEF = Rbuf[0] & 0x3F;       // garder que les bits 0..5 = index aiguille
   
    if (RId == RId_TCO_Clef)  {
      // 1 octet donnees:  bit 7,6 -> 1,1 et 5..0 -> 3F = envoi etats toutes clefs               
      if (curCLEF == 0x3F) {          // commande de lecture etats
        if (bitRead(Rbuf[0], 7)) {
          if (bitRead(Rbuf[0], 6)) {  // demande etat toutes clefs (data = 0xFF)
            EnvoiCAN_toutesClefs();
          }
        }
      }
    }
    if (RId == RId_TCO_Led)  {
      // 1 octet donnees:  bit 7,6 -> 0,0 = devie ou 0,1 = droit, bits 5..0 = numero clef
      if (!bitRead(Rbuf[0], 7)) {    // bit 7=0, commande de positionnement de Led sur une Clef d'aiguille
        if (curCLEF < MaxCLES) {     // numero de clef
          ListeClef[curCLEF].LedUpdate(bitRead(Rbuf[0], 6)); // bit 6 = position
          //affiche_vertes();      // affichage vertes + rouges plus loin
          if (_dumpCan) {
            Serial.print(" CAN : curCLEF ");Serial.print(curCLEF);
            Serial.print(" Aiguille "); Serial.print(ListeClef[curCLEF].NomClef());
            if (bitRead(Rbuf[0], 6)) {
              Serial.println(" DROIT");
            } else {
              Serial.println(" DEVIE");
            }
          }
        }                             
      }   
    }                                // fin changement leds aiguilles 
  }                                  // fin traitement messages CAN (while)

Les clés et les zones sont décrites sous forme d'objets comme on peut le voir dans le traitement ci-dessus.

Ma premiere réalisation (toujours en place sur le réseau) se limitait à 19 aiguilles (dont 2 TJD) donc avec 19 clés. Mon plan de découpage en zones se limitait à 42 zones.

Il se trouve que la prise en compte des signaux, des itinéraires, les possibilités de manoeuvres offertes par le Gestionnaire que j'avais un peu de mal à appréhender par manque d'expérience, sont devenus maintenant beaucoup plus clairs grâce à l'aide de Pierre59.

Cela a entrainé un certain nombre de modifications qui ne remettent pas en cause les développements matériels et logiciels que j'avais fait, grâce au découpage en modules et aux communications CAN.

Je reviendrai donc sur ces évolutions après la description du TCO.

2252
Présentez vous ! / Re : nouveau et plein de projets
« le: juillet 21, 2017, 06:52:41 pm »
Bonjour Yves,

Bienvenue sur Locoduino qui, j'en suis certain, t'aidera à trouver les solutions souhaitées et te permettra d'aider d'autres modélistes en retour.

J'avoue que j'ai trouvé tes premières questions un peu décousues, mais ce n'est pas grave, c'est un premier contact.

Citer
Arduino sauve moi !!!
Je suis parti sur une horloge et un séquenceur et amplificateur de puissance (555 et 4017 puis 4050 et  3 régulateurs de vitesse)

en fait je ne comprends pas comment faire pour le train  (et ma crèche) comment incrémenter les borne de 1 à 10 fixe (pas clair!!)

Je débute en Arduino et regardé les autres forums (malheureusement pas de train)
en gros je voudrais envoyer une commande fixe numérique sur 1 puis le 1 maintenu, le 2 puis le 2 maintenu et 3 et jusqu'à 10 voir 9 et tout remettre à zéro puis recommencer.

Certain font int pour déclarer les sorties avant void
pour le reste pas facile !!!

de l'aide Merci

- des Arduino pour quoi faire ?
- comment faire pour le train, faire quoi ?
- une commande fixe numérique sur 1 puis le 1 maintenu ...!?!

Le plus simple est de poser une question à la fois en précisant le contexte, avec un schéma pour présenter les éléments en présence.

Il y a aussi dans Locoduino (partie éditoriale, www.locoduino.org des articles sur la programmation de différents niveaux. Dis nous s'il manque quelque chose.

Au plaisir de te lire prochainement

Dominique

2253
Shields et Modules / Re : Adafruit Audio FX Sound Board
« le: juillet 18, 2017, 07:41:39 am »
J'ai commandé cette carte http://www.ebay.fr/ulk/itm/141927599236 , qui devrait arriver bientôt.
On verra ce que ça vaut côté sonore.

2254
Vos projets / Re : Rétro-signalisation
« le: juillet 14, 2017, 07:43:14 pm »
Bravo Jacques,

La persévérance paie toujours et la récompense est toujours là à la fin :).

Je pense que tu sais qu'on n'avait pas beaucoup de chance de trouver l'anomalie à ta place. Mais le fait que tu exposes ton problème t'amène généralement à la solution, même si on ne fait rien d'autre que t'embêter à poser des questions ou te demander un schema.

C'est une bonne expérience partagée sur Locoduino... Et il y en aura d'autres ...

Amicalement
Dominique

2255
Vos projets / Re : Essai manette DCC++ en C++
« le: juillet 14, 2017, 02:35:08 pm »
Pas de souci pour le $ : quand tu choisis le modèle, le prix passe en € (sur eBay.fr) et le port est gratuit.

Juste un truc, il faut installer le driver CH340 en PJ sur OSX El Capitan et suivants (il est enfin signé avec Apple).
http://download.makeblock.com/mblock/CH34x_Install_V1.3.pkg

2256
Vos projets / Re : Essai manette DCC++ en C++
« le: juillet 14, 2017, 01:32:27 pm »
Et ça tombe bien, avec ce DCCduino à 3,10€ !
http://www.ebay.fr/ulk/itm/311155383820

2257
Vos projets / Re : DCC_DC_CABLAGE
« le: juillet 13, 2017, 12:06:27 pm »
Merci Marcel,

Voilà un paquet d'informations des plus utiles auxquelles nous pourrons nous référer.

Amicalement
Dominique

2258
Vos projets / Re : Essai manette DCC++ en C++
« le: juillet 12, 2017, 11:20:39 pm »
Je n'avais pas testé depuis presque 1 an. Entre temps Processing a évolué : je vais regarder cela ASAP

Désolé
Dominique

2259
Vos projets / Re : Essai manette DCC++ en C++
« le: juillet 12, 2017, 06:19:11 pm »
Et bien ça tombe bien car un article y est consacré pour commencer la prise en main et il y en a d'autres qui suivent  ;D

http://www.locoduino.org/spip.php?article219

J'avais fait une petite manette l'année dernière pour tester DCC++ :


2260
Vos projets / Re : Une micro-camera sur un Wagon à l'échelle N !!!
« le: juillet 12, 2017, 06:11:53 pm »
Je viens de recevoir ma deuxième caméra : elle fonctionne aussi et j'ai réussi à démonter et remonter le boitier.
Je ne vois pas à quoi sert le simili objectif emboité devant, qui semble transparent, sinon à protéger le capteur.

L'objectif maintenant c'est de monter la caméra sur un wagon à vraies bogies qui tournent dans les virages et d'associer le capteur à la bogie de l'avant pour mieux filmer dans les virages.

On s'amuse comme des gamins  ::) ;) ;D

2261
D'après Wikiêdia, la tenue en tension d'un supercondensateur (GoldCaps est une marque de Panasonic) est limitée par la décomposition du solvant organique qui joue le rôle du diélectrique. Elle est actuellement de l'ordre de 2,7 V.
Mais j'en ai vu de 5,5V chez Conrad, probablement 2 cellules en série

W=1/2C*U2

Supercondo 3F, 2,7V :W = 11 Joules
condo 2200µF, 25V   : W = 0,69 Joules  -> 16 fois moins ! Mais à 25V !

Je ne comprends pas bien le rôle de la tension, car dans les 2 cas ils se branchent sur les même pins du décodeur ?!?

2262
Vos projets / Re : TESTEUR pour OPTOCOUPLEURS 4N35 ET 6N137
« le: juillet 11, 2017, 07:52:38 pm »
Bonjour Marcel,

Ton programme décodeur de signaux DCC avec cet affichage des messages est très intéressant.

Je vais le tester de mon coté.
Ensuite je verrais bien une petite extension de l'article 39.

D'autant qu'il n'utilise aucune bibliothèque et est en français ;)
Et il a l'air facilement adaptable à toutes sortes de besoins spécifiques.

Merci pour ce partage.
Dominique

2263
Je parie que c'est exclu pour le N  :-[

2264
Vos projets / Re : Rétro-signalisation
« le: juillet 10, 2017, 07:40:41 pm »
Ok, désolé mais je ne comprends pas vos explications donc je ne peux pas vous aider plus.

Vous avez fait quelques investigations qui ont conduit à des résultats positifs. Je pense que vous serez capable de continuer par vous-même.

2265
Dans un même ordre d'idée, pourquoi ne pas utiliser le courant porteur CPL pour communiquer en TCP/IP sur des voies alimentées en continu.

Cela réduirait les parasites et rayonnements du PWM ou DCC.

Au niveau miniaturisation, il faut comparer.

Pages: 1 ... 149 150 [151] 152 153 ... 187