LOCODUINO

Parlons Arduino => Le logiciel DCC++ => Discussion démarrée par: Tanguy le juillet 24, 2016, 10:24:08 pm

Titre: DCC++ sur Nano avec LMD18200
Posté par: Tanguy 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 …
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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 !
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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.

(http://www.locoduino.org/IMG/png/manette1.png)(http://www.locoduino.org/IMG/png/manette2.png)

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
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Tanguy 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 ?
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF 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.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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.
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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 ...
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF 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 ?? ;) ;)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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

Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: gerard31 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
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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 !

Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique 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 :

(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=423;image)

et une petite face avant sympa :

(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=427;image)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 16, 2016, 10:40:53 pm
Yeah ! ;D ;D
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 16, 2016, 10:46:12 pm
Avec le câblage des inters, poussoir  et leds

(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=429;image)


il ne reste plus que le soft à finir et la centrale à moins de 20€ sera prête à brancher sur le réseau  :8) 8)
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 16, 2016, 10:51:36 pm
Yeah ! ;D ;D

Un grand merci à Denis pour avoir déniché ce programme !

Mais tu es un peu loin pour trinquer  :-\
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 17, 2016, 09:16:39 am
Merci Dominique, mais je n'ai fait qu'être curieux. C'est toi qui a fait le travail.
On se reverra, ne t'inquiète pas.  ;D

Dans les fonctions inédites, le fait que ta centrale détecte les CV d'adresses loco. Et ça, ça n'est pas dans le DCC++ (mais on pouvait le trouver : la preuve !)
Je suis certain que sur cette lancée, on peut détecter d'autres choses, via d'autres CV.

Ce que tu proposes n'est pas tout à fait une centrale, mais une centrale particulièrement adaptée à la gestion d'une navette (d'où les détections des 5 zones et les LED correspondantes).

Pour une centrale commandant un réseau, évidemment, ce n'est pas le NANO qui fera les détections (je dis ça pour ceux qui commenceraient le forum là).

Par contre, dans le cas d'une gestion centralisée gérée par ta centrale, il faudrait y ajouter une entrée externe : CS (Consigne de Sécurité).

On en avait déjà parlé : cette consigne sera donnée par le gestionnaire (le DUE) et correspondra à la vitesse maxi autorisée pour ce train.

Il s'agit d'une consigne, c'est à dire qu'elle va dépendre des positions des trains, qui agit sur la couleur des signaux, qui donne donc la consigne de la vitesse maxi autorisée.
Consigne et, donc, variable.

Vivement l'article !
PS : A5, c'est SCL.
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: PAT95 le septembre 17, 2016, 04:34:11 pm
Ca y est j'ai écrit une manette en Processing : c'est de la programmation de débutant mais ça semble marcher.

(http://www.locoduino.org/IMG/png/manette1.png)(http://www.locoduino.org/IMG/png/manette2.png)

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

Bravo Dominique j'ai testé la manette avec un UNO, LMD18200 et MAX471 ça marche et j'ai même changé le registre 5 en 1 ainsi que l'adresse en 3.
A+
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 20, 2016, 09:46:27 pm
Bonsoir,
je me suis présenté dans le fil correspondant.
Ma configuration : windows 10 x64, 16Go, AMD 3.2Ghz x4
en test DCCpp_VV sur Nano+LMD18200+MAX471, Alim 14V 2A, une V36 de Lentz
processing installé avec arduino 1.6.9 puis ManetteDCC chargé

Le problème que je rencontre est le lien entre processing et arduino : j'ai modifié la ligne dans le sketch processing pour qu'il utilise COM1 et l'adresse de ma loco (36)
apparemment, il y a bien un lien puisque ma loco démarre, phares allumés. Par contre, la manette est inopérante.
Le début de la zone de diagnostic :
Le croquis utilise 13 792 octets (44%) de l'espace de stockage de programmes. Le maximum est de 30 720 octets.
Les variables globales utilisent 656 octets (32%) de mémoire dynamique, ce qui laisse 1 392 octets pour les variables locales. Le maximum est de 2 048 octets.
Exception in thread "AWT-EventQueue-0" java.util.NoSuchElementException
   at processing.app.helpers.CircularBuffer.min(CircularBuffer.java:42)
   at processing.app.SerialPlotter$GraphPanel.computeBounds(SerialPlotter.java:90)
   at processing.app.SerialPlotter$GraphPanel.paintComponent(SerialPlotter.java:124)
   at javax.swing.JComponent.paint(JComponent.java:1056)
   at javax.swing.JComponent.paintChildren(JComponent.java:889)

Quand je recharge le sketch arduino minimum en laissant processing actif, j'ai :
java.io.IOException: jssc.SerialPortException: Port name - COM7; Method name - setEventsMask(); Exception type - Can't set mask.
   at processing.app.Serial.dispose(Serial.java:144)
   at processing.app.SerialPlotter.close(SerialPlotter.java:275)
   at processing.app.AbstractMonitor.suspend(AbstractMonitor.java:96)
   at processing.app.Editor$DefaultExportHandler.run(Editor.java:2404)
   at java.lang.Thread.run(Thread.java:745)
Caused by: jssc.SerialPortException: Port name - COM7; Method name - setEventsMask(); Exception type - Can't set mask.
   at jssc.SerialPort.setEventsMask(SerialPort.java:279)
   at jssc.SerialPort.removeEventListener(SerialPort.java:1064)
   at jssc.SerialPort.closePort(SerialPort.java:1090)
   at processing.app.Serial.dispose(Serial.java:141)
   ... 4 more
Tout redevient normal quand j'arrête processing.

Merci pour votre aide, j'imagine qu'il s'agit d'une erreur de débutant.

Michel

PS : la fenêtre du moniteur série avec une échelle sur la gauche.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 20, 2016, 10:35:19 pm
Bonjour Michel,

Si je comprend bien, il y a plusieurs questions :

1) le choix du port COM dans le sketch processing.

Je suis sur Mac et ça fonctionne directement, mais sur Windows, je sais que le choix du port est fait autrement. Et là je ne connais pas. DDDEF pourra peut-être vous en dire plus. Si vous l'avez déterminé dans le sketch, c'est que vous n'êtes pas loin.

2) Je ne comprend pas bien ce qui se passe avec les exceptions dans Processing, d'autant que vous avez apparemment la fenêtre affichée mais inopérante.
Est-ce que l'Arduino qui contient le croquis DCCpp_VV est branché sur un port USB de votre PC ? Sans doute. Est-ce que le sketch Processing "voit" le bon port ?
Le cause est probablement là.

