Bonjour,
Je me suis remis sur mon pont tournant qui sera en 3 exemplaires sur mon réseau : 2 ponts tournant PECO (échelle N) et un pont secteur. Voir
http://modelleisenbahn.triskell.org/spip.php?rubrique23.
Dans mes essais, je pilotais le moteur PAP via des attentes (delay). J'ai remplacé ça par une classe C++ qui utilise une des PWM associées au TIMER1 en mode 16 bits avec une interruption sur l'overflow pour compter les pas et une sur le compare match pour arrêter le mouvement. Je gère également une accélération et une décélération mais je ne suis pas très satisfait du résultat. J'ai opté pour une accélération/décélération connstante et ça ne rend pas bien. À la réflexion, l'énergie étant en V
2, il vaudrait mieux avoir une accélération variable qui suit une courbe telle que l'énergie apportée est constante. Donc quelque chose qui est une parabole couchée. Mais il faut que je précalcule des valeurs, je ne vais pas demander à l'Arduino d'extraire des racines carrées sous interruption
J'ai codé aussi la partie CAN avec 8 messages de commande et 2 messages d'états. Les 8 messages de commandes sont en deux catégories : 2 messages pour mouvoir le pont en exploitation, 6 messages pour régler les positions de pont correspondant aux voies. On peut enregistrer des positions en EEPROM sous un identifiant (128 possibles au maximum) et ensuite envoyer une commande de positionnement sur une des positions enregistrées (code 0) ou sur la position mirroir, à 180° (code 1). Le premier message d'état diffuse toutes les secondes la position du pont. Le second, à la demande, les positions mémorisées en EEPROM.
Enfin j'ai codé une interface graphique pour régler le pont. Elle tourne sur une tablette DYO à base de Teensy 3.6 et d'écran tactile 7".