Auteur Sujet: Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"  (Lu 17397 fois)

Pascal Barlier

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • GitHub Arduno et le train
Re : Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #30 le: janvier 05, 2022, 11:00:34 pm »
J'ai lancé la fabrication de PCB chez JLCPCB pour 9€49 les 10 et en prime, j'ai pris en plurple (disponible depuis environ 6 mois) mais il n'y plus de délais supplémentaire comme avant.

Je n'ai même pas mis de photo du décodeur Railcom dans le livre, en voici une. L'implantation est un peu différente car il y a eu des remaniements du circuit imprimé avant la publication du livre : le bornier et le shunt ont été déplacés, et la résistance R3 a été ajoutée.
Développeur C / C++ / JavaScript / PHP - Concepteur d'automatismes industriels - Utilisateur Linux - Fan de CC6500

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
C'est en répondant à cette question que je viens de réaliser qu'il y a une erreur dans le code de la centrale (at-dicicino.ino  ligne 1917), je me suis trompé pour la valeur de l'interruption :-[
Il est écrit ceci :
FlexiTimer2::set(1, 0.000028, dccInterrupt);
Mais la bonne valeur est 29µs :
FlexiTimer2::set(1, 0.000029, dccInterrupt);
Ça fonctionne quand même avec mes décodeurs, mais il vaut mieux mettre la bonne valeur.
La même erreur est présente dans le code de la petite centrale (at-multi2.ino ligne 2061).

D'après la norme  NMRA s-9.3.2_2012_12_10, le cutout start est compris entre 26 et 32 µS, ce qui explique que ça marche avec 28µS... ???

Mais sur le site NMRA.org, Railcom n'a pas évolué depuis 2012 et est introuvable, dans son moteur de recherche  :o

De plus, d'après Wikipedia "For data transmission to work, the system must interrupt track power between DCC packets".
Je ne comprends donc pas bien comment la mise en "court-circuit" du LMD18200 fonctionne, au lieu de placer les rails "en l'air", en haute impédance, et avec une résistance pour réduire l'impédance sans doute (le "brake" le fait-il ?)

Il y a quelque chose que je n'ai pas encore assimilé sans doute.



« Modifié: janvier 06, 2022, 06:38:17 pm par Dominique »
Cordialement,
Dominique

Pascal Barlier

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • GitHub Arduno et le train
D'après la norme  NMRA s-9.3.2_2012_12_10, le cutout start est compris entre 26 et 32 µS, ce qui explique que ça marche avec 28µS... ???

Je ne comprends donc pas bien comment la mise en "court-circuit" du LMD18200 fonctionne, au lieu de placer les rails "en l'air", en haute impédance, et avec une résistance pour réduire l'impédance sans doute (le "brake" le fait-il ?)
L'interruption sert aussi pour l'envoi des données DCC et pour envoyer un "1", il faut 58µs de signal positif suivi de 58µs de signal négatif. Mais il y a une certaine tolérance, la NMRA indique entre 55 et 61 µs côté centrale, les décodeurs devant accepter de 51 à 64 µs. J'ai choisi 58 µs car il s'agit de la valeur moyenne.

Le pont en H qui consistitue l'amplificateur est composé de deux push-pull. Chaque push-pull permettant de relier une de deux sorties, soit à la masse, soit à l'alimentation positive (15 à 20V). En émission DCC, les deux push-pull sont en opposition de phase; quand l'un est au +V, l'autre est à la masse, et vice-versa. La mise en court-circuit de l'amplificateur consiste a connecter les deux push-pull à la masse. Les deux sorties sont donc reliées ensemble par l'intermédiaire de la masse, elles sont donc en "court-circuit".

Mettre les sorties en court-circuit est nécessaire pour que le décodeur puisse fournir des données. Il peut envoyer des signaux sur les rails sous la forme d'un courant, qui peut être mesuré au moyen d'une résistance de shunt. Dans la mesure où le décodeur ne peut compter que sur la réserve de puissance accumulée dans son condensateur de filtrage, qui est assez petit, je pense qu'il s'agit de la façon la plus efficace pour émettre des données du décodeur vers la centrale (quoique on aurait aussi pu utiliser une modulation par courant porteur et ne pas faire de cutout).

Développeur C / C++ / JavaScript / PHP - Concepteur d'automatismes industriels - Utilisateur Linux - Fan de CC6500

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #33 le: janvier 07, 2022, 10:02:25 am »
En fait je comprends que pour mesurer le courant génèré par le décodeur loco, il faut fermer le circuit côté centrale.

Serait-il possible de faire le cutout dans le décodeur Railcom directement puisque le DCC de la centrale passe dans ce décodeur: isoler le DCC de la centrale et fermer le circuit des rails sur la résistance de mesure du courant) ?

Ça nécessiterait plus de logique et de composants et une détection du bit stop de chaque trame.

Ta solution semble être la plus simple et moins coûteuse.
« Modifié: janvier 07, 2022, 10:08:47 am par Dominique »
Cordialement,
Dominique

Pascal Barlier

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • GitHub Arduno et le train
Re : Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #34 le: janvier 07, 2022, 07:44:40 pm »
Serait-il possible de faire le cutout dans le décodeur Railcom directement puisque le DCC de la centrale passe dans ce décodeur: isoler le DCC de la centrale et fermer le circuit des rails sur la résistance de mesure du courant) ?
Ça nécessiterait plus de logique et de composants et une détection du bit stop de chaque trame.

Théoriquement, c'est possible. Dans la réalité le circuit destiné à isoler la centrale et mettre la voie en court-circuit ne peut pas être réalisé avec un relais, ce serait beaucoup trop lent. Il faut donc le faire avec des transistors. Il en faut deux pour contrôler le passage du courant, puisque l'on a alternativement du +18V sur un rail, puis sur l'autre, et encore deux autres transistors pour faire le court-circuit, et il faut aussi des diodes pour protéger les transistors lorsqu'ils sont polarisés en inverse et qu'eles soient assez puissantes pour laisser passer le courant en direct. Bref, c'est encore plus compliqué que d'utiliser un LMD18200 ou un L298N.

Il y a par contre peut-être quelque chose à faire qui serait un "canton intégré". C'est à dire, regrouper sur une seule carte :
- Un Arduino (ou bien juste un Atmel ATMega328 ou ATMega2560 soudé sur la carte) (ou un shield pour Arduino Mega)
- L'amplificateur LMD18200 ou L298N
- Le décodeur Railcom à base de TSC2012
- La mesure de courant ACS712 (protection + détection de présence)
- Des entrées pour quelques détecteurs optiques ou ILS
- Des sorties pour piloter les signaux lumineux
- Et une interface qui pourrait être I²C, CAN ou autre.
- Et en bonus, la commande des aiguillages présents sur le canton

J'y ai déjà pensé, c'est une solution tentante, et le confort d'utilisation serait optimal, par contre le coût n'est pas négligeable.
« Modifié: janvier 07, 2022, 09:22:41 pm par Pascal Barlier »
Développeur C / C++ / JavaScript / PHP - Concepteur d'automatismes industriels - Utilisateur Linux - Fan de CC6500

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 904
  • HO avec DCC++
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #35 le: janvier 09, 2022, 03:02:54 pm »
Pour ceux qui suivent ce sujet, je vous informe que j'ai ouvert un nouveau fil qui traite de la station DCC de Pascal Barlier (revisitée) qui autorise la détection RailCom : https://forum.locoduino.org/index.php?topic=1352.msg14568#msg14568

Thierry

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 745
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #36 le: janvier 31, 2022, 05:36:45 pm »
Je constate que la solution utilisée pour la partie DCC du projet de Pascal est strictement la même que dans LaBox. Quelqu'un a t-il testé les timing pour voir si ç'est mieux ou pire que LaBox ? Juste pour savoir...

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 904
  • HO avec DCC++
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #37 le: janvier 31, 2022, 05:44:33 pm »
Bonjour Thierry,

Est-ce que tu parles bien du projet que j'ai mis sur le Github hier ?  https://github.com/Locoduino/DCCxx-ESP32-WiFi-Railcom

En effet, j'ai changé de méthode de génération du DCC par rapport à ce qu'a fait Barlier et ce dont parle ce fil.

Le nouveau fil est ici pour l'ESP32 https://forum.locoduino.org/index.php?topic=1352.msg14748#msg14748

Dans le nouveau projet, j'ai de très bons résultats avec les trames DCC générées de cette manière. J'ai testé avec 5 locos différentes, 5 décodeurs différents (Marklin, ESU V4 et V5, Zimo...)

Il rete des petits problème sur cette station mais il ne concernent pas la génération de la trame en elle même mais par exemple des démarrages intempestifs de certaines locos à la mise sous tension, mais encore une fois, la génération des trames n'est pas en cause.

Marcel a aussi fait les tests de son côté et à part les points que je signale ci-dessus, il a aussi réussi à piloter sa loco.
« Modifié: janvier 31, 2022, 07:34:04 pm par bobyAndCo »

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #38 le: janvier 31, 2022, 06:51:43 pm »
Un test positif de plus avec des commandes d'une manette sur RX/TX reçues par module radio.

idem pour JMRI (serie)

sur le moniteur :
ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
flash read err, 1000
ets_main.c 371
ets Jun  8 2016 00:22:57

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4


Project :      DCCxx ESP32 WIFI RAILCOM

Version   :      v 1.2

Fichier   :      C:\Users\miche\Documents\Arduino\Locoduino\Christophe Bobille\DCCxx-ESP32-Railcom\DCCxx-ESP32-Railcom.ino

Compiled  :      Jan 31 2022 - 18:25:26

<p0>End setup

