Voir les contributions

Cette section vous permet de consulter les contributions (messages, sujets et fichiers joints) d'un utilisateur. Vous ne pourrez voir que les contributions des zones auxquelles vous avez accès.


Messages - nopxor

Pages: [1] 2 3 ... 14
1
Vos projets / Re : Commande de servo pour sémaphore avec ATtiny13
« le: juin 13, 2025, 07:09:15 pm »
les pièces jointes  :)

2
Vos projets / Commande de servo pour sémaphore avec ATtiny13
« le: juin 13, 2025, 06:56:50 pm »
Bonjour,

J'ai configuré la signalisation de mon réseau avec l'outil SSL (Logique du Signal Simple) de JMRI.
Cet outil pilote les signaux individuels simples (Vert-Jaune-Rouge) type  bloc automatique lumineux (BAL).
On définit ainsi simplement en quelques clics toute la signalisation de son réseau.
https://www.jmri.org/help/fr/html/tools/signaling/SimpleSignalExample.shtml

J'ai 52 signaux (4 signaux par aiguillages plus 4 signaux de cantons pleine voie).
Ces signaux figurent sur l'écran de mon TCO de PanelPro et ils sont mis à jour en temps réel.

Layout3.jpg


J'ai souhaité installer sur mon réseau une douzaine de sémaphores 3 feux correspondant à ces signaux  aux endroits les plus stratégiques.

J'ai réalisé une modélisation CAO 3D de ce sémaphore et j'ai exporté les fichiers 2D pour une fabrication par photogravure.

semaphore_CAO.jpg


J'ai sous traité la fabrication d'une plaque en laiton 0.2 mm au format A4 permettant la fabrication de 14 sémaphores.
Je me suis adressé à la société Hauler (République Tchèque) qui a réalisé un travail parfait pour 34€ port compris.
https://www.hauler.cz

plaque laiton.jpg


semaphores peints.jpg


J'ai soudé sur chaque sémaphore 3 diodes leds CMS Vert-Jaune-Rouge cathode à la masse et anode soudée à un fil émaillé 0.3 mm.
La commande de la tige du sémaphore s'effectue avec un mini sevo moteur SG90 placé sur un support imprimé 3D sous la voie.
L'idée étant que le sémaphore soit à l'équerre lorsque le feu est rouge (signal stop) et qu'il soit relevé pour un feu jaune ou vert.

Pour commander ces signaux j'utilise ma carte (24 entrées) 48 sorties (arduino-CMRI) reliée à JMRI.
https://forum.locoduino.org/index.php?topic=507.0

J'utilise 36 sorties (3 x 12) affectées à chaque feu des signaux définis dans JMRI.

carte CMRI.jpg


Pour commander chaque servo de sémaphore j'ai réalisé un petit circuit à base d'ATtiny13A.
L'ATtiny13 est un mini microcontroleur (1 K Flash) 8 pins. Compatible Arduino. L' ATtiny13A est la version "Low Power".
Son prix est particulièrement bas, environ 0,40€ pièce (par 10 en CMS SOP8) sur AliExpress.
https://fr.aliexpress.com/item/1005007265849889.html?srcSns=sns_Gmail&spreadType=socialShare&bizType=ProductDetail&social_params=61115567768&aff_fcid=78fc8967806f407f8d17475718e00806-1748010217919-05569-_EQLLbjY&tt=MG&aff_fsk=_EQLLbjY&aff_platform=default&sk=_EQLLbjY&aff_trace_key=78fc8967806f407f8d17475718e00806-1748010217919-05569-_EQLLbjY&shareId=61115567768&businessType=ProductDetail&platform=AE&terminal_id=2ccab959b9674ce68c71c9f0693923f9&afSmartRedirect=y

J'ai soudé chaque ATtiny13A CMS sur un mini circuit imprimé adaptateur SOP8 vers DIP8.
https://fr.aliexpress.com/item/1005008144822733.html?srcSns=sns_Gmail&spreadType=socialShare&bizType=ProductDetail&social_params=61115562188&aff_fcid=9e1f43dc518c4636ab8d9d925431292d-1748009948365-07178-_EQ8B9D8&tt=MG&aff_fsk=_EQ8B9D8&aff_platform=default&sk=_EQ8B9D8&aff_trace_key=9e1f43dc518c4636ab8d9d925431292d-1748009948365-07178-_EQ8B9D8&shareId=61115562188&businessType=ProductDetail&platform=AE&terminal_id=2ccab959b9674ce68c71c9f0693923f9&afSmartRedirect=y&gatewayAdapt=glo2fra

ATtiny13.jpg


Il est ainsi facilement démontable pour sa programmation.
https://www.instructables.com/Updated-Guide-on-How-to-Program-an-Attiny13-or-13a/

