jeudi 22 décembre 2016

Les simulations continuent: signalisation réaliste


Je continue ma série de tests simulés avec cette fois le passage d'un train sur une voie d'évitement. On peut y voir les ralentissement et rappel de ralentissement 60 (double jaunes clignotants), ainsi que la mise à jour des signaux en fonction de la position de l'aiguillage (en fin de vidéo).

Je conviens qu'il peut être difficile de se représenter les choses sans réseau, mais cela donne encore une fois une bonne idée du fonctionnement.

Encore un point à travailler: le réalisme du clignotement. Je l'ai déjà fait avec un autre projet alors il ne me reste qu'à le transférer dans ces modules-là. A suivre...

Bon visionnement.



dimanche 11 décembre 2016

La première simulation... en vidéo


Comme convenu, j'ai réalisé une première vidéo décrivant le fonctionnement du simulateur. La qualité n'est pas extraordinaire mais cela donne déjà une bonne idée des résultats attendus.

Bon visionnement!


vendredi 9 décembre 2016

La première simulation


Voilà, la première simulation est enfin fonctionnelle. J'ai pu la réaliser à l'aide de 8 modules:
  • un module DCC
  • un module Multiplexeur (qui ne sert qu'à simuler le mouvements des trains avec le clavier)
  • deux modules Loco contenant les scripts des automates
  • et quatre modules Canton qui détectent la présence des trains et gèrent la signalisation.

Comme on peut le voir sur la photo en bas, les quatre modules Canton sont équipés de LEDs représentant les signaux d'un BAL simple (3 feux) dans les deux directions.

Hélas, j'aurais bien aimé filmer les premiers tests mais les vidéos ne rendent pas bien les couleurs et il est difficile d'apprécier le changement des signaux en fonction du déplacement des locomotives.

Je vais réessayer demain en espérant avoir plus de succès...

jeudi 24 novembre 2016

Le projet qui me tient tant à coeur commence enfin à voir le jour...


Je travaille sur ce projet depuis assez longtemps pour ne plus me souvenir du point de départ exact. Cependant, je n'en suis pas venu directement à ce point aujourd'hui en une seule étape. J'ai commencé par développer de petits prototypes simples, réalisant une seule fonctionnalité à la fois, à l'aide d'un breadboard, afin de tester un composant particulier. Puis, de fil en aiguille, j'ai pu les faire évoluer vers des prototypes plus complexes en y incluant le CAN bus par exemple, établissant ainsi une communication entre les différentes fonctionnalités. Après plusieurs essais et erreurs, les prototypes ont pris forme pour en arriver à la présente version:


On peut apercevoir ici quelques uns des modules fonctionnels que j'ai réalisés. A gauche, l'injecteur/distributeur, puis le module CAN Bus/Arduino en haut, associé à un module de signalisation à sa droite, le détecteur en haut à droite, et enfin le grand module canton au centre.

Mais avant de décrire chacun de ces éléments, quelques mots sur le projet... Il peut se décrire de la manière suivante: automatiser tout ou partie d'un réseau DCC sans ordinateur...

Le concept est simple: pour des réseaux de petites tailles, il est possible d'automatiser le parcours de certains "trains de parade" pendant que l'utilisateur "joue" à manoeuvrer un petit convoi en gare. Mais aussi, lors d'une exposition, on peut vouloir automatiser la circulation d'une rame en va-et-vient sur un petit réseau point-à-point. Les exemples sont nombreux...

Mais quelle est l'utilité de ce projet? En fait, le DCC autorise beaucoup de liberté lorsqu'on est aux commandes. Mais dès qu'il s'agit de piloter plusieurs trains en même temps, cela se complique! D'où la solution souvent proposée d'utiliser un ordinateur et le logiciel approprié.

Alors pourquoi ai-je décidé de développer un autre système alors que celui-ci a déjà fait ses preuves? D'une part parce que j'ai toujours eu l'impression qu'utiliser un ordinateur dans ces conditions m'éloignait du modélisme comme tel... Vous allez me dire que toute l'électronique que j'ai utilisée peut elle aussi avoir tendance à m'éloigner de ma passion mais je vous rétorquerais que j'ai ressenti un plus grand défi à utiliser des Arduino qu'à programmer un logiciel même pour un Raspberry Pi. Et j'ai aussi très certainement appris beaucoup plus de nouveaux concepts en électronique que je n'aurais pu le faire en informatique (je suis programmeur de métier, ce qui explique peut-être cela...).

Et d'autre part, parce que je voulais me rapprocher d'une simulation répartie entre plusieurs concepts comme en réalité: les cantons avec leur signalisation autonome, le dispatcher indiquant les trajets aux trains en les aiguillant ici ou là, et enfin le pilote du train qui réagit à la signalisation et à son environnement afin d'arriver à destination. C'est ici qu'interviennent tous les modules individuels que j'ai développés de manière à répartir les fonctionnalités...

Nous pourrions argumenter pendant un long moment sur le pour ou le contre d'une telle décision, mais je ne veux pas entrer dans ce débat-là sur ce blog... Alors revenons au sujet principal. Pourquoi ai-je mentionné plus haut, des réseaux de petites tailles? Parce que je n'ai pas la prétention de développer un système universel, redimensionnable à l'infini, utilisable sur des réseaux de plus de 100 cantons où circulent 50 trains de manière indépendante et automatique. Ceci-dit, avec un peu plus de travail, je ne vois pas pourquoi cela serait impossible... C'est justement le rôle de la modularisation globale...

Je vais maintenant donner une description plus précise de chacun des modules. Tout d'abord l'injecteur/distributeur:


Dans l'idée de modulariser et factoriser les montages, le premier de la série me permet d'acheminer le courant et de supprimer le régulateur 12V/5V sur tous les modules... Je peux ainsi utiliser du 12V sur de grandes distances (fils rouge à gauche) entre plusieurs injecteurs et répartir ensuite le 5V sur de petites distances aux différents modules, sans perte de puissance. Il permet aussi de connecter les modules ensemble grâce au CAN Bus tel un réseau Ethernet. Enfin, il transmet le signal DCC (fils noirs à gauche) pour alimenter la voie parallèlement aux détecteurs de présence.

La connexion s'effectue à l'aide d'une prise RJ12 (6 conducteurs) ce qui permet d'acheminer les trois paires +5V/Gnd, DCC+/DCC- et CanH/CanL avec un seul câble plat.

On remarquera que le module est incomplet. En fait, il contient deux circuits d'alimentation indépendants. Pour les besoins de l'expérience, je n'ai eu recours qu'à un seul de ces circuits.


Ensuite, vient le module multiplexeur (à gauche sur la photo suivante): c'est la pierre angulaire de l'ensemble. Il contient un Arduino pour la logique, un encodeur MCP2515 et un transmetteur MCP2551 CAN Bus pour la communication entre les modules, la prise principale RJ12 et une barrette de connecteurs (à droite) qui permet d'ajouter l'extension désirée. Ainsi, à chaque fois que j'ai besoin d'une nouvelle fonctionnalité sur mon réseau, il me suffit de la développer, de la connecter à un multiplexeur et elle se retrouve automatiquement insérée dans le réseau. Ici, il s'agit d'un module de signalisation (encore une fois, incomplet pour le moment mais fonctionnel). Mais ce multiplexeur a plusieurs autres fonctionnalités: un exemplaire jouera le rôle du pilote du train, ce module ayant en mémoire le script d'automatisation. Un autre exemplaire servira à contrôler le booster afin d'envoyer les messages DCC au réseau.


J'ai décidé d'utiliser le CAN Bus afin de me libérer des bus de données propriétaires des différents fabricants. En particulier, j'utilisais LocoNet. Mais en voulant développer de nouvelles fonctionnalités ou simplement faire communiquer mes modules entre eux, je me suis assez vite rendu compte que la documentation n'était pas très détaillée, qu'elle n'était pas toujours disponible facilement, que le protocole ne me permettait pas de faire ce que je voulais à moins d'utiliser des tours de passe-passe assez épiques et surtout que le protocole pouvait changer n'importe quand et qu'il me faudrait peut-être modifier tout mon code pour satisfaire aux nouvelles exigences... ouf...! Ayant plutôt l'esprit "indépendant", j'ai préféré utiliser un protocole personnel qui pourra être adapté en fonction de mes besoins et basé sur le CAN Bus pour le transport.


Quelques mots sur le module signalisation: c'est une simple extension "électronique" qui permet de disposer de 24 sorties PWM supplémentaires sans utiliser un plus gros Arduino. Ici, je peux contrôler jusqu'à 3 signaux SNCF complexes ou 8 signaux BAL ou toute autre combinaison de signaux... On pourra voir au centre de la photo le connecteur mâle à 8 broches qui permet au module signalisation de se connecter au multiplexeur et ainsi de contrôler les éventuels signaux SNCF ou tout autre animation lumineuse... Le module utilise un registre à décalage 595 et une simulation PWM logicielle. J'ai parallèlement essayé le TLC5940 (driver PWM) mais le prix était finalement plus élevé et la précision du PWM que m'apportait ce composant était superflue.


Nous continuons maintenant avec le fameux détecteur (vu précédemment dans différentes versions sur ce blog).


Le principe de fonctionnement a déjà été évoqué... Il est basé sur la détection de courant induit dans une bobine et transformé en tension, qui à son tour, actionne un transistor et produit un signal HIGH ou LOW pour l'Arduino. On remarquera ici aussi un connecteur 6 broches qui sert à la liaison avec un module multiplexeur. Chaque multiplexeur peut accueillir 4 détecteurs, soient 8 zones de détection. J'ai ajouté récemment un trigger de Schmitt ce qui rend la détection beaucoup plus stable.


Et pour finir, mon module favori: le Canton. Il permet d'automatiser un canton en voie unique (deux directions) comportant 3 zones de détections: 2 zones d'arrêt, une à chaque extrémité, et une zone de roulement au milieu. Il permet aussi de connecter deux signaux SNCF complexes (un à chaque extrémité). Ce module s'insère sur le réseau CAN Bus afin de communiquer avec ses voisins et ainsi automatiser une grande partie de mon réseau, dans un avenir proche je l'espère... En fait, ce dernier module regroupe l'équivalent d'un multiplexeur, de trois détecteurs et d'un module de signalisation...



Pour conclure: l'idée importante à retenir avec ce projet est l'absence d'ordinateur et de logiciel de commande. Toute la logique est répartie sur plusieurs Arduino, allégeant ainsi chaque code source sur chaque micro-contrôleur. La communication se fait par le CAN Bus et permet de répartir les différentes fonctionnalités à la façon d'une architecture hétérogène en informatique. Il n'y a pas de "coeur" ou d'ordinateur qui gère tout... Certes, il n'y a pas d'écran, d'interface graphique ou de souris comme avec un ordinateur, mais si vous avez lu les articles précédents, vous vous souviendrez sûrement du boitier de commande en T avec le petit écran LCD. C'est l'outil qui me permettra de configurer les modules à la manière d'une centrale DCC et de piloter les locos individuellement au besoin.

Dernier point concernant le protocole de communication et l'interfaçage possible avec un autre protocole commercial: il me suffit de développer un petit module qui convertit mon protocole en LocoNet et vice-versa et de l'insérer sur mon réseau et le tour est joué! Je peux ainsi continuer à utiliser ma centrale Zéphyr au besoin...

Voilà, la première ronde de validation a débuté sur mon banc de test, et les résultats sont concluant. Je peux simuler la circulation d'un train sur une boucle de 4 cantons: la signalisation de chaque canton (dans les deux sens) se fait automatiquement et la vitesse du train est dictée par les signaux... Très prometteur.

Une petite vue de mon banc de test avec les deux versions de mon prototype fonctionnant ensemble. Les premiers multiplexeurs avec les Arduino rouge en haut, le clavier au centre qui me permet de simuler la présence sur les cantons "virtuels" et deux nouveaux modules en bas avec les Arduino bleu... On remarquera aussi les leds en haut à droite sur le breadboard. Cela me permet de simuler la vitesse du train et les messages DCC envoyés. En effet, impossible d'utiliser les fameux "print" dans les programmes sans risquer de ralentir et de compromettre l'intégrité de la communication par le CAN Bus...


J'espère que cette première introduction à mon projet vous a intéressée et qu'elle suscitera des commentaires et des questions auxquels j'essaierai de répondre du mieux que je peux.

A bientôt pour la suite.




dimanche 6 novembre 2016

Détecteur de présence avec trigger de Schmitt


Voilà le dernier modèle de détecteur de présence réalisé autour d'un trigger de Schmitt. Cela permet de stabiliser la sortie et d'éviter autant que possible les petits changement d'états intempestifs...

Petit détail sur la photo, chaque circuit comporte une résistance variable afin d'ajuster la sensibilité du détecteur. Cependant, n'en ayant pas sous la main, j'ai simplement utiliser une résistance fixe pour faire mes tests.



samedi 8 octobre 2016

PCB fait maison!


Cela faisait longtemps (même très longtemps) que je n'avais pas fait de PCB à la maison... Cela datait de mes débuts en électronique au collège avec l'aide d'un ami qui m'avait initié aux rudiments de ce hobby...

Aujourd'hui, je fais faire mes PCBs par une compagnie. Les résultats sont très bons et le prix très abordable. Cependant, le problème se situe au niveau du délais de fabrication et de transport... En tout: environ 3 semaines! Et lorsqu'on découvre des erreurs sur le design, il faut recommencer la procédure...

Donc, finalement, j'ai décidé de me remettre à la fabrication "maison" de PCBs. Le but n'est pas d'en produire en grande quantité mais bien de faire un prototype qui ensuite pourra être fabriqué en plusieurs exemplaires par un professionnel...

Alors voilà... Après quelques lectures sur internet afin de me mettre à jour sur de potentielles nouvelles techniques de gravure, j'ai fait quelques achats de produits et plaquettes cuivrées et j'ai réalisé mon premier PCB...

Je dois avouer que l'avènement des imprimantes laser domestiques aide grandement la fabrication du typon. En effet, une impression sur le papier adéquat (Press'n'Peel) et c'est fait! Cela rend les choses beaucoup plus simples que l'ancienne méthode avec, ce que j'appellerais, les "décalcomanies noires"... Peut-être certains s'en souviendront... Même le design du circuit sans logiciel était horriblement long...

Bref, voici le résultat. Il ne me reste plus qu'à compléter le montage!


Et maintenant, avec les composants:


Et en plus, après un petit test, ça fonctionne!!! Certes, je suis loin de la qualité d'un PCB fait en usine, mais pour un prototype, c'est largement satisfaisant.

mardi 4 octobre 2016

Retour sur les animations


Depuis quelques temps déjà, je travaille sur l'automatisation de mon "réseau". Les périodes de design et de réflexion sont entrecoupées de périodes d'attente pour recevoir mes PCBs ou des composants achetés en ligne...

Qu'à cela ne tienne, je ne me décourage pas et profite de ces moments plus calmes pour revenir sur des modules que j'ai réalisés plus tôt, en particulier les animations: soudure à l'arc, feu de camps, TV, etc... ainsi que l'illumination dynamique du réseau.

Mais pour faire évoluer les choses, j'ai repris les designs initiaux et essayé de les réduire à leur plus simple expression en utilisant des ATtiny modèles 84 ou 85. Les modules sont fonctionnels et les PCBs dessinés. Il ne me reste plus qu'à les faire produire et attendre à nouveau leur livraison ;-)

Voici les deux premières vidéos très semblables à celles présentées plus tôt sur le blog...



Désolé pour la qualité et le faible rendu des couleurs... Pas facile avec un téléphone mobile...

D'ailleurs, je pense rédiger un petit résumé sur l'utilisation et la programmation des ATtiny. Rien de bien compliqué comme vous le verrez très probablement bientôt.


jeudi 1 septembre 2016

Nouveau boitier de commande et de programmation


En attendant mes PCBs et mes composants pour construire la deuxième série de modules, j'ai confectionné une nouvelle commande à l'aide d'un boitier, un potentiomètre, 3 interrupteurs, un clavier et un écran LCD 20x4. Rien de bien extraordinaire, ce sont des composants que l'on trouve facilement chez les détaillants d'électronique. Par contre, j'ai été très surpris de la rapidité avec laquelle j'ai pu monter l'ensemble: 2 heures! Ces matériaux se travaillent vraiment très facilement...





dimanche 14 août 2016

Suite de la fabrication de mon automate: 2 trains...


Dans cette nouvelle vidéo, je montre le principe de fonctionnement de l'automate lorsque deux locomotives sont en circulation. La première est pilotée automatiquement par l'automate. Le script est simple: rouler depuis la "gare" en accélérant légèrement à la sortie et en décélérant au retour. Après une pause de 5s, le train repart.