1
<p1>0
<p0>1
<p1>1
<p1>t1 8 0 1
<T 1 0 1>f 8 144
1
<p1>t1 8 1 1
<T 1 1 1>1
<p1>t1 8 2 1
<T 1 2 1>1
<p1>t1 8 3 1
<T 1 3 1>1
<p1>t1 8 5 1
<T 1 5 1>1
<p1>t1 8 4 1
« Modifié: janvier 31, 2022, 07:08:32 pm par msport »
Cordialement

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 904
  • HO avec DCC++
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #39 le: janvier 31, 2022, 07:40:22 pm »
Merci Michel pour ce retour. Tout cela est encourageant. Si toute fois nous arrivions à tirer profit de cela pour la box qui est un peu coincée ce serait génial. Je pense que Thierry va nous faire un retour prochainement.

Par contre, je vous invite à publier maintenant sur le fil dédié à l'ESP32 : https://forum.locoduino.org/index.php?topic=1352.msg14748#msg14748

En effet, le présent fil concerne l'Arduino Mega ou Uno sur lequel j'avais porté le développement de Pascal Barlier pilotable de l'extérieur (JMRI ...) et plus structuré en classes C++.

Pascal Barlier

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
    • GitHub Arduno et le train
Re : Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #40 le: mars 04, 2022, 08:40:09 pm »
Il rete des petits problème sur cette station mais il ne concernent pas la génération de la trame en elle même mais par exemple des démarrages intempestifs de certaines locos à la mise sous tension, mais encore une fois, la génération des trames n'est pas en cause.
Le démarrage à la mise sous tension se produit à cause du mode de fonctionnement mixte analogique / numérique (CV29 bit2 à un) il suffit de le désactiver pour que tout rentre dans l'ordre. Tant que l'interruption de génère pas de signal DCC, il y a 15 à 20 V continu en sortie du booster, donc la locomotive se met en route jusqu'à temps que le signal DCC arrive.
Développeur C / C++ / JavaScript / PHP - Concepteur d'automatismes industriels - Utilisateur Linux - Fan de CC6500

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2889
  • 100% Arduino et N
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #41 le: mars 04, 2022, 09:13:44 pm »
Ce qui peut être évité en jouant sur l'entrée Enable du LMD18200.
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 904
  • HO avec DCC++
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #42 le: juillet 07, 2022, 10:15:15 am »
Bonjour,

J'ai voulu reproduire la carte RailCom at-retour présentée dans le livre (V2). J'ai fait fabriquer les PCB à partir des fichiers Gerber en téléchargement donc sans modification.

J'ai utilisé exactement les composants préconisés. Je ne pense pas avoir fait d'erreur dans le montage des composants. Sauf peut-être le LM393, mais j'ai fait le montage dans un sens et dans l'autre et ça ne fonctionne pas mieux.

J'utilise un LMD18200, la tension à la sortie de l'alim est de 18V. Quand je met l'alimentation en service, j'ai bien un signal DCC sur mon rail (je n'ai qu'un seul rail pour les tests), ma loco répond, avance ou recule et ses fonctions répondent normalement.

J'ai bien sûr un signal DCC envoyé aux rails qui inclus le cutout (c'est le programme donné dans le livre), qui fonctionne parfaitement et que je présentée ici : https://forum.locoduino.org/index.php?topic=1352.0

J'ai mi une resistance variable (10KΩ) comme préconisé pour trouver la bonne valeur de résistance. (fils sur le côté)

Quelqu'un a t'il des préconisation ? Peut-être Pascal Barlier lui-même peut il m'aider ?

Merci par avance.







« Modifié: juillet 07, 2022, 10:17:13 am par bobyAndCo »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 904
  • HO avec DCC++
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #43 le: juillet 09, 2022, 09:00:15 am »
Bon ça avance petit à petit mai c'est dur dur !

J'ai trouvé, sinon la cause du court circuit mais au moins le moyen d'y remédier. Dans le schéma de son livre on voit que Enable (PWM) est rélié à la broche D4, le signal (DIR) à la D6 et le brake en D5.



Or dans le programme du Nano, ce sont les broches 2, 4 et 6 qui sont utilisées !!!



J'ai donc soudé directement sur le Nano les fils respectifs et je ne passe plus par le bus DCC comme préconisé. Et je n'ai plus le court jus, la loco est normalement pilotée par JMRI



(la résistance R3 qui flotte un peu, c'est parce que j'ai enlevé la résistance variable est remplacée par une de 1KΩ. C'est pour pouvoir l'enlever facilement au besoin)

... mais je n'ai toujours pas de reconnaissance de la loco par la la carte. J'ai bien une série de donnée à la sortie du Nano mais que des 0, rien sur l'adresse de ma loco.








msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2218
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Les livres de Pascal Barlier : "ARDUINO: Faites le jouer au train"
« Réponse #44 le: juillet 09, 2022, 11:52:27 am »
Par curiosité, j"ai chargé at-retour.ino dans un Nano, sans centrale, sans DCC, le résultat est le même.
Cordialement