Voies et ballast

OK, j’ai vu une demo qui utilise un capteur optique et suivant la couleur sur laquelle il passe (une plate de 8x2 au centre des rails) le train accelere ou ralentit ou s’arrete.

Oui ou plus simplement et beaucoup moins cher, 2 capteurs de luminosité à quelques centimètres l’un de l’autre suffisent à détecter les wagons et le sens du train ! C’est la piste que je vais explorer.
Le capteur de couleur c’est bien mais il faut de toute façon l’associer à un capteur de luminosité pour la direction !

Punaise tu es vraiment féru ! Un vrai geek du Légo. C’est super et merci de partager ta science.

Oui, oui, très geek même :smiley:

Je viens de bosser sur la partie de détection, toujours avec des petits boards et le même principe. Le prototype fonctionne bien! A voir à l’usage.

C’est vraiment un prototype électronique, pas d’intégration, c’est brut de fonderie. Mais côté logiciel, ça marche déjà super bien ! Il me reste encore du travail pour l’intégration côté serveur et rendu mais globalement, c’est une bonne base.

Je teste donc des capteurs de luminosité vrai bas coût, il est possible de les remplacer par des relais reed par exemple. JE testerais peut-être aussi.

Bref, je continue l’intégration d’éléments !

1 « J'aime »

Salut,
J’avais déjà essayé cette méthode. Ca marche à domicile mais en expo, avec les variations de luminosité c’est trop compliqué à gérer.

Alors, les relais reed avec un petit aimant sous les trains? Ca ne change pas grand chose côté code de toute façon pour moi.
Pour les variations de luminosité, je pensais avoir quelque chose de dynamique, en gros, qui apprend un peu tout seul. Mais ça s’il y a des variations importantes, ça ne saura pas gérer correctement.

J’utilise des capteurs à effet Hall pour détecter le train et un aimant sous la locomotive. Cela fonctionne très bien, sans rebond de contact comme avec les contacts Reed ou les interrupteurs classiques. Ces capteurs à effet Hall sont petits, mais nécessitent une connexion à 3 fils (masse, +5 V et sortie). Je l’utilise sur mon passage à niveau automatique, où le capteur à effet Hall est connecté à mon Arduino par des fils de 5 m de long. Fonctionne parfaitement.
Voir ici les 18 premières secondes de la vidéo (+ signal de sonnerie).
Imgur

2 « J'aime »

Cool, merci pour le retour. Tu aurais les spécifications de ton capteur ? Vais du coup en acheter quelques uns. Et oui, j’ai vu les rebonds pour les capteurs reed.

Bonjour Laurent,
J’utilise le type de capteur à effet Hall suivant, commandé chez Conrad.
Voici le lien direct vers ce capteur sur le site français de Conrad :

Ce capteur à effet Hall doit être orienté avec les côtés inclinés vers l’aimant (donc vers le haut) et n’est pas fixe. Placez un morceau de tube rétractable fin sur la broche centrale du capteur à effet Hall pour éviter un court-circuit avec les deux autres connexions. Je viens de publier deux photos sur ma page Flickr où vous pouvez voir comment j’ai procédé.
Notez que les pièces LEGO doivent être modifiées. :innocent:

L’aimant utilisé est un aimant en néodyme de 8 mm de diamètre et 4 mm d’épaisseur, facile à trouver sur Internet. Il est collé côté droit (faites un premier essai avant de coller !) sur une tuile modifiée 2 x 2 inversée (référence : 11203), puis sur le dessous de la locomotive. Ainsi, l’aimant peut être facilement retiré s’il n’est pas utilisé ou installé sur une autre locomotive.

Limitez la distance entre l’aimant et le capteur à effet Hall à 3 ou 4 mm maximum.

Je vous souhaite beaucoup de succès.

Bonjour @charnayn

Je remarque que vous utilisez un ESP pour contrôler le servomoteur de l’interrupteur. Mes questions sont les suivantes :

  • Quel est le temps (en millisecondes) que vous utilisez pour placer le servomoteur dans les deux positions extrêmes ?
  • Quel type de module ESP utilisez-vous ici ?

Cordialement,
Ludo

@ludo

Chaque servo moteur est unique et a des caractéristiques uniques. Ensuite, tout dépend aussi de comment tu l’utilises.
Je mes mets en direct avec une roue sur une crémaillère. Du coup, cela va très vite pour faire un switch d’un côté à l’autre.

Merci Laurent E. pour votre réponse, mais cela ne répond pas aux questions.

Un servomoteur est commandé par des impulsions d’une durée comprise entre 1 ms (angle = 0°), 1,5 ms (angle = 90°) et 2 ms (angle = 180°). La question était de savoir quelle est la durée des impulsions utilisées pour déplacer le servo d’une position à une autre, ou l’angle utilisé.
Par exemple : 0° (1,0 ms) = tout droit, 40° (1,22 ms) = virage à gauche ou à droite.
Je sais que les servomoteurs de loisir bon marché peuvent varier ; un réglage précis est donc nécessaire si nécessaire.

Concernant les modules ESP, je pense que vous utilisez ceux-ci :
D1 Mini NodeMcu met ESP8266-12F WLAN-module CH340G Lua (connecteur Micro USB)
ou
D1 Mini NodeMcu met ESP8266-12F met USB-C-aansluiting WLAN-modules CH3 (connecteur USB-C).

Cordialement,
Ludo

Bonjour,
En effet j’utilise, pour ce module, un D1 mini classic (pas USB-C). Par contre j’utilise directement la librairie « servo » donc pas besoin de gérer le temps d’impulsion il suffit de lui rentrer un angle. Par contre je passe d’abord par un programme test pour savoir quelle est la valeur droit et la valeur déviée. En suite je rentre les valeurs dans le code et j’envoie juste un ordre droit ou dévié.

Pour compléter avant j’avais des Nano, mais vu que je veux pouvoir commander par WIFI je suis passer par le D1 mini, plutôt compact mais la version USB-C n’existait pas à l’époque.

Il faut que je me remette sur le système, je ne l’ai testé qu’une fois en expo et ce n’était pas concluant car j’avais un autre ESP qui faisait office de routeur. Les temps de réponses pouvait être supérieurs à 2 secondes…

Salut,
Tu utilise des capteurs à effet hall, ils n’arrivent pas à capter directement les aimants des tampons (qui relie deux wagons) du trains?

Les impulsions peuvent varier grandement! J’e regarde toujours les min et max. Certains servos peuvent faire plus que 180°, il est toujours nécessaire d’utiliser les bons éléments.
De mon côté, comme ils sont en directs, quelques degrées. J’utilise ces servos là pour les aiguillages: Amazon.com : Sparkleiot 270 Degree Rotation Servo for Arduino Microbit Raspberry Pi Geekservo Compatible with Standard Building Blocks Support kittenblock makecode(Pack of 4) : Toys & Games
Ils font 270°

Un bon site pour les servo les plus comments pour avoir les infos: Servo Database - Motor Specs, Reviews, & Comparison Tool

Côté code, j’utilise .NET nanoFramework et C# :slight_smile: car je suis un des maintainers? J’utilise des ESP32-C3 ou S3 super mini. Chaque module est indépendant, j’ai une application web qui centralise tout et qui tourne sur un Raspberry. Code (pas tout à fait la dernière version et surtout la doc n’est pas à jour): GitHub - Ellerbach/LegoTrain: IR Lego Power Function for train, switch control with servo motor, light signal

Je n’ai d’ailleurs toujours pas eu le temps de m’y mettre. Tu ne viens pas à la REF par hasard?

Bonjour charnayn

Non, je ne les utilise pas et ne les ai pas essayés.
Ce qui est très important, cependant, c’est la direction du champ magnétique (les pôles nord et sud de l’aimant). Comme les aimants des tampons peuvent tourner, une détection (correcte) n’est PAS garantie.
Le champ magnétique de ces aimants est également mal positionné (horizontalement, s’il est attelé à un wagon, au lieu de verticalement) pour assurer une bonne détection ; voir les images dans l’article ci-dessous.
Pour éviter ces problèmes, j’utilise un aimant néodyme sous la locomotive, et je suis certain que le pôle magnétique correct est orienté vers le capteur à effet Hall. La détection est garantie, à condition que la distance entre les deux ne soit pas trop grand.
Choisissez toujours un capteur à effet Hall unipolaire avec une sortie numérique, PAS une sortie analogique, car il en existe aussi!

Pour plus d’informations, consultez l’article suivant en anglais. Vous remarquerez également que l’aimant est positionné avec son pôle sud vers le capteur à effet Hall, et non l’inverse. https://www.electronics-tutorials.ws/electromagnetism/hall-effect.html
Utilisez Google Traduction pour traduire en français.

Cordialement,
Ludo

1 « J'aime »

@charnayn Non, je ne pourrais pas passer à la REF. Pas simple avec mes petits jumaux de 1 an :smiley:

@ludo Merci pour les explications complémentaires. J’ai commandé des capteurs et des aimants, vais essayer tout ça quand je serais de retour chez moi et que j’aurai le temps (le second est plus improbable :-D))