Auteur Sujet: centrale DCC / analogique modulaire  (Lu 22647 fois)

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
centrale DCC / analogique modulaire
« le: octobre 03, 2023, 06:22:44 pm »
un projet ambitieux dont je n'ai que franchi le seuil
le but est d'alimenter indépendamment chaque canton d'un réseau , avec un signal dcc ou analogique , en fonction de la circulation qui s'y trouve ; je n'ai aucune idée du logiciel PC qui pourra commander cela , mais je m'attaque gaillardement au hardware
il y aura une centrale avec toutes les interfaces (wifi , loconet) et la voie de programmation , et à côté , des boosters au nombre égal à celui des cantons
l'idée originale provient du club de Salzbourg , que j'avais vue à l'époque , et que je peux envisager de mettre en oeuvre avec les moyens d'aujourd'hui
cela ressemble à ça (la centrale à gauche n'est pas représentée)

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #1 le: octobre 03, 2023, 06:34:08 pm »
la centrale communique avec les cartes booster par i2c , pour dire la configuration de chaque canton :
- analogique + duty (duty c'est le rapport cyclique du pwm , variable en analogique)
- ou analogique sens inverse + duty
- ou dcc
- ou dcc inversé pour les boucles
elle délivre un signal de synchronisation , car il faut synchroniser les pwm en analogique , ainsi que les signaux dcc
« Modifié: octobre 04, 2023, 02:42:34 pm par trimarco232 »

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #2 le: octobre 03, 2023, 06:44:56 pm »
la synchro agit de 2 manières :
- le front montant donne le top qui synchronisera les timers des cartes booster (à 40ns près ...)
- la largeur de l'impulsion renseigne sur la nature du prochain bit dcc  : exemple rouge = bit dcc 1 , bleu = bit dcc 0

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #3 le: octobre 03, 2023, 07:19:33 pm »
les signaux analogiques seront donc contenus , sur la voie , dans le gabarit des signaux dcc :
- le signal dcc à un duty de 50% et une période qui peut être 200us (bit dcc 0) ou 116us (bit 1 dcc) ; le +15v et le Gnd (0v) s'inversent au milieu de la période
- le pwm analogique à un duty variable , selon la puissance demandée ; les polarités du duty peuvent s'inverser en fonction du sens de circulation ; la partie de la période après le duty est en haute impédance (il ne faut surtout pas inverser comme pour le dcc) ; la période étant variable selon le bit dcc (116 ou 200us) , il faut en tenir compte dans le calcul du duty : la carte booster disposera de 2 tables , pour s'éviter ce calcul

imaginons un réseau de 25 cantons : chaque booster à besoin de 2 signaux synchronisés pour sa commande , il faut donc produire 50 signaux synchronisés issus de différents timers ; chaque carte à besoin de 10 signaux synchronisés , j'ai choisi stm32duino pour réaliser ceci , les stm32 ayant des timers avec 4 sorties pwm , l'architecture des timers de la carte ressemblera à ceci :

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #4 le: octobre 03, 2023, 07:46:45 pm »
le timer 1 aura le + de travail :
- réception de la synchro
- mesure de la largeur de l'impulsion de la synchro , grâce à un de ses 4 canaux capture/compare
- transmission en tant que master de la synchro , vers les 2 timers slave
- il est son propre slave pour la production de 2 signaux de commande pwm , utilisant 2 canaux capture/compare
les autres timers devront :
- recevoir la synchro en tant que slaves
- produire 4 signaux de commande pwm
les signaux en rouge sont internes au microcontrôleur , cela permet d'économiser des broches


à propos des signaux de commande pwm :
- je les appelle ainsi car ils sont produits par les 4 modules pwm de chaque timer
- il en faut 2 pour commander le pont en H de chaque booster , la logique est la suivante :
entrée du pont  ------------ sortie
in1 = high , in2 = low  ---- out1 = 0v , out2 = +15v : 1ère partie du bit dcc , ou duty du pwm analogique
in1 = low , in2 = high  ---- out1 = +15v , out2 = 0v : 2nde partie du bit dcc , ou duty du pwm analogique (sens inverse)
in1 = low , in2 = low  ----- out1 = out2 = high Z :  2nde partie du pwm analogique , ou arrêt
in1 = high , in2 = high  --- out1 = out2 = Gnd : court-circuit pour le cutout railcom
« Modifié: octobre 03, 2023, 08:01:44 pm par trimarco232 »

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3038
  • 100% Arduino et N
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #5 le: octobre 04, 2023, 09:27:19 am »
Bravo Trimarco232,

C’est un beau projet ingénieux qui apporte un vrai potentiel aux réseaux complexes supportant différents types de machines.
C’est particulièrement bien expliqué et illustré.
Bon courage

Dominique
Cordialement,
Dominique

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #6 le: octobre 04, 2023, 09:03:36 pm »
merci Dominique ,
(je viens de répondre à ton message que j'avais zappé mi-septembre)
pour le bravo , il faudra attendre un peu : je pense bien que le projet est viable , mais il me reste beaucoup des choses à écrire et à tester à l'analyseur logique , je les présenterai quand ça fonctionne
j'utilise beaucoup les possibilités du hardware , qui sont impressionnantes sur ce type de stm32 : on ne peut pas les expliquer juste en montrant du code , alors vous en verrez peu ; par contre elles sont parfois ardues , c'est pour ça que je fais les dessins utiles à ma propre compréhension

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #7 le: octobre 06, 2023, 12:49:15 pm »
Bonjour Marc

Belle réflexion sur le sujet!
Il y a en effet matière à traiter différentes thématiques

Penses tu qu'un AVR type AVR DA DB DD, ou  EA qui disposent aussi de quelques ressources intéressantes ( event, bus SPI, timers A et B multiples, ...) ne seraient pas aussi de bons candidats pour le hardware notamment via la lib DXCORE ? ( même si inferieur en puissance vs les ST32)

D'autres CPU comme le RP2040 ou les TEESNY voir un ESP32 ne te pariassent ils pas aussi intéressant comme candidat? (il doit bien exister des  avantages et quelques limites pour chacun...)

Dans ton projet ne dois tu pas aussi des à présent intégrer un canal de retour d info qui devrait alors aussi gérer/mesurer quelques info clées ( occupation, consommation, cc, railcom,...?)

Le sujet est lancé!

Pour ma part hormis la LIB DCC NMRA qui supporte ( comme elle le peut) plusieurs types de CPU,  je pense qu'il manque une/des lib capable(s) pour gérer efficacement et "simplement" le décodage du signal DCC sur STM32, (comme d autres hardwares) un peu comme AIKO PRA l a fait avec AP_DCC_LIBRARY pour les AVR et TINY des séries 0/1/2

Qu'en pensez vous?

Laurent








 

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Re : centrale DCC / analogique modulaire
« Réponse #8 le: octobre 08, 2023, 11:46:09 am »
Bonjour Marc  Bonjour Laurent

Belle réflexion sur le sujet! merci
Il y a en effet matière à traiter différentes thématiques

Penses tu qu'un AVR type AVR DA DB DD, ou  EA qui disposent aussi de quelques ressources intéressantes ( event, bus SPI, timers A et B multiples, ...) ne seraient pas aussi de bons candidats pour le hardware notamment via la lib DXCORE ? ( même si inferieur en puissance vs les ST32)  peut-être bien, mais en effet je dispose d'un module qui le fait , qui est + puissant , et qui est disponible pour pas cher , alors ...

D'autres CPU comme le RP2040 ou les TEESNY voir un ESP32 ne te pariassent ils pas aussi intéressant comme candidat? (il doit bien exister des  avantages et quelques limites pour chacun...)  je connais mal les TEENSY , il faudrait les essayer , mais là aussi le prix les écarte ; l'ESP32 et le PI PICO ont le grand avantage du wifi , mais je n'en ai pas besoin ici , et pour ce qui concerne les périphériques , malgré quelques possibilités vendeuses , ils sont très en deça du stm32 : par exemple , aucun canal capture , alors que "mon" stm32 en a au moins une vingtaine , dont 4 en 32 bits ...

Dans ton projet ne dois tu pas aussi des à présent intégrer un canal de retour d info qui devrait alors aussi gérer/mesurer quelques info clées ( occupation, consommation, cc, railcom,...?)  voire l'i2c en bas du 1er dessin

Le sujet est lancé!

Pour ma part hormis la LIB DCC NMRA qui supporte ( comme elle le peut) plusieurs types de CPU,  je pense qu'il manque une/des lib capable(s) pour gérer efficacement et "simplement" le décodage du signal DCC sur STM32, (comme d autres hardwares) un peu comme AIKO PRA l a fait avec AP_DCC_LIBRARY pour les AVR et TINY des séries 0/1/2

Qu'en pensez vous?
Aiko Pras utilise capture pour saisir le signal dcc , il serait facile de configurer un des canaux du stm32 pour avoir la même chose ; je l'ai fait avec un lgt8f328p = clone de nano , et ça marche très bien

Laurent

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #9 le: octobre 12, 2023, 09:53:10 pm »
on va encore faire un peu de hardware , avant de mettre le projet en pause
on voit sur le 1er dessin que le signal de synchro va de carte en carte ; en imaginant , soyons fous , un réseau de 25 cantons , il faudra 5 cartes de 5 cantons , qui seront espacées d'environ 12cm entre elles ; cela fait 60cm pour le signal de synchro , ce qui peut entraîner des déformations gênantes
j'ai donc recherché dans le stm32 , quelque chose qui peut régénérer le signal au niveau de chaque carte , et j'ai trouvé un ... comparateur analogique
« Modifié: octobre 12, 2023, 11:19:20 pm par trimarco232 »

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #10 le: octobre 12, 2023, 10:32:32 pm »
en vert , la synchro arrive par l'entrée + INP , et ressort par la sortie OUT
elle est comparée à la tension 1/2 Vcc , donc le comparateur fonctionne en simple suiveur
(l'entrée est analogique et la sortie digitale , c'est en quelque sorte un ADC à 1 bit instantané)
on voit aussi que j'ai mis du rouge et du doré sur le dessin , héhéhé ; c'est la sortie TIMx : elle permet d'aller , en interne , vers des entrées des timers (comme pour les AVR , mais en beaucoup + complet)
ainsi la sortie du comparateur , qui rappelons-le est le signal de synchro , ira aussi , en interne , vers :
1) (rouge) l'entrée trigger du timer1 , pour le synchroniser (le timer1 synchronisera à son tour les autres timers)
2) (doré) une entrée capture du timer 1 , pour permettre de mesurer la largeur de l'impulsion de synchro , et par là , l'info que cette largeur porte
je vous mets le dessin du timer , avec l'arrivée de ces signaux vers les 2 modules du timer
(au vu de ce timer , on imagine qu'on peut s'y amuser comme un petit fou , mais aussi au début , se tourmenter comme un vieux c...)
« Modifié: octobre 12, 2023, 11:16:26 pm par trimarco232 »

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #11 le: octobre 12, 2023, 10:45:01 pm »
ces signaux internes permettent donc d'économiser 2 précieuses broches
et que c'est pas fini
le comparateur peut ne pas être mis en oeuvre , son entrée et sa sortie peuvent être de simples broches IO , qu'on peut utiliser en digitalRead ou en digitalWrite
cette possibilité est utilisée lors de l'initialisation de l'ensemble : la centrale (qu'on ne voit toujours pas à gauche du 1er dessin) , envoie un HIGH sur son fil de synchro ; puis elle envoie un message broadcast sur l'I2C , pour dire : "la carte 5 boosters qui a son entrée synchro à HIGH , a l'adresse I2C n°1" ; puis elle s'adresse à la carte qui a l'adresse I2C n°1 pour lui dire : "tu mets ta sortie synchro à HIGH" ; et ainsi de de suite , jusqu'à ce que toutes les cartes aient leurs adresses
à ce stade , on peut mettre les comparateurs en service, et commencer le jeu
il n'est donc pas nécessaire d'effectuer une action (straps , programmation) pour fixer les adresses

lebelge2

  • Jr. Member
  • **
  • Messages: 75
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #12 le: octobre 14, 2023, 10:25:53 am »
Bonjour, que ce passe t-il quand la locomotive est à cheval sur deux cantons ?

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #13 le: octobre 16, 2023, 10:41:20 pm »
Bonjour ,
en effet , le logiciel qui pilote les trains devra gérer ça :
1) il faut que les 2 cantons aient la même tension (même forme de signal)
2) il ne faut pas d'autre locomotive à cheval aux autres extrémités des 2 cantons

laurentr

  • Hero Member
  • *****
  • Messages: 648
    • Voir le profil
Re : centrale DCC / analogique modulaire
« Réponse #14 le: octobre 18, 2023, 12:50:30 pm »
Bonjour

En fait il faut un mécanisme de "réservation" des sections pilotée avec les mêmes instructions.

Cette allocation repose sur plusieurs paramètres:
=>taille du convoi
=>section source et de destination(s)
=>enchainement des sections ( avec lock car entre la tête et la queue de convoi il peut y avoir "enjambement" cas d une loco en tête et d un simple fourgon en queue avec éclairage et pas de consommateur intermédiaire. Dans le déplacement du convoi on a alors un "trou" de détection sur des sections courtes qui doivent garder la synchro.
C est d autant plus vrai en mode de réversibilité avec une loco en pousse...

J'ai volontairement utilise le terme de "section": en effet il y a le découpage "canton classique" et il y a des zones de transition comme par exemple un grill complexe d aiguillages qui est en quelques sorte un "canton sans zone d arrêt". C est indispensable en mode DC Analogique.
Il faut donc en tenir compte.

Par ailleurs y a t il aussi assez de ressources encore dispo pour intégrer "railcom" à la remontée d'info?

Laurent