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 ;-)