Pour la commande du servo, il est installé sur un petit circuit imprimé (fabriqué par JLCPCB) qui est relié:
- aux 4 fils émaillés du sémaphore (masse et Vert-Jaune-Rouge) soudés directement sur le circuit en JP2.
- au bornier alimentation (+5V, masse) en X1.
- au bornier Vert-Jaune-Rouge des fils venant de la carte CMRI en X2.
- à la prise du servo JP1.

Le circuit comprend les 3 résistances qui contrôlent l'équilibre de l'intensité d'éclairement des leds.
10k ohms pour la led verte qui éclaire, à courant égal, plus que les autres. 560 ohms pour la jaune et la rouge.
Il y a 2 résistances 10k ohms ajustables pour régler la butée haute et basse de déplacement du servo.
Il y a aussi 2 condensateurs de découplage de l'alimentation.

SemATtinyV2.jpg


SemATtiny_sch.png


SemATtiny_brd.png


Fichiers Gerber (zip) du circuit en pièce jointe


sema reseau.jpg


sema reseau 2.jpg


La programmation se fait à bas niveau car l'ATtiny13 ne possédant qu'un seul timer 8 bits,
il n'est pas possible d'utiliser la librairie Servo (timer 16 bits).
Le programme configure le timer 0 en mode CTC pour fabriquer (avec une fonction d'interruption) un signal PWM (50Hz) de commande de servo.

Il y a 2 programmes en pièces jointes qui font tourner le servo doucement, entre 2 positions de butée, soit en sens horaire soit en sens inverse:
servotiny13_clockwise.ino
servotiny13_counterclockwise.ino
On choisit l'un ou l'autre selon le sens de montage du servo sur son support.

A noter que ce programme peut également servir à commander un servo pour commande d'aiguillage.

Il faut une alimentation 5V suffisante pour alimenter tous ces servos.
J'utilise une alimentation à découpage 5V 10A pour mon réseau qui comprend:
- 5 cartes de détection 4 cantons
- 1 carte contrôle de plaque tournante à base d'arduino Nano
- 1 carte d'entrées / sorties CMRI à base d'arduino Nano
- 12 cartes de commande de sémaphores par servo

https://youtube.com/shorts/DJsfztdC8tI?feature=share

3
JMRI et Arduino / Re : erreur 308 sur decoderpro
« le: mai 06, 2025, 06:51:18 am »
Bonjour,
Pour DCC-EX et les problèmes de décodeur,il y a les diagnostics commands:
https://dcc-ex.com/support/troubleshooting-decoders.html#gsc.tab=0
Qui génèrent un log que tu peux fournir au discord de DCC-EX

4
Le logiciel DCC++ / Re : Ma première centrale DCC et la lecture des CV
« le: février 12, 2025, 01:11:02 am »
Bonjour,
Personnellement je préfère ChatGPT à Deepseek.
Mais j' ai obtenu les réponses les plus pertinentes avec le Chat (Mistral AI). 8)

5
Présentez vous ! / Re : Passage a niveau2 voies sens unique
« le: février 10, 2025, 06:08:02 pm »
Bonjour,

L'utilisation d'une diode dans un circuit de solenoïde empêche l'apparition d'énormes pics de tension lorsque l'alimentation est coupée.
Le retour de tension peut provoquer un arc électrique et endommager les composants qui contrôlent la bobine.
Il peut également introduire du bruit électrique qui peut s’ajouter à des signaux ou des connexions d'alimentation adjacents et faire crasher ou réinitialiser les microcontrôleurs.

Une diode de roue libre ou diode anti-retour, est placée avec une polarité inversée à celle de l'alimentation électrique et en parallèle de la bobine d'inductance du relais.
 
Lorsque l'alimentation électrique est coupée, la polarité de la tension sur la bobine est inversée, et une boucle de courant se forme entre la bobine du relais et la diode de protection : la diode redevient polarisée en sens direct.
La diode de roue libre permet le passage du courant avec une résistance minimale et empêche la tension de retour de s'accumuler, d'où le nom de diode anti-retour.



A gauche : l’interrupteur K est fermé, le courant s’établit dans l’inductance L et est limité par la résistance r en régime établi.
La diode de roue libre est bloquée. Elle voit en inverse la tension d’alimentation à ses bornes, mais aucun courant ne la traverse.

A droite : l’interrupteur vient juste de s’ouvrir. Le courant qui circule dans l’inductance trouve un chemin dans la diode qui devient passante. Aux bornes de l’inductance, la tension change brutalement pour assurer la continuité du courant.

Pour le type de diode "roue libre" une 1N4004 suffit (400V 1A)

6
Présentez vous ! / Re : Passage a niveau2 voies sens unique
« le: février 09, 2025, 06:14:33 pm »
Bonjour,
Il faut antiparasiter les solénoïdes avec des diodes de roue libre.

7
Aide / Re : "Failed uploading: no upload port provided" (COM8) !!!!
« le: novembre 11, 2024, 09:30:07 pm »
Bonsoir Philippe,

Quel type d' Arduino utilises tu ?
As tu déjà fait des téléchargements avec ?

Peut être un problème de driver USB CH340:

https://tropratik.fr/installer-un-convertisseur-usb-ttl-ch340


8
JMRI et Arduino / Re : Communication JMRI et Arduino
« le: novembre 02, 2024, 12:08:26 pm »
Bonjour Franck,
La commande du servo-moteur avec l'ATTiny se fait avec un niveau 0V ou +5V obtenu par une carte de sortie standard ou un bouton poussoir.
Il y a 3 potentiomètres de réglage :
2 pour régler les positions min et Max et 1 pour régler la vitesse du servo.

A ma connaissance, il n'existe pas de carte I/O WiFi ou 2.4GHz. Mais si tu utilises JMRI, tu dois disposer de prises USB sur le PC.

9
JMRI et Arduino / Re : Communication JMRI et Arduino
« le: octobre 30, 2024, 05:37:53 pm »
Bonjour,

Pour contrôler des servomoteurs d'aiguille, le plus simple c'est de le faire avec un ATTiny:

https://forum.espacetrain.com/index.php?topic=3637.0


Pour piloter à distance des aiguillages ou recevoir des infos de capteur avec JMRI,
le plus simple c'est d'utiliser C/MRI avec une carte I/O comme celle-ci:

https://forum.locoduino.org/index.php?topic=507.0

10
Trucs & astuces / Re : Rétrosignalisation S88 et UNO
« le: octobre 17, 2024, 07:20:46 pm »
Bonsoir,

Je suis content que tout fonctionne bien.  :)

Bonne soirée.

11
Trucs & astuces / Re : Rétrosignalisation S88 et UNO
« le: octobre 17, 2024, 02:01:43 pm »
Bonjour,

UNO_S88.cpp fait partie de la librairie.
Une fois la librairie installée, on ne s'en occupe pas.

Les librairies comportent généralement un fichier "en tête" xxx.h et un fichier xxx.cpp

Si la librairie est installée, la compilation du programme devrait s'effectuer normalement.

12
Bus CAN / Re : Bus CAN DIY compatible JMRI
« le: octobre 17, 2024, 01:25:43 pm »
J' ai rajouté un cinquième nœud à mon bus CAN.
Je voulais expérimenter une carte pilotant des servos-moteurs.

La librairie OpenLCB_Single_Thread comprend plusieurs exemples de programmes pour de telles cartes.

Il y a le programme AVR-8servo qui utilise un module PWM PCA9685 pour piloter 8 servos.

N'ayant pas un tel module sous la main, j'ai plutôt utilisé le programme exemple AVR2ServoNIO.
Celui-ci implémente :
- 2 servos à 3 positions configurables.
- N entrées / sorties configurables.
N = 8 dans le programme.

J' ai téléchargé ce programme dans un Arduino UNO auquel j'ai adjoint un module CAN MCP2515.

Le cablage a été fait conformément au tutoriel de Jean-Luc:
https://www.locoduino.org/spip.php?article268
sauf que la pin INT est reliée à la pin 3 du UNO (pas à la pin 2)

J'ai d'abord testé le module CAN avec le programme loopback de Jean-Luc: résultat erreur 0x20. Encore un module neuf Hors Service...
Heureusement, j' en avais plusieurs d'avance et le suivant, lui, était bon.
Ces modules CAN chinois ne sont pas chers mais pas de bonne qualité.

J' ai connecté un servo en pin A4, un bouton poussoir en pin4 (avec sa résistance de 10k ohm en pullup)
et une led en pin5 (avec sa résistance de 560 ohm) à l' Arduino UNO.
Et j'ai relié le module MCP2515 au bus CAN (H avec H et L avec L).

J' ai donc sur le bus:
- 1 ESP32 passerelle CAN-USB pour JMRI
- 1 ESP32 (8 entrées 8 sorties) CAN1
- 1 ESP32 (8 entrées 8 sorties) CAN2
- 1 UNO (2 entrées 2 sorties) CAN3
- 1 UNO (2 servos 8 entrées / sorties) CAN4

CAN-USB et CAN1 comportent la résistance terminaison de 120 ohm nécessaire au bon fonctionnement du bus CAN.

Tous ces nœuds apparaissent bien dans  la fenêtre Network tree de JMRI.

La configuration du nouveau CAN4 se fait aisément.

Il y a 3 events pour chacune des 3 positions réglables (en degrés ) des servos-moteurs.
Il suffit d'associer l'event position 2 à 90° (par exemple) à l'event appui d'un bouton poussoir d'un autre nœud pour faire bouger le servo-moteur.

Il est bien sûr possible d'associer les mouvements du servos-moteur à un aiguillage.
Et de contrôler cet aiguillage par un clic de souris depuis l'écran de panel-pro de JMRI.

Il y a un choix multiple pour l'option entrée ou sortie de CAN4.
Ce choix s'effectue par menu déroulant. 3 options pour une sortie: solid, pulse ou flashing.
C'est pratique en effet de choisir directement depuis JMRI si une broche est une entrée ou une sortie.
J'ai donc défini la pin4 comme entrée et la pin5 en sortie.

C'est vraiment un plaisir de configurer un bus CAN et ses events associés aux entrées/sorties par simple clics et copier-coller.

J'ose pas penser à la programmation CAN bas niveau que représente 46 entrées/sorties et leur interactions sur 4 noeuds...
Il faut un certain courage (et une solide organisation) pour apréhender la programmation en dur d'un bus CAN non normé.

Par contre j'ai atteint les limites du "cablage fils volants" avec cables DuPont et breadBoard.
Sur mon bureau, c'est la jungle façon spaghetti... mais cela fonctionne   ;)

13
Trucs & astuces / Re : Rétrosignalisation S88 et UNO
« le: octobre 16, 2024, 11:26:02 am »
Bonjour,

Il faut installer la librairie, pas la copier colller.
Elle est fournie en bas de page sous forme de fichier zip à télécharger.
https://www.locoduino.org/spip.php?article138

Relisez si vous ne l'avez déjà fait l'article https://www.locoduino.org/spip.php?article71
Où vous verrez que c'est la Méthode facile 2 qui est recommandée pour l'installer.

le programme qui fait 7 lignes lui est copié collé dans l'éditeur
#include <UNO_S88.h>    // la librairie S88 pour les UNO/Nano

void setup() {
  S88_Setup(16);        // on donne le nombre capteur 8 ou 16
}

void loop() {
  S88_Loop();           // boucle sur les capteurs
}

il fait appel à la librairie par sa première ligne:
#include <UNO_S88.h>    // la librairie S88 pour les UNO/Nano
le compilateur lorsqu'il lit cette ligne, va automatiquement faire appel à la librairie
pour autant qu'elle ait été préalablement convenablement installée.

Pour insérer du code de façon lisible dans le forum, il faut se servir de l'icone  # et coller le code entre les 2 balises

14
Trucs & astuces / Re : Rétrosignalisation S88 et UNO
« le: octobre 12, 2024, 08:08:48 am »
Installer une bibliothèque
https://www.locoduino.org/spip.php?article71

15
Bus CAN / Re : Bus CAN DIY compatible JMRI
« le: octobre 04, 2024, 07:04:50 pm »
Histoire toujours d'expérimenter le bus CAN OpenLCB (LCC) j'ai ajouté un quatrième noeud au bus.

Cette fois j'ai utilisé un arduino UNO avec un module-driver MCP2515.

Le cablage a été fait conformément au tutoriel de Jean-Luc:
https://www.locoduino.org/spip.php?article268
sauf que la pin INT est reliée à la pin 3 du UNO (pas à la pin 2)

J'ai utilisé la librairie OpenLCB_Single_Thread
https://github.com/openlcb/OpenLCB_Single_Thread/tree/master

J'ai compilé l'exemple OlcbBasicNode qui configure 2 entrées et 2 sorties
J'ai connecté un bouton et une Led au UNO

Et j'ai relié l'ensemble au bus CAN (H avec H et L avec L)

J'ai lancé JMRI, mais le noeud UNO n'est pas apparu dans la fenêtre Network tree.  :(

Soupçonnant un problème sur le module MCP2515, j'ai téléversé le programme loopback de Jean-Luc dans le UNO.
Le programme m'affiche une erreur code 0x1 dans le moniteur.
Manifestement le module MCP2515 est HS.

J'ai donc repris un autre module MCP2515 que j'ai préalablement testé avec loopback.
test OK, messages reçus.

J'ai donc rechargé OlcbBasicNode  dans le UNO.
Et là bingo! le noeud apparait bien dans JMRI.  :)

J'ai pu tester l'effet du bouton et de la Led du UNO sur le bus CAN. tout est OK.  8)
Simplement si on change l'affectation d'une sortie à un autre event (bouton),
il faut faire un reset sur la carte pour que cela prenne effet.

Il est donc possible de mettre sur un même bus CAN des transceivers 3V3 (module WCMCU-230)
et des transceivers 5V (module MCP2515) sans problèmes.

L'inconvénient du module MCP2515 est qu'il consomme 5 pins de sortie sur le UNO,
ce qui laisse moins d'entrées/sorties disponibles.

Il semble aussi que le MCP2515 soit plutôt "outdated" et qu'on lui préfère le MCP2518.
https://groups.io/g/layoutcommandcontrol/message/9513

Pages: [1] 2 3 ... 14