LOCODUINO

Parlons Arduino => Vos projets => Discussion démarrée par: AmadeusHF le février 06, 2021, 08:00:43 pm

Titre: Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 06, 2021, 08:00:43 pm
C'est mon tour de plonger !

Comme évoqué dans ma présentation, je me remet doucement en marche et je "prépare" le terrain pour un futur réseau. J'ai deux locos en cours de remotorisation (nostalgie...) "à ma sauce", en parallèle je me refait la main sur les maquettes / la décoration et ... et je commence l'assemblage de la partie pilotage.

Reçu ce matin un MEGA 2560 chinois, un shield réseau, un MAX et une carte moteur double L9110S.

Le temps d'installer l'environnement ARDUINO, de faire un premier test  OK (qu'est-ce qu'on est content de faire clignoter une bete LED avec son Arduino !)...et de me rendre compte que la version packagée par UBUNTU 20.04 date de matusalem....hop, installation de la versions officielle...et DCC++ dans la bete.

Et là OH ! Miracle ! Le fabuleux <p1> allume la LED branchée sur la sortie du driver moteur....LOL !

Quand je vous dis qu'un rien peut rendre heureux !

Bon jusque là c'était facile. Je vais essayer de vérifier l'état du MAX, CF les échanges à ce sujet par ailleurs.

Prochaine étape : il me faut un décodeur à mettre dans une des locos pour pousser la mise au point.
J'attends encore l'arrivée de l'alimentation aussi : pour le moment ça pompe le bus USB (mais bon, pour une LED, ça le fait).

Et puis après on va réfléchir à la question LaBox et touti quanti...mais y une base (station !) :p
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le février 06, 2021, 09:27:13 pm
vérifier l'état du MAX471

Le test de base, c'est la résistance entre 2-3 et 6-7. Si c'est presque rien, tous les espoirs sont permis !

En tout cas, ça commence bien.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 06, 2021, 09:36:42 pm
OK merci, je vais voir ça demain.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 08, 2021, 11:09:49 am
J'ai fait un test rapide du MAX471 ce matin et c'est pas super concluant...si j'interprete bien ce que me dit l'arduino, le max mesure toujours 1V et 0,7A...quelle que soit la charge de courant qui passe dedant....sachant que le circuit mesuré est alimenté en 5V et que la charge est de 1 à 8 résistances de 120 ohms en parallele...

Donc le max devrait mesurer environ 5V, toujours si je ne dit pas de bêtise, de l'ordre de la valeur max du convertisseur AN soit 1023 puisque mon alimentation est aussi sur le 5V.

Coté courant il devrait mesurer entre 41,5 mA (1 R), 83 mA (2 R) et 166 mA (4 R)....et là il me dit toujours 703 (valeur brute du convertisseur) soit 0,69 V....

A noter que la valeur échantillonnée pour la mesure de A bouge quand meme :
2 R : 703
1 R : 704 ou 705
Circuit ouvert : 717

Alors soit j'ai rien compris à comment faire ça (c'est possible) soit ce truc délire totalement....
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 08, 2021, 11:30:41 am
Bon pour la mesure V c'est peut etre aussi que certains articles que j'ai trouvé sur le net racontent n'imp....quand je lis la DataSheet, on a pas de mesure de tension. On a un signal indicateur de sens du courant (charge ou décharge)...donc le VT ne mesure pas la tension du circuit. N'en reste pas moins que la mesure de courant, elle, est bien là et semble délirer.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: Dominique le février 08, 2021, 11:38:22 am
Pour faciliter les échanges, je conseille toujours d'être clair et précis :
- mettre les schémas
- nommer les choses par leur nom complet
- regarder les datasheet des éléments (on les trouve très facilement en tapant la référence dans le moteur de recherche de G..)
- bien exposer le problème.
cela ne s'adresse pas à vous en particulier, puisqu'il y a déjà 75 lectures de ce sujet).
Merci d'avance.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: Dominique le février 08, 2021, 11:41:00 am
Citer
A noter que la valeur échantillonnée pour la mesure de A bouge quand meme :
2 R : 703
1 R : 704 ou 705
Circuit ouvert : 717

c'est comme si rien n'est branché sur l'entrée analogique. Ou le programme....
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 08, 2021, 12:55:22 pm
Le module utilisé est l'un des ces innombrables que l'on trouve sur eBay...Je n'ai pas de référence précise mais...

Une partie de l'explication en tout cas :

L'entrée "V IN" du flux à mesurer est reliée à GND via un pont diviseur 30 K + 7.5 K (valeurs mesurées des résistances).
Le point millieu du pont diviseur est envoyé sur la sortie VT (mesure de tension) et on mesure donc 0,2 de V IN.

C'est bien ce que j'obtiens sur l'Arduino : 1 V avec une alimentation de 5V. Bon au moins on voit qu'un pont diviseur ça divise, et que le convertisseur A/N de l'arduino fonctionne, c'est déjà ça.

Pour la mesure du courant, je pense que mon cablage n'est pas bon.
Je regarde ça.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: Dominique le février 08, 2021, 01:15:38 pm
J’ai encore un paquet de petites cartes Max471 assez anciennes pour supposer qu’elles marchent!

Je vais peut-être les mettre en vente...
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 08, 2021, 01:18:44 pm
En sortie, la broche 8 du MAX est bien tirée vers GND via une pull down de 2.2 Kohm comme proposé sur la datasheet. Il y a une petite capacité en parallèle pour lisser la mesure, mais rien que la pull-down ne puisse consommer rapidement (je n'arrive pas à voir la valeur de cette capa).

Donc a priori le câblage est bon sur le module et j'avais bien placé mes points de mesure....Je verrais pour vous faire un schéma à l'occasion...faut que je découvre les softs pour ça...Kicad à priori ?
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le février 08, 2021, 02:39:44 pm
A défaut de schéma ...

Et les flèches vertes, c'est pour vérifier le chip : on doit mesurer quelques milliohms.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 08, 2021, 02:58:47 pm
J'ai 473 ohms entre RS+ et RS-, bien trop pour une résistance de mesure....
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le février 08, 2021, 06:49:26 pm
Effectivement, pas la peine de chercher plus loin, c'est le défaut classique.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le février 10, 2021, 03:18:09 pm
Les morceaux arrivent tout doucment...j'ai reçu l'alimentation, le driver moteur, l'arduino et le shied réseau...et aujourd'hui la carte régulateur d'alimentation pour abaisser le 18V à moins de 12 pour alimenter l'arduino. Aussi reçu des leds bicolores rouge / blanche mais ça c'est pour les phares des deux CC 7107 LIMA en cours de remotorisation.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 09, 2021, 08:21:45 am
Y a des jours comme ça ou tu as la poisse...

T'as passé ton week-end à bosser sur la mise au point de ta centrale DCC : assemblage, design du boitier, écriture de code, intégration d'un décodeur dans une loco....

Le lundi tu fignoles ton taf en fin de journée, après le boulot et hop ! Pour la première fois tu fais retentir l'avertisseur du Loksound 5 tu frais que tu as trouvé pour ta loco....alors tout content tu fais mumuse deux ou trois minutes puis te prends l'envie d'essayer plusieurs positions pour le HP, pour voir à que endroit l'effet "baffle" procure le meilleur son, en fonction de la surface environnante.

Une des possibilités étant de place le HP sous le chassis, à l'intérieur du compartiment des réservoirs entre les bogies, tu déplaces ce HP....mais pas de bol ! tu fais un léger écart et tu touches une roue....capteuse de courant ! Donc recevant du 12 V !

Et là bim ! 12 V sur le cul du HP, en direct vers le Loksound. Petit grésillement funeste et la sentence est directe ! 120 balles foutus en l'air.

Salle journée.

Ah et bien entendu c'était le seul décodeur que j'avais ET le seul exemplaire que j'avais trouvé (un reliquat chez un vendeur...)

Salle journée je vous le dit !
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: Dominique le mars 09, 2021, 09:27:40 am
Toutes mes condoléances pour ton décodeur. Je vois que Murphy n’est jamais loin quand on fait un truc important.
J’ai cramé une loco en testant un proto de centrale DCC+PWM, c’est rageant.

Bon courage pour rebondir (on dit qu’après un crash en aeromodelisme il faut réparer immédiatement et là c’est pareil).

Amicalement
Dominique
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le mars 09, 2021, 10:05:28 am
Ce n'est pas une consolation mais une invitation à recommencer ...
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 09, 2021, 12:15:24 pm
Y avait longtemps que j'avais pas vu une devise shadok ! ;)

Ce qui me fait le plus rager c'est la perte du CE décodeur. Un décodeur en soit on peut le changer, meme si le prix n'est pas rien...mais celui-là était programmé avec la banque de sons qu'il me fallait...et pas facile à trouver l'équivalent.

Mais bon...j'en ai commandé 2 sur ebay à 15 balles pour faire mes tests....au moins ceux-là j'aurais pas la haine si je les grille. Et puis y a pas de son donc j'aurais pas l'envie de les bouger comme j'ai fait. Et quand j'aurais un peu de cash je me débrouillerait pour me racheter un loksound et y charger une quand son "approchant". Pour de l'électrique c'est pas vraiment un souci de trouver un modèle qui sonne proche...
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 13, 2021, 08:43:50 pm
Ca progresse bien niveau codage !

Petit apperçu du résultat d'une console avec mon code lancé sur un décodeur à 15 balle (LaisDCC) :

Une seule erreur de lecture sur toute la séquence, c'est le mieux que j'ai obtenu.
Ce code tourne avec un ACS712 placé en mesure sur la ligne d'alimentation de la voie de programmation pour la mesure du courant.

CV 1 = 3
CV 2 = 0
CV 3 = 1
CV 4 = 1
CV 5 = 0
CV 6 = 0
CV 7 = 4
CV 8 = 134
CV 9 = 0
CV 10 = 88
CV 11 = 0
CV 12 = 0
CV 13 = 255
CV 14 = 255
CV 15 = 0
CV 16 = 1
CV 17 = 0
CV 18 = 0
CV 19 = 0
CV 20 = 0
CV 21 = 0
CV 22 = 0
CV 23 = 0
CV 24 = 0
CV 25 = 0
CV 26 = 0
CV 27 = 0
CV 28 = 0
CV 29 = 6
CV 30 = 0
CV 31 = 0
CV 32 = 0
CV 33 = 1
CV 34 = 2
CV 35 = 4
CV 36 = 8
CV 37 = 0
CV 38 = 0
CV 39 = 16
CV 40 = 32
CV 41 = 0
CV 42 = 0
CV 43 = 0
CV 44 = 0
CV 45 = 0
CV 46 = 0
CV 47 = 0
CV 48 = 0
CV 49 = 0
CV 50 = 16
CV 51 = 32
CV 52 = 32
CV 53 = 32
CV 54 = 32
CV 55 = 0
CV 56 = 3
CV 57 = 10
CV 58 = 0
CV 59 = 0
CV 60 = 1
CV 61 = 1
CV 62 = 0
CV 63 = 63
CV 64 = 6
CV 65 = 0
CV 66 = 0
CV 67 = 8
CV 68 = 16
CV 69 = 24
CV 70 = 160 : Failed to read !
CV 71 = 40
CV 72 = 48
CV 73 = 56
CV 74 = 64
CV 75 = 72
CV 76 = 80
CV 77 = 88
CV 78 = 96
CV 79 = 104
CV 80 = 114
CV 81 = 124
CV 82 = 134
CV 83 = 144
CV 84 = 154
CV 85 = 164
CV 86 = 174
CV 87 = 184
CV 88 = 194
CV 89 = 204
CV 90 = 214
CV 91 = 224
CV 92 = 234
CV 93 = 244
CV 94 = 255
CV 95 = 0
CV 96 = 0
CV 97 = 0
CV 98 = 0
CV 99 = 0
CV 100 = 0
CV 101 = 0
CV 102 = 0
CV 103 = 0
CV 104 = 0
CV 105 = 0
CV 106 = 0
CV 107 = 0
CV 108 = 0
CV 109 = 0
CV 110 = 0
CV 111 = 0
CV 112 = 1
CV 113 = 9
CV 114 = 1
CV 115 = 6
CV 116 = 22
CV 117 = 3
CV 118 = 1
CV 119 = 5
CV 120 = 1
CV 121 = 15
CV 122 = 25
CV 123 = 32
CV 124 = 8
CV 125 = 0
CV 126 = 0
CV 127 = 0
CV 128 = 0
CV 129 = 0
CV 130 = 0
CV 131 = 0
CV 132 = 0
CV 133 = 0
CV 134 = 2
CV 135 = 16
CV 136 = 2
CV 137 = 20
CV 138 = 17
CV 139 = 2
CV 140 = 15
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: Dominique le mars 14, 2021, 09:01:28 am
Stp Sébastien,

Avec quel montage et quel code tu as pu obtenir ce résultat ?
C’est pour le partage !
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 14, 2021, 09:50:56 am
Bien entendu ça va etre partagé Dominique, je veux d'abord finaliser / packager un poil le truc.

Le montage est le suivant (désolé, pas de schéma, mais c'est tout ce qu'il y a de plus classique) :

Rien de bien spécial donc.

Le branchement : j'utilise bien entendu un PWM de l'Arduino pour piloter le signal, peu importe lequel : 1, 3, 4 ou 5 sur le méga, pourvu que ce soit un 16 bits. Pas essayé avec un 8 bits mais le code est prévu pour (ça viendra).

Comme pour toutes les centrales DCC : sortie OUTPUT COMPARE B du timer reliée à la broche DIRECTION du shield moteur. Broche PWM du shield moteur reliée à VCC ou pilotée par une broche DIGITAL OUTPUT de l'arduino pour faire le ON/OFF de la voie de programmation.

La broche OUTPUT de l'ACS712 reliée sur A0.

Donc encore une fois, très classique.

Le code est constitué d'une ré-écriture intégrale de DCC++ inspirée à la  fois de l'original, des travaux de Thierry, mais aussi repris de zéro à partir de la version actuelle de la norme du NMRA.

Voici ce que donne le sketch principal de test : il s'agit de lire en boucle les CV du décodeur (test d'endurance).
Le truc à tourné toute la nuit sans broncher avec une de mes locos équipée d'un décodeur LaisDCC de base.

#include "DuinoBaseStation.h"

#include "SystemToolkit/SystemToolkit.h"
#include "DccToolkit/DccToolkit.h"

// Create a current sensor reading on A0 with VCC = 5.0 volts
ACS712CurrentSensor currentSensor(A0, 5000);

// Create a signal generator using timer 1, allowed to issue service mode commands
SignalGenerator generator(1, true);

// Create a track driver using previous generator & current sensor
TrackDriver driver(&generator, &currentSensor);

void readCV(byte cv)
{
Serial.print("CV ");
Serial.print(cv);
Serial.print(" = ");

byte value;
if (driver.readCV(cv, &value))
{
Serial.println(value);
}
else
{
Serial.print(value);
Serial.println(" : Failed to read !");
}
}

void setup()
{
Serial.begin(115200);
Serial.println("Initializing !");

pinMode(11, OUTPUT); // PWM compare A output enabled : Connect to PWM on motor
pinMode(12, OUTPUT); // PWM compare B output enabled  : Connect to DIR on motor

digitalWrite(11, HIGH); // Turn on power

driver.start();

Serial.println("Initialization done !");
}

int x = 1;
bool up = true;
void loop()
{
delay(2000);

        if (up)
readCV(x++);
else
readCV(x--);

if (x <= 1)
up = true;
if (x >= 140)
up = false;
}

Les deux libs SystemToolkit et DccToolkit seront bientot mises en ligne librement sous forme de package compatible avec l'IDE arduino. Bien entendu libres d'usage pour ceux qui le voudront et sous licence GPL 2 ou 3.

Je précise que la lib DccToolkit mentionne en Acknowledgement à la fois Gregg E Berman et Thierry et comporte les liens vers les projets respectifs DCC++ et lib DCCpp, sur Locoduino.

S'il y en a qui ont la possibilité (et surtout l'envie !) de participer à la mise au point en réalisant des campagnes de test sur d'autres décodeurs (donc qui ont la possibilité de réaliser sans aide le montage indiqué et si besoin de chercher un peu pour ajuster....), ils sont les bienvenus.

Quant à savoir pourquoi j'ai choisi de repartir d'une feuille blanche, je vous en parlerais quand je mettrais la lib en ligne, ce qui ne saurait tarder...

@Dominique : je pense qu'il est temps d'ouvrir un sujet dédié dans la bonne section pour la suite...je vais m'en occuper en fin de journée ce dimanche.

;)

Seb
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 14, 2021, 09:54:09 am
Ah oui : le décodeur de test que j'ai liste 140 CV dans sa doc, d'ou le IF en fin de code qui inverse la séquence...à adapter sur d'autres décodeurs
Titre: Re : Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le mars 14, 2021, 10:55:16 am
test sur d'autres décodeurs ...

Dans le tiroir ou dans les locos : LaisDCC, LENZ, ZIMO, ESU, donc prêt à tester !
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 14, 2021, 11:08:06 am
Je vous prépare un pack sources / une enfilade dans la section "librairies" pour avancer sur le sujet les amis !
Titre: Projet box stand-al
Posté par: msport le mars 15, 2021, 01:16:43 pm
Bon, pas grand succès dans mes tests
photo : Mega + LMD18200 sur main + MAX471 (testé) (impulsions vues sur A0)
Les locos frémissent mais ...

⸮⸮⸮⸮Initializing !
Initialization done !
CV 1 = 0 : Failed to read ! [b]A vide[/b]
CV 2 = 0 : Failed to read !
CV 3 = 0 : Failed to read !
CV 4 = 0 : Failed to read !
CV 5 = 0 : Failed to read !
CV 6 = 0 : Failed to read !
Initializing !
Initialization done !
CV 1 = 1 : Failed to read !
CV 2 = 0 : Failed to read !
CV 3 = 0 : Failed to read !
CV 4 = 0 : Failed to read !
CV 5 = 0 : Failed to read !
CV 6 = 0 : Failed to read !
CV 7 = 0 : Failed to read !
CV 8 = 0 : Failed to read !
CV 9 = 0 : Failed to read !
CV 10 = 0 : Failed to read !
CV 11 = 0 : Failed to read !
CV 12 = 255
CV 13 = 255 : Failed to read ![b] Lenz (zimo)[/b]
CV 14 = 4 : Failed to read !
CV 15 = 0 : Failed to read !
CV 16 = 128 : Failed to read !
CV 17 = 203
CV 18 = 112 : Failed to read !
CV 19 = 0 : Failed to read !
CV 20 = 0 : Failed to read !
CV 21 = 8 : Failed to read !
CV 22 = Initializing !
Initialization done !
CV 1 = 169  [b]LaisDCC mais ce n'est pas ça[/b]
CV 2 = 255
CV 3 = 63
CV 4 = 23
CV 5 = 48
CV 6 = 189
CV 7 = 221
CV 8 = 255
CV 9 = 0 : Failed to read ! [b]à vide[/b]
CV 10 = 255
CV 11 = 72 : Failed to read !
CV 12 = 126
CV 13 = 76 : Failed to read !
CV 14 = 0 : Failed to read !
CV 15 = 64 : Failed to read !
CV 16 = 93 : Failed to read !
CV 17 = 98
CV 18 = 21 : Failed to read !
CV 19 = 184
CV 20 = 32 : Failed to read !
CV 21 = 98
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 15, 2021, 01:30:09 pm
C'est déjà bien de m'avoir fait une série de tests, merci m'sieur !

Tu n'as pas de problème avec le 471 dans la ligne d'alimentation de la voie ? J'avais fait un essai et j'avais un truc bizarre avec le MEGA qui délirait....je vais refaire un test. J'allais te demander si tu avais bien mis PWM sur 1 puisque pas branché (sur ta photo) sur l'Arduino mais comme la led du LM est allumée je suppose que oui (et ça m'étonnerait que tu ais oublié un détail aussi évident....)
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 15, 2021, 02:02:33 pm
Bon un truc qui me semble hyper important...

Sur mon montage, si je me contente d'alimenter l'arduino par le port USB j'ai très peu de résultats de lecture fiables.
En revanche, en alimentant l'Arduino par un convertisseur DC/DC réglé sur 5V alimenté par la meme source que la carte moteur, je passe à un taux de succès très élevé...
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le mars 15, 2021, 03:48:54 pm
- PWM : sur 3 pour la main suivant schéma Locoduino (d’ailleurs le DCC est bien produit par le DIR)
- je vais alimenter le Mega par le 12 V du pont (même pas peur)
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF le mars 15, 2021, 04:04:54 pm
Sur le mega, la broche sortie 3 correspond à l'OUTPUT COMPARE C du timer 3.

Le code pilote systématiquement OUTPUT COMPARE B pour la génération du PWM (c'est le cas aussi pour dccpp).
Les IFDEF de DCCpp positionnent le timer 3 en service mais c'est la sortie 2 qui fournie OUTPUT COMPARE B du timer 3.

Si tu utilises mon code sans le changer, tu es sur le timer 1 (a peu pres équivalent au timer 3 à peu de choses pres sur un Mega) donc OUTPUT COMPARE B du timer 1 présente sur la sortie 12

Pin mapping MEGA (https://www.arduino.cc/en/Hacking/PinMapping2560)
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport le mars 15, 2021, 06:31:13 pm
J'en suis (comme pour les BaseStation voie main) à PWM=3 et DIR=12 pour un Mega.
PWM ne fait qu'autoriser le DCC.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF 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);
Titre: Re : Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: trimarco232 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 ?
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF 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....)
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: trimarco232 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
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF 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.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport 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
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF 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 !
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: trimarco232 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 ... )
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport 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.
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF 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 ?
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: msport 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).
Titre: Re : Projet box stand-alone DCC / CAN / Satellites & co...
Posté par: AmadeusHF 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 ;)