Une débutante dans le décor - Ep6 - Quelques automatismes (Arduino Nano)

Si tu suis le tutoriel, aucun problème. L’Arduino ne fait que lire une tension au travers d’une petite carte analogique qui converti le 0-25V en 0-5V la tension d’entrée de l’Arduino. Au pire, c’est l’Arduino que tu vas cramer si tu le branches directement sur la voie … (mésaventure qui m’est arrivée).

Après tu peux faire comme moi : tu te montes un bout de maquette sur une table avec quelques rails et tu fais tes essais et tes mises au point. Aucun risque pour ton réseau principal/

@+

Merci Julie,
J’espère que l’on trouve ce genre de matos en Suisse, car pour l’instant rien vu, peut-être sur Ebay, mais le port est conséquent je trouve.
Amicalement

J’ai vu quelque chose sur le Net, je vais regarder de près. Mais quoi prendre comme platine au départ, mystère.
Serge

J’ai pris chez Amazon, avec Prime les frais de port sont 0. Et chez AZ Delivery les frais de port ne sont pas très important non plus.

3.90 € en livraison premium (3 à 4 jours de délais) et gratuit pour plus de 15 € d’achats …

@+

Annexe C - Les fichiers des tutoriels Tuto01 à Tuto07

Merci, c’est cool de les avoir en pdf.
Joyeux Noël !
Jean-Luc

1 J'aime

Bonjour Julie

Tu as 99% de chance de le fumer accidentellement.
Il n’y a pas de problème de relier la masse (GND) de l’Arduino à la masse ‘O’ du circuit. Faire attention néanmoins de ne pas avoir une boucle par l’ordinateur si celui-ci est également branché à la centrale.

Par contre les entres/sortie de l’Arduino ne doivent jamais dépasser la plage de tension -0.5V à VCC + 0.5V. Pour un rail de contact quand tout va bien la tension c’est soit 0V soit en l’air. Mais la probabilité d’avoir un retour de la tension numérique est proche de 100% (Ne serait-ce que par une loco qui perd brièvement le contact avec l’autre rail. Et dans ce cas l’Arduino va fumer de manière quasi instantanée.

Il faut un circuit de protection entre le rail de contact et l’entrée Arduino. On le trouve sur tous les schémas des S88 et similaires.

Bonne suite

Sylvain

Merci Sylvain,

Effectivement il y a un risque non nul sur un retour même si j’ai prévu des diodes de protection sur le rail de contact ?

Je vais devoir mettre cette protection sur chaque entrée digitale. :slight_smile:

Je vais voir s’il n’existe pas un module tout fait pour interfacer un nano avec ce genre de protection. Car je veux rester dans une démarche plug and play avec un petit coût.

J’ai trouvé une carte bornier mais elle est en prise directe, sans aucune protection.

A+

Bonjour Julie,

Très instructif ton tuto sur l’Arduino. Qqs questions en vrac

Le fil bleu est branché sur un rail (un seul rail à isoler bien sur ?) et non sur le picot central. Exact ?(apparemment puisque tu parles d’essieu conducteur mais bon …).
Ds le programme les lignes précédées de // sont des commentaires (sans action sur le prog lui même) tandis que celles sans // sont celles du prog proprement dit Exact?
Penses tu que l’Arduino puisse piloter un relais double contacts (puissance < à 150-200mA)
Y a-t-il un “dictionnaire” des termes à utiliser pour la programmation de l’Arduino (tous les digitalWrite, serial.println, delay etc…)
Cet Arduino peut-il être commandé par une CS3 dans la réalisation d’événements (un peu comme les M83 pour les aiguilles) ?

Bon assez pour aujourd’hui les questions !!

Cordialement,
Claude papaciela

Bonjour Claude,

Merci pour tes questions en vrac, elles sont très intéressantes pour compléter ce petit tutoriel. Allons-y l’une après l’autre.

J’ai fait un montage similaire à un rail à contact : les plots centraux (ou le rail central pour la fosse) sont connectés au B (Bahn) et l’un des deux rails est connecté au O. L’autre rail est effectivement un fil bleu sur lequel on va détecter la présence d’une tension lorsque qu’un essieu aura établi un contact entre les deux rails (en 3 rails les essieux sont conducteurs). Bien évidemment les deux rails sont isolés en amont et en aval.

Voir le maintenant classique montage avec une éventuelle diode de protection contre les retours de courant :

Tu peux voir aussi le montage que j’ai fait pour la fosse d’inspection ici : Une débutante dans le décor - Ep4 - Kitbashing d’une fosse d'inspection - #36 par Julaye

L’Arduino (tous modèles) se programme en un langage C / C++ (au contraire du Rasberry Pi qui se programme en Python). Parce que le C est le langage le moins gourmand en ressource et particulièrement efficace pour le petit embarqué contraint avec des tailles mémoires petites et des puissances de calcul limitées.

En C et C++, // marque une ligne avec un commentaire et /* */ encode une section de commentaires. Pour ma part, je n’utilise que le //.

Les autres lignes sont du source en langage C / C++ qui est transformé (on dit compilé) en code binaire exécutable par le logiciel Arduino de ton PC (ou de ton Mac), code téléchargé sur la carte pour être exécuté.

Il te faut un relais qui se commande en 0-5V. Arduino propose du double - canal (en réalité c’est une carte avec deux relais indépendant). En fonction de ton usage que je devine, il faut plutot un relais 2RT, et on en trouve en 0-5V pour la commande.

Oui la documentation est très complète : toutes les fonctions de base et les fonctions en bibliothèque (ou encore appelée la librairie qui n’est chargée sur la carte que si besoin).

Tu peux commencer avec ce lien :

https://www.arduino.cc/reference/en/

Pour chaque fonction comme digitalWrite(), une explication détaillée des paramètres et de la fonctionnalité avec un ou plusieurs exemples d’utilisation.

L’Arduino possède beaucoup d’entrées digitales et certaines peuvent être utilisées pour recevoir des ordres depuis un M83 ou M84, en entrée Pull-up. C’est comme ça que j’ai mis des commandes de forçage allumé / éteint pour mes fosses depuis ma MS2.

L’étape suivante est de faire discuter l’Arduino avec la centrale (ou la mobile Station), en protocole Motorola ou DCC. Mais ceci est une histoire un peu plus compliquée que tu peux trouver sur un site dédiée : https://www.locoduino.org

Ici, je me contente d’utiliser l’Arduino pour réaliser des petits automatismes sympa pour pas cher.

Je vais même rappeler l’esprit de mes tutoriels Arduino : je souhaite utiliser l’Arduino comme petit automate sans utiliser de fer à souder : uniquement des petits modules pas chers que je connecte entre eux autour de cet Arduino Nano, comme un “lego” électronique.

Au besoin, il est toujours possible de prendre une sortie d’un M83 ou un M84 pour lancer une séquence d’un automatisme particulier, par exemple. J’aime bien le M84 configuré en mode 2, il permet d’avoir jusqu’à 8 commandes pull-up par exemple pour autant de fonctions digitales sur l’Arduino.

Mon prochain tutoriel avec un Arduino sera justement de remplacer un servo contrôler horriblement cher de chez Faller pour commander jusqu’à 6 servo moteurs avec cette petite carte de 5 € … (ça marche déjà sur mon petit bureau de Dakar). Et réaliser des petits automatismes du style la locomotive approche, la porte de la remise s’ouvre. Et avoir quand même une commande ouverture de porte depuis un M84.

A suivre,

Un grand merci de toutes ces explications.
J’utilise de la voie K, il faut donc que je prenne des longueurs de voies dont un rail est isolé sur toute la partie qui détectera la présence d’un véhicule. Bon, je fourre ça ds un coin du crâne et je poursuis mes autres travaux.

1 J'aime

Bonjour Julie

Cela n’est qu’une réalimentation pour les alternances négatives et éviter les plantages. Ce n’est pas la protection dont je parle plus haut.

Le circuit de protection d’une entrée S88 c’est par exemple ce que l’on trouve sur ce document: http://www.kc-modellbahntechnik.de/modellbahn/images/elektronik/Bausatz_Rueckmeldedecoder_KC%2088.pdf
Une résistance série de 10kohm, suivie d’un condensateur contre la masse et d’une résistance de pull-up de 100kohm. La pull-up externe est nécessaire car elle doit être adaptée à la résistance en entrée (la pull-up interne d’un Arduino a une valeur trop faible).

De cette manière en cas de tension de +20V ou -20V sur les entrées, on limite le courant dans les diodes de protection interne aux CI à 2mA (jusqu’à 3,4 mA peak avec du 24V AC) qui est dans la plage admissible.

Bonne suite

Sylvain

Bonjour Sylvain,

Ok j’ai compris, je n’avais pas conscience de la valeur très faible du pull-up interne d’un Arduino. Je vais voir comment je m’organise pour cette protection, j’aurais aimé la trouver toute faite prête à câbler entre l’Arduino et la voie, pour respecter l’esprit “lego” de mon usage de l’Arduino (pas de fer à souder).

Pour l’instant, j’avais utilisé une petite carte capteur de tension 0-25V -> 0-5V à 1,5 € l’entrée (cf Amazon.fr). C’est peut être la bonne solution pour rester en plug and play. Mais pour 16 entrées à protéger, ça fait quand même 24€ grrr.

Je fouille le web et je ne trouve pas de protections à ces entrées pull-up, je ne dois pourtant pas être la seule avec ce genre de besoin. Les borniers dit “shield” pour l’Arduino ne protègent en fait de rien, c’est juste une mise à disposition des entrées/sorties sur des borniers à visser.

@+

La pull-up de l’Arduino n’est pas faible (environ 20kohm) mais ce n’est pas assez pour cette application très spécifique.

Les shields “bornier” sont prévu pour fonctionner dans des applications qui n’utilisent que le 5V de l’Arduino…

Là tu es obligée de quitter le monde Arduino pour rentrer dans celui de l’électronique. Soit c’est des solutions à application large mais pas économique, soit il faut le faire soit-même. Pour ces entrées la méthode retenue (en premier par Märklin il y a plus de 35 ans) n’est pas dans les manuels…

Locodruino utilise des entrées à opto-coupleur, pour éviter la boucle ordi - Arduino - centrale - ordi, et c’est plus sécurisé en cas d’erreur de branchement.

C’est l’illustration de ce que je reproche à Arduino :
Arduino dit regardez c’est facile de faire du microcontrôleur sauf que ce n’est pas vrai. Tant que l’on reste dans l’écosystème oui c’est vrai car tout le travail est prémâché, mais la désillusion guette dès que l’on va y sortir. (Et même combiner deux sketches en un n’est simple, le nombre de personnes qui arrêtent à cela).

Je me suis mal exprimée. Mes souvenirs d’électronique remonte à 1989 :smiley: je n’en avais pas fait depuis, même si j’ai fait de la micro-électronique VLSI (mais c’est autre chose) en 1991.

J’ai vite remarqué ce problème là, venant du monde de l’embarqué en formation initiale :). On a très vite une contrainte avec une seule loop(). Il faut introduire à minima des co-routines et probablement des interruptions dès que l’on veut combiner plusieurs processus.

Me concernant ce n’est pas un problème vu mon parcours, mais c’est un réel frein pour la majorité des gens car une co-routine c’est tout sauf simple (cf Coroutine - Wikipedia).

Je suis surprise de ne pas trouver des cartes opto-coupleurs dans les kits de base de l’Arduino. Même chez les distributeurs comme AZ-Delivery qui ont multiplié les petites cartes autour de l’Arduino pour enrichir l’éco-système.

Bon ceci dit, dans mon usage, l’écosystème “lego” est suffisant, c’est juste pour ce bornier “intelligent” en attendant de mettre un S88 que j’ai un problème.

Je viens de terminer un bout de sketch et de câblages pour piloter des servo moteurs faller, ça tombe en marche et ça coute quand même 10 fois moins cher que leur servo controlleur :slight_smile:

Il faut effectivement être conscient des limitations liées principalement à ces entrées-sorties 0-5V non protégées et à l’absence d’un OS même rudimentaire pour gérer des taches.

Il y a quelques année (en 1999 je crois lol), j’avais refait un peu d’embarqué et il y avait des solutions vraiment sympa comme eCos qui ont complètement disparu. C’est dommage (cf MicroC/OS-II — Wikipédia)

Bon si j’ai le courage, je ferais bien une couche type eCos sur l’Arduino :smiley:

@+

En “lego” j’ai trouvé cette carte qui me parait pas mal du tout en terme d’isolation. Et qui gère 8 entrées d’un coup.

http://www.diymalls.com/DST-1R8P-N-24V-to-5V-PLC-level-voltage-converter-board-NP

D’une façon générale je pourrais l’utiliser pour protéger mon Arduino dès lors qu’il prend des informations en provenance de l’extérieur (M83, M84 ou tension de la voie).

$4.83 sur AliExpress avec $3.44 de livraison … ça fait les 16 entrées à 0,67 euro / entrée opto-isolée :slight_smile: