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 - Jean-Luc

Pages: 1 ... 81 82 [83] 84 85 ... 93
1231
Shields et Modules / Carte Servomoteurs DCC + CAN
« le: janvier 14, 2016, 06:12:22 pm »
Bonsoir,

J'ai été hors course ces derniers temps mais je ne suis pas resté complètement inactif.

Voici donc une carte destinée à piloter 8 servomoteurs et raccordable au bus DCC et au bus CAN.

La carte comporte
- une alimentation pour les servos (un 7805, certains modèles délivrent 1,5A)
- un Arduino Nano
- un contrôleur CAN et un transceiver
- une interface DCC
- 2 connecteur RJ11 pour le CAN
- un bornier pour le DCC
- un bornier pour l'alim 9 à 12V
- 8 connecteurs pour les servos
- optionnellement un expandeur d'I/O pour lire des fins de course
- J'ai casé un détecteur de coupure d'alim pour la sauvegarde en EEPROM

J'ai réussi à tout faire tenir sur une carte 10x5 cm

Voici les schémas : http://www.locoduino.org/pic/carteServoCANDCC/schematique.pdf

Les typons :

Recto





Verso





Le logiciel reste à faire. Il se basera sur SlowMotionServo

1232
Vos projets / Re : Contrôle numérique des aiguillages
« le: janvier 14, 2016, 08:22:58 am »
Bonjour,

Concernant la sauvegarde de la position courante, il s'agit de la position extrême : droite ou déviée (je pense là à des servomoteurs plutôt). En admettant que la position d'un aiguillage change toutes les 5 secondes (ce qui est une borne très très supérieure), 100000 écritures permettent 140 heures de fonctionnement environ. À cela on peut ajouter l'utilisation de techniques de tampon circulaire sur l'EEPROM afin de repartir les écritures sur plusieurs cases, technique présentée dans une application note de ST signalée par Marc-Henri. En l'occurrence, on serait à 1000h avec une EEPROM d'1ko qui serait entièrement libre pour cette sauvegarde.