3) Si vous tentez de rechargez (par téléversement ?) le sketch arduino en laissant processing actif qui occupe le port série de l'Arduino, ce n'est pas étonnant que ça ne fonctionne pas : le port série de l'Arduino ne peut pas être utilisé en même temps par 2 applications : Processing et l'IDE Arduino.

Mais je n'ai peut-être pas bien compris votre question. Avez-vous vérifié votre version de Java qui est le moteur principal de l'IDE Arduino et de Processing ?

Les lignes de diagnostic ne me disent rien en fait, c'est la description de ce que vous faites qui est la plus importante.

Donnez moi plus de détails par MP.

Cordialement
Dominique
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 21, 2016, 09:16:07 am
Bonjour Michel,

A ma connaissance, on ne peut pas modifier "en dur" le port utilisé par Processing. En tout cas, pas directement.
J'utilise un bout de programme dans Processing qui permet de choisir le port, mais je pense que dans ton cas, il n'est pas nécessaire.

Je note dans ce que tu dis que tu as forcé le COM1 dans Processing et dans ton extrait de message d'erreur que java cherche le COM7. C'est sûr que ça ne va pas marcher.

Je vais expliquer en détail, quitte à enfoncer des portes ouvertes. Des fois, on bloque sur des choses évidentes... ;)

Ce que je propose :

D'abord une petite vérification : tu débranches le câble USB de l'Arduino et tu le rebranches. Puis tu téléverses le sketch Arduino. Ne lance pas Processing.

Tu choisis ton modèle d'Arduino dans Arduino outil/type de carte et tu regardes quel port série il t'a attribué dans outil/port.

