j'utilise ce type de carte CAN : https://www.gotronic.fr/art-module-bus-can-sbc-can01-28405.htm (https://www.gotronic.fr/art-module-bus-can-sbc-can01-28405.htm) (Module Bus-CAN SBC-CAN01), pourrais je piloter mon réseau totalement via mon Ethernet ?Bonjour Jerôme,
Et si oui pourrais-je ensuite utiliser les satellites Locoduino ?
Jerome,
Cela impliquera donc que je modifie le programme téléversé sur mon Mega, donc modifier DCC++, si j'ai bien tout compris.Bonjour Jerôme,
Je n'en suis pas encore là . :)
Je présume que le MEGA est suffisamment costaud pour supporter tout cela.
BonsoirTrès franchement du câble téléphonique suffit largement ;D
Après trois jours de tâtonnement, j'admire depuis plusieurs minutes ma petite LED clignoter sur mon UNO2, piloté via CAN par mon UNO1.
Pour info, j'ai utilisé du câble de haut parleur Hifi d'une longueur de presque 2m pour relier mes deux CAN. Ca fonctionne. Ca tombe bien j'ai plein de câbles HIFI à la cave :)
Bravo !
Je trouvais le sketch des articles "Mise en œuvre du Bus CAN entre modules Arduino" https://www.locoduino.org/spip.php?article130 (https://www.locoduino.org/spip.php?article130) trop compliqué a mon gout.
Aussi pour mes tout début en CAN, j'ai jugé plus prudent de me servir des exemples fournis avec la bibliothèque.
Quelle erreur !
En fait, les programmes exemple fournis avec la bibliotheque CAN BUS SHIELD "send blink" et "receive blink" ne fonctionnaient pas
Je me suis débloqué grâce au sketch de Dominique " Test_send_receive_interrupt", qui ne "broche" pas comme les exemples.
J'ai fait un mélange des deux et youpiiii .
Non, la pin interrupt sert à informer l’Arduino, par une interruption, de l’arrivée d’un message Can pertinent. C’est le MCP2515 qui fait tout le travail de transmission et reception, pas l’Arduino. Les Arduino n’ont pas besoin d’être synchronisés. Les MCP 2515 se synchronisent tout seul entre eux avec leur liaison dite « synchrone ».
A ce stade j'ai trois questions, dont je suppute les réponses mais qui demandent confirmation.
La pin interrupt sert à synchroniser les Arduinos ?
Non ce n’est pas nécessaire. Les logiciels des Arduino sont indépendants, ainsi que le choix des pins.
Si oui, il suffit que chaque Arduino ait la même pin branché sur la broche INT de son module CAN ?
Dans le sketch exemple elle n'est pas définie (ils demandent de la brancher sur la pin 2). Dominique la défini sur la pin 3 (et ca marche avec les deux ). Y a il une raison ?
La suite promet d'être délectable, comme dirait le bon Georges.
C'est parti pour les Commanders et autres Accessoires de Thierry, via CAN bien sur !
Quel site! Mais quel site !
A tres bientot pour de nouvelles progressions du néophyte de service !
#define MOTOR_SHIELD_NAME "L9110S Dual Motor Driver"
#define SIGNAL_ENABLE_PIN_MAIN 3
#define SIGNAL_ENABLE_PIN_PROG 11
#define CURRENT_MONITOR_PIN_MAIN A0
#define CURRENT_MONITOR_PIN_PROG A1
#define DIRECTION_MOTOR_CHANNEL_PIN_A 12
#define DIRECTION_MOTOR_CHANNEL_PIN_B 13
#define CURRENT_SAMPLE_SMOOTHING 0.01
#define CURRENT_SAMPLE_MAX_MAIN 600
#define CURRENT_SAMPLE_MAX_PROG 300
void CurrentMonitor::check() {
current = analogRead(pin) * CURRENT_SAMPLE_SMOOTHING + current * (1.0 - CURRENT_SAMPLE_SMOOTHING); // compute new exponentially-smoothed current
if ((pin == CURRENT_MONITOR_PIN_MAIN && current > CURRENT_SAMPLE_MAX_MAIN)) { // current overload Main
digitalWrite(SIGNAL_ENABLE_PIN_MAIN, LOW); // disable Main Motor Shield Channel
INTERFACE.print(msg); // print corresponding error message
}
else if (pin == CURRENT_MONITOR_PIN_PROG && current > CURRENT_SAMPLE_MAX_PROG) { // current overload Prog
digitalWrite(SIGNAL_ENABLE_PIN_PROG, LOW); // disable Prog Motor Shield Channel
INTERFACE.print(msg); // print corresponding error message
}
} // CurrentMonitor::check
Quel équipement pour la mesure du courant ? MAX471 ?Bonsoir,
En principe, quand les LEDs s'éteignent, c'est qu'un court jus est détecté mais c'est une coupure franche, pas en s'estompant.
lorsque je connecte le +5V de la carte L9110S au 5V de la carte Uno, les LED de cette dernière s'estompent au bout d'un moment, puis s'éteignent.
lorsque je connecte le +5V de la carte L9110S au 5V de la carte Uno, les LED de cette dernière s'estompent au bout d'un moment, puis s'éteignent.
D'abord vérifier le port USB qui fournit le 5V. Quid ?
Mais cela pourrait être aussi du à une surconsommation de la carte à L9110S : A vérifier avec une alimentation 5V externe et un ampèremètre en série.
La question pour le port USB concerne sa capacité à fournir du courant : est ce celui d'un portable, d'une tablette ou ...
Pour mesurer le courant consommé par la carte à L9110 il vous faut un multimètre réglé sur un calibre courant continu et le mettre en série avec la ligne d'alimentation de la carte suivant schéma.
Commencez par un calibre élevé (2 ou 5 A ou 10A) et diminuez le en fonction de ce que vous lisez. Vous ne devriez pas avoir plus de 50mA grosso modo.
Bien penser à repasser en calibre Volt et bornes tension (volts CC) après votre mesure.
Mais avant tout revérifiez votre câblage.
Le câblage était conforme au schéma de l'article.
Le câblage était conforme au schéma de l'article.
Postez nous des photos de votre montage où on voit les connexions et l’alimentation.
Pour comprimer vos photos, utilisez Irfanview : https://www.irfanview.com/
En 1024 x 768, elles sont tout à fait lisibles.
Et vous avez la même consommation de 0,32A carte déconnectée de tout ?
Il aurait été intéressant de voir votre mesure de courant au complet, mais dans l’état actuel de nos informations, votre carte à L9110S est défectueuse.
Pendant votre mesure, y a t il un composant qui chauffe sur cette carte ?
C'est le prix de l'expérience , le renommé Geoff Bunza dit lui-même sur son blog du Model Railroad Hobbyist :
and yes, I have already destroyed one myself.
On commence à en trouver ... sur eBay:
https://www.ebay.fr/itm/174381947027 (https://www.ebay.fr/itm/174381947027)
C'est le prix de l'expérience , le renommé Geoff Bunza dit lui-même sur son blog du Model Railroad Hobbyist :
and yes, I have already destroyed one myself.
Cependant, lors de la compilation et du téléversement du dossier DCCpp-Uno, les messages suivants apparaissent:Vous parlez de compilation (ce qui suit) ET de téléversement (vous n'en parlez plus après).
- ... DCCpp-Uno-ino :427:152 warning: backslash and newline separated by space, suivi du contenu de la ligne.La réponse est dans ce qui s'affiche : des fautes de frappe !
IL en est de même pour les lignes 433:100, 449:103, 450:88.
- ...DCCpp-Uno-ino: 196:59 et 197:59 warning: ISO C++ forbids converting a string constant to 'chart*' [-Wwrite-strings] suivi du contenu des lignes.La réponse est aussi dans cette ligne : il y a certainement une mauvaise utilisation d'un type de variable
Est-ce des messages d'erreurs et quelles interventions dois-je effectuer?Ici, ce ne sont que des warnings, la compilation s'est déroulée complètement et le téléversement a pu avoir lieu. Qu'est-il indiqué ?
Egalement, je suis en port USB et aucune des leds de la carte moteur ne s'allument pour communiquer avec DCC++.
Le but de Locoduino est de vous amener progressivement à l'autonomie de développement donc à savoir corriger vos problèmes, grâce à tout le savoir qui se construit sur ce site.
En voici un exemple :CiterCependant, lors de la compilation et du téléversement du dossier DCCpp-Uno, les messages suivants apparaissent:Vous parlez de compilation (ce qui suit) ET de téléversement (vous n'en parlez plus après).
D'abord les erreurs de compilation : A quoi sert le compte-rendu du compilateur affiché sur votre écran : à trouver, comprendre et corriger les erreurs !Citer- ... DCCpp-Uno-ino :427:152 warning: backslash and newline separated by space, suivi du contenu de la ligne.La réponse est dans ce qui s'affiche : des fautes de frappe !
IL en est de même pour les lignes 433:100, 449:103, 450:88.Citer- ...DCCpp-Uno-ino: 196:59 et 197:59 warning: ISO C++ forbids converting a string constant to 'chart*' [-Wwrite-strings] suivi du contenu des lignes.La réponse est aussi dans cette ligne : il y a certainement une mauvaise utilisation d'un type de variable
Il aurait été utile pour nous de savoir ce que contiennent ces lignes de code : il faut donc les mettre dans votre question !CiterEst-ce des messages d'erreurs et quelles interventions dois-je effectuer?Ici, ce ne sont que des warnings, la compilation s'est déroulée complètement et le téléversement a pu avoir lieu. Qu'est-il indiqué ?CiterEgalement, je suis en port USB et aucune des leds de la carte moteur ne s'allument pour communiquer avec DCC++.
Là on ne peut pas vous aider : il faudrait ouvrir le moniteur de l'IDE au moment du démarrage du programme pour savoir ce que le logiciel téléversé raconte : on ne sait même pas ici s'il s'est correctement téléversé. A priori, si les leds ne s'allument pas c'est parce que la génération du DCC n'a pas commencé.
D'habitude tapez "<1>" dans le moniteur et ça va démarrer !!
Tenez nous au courant de vos résultats et reconnaissez aussi que tout ceci a déjà été écrit plein de fois sur le site.
L'art de chercher est difficile !
Bon courage
Le croquis utilise 18198 octets (56%) de l'espace de stockage de programmes. Le maximum est de 32256 octets.
Les variables globales utilisent 898 octets (43%) de mémoire dynamique, ce qui laisse 1150 octets pour les variables locales. Le maximum est de 2048 octets.
Bonjour à tous,
Je constate avec grand plaisir que cette station DCC++ suscite un certain intérêt auprès de nombre de Locoduinistes. Mais apparaissent plus ou moins les problèmes cités à divers endroits du forum liés à la raréfaction (disparition) des MAX471 et pire, l'apparition de MAX471 contrefaits et donc dangereux.
Aujourd'hui, cette question est régulièrement d'actualité mais évoquée à différents endroits du forum. Il est de ce fait difficile d'avoir une compréhension globale et donc de trouver les bonnes solutions.
Cette questions mobilise pas mal d'énergies et va probablement sous peu trouver une réponse fiable. Mais ne faites pas n'importe quoi d'ici là.
En tout premier lieu, si vous n'avez que peu ou pas d'expérience, contentez-vous de la version de base présentée dans l'article, c'est à dire avec un seul MAX471. Si votre MAX471 est de bonne qualité, vous arriverez à piloter des trains et à programmer des CV's avec ni plus ni moins de réussite que dans d'autres configurations. Car ce problème de lecture de CVs sur certains décodeurs est connu depuis longtemps et là aussi plusieurs membres travaillent à apporter des solutions.
Si vous avez quelques locos qui refusent désespérément de se laisser programmer, prenez votre mal en patience, les solutions vont émerger petit à petit.
Si vous êtes plus aguerris, vous pouvez mettre en œuvre des solutions à deux détecteurs comme je le montre juste plus haut dans ce fil. Mais cela n'a d'intérêt que si vous dépassez les 3A (limite du MAX471). Ca veut déjà dire quelques locos sur le réseau à consommer en même temps du courant, probablement entre 6 et 10 locos au moins !
Personnellement j'ai exactement la config que je présente plus haut avec un ACHS-7122 et ça fonctionne parfaitement. Michel (MSPort) soulève à juste titre que c'est délicat d'obtenir une mesure précise mais ce n'est pas ce que je recherche sur la voie principale mais la détection de court jus où l'intensité va monter en flèche. C'est surtout cela qu'il faut détecter.
Avec des seuils de détection assez faibles, vous vous prémunissez de mauvaises surprises. Et encore une fois, ne faites que ce que vous savez faire et demandez conseil dans le cas contraire.
Je travaille aussi sur les capteurs ACS724 (30A) packagé par Pololu : https://www.pololu.com/product/4046
dont les lectures devraient être plus faciles à exploiter mais ça vaut tout de même 9€ le bout ! Je travaille aussi sur un détecteur autonome à partir de ce composant avec un code ultra optimisé au travers de la manipulation directe des ports qui servent à la lecture analogique. Mais bon, pas indispensable d'aller jusque-là.
En attendant donc des solutions concrètes, suivez les discutions sur le forum et participez si vous pensez pouvoir faire avancer le Schmilblick.
Christophe
Mon "doute" :
Est il possible de gérer en même temps DCC++ (pour les locos) et le module CAN "initial" (pour les accessoires) sur cette seule carte ?
JMRI sait-il faire cela par cette unique liaison Ethernet ?
Pour arrêter le massacre, il est peut-être temps de passer à son remplaçant :
J’ai commandé ceux-ci à base d’INA 219 :
https://www.ebay.fr/itm/401190859405 (https://www.ebay.fr/itm/401190859405)
Et celui-ci à base d’INA 169 :
https://www.ebay.fr/itm/401309797879 (https://www.ebay.fr/itm/401309797879)
J’attends les livraisons et je vous dis tout 8)
Le but de Locoduino est de vous amener progressivement à l'autonomie de développement donc à savoir corriger vos problèmes, grâce à tout le savoir qui se construit sur ce site.
En voici un exemple :CiterCependant, lors de la compilation et du téléversement du dossier DCCpp-Uno, les messages suivants apparaissent:Vous parlez de compilation (ce qui suit) ET de téléversement (vous n'en parlez plus après).
D'abord les erreurs de compilation : A quoi sert le compte-rendu du compilateur affiché sur votre écran : à trouver, comprendre et corriger les erreurs !Citer- ... DCCpp-Uno-ino :427:152 warning: backslash and newline separated by space, suivi du contenu de la ligne.La réponse est dans ce qui s'affiche : des fautes de frappe !
IL en est de même pour les lignes 433:100, 449:103, 450:88.Citer- ...DCCpp-Uno-ino: 196:59 et 197:59 warning: ISO C++ forbids converting a string constant to 'chart*' [-Wwrite-strings] suivi du contenu des lignes.La réponse est aussi dans cette ligne : il y a certainement une mauvaise utilisation d'un type de variable
Il aurait été utile pour nous de savoir ce que contiennent ces lignes de code : il faut donc les mettre dans votre question !CiterEst-ce des messages d'erreurs et quelles interventions dois-je effectuer?Ici, ce ne sont que des warnings, la compilation s'est déroulée complètement et le téléversement a pu avoir lieu. Qu'est-il indiqué ?CiterEgalement, je suis en port USB et aucune des leds de la carte moteur ne s'allument pour communiquer avec DCC++.
Là on ne peut pas vous aider : il faudrait ouvrir le moniteur de l'IDE au moment du démarrage du programme pour savoir ce que le logiciel téléversé raconte : on ne sait même pas ici s'il s'est correctement téléversé. A priori, si les leds ne s'allument pas c'est parce que la génération du DCC n'a pas commencé.
D'habitude tapez "<1>" dans le moniteur et ça va démarrer !!
Tenez nous au courant de vos résultats et reconnaissez aussi que tout ceci a déjà été écrit plein de fois sur le site.
L'art de chercher est difficile !
Bon courage
le schéma modifié pour le GY-169 :Ce schéma est également valable pour le module INA169 (auquel il faut adjoindre une résistance de 0,1 ohm 3W).
DCC++ et ses alter ego se pilotent via le serial monitor qui, dans l'IDE, fournit des diagnostics :
lancez cet exemple <t 1 03 20 1> et voyez où ça pèche. (courts-circuits ? avec<p0>)
https://github.com/DccPlusPlus/BaseStation/wiki/Commands-for-DCCpp-BaseStation
Ce sont des mauvais contacts ...
le OUT du module sur A1 de l'Arduino UNO pour à la fois lire les CV et protéger les deux voies des courts circuits.
Je retente donc avec un uno tout neuf,
... le sketch dans mon mega
De plus, le + de mon alimentation 18V va-t-il bien sur Vin+ de l'INA169 et Vin- va-t-il bien vers power de la carte L9110s? Résistance de 0.1ohm 3W soudée aux bornes Vin+ et Vin- de l'INA169.C'est OK.
Dans le cas du UNO, on peut utiliser DCCpp_Uno.ino sans modification. Je l’utilise comme montage de test avec A1.
Dans le cas de l'utilisation d'un uno, pas de modif dans config.h, ni DCCpp_Uno.h lorsque vous dîtes:
Dans le cas du UNO, on peut utiliser DCCpp_Uno.ino sans modification. Je l’utilise comme montage de test avec A1.
Je ne sais pas si je dois incriminer ma résistance 3W bobinée verte (4 anneaux: marron-noir-argent--doré)...? .https://www.digikey.fr/fr/resources/conversion-calculators/conversion-calculator-resistor-color-code
current=analogRead(pin)*CURRENT_SAMPLE_SMOOTHING+current*(1.0-CURRENT_SAMPLE_SMOOTHING); // compute new exponentially-smoothed current
if(current>CURRENT_SAMPLE_MAX && digitalRead(SIGNAL_ENABLE_PIN_PROG)==HIGH){ // current overload and Prog Signal is on (or could have c
@ ChrisABonsoir, voici une photo de mon montage: circuit breakers bypassés. Je suspecte l’entrée ana de l’Arduino défectueuse mais les PSX devraient limiter le cc et protéger le booster? Ils sont tout neufs.
Bonsoir,
comme il s'agit d'un dépannage, le forum est plus adapté.
En particulier, postez le schéma du montage que vous avez réalisé.
J'imagine que vous avez by-passé vos circuits breakers. Et le MAX471 si il fonctionne correctement. (préférer maintenant le INA169 ou le GY169)
Mais toujours même problème : pas de reconnaissance du décodeur.Avec la réponse -1 obtenue sur le moniteur, JMRI ne peut rien faire, ce n'est pas lui qui est en cause actuellement.
envoyer <R 8 123 123> au serial monitor : réponse <r 123 123 8 -1> et la loco tressaute sur la voie de programmation
Si les trains roulent , ce sera la configuration JMRI qu'il faudra vérifier. :
J'ai fait mes essais de programmation sur un autorail X2800 Roco que j'ai équipé d'un décodeur Lenz Digital+ Standard+ V2 (réf 10231-02) sur une voie de programmation ancienne Jouef.
J'ai bien 18 v en entrée de L9110S, même en cours de programmation, ce qui n'était pas le cas avec Max471.
Bonjour à tous
Je viens de découvrir ce site
Attention je n'ai fait aucun test.
https://lesiteferroviaire.pagesperso-orange.fr/Remplacement%20du%20MAX471.htm#Ancre7
Bonjour,
Des pièges dans lesquels on peut tomber :
1. on oublie de mettre les voies sous tension avec <1>
2. on ne se met sur la voie de programmation
3. il y a un mauvais contact avec la voie
Rien de tel que de se monter un petit banc de test avec un moteur de CD et un connecteur DIL8 retaillé.
Reste l'hypothèse d'une entrée Arduino qui aurait souffert. A1 est l'entrée pour la programmation.
Est-ce que, quand on augmente le courant, la centrale disjoncte ?
Je viens de découvrir ce site
https://lesiteferroviaire.pagesperso-orange.fr/Remplacement%20du%20MAX471.htm#Ancre7
Mais où trouves-tu les téléchargements?
Je vois des gens qui utilisent encore DCC++ Classic. Cela a été abandonné depuis 2014.
Vos problèmes de sens actuels et la nécessité de modifier le code C ++ sont résolus dans DCC ++ EX
Il suffisait de décocher une option dans les propriétés des régulateurs...
De plus, DCC++EX a des diagnostics complets et vous dira pourquoi votre décodeur ne fonctionne pas. Il a des définitions de carte moteur pour plusieurs cartes intégrées, et vous pouvez les personnaliser. Il n'y a pas besoin d'un circuit à transistor puisque nous prenons en charge les cartes d'entrée simples et les cartes d'entrée doubles. Il existe de nombreuses autres fonctionnalités. Faire connaitre :)
ce montage a été réalisé un grand nombre de fois et pas que par les intervenants de Locoduino.
Si ils avaient rencontré des problèmes, ils auraient été signalés.
Revenez aux basiques...
avec JMRI branché sur USB --> aucun problème.
En passant il a constaté que la diode RX (ou TX ?) du Arduino Uno s'allumait de façon régulière à une fréquence assez rapide, signe que JMRI a une communication assez intense avec l'Arduino, même sans qu'aucune consigne ne soit modifiée, ce qui n'était pas le cas avec "Ma première manette DCC".
Le problème vient donc
(1) du montage de (ma)la manette,
(2) du programme (que j'ai chargé) dans la manette
ou (3) de l'adéquation entre le programme de la manette et celui de la station.
En l'occurrence, pour l'instant nous avons tenté d'utiliser le programme prévu pour "station DCC complète, polyvalente et économique avec JMRI" dans la station, sans JMRI,
avec le montage prévu pour "Ma première manette DCC" et son programme standard (ceci faisant écho au point (4) de mon message précédent)
Peut-on / faut-il charger le programme dans "Une station DCC complète, polyvalente et économique avec JMRI" si on veut utiliser avec "Ma première manette DCC" ?
/**********************************************************************
Config.h
COPYRIGHT (c) 2013-2016 Gregg E. Berman
Part of DCC++ BASE STATION for the Arduino
**********************************************************************/
/////////////////////////////////////////////////////////////////////////////////////
//
// DEFINE MOTOR_SHIELD_TYPE ACCORDING TO THE FOLLOWING TABLE:
//
// 0 = ARDUINO MOTOR SHIELD (MAX 18V/2A PER CHANNEL)
// 1 = POLOLU MC33926 MOTOR SHIELD (MAX 28V/3A PER CHANNEL)
// 2 = L9110S Dual Motor Driver (MAX 28V/10A PER CHANNEL)
#define MOTOR_SHIELD_TYPE 2
/////////////////////////////////////////////////////////////////////////////////////
//
// DEFINE NUMBER OF MAIN TRACK REGISTER
#define MAX_MAIN_REGISTERS 12
/////////////////////////////////////////////////////////////////////////////////////
//
// DEFINE COMMUNICATIONS INTERFACE
//
// 0 = Built-in Serial Port
// 1 = Arduino.cc Ethernet/SD-Card Shield
// 2 = Arduino.org Ethernet/SD-Card Shield
// 3 = Seeed Studio Ethernet/SD-Card Shield W5200
[b]#define COMM_INTERFACE 0[/b]
/////////////////////////////////////////////////////////////////////////////////////
//
// DEFINE STATIC IP ADDRESS *OR* COMMENT OUT TO USE DHCP
//
//#define IP_ADDRESS { 192, 168, 1, 200 }
/////////////////////////////////////////////////////////////////////////////////////
//
// DEFINE PORT TO USE FOR ETHERNET COMMUNICATIONS INTERFACE
//
#define ETHERNET_PORT 2560
/////////////////////////////////////////////////////////////////////////////////////
//
// DEFINE MAC ADDRESS ARRAY FOR ETHERNET COMMUNICATIONS INTERFACE
//
#define MAC_ADDRESS { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF }
/////////////////////////////////////////////////////////////////////////////////////
#elif MOTOR_SHIELD_TYPE == 2
#define MOTOR_SHIELD_NAME "L9110S Dual Motor Driver"
#define SIGNAL_ENABLE_PIN_MAIN 3
#define SIGNAL_ENABLE_PIN_PROG 11
#define CURRENT_MONITOR_PIN_MAIN A0
#define CURRENT_MONITOR_PIN_PROG A0
#define DIRECTION_MOTOR_CHANNEL_PIN_A 12
#define DIRECTION_MOTOR_CHANNEL_PIN_B 13
___________________
1. Nano de la manette directement branchée à l'Arduino IDE en USB, sans la station
2. Manette branchée à la station, sans JMRI - Station connectée par USB à l'Arduino IDE
Ce qui est prévu c'est une connexion RX/TX du Nano de la manette vers le TX/RX du UNO de la centrale. Revoyez le schéma.
A priori, c'est DCC++ qui répète sans fin la dernière commande de locomotive (pas les fonctions - imaginons le sifflet)
C: Frequency Of Packet Transmission
Packets sent to Digital Decoders should be repeated as frequently as possible, as a packet may have been lost due to noise or poor electrical conductivity between wheels and rails.
Je viens de tester avec ma BaseStation de référence (UNO + shield moteur = ma première centrale)et deux manettes style https://www.locoduino.org/spip.php?article286
Pas de coupure au changement de manette ou de locomotive sur une manette.
CiterA priori, c'est DCC++ qui répète sans fin la dernière commande de locomotive (pas les fonctions - imaginons le sifflet)
Oui c'est obligatoire dans Communications Standards For Digital Command Control, All Scales
Adopted July 2004 S 9.2 (https://www.nmra.org/sites/default/files/s-92-2004-07.pdf) :Code: [Sélectionner]C: Frequency Of Packet Transmission
Packets sent to Digital Decoders should be repeated as frequently as possible, as a packet may have been lost due to noise or poor electrical conductivity between wheels and rails.
Et c'est que fait bien DCCpp.
Sniffer le plus abouti :
https://dcc-ex.com/ex-dccinspector/index.html
https://github.com/DCC-EX/DCCInspector-EX
Voir aussi :
https://forum.locoduino.org/index.php?topic=460.msg4650#msg4650
https://forum.locoduino.org/index.php?topic=244.15
Je viens de tester avec ma BaseStation de référence (UNO + shield moteur = ma première centrale)et deux manettes style https://www.locoduino.org/spip.php?article286--> Avez-vous pu observer la réaction de "l'avant-dernière locomotive ayant reçu une consigne en cas de coupure de l'alimentation de celle-ci" ?
Pas de coupure au changement de manette ou de locomotive sur une manette.
Nouvelle description du problème (non pas que ça empire, mais que nous comprenons mieux ce qui se passe) :
En cas de coupure de courant d'alimentation sur la locomotive* qui est l'avant dernière à avoir reçu une consigne, elle s'arrête.
Illustration :
1- la locomotive adresse 5 reçoit une consigne --> OK [la consigne adresse 5 est appliquée]
2- la locomotive adresse 6 reçoit une consigne --> OK [la consigne adresse 6 est appliquée]
la locomotive 5 poursuit sa route (OK)
3- micro coupure dans l'alimentation de la locomotive adresse 5 --> la locomotive adresse 5 s'arrête, ne reprend pas sa marche après le rétablissement de l'alimentation [la consigne adresse 5 n'est plus appliquée]
Nouvelle description du problème
votre problème était l'arrêt de la première loco quand une deuxième loco reçoit un ordre ? Ce qui vous est spécifique.
Mais ce que vous décrivez est différent, et "normal" :
[...]
Oui, pour chaque régulateur de JMRI, la consigne de l’adresse correspondante est répétée
Oui, pour le DCC seule la dernière consigne concernant la dernière adresse sélectionnée est répétéeJe pensais naïvement que les consignes de vitesse et de sens de circulation éta
votre problème était l'arrêt de la première loco quand une deuxième loco reçoit un ordre ? Ce qui vous est spécifique.
Mais ce que vous décrivez est différent, et "normal" :
[...]
Oui, pour chaque régulateur de JMRI, la consigne de l’adresse correspondante est répétée
Oui, pour le DCC seule la dernière consigne concernant la dernière adresse sélectionnée est répétéeJe pensais naïvement que les consignes de vitesse et de sens de circulation étaient répétées pour chaque décodeur (comme le fait JMRI)
Il peut y avoir 12 registres dans un Uno et probablement jusqu’à 50 dans un Mega. En tout cas c’est réglable dans la configuration (onglet Config.h).
Le registre N°0 est réservé pour les commandes à envoyer une seule fois (paquets Idle et Reset, commandes de programmation, commandes de fonctions, commandes d’accessoires). Les registres suivants N° 1 .. MAX_MAIN_REGISTERS sont réservés chacun à une machine sur le réseau. Il ne doit y avoir qu’un seul registre affecté à une même machine, sinon elle serait soumise à des ordres contradictoires et risque de s’agiter bizarrement.
Il y a un jeu de registres pour la voie principale et un autre, plus petit pour la voie de programmation car elles peuvent être commandées simultanément.
Comme expliqué dans l’article Réalisation de centrales DCC avec le logiciel libre DCC++ (1) (https://www.locoduino.org/spip.php?article182)CiterIl peut y avoir 12 registres dans un Uno et probablement jusqu’à 50 dans un Mega. En tout cas c’est réglable dans la configuration (onglet Config.h).Ces 12 registres (sauf le 0) sont répétés. Ce qui est contradictoire avec vos observations !
Le registre N°0 est réservé pour les commandes à envoyer une seule fois (paquets Idle et Reset, commandes de programmation, commandes de fonctions, commandes d’accessoires). Les registres suivants N° 1 .. MAX_MAIN_REGISTERS sont réservés chacun à une machine sur le réseau.
[...]
[...] ce que vous décrivez est différent, et "normal" :
Oui, pour le DCC seule la dernière consigne concernant la dernière adresse sélectionnée est répétée
Comme expliqué dans l’article Réalisation de centrales DCC avec le logiciel libre DCC++ (1) (https://www.locoduino.org/spip.php?article182)CiterIl peut y avoir 12 registres dans un Uno [...].[...] ces 12 registres (sauf le 0) sont répétés
Le comportement étant différent entre une utilisation sous JMRI et sous Manette ou Arduino IDE ...