Enfin, il existe des composants de détection de chute de tension comme le TC54VX43 (composant 3 broches que l'on trouve en boîtier TO92). Quand la tension chute en deçà de 4,3V, la sortie passe à 0. Il s'agit donc de connecter ce composant sur une entrée d'interruption et, dans la routine d'interruption, de faire la sauvegarde de l'état dans l'EEPROM. Il faut, bien entendu, s'assurer que le temps restant avant que le micro se plante à cause de la baisse de tension est suffisant pour effectuer la sauvegarde.

1233
Débuter / Re : Re : commande servo par inter
« le: janvier 02, 2016, 07:38:25 pm »
Ah mais oui mais non.

Reprend le code avec la boucle. J'ai fait une erreur, j'ai mis i au lieu de numServo

void loop()
{
  int numServo;
 
  for (numServo = 0; numServo < 4; numServo++)
    gereServo(numServo);
 
  for (numServo = 0; numServo < 4; numServo++) {
    byte positionInterrupteur = digitalRead(brocheInterrupteurPourServo[numServo]);
    if (positionInterrupteur == LOW) {
      evenementServo_DROIT(numServo);
    }
    else {
      evenementServo_DEVIE(numServo);
    }
  }
  delay(3);
}

1234
Débuter / Re : Mise à jour
« le: janvier 02, 2016, 11:34:00 am »
Bonjour et meilleurs vœux pour 2016.

Désolé de répondre un peu tardivement.

Quand la petite fenêtre s'affiche, cliquez sur le lien Bibliothèques. Puis dans la fenêtre qui apparaît, sélectionnez en cliquant chacune des bibliothèques. Un bouton de mise à jour apparaît.

1235
Débuter / Re : commande servo par inter
« le: janvier 02, 2016, 11:13:18 am »
Bonjour et meilleurs vœux pour 2016.

Bon, si j'ai bien compris tu souhaites remplacer les 8 poussoirs par 4 interrupteurs deux positions. Il faut donc 4 broches : A0 à A3 (qui peuvent être utilisées en numérique).

En fait c'est beaucoup plus simple que ce que j'ai écrit, tu n'as pas à gérer un événement (la pression sur le poussoir). Il suffit de lire l'état de l'interrupteur et d'en déduire la vitesse pour chaque servo. Le corollaire est que la fonction lirePoussoirs() ne convient pas dans sa philosophie puisqu'elle est conçue pour ne rendre compte d'un événement sur un seul bouton.

Donc : suppression pure et simple de lireEvenement() et de lirePoussoirs(). Suppression des variables ancienAx et nouveauAx. Déclaration d'un tableau reliant un servo et son numéro à la broche où est connecté l'interrupteur qui le commande :

const byte brocheInterrupteurPourServo[4] = {
  A0,
  A1,
  A2,
  A3
};

Dans setup initialisation de ceci en INPUT_PULLUP

for (byte i = 0; i < 4; i++) {
  pinMode(brocheInterrupteurPourServo[i], INPUT_PULLUP);
}

Dans loop au lieu d'avoir :

void loop()
{
  int numServo;
 
  for (numServo = 0; numServo < 4; numServo++)
    gereServo(numServo);
 
  byte evenement = lireEvenement(&numServo);
 
  if (evenement == EVENEMENT_PRESSE)
    evenementServo_DROIT(numServo);

  if (evenement == EVENEMENT_RELACHE)
    evenementServo_DEVIE(numServo);
   
  delay(3);
}

on a :

void loop()
{
  int numServo;
 
  for (numServo = 0; numServo < 4; numServo++)
    gereServo(numServo);
 
  for (numServo = 0; numServo < 4; numServo++) {
    byte positionInterrupteur = digitalRead(brocheInterrupteurPourServo[i]);
    if (positionInterrupteur == LOW) {
      evenementServo_DROIT(numServo);
    }
    else {
      evenementServo_DEVIE(numServo);
    }
  }
  delay(3);
}

les fonctions evenementServo_DROIT et evenementServo_DEVIE sont fausses. Lorsque le servo n'est pas en mouvement, le système est bloqué, plus rien ne réagit. Je te laisse corriger ça.

1236
Vos projets / Re : Un Arduino par module....ou pas.
« le: janvier 01, 2016, 07:50:11 pm »
Bonsoir et meilleurs vœux pour 2016.

Le but est de passer de 0 à 255 sur une durée de T. On calcule donc l'intervalle de temps entre deux augmentations (ou diminutions) de 1. C'est T/255. En effectuant ceci 255 fois, on passe de 0 à 255 (ou l'inverse) et ça dure T. C'est pourquoi la ScheduleTable est lancée pour 255 cycles.

1237
Bus CAN / Re : BreakoutBoard CAN
« le: décembre 07, 2015, 02:29:40 pm »
Bonjour,

Effectivement certains élément peuvent ne pas servir. La carte a été conçue pour être universelle.

- K5 a été mis pour pourvoir brancher facilement un oscillo ou un analyseur logique. Notamment SOF qui permet de synchroniser avec le début de trame
- le bouton reset à été mis par sécurité
- le diviseur de tension sur RX permet de brancher un micro 3,3V
- si on a un DUE qui intègre un contrôleur CAN, il suffit d'utiliser le 2551 et on ne monte pas.

Dans mon esprit, cette carte n'est pas destinée à du déploiement mais à de la mise au point (du moins pour moi)

La résistance de tirage est utile pour ne pas que TX flotte et que le bus CAN reçoive des bits aléatoires tant que le 2515 n'est pas initialisé.

Par contre il faut monter la circuiterie de RESET pour assurer le démarrage du 2515. Si il plante, le reset via SPI n'aura aucun effet je pense.

1238
Shields et Modules / Re : Carte 4 cantons DCC
« le: novembre 22, 2015, 05:44:37 pm »
Denis,

Une diode 1N400x coûte 1,3c par 100+

C'est beaucoup moins cher qu'un réseau de diodes intégré.

1239
Shields et Modules / Re : Conception de circuits imprimés et pooling ?
« le: novembre 22, 2015, 05:40:50 pm »
Bonjour,

Je grave mes circuits moi-même (de moins en moins) et je les fait également fabriquer (de plus en plus). J'ai acheté il y a plusieurs années le kit de gravure de Micromodèles. Je n'opposerais pas les deux techniques, elles ont chacune leurs avantages et leurs inconvénients.

1) graver soi-même, les avantages :

- plaisir de faire
- taille au choix
- délais de réalisation

2) graver soi même, les inconvénients :

- comme le dit jac56 : le perçage, pénible, pas précis, incompatible avec les grands connecteurs. Mais j'utilise des forets au carbure qui glissent moins et sont plus précis. Ici : http://www.tme.eu/fr/katalog/outils-electriques-et-accessoires_100170/#id_category=100116&s_field=artykul&s_order=ASC&visible_params=2465%2C2%2C2540%2C880%2C329%2C139&used_params=2%3A70255%3B  Vérifier également que les typons sortent bien à la bonne taille. Ayant confiance dans la laser du boulot, j'ai raté une carte parce que 1% plus grande que prévu et que j'avais des grands connecteurs au pas de 2,54mm
- la chimie. C'est tout un binz à transférer, à stocker, ... Je n'aime pas trop
- on oublie le double face, le vrai (trou métallisés, vias)
- on oublie la série
- pas de sérigraphie
- la soudure se fait moins facilement car pas étamé.
- on passe une piste entre deux pastilles au pas de 2,54mm mais pas plus

3) faire fabriquer, les avantages :

- c'est nickel, tout est aligné.
- soudure très facile.
- double face trous métallisés, vias.
- finesse permettant une grande densité de piste, inatteignable en DIY
- sérigraphie.
- nickel pour de la petite série.

4) faire fabriquer, les inconvénients :

- contraint à des dimensions prédéterminées si on veut payer peu cher. Typiquement 10x10,
- délais de réalisation (10 jours environ, transport compris),
- 10 exemplaires mini.

Mais on ne fait pas la même chose non plus, l'accès au double face change la vie. La finesse de gravure permet facilement de faire tenir sur une carte 10x10 ce qui nécessiterait une 16x10 en simple face.

Concernant le prix, la réalisation est très abordable. Une série de 10 cartes 10x10 coûte environ 25€ port compris.


1240
Vos projets / Re : Un Arduino par canton
« le: octobre 09, 2015, 11:03:52 pm »

1241
Vos projets / Re : Un Arduino par canton
« le: octobre 09, 2015, 03:56:05 pm »
Bonjour,

Je recolle au peloton après une longue période d'occupation professionnelle intense.

Citer
Quelle est la valeur brute typique de la tension mesurée à l'entrée ?

Sur une loco H0, ça peut monter à 10V

Citer
Comment les ampli ops gèrent-ils les écarts de masse ? J'avoue ne pas être des plus à l'aise avec les questions de masses pouvant être différentes !

La mesure est différentielle donc les écarts de masse ne gênent pas.

Citer
La tension de sortie est-elle limitée avant d'attaquer l'entrée du convertisseur AD ?

Oui, il y a deux diodes 1N4148 qui empêchent la tension de sortie d'être > 5V et < 0V.

Citer
Est-il possible de voir le schéma de cette partie ?

Bien sûr. Je l'ajoute ici même dès ce soir

1242
Bonjour,

Le problème étant que l'arduino (dans mon cas un mega) ne permet pas d'utiliser plusieurs servo en même temps,

D'après la doc, le Mega permet de contrôler 48 servos en même temps.

1243
Bus CAN / Re : BreakoutBoard CAN
« le: octobre 09, 2015, 09:43:33 am »
Bonjour,

Pourquoi aurais-tu besoin de 29 bits d'identifiant de message (je rappelle que les 11 bits ou 29 bits sont les identifiants de message, pas les données du messages. Les données vont de 0 (message de signalisation d'événement donc sans données) à 8 octets.

1244
Uniquement si tu alloues un _tableau_ d'objets.

1245
Oui c'est ça

Par contre si tu veux créer dynamiquement un tableau d'objets, tu ne peux pas passer des arguments au constructeur. Il faut donc :
1 - une constructeur sans argument
2 - une méthode pour initialiser l'objet après sa création

Pages: 1 ... 81 82 [83] 84 85 ... 93