Si tu as deux Arduino de branchés (c'est mon cas), tu verras que suivant l'ordre dans lequel tu les branches, le choix des ports est croisé.
Tu peux éventuellement choisir toi même ton port via l'interface IDE, mais uniquement parmi ceux que l'USB t'a réservé.
Moi, j'ai souvent le choix entre COM6 et COM7 pour mes deux Arduinos.

Tu lances le sketch Arduino et tu ouvres le moniteur série.
C'est bête à dire, mais il faut que la vitesse du port (en bas à droite) soit la même que celle du sketch (115200 dans ton cas)  ;D

Passons à ton problème.

Bien que ça ne serve certainement à rien, je débranche le câble USB pour être sûr qu'on a bien tout initialisé.
J'ouvre Arduino, je téléverse et SURTOUT je n'ouvre pas le moniteur série !!  :-X
Sinon, le port est occupé et Processing ne pourra pas marcher.

Puis j'ouvre Processing et je lance.
Processing dresse une liste des ports et prend le premier port série par défaut.
Si tu n'as pas 50 ports utilisés en même temps, ça marche du premier coup.

Dis-moi si ça marche, maintenant

Denis (= DDEFF, avec seulement deux D  ;D)
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 21, 2016, 09:48:42 am

Denis (= DDEFF, avec seulement deux D  ;D)

... Et deux F.
Tu a l'œil !
Et mon clavier à des rebonds ;(
Désolé !
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 21, 2016, 10:06:13 am
Bonjour à tous,
un grand merci pour vos réponses détaillées (et rapides).
je suis confus, je n'ai pas encore testé, mais dans ma fébrilité, j'ai bien sur lancé l'IDE d'arduino ET processing.
je vous propose de supprimer mon message (puis celui-ci) dans le fil, vu la banalité de la solution. Ce qui vous permettra de faire également le ménage pour garder un fil propre.

Michel
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 21, 2016, 10:26:16 am
Ok on peut le supprimer, mais, stp, confirmes nous que ça marche.

Cela dit, je pense que le conseil n'est pas inutile et peut éviter la même mésaventure à d'autres.

Cordialement.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 21, 2016, 10:40:38 am
Pour info, vu que de nombreux posts traitent de Processing et qu'il est même utilisé dans l'appli populaire de Dominique, je vous signale que je vais faire un article sur les bases de Processing (comment on l'installe, ce qu'il sait faire et ce qu'il ne sait pas faire, la gestion du port Série, ...)

Mais je suis d'accord avec Dominique : les erreurs peuvent être instructives.
Je n'ai pas honte de dire que j'avais un moniteur Arduino à 9600 et un sketch à 115200. Et je me suis demandé longtemps pourquoi ça n'affichait rien... :(

Attention à ce que tu écris : tu es obligé de lancer l'IDE Arduino (ne serait-ce que pour téléverser le sketch).

Ce qu'il ne faut pas lancer, c'est le moniteur Arduino.
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 21, 2016, 02:22:58 pm
...  tu es obligé de lancer l'IDE Arduino (ne serait-ce que pour téléverser le sketch).

Ce qu'il ne faut pas lancer, c'est le moniteur Arduino.

Pas sur !

Sur Mac en tout cas, après un televersement, il est possible que le port ne soit pas libéré. Il vaut mieux quitter l'IDE carrément.
D'ailleurs l'IDE n'est pas nécessaire pour utiliser Processing.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 21, 2016, 03:15:29 pm
On avance, on avance ...

Déjà j'ai bien l'adresse 36 de ma loco dans le moniteur en lançant le sketch arduino ...

Ensuite, en n'ouvrant pas le moniteur Arduino et en remodifiant la ligne du sketch processing :
  String portName = Serial.list()[1];
j'ai bien le sketch arduino dans les diags processing :
COM1 COM7
<DCC++ BASE STATION FOR ARDUINO NANO / LMD18200 MOTOR SHIELD + MAX471: V-1.2.1-DB / Sep 21 2016 14:52:02>
<N0: SERIAL>
<p1>
<rm123|123|1 36>
m123
adresse DCC : 36
<p0>
Par contre, je n'ai qu'un clin d'oeil en vert avant de repasser instantanément en rouge.
Seul le bouton Exit semble actif avec In stop <p0> qui s'affiche dans la dite fenêtre.

Que vérifier ?
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 21, 2016, 03:57:44 pm
Je serais pour String portName = Serial.list()[0];
Le premier port est le "0"
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 21, 2016, 04:03:32 pm
non, non :
 String portName = Serial.list()[0];
donne
COM1 COM7
et rien d'autre ...
donc pas la communication avec arduino qui suit (avec Serial.list()[1] dans mon cas)
<DCC++ BASE STATION FOR ARDUINO NANO / LMD18200 MOTOR SHIELD + MAX471: V-1.2.1-DB / Sep 21 2016 14:52:02>

Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 21, 2016, 04:33:39 pm
Voilà ton problème : tu veux un port COM précis et, par défaut, Processing ne connait que le port Serial.list()[0];

Ce que tu veux est compliqué en Processing : choisir un port dans une liste.

Processing édite une liste (Serial.list()[n]) avec n = nombre de ports détectés, c'est automatique.

La seule façon que j'aie trouvé, c'est de trier cette liste pour que le port que tu veux soit en Serial.list()[0]; (mais c'est compliqué)
Mais pas de dire "je prends le deuxième"...
Je suis quasi certain qu'on ne peut pas directement.

Peux-tu retirer ce que tu as en COM1, et ainsi ne garder que le port Arduino ?
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 21, 2016, 04:52:38 pm
je ne pense pas (dans la limite de ce que je comprends) que le problème vienne de ce point puisque processing communique bien avec arduino avec Serial.list()[1] dans mon cas, cohérent puisqu'il trouve deux ports. Si processing affiche bien le message de version du sketch arduino, c'est qu'il communique sur le COM1. Le COM7 est celui de la carte Nano.
Il y a probablement un COM1 physique sur ma carte mère mais il n'y a pas de header sorti, mais j'imagine qu'il peut être désactivé dans le BIOS, je vais regarder au prochain arrêt.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 21, 2016, 05:09:41 pm
Je constate qu'il y a bien communication entre l'Arduino et Processing.

Sinon, Processing n'inventerait pas ce qu'il écrit, qui vient bien de l'Arduino :

Serial.list()[0] = COM1
Serial.list()[1] = COM7

Processing l'écrit sur la première ligne :
COM1 COM7

On peut donc considérer qu'il y a bien échange entre l'Arduino et Processing.
Donc, là n'était pas le problème.

Donc, c'est dans le programme Processing qu'il ne va pas plus loin que cet affichage.

Tu peux m'envoyer ton programme Processing STP ?
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 21, 2016, 05:31:43 pm
j'ai bien le sketch arduino dans les diags processing :
COM1 COM7
<DCC++ BASE STATION FOR ARDUINO NANO / LMD18200 MOTOR SHIELD + MAX471: V-1.2.1-DB / Sep 21 2016 14:52:02>
<N0: SERIAL>
<p1>
<rm123|123|1 36>
m123
adresse DCC : 36
<p0>
Par contre, je n'ai qu'un clin d'oeil en vert avant de repasser instantanément en rouge.
Seul le bouton Exit semble actif avec In stop <p0> qui s'affiche dans la dite fenêtre.

Que vérifier ?


Cela prouve que la liaison série fonctionne bien dans le sens Arduino -> Processing : c'est bien ce qu'envoie l'Arduino qui fait la détection automatique d'adresse DCC et ferme le DCC ensuite (<p0>) ce qui explique que l'écran s'affiche vert un court instant et redevient rouge.
Cela prouve aussi que le sketch Processing fonctionne bien et traite les messages reçus.

Le seul bouton actif qui devrait fonctionner est le bouton en haut à gauche qui est à l'état OFF : en cliquant dessus, l'écran devrait passer à vert, ce bouton à ON et le reste doit fonctionner.

Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 21, 2016, 05:37:09 pm
sauf deux modifs (adresse et COM) ce devrait être :
 * Manette DCC
 * by Dominique Bultez, 30 Aout 2016.
 * V0.8 31/08/16
fichier plus capture du contenu du répertoire ManetteDCC
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 21, 2016, 05:52:02 pm
Je vois des message d'erreur dans le .pde, en particulier ligne 314 (serialEvent) ??
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 21, 2016, 08:41:23 pm
cette ligne 314 c'est la seule référence à serialEvent :
if (myPort.available() > 0) {
    serialEvent(myPort);
}

dans le répertoire du sketch, il y a un autre sketch : SerialEvents (S et avec un s). Qui est bien lié puisque le premier sketch se plaint quand on renomme le deuxième.

mais n'ayant aucune idée sur processing ...
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 22, 2016, 10:53:15 pm
Bonsoir,
j'ai installé DCC++ Base Station et son controller : celui-ci m'en dit un peu plus dans la barre d'en tête :
Serial port busy : /dev/tty.usbmodem1431
ce qui semble correspondre au driver du port COM émulé par l'USB (ce qui n'est pas une grande découverte)
je soupçonne que le problème peut venir de mes essais de diverses cartes arduino avec des drivers différents (le CH340 qui peut remplacer le 16U2) avec de plus une première installation manuelle du driver qui peut faire double emploi avec la détection automatique de l'IDE.
Je vais tenter de remettre la main sur une carte arduino de première génération ...
Sinon il ne me reste plus qu'à monter une manette physique. (avis bienvenus)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 23, 2016, 08:19:41 am
Je suis plutôt fan de la manette physique et concrète. Un PC ou une tablette ou un smartphone, c'est beaucoup trop de technologie et de puissance pour faire pas grand chose.

Sauf dans le cas où on développe un gestionnaire complet comme Christophe ou un TCO sophistiqué comme Denis.

Un simple Pro Mini, un potar, qq boutons, une pile et un transmetteur radio devrait permettre de faire une manette à mettre entre toutes les mains : je pense aux enfants  ::)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 23, 2016, 08:35:51 am
Citer
cette ligne 314 c'est la seule référence à serialEvent :
if (myPort.available() > 0) {
    serialEvent(myPort);
}

dans le répertoire du sketch, il y a un autre sketch : SerialEvents (S et avec un s). Qui est bien lié puisque le premier sketch se plaint quand on renomme le deuxième.

C'est ce que je pensais. Tel quel, seul, ce programme ne fonctionne pas.
Tant qu'il y a un messager d'erreur souligné en rouge, Processing refuse de démarrer.
Or, tu l'as fait marcher : donc, il manquait quelque chose.

Peux-tu envoyer la directory complète (en .zip) STP ?

Concernant les manettes, je suis pour une sorte de GPS pour train que j'ai déjà bien dégrossi.  ;)
http://forum.locoduino.org/index.php?topic=156.0 (http://forum.locoduino.org/index.php?topic=156.0)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 23, 2016, 11:43:23 am
merci de vous intéresser à mon cas ...
le fichier zip devrait contenir ce qu'il y avait dans l'original - sauf accident - et sauf le répertoire MAC.
Le cahier des charges de Dominique me va : une manette à mettre entre toutes les mains : je pense aux enfants.
Au point où j'en suis (pas encore réussi à faire tourner un DCC++) je préfère démarrer modeste, avec un projet où je comprends (presque) tout.
Ce qui me semble le cas de :
http://trainelectronics.com/DCC_Arduino/DCC++/Throttle/
et qui commence bien, avec un problème de library de LCD ...
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 23, 2016, 05:02:51 pm
Au point où j'en suis (pas encore réussi à faire tourner un DCC++) je préfère démarrer modeste, avec un projet où je comprends (presque) tout.
Ce qui me semble le cas de :
http://trainelectronics.com/DCC_Arduino/DCC++/Throttle/
et qui commence bien, avec un problème de library de LCD ...

Le projet est assez attrayant et tu peux même te passer du clavier en utilisant le bouton rotatif pour entrer des nombres (l'adresse DCC) en validant avec un autre bouton. Ça économise un paquet de temps et la manette reste petite pour simplement piloter 1 ou 2 trains.

C'est d'ailleurs ce que je tente de faire directement dans le Nano qui fait tourner DCC++ pour mon automatisme de va et vient. Et la j'en bave un peu car la mémoire manque.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 23, 2016, 06:58:23 pm
Bon, cette fois c'est la bonne. J'ai probablement de la chance, mais ce n'est pas interdit.
Un fois réglé les problèmes de library (je pense que l'auteur a mal vécu le passage à I2C pour l'afficheur), j'ai branché le TX de la throttle au RX du booster DCC++ et ça a marché du premier coup. (le TX se chargeant d'alimenter l'arduino du booster !)
Le temps de trouver où se trouvent les touches sur mon clavier 4x4, de sélectionner l'adresse de ma loco avec quelques rebonds ou parasites en plus, et ça roule !
Cerise sur le gâteau, au hasard des touches de fonction, voila que mon locotracteur V36 se met à me faire la séquence du décrochage automatique dont je rêvais depuis son acquisition après l'avoir deviné dans la traduction automatique de l'allemand de la notice.
Du bonheur !
Merci pour votre aide et la mise en ligne de vos projets.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 23, 2016, 07:34:25 pm
Alors là je dis bravo  8) 8) 8)

Et j'espère voir bientôt ta réalisation dans ces pages de Locoduino !

Amicalement
Dominique
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 23, 2016, 08:00:59 pm
Ah que moi aussi  8)

Je vais quand même un peu décortiquer ce que tu m'as envoyé.
Ce n'est pas parce que tu la fais marcher directement qu'on ne peux pas regarder aussi pour le faire marcher via Processing.

Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: msport le septembre 23, 2016, 09:42:05 pm
juste pour la photo du throttle avant que je n'investisse (*) dans une machine de découpe au laser comme l'auteur (qui nous donne les typons).
http://trainelectronics.com/DCC_Arduino/DCC++/Throttle/#Wireless_Option
le clavier 4x4 est ce que j'avais dans mes tiroirs (au lieu du 3x4). Il me semble que les boutons poussoirs ne servent plus (remplacés par # et * du clavier) mais ils sont toujours dans le sketch. Celui-ci ci-joint modifié pour qu'il compile dans la version des bibliothèques qui vont avec l'IDE 1.6.9
Le câblage est le premier de l'article du lien ci-dessus.

* Bon, ce n'est pas si cher que ça : 370€, ni si important : (800x500x250mm) mais je vais quand même regarder si un boitier du commerce ne pourrait pas convenir. Ça ne va pas avec les meubles du salon.
http://www.ebay.fr/itm/40W-Engraving-Cutting-CO2-Laser-USB-Machine-Engraver-Cutter-woodworking-/290940824902?hash=item43bd6cad46:g:gMsAAOSw5VFWF3Pl
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 24, 2016, 07:49:19 pm
Salut Dominique,

Dans la série "Denis barré", je me pose quelques questions :

1°) Tu as trouvé une idée géniale pour lire le CV1 (et d'autres pour les adresses longues). OK. Bravo !  ;D

Par ailleurs, ne serait-ce que pour la détection d'occupation, le réseau est découpé en cantons.
Cantons sur lequel un train seul fonctionne (sauf cas particuliers). C'est même un peu le but : un seul train par canton.

J'en déduis qu'à chaque fois qu'un train s'arrête (en gare, par exemple), tu peux faire ta mesure sur ce canton là, qui ne contient qu'une seule loco.
Et, donc, savoir quel train est sur ce canton.

La mesure que tu fais sur un seul train pour ta navette (quasi isolée du réseau) peut donc être étendue à d'autres cantons et plusieurs fois, pour re-caler le gestionnaire de réseau qui, normalement, sait quel train est sur quel canton.

2°) Si je lis bien ton post du 31/08 :

Citer
Pour ce faire, j’ai ajouté un enregistrement des valeurs de mesure de courant dans toutes les phases de ReadCV_Main (PacketRegister.cpp) et un affichage à la fin de la fonction. Comme cela, ça ne perturbe pas trop les timings.

Je rappelle que la fonction ReadCV envoie 8 fois une commande de lecture pour lire les 8 bits du CV, puis une 9ème commande pour obtenir un bit de vérification.
Aussitôt après chaque commande, le sketch se met en lecture du courant dans une boucle de 500 lectures (ACK_SAMPLE_COUNT qui doit correspondre grosso modo à au moins 6 millisecondes, je n'ai pas mesuré), au cours de laquelle il recherche une valeur qui dépasse le seuil égal au courant de base + 30 (ACK_SAMPLE_THRESHOLD). Si ce seuil est dépassé c’est un bit 1 sinon 0.

Evidemment, il faut UNE SEULE LOCO sur la voie principale et il ne faut pas que la loco roule pour faire cette mesure, moteur arrêté, car c'est en activant le moteur 9 fois pendant 6 ms que le décodeur va "passer son message".

Ces valeurs sont déduites de la norme NMRA http://www.nmra.org/sites/default/files/s-9.2.3_2012_07.pdf

Où il est écrit : Basic acknowledgment is defined by the Digital Decoder providing an increased load (positive-delta) on the programming track of at least 60 mA for 6 ms +/-1 ms. It is permissible to provide this increased load by applying power to the motor or other similar device controlled by the Digital Decoder.

La valeur du seuil (30 dans le soft) peut ou non correspondre à ces 60mA de delta consommation, c’est un truc à étalonner si ça ne marche pas du premier coup. De plus il est évident que c'est différent en N et en HO !?!

Ton système est basé sur une mesure relative d'une tension en environnement fortement bruité.
Et donc fonctionne d'autant mieux que la tension est faible (et donc au mieux à l'arrêt).

Mais comme tu as une alimentation unique pour le réseau, on peut se permettre de la compliquer un peu.
J'ai des souvenirs (théoriques, malheureusement) "d'extraction d'un signal noyé dans du bruit". Cela doit être possible de nettoyer ton signal et améliorer la précision de la mesure, via l'électronique ?  ???

3°) Encore plus fou : on coupe le courant d'une loco en coupant l'alimentation de ce canton.
On mesure (54 ms) et on remet le courant  :o ::) :o

Amicalement


Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 24, 2016, 11:23:37 pm
J'en déduis qu'à chaque fois qu'un train s'arrête (en gare, par exemple), tu peux faire ta mesure sur ce canton là, qui ne contient qu'une seule loco.
Et, donc, savoir quel train est sur ce canton.
La mesure que tu fais sur un seul train pour ta navette (quasi isolée du réseau) peut donc être étendue à d'autres cantons et plusieurs fois, pour re-caler le gestionnaire de réseau qui, normalement, sait quel train est sur quel canton.

Ce n'est pas tout à fait cela que je fais : la mesure de courant pour récupérer la réponse du décodeur de la machine se fait au niveau de la centrale et non au niveau du canton. Je ne peux pas faire une mesure dans une zone (on ne devrait pas dire "canton") particulière. Je lis la réponse d'une loco quelle que soit sa position dans le réseau. C'est pour cela qu'il faut qu'il n'y en ait qu'une seule.

Ou alors il faudrait installer un Max471 dans toutes les zones où on veut faire une lecture, chose qui pourrait se combiner avec la détection de consommation (qui est binaire pour le moment).

Effectivement, s'il fallait ramener une tension analogique (la sortie du Max471) vers une ou plusieurs entrées analogiques dans la centrale, à travers des fils assez longs, il y aurait certainement des perturbations. Le meilleur moyen serait de coller un Arduino Pro Mini avec chaque Max471 dans chaque zone concernée, puis d'échanger un processus de commande - réponse avec le gestionnaire (pourquoi pas avec le bus CAN).

Mine de rien, on est en train de réinventer RailCom !!!! Mais je ne le connais pas assez pour comparer (pour le moment).

Mais peut-être en plus simple ?
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le septembre 25, 2016, 02:18:23 pm
Et surtout en beaucoup moins cher... ;D ;D

Je ne connais pas bien RailCom, mais c'est sûr qu'il y a du matos pour chaque zone.
Il est hors de question de balader de l'analogique : il faut traiter au niveau du canton (ou de la zone, si tu veux.)
Mais je n'envisage pas de détecter la présence autrement qu'avec de la détection de consommation de courant.

Amicalement
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 27, 2016, 02:21:42 pm
Au passage j'annonce que je détecte maintenant les adresses longues (si bit 5 du cv#29=1) dans les CV 17 et 18, et les adresses courtes (si bit 5 du cv#29=0) dans le CV 1.

J'en profite pour corriger tous les "warning" du compilateur et j'ajoute des commandes "de l'intérieur" sans perdre les possibilités de commandes par le port série : c'est très pratique pour la mise au point.
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le septembre 27, 2016, 08:53:19 pm

Mais je n'envisage pas de détecter la présence autrement qu'avec de la détection de consommation de courant.

Et pourtant il y a plein d'autres manières de détecter des convois, que soit leur présence, leur passage, leur identité, etc.

Ce sujet est souvent abordé dans les articles de Locoduino et sur le Forum.

Cela vaudrait le coup de faire un article qui réinit toutes les techniques utilisables dans nos réseaux, et fonction des besoins et des technologies.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: PAT95 le novembre 01, 2016, 08:06:01 pm
Bonsoir à tous,

J'ai fabriqué une manette en DCC++ sur Nano et LMD18200, un afficheur grove LCD le tout "rentré" dans une boite du commerce. Les premiers essais sont très encourageant mais avant de poursuivre j'ai une question :

Comment gérer les surtensions, les courts circuit des déraillements?

Il doit y avoir des lignes de code dans DCC++ pour protéger le matériel. Comment et où?
Merci
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 02, 2016, 09:33:39 am
Bonjour,

La détection de court-circuit est déjà présente dans le code de DCC++ BaseStation : c'est au début de la LOOP par l'appel de la méthode Check() de Currentmonitor.

Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 02, 2016, 10:36:56 am
plus exactement c'est ça dans la loop() qui assure la détection de cc :

  if(CurrentMonitor::checkTime()){      // if sufficient time has elapsed since last update, check current draw on Main and Program Tracks
    mainMonitor.check();
    progMonitor.check();
  }
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: PAT95 le novembre 10, 2016, 10:14:55 am
Bonjour Dominique
je vois sur le schéma de la petite centrale un module qui régule le 15v en 5v est-ce une fabrication maison ou achetée dans le commerce et où?
Merci de votre réponse je n'ai pas envie de reprendre le fer à souder.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 10, 2016, 10:21:48 am
Le module d'alimentation 12-15V vers 5V à base de 7805 se trouve abondamment sur la baie, en voici un exemple :
http://www.ebay.fr/itm/L7805-LM7805-Step-Down-Converter-7-5V-35V-to-5V-Regulator-Power-Supply-Module-/400569233325?hash=item5d43c96fad:g:ay8AAOSwU-pXsss1 (http://www.ebay.fr/itm/L7805-LM7805-Step-Down-Converter-7-5V-35V-to-5V-Regulator-Power-Supply-Module-/400569233325?hash=item5d43c96fad:g:ay8AAOSwU-pXsss1)

Mais on peut aussi facilement se bricoler une alim régulée avec un 7805, 2 capas, ... pas sûr que ça revienne moins cher  ???
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 10, 2016, 10:45:14 am
Je viens de réaliser une nouvelle version de ma centrale pour Va et Vient.

Cette fois c'est un régulateur LM317 que j'avais dans mes fonds de tiroir  ::)

(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=517;image)
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 11, 2016, 12:00:52 pm
Voilà j'ai terminé la centrale Va et Vient version 2 avec une face avant plutôt sympa (environ 10x10 cm) que je vais intégrer dans mon tableau de bord.

(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=524;image)

J'ai tenté d'utiliser cette fois-ci la pin de mesure de courant du LMD18200 : échec, ça ne marche pas). J'ai donc ajouté le petit circuit Max471 en série avec l'alimentation du LMD18200 comme je l'ai préconisé plus tôt.

L'afficheur 2x16 en I2C affiche :
- l'adresse DCC reconnue automatiquement (en configuration, on peut en définir une autre qui sera prise en compte en cas d'échec de la reconnaissance - il vaut mieux qu'il y ait de bons contacts entre les rails et la loco lors de cette reconnaissance)
- le cran de vitesse commandé à la loco par le logiciel
- la consigne de vitesse en km/h à l'échelle N
- la vitesse réelle en km/h mesurée en parcourant l'une des zones (dans mon cas : 2 zones centrales, 2 zones de ralentissement et 2 zones d'arrêt qui sont les 2 gares)
- le nom de la zone qui correspond à l'une des leds vertes reliées aux capteurs de consommation

J'ai remplacé le "potentiomètre qui crache" par un encodeur en quadrature, pas si facile à gérer que cela, il a fallu utiliser une interruption 0 (pin D2) et le code de Nick Gammon (de plus en plus mon grand copain ;)

Il ne reste que 2 boutons :
- un pour les feux
- un pour le Marche/Arrêt qui est 100% logiciel : Marche->Arrêt stoppe la loco et déactive le DCC (cela permet de changer de machine) et Arrêt->Marche relance la reconnaissance de l'adresse DCC et fait démarrer la loco en phase de reconnaissance du parcours pour initialiser l'automate.

La configuration ne peut se faire qu'à la mise sous tension, en maintenant appuyé le bouton de l'encodeur. Les paramêtres possibles sont : la distance de la zone qui sert à mesurer la vitesse (en cm), la durée d'arrêt dans les gares (en secondes) et l'adresse DCC par défaut.

Si vous voulez plus de détails et le logiciel, vous pouvez me le demander. Si vous êtes intéresse par un article complet sur la réalisation, je peux m'y mettre aussi.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 11, 2016, 12:02:42 pm
Et maintenant voici le coté câblage :

(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=526;image)

Là on peut voir les vicissitudes du DIY  :P :P

Certes le coût de la centrale est très faible (environ 20€) auquel il faut ajouter un paquet d'heures pour le montage et la programmation (une semaine, et encore je ne suis pas parti de zéro !). J'ai privilégié les soudures et les câbles en nappe pour avoir une meilleure fiabilité à long terme. Même le Nano est soudé, je ne pense pas que j'aurais besoin de le récupérer un jour et ce n'est que 5€.

Pour bloquer les nappes au dos de la face avant, rien de plus simple qu'une touillette de café collée à la cyano avec des petites cales pour ne pas abimer les nappes  :o 8)

Mais cela vaut le coup car la joie est grande de voir mes locos parcourir cette voie complètement automatiquement, avec des accélération et des ralentissements réalistes et avec plusieurs asservissements de vitesse qui marchent à merveille.  :D ;D

Cela confirme la grande qualité du logiciel DCC++ dont je n'utilise pas l'interface série (pour le moment mais elle n'est pas désactivée) et sa capacité à fonctionner en même temps que l'I2C et l'interruption 0 pour l'encoder.

Comme je l'ai écrit plus haut, les plans et le code sont à votre disposition sur demande.

Amicalement

Dominique
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: DDEFF le novembre 11, 2016, 02:05:06 pm
Et quand on boit du thé, on fait comment ?  ;D ;D ;D

Je rigole : magnifique réalisation.  ;)

Évidemment, il faut un article pour la partie technique, la réalisation proprement dite.

Je ne pense pas que quelqu'un va réaliser exactement la même chose, puisque ton proto correspond à une situation particulière, mais savoir pourquoi tu as choisi tel matériel et pas un autre, où tu l'as eu, le schéma de câblage, ... Tout cela ne peux que donner des pistes pour des réalisations personnelles.

Par ailleurs, je sais que l'article sur la programmation, nécessaire aussi, évidemment, va, là aussi, ouvrir l'esprit des Locoduiniens.
Que demander de mieux ?
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 11, 2016, 02:15:03 pm
... Et je me rend compte que je vois mieux les soudures sur les photos, qu'avec mes lunettes au dessus du circuit !!
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: PAT95 le novembre 12, 2016, 04:40:49 pm
Bonjour Dominique
Encore une question à propos du schéma, l'alimentation 15v si je comprends bien c'est de l'alternatif ensuite transformée en 5v continu par l'intermédiaire d'un 7805 et qu'elle est ce module situé à gauche qui alimente le LMD18200?
Ma question est peut être idiote mais ça ne va pas me tuer mais sans doute m'éviter de faire des dégâts.
Merci.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 12, 2016, 05:54:53 pm
Pas du tout, c'est du 15v CONTINU !

Le petit module en bas (ou à gauche du LMD18200) est le circuit de mesure du courant qui est absolument nécessaire. Je vous conseille de lire l'ensemble des 2 fils sur DCC++ où tout est expliqué.

Là vous avez effectivement évité de gros dégâts  ;D
Par précaution, ajoutez une diode en série dans l'arrivée principale du +15v : ça évite de perdre ces beaux composants si l'alim est branchée à l'envers.

Et, bien évidemment, je décline toute responsabilité en cas de problème, faites bien attention !
Cordialement
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: PAT95 le novembre 20, 2016, 11:36:05 am
Bonjour Dominique
Merci pour la réponse et de me prévenir sur le risque de dégâts. J'ai l'expérience de plusieurs composants partis en fumée dans ma jeunesse. J'ai tout de même encore appris quelque chose : que l'on peut alimenter en 15v continu le module qui se compose d'un pont diodes qui est fait pour transformer l'alternatif en continu et d'un 7805. J'ai donc supprimé un tranfo 220v/15v alternatif qui alimentait mon 5v continu et j'ai gardé un seul transfo 220v/15v continu et fait l'essai avec la centrale DCC++ avec LMD18200, max471 et la manette "throttle" de msport et c'est magique de voir trois machines circulées sur son réseau. Je n'ai pas testé la lecture de CV je possède un SPROG II pour cela peut être plus tard lorsque j'aurai assimilé DCC++. J'attends avec impatience la suite de l'article de LOCODUINO "réalisation de centrales DCC avec le logiciel libre DCC++ et votre "va et vient" modifié en DCC++.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le novembre 20, 2016, 12:32:03 pm
Bravo PAT95, ravi de voir que ça marche et que DCC++ est une bonne solution.

Évidemment on peut alimenter le module régulateur 7805 avec de l'alternatif puisqu'il a un pont de diode, mais ce que je voulais dire c'est que comme le LMD18200 DOIT être alimenté en continu, c'est l'ensemble du montage qui doit être alimenté en continu. Il serait un peut incongru de mettre 2 transfos!

En plus le pont de diode du module 7805 protège l'Arduino contre les inversions de polarité éventuelles (ça m'est arrivé lors d'une demo, rien n'a souffert)

Amicalement
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: SaroEngels le janvier 06, 2017, 12:54:54 am
Bonjour,

au premier, je suis allemand alors mon francais est trés mal, excusé-moi s'il vous plaît!

Je veux créer un pilotage dcc avec un LMD18200 (le même comme sur votre photo). Ca marche déja et je peux contrôler ma locomotive.

Maintenant je veux aussi lire les CV mais je ne sais pas comment faire correctement. Le pin de mesure courant me donne un courant alors je ne veux pas le connecter avec mon RaspberryPi directement. Si je le connecte en parallèle avec un resisteur 2,7kOhm je dois mesurer un voltage de seulement 0,06V! Si je prends un resisteur ~130kOhm je trouve beaucoup des signals (peut-être le PWM du decoder?), mais pas le 'ACK' signal.

Alors, que vous pensez?

Merci déja à l'avance.
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le janvier 06, 2017, 09:44:30 am
Bonjour SaroEngels,

Votre français est correct, merci de faire confiance à Locoduino (et comment l'avez-vous connu ?).

Tout d'abord, j'aimerai que vous confirmiez le schéma de votre montage. Ce qui marche bien est :
(http://forum.locoduino.org/index.php?action=dlattach;topic=203.0;attach=423;image)
Ici c'est un Nano, mais ça marche aussi avec un Uno ou un Mega.

Il va y avoir bientôt un article sur www.locoduino.org qui décrit bien les montages possibles. Stay tuned !

Le LMD18200 a une pin de mesure de courant : IL NE FAUT PAS S'EN SERVIR !
Je n'ai pas reussi à avoir un résultat avec la sortir "courant" du LMD18200.

Il vaut mieux utiliser un breakout board avec un MAX471 et faire les connexions comme sur le schéma ci-dessus.

Ensuite, il faut relier la sortie de mesure de courant du Max471 sur la pin A0 (voie principale) ou A1 (voie de programmation)

Le logiciel DCC++ se sert de la mesure de courant à 2 endroits :

Dites moi si vous êtes bien avec ce schéma et avec DCC++ et nous verrons ensuite le coté logiciel.

Je précise toutefois que la lecture des CV ne marche pas avec tous les décodeurs. Nous ne savons pas encore pourquoi.
Quel type de décodeur avez-vous ?

Bien cordialement
Dominique
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: SaroEngels le janvier 06, 2017, 02:40:26 pm
Merci pour votre response vite!

J'ai déja commandé un des max471 maintenant, mais il va être livrer pas avant le 17 jan  :-\

Votre schéma est presque le même comme ici, je n'ai pas monter les LED en haut et le max471.

Alors, j'ai decidé de l'essayer avec le pin de mesure courant encore une fois - et j'ai réussi. Je connecte le pin avec un resisteur 5.0 kOhm a la masse et avec un convertisseur a/d (mcp3008). Si je lis chaque milliseconde la valeur, je peux recevoir le signal (quand la difference avec le dernier valeur est plus grand que 10, c'est le signal).
Maintenant je peux lire les CV! \o/
Le seul décodeur que j'utilise à l'heure est un ESU LokPilot micro V4.0 .

Merci beaucoup!
Titre: Re : Re : DCC++ sur Nano avec LMD18200
Posté par: Dominique le janvier 15, 2017, 02:42:41 pm
Merci pour votre response vite!

J'ai déja commandé un des max471 maintenant, mais il va être livrer pas avant le 17 jan  :-\

Votre schéma est presque le même comme ici, je n'ai pas monter les LED en haut et le max471.

Alors, j'ai decidé de l'essayer avec le pin de mesure courant encore une fois - et j'ai réussi. Je connecte le pin avec un resisteur 5.0 kOhm a la masse et avec un convertisseur a/d (mcp3008). Si je lis chaque milliseconde la valeur, je peux recevoir le signal (quand la difference avec le dernier valeur est plus grand que 10, c'est le signal).
Maintenant je peux lire les CV! \o/
Le seul décodeur que j'utilise à l'heure est un ESU LokPilot micro V4.0 .

Merci beaucoup!

BRAVO  ;D ;D ;D

Voilà une expérience concluante  qui prouve que la mesure de courant sur le LMD18200 fonctionne.

C'est une alternative au MAX471, mais pas forcément moins couteuse.
Chacun pourra choisir sa solution préférée.

Amicalement
Titre: Re : DCC++ sur Nano avec LMD18200
Posté par: gilles33 le février 20, 2017, 09:31:30 am
la manette throttle de Dave Bodnar's je l'ai testé ça fonctionne parfaitement bien pour 4 locos .J'ai juste francisé les écrans pour l'afficheur c'est plus sympa en français. J'ai fait l'essai aussi de la commande par IR pas de problème c'est sérieux ça fonctionne . Je suis en en gestation sur la commande sur écran tactile c'est un peu plus compliqué mais si Dave l'a fait pourquoi pas.