8 sorties PWM synchronisées

Bonjour, avec un Arduino Mega, je voudrais contrôler un petit réseau de trains miniatures. Pour celà je voudrais utiliser 8 sorties PWM. La fréquence standard de 490 Hz me plait bien. Par contre, pour pouvoir utiliser une astuce, il faudrait que les fronts montants des impulsions de chaque PWM soient à peu près synchronisées. En fait il ne faudrait pas que l'impulsion de la sortie 2 soit présente pendant la sortie basse de la sortie 1, ... parce que les locomotives vont faire un 'bond' à chaque changement de canton. C'est clair ?
Est-ce le cas en standard ? Si non est-ce réalisable ?

D'avance merci
Jean à Grenoble

Je n'ai pas la réponse, je ne sais même pas combien de sorties PWM il y a sur une carte Mega.

Si je réponds, c'est quand même que je sais quelque chose : https://locoduino.org

C'est LE site incontournable pour l'automatisation des réseaux miniatures.
Je pense que tu y trouveras des spécialistes compétents et passionnés.

Bonsoir

Au cas ou la carte Mega ne fasse pas l'affaire seule.

je n'ai pas sous la main de composant PCA9685 (16 canaux PWM , comande par bus I2C)
Il me semble que ,par conception, ses 16 sorties PWM sont synchrones, basées sur un compteur unique.

hello
:thinking:une question me taraude, allez, je fais le candide :innocent:

comment 8 sorties PWM peuvent elles être synchro?
si j'en prends 2
la 1ere à 50, et la deuxième à 222
je peux peut être les synchroniser sur le 1 er flanc du premier créneau
puis, comme elles n'ont pas la même fréquence, le 2 ème créneau sera décalé de x, le troisième de xx , le 4 ème de xxx, etc
donc la synchro est toute relative....
bien sur, si les fréquences sont les mêmes, une synchro prend tout son sens, mais alors puisque ce sont les même pourquoi en changer....

la carte Mega a le PWM en 490Hz sur 9 broches (3 sont en 980Hz). Les 3 compteurs associés sont indépendants, mais il suffit de les remettre à 0 quasiment en même temps. Pour aller plus loin, on peut les synchroniser exactement de façon empirique (en gros, on remet le premier à , le deuxième à 1, le troisième à 2).

C'est un peu ardu au premier abord parce qu'il faut trifouiller la dataasheet, mais quand on connait les timers, c'est plutôt simple. Je peux te faire cela.

Bonsoir 68tjs,

merci pour le lien ! En fait j'aide un copain pour son réseau et je découvre ce monde. Je fais du modélisme ferroviaire mais à grande échelle : 5 pouces et 7 pouces 1/4
http://www.gvc-pontcharra.fr/index.php

Un de ces jours on mettra des arduino mais pour l'instant ça fonctionne au charbon :wink:
Jean

Bonsoir al1fch,
çà c'est une réponse intéressante parce qu'on avait sélectionné le Mega QUE pour son nombre de sorties PWM. On a donc une deuxième solution. C'est bien.
Merci beaucoup
Jean

Bonsoir dfgh : j'explique !

on va avoir 2 trains ANALOGIQUES (des vieux JOUEF) sur le circuit que l'on va piloter avec 2 commandes indépendantes. Comme on ne peut pas programmer les locomotives, on va 'permuter' les alimentations des cantons.
Soit un train sur le canton N avec un rapport cyclique de 20 (on détecte sa présence par sa consommation de courant). S'il y a un train sur le canton N+1, l'arduino va le faire ralentir pour l'arréter devant le feu rouge. Mais si le canton N+1 est libre, on va l'alimenter avec le même rapport cyclique que le canton N. Si les 2 sorties sont synchrones, pas de problème. Mais si par exemple l'impulsion sur le canton N+1 est après celle du canton N, quand la machine va passer d'un canton à l'autre, elle va recevoir briévement, 2 fois plus d'impulsions que programmé. C'est ce que l'on veut éviter.
Donc en fait il est important que les sorties soient synchrones 2 à 2 mais c'est beaucoup plus simple si elles le sont toutes non ?
Et pour être complet : on n'a jamais essayé et ce n'est qu'une pure supposition !

Bonne soirée
Jean

ok, merci pour l'explication
en résumé, la 3 prendra le relais de la 2 qui aura elle même pris le relais de la 1.
et donc elles auront toutes la meme fréquence, (valeur PWM).

Bonjour,
supposition absolument non fondée. Avec une fréquence PWM De 490Hz, la loco va intégrer la désynchronisation au passage de canton et tu n’y verras rien.
C’est mon avis

Bonjour,

+1. Avec l'inertie moteur/loco, ça m'étonnerait qu'une différence de phase ait la moindre influence visible.

Certes, il est parfaitement exact que l'inertie mécanique va masquer une impulsion de quelques ms.
Mais il faudrait en savoir un peu plus sur comment sont pilotés les cantons. En effet si c'est un pont en H (ou même un demi-pont) qui pilote les cantons et que les PWM ne sont pas synchrones on peut faire un cour-circuit en passant d'un canton à l'autre.

J'avoue que je ne comprend pas bien ce que tu veux dire.

D’ailleurs je ne comprend pas bien la demande initiale:

Sauf si les pwm sont à la même fréquence, en phase et à la même valeur, il y aura forcément des moments ou une sortie sera à 1 et l'autre à 0.

Hola, je ne pensai pas déclencher un tel flot de réponses !!
Le déphasage n'est pas ce qui m'inquiète. C'est un autre point.
Prenons une 040 avec un long empattement qui prend le courant via le premier et le dernier essieu. Elle tracte un lourd train de marchandises. On lui envoie un rapport cyclique de 10% sur le canton N puis N+1. Quand le premier essieu est sur la canton N+1, il va recevoir l'impulsion du rapport cyclique 10% du canton N+1; mais le dernier essieu va recevoir l'impulsion du canton N. Au total, pendant toute la durée du franchissement de la frontière, la 040 va recevoir, je crois, 2 impulsions de rapport cyclique 10% par période donc globalement un rapport cyclique de 20%. Elle devrait donc subir un écart de vitesse qui, à mon humble avis, devrait être visible.

Évidement ce problème devient moins sensible si le rapport cyclique est de 90% par exemple.
C'est plus clair ? J'ai tort de m'inquiéter ?

Nous n'avons pas encore étudié par quel moyen (pont en H, MOSFET, ...) nous allions alimenter les cantons.

Bonne journée à tous ... je vais à Pontcharra pour entretenir une 030 PLM en 5' :slight_smile:

Jean

Alors pourquoi vouloir synchroniser ?

Un moteur est un super filtre passe bas, si ce n'était pas le cas, les moteurs fonctionneraient par secousses et ce n'est pas ce qui est constaté.

Un filtre passe bas "lisse" et introduit un retard (la nouvelle valeur du signal n'est disponible qu'après quelques micro secondes ou quelques millisecondes) qui sera favorable aux changements de canton : il n'y aura pas de discontinuité dans la tension, mais évolution continue, l'accélération ou la décélération se feront "en douceur".

  1. Si le PWM sort 0V ou 12V (par exemple) et que les sorties ne sont pas en phase il va y avoir un moment où on aura +12V sur un canton et 0V sur l'autre et la roue va faire un court-circuit.
  2. Si le PWM sort hiZ ou 12V il n'y aura pas de court-circuit par contre on a pas vraiment de freinage et on a éventuellement une impulsion rallongée.
    path861

Bonjour,
contrainte supplémentaire, il prend le courant sur 2 essieux qui sont séparés de la longeur d’une loco.
Ce problème est récurrent, comment font les autres ?

Bonjour

+1

Le schéma électrique de la loco montrant la récupération de l'amimentation à partir de deux essieux et la gestion du ou des moteurs serait un plus

Problème récurant.
C'est pour cela que j'ai proposé le site locoduino, ce sont des spécialistes qui connaissent la solution.
https://locoduino.org/

Si on est en PWM 0/12V la vitesse du moteur étant en gros proportionnelle à la tension moyenne, la vitesse du train est en gros proportionnelle au rapport cyclique.
Si on est en PWM hiZ/12V on n'a plus cette proportionnalité ce qui peut être gênant surtout pour les basses vitesses.

C'est cinq lignes de code pour synchroniser les 9 PWM d'une mega. Pourquoi tergiverser autant? On synchronise les PWM et il n'y a plus de problèmes.