D18: Un décodeur d'accessoires DCC à réaliser soi-même

Les commandes numériques du réseau (appelées à tort "digitales") sont l'avenir du train miniature. Mais comment choisir, comment sauter le pas, avec ou sans ordinateur ? Autant de questions dont les réponses se trouvent dans l'expérience des uns et des autres…

Modérateur : MOD

Avatar du membre
Bug Killer
Éloquent
Messages : 338
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 64

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Bug Killer » dim. 30 déc. 2018, 10:57

Et ce n'est pas pour le prix que ça coûte qu'on doit s'en passer.
Que la vapeur soit avec toi.

Lulu_ho
Causant
Messages : 280
Enregistré le : ven. 16 déc. 2016, 12:24
Echelle pratiquée : HO
Prénom : Ulysse

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Lulu_ho » ven. 25 janv. 2019, 21:51

Bonjour pour les 1 an de D18 je vais vous parler de "multiplexage" ...

Le multiplexage

Mais qu'est ce que c'est que ce mot barbare ...
Wikipédia nous dit:" Le multiplexage est une technique qui consiste à faire passer plusieurs informations à travers un seul support de transmission
Dit autrement, on peut faire transiter plusieurs informations par le même fil".

En multiplexant, on pourrait donc réduire la filasse de notre maquette ...
Qui dit moins de fil, dit aussi moins d'électronique de puissance à connecter à ces fils ...
Toujours aussi obscures me direz vous, mais apparemment, il y a des gains a faire ...

Sans le savoir, nous avons déjà utilisé le multiplexage
- Le cas extrême du multiplexage est le réseau (téléphonique, internet, mais aussi I2C, DCC) mais il faut des décodeurs
- Nous avons aussi utilisé un multiplexage plus simple sans décodeur pour nos LED via le MAX7219/21
Comme vous le voyez avec seulement 16 fils on peut commander 64 leds (la ou il en aurait fallut 128 (2fils par led) ou 65 (64fils + 1 commun)).
Si on pouvait faire de même avec les aiguillages ce serait pas mal non ? Nous allons nous y atteler dans cet article


Multiplexage des LEDs

Revenons à nos LED, on voit qu'elles sont dans une matrice de 8 lignes (qui peuvent fournir le + ou rien) et
8 colonnes qui peuvent fournir la masse ou rien. Si on active une seule colonne, les leds de la colonne s'allument suivant ce qu'on met sur les lignes.
En parcourant toutes les colonnes une à une, on peut commander toutes les LEDs.

Image

En allant suffisamment vite l'oeil n'y verra que du feu.
A partir de 50Hz, on ne perçoit plus le clignotement donc avec nos 8 colonnes, il faut changer de colonne 8*50=400 fois par seconde.
On voit les avantages, moins de câbles, moins d'amplis de puissance dans le circuit.

Mais il y a aussi des inconvénients:
- La commande est plus complexe
- Les LEDs sont alimentées 1/8eme du temps (on résout le problème en les alimentant avec un plus grands courant que si elles étaient alimentées en permanence)
- Ces commandes matricielles fonctionnent car les LEDs ne marchent que dans un sens.

La dernière phrase à son importance, remplaçons les LEDs par des lampes, que se passe t'il, mais qu'est ce qui se passe ?
D'autres lampes sont alimentés à une tension plus faible.

Image

Vous vous doutez bien que l'on resoud le problème facilement en ajoutant des diodes et tout rentre dans l'ordre.
Vous verrez donc des diodes apparaitront dans nos montages ...


Multiplexage des entrées.

Le multiplexage marche aussi pour les entrées comme le montre l'exemple ci dessous.

Image

Les colonnes sont mises à la masse à tour de rôle. Les lignes sont maintenues à +5V par les résistances de pull up. Donc en l'absence d'appuie, on lit 5V sur les lignes. Si on appuie sur un interrupteur, il met en relation sa ligne et sa colonne. Lorsque le microcontroleur mettra la colonne à la masse alors la ligne passera à la masse, on lira alors la masse et on pourra en déduire quelle touche est enfoncée ...
Si on appuie sur 3 touches, on va détecter la 4eme comme appuyée alors qu'elle ne l'est pas. Pour un clavier ce n'est pas bien grave car on appuie jamais sur plus de 3 touches par contre si on remplace les touches par des interrupteurs s'il y en a plus de 3 actifs en même temps, on risque des fausses détections. Comme dans le cas précédent, on résout cela par des diodes.

J'avais proposé un module S88 à 16 entrées. On voit qu'en utilisant le multiplexage, on pourrait passer à 8x8 = 64 entrées. Je proposerai une version 8x8. Notez que dans ce cas, on ne peut plus mettre un filtre RC sur les entrées ...


Multiplexage des aiguillages

Intéressons nous maintenant à commander nos aiguillages avec le multiplexage pour voire si on y gagne ... Les servos se commandent avec une méthode particulière aussi nous ne nous intéresserons qu'aux aiguillages à bobines et moteurs. De toute façon, les servos ont leurs propres amplis donc le gain ne serait pas bien grand. On pourrait multiplexer l'alimentation mais ce serait s'embêter pour rien ...


Les drivers

Les faibles signaux du microcontrôleur (par ex 5V, 20mA), ne permettent pas de commander les aiguillages, il faut donc amplifier les commandes (ex 12V un peu moins de 500mA pour des Jouef ..., jusqu'a 2A pour d'autres marques ...) On utilise des "drivers" qui sont en fait des transistors que l'on commande avec le faible signal logique (0 ou 5V). Généralement un driver ou ampli, commute soit la masse, soit le + de puissance VP sur la sortie. Certains drivers nécessite aussi une alimentation logique (ex 5V). Souvent on ne represente pas les alims. Certains amplis possedent une commande d'activation (EN "enable" ou HZ "Haute Impédance") qui déconnecte la sortie qui est dit flottante ou en l'air, elle est donc ni connectée à la masse, ni au VP, mais à rien du tout. Certains drivers ne commutent que la masse ou rien (cas de l'ULN2803), d'autres que VP (VP ou rien). Selon les drivers, les commandes peuvent être inversés. Il peut y avoir plusieurs drivers par circuit. Le Hz peut agir sur plusieurs drivers ...

Image

Les circuits les plus intéressants pour nous sont:
- ULN2803 (8 drivers 500mA cmd à 1 = sortie à la masse, cmd à 0 = sortie déconnée)
- L293 (4 drivers cmd 700mA à 1 = sortie à VP, à 0 = masse. 2 commandes d'activations (une pour 2 drivers)
- L298 (4 drivers 2A cmd à 1 = sortie à VP, à 0 = masse. 2 commandes d'activations (une pour 2 drivers)


Le L298

Pour le reste de cet article nous utiliserons le L298 qui avec ses 2A permettra de commander n'importe quel aiguillages. Pour les débutant, ce n'est pas parce que le driver est capable de fournir 2A qu'il fournira 2A, cela dépendra de ce que consomme l'aiguillage. Ce circuit est protégé contre la surchauffe et surintensité. Bien entendu pour des courant plus faibles le L293D peut être utilisé. Si juste la masse à besoin d'être commuté l'ULN2803 fera merveille ...

Nous utiliserons un module tout fait que l'on trouve maintenait au prix hallucinant de 2€ sur Amazon par ex.

Image

Par défaut des jumpers activent les 2 entrées d'activations. Le circuit à besoin de 5V pour sa logique interne ce qui explique le régulateur qui fabrique ce 5V à partir de la tension de puissance. On pourra donc aussi utiliser ce 5V pour autre chose si besoin. Si on met 5V sur une commande la sortie correcpondante passe à 12V. Si on met la masse alors la sortie correspondante passera à la masse. Si on avait besoin d'isoler la sortie, on pourrait enlever le jumper pour accéder aux commandes d'activations ...


La commande directe

Jusqu'à présent, nous nous étions arrêté à la commande directe avec 2 drivers par aiguillages. La figure suivante résume les connections possibles:

Image

Dans le cas A, le commun des bobines étant au +12V, il suffit de mettre la masse sur out1 pour commander la première bobine ou out2 à la masse pour commander la seconde. Au repos il faut mettre les 2 sorties à +12V, la différence de potentiel étant nulle aucun courant ne circule. Au lieu du +12V on peut également déconnecter la sortie.

Dans le cas B, le commun est cette fois à la masse, il suffit de mettre out1 à +12V pour commander la première bobine ou out2 à +12V pour commander la seconde. Au repos il faut mettre les 2 sorties à la masse ou les déconnecter

Dans le cas C, on va faire passer le courant dans un sens pour alimenter la bobine connectée à la diode qui est dans le bon sens. Pour alimenter l'autre bobine, il suffit d'inverser le courant. Pour en alimenter aucun, il suffit de couper le courant. Cette méthode à l'avantage de ne nécessiter que 2 fils à la place de 3 et l'inconvénient de rajouter 2 diodes. Pour couper le courant il suffit de désactiver les sorties ou de les mettre au même potentiel. Si les 2 sont à la masse aucun courant ne circulera, idem si les 2 sont à 12V. Pour faire passer le courant dans un sens il suffira d'en mettre une à 12V et l'autre à la masse et inversement pour faire circuler le courant dans l'autre sens.

Dans le cas D, nous remplaçons les bobines par un moteurs. La commande est exactement la même que dans le cas précédent, en inversant le courant, on inverse le sens de rotation du moteur.

Dans le cas E, 2 diodes ont fait leur apparition, elles ne servent à rien mais on les retrouve souvent dans certains moteurs d'aiguillages pour les commander en alternatif. Il suffit tout simplement de connecter les 2 diodes ensembles ou de les enlever et on retombe dans le cas précédent ...

Ce petit rappel fait, Multiplexons !


Multiplexage pour aiguillages à bobines

Commençons par soucis de simplicité avec une matrice d'aiguillages ou le courant ne vas que dans un sens. Nous utilisons 2 L298. Le premier commande les lignes out0-3 et le second les colonnes out4-7. Au repos out0-3 sont à la masse et out4-7 au +12V. Grace aux diodes aucun aiguillage n'est alimenté.
Pour commander une bobine, il suffit de mettre à 12V une des sorties out0-3 et mettre à la masse une des sorties out4-7

Image

Qu'a t'on gagné ?
Avec une commande individualisée on aurait eu besoin de 16 sorties soit 4 L298 pour commander nos aiguillages. On a donc gagné la moitié des drivers de puissances. Mais on a aussi gagné des sorties Arduino pour commander les drivers (8 au lieu de 16).

Ce montage évolue à la puissance de 2, voici le nombre d'aiguillages en fonction du nombre de drivers
1 L298 = 4 drivers = 2 aiguillages en multiplexant contre 2 sans multiplexer
2 L298 = 8 drivers = 8 aigs contre 4
3 L298 = 12 drivers = 16 aigs contre 6
4 L298 = 16 drivers = 32 aigs contre 8

Vous voyez le gain !
Si les aiguillages ne consomment pas trop, un ULN remplace 2 L (uniquement pour la commutation coté masse).

On gagne aussi en fils (ex entre le décodeur et les aiguillages).
Sans multiplexage: 8*3=24 fils pour nos 8 aiguillages (ou 8*2+1commun=17fils)
Avec: 8fils

Malheureusement, cela ne marche pas pour les aiguillages a moteurs (ou alors avec un montages à 4 diodes que je m'interdit de vous présenter afin de ne pas vous embrouiller)
Il est aussi difficile de se repérer dans la matrice.


Multiplexage pour aiguillages à bobines et moteurs

Je vous propose maintenant un multiplexage un peu moins extrême mais qui marche aussi avec les moteurs et qui est simple a comprendre.
Nous utiliserons une sortie commune qui sera connectée à tous les aiguillages. Ensuite nous utiliserons un seul driver par aiguillage. Il n'y aura donc que 2 fils par aiguillages et 1 driver par aiguillage en plus du driver commun. Le gain ne sera pas à la puissance de 2 comme dans le cas précédent, mais on gagne d'un facteur 2 par rapport au cas sans multiplexage.

1 L298 = 4 drivers = 3 aiguillages en multiplexant contre 2 sans multiplexer
2 L298 = 8 drivers = 7 aigs contre 4
3 L298 = 12 drivers = 11 aigs contre 6
4 L298 = 16 drivers = 15 aigs contre 8

Come on veut commander des moteurs, il faudra faire passer le courant dans les 2 sens. Pour les aiguillages à bobines on utilisera donc 2 diodes pour sélectionner une des 2 bobines suivant le sens.

Sur le schéma suivant out0 est la sortie commune. Si l'autre sorite connectée à l'aiguillage est à la même tension que out0 ou déconnectée alors aucun courant ne circule dans l'aiguillage. Si out0 est à 12V et l'autre sortie à la masse alors le courant traverse l'aiguillage dans un sens. Si maintenait out0 est à la masse et l'autre sortie à +12V alors cette fois le courant traversera l'aiguillage dans l'autres sens ...

Pour info, il existe un montage alternatif en connectant le premier aiguillage entre out0 et out1, le second entre out1 et out 2 ... mais on n'y gagne rien ! Le fait d'avoir un commun est tout de même plus simple.

Image

Voila vous savez tout sur le multiplexage, le multiplexage en matrice est le plus économique mais nécessite 3 fils par aiguillages et ne marche pas avec les moteurs. Le second multiplexage a ma préférence car il fonctionne avec les 2 types d'aiguillages et permet 2 fils par aiguillage avec cerise sur le gâteau un des 2 fils qui est commun à tous les aiguillages.
On gagne donc la moitié des drivers par rapport à l'approche classique, donc la moitié des pattes de l'Arduino et on simplifie le câblage !

Ex avec 4 aiguillages à 2m
standard: 4*3 = 12 -> 24m de câbles
on peut communaliser le commun soit 4*2+1 = 9 -> 18m de câbles
Si on utilise la commande par sens 4*2 = 8 -> 16m de câbles

Avec la nouvelle version: 4*1 + 1 = 5 -> 10m de câble
Moins de câble = Moins de problèmes = Plus économique = Plus facile !!!


La commade

Tout cela est très bien du point de vue électronique mais comment générer la commande.
Nous avons déjà vu comment commander un aiguillage à la fois.
Les problèmes arrivent lorsque l'on doit en commander plusieurs.
Contrairement aux LED, on ne peut pas le faire en "même" temps car cela réduirait la puissance. Ex si on alimente pendant 50% du temps un aiguillage, la puissance disponible sera réduite et il ne commutera pas ! (A moins de d'augmenter la tension ...)
Bref on voit que l'on doit commander les aiguillages 1 par 1.
Le programme est plus compliqué car il faudra mémoriser les commandes et les exécuter quand on aura terminé de manœuvrer l'aiguillage précèdent.
Si les aiguillages sont a mouvement vraiment lent, cela peut allonger les commandes. Si le réseau est piloté, le logiciel devra prendre ce temps en compte.
Commander les aiguillages 1 par 1 présente cependant un avantage, l'alimentation n'a pas besoin d'être super puissante. Elle doit juste permettre d'alimenter un aiguillage.

Je ferai un prochain article sur la commande avec des exemples de code.
Je serai certainement amené a ajouter quelques fonctions afin de simplifier le travail.
Je suis en train de faire l'électronique de mon réseau ou je dois commander 8 aiguillages a bobines et 4 à moteurs, c'est dire si le sujet m'interesse ...


Ne jamais tester directement avec des aiguillages a bobines non munis de contacts de fin de course car si une bobine est alimentée un peu trop longtemps, elle cramera ! Il vaut mieux utiliser 2 leds. Si on a bien bossé et que l'on voit que des impulsions alors on peut connecter les aiguillages.
A tester dans tous les cas, au démarrage, a l'arrêt, avec l'alim puissance sans l'alim de l'Arduino ...

Pour économiser de l'électronique et du câblage il est bien entendu possible de brancher des aiguillages qui ont des mouvements compatibles en parallèle. Dans ce cas, il faudra veiller à ne pas dépasser l'ampérage de l'alimentation et des drivers.


Un exemple de décodeur

Terminons sur un exemple d'un décodeur à 11 aiguillages.
Bien entendu les pattes restantes peuvent être utilises pour commander d'autres choses (aiguillages, relais pour polariser des cœurs, leds, servos ...)
Dans cet exemple j'ai alimenté l'Arduino par le 5V fournit par un des module L298D mais on peut faire autrement....

Image
Fichiers joints
leds.png
leds.png (141.15 Kio) Vu 1920 fois
lampes.png
lampes.png (12.03 Kio) Vu 1920 fois
inters.png
inters.png (4.66 Kio) Vu 1920 fois
drivers.png
drivers.png (8.84 Kio) Vu 1920 fois
l298d.png
l298d.png (109.01 Kio) Vu 1920 fois
bob_mot.png
mux_bob.png
mux_mot.png
mux_mot.png (30.3 Kio) Vu 1920 fois
ex_dec.png

Avatar du membre
Dominique Donnat
Communicatif
Messages : 836
Enregistré le : lun. 19 févr. 2007, 21:15
Echelle pratiquée : HO HOm
Club : AMFTB (Belfort)
Site Internet : http://www.donnat-dominique.fr
Localisation : Joncherey (90)
Âge : 65

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Dominique Donnat » sam. 26 janv. 2019, 00:46

Super, ça arrive à point nommé, car je viens d'attaquer la conception de la commande de ma gare d'Égrèze et ses 3 plateaux.
Pour rappel, mon idée actuelle est : commande en DCC, 1 D18 par plateau. Chaque D18 commandera des servos et des LEDS ou neopixels. J'ai lancé l’approvisionnement des cartes drivers de servos et des neopixels.
Par contre, je voudrais aussi prévoir de petits pupitres pour piloter mes servos (itinéraires). Il faudrait pouvoir encoder les boutons-poussoirs de ces petits pupitres sur un bus et selon un protocole reconnu par la centrale (ce ne sera pas une C17, mais une Z21 que j'ai), comme un clavier Roco du commerce, en fait. Est-ce que cela te semble faisable ? quelqu'un a déjà fait ça quelque part dans le monde arduino ?
Ou bien on peut imaginer que Lulu_HO nous fasse un E19 (E pour encodeur et 19 pour 2019) ??
Corrèze HO+m ép 3 - PO forever

Joel.Lesage.520
Messages : 11
Enregistré le : mar. 15 janv. 2019, 17:04
Echelle pratiquée : g

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Joel.Lesage.520 » sam. 26 janv. 2019, 11:45

Bonjour

avec le decodeur d18 , est il possible de décoder les trames decodeurs mobiles ?
existe il un appel void pour capturer de la meme façon les codes accesory decodeur
je souhaiterais pouvoir utiliser les fonctions f1 a f28 du decodeur loco sur un arduino pour commander un DFPlayer Mini Lecteur MP3 Module
https://www.banggood.com/5Pcs-DFPlayer- ... rehouse=CN

il existe des decodeurs du commerce qui font cela pour les sorties auxiliaires sans sortie moteur ,mais je voudrais utiliser d18 de la meme façon que pour les accessoires simples
la partie appel au sous programme de son ,je pense pouvoir me débrouiller mais la partie modif décodeur trame est encore un peu trop compliqué pour moi
mercii de vos reponse

Avatar du membre
DeepPurple
Communicatif
Messages : 959
Enregistré le : ven. 04 nov. 2016, 19:36
Echelle pratiquée : N/DCC
Prénom : Philippe
Club : AMFB Braine-l'Alleud (B)
Site Internet : http://pdf.cachalo.be
Localisation : Un peu plus à l'ouest
Âge : 64

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par DeepPurple » sam. 26 janv. 2019, 14:59

Dominique Donnat a écrit :(...) je voudrais aussi prévoir de petits pupitres pour piloter mes servos (itinéraires). Il faudrait pouvoir encoder les boutons-poussoirs de ces petits pupitres sur un bus et selon un protocole reconnu par la centrale (ce ne sera pas une C17, mais une Z21 que j'ai), comme un clavier Roco du commerce, en fait. Est-ce que cela te semble faisable ? quelqu'un a déjà fait ça quelque part dans le monde arduino ?
L'article sur le TCO XpressNet est une bonne source d'inspiration.
Loch & LOL !

Avatar du membre
Dominique Donnat
Communicatif
Messages : 836
Enregistré le : lun. 19 févr. 2007, 21:15
Echelle pratiquée : HO HOm
Club : AMFTB (Belfort)
Site Internet : http://www.donnat-dominique.fr
Localisation : Joncherey (90)
Âge : 65

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Dominique Donnat » sam. 26 janv. 2019, 15:31

Ça a l'air de répondre à la question, merci ! (Mais va falloir creuser un peu comment ça marche... déjà que D18, c'est un peu hard pour moi...)
Corrèze HO+m ép 3 - PO forever

Lulu_ho
Causant
Messages : 280
Enregistré le : ven. 16 déc. 2016, 12:24
Echelle pratiquée : HO
Prénom : Ulysse

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Lulu_ho » lun. 28 janv. 2019, 14:01

Bonjour Dominique,

Je peux rajouter le décodage des paquets pour les décodeurs mobiles.
Il y a quasiment tout dans le code, ce n'est pas bien dure à rajouter ;-)

Pour les encodeurs n'y compte pas Xpress ou X-Bus c'est un peu trop
propriétaire a mon gout :colere: Je reste sur le bon vieux S88 :lol:
Mais on en trouve sur Internet 'à base d'Arduino ou sur le site de Paco.

Je te tiens au courant pour les décodeurs mobiles ...

Ulysse.

Joel.Lesage.520
Messages : 11
Enregistré le : mar. 15 janv. 2019, 17:04
Echelle pratiquée : g

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Joel.Lesage.520 » jeu. 31 janv. 2019, 08:55

Bonjour

j'ai trouver cela sur un site usa
https://model-railroad-hobbyist.com/node/24316

cdl
joel

Lulu_ho
Causant
Messages : 280
Enregistré le : ven. 16 déc. 2016, 12:24
Echelle pratiquée : HO
Prénom : Ulysse

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Lulu_ho » mar. 12 févr. 2019, 11:19

Merci Joel, très intéressant. Je pense que je vais rajouter le support des paquets pour les "décodeurs mobiles"

Avatar du membre
papat400
Messages : 14
Enregistré le : mer. 19 juin 2019, 20:19
Echelle pratiquée : HO
Prénom : Thierry
Localisation : Florennes - Belgique
Âge : 55

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par papat400 » sam. 29 juin 2019, 22:22

Bonjour à tous,

Je suis nouveau sur ce forum, que j'ai découvert grâce à Ulysse.
Je souhaitais partager mon petit bricolage, à savoir une version du D18 permettant de piloter directement des servos et des sorties digitales depuis la carte arduino. Il devient ainsi possible, avec un seul "décodeur accessoires", de piloter jusque 12 servos (limite imposée par l'environnement arduino, la bibliothèque "Servo" précisément) ; un maximum de 16 sorties étant utilisables.
J'ai utilisé la version arduino Nano par souci d'encombrement.

Voici le schéma électronique du bazar (basé sur la documentation d'Ulysse) :
D18.png
Le PCB (ou circuit imprimé) :
D18_PCB.png
Et mon "atelier de test" ou l'on peut voir le D18 en action (voir les légendes) :
IMG_0214_.gif
On y voit également mes modules de détection S88, eux aussi basés sur un arduino Nano. La photo les montre vu que j'ai testé le tout en même temps.

Si ça intéresse, je peux développer davantage ...

Bonne soirée,
Thierry.

Avatar du membre
Bug Killer
Éloquent
Messages : 338
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 64

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Bug Killer » sam. 29 juin 2019, 23:26

Quels avantages et inconvénients par rapport au PCA9685 sur bus I2C ?
Que la vapeur soit avec toi.

Avatar du membre
papat400
Messages : 14
Enregistré le : mer. 19 juin 2019, 20:19
Echelle pratiquée : HO
Prénom : Thierry
Localisation : Florennes - Belgique
Âge : 55

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par papat400 » dim. 30 juin 2019, 15:51

Bug Killer a écrit :
sam. 29 juin 2019, 23:26
Quels avantages et inconvénients par rapport au PCA9685 sur bus I2C ?
Simple : pas besoin de PCA9685 (ni de bus I2C forcément) ... on plugge les servos et on raccorde les Leds sur le PCB et c'est tout :wink: Les deux solutions se valent sans doute, c'est une question de choix (je n'ai jamais utilisé de PCA9685 à ce jour).
C'était aussi un challenge personnel que j'avais envie de relever :D
Si on a plusieurs zones "chargées" en accessoires sur le réseau, une simple carte permet de les actionner en étant raccordée localement sur le DCC. Il y a aussi les alimentations évidemment, le câblage n'en est pas simplifié (ce n'était d'ailleurs pas le but visé).

Les adaptations que j'ai apportées au code d'Ulysse permettent de définir les butées angulaires de chaque servo.
Pour les 4 sorties Led déjà prévues, on peut adapter la valeur de la résistance série montée sur le PCB pour obtenir la luminosité souhaitée. Pour les éventuelles autres sorties, il faut calculer le courant consommé afin de voir si il convient d'interfacer ou pas. Si ce sont des Leds ça pourrait peut-être aller, pour des consommateurs plus gourmands la réponse est évidente.

Lulu_ho
Causant
Messages : 280
Enregistré le : ven. 16 déc. 2016, 12:24
Echelle pratiquée : HO
Prénom : Ulysse

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Lulu_ho » lun. 01 juil. 2019, 22:56

Merci pour le partage ! Je rajouteri volontier ton code.
C'est bien d'avoir plusieures solutions afin que chacun utilise celle qui lui convient le mieux.

Les 2 ont leurs avantages et inconvénients:

commande directe:
- pas besoin de pca9685 (gain de place pour les reseaux modulaires avec beaucoup de petits décodeurs).
- signal de commande disponible un peu plus rapidement à l'initialisation.

commande par pca9685:
- possibilité de commander plus de servos avec un décodeur.
- module tout fait dispo à un prix dérisoire.

Dans les 2 cas attention si la mécanique commandée ne supporte pas toute la plage de rotation du servo.
Un servo alimenté mais sans signal de commande peut faire n'importe quoi et vu son couple détruire la mécanique.
Je conseille, soit:
- ajouter un mécanisme de compensation (ressort, tige de commande flexible, pliures dans la tige de commande) ...
- ajouter un relais sur l'alimentation du servo et l'alimenter [automatiquement] lorsque le signal de commande est dispo (code à rajouter).

Pour info, il existe depuis peu des servos linéaires à bas cout qui ne tournent plus mais translatent.

Avatar du membre
Deimos_epIV
Intarissable !
Messages : 9213
Enregistré le : ven. 23 déc. 2011, 21:25
Echelle pratiquée : HO/DCC
Prénom : Claude
Club : MMF
Localisation : Montpellier (34)
Âge : 61

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Deimos_epIV » mar. 02 juil. 2019, 02:41

Normalement, j'écris bien normalement, un servo de qualité "standard" ne fait pas nawak sans impulsion de commande. Effectivement certains servos - pas tous - ont des buttées mécaniques pour limiter leur débattement. Si la durée de l'impulsion de commande va bien au delà des conventions (entre 1 et 2 ms), dans un sens ou dans l'autre, il y a risque de dégât mécanique voire électronique si le moteur reste bloqué longtemps.

Je me permets de rappeler le principe de fonctionnement d'un servo qui est le même depuis sa naissance au début des années 70, quelque soit sont type: C'est une boucle d'asservissement avec d'un coté l'impulsion de commande et de l'autre une impulsion interne dont la durée est proportionnelle à la position de sortie. Ces deux impulsions sont comparées et tout écart dans un sens ou dans l'autre entraine l'alimentation du moteur dans le bon sens pour éliminer cet écart. Si la durée de l'impulsion de commande change, la position de sortie va suivre, offrant cet proportionnalité. Le moteur est commandé en MLI.

Les servos sont de deux types différents:
- Les servos dits "analogiques". C'est l'électronique des origines et elle est... Analogique. C'est l'impulsion de commande qui déclenche l'impulsion interne et qui ferme la boucle. Pas d'impulsion à l'entrée, pas d'impulsion interne donc pas de commande du moteur. Il suffit d'alimenter un servo sans impulsion pour s'en rendre compte: On peut aisément faire tourner l'axe de sortie à la main, comme si il n'était pas alimenté. Avec une impulsion de commande valide, on sens la résistance due à l'effort de correction (le couple du servo). La fréquence de la boucle d'asservissement donc celle de la commande MLI du moteur est... Celle de l'impulsion en entrée, généralement 50 Hz.

- Les servos dits "digitaux" avec une électronique à base de microcontrôleur. L'impulsion de commande est mémorisée et la fréquence de la boucle d'asservissement est indépendante de celle d'entrée et généralement bien plus élevée. Normalement, servo alimenté sans impulsion de commande l'axe de sortie ne doit pas bouger et doit même "résister" si on tente de le faire tourner à la main. Preuve que la boucle est fermée dans ces conditions et c'est même la seule façon de savoir à quel type de servo on a à faire. C'est la fréquence élevée de l'asservissement et celle de la commande MLI du moteur (qui peut être différente) qui fait que ce type de servo a plus de couple, à mécanique égale.

On trouve un nombre invraisemblable de servos pour radiocommande de toutes tailles et performances mais attention, il y a servo et servo... J'utilise personnellement des servos à très bas cout pour le modélisme ferroviaire mais mes 35 ans d'aéromodélisme m'interdiraient de les faire voler !

PS - Ulysse, les servos à sortie "linéaire" existent presque depuis le début. Mes premiers servos de marque Graupner Varioprop étaient de ce type en... 74 ! (la vache, ca ne me rajeunit pas !) Il est vrai qu'ils avaient disparu depuis quelques décennies pour réapparaitre il y a quelques années dans la gamme nano.
Amicalement

Avatar du membre
Bug Killer
Éloquent
Messages : 338
Enregistré le : ven. 08 sept. 2017, 12:46
Echelle pratiquée : H0
Prénom : Jean-Michel
Site Internet : http://jmdubois.free.fr/dcc/
Localisation : Loir et Cher
Âge : 64

Re: D18: Un décodeur d'accessoires DCC à réaliser soi-même

Message par Bug Killer » mar. 02 juil. 2019, 10:55

@Lulu_ho : je veux bien un lien sur ces servos linéaires s'ils sont à moins de 4,40 € pièce ou moins de 3,50 € pièce par lot de 10 FDP inclus.

@Deimos_epIV : que signifie MLI ?
Que la vapeur soit avec toi.

Répondre