Auteur Sujet: DCC++ sur Nano avec LMD18200  (Lu 112867 fois)

Tanguy

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
DCC++ sur Nano avec LMD18200
« le: juillet 24, 2016, 10:24:08 pm »
Un petit partage de mes expérimentations du week-end : DCC++  sur un Nano  avec le module LM18200 recommandé par Dominique.

Le Programm DCC++ BaseStation n'est pas prévu pour le Nano (seulement UNO et MEGA), mais en substituant dans les fichiers les expressions "#ifdef ARDUINO_AVR_UNO " par "#ifdef ARDUINO_AVR_NANO " cela suffit à le le faire fonctionner.

N'ayant qu'un module LMD18200 je ne pouvais pas bénéficier à la fois de la voie principale et de la programmation; mais j'ai pu les tester séparément.

A - Utilisation de la voie principale :
Branchements arduino <-> LMD18200 :
3   <-> PWM (enable)
10 <-> DIR
GND <-> GND
GND <-> BRAKE
A0 <-> Current Sens
GND <-> R de 10 kOhms <-> Current Sens  (je n’avais pas de 2,7 kOhms qui aurait plus adapté pour délivrer 1V/A, l'intensité mesuré était donc presque 4 fois plus élevé que l'intensité consommé à prirori)

J’ai pu tester le pilotage d’une loco par le moniteur série aves les commandes basiques suivantes :
<1> power on
<0> power off
<t 1 3 20 1> commande locomotive sur le registre 1 adresse 3 vitesse 20 marche avant
... et cela fonctionne !!

B - Utilisation de la voie de programmation
Branchements arduino <-> LMD18200 :
11   <-> PWM (enable)
5    <-> DIR
GND <-> GND
GND <-> BRAKE
A1 <-> Current Sens
GND <-> R de 10 kOhms <-> Current Sens  (je n’avais pas de 2,7 kOhms ...)

J’ai seulement tester la lecture des CV (n’ayant pas de programmeur de CV pour corriger d’éventuelle bêtise) toujours en envoyant des instructions par le moniteur série :
<R 1 196 196>   (lecture de CV01, on peut mettre n’importe quoi à la place de 196)
Le moniteur retourne en quelques dixièmes de secondes « <r196|196|1 3> » => adresse 3

Conclusion : la mesure de courant directement par la pin du LMD18200, bien que très bruitée, est suffisante pour lire les CV

J’ai eu le temps de tester un peu DCC++ Contrôler (l’interface Processing pour commander notre BaseStation depuis l’’ordinateur) qui fonctionne également sans soucis avec ces montages.


En espérant que cela puisse être utile à l’un ou l’autre …

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #1 le: juillet 25, 2016, 10:10:04 am »
Merci Tanguy pour cet excellent test.

J'ai aussi testé de mon côté avec une carte moteurs Arduino et ça marche très bien.

Sur la photo, on voit les commandes tapées dans le moniteur.

Je commence à réaliser une manette en Processing pour apprendre le langage !

Je pense que DCC++ à de l'avenir pour nous !
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #2 le: juillet 26, 2016, 08:01:57 pm »
Ca y est j'ai écrit une manette en Processing : c'est de la programmation de débutant mais ça semble marcher.



Le fichier joint doit être dézippé et placé dans le dossier sketch de Processing.

Cliquer sur le bouton (Off) pour passer (On) : cela envoie <1> (et <0> en revenant à Off)
On peut choisir d'allumer les phares (F0) et la marche avant et arrière.

La vitesse se commande avec le curseur à glissière.

L'adresse dcc est en dur (pour le moment) dans le source : ici c'est 18

Merci de votre feedback.
Amicalement
« Modifié: juillet 26, 2016, 08:06:50 pm par Dominique »
Cordialement,
Dominique

Tanguy

  • Newbie
  • *
  • Messages: 19
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #3 le: juillet 27, 2016, 11:23:33 am »
Bonjour Dominique,

Je n'ai pas la possibilité de tester sur mon réseau ayant quitté le domicile pour les vacances.
Cependant le concept m’intéresse :
- le format me fait penser immédiatement à un écran de smartphone. Est-ce que la techno processing peut se déployer sur nos devices ?
- est-ce compliqué de débuter sur  processing avec un bagage Arduino ? combien de temps par exemple pour développer cette interface ?

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #4 le: août 03, 2016, 10:23:07 pm »
Merci Tanguy pour avoir démarré un post sur DCC++.

J'avais lancé le sujet entre copains le 13 juin parce que je sentais bien le potentiel du DCC++.
Mais, en plein déménagement, je n'avais pas fait de post sur Locoduino.

Je pense que c'est un très bon concept au niveau DCC/Arduino, mais améliorable côté processing.
N'ayant pas (encore...) de réseau, aucune loco DCC, je ne peux tester cette partie pour le moment.

Sur ce que dit Dominique, c'est un bon début en processing, sur écran de Mac en ce moment.
Processing n'est pas adapté à nos mobiles. Mais on peut le faire causer avec un Arduino qui, lui, doit pouvoir causer aux mobiles.

Penser à commander via le mobile, c'est à mon avis commencer par la fin. Ce n'est pas le plus urgent.
Il faut déjà un gestionnaire de réseau qui tienne la route et, ça, ça n'est pas simple. Entre autres, on a pour l'instant, 3 pistes par 3 auteurs différents (dont moi  ;)) sur Locoduino.

A suivre, donc.
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #5 le: août 06, 2016, 12:39:58 pm »
Je viens de prendre le temps de monter cette petite centrale DCC++ sur Nano avec un LMD18200 qui lui permet de monter à 3A grâce à son radiateur, un circuit avec un Max471 en série avec l'alim du LMD18200 permet de mesurer le courant coté continu. Une alim 5V permet d'alimenter le Nano quand le PC/Mac n'est pas branché sur l'USB (ce n'est pas encore le cas mais je compte bien développer une petite manette reliée sur TX/RX du Nano (Pins 0 et 1) pour éviter le PC).

J'ai ajouté 2 leds vertes en tête-bêche sur la sortie de puissance DCC/Rails pour voir quand les rails sont alimentés.

Un test avec la manette Processing décrite plus haut et ça marche d'emblée :))

Je joins d'ailleurs une nouvelle version de la manette qui affiche les messages du Nano et fait un arrêt progressif (ralentissement de la loco et arrêt de l'alimentation), pour commencer à tester les automatismes.
Il faut ajouter l' image "bye" dans le dossier du sketch pour que ça marche.

Je suis un peu déçu par la mesure de courant du Max471 qui reste confinée dans une petite plage entre 10 et 30 (mesure directe sur A0). Je dois tester maintenant le mode programmation : je vous dirai bientôt ce qu'il en est.
« Modifié: août 06, 2016, 12:59:37 pm par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : Re : DCC++ sur Nano avec LMD18200
« Réponse #6 le: août 09, 2016, 02:47:29 pm »
Je suis un peu déçu par la mesure de courant du Max471 qui reste confinée dans une petite plage entre 10 et 30 (mesure directe sur A0). Je dois tester maintenant le mode programmation : je vous dirai bientôt ce qu'il en est.

J'ai pu faire quelques tests de mesure du courant dans la fonction de lecture de CV
Je rappelle le principe utilisé par DCC++ :
- mesure du courant à vide (loco arrêtée, sans accessoires en service), par une moyenne de 8 mesures : j'ai trouvé environ "5" avec le Max471
- envoi de la commande de lecture au format NMRA, encadrée de Reset
- mesure du courant en boucle avec récupération des valeurs des bits correspondants (je vois monter la valeur lue sur le Max471 à 100 et plus, donc c'est bien net !
- vérification de la mesure

J'ai comparé le fonctionnement entre :
- le UNO avec un "motor shield" Arduino
- le Nano avec LMD18200 et Max471

J'obtiens bien les même résultats : c'est fiable.

Prochaine étape : mettre la lecture de l'adresse DCC (CV 1) sur la piste principale : le but est de réaliser un va et vient sur lequel on peut "poser" n'importe quelle machine. Le programme commencera par rechercher l'adresse DCC qui sera ensuite utilisée par le programme pour piloter la machine.

J'ai fait la modification du logiciel DCC++ et c'est concluant.

A suivre ...
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #7 le: août 10, 2016, 07:18:02 pm »
J'ai bien lu ??
On pose une loco sur le circuit principal et le système trouve quel adresse DCC elle a ?? ;) ;)
« Modifié: septembre 10, 2016, 10:33:35 pm par DDEFF »
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #8 le: août 11, 2016, 12:26:46 am »
Tu as bien lu !
Je l'ai testé aujourd'hui.

J'ai encore quelques petits problèmes mineurs de passages de variables entre objets mais je vais trouver  :P

Cordialement,
Dominique

gerard31

  • Newbie
  • *
  • Messages: 18
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #9 le: août 18, 2016, 10:09:32 pm »
Bonsoir Dominique,

Cet apres midi on sort la loco, le bout de reseau et le Pc.

Apres modification des lignes 156 et 157 de ManetteDCC (changement d'adresse DCC de 18 au 3 standart)
et les branchements adequats   on met sous tension et ça roule dans les deux sens sans soucis.

Voilà une interface processing (faut-il le maitriser)  toute simple, operationnelle rapidement et efficace.

Merci Dominique pour cette description ; on attend maintenant la suite déjà prévue...

Amities locoduinesques à tous

Gérard

PS J'ai utilise pour cette manip  Arduino Uno et Motor shield Deek-Robot
« Modifié: août 18, 2016, 10:16:24 pm par gerard31 »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #10 le: août 19, 2016, 12:47:38 pm »
Bonjour Gérard,

Cela me fait toujours plaisir de savoir que ce que j'ai fait marche aussi chez les autres modélistes. Merci pour ton compte-rendu clair et net  8) 8)

C'est promis, je vais décrire la suite bientôt notamment quelques modifications (ajouts et suppressions) dans DCC++ qui est tellement bien écrit qu'on arrive à y voir clair facilement. Permettre de descendre plus bas que le niveau du décodage des chaines de caractères <xxxx> pour réaliser un automate pour mon va et vient (sans interface PC évidemment) et aussi un "applet" Processing plus complet et dédié à la programmation pour étudier ce sujet que je ne maitrise pas encore.

J'ai 2 maquettes DCC++ en cours de test, l'une avec Nano pour la voie MAIN seulement, comme le montre la photo, et une autre sur UNO + carte Arduino pour 2 moteurs, avec voies MAIN et PROG...

... et dernièrement une autre avec Mega, carte Ethernet et carte moteurs  :-[ :-[

Donc à suivre, prochainement ...

Amicalement
« Modifié: septembre 04, 2016, 08:55:47 pm par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #11 le: septembre 06, 2016, 04:11:54 pm »
Bonjour à tous,

Après un petit test dans mon club de la détection automatique d'adresse DCC, il faut préciser que cette détection marche bien, mais ne marche, pour le moment, qu'avec les adresses courtes 1..127, contenues dans le CV1.

Je ne teste pas le bit 5 du CV29.

Prochaine version : Gestion des adresses longues et courtes (1..9999)
  • tester le bit 5 du CV29 (0=adresse courte dans CV1, 1=adresse longue dans CVs 17 et 18).
  • Lecture des CVs 1 (adresse courte), 17 (MSB adresse longue, et 18 (LSB adresse longue), selon le cas.
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #12 le: septembre 06, 2016, 04:21:35 pm »
Une autre précision bien utile :

Sur le LMD18200, il faut ajouter une résistance de 10K ou 4,7K entre l'entrée PWM et le GND.

En effet, au démarrage du Nano, cette entrée reste "en l'air" un certain temps avant que le code Setup ne déclare la pin SIGNAL_ENABLE_PIN_MAIN en sortie et la mette à l'état bas. Ce temps correspond à tout ce qui se passe dans le bootloader et autres initialisations, et cela représente environ 1 seconde.

Sans cette résistance, le LMD18200 peut envoyer du courant continu avant le démarrage du timer qui réalise le vrai signal DCC.

Je n'ai pas encore endommagé de loco, mais cela pourrait éventuellement arriver... on n'est jamais trop prudent !

« Modifié: septembre 07, 2016, 12:03:01 am par Dominique »
Cordialement,
Dominique

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3048
  • 100% Arduino et N
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #13 le: septembre 16, 2016, 10:37:01 pm »
Pour faciliter la vie de ceux qui voudraient réaliser une petite centrale, j'ai fait un schéma :



et une petite face avant sympa :

« Modifié: septembre 16, 2016, 10:42:38 pm par Dominique »
Cordialement,
Dominique

DDEFF

  • Hero Member
  • *****
  • Messages: 760
    • Voir le profil
Re : DCC++ sur Nano avec LMD18200
« Réponse #14 le: septembre 16, 2016, 10:40:53 pm »
Yeah ! ;D ;D
"Ce n'est pas le puits qui est trop profond, c'est ta corde qui est trop courte" (proverbe chinois)