Parlons Arduino > Vos projets

Un Arduino par canton

(1/13) > >>

Jean-Luc:
Bonjour,

Il s'agit ici de faire du cantonnement sur un réseau analogique. L'idée est de pouvoir piloter un réseau « comme en numérique » avec une grosse différence : les « décodeurs » sont associés aux cantons et non aux locomotives.

Ce n'est pas une idée nouvelle, feu Driving Railways faisait cela. Mais il s'agit d'aller un peu plus loin en ayant une régulation de vitesse (compensation de charge dans le jargon).

Une première solution est de faire un arbre de relais qui permet d'associer une alimentation à un ou plusieurs cantons.

Une autre solution consiste à associer une alimentation pilotée par un Arduino à chaque canton. En plus de l'alimentation du canton, il assure la détection de présence et, idéalement, la mesure de vitesse de la locomotive qui occupe le canton.

C'est cette seconde solution qui est choisie.

Une première chose à faire est de synchroniser les PWM de tous les cantons. En effet, si les PWM ne sont pas synchrones, une locomotive à cheval sur 2 cantons recevra une impulsion plus longue et verra sa vitesse modifiée tant qu'elle est à cheval. Elle fera donc potentiellement un petit bond à chaque passage d'un canton au suivant.

Voici donc une bibliothèque qui assure la synchronisation des PWM de plusieurs Arduino. Elle utilise le timer2 dans un mode de PWM particulier qui permet d'ajuster finement la fréquence.

Un Arduino maître diffuse un signal de synchronisation aux autres Arduino, le code exemple est dans MasterClock. Le signal de synchro sort sur la broche 3.

Avec l'exemple SyncPWM, chaque Arduino affecté à un canton génère une PWM synchronisée sur la broche 3 et reçoit le signal de synchro sur la broche 8.

La fréquence de la PWM est d'un peu moins d'1kHz. l'erreur maxi entre 2 PWM, du moins ce que j'ai pu mesurer à l'oscillo, est d'environ 8µs. Les valeurs possibles pour la PWM vont de 0 à 254.

À 1kHz, le signal de synchro devrait pouvoir voyager sur une certaine distance (combien ? faut voir). Au delà, il faut passer en différentiel.

Si vous avez des questions, n'hésitez pas.

La bibliothèque :

https://dl.dropboxusercontent.com/u/67740546/SyncPWM.zip

Guillaume:
Comme en numérique c'est à dire ?
Chaque arduino pourra déterminer par exemple le sens du courant ?
Je ne connais pas ce log mais si on prend un exemple : réseau en 8 voie unique avec 2 gares sur les parties droites du 8 (dont une cachée donc)
pourrait-on faire partir chacun de leur coté un train d'une gare, ils vont chacun dans un sens pour arriver à l'autre gare et tout cela en analogique avec ce truc ? Comme en numérique donc ?

Jean-Luc:
Il y a deux partie distinctes.

La première à réaliser est l'alimentation de la locomotive, ce que fait un décodeur de locomotive en numérique. La différence principale est qu'en analogique, c'est le canton qui est alimenté et non la locomotive. La locomotive change donc d'alimentation au fur et à mesure de son parcours.

Il y a deux façons de faire :
- avoir une collection d'alimentations centralisées, autant que tu veux avoir de locomotive en fonctionnement sur le réseau. Une série de relai permet de connecter chacune de ces alimentation a un ou plusieurs cantons.
- avoir une alimentation par canton sans relais pour l'y connecter.

Dans le premier cas, il y a énormément de câblage et la régulation de vitesse n'est probablement pas possible. Dans le second cas la regulation de vitesse est possible mais il faut que les PWM des alimentations soient synchronisées. Si on veut une marche régulière et de très bons ralentis, la seconde solution est la meilleure.

La 2ème partie est le suivi des convois sur les cantons. C'est la même problématique en analogique et en numérique. Habituellement c'est réalisé par un logiciel qui tourne sur un PC. Il y a deux parties dans cette partie : la sécurité c'est a dire éviter que les trains n'entrent en collisions via un bloc automatique. Le routage des trains pour automatiser la circulation. C'est a gérer de manière centralisée sur un Arduino dédié.

Mais ou, une fois tout cela en place, on peut piloter un réseau analogique comme un numérique.

Concernant SyncPWM, j'en suis l'auteur. C'est une des briques de base de la seconde solution. 

Guillaume:
Très intéressant ce truc comme je pensais.
La 1ère solution est vraiment compliqué : c'est sur que ce n'est pas une taille de lopette mais chalindrais en est un exemple.

Je garde cela sous le coude ;) ou le pied je sais pas

Pierre59:

--- Citation de: Jean-Luc le janvier 18, 2015, 02:45:55 pm ---Il y a deux façons de faire :
- avoir une collection d'alimentations centralisées, autant que tu veux avoir de locomotive en fonctionnement sur le réseau. Une série de relai permet de connecter chacune de ces alimentation a un ou plusieurs cantons.
- avoir une alimentation par canton sans relais pour l'y connecter.

Dans le premier cas, il y a énormément de câblage et la régulation de vitesse n'est probablement pas possible.

--- Fin de citation ---
Bonjour

Je ne vois pas pourquoi ce "n'est probablement pas possible" ? A priori je le fait sur mon réseau !

Pierre

Navigation

[0] Index des messages

[#] Page suivante

Utiliser la version classique