Dcc++

Re: Dcc++

Messagepar msport » 24 Mars 2018, 12:49

Bonjour, merci pour cet avis.
J'ai fait des circuits imprimés maison, mais en raison des dégâts collatéraux, je préfère éviter maintenant. ;)
La solution des circuits sous-traités en Chine ou ailleurs me semble accessible mais je n'ai pas encore identifié un labo qui accepte des originaux style pdf au-lieu des gerber. (recherche info). Mais alors, probablement faut-il les percer soi-même ?
Reprendre ces originaux sous Kicad ou Eagle demande une maitrise de l'outil que je n'ai pas (encore ?).
Il existe des shields prototype qui permettent d'implanter des socket RJ45 en leur tordant les pattes. (1,25€) :
https://www.ebay.fr/itm/Prototype-PCB-D ... 3319649841
Et comme les clones Arduino Uno se trouvent à moins de 2,5€, ça fait quand même 16 entrées pas chères.
Surtout à partir du moment où Xavier nous les a fait remonter à la Base Station.
msport
 
Messages: 102
Inscrit le: 20 Décembre 2016, 15:15
Localisation: du coté de Nice

Re: Dcc++

Messagepar jpp38 » 24 Mars 2018, 18:47

Bonsoir,

Les choses se compliquent.

1) J'ai chargé le code fourni par Xavier (DCCpp_Z22_CDM), sur le UNO (sans le motor shield). Ca charge bien. Par contre la commande d'init <Y 1 1> ne retourne rien.
Il faut que le motor shield soit connecté pour qu'il réponde quelque chose?

2) Je n'arrive pas du tout à charger sur le MEGA (n'importe quel sketch). A priori, problème sur le port USB.

Je regarde encore un peu si j'arrive à faire discuter le MEGA. Sinon, je vais arrêter là, et vous filer le bébé.
A priori tout est écrit dans la DLL. Surement encore des coups de tournevis à donner, mais l'essentiel est fait.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Dcc++

Messagepar Xavier » 24 Mars 2018, 20:05

Bonsoir Jean-Pierre,

Je suis confus et désolé, j'ai du envoyer une version non définitive :cry: la voici donc
DCCpp_Z22_CDM.zip
(35.99 Kio) Téléchargé 84 fois


J'en ai profité pour avoir des messages d'erreur plus complet (Bad Argument value / Bad Argument count)

Une fois chargé DCCpp_Z22_CDM sur le Uno, quand tu ouvre le moniteur série, vois tu le message de démarrage de DCC++ ("<iDCC++ BASE STATION FOR ARDUINO ")?
As tu bien sélectionné dans le moniteur série (NL & CR) et 115200 bauds ?

Si je retire le shield du Mega:
J'ai bien le message de démarrage mais quand je passe la commande <Y 1 1>, j'ai un message incomplet <y >

Si le shield est present, quand je passe la commande <Y 1 1>, j'ai le message <y 00>

Pour charger dans le Mega, il faut modifier Outil/Type de carte/ Arduino Mega 2560
Le port est détecté à l'ouverture de l'IDE il faut brancher préalablement l'Arduino!

Amicalement,

Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Dcc++

Messagepar jpp38 » 24 Mars 2018, 20:07

Bon, je suis arrivé à charger le MEGA. Je n'ai pas compris pourquoi il refusait de "téléverser" tout à l'heure.

Par contre, je confirme, la commande d'initialisation <Y 1 0> ou <Y 1 1> est très capricieuse.

1) Le plus souvent, il répond <X>, ou ne répond pas du tout.

2) Quand il répond, et répond autre chose que <X>, que le 3eme argument de la commande <Y 1 0> ou <Y 1 1> soit à 0 ou 1, il s'en fiche. Il sort bien le nombre de sorties demandé (multiplié par 8), mais toujours en binaire, jamais en hexa.
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Dcc++

Messagepar jpp38 » 24 Mars 2018, 20:09

Salut Xavier,

Je viens seulement de voir ton message.
Je réessaye avec la nouvelle version.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Dcc++

