LOCODUINO

Forum de discussion
Dépôt GIT Locoduino
Flux RSS

lundi 25 septembre 2017

41 visiteurs en ce moment

Signaux lumineux et Arduino

. Par : Christian

La signalisation lumineuse permet de présenter des informations aux conducteurs de trains, telles que l’occupation de la voie en aval, l’obligation de ralentir voire de s’arrêter, la protection d’une aiguille, l’indicateur de direction, etc. Elle est indispensable à l’exploitation d’un réseau ferré moderne et à ce titre, elle se doit de figurer sur nos réseaux de trains miniatures d’autant plus qu’elle fait bon ménage avec Arduino qui peut choisir le signal à allumer en fonction de l’événement à traiter. Cet article, qui s’adresse surtout aux débutants, explique comment relier un signal lumineux du commerce à un Arduino.

Signaux lumineux pour le modélisme ferroviaire

On trouve dans le commerce des signaux lumineux aux principales échelles du modélisme ferroviaire. On peut aussi les trouver en kit à monter et à peindre, soit à partir de laiton, soit en impression 3D. La partie lumineuse est constituée de DEL   de différentes couleurs (vertes, rouges, jaunes, blanches), composants polarisés qu’il faut brancher en respectant son sens et en intercalant une résistance pour limiter le courant ; tout ceci est expliqué dans l’article Fonctionnement et pilotage d’une DEL. Ceux qui utilisent des kits peuvent donc adapter le branchement des DEL   comme ils le veulent, mais ceux qui utilisent des signaux tout montés sont confrontés à un choix de branchement qui a été fait par le fabricant et qui ne convient pas forcément au montage à réaliser. Nous allons voir qu’il existe des solutions pour se tirer de ce mauvais pas.

Le signal lumineux se comporte d’un mât et d’une cible ; le mât supporte la cible et la cible comprend les ampoules à allumer, qui de nos jours, ont été remplacées par des DEL. Chaque DEL possède son fil de commande, généralement de la même couleur que celle-ci et il existe un fil supplémentaire qui permet le retour du courant. Ce fil est appelé le commun car il est branché sur toutes les DEL et est d’une couleur autre que celle des DEL (gris, noir, marron, etc.). La notice (parfois succincte) qui accompagne le signal indique si le commun doit être relié au plus de l’alimentation, auquel cas le signal est à anodes communes car c’est l’anode des DEL qu’il faut relier au plus, ou bien au moins de l’alimentation, auquel cas le signal est à cathodes communes.

Si on ne sait pas quel est le type de nos signaux - anodes communes ou cathodes communes - on peut tester une connexion d’une alimentation de 5V (une simple pile 4,5 V peut suffire) dont le plus (+) est connecté au fil commun à travers une résistance de 1KΩ et le moins (-) à l’une quelconque des DEL : si la DEL s’allume on a un signal câblé en anodes communes. Si elle ne s’allume pas, c’est l’inverse, en cathodes communes.

Voyons cela en détail.

Signal à anodes communes

La figure 1 montre un signal à trois feux à anodes communes (le principe reste le même pour un nombre différent de feux). Le fil commun doit être relié au plus de l’alimentation ; pour allumer une des DEL, il faut donc que son fil de commande soit relié au moins de l’alimentation. Une résistance est à intercaler dans le circuit pour limiter le courant qui traverse la DEL ; sa valeur est fonction de la tension d’alimentation. Le calcul de cette résistance est expliqué dans l’article Fonctionnement et pilotage d’une DEL mais nous y reviendrons plus tard.
La valeur de la résistance fixe aussi le niveau de luminosité de la DEL. Pour intercaler cette résistance dans le circuit, nous avons deux possibilités. S’il n’y a qu’une seule DEL à allumer à la fois (cas du signal de Block Automatique Lumineux qui est soit vert, soit rouge, soit jaune), on peut disposer cette résistance en série avec le fil commun (figure 1A) ; c’est plus simple et plus économique, mais la luminosité de chaque couleur peut varier d’une DEL à l’autre. S’il y a plusieurs DEL à allumer en même temps (cas d’un carré présentant deux feux rouges), le mieux est de disposer une résistance en série sur chaque fil de commande (figure 1B), ce qui permet d’ajuster, par des essais, la valeur de chaque résistance pour avoir une luminosité constante quelle que soit la couleur.

Figure 1


Signal à cathodes communes

La figure 2 montre un signal à trois feux à cathodes communes (le principe reste le même pour un nombre différent de feux). Le fil commun doit être relié au moins de l’alimentation ; pour allumer une des DEL, il faut donc que son fil de commande soit relié au plus de l’alimentation. Une résistance est à intercaler dans le circuit pour limiter le courant qui traverse la DEL ; sa valeur est fonction de la tension d’alimentation. Le calcul de cette résistance est expliqué dans l’article Fonctionnement et pilotage d’une DEL mais nous y reviendrons plus tard.

De la même façon que dans le cas à anodes communes, nous avons deux possibilités pour intercaler cette résistance dans le circuit. S’il n’y a qu’une seule DEL à allumer à la fois, on peut disposer cette résistance en série avec le fil commun (figure 2A), s’il y a plusieurs DEL à allumer en même temps, le mieux est de disposer une résistance en série sur chaque fil de commande (figure 2B).

Figure 2


Commande par Arduino

Arduino possède un certain nombre de broches d’entrées-sorties numériques pouvant commander les DEL d’un signal lumineux, nombre fonction du modèle de carte utilisée (par exemple 14 sur un modèle UNO, numérotées de 0 à 13). Pour commander une DEL, la broche doit être configurée en sortie et l’ordre dans le setup est pinMode(X, OUTPUT) ; où X représente le numéro de la sortie d’Arduino. Or une sortie numérique est soit à une tension de 5V (appelée état HIGH), soit à une tension de 0V (appelée état LOW). Les DEL du signal lumineux sont donc alimentées par une tension de 5V ; il est alors facile de calculer une valeur approchée de la résistance de limitation du courant. Une sortie ne pouvant délivrer que 20 mA, on limitera le courant traversant la DEL à 10 mA pour faire ce calcul, ce qui est généralement suffisant. La tension aux bornes de la DEL lorsqu’elle est allumée, dépend de sa couleur ; on peut se référer au tableau de l’article Fonctionnement et pilotage d’une DEL pour faire un calcul précis, mais on peut aussi considérer que cette tension est de l’ordre de 2 V et faire un calcul approché. Dans ce cas, il ne reste plus que 3 V aux bornes de la résistance (5 – 2 = 3). Cette résistance doit limiter le courant à 10 mA (soit 0,010 A) ; la loi d’Ohm nous permet de calculer sa valeur comme étant égale à 300 Ω (R = U / I). On choisira donc une résistance de valeur la plus proche possible de cette valeur calculée. La puissance que doit dissiper cette résistance est 3 X 0,010 = 0,03 W (P = U X I) ; une résistance quart de watt est donc suffisante. Ce calcul est bien suffisant si le montage peut se satisfaire d’une seule résistance, mais dans le cas où on place une résistance sur chaque fil de commande, il est préférable de calculer chaque résistance en prenant bien en compte la vraie tension aux bornes de la DEL (de l’ordre de 1,8 V pour une DEL rouge et 2,2 V pour une verte). Si la luminosité des DEL est trop forte ou trop faible pour un courant de 10 mA, on peut jouer sur la valeur de courant et refaire le calcul. Il faudra toutefois ne pas dépasser la capacité d’une sortie (20 mA est la valeur conseillée et 40 mA la valeur maximum) et surtout ne pas dépasser la capacité totale de la carte Arduino (200 mA pour un modèle UNO) si on doit allumer toutes les DEL ; il est bon de se ménager une plage de sécurité pour ne pas flirter avec ces limitations.

La figure 3A montre comment relier à Arduino un signal à anodes communes ; le fil commun est à relier au plus de l’alimentation, soit au 5 V qu’on trouve sur la carte. Pour qu’une DEL soit allumée, son fil de commande est à relier au moins de l’alimentation, ce qu’on appelle encore la masse (GND) ou le 0 V. La DEL s’allume par un état LOW de la sortie d’Arduino. Si la sortie est à l’état HIGH, la DEL est éteinte car il n’y a pas de différence de potentiel à ses bornes et aucun courant ne peut circuler.

Figure 3


La figure 3B montre comment relier à Arduino un signal à cathodes communes ; le fil commun est à relier au moins de l’alimentation, soit à la masse (GND) qu’on trouve sur la carte. Pour qu’une DEL soit allumée, son fil de commande est à relier au plus de l’alimentation, c’est-à-dire à une sortie à 5 V. La DEL s’allume par un état HIGH de la sortie d’Arduino. Si la sortie est à l’état LOW, la DEL est éteinte car il n’y a pas de différence de potentiel à ses bornes et aucun courant ne peut circuler.

Sur les figures 3A et 3B, ainsi que les suivantes, les sorties d’Arduino utilisées pour commander le signal sont les sorties 10, 11 et 12 mais ce n’est qu’un exemple, vous pouvez en choisir d’autres.

À partir du moment où on sait quel état allume la DEL, on peut écrire le programme. Pour un signal lumineux à anodes communes, c’est l’ordre digitalWrite (X, LOW) ; qui allume la DEL. Pour un signal lumineux à cathodes communes, c’est l’ordre digitalWrite (X, HIGH) ; qui allume la DEL. En fonction du type de signal dont on dispose, on peut ainsi être amené à modifier un programme déjà écrit, ce qui peut parfois représenter beaucoup de travail si le programme n’a pas été conçu pour s’adapter facilement à tous les types de signaux. Parfois même, ce n’est pas possible, par exemple si la sortie doit impérativement être à l’état HIGH pour commander un relais coupant l’alimentation de la voie en même temps qu’elle commande la DEL rouge du signal (voir par exemple le programme proposé dans l’article Block Automatique Lumineux avec la carte shield "Arduino 4 relays").

Que ce soit simplement fastidieux ou carrément impossible à adapter, il y a une autre solution pour rendre compatible un montage avec un type de signal : l’inverseur.

Utilisation d’inverseurs

Un inverseur est un montage électronique qui inverse l’état d’un signal. Par exemple, si le signal à l’entrée de l’inverseur est HIGH, le signal en sortie est LOW et réciproquement. En conséquence, si je recopie un montage et un programme qui allume un signal avec un état HIGH, et si je dispose d’un signal lumineux à anodes communes (allumage par état LOW), je n’ai qu’à inclure un inverseur entre le montage et le signal lumineux.

Un simple transistor peut constituer un inverseur, mais il est beaucoup plus simple d’utiliser un circuit intégré (CI) comportant plusieurs inverseurs dans un même boitier permettant ainsi de traiter un plus grand nombre de DEL. Un inverseur est généralement représenté avec un triangle et un petit rond sur sa pointe, le rond étant le symbole même de l’inverseur. Comme notre carte Arduino travaille généralement en 5 V, on peut faire appel à des CI de la famille TTL qui sont alimentés en 5 V et travaillent également avec cette tension. Le choix est grand et il faudra surtout bien regarder le courant que peuvent débiter ces CI car il doit être suffisant pour alimenter les DEL de nos signaux. On peut consulter le cours d’électronique proposé en téléchargement dans l’article Démarrer en électronique.

Il y a encore une solution plus simple, que vous avez peut-être sous la main si vous avez suivi nos conseils en matière d’équipement : le CI ULN2803 qui est souvent utilisé pour amplifier le signal sortant d’un Arduino, mais qui est aussi un circuit inverseur (voir l’article Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803). La figure 4 montre comment compléter le montage avec un circuit intégré 2803 et c’est vraiment très simple puisque chaque sortie est en face de son entrée et puisqu’il y a, en plus, deux broches pour alimenter le circuit intégré. Bien entendu, un même circuit intégré 2803 peut servir à connecter plusieurs signaux lumineux selon ce principe.

Figure 4


La figure 5A montre un montage pour commander un signal à cathodes communes et la figure 5B montre comment adapter le montage pour le faire fonctionner avec un signal à anodes communes grâce à un CI ULN2803. Comme vous voyez, il n’y a vraiment rien de sorcier et dans ce cas, aucun programme n’est à modifier.

Figure 5


Cas particulier d’un signal à deux feux

Il existe des signaux lumineux à deux feux (comme le sémaphore de Block Manuel qui est soit vert soit rouge). Si vous achetez ce type de signal tout monté, il y a de fortes chances qu’il soit câblé comme décrit précédemment à anodes communes ou bien à cathodes communes, et qu’il y ait un fil commun et un fil de commande pour chaque DEL, ce qui monopolise deux sorties sur une carte Arduino.

Si vous construisez vous-même ce genre de signal, une petite astuce de câblage des DEL vous fera économiser une sortie et le signal pourra être commandé par une seule sortie d’Arduino au lieu de deux. La figure 6 montre comment câbler les deux DEL et comment raccorder le tout à une sortie numérique d’Arduino. Si la sortie X est à l’état HIGH, c’est la DEL rouge qui s’allume alors que si elle est à l’état LOW, c’est la DEL verte. Une résistance de limitation de courant est associée à chaque DEL ce qui permet d’ajuster au mieux les valeurs pour régler la luminosité du vert et du rouge. Comme une seule DEL est allumée à la fois, on peut aussi ne mettre qu’une seule résistance en la câblant en série sur le fil de commande, mais la luminosité du vert et du rouge n’est pas réglée au mieux.

Figure 6


Vous êtes maintenant capables d’utiliser au mieux vos signaux lumineux quel que soit leur mode de câblage. De nombreux exemples de programmes existent sur ce site pour les commander en fonction de la position de vos trains sur le réseau. Une fois de plus, quelques montages très simples, à base d’Arduino, permettent de donner plus de réalisme à nos réseaux.

Réagissez à « Signaux lumineux et Arduino »

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

Rubrique « Matériel »

Fonctionnement et pilotage d’une DEL

Qu’est ce qu’une carte Arduino ?

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Résistances, kézako ?

Relais électromagnétique

Les diodes classiques

Détecteurs à ultrasons

La carte Arduino Uno

Bouton poussoir

Les différents types de mouvements d’un servo-moteur

Les encodeurs en quadrature

Les écrans LCD alphanumériques

Des bus de communication pour l’Arduino

Les interrupteurs

Le microcontrôleur ATtiny45 (1)

Le microcontrôleur ATtiny45 (2)

Le microcontrôleur ATtiny45 (3)

Le microcontrôleur ATtiny45 (4)

Le microcontrôleur ATtiny45 (5)

Le microcontrôleur ATtiny45 (6)

Le microcontrôleur ATtiny45 (7)

Signaux lumineux et Arduino

Les shields de prototypage et de connexion

Commande de moteur à courant continu

Les derniers articles

Le microcontrôleur ATtiny45 (7)


Christian

Commande de moteur à courant continu


Christian

Le microcontrôleur ATtiny45 (6)


Christian

Les shields de prototypage et de connexion


Christian

Le microcontrôleur ATtiny45 (5)


Christian

Signaux lumineux et Arduino


Christian

Le microcontrôleur ATtiny45 (4)


Christian

Le microcontrôleur ATtiny45 (3)


Christian

Le microcontrôleur ATtiny45 (2)


Christian

Le microcontrôleur ATtiny45 (1)


Christian

Les articles les plus lus

Commande de moteur à courant continu

Bouton poussoir

La carte Arduino Uno

Les écrans LCD alphanumériques

Les diodes classiques

Fonctionnement et pilotage d’une DEL

Amplifier le signal de sortie d’un ARDUINO avec un ULN 2803

Relais électromagnétique

Les encodeurs en quadrature

Qu’est ce qu’une carte Arduino ?