Mais c'est sans compter la seconde locomotive que je pilote... La première va adapter sa vitesse en fonction des zones libres et occupées en face d'elle.

Au milieu de la vidéo, j'interviens manuellement pour retirer ma locomotive et la remettre sur les rails dans l'autre sens. En effet, elle ne peut pas franchir l'un des aiguillages... (sûrement un problème de pause un peu trop rapide lors de la construction de ce petit réseau). Quoiqu'il en soit, l'automate réagit aussi bien en suivant qu'en affrontant une autre loco.

Voilà pour aujourd'hui. Je continue à travailler sur ce prototype pour de nouvelles fonctionnalités!


dimanche 7 août 2016

Premier test des noeuds de détection


Depuis quelques jours, je suis au travail afin de terminer la production et l'installation de petits modules électroniques sur mon réseau de test. Voilà donc qui est fait. Après quelques déboires, j'ai pu fixer un problème électronique et deux ou trois bugs dans le multiplexer, recommencer le câblage, etc... Mais c'est fait.

Dans cette première vidéo, vous pourrez voir que les messages de positionnements de la loco sont envoyés à l'automate et que celui-ci pourra bientôt jouer des scripts en fonction de ces informations.

Et surtout, point important pour moi, cela représente le premier pas vers un fonctionnement totalement libre de produits commerciaux (sauf les décodeurs de locomotives! en effet, ils sont beaucoup trop petits pour que je puisse les réaliser moi-même...) Ceci-dit, ce choix est purement idéologique: il est issu de la volonté de tout faire par moi-même ce qui représente un grand défit, et non pas comme un rejet des produits commerciaux pour X ou Y raisons...

La vidéo est en anglais puisque publiée sur un forum US. Mais qu'à cela ne tienne, si vous avez des questions, n'hésitez pas!

Bon visionnement!


jeudi 4 août 2016

Automate, un prototype avancé...


Sous ce titre étrange, je veux simplement vous montrer l'avancement du prototype d'automate/centrale DCC.

Dans une petite boite, j'ai réuni l'automate, le booster et un petit écran LCD classique. A l'extérieur, ce trouve le mini-clavier provenant de mon prototype précédent et que j'ai réutilisé en attendant les pièces pour en fabriquer un nouveau...

Voilà tout d'abord la vue extérieure:


Puis le superbe clavier...


Et enfin l'intérieur:





dimanche 24 juillet 2016

Voilà le premier ensemble de modules


Dernièrement, je vous ai montré le module de détection ainsi que le module multiplexeur. Voici de quoi cela aura l'air sur mon réseau de test une fois installés... Comme vous pouvez le constater, le multiplexeur peut accueillir 4 modules de détection soient 8 zones indépendantes! Sur cette photo il n'y en a que la moitié (4 zones).



samedi 23 juillet 2016

Récupération des signaux de détection avec le multiplexeur


Nouvelle étape réalisée hier soir: le mutliplexeur, et second modèle sorti des ateliers PAZ-électronique... Il s'agit d'un module capable de récupérer tous les signaux provenant des détecteurs et de les encapsuler dans un message véhiculé par un CanBus. C'est l'équivalent des LocoNet et des S88 de ce monde: transporter des informations d'un module à l'autre parallèlement au signal DCC.

Ici, j'ai l'avantage de contrôler à 100% le protocole et son contenu dans des messages CanBus, en comparaison des autres protocoles dits "commerciaux". Au moins, j'ai toute la documentation nécessaire avec moi ;-)

Donc voici le module déjà fonctionnel bien qu'il soit en cours de réalisation:


Encore une fois, rien de compliqué: autour de l'Arduino, on trouve le contrôleur CanBus MCP2515 et le transmetteur MCP2551. L'oscillateur sur la droite est temporaire comme vous pouvez l'imaginer! Pour l'instant, je suis capable de faire communiquer deux modules entre eux. Il ne me reste qu'à compléter l'installation des pins d'e/s et de faire quelques tests avec les détecteurs...

A suivre...



vendredi 22 juillet 2016

jeudi 21 juillet 2016

Tout dernier prototype du détecteur de présence DCC


Voilà, c'est fait! La version 1.0 (prototype fonctionnel) du détecteur de présence est sorti, et par la même occasion cela marque le début des activités des ateliers PAZ-électronique!!! ;-)

Ce montage est identique à ceux utilisés avec l'automate dans les vidéos de mon réseau de tests. Sur ce dernier, je ne les avais pas montés sur PCB encore, mais sur de simples plaquettes de prototypage à trous...

Dommage que je sois déjà en train de travailler sur la version suivante 1.1 à cause de deux petites erreurs de design... J'ai pu les corriger rapidement sur les PCB que j'ai déjà reçus car cela ne me gêne pas de les utiliser ainsi sur mon réseau.

Quoiqu'il en soit, voici la bête: 2 zones par plaquette, alimentation 5V, témoins d'occupation. Le signal de sortie est HIGH ou LOW au sens Arduino du terme (+5V ou GND). Il peut être utilisé par n'importe quel autre montage (un Arduino, alimentation d'une LED sur un TCO, déclenchement d'un relais à l'aide d'un petit montage supplémentaire, etc...). Bien évidemment, toute modification peut être apportée en fonction des besoins...


mardi 19 juillet 2016

Encore un nouveau script...

Celui-ci est particulier puisqu'il montre à la fois le va-et-vient automatique de la SD40 mais aussi la possibilité de piloter la B23-7 manuellement. L'intérêt réside dans la protection automatique des deux locomotives. Lorsque je demande à pouvoir accéder à la voie principale, l'automate stoppe la SD40 et la met en attente. Une fois ma manoeuvre terminée,  le trafic normal est restauré. Une petite vidéo en exemple...


dimanche 17 juillet 2016

On continue avec les scripts et l'automate...


Ah... que de péripéties depuis quelques jours... Pour ne pas trop m'étendre sur le sujet, je dirais tout d'abord que j'ai probablement grillé mon LMD18200 suite, je crois, à un court-circuit sur un aiguillage mal positionné en faisant des tests... Il a fallu remplacer la pièce. Heureusement, j'avais un L298 sous la main ce qui m'a bien rendu service car je n'ai pas eu à attendre une nouvelle commande de composants.

Ensuite, pour parer à tout nouveau problème, j'ai installé un disjoncteur (Digitrax PM42) entre mon réseau de test et mon automate. Je ne comprends pas pourquoi je ne l'ai pas fait plus tôt alors que je l'avais dans mes cartons depuis quelques temps déjà. Il est pourtant clair que de manipuler des prototypes électroniques peut finir par créer des situations sensibles... ;-) Donc, si vous êtes comme moi et évoluez dans le même environnement, mieux vaut installer un disjoncteur!!!

Enfin, j'avais un problème d'instabilité dans le signal DCC, la détection des cantons, etc... La solution? Ne pas oublier de raccorder les masses entre elles! surtout lorsque plusieurs alimentations sont en jeu...

Bref, après cette longue introduction, voici les deux résultats obtenus. Un va-et-vient avec une configuration à plusieurs aiguillages:


Ensuite, un croisement et va-et-vient entre deux locos:


Voilà pour aujourd'hui. Je continue mes tests de scripts...


mardi 12 juillet 2016

Motorisation des aiguillages


Ce soir, j'ai installé les deux servo-moteurs ainsi que le module de commande incluant les deux relais d'alimentation. Après quelques soudures et plusieurs branchements entre ce module et le réseau ainsi qu'avec l'automate, je peux enfin faire les premiers tests...


La locomotive se déplace bien sur les aiguillages et ceux-ci se positionnent  lorsque j'indique la direction voulue depuis le clavier de l'automate.

Demain, j'espère pouvoir écrire un petit script qui inclura les aiguillages...

lundi 11 juillet 2016

Modification de l'automate et du réseau de test


Les choses avancent... Je planifie de travailler sur mon automate afin de créer un script de croisement de plusieurs trains. Pour cela, j'ai modifié mon mini-réseau de test pour ajouter deux embranchements. Je vais ainsi pouvoir tester la logique des aiguillages.

Certes, il ne s'agit pas d'une zone de dépassement. Mais le principe est le même: il est possible de gérer plusieurs trains et actionner les aiguillages en fonction des directions de chacun.

Ensuite, il me faut un module de contrôle pour les moteurs d'aiguillages. Voilà qui est fait:


Le principe est simple:
  • réception des deux signaux de commande d'aiguillage de l'automate
  • déplacement des moteurs (type servo)
  • positionnement des relais correspondant afin d'alimenter correctement les pointes de coeurs
L'Arduino peut se charger facilement de cette responsabilité: lecture sur un port d'entrée d'un signal de commande provenant de l'automate. En fonction de la valeur du signal, envoi d'un HIGH ou LOW sur une sortie. Celle-ci est branchée sur un transistor qui alimente un relais... Enfin, sur une autre sortie, branchement d'un servo et gestion de celui-ci avec l'aide de la bibliothèque Servo.h bien connue. On multiple le tout par deux et on peut commander deux aiguillages...

Enfin, j'ai aussi ajouté deux accessoires bien pratique sur le clavier de mon automate: un potentiomètre pour la vitesse et un interrupteur trois positions pour les changements de direction (marche avant-stop-marche arrière).


Prochaine étape: installation des moteurs sur le réseau et test...

vendredi 1 juillet 2016

Nouveau prototype de mon automate


Avancement du projet "automate", qui avait débuté par le développement de mon décodeur maison et que j'utilisais comme automate avec quelques modifications du programme. En effet, à l'aide de l'interface Loconet et du détecteur BDL168 de Digitrax, j'étais capable de récupérer les informations d'occupation des cantons et d'agir logiquement sur les deux locomotives au travers de ma centrale Zephyr. Je vous renvoie aux deux vidéos: va-et-vient et gestion d'espacement par cantons.

Aujourd'hui, le projet évolue vers un modèle autonome. Cette fois-ci, plus besoin de centrale! Le montage incorpore l'équivalent d'un booster (un pont en H). Plus besoin non plus de Loconet pour communiquer entre les éléments puisque toute la logique est centralisée dans l'Arduino. Enfin, plus besoin du détecteur BDL168 puisque, maintenant, je développe aussi mes propres détecteurs...

L'intérêt d'un tel montage se caractérise tout d'abord par sa simplicité: lors d'une exposition ou d'une démonstration, pas besoin d'emporter la centrale DCC, l'ordi et d'installer un logiciel complexe et de programmer les scripts d'automatisme. Je suis pourtant assez familier avec ces logiciels et informaticien de profession. Malgré cela, il n'est pas toujours évidant d'arriver rapidement aux résultats voulus...

Ici, mon objectif est de rendre l'utilisation d'un petit réseau DCC très simple pour qui désire seulement faire rouler quelques convois en va-et-vient, gérer le croisement de deux trains en gare, etc... Ainsi, il reste du temps pour discuter avec les visiteurs sans avoir le nez rivé sur la manette de commande... Certains se reconnaitront sûrement ;-)

Voici le prototype:


Certains pièces sont bien connues pour ceux qui développent autour de l'Arduino: le pont en H LMD18200 en haut, l'afficheur LCD au milieu et bien sûr l'Arduino mini sur la gauche de mon PCB. En attendant une intégration complète, je réutilise les différents éléments que j'ai sous la main, ce qui facilite le prototypage.

Le petit clavier est fait de 4 boutons poussoir. Mon PCB contient l'Arduino, un démultiplexeur pour ajouter des ports de sortie afin de commander des aiguillages, ainsi qu'un multiplexeur qui permet de gérer jusqu'à 16 cantons (détecteur de courant, barrière infra-rouge, ILS, etc...). Le montage s'adapte facilement à tous les besoins...

Comme vous avez pu le voir lors d'un précédent article sur mon "établi", la voie que j'ai installée au dessus de ma zone de travail est découpée en trois cantons, chacun équipé d'un détecteur maison basé sur le principe bien connu de détection de courant induit. Nous aurons sûrement l'occasion d'y revenir plus en détails dans un futur article.

Une fois le montage réalisé, il suffit de connecter le PCB au 5V, le "booster" au 12V, les cantons au multiplexeur, le signal DCC au booster et le tour est joué...

Bien évidemment, pour les premiers essais les seules actions possibles sont le réglage de la vitesse et le sens de marche. L'adresse de la loco est gravé dans le programme ainsi que l'allumage des feux, etc... Il suffira de compléter le programme avec toutes les fonctions utiles et écrire une petite interface qui s'adaptera à l'afficheur LCD.

Les règles que j'ai implantées dans l'automate sont simples: si la loco entre dans le canton de gauche, alors elle repart vers la droite. Idem pour le canton de droite. Le LCD affiche simplement le sens de marche, la vitesse et les états des 3 cantons pour une vérification visuelle rapide...



Voilà, rien de bien compliqué... Vous pouvez visionner la vidéo suivante qui présente les premiers essais concluants de cette phase d'intégration du prototype...



Si vous êtes intéressés par ce montage, n'hésitez pas à mon contacter par email.
Bon visionnement.

samedi 4 juin 2016

Plan de travail


Dernièrement, j'ai ajouté une voie à mi-hauteur de mon plan de travail. J'en profite aujourd'hui pour faire quelques photos de mon "antre"... Une CC72000 trône devant moi ;-)



Sur la première photo, une vue générale de mon espace de travail. Il s'agit d'un ancien petit comptoir de cuisine style établi. J'ai fabriqué un arrière plan avec des étagères en hauteur afin de loger mon bric-à-brac et de supporter quelques bandeaux de leds pour un éclairage direct.

Le dernier ajout est donc la voie alimentée DCC et sectionnée en trois cantons. Cela me permet de faire les tests de mes nouveaux achats mais aussi de programmer les décodeurs.

Chaque canton est équipé d'un détecteur de présence que j'ai confectionné. Cela me permet par la même occasion de tester mes automates, mes montages DCC...



La seconde photo donne une idée de tout ce que peut contenir un tel endroit et du fouillis qui peut prendre possession des lieux assez rapidement... On y retrouve: l'alimentation PC convertie et le panneau d'alimentation qui en est issu (3,3V, 5V et 12V). Très pratique d'avoir sous la main toutes ces sources. Il suffit de confectionner quelques câbles avec à une extrémité des fiches bananes et à l'autre différentes terminaisons comme des double pins espacés de 2.5mm qui s'insèrent sur un breadboard, un embout 2,1mm rond qui peut par exemple se brancher à un Arduino, des fils nus pour les borniers à vis, etc...


Cette alimentation permet aussi d'alimenter les bandes de leds à moindre coût. Ensuite, l'oscilloscope pour le debugage des montages électroniques. La centrale DCC Digitrax reliée à ma voie de test. Vers la droite (photo précédente) le poste à souder et l'ordinateur sur un support élevé pour gagner de la place et y avoir  accès rapidement...

Voilà pour cette petite parenthèse équipement. Même si je ne l'ai pas mentionné, je me sers aussi de cet espace pour tout ce qui est modèles réduits et bricolages ferroviaires... ;-)


dimanche 10 avril 2016

Horloge


Petit moment de détente cet après-midi... En faisant le tri des différents composants de ma boite à outils "électronique", j'ai remis la main sur des afficheurs 7 segments bien connus. Je n'ai jamais eu l'occasion de faire un projet avec ceux-ci. Alors, pour le plaisir, j'ai réalisé une horloge que j'installerai au dessus de mon établi afin de ne plus perdre la notion du temps lorsque je bricole... ;-)

Voici quelques photos de l'objet sans prétention...




Les 4 afficheurs individuels sont montés sur une plaquette insérée à la vertical sur la plaquette principale. Cette dernière contient un Arduino Nano, un module DS3232 incluant une horloge persistante (sauvegarde par pile) et 4 transistors qui permettent d'alimenter tour à tour chaque afficheur.

Quelques mots sur le montage... Les afficheurs sont des SMA42056 à cathode commune. Il serait préférable d'utiliser des afficheurs à anode commune, mais j'ai pris ce que j'avais sous la main ;-) Ce n'est pas d'une grande importance mais le second modèle aurait été plus simple à utiliser. J'y reviendrai prochainement dans le dossier Arduino...

Etant donné que chaque afficheur est commandé par 8 pins + commun, cela signifie qu'un Arduino comme le Nano n'a pas assez de ports pour maintenir les 4 afficheurs (32 outputs!). Vous imaginez bien qu'il y a une solution pour parer à cette difficulté sinon le monde de l'électronique serait bien désemparé dès qu'il s'agirait de commander plusieurs dizaines de LEDs... Là aussi, j'y reviendrai dans le dossier Arduino. Cependant je vais simplement introduire le sujet dans les lignes suivantes.

Vous connaissez déjà la notion de persistance rétinienne: afficher très rapidement une séquence de plusieurs informations entrelacées afin d'avoir l'impression qu'elles sont toutes affichées en même temps... Dans le cas présent, nous allons alimenter chaque afficheur l'un après l'autre et ce, très rapidement, de façon à n'utiliser que 8 ports de sortie au lieu de 32!

Ce mécanisme implique deux éléments. Mais avant de vous l'exposer, prenons l'exemple d'une simple LED. Mis-à-part la résistance de protection, l'anode de la LED doit être connectée à la source + et la cathode au 0 ou GND. Dans un montage de base, on connecte l'anode à une sortie de l'Arduino et la cathode au GND de l'Arduino. Ainsi, si le signal de sortie est HIGH, alors la LED s'allume puisque cela crée une différence de potentiels entre l'anode et la cathode. Si le signal est LOW, la différence est nulle et la LED reste éteinte. Donc, le port de sortie de l'Arduino a une fonction d'interrupteur en quelque sorte...

De la même façon, si le signal de sortie est HIGH en permanence mais que nous plaçons un interrupteur du côté de la cathode, la LED ne s'allumera que si l'interrupteur est fermé... Ce sera au transistor de jouer le rôle de l'interrupteur dans ce montage.

En résumé, les deux éléments mis en jeu sont:
  • les 8 ports de sortie, communs au 4 afficheurs
  • chaque cathode commune de chaque afficheur est contrôlée par un transistor.
Le programme fonctionnera alors ainsi:
  • définir les états des 8 sorties pour le premier afficheur et rendre le transistor 1 passant, créant ainsi un circuit fermé entre les segments dont les anodes sont à HIGH et la cathode qui est reliée au GND. Les autres transistors 2, 3 et 4 sont bloquants, donc les segments des afficheurs restent éteints.
  • définir les états des 8 sorties du deuxième afficheur et rendre le transistor 2 passant... Les transistors 1, 3 et 4 sont bloquants...
  • et ainsi de suite, à tour de rôle...
Pour information, voici à quoi ressemble le schéma de montage:


On notera que les mêmes segments des afficheurs sont reliés et que les cathodes communes ont toutes un transistor qui sert d'interrupteur d'alimentation...

A titre indicatif, les 8 résistances protégeant les afficheurs se situent autour de 560 Ohms. Les 4 résistances sur les bases des transistors sont des 2 kOhms. Les transistors sont des NPN 2N2222 très courants.

Remarques:
  • nous aurions pu utiliser une seule résistance par cathode (soient 4 au total) au lieu de 8. En effet, étant donné que chaque segment est alimenté l'un après l'autre, la résistance de protection peut être installée sur la cathode commune entre l'afficheur et le transistor... Mais cela ne fait qu'une économie de 4 résistances...
  • nous aurions aussi pu utiliser moins de sorties pour commander les segments en employant un registre à décalage ou un démultiplexeur. Dans ce cas, le montage aurait été légèrement différent puisqu'il aurait nécessité des afficheurs à anode commune! Nous aurons l'occasion d'y revenir...

Voilà dans les grandes lignes. Bien sûr, ces explications sont très succinctes mais je vous invite à surveiller le dossier Arduino pour plus de détails dans les jours à venir...


dimanche 27 mars 2016

Module Jour-Nuit


Depuis quelque temps déjà, j'avais développé un pcb utilisable pour plusieurs projets comme l'automate de pilotage, le décodeur de signalisation complexe ou encore les animations lumineuses. Hier, j'ai pris le temps de monter un module d'animation jour-nuit comme je l'avais présenté il y a bien longtemps...

En fait, suite à la demande d'un collègue qui voulait un tel module pour son réseau et avant de lui en monter un, je voulais tester des transistors MOSFETs en remplacement des Darlington TIP122 que j'utilise habituellement. Voici un des modules testé et installé sous mon réseau:


Au milieu on remarquera le micro-contrôleur, juste à gauche le régulateur 5V et les deux MOSFETs. A droite, l'étage de communication avec le bus Loconet qui permet au module d'envoyer des commandes aux décodeurs de leds installés autour de la gare comme l'éclairage urbain, la cabine téléphonique, etc... pour ceux qui s'en souviennent... et aussi de recevoir des directives afin d'arrêter l'animation par exemple. En bas à droite, deux DIP switches permettent de jouer différentes séquences ou tester les branchements.

Voilà pour un petit week-end d'électronique ;-)