Messagepar jpp38 » 24 Mars 2018, 20:51

Bon. J'ai chargé la nouvelle version, ca marche en binaire, mais en hexa, je n'ai toujours que la réponse <y >

J'ai mis le motor shield, alimenté en 16V, mais sans la connexion S88.
C'est la présence des connexions S88, qui fait que ça marche ou non?

De toute façon, ce serait bien de bétonner ça. Soit il donne le format demandé, soit il répond <X>.

D'autre part, j'ai l'intention de toujours demander 128 détections, soit 16 modules de 8 détecteurs.
En principe, ça passe toujours sans problème, compatible avec une lecture de chaine S88 tous les 1/10eme de seconde.
C'est OK pour toi?

JP

PS, ce serait bien de rajouter un indice de version pour savoir sur quelle version on travaille. ;)
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Dcc++

Messagepar Xavier » 24 Mars 2018, 21:13

Bonsoir,

A priori, c'est l'absence de S88 qui donne le <y >
Je confirme demain matin, et je vais essayer de "bétonner" la détection d'absence de S88.
Je viens de vérifier ce que ça donne si on donne plus de modules qu'il n'y en a physiquement: <Y 16 1> donne <y 00000000000000000000000000000000> bien qu'il n'y ait qu'un seul module physique.

J'espère que l'Arduino supportera une lecture touts les 1/10eme de seconde. Mais le gouvernement ne s'engagera pas la dessus!
Si besoin est je modifierai peut-être le mécanisme du <Y>.

Amicalement,

Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Dcc++

Messagepar jpp38 » 24 Mars 2018, 21:24

Mes essais étaient sur émulateur de terminal.

En essayant depuis CDM-Rail, il sort bien les valeurs en hexa.

Par contre:

1) le CR LF en début de réponse, avant le '<', est gênant. Ce n'est pas conforme avec le protocole en général qui ne fait pas de retour à la ligne, et pour lequel toute réponse commence par '<'. Ca m'arrangerait si tu les supprimais. Eventuellement, si tu en as besoin pour vérification visuelle, on peut prévoir un autre paramètre pour valider / dévalider le CR/LF.

2) Il semble que la réponse n'arrive pas dans les 200ns maxi que j'alloue pour la réponse.
En fait, quand on lance la commande <Y>, il faut renvoyer l'état actuel (mémorisé) de la chaine, sans refaire une nouvelle exploration: on n'a pas le temps pour ça.
A 100 000 Bds environ, la réponse ( de 36-38 caractères) devrait prendre : 38 octets x (8 + 2) x 10 us = 4 mS , donc largement en dessous de 100ms.
Si ça pose des problèmes pour la commande d'initialisation, celle-ci peut renvoyer un simple <O> au lieu de l'état de la chaine.

JP

PS: Sur le FIS88, j'ai utilisé une fréquence d'horloge s88 à 4800 Hz, ce qui permet de lire la chaine de 128 étages en un peu moins de 30ms.
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Dcc++

Messagepar msport » 24 Mars 2018, 21:27

jpp38 a écrit:... J'ai mis le motor shield, alimenté en 16V, ...


Au cas où :
L'arduino a un régulateur de tension sur le VIN qui n'est pas supposé supporter plus de 15V (12V en standard). Au delà il faut séparer le VIN de l'arduino de l'alimentation du shield motor (strap à couper sur le shield moteur)
msport
 
Messages: 102
Inscrit le: 20 Décembre 2016, 15:15
Localisation: du coté de Nice

Re: Dcc++

Messagepar msport » 24 Mars 2018, 21:34

jpp38 a écrit:... pourquoi il refusait de "téléverser" tout à l'heure ...

A l'occasion, le port série émulé perd la tête à l'occasion des débranchements (et change de n° de port COM si on change de prise USB)
remède : demander les infos de la carte (outils) ou démarrer le serial monitor ...
msport
 
Messages: 102
Inscrit le: 20 Décembre 2016, 15:15
Localisation: du coté de Nice

PrécédentSuivant

Retourner vers Le coin des bricoleurs (électronique)

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité