Parlons Arduino > Le logiciel DCC++

commande d'aiguillage à solénoïdes avec DCC++

(1/3) > >>

nopxor:
Bonjour,

Je viens de monter ma station DCC++ avec un arduino MEGA, 2 LMD18200 et 2 MAX471.
J'ai utilisé la bibliothèque DCpp et tout fonctionne parfaitement.  :)  J'ai testé avec JMRI et RocRail.

Mon réseau va comporter 20 cantons.
Je pensais devoir utiliser un bus LocoNet pour la détection d'occupation des cantons.
Mais j'ai découvert que DCC++ pouvait gérer des sensors sur les pins de l'arduino et communiquer leur état au PC.
Donc inutile d'installer un LocoNet. Cool !  8)

Mon réseau va comporter une douzaine d'aiguillages à solénoïde Peco.
Au départ je pensais réaliser des décodeurs pour aiguillage à solénoïdes comme ceux décrits là:
http://www.locoduino.org/spip.php?article142
Mais j'ai vu qu'il était également possible de gérer des aiguillages et des sorties avec DCC++.
Selon la commande d'aiguillage du PC, DCC++ peut changer l'état de la pin arduino dédiée si l'aiguillage est défini comme Output.

Mes questions:
Est il possible d'intégrer la méthode activation_aiguillage() (du sketch du décodeur pour aiguillage à solénoïdes)
au programme DCC++ pour piloter les relais directement depuis le MEGA ?
La commande delay(ACTIVATION); (250ms) ne va t-elle pas gêner le bon déroulement du programme des signaux DCC ?
Il me semble que les signaux DCC sont générés par interruptions donc c'est peut-être possible ?

CATPLUS:
Bonjour Nopxor

La réponse est surement ici.

http://www.locoduino.org/spip.php?article142

J'aimerai faire une remarque (qui n'engage que moi) aujourd'hui utiliser le moteur PECO me semble un peu désuet.

Je m'explique, on doit utiliser 2 boutons poussoirs pour activer le mouvement de l'aiguille, de plus il ne  possède pas de coupure de fin de course.
(pour info il y a quelques années, j'avais réalisé un montage avec un interrupteur et condensateur)

Dans le programme de l'Arduino, on donne un temps pour l’impulsion, le moteur PECO demande un fort ampèrage pour son fonctionnement, à terme  il y a un risque de destruction si les solénoïdes reste alimenté.

Il y a beaucoup d'autre moteur d'aiguille sur le marché (perso j'utilise des TORTOISEs)
 
Les numéros "846" & "847" (Janvier & Février 2018) de Loco Revue font références à 2 articles:

Le premier    => les différents types utilisables
Le deuxième => pour le remplacement du moteur PECO par une nouvelle génération

J'utilise  aussi JRMI et aucun probléme

Cordialement
Marcel

nopxor:
Bonjour Marcel,

Les moteurs Tortoise sont certainement l'idéal, mais les moteurs Peco sont 3 fois moins chers... et mon budget est serré.
Je compte utiliser les PL-10WE qui sont moins gourmands en énergie que les PL-10 (1.1A au lieu de 2.4A)
Et puis une carte 8 relais qui permet d'en controler 4, c'est environ 4€ sur Ebay ou AliExpress.
Il suffit d'ajouter une alimentation de PC pour le 5V de ces cartes et le 12V des moteurs.

Je me suis plongé dans les sources Outputs.h et Outputs.cpp de la bibliothèque DCCpp.
L'adaptation ne devrait pas être trop compliquée.

nopxor:
Bonjour,

Ca y est j'ai modifié le programme DCC++ pour la commande d'aiguillages à solénoïdes directement depuis les pins de l'arduino.
J'ai testé, tout fonctionne bien.

Pour commander ceux-ci depuis PanelPro de JMRI il faut utiliser la dernière version 4.10 de JMRI.
Cela ne fonctionne pas avec la 4.8, il y a un bug dans JMRI qui empêche la commande.

C'est quand même cool de tout controler depuis un seul MEGA:
- Le DCC
- Les relais des solénoïdes d'aiguillages avec les pins Outputs.
- La rétrosignalisation avec les pins Sensors.

DCC++ c'est vraiment génial. 8)

Ci joint les sources modifiés.

nopxor:
Bonjour,

Quand je disais que j'avais testé et que tout fonctionnait bien, je parlais de la commande des relais.

Depuis j'ai reçu les moteurs d'aiguillage PECO (PL-10WE).

J'ai donc procédé à plusieurs tests.

D'abord j'ai testé si mon alimentation de PC (200W) allait convenir.
Le 12V fait en réalité 10.35V mais cela suffit à déclencher les bobines.
On peut tirer jusqu'à 8A sur la sortie 12V, c'est plus qu'il n'en faut.

Ensuite j'ai cablé les deux bobines sur la sortie des relais pour le test final ou je commande l'aiguillage à l'écran de JMRI.

Cela fonctionne une fois, deux fois... puis plantage de JMRI avec message: Erreur DCC++ port série.
Je relance le test, mêmes effets... Manifestement l'Arduino n'aime pas et le fait savoir à JMRI.

Je cable l'alimentation +5V du PC à la carte des relais pour isoler l'Arduino des relais grâce aux Opto-coupleurs.
Jusque là, j'alimentais depuis l'Arduino.
Re tests, Re mêmes résultats !  :(

Je réfléchis et je pressens un problème de parasites venant des bobines PECO.

Lorsqu'on alimente une bobine et que l'on interrompt son alimentation, une surtension apparait à ses bornes.
La surtension se transforme en arc électrique au niveau des contacts et des parasites sont émis.

Pour remédier à cela il faut ajouter une diode (dite de roue libre) aux bornes des bobines.
A la coupure de l'alimentation, le courant inverse généré par la bobine peut se décharger dans la diode.

J' ai donc soudé 2 grosses diodes (fond de tiroir) pour tenter un nouveau test.

Et là, tout est rentré dans l'ordre et les bobines foncionnent parfaitement sans générer de parasites.  :D

Reste à savoir quelle type de diodes convient ?

Pour une commande ON/OFF d'un solénoïde (pas une commande PWM), une diode de redressement quelqonque fait l'affaire.
Il suffit que sa tension inverse soit plus grande que la tension d'alimentation et que son courant direct max soit plus grand que le courant dans la bobine.
Le tout avec un bon facteur de sécurité.
Je vais commander des 6A10 (6A, 1000V), ça coûte 1€ les 10...  ;)

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique