Auteur Sujet: Projet box stand-alone DCC / CAN / Satellites & co...  (Lu 31992 fois)

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #30 le: mars 15, 2021, 07:07:30 pm »
OK pour le 12 sur DIR = sortie du timer 1.

Donc dans le code tu as modifié le numéro de pin pour le TrackDriver ?
Dans mon exemple c'est la PIN 11 qui est utilisée pour activer la carte moteur, là ou toi tu as la PIN 3.

Donc tu dois utiliser : 

TrackDriver driver(3, &generator, &currentSensor);
au lieu de
TrackDriver driver(11, &generator, &currentSensor);
Sébastien.
La perfection est un chemin, non un but...

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #31 le: mars 15, 2021, 07:38:50 pm »
(...)
PWM ne fait qu'autoriser le DCC.
pour voir si j'ai compris : on parle ICI du PWM du pont en H, qui est validé, ou pas, par une sortie quelconque de l'arduino
par contre, l'entrée DIR du pont en H est commandée par le signal DCC, cad. par une sortie PWM de l'arduino
il peut y avoir une confusion entre les 2 PWM cités
exact ?

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #32 le: mars 15, 2021, 07:52:22 pm »
Oui c'est une des difficultés.

On utilise le PWM de l'Arduino pour générer le signal de changement de POLARITE de la carte moteur, donc changement de DIRection dans l'absolu.

Sur la carte moteur, l'entrée PWM qui sert normalement à donner la pulsation correspondant à la vitesse du moteur n'est pas utilisée. On la fixe à 1 pour activer la tension de sortie de façon permanente.

Donc sur la carte moteur :
entrée PWM reçoit 1 pour voie sous tension ou 0 pour voie hors tension
entrée DIR reçoit la modulation d'impulsion qui permet d'inverser la tension pour former le signal DCC

Sur l'arduino :
un timer X génère le signal PWM en mode dit "fast pwm"
Dans ce mode, le timer utilise deux comparateurs :
le comparateur A contient la longueur d'une alternance (donc d'un bit) totale. Lorsqu'il boucle, on passe au bit suivant.
le comparateur B contient la longueur d'une DEMIE alternance et définie le rapport  cyclique du PWM

Comme en DCC le rapport cyclique est de 1:1, le comparateur B est chargé avec la valeur du comparateur A divisée par deux, et on lui demande de basculer de 1 à 0 ou 0 à 1 quand il déclenche.

Au début d'une pulsation de signal DCC, le timer reset les comparateurs : les sorties correspondantes de l'Arduino sont à 0.

Après la moitié d'un bit, le comparateur B déclenche et INVERSE sa sortie, il passe à 1.

Plus tard, le  comparateur A va provoquer le cyclage du mécanisme. C'est une fonction interne au CPU : on ne pilote aucun signal avec ce comparateur.

Donc on relie la sortie de signalement du comparateur B, qui s'appelle OUTPUT COMPARE x B avec x = numéro du timer utilisé à l'entrée DIR de la carte moteur.

Pour le timer 1 sur un MEGA, OUTPUT COMPARE 1 B est sur la broche 12.

Ensuite, il faut envoyer un signal 1 sur l'entrée PWM de la carte moteur. Ici on peut soit le rendre pilotable avec une quelconque sortie de l'Arduino, soit simplement le relier à VCC. Mais dans ce cas on ne peut plus couper le signal / l'alimentation de la voie (surcharge, arret d'urgence....)
« Modifié: mars 15, 2021, 07:54:26 pm par AmadeusHF »
Sébastien.
La perfection est un chemin, non un but...

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #33 le: mars 15, 2021, 08:05:31 pm »
ok, merci : l'astuce du 2ème comparateur, c'est donc pour générer élégamment l'interruption à la fin de chaque bit dcc ;
j'ai voulu faire ça avec un esp32, je n'ai pas trouvé comment générer l'interruption avec le timer (pas trop cherché), j'ai donc fait l'interruption au front montant sur la broche, on se débrouille

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #34 le: mars 15, 2021, 08:53:47 pm »
Pas tout à fait... c'est un peu plus subtile (et élégant en fait).

Les registres des comparateurs sont à double-buffer quand le timer fonctionne en mode PWM.
Les valeurs inscrites dans les registres sont "latchées" et basculées dans le timer au moment ou il fait son reset, donc au moment ou il atteind COMPARE A.

De fait, on lève une interruption lorsque le compteur passe le seuil de COMPARE B, donc au milieu du bit uniquement.
A ce moment on détermine le timing du prochain bit à transmettre et on pré-charge les deux valeurs dans COMPARE A et B. Du fait du double buffer cela n'a pas d'impact sur la génération du bit en cours, mais au contraire cela permet de lancer la génération du bit suivant immédiatement à la fin du bit en cours, sans perte de synchro.

De cette manière on a besoin de gérer qu'une seule interruption par bit, et on produit un signal extrèmement propre, la contrainte étant que le traitement de l'interruption doit durer moins longtemps qu'un demi-bit.
Sébastien.
La perfection est un chemin, non un but...

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #35 le: mars 15, 2021, 09:09:49 pm »
quelques essais plus loin ...
alimentation 12V via batterie et step-up, échelle HO
sans recompiler : PWM du LMD18200 sur 1, 3 ou +5V du Mega, le résultat est le même : les locos ont des saccades mais
- beaucoup de Failed to read
- des valeurs aléatoires
et des lectures exactes : le 134 du laisdcc en CV8 par exemple
Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #36 le: mars 15, 2021, 09:19:55 pm »
OK merci pour tes retours et le temps que tu as passé !
Il faut que je me trouve d'autres décodeurs pour tester plus largement. Y a pas de raison qu'il y ai un tel écart...mais bon.
Ce n'est qu'une première version, ça manque de mise au point !
Sébastien.
La perfection est un chemin, non un but...

trimarco232

  • Sr. Member
  • ****
  • Messages: 345
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #37 le: mars 15, 2021, 09:39:47 pm »
@msport : tu disposes d'un oscillo à mémoire pour voir / comprendre ce qui se passe à la sortie du max471 ?
(voir ce qui se passe dans la voie de programmation n'est pas facile ... )

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #38 le: mars 15, 2021, 10:28:34 pm »
Juste un petit oscillo à 20€, je peux regarder, il suffit d'être rapide pour déclencher le HOLD.
On est sur la voie main.
Je regarde dans mes tiroirs, je dois avoir des ACS712 en CMS, reste à en souder un correctement.
Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #39 le: mars 16, 2021, 08:17:55 am »
A bien y réfléchir il Y A UNE raison qui peut expliquer un tel écart ! Le montage et les composants étant sensiblement les mêmes, tout comme le décodeur quand tu utilises un Lais, l'élément qui change radicalement c'est....la charge ! La loco / le moteur utilisé.

C'est peut-être tout betement un problème de seuil de détection de courant à affiner / rendre réglable.
Je vais faire une version en ce sens et pour qu'on puisse compléter.

Tu peux me conseiller un matériel à 20€ (lien sur eBay par exemple) pour un oscillo minimum vital ?
Sébastien.
La perfection est un chemin, non un but...

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #40 le: mars 16, 2021, 10:42:10 am »
J'ai testé avec un moteur ROCO (calibre HO), un moteur LENZ (calibre N) et un moteur PIKO  (calibre intermédiaire ) ...
Alimentation 12V 2A avant la batterie.

Rechercher avec DSO150, par exemple :
https://fr.aliexpress.com/item/32967348583.html
https://www.ebay.fr/itm/Assembled-DSO150-Digital-Oscilloscope-2-4-inch-LCD-Display-with-Clip-Power/264994719249
Rapport qualité-performances / prix imbattable.
Pour quelques euros, peut-être éviter le montage par soi-même. Et demander si prévu un power plug EU (9V).
Cordialement

AmadeusHF

  • Full Member
  • ***
  • Messages: 205
    • Voir le profil
Re : Projet box stand-alone DCC / CAN / Satellites & co...
« Réponse #41 le: mars 16, 2021, 11:04:28 am »
Super merci ! Je viens de me commander  un DSO 150 assemblé. Livraison d'ici le 31 mars si tout va bien, 25 € avec les frais de port.

Ca me permettra de mieux voir ce qui se passe sur les voies ;)
Sébastien.
La perfection est un chemin, non un but...