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 - lebelge2

Pages: [1] 2 3 ... 6
1
Vos projets / Une interface S88 pour LaBox.
« le: mai 22, 2025, 03:53:53 pm »
Bonjour.

Je vous propose une petite carte double entrée S88 à connecter à LaBox ainsi que le code source écrit par Xavier Bouillard et Philippe Chavatte du site http://lormedy.free.fr/S88.html (Autorisation de publication des auteurs)

Cet équipement permet de remonter les informations de détection via LaBox vers :
CDT3x, WDD,  DMC, CDM-Rail, JMRI et Rocrail.

Il est possible de connecter deux chaînes en parallèle de 32 modules à huit sorties, pour un total max. de: 2 x 32 x 8 = 512 capteurs.

Sur mon GitHub, vous trouverez :   https://github.com/Lebelge2/S88

-   Le fichier S88_Gerbert.zip pour la fabrication de l’interface.
-   Les fichiers  S88.cpp et S88.h  (simplifier) à joindre à ceux de LaBox.

Modif. LaBox :
-   Dans CommandStation-EX-LaBox, écrire : #include "S88.h"
-   A la fin du setup(), écrire :  S88::init() ;
-   A la fin du loop() , écrire :
if (S88::checkTime())           
        S88::check();

Configuration  S88.cpp

       Paramètre : N = nombre de carte de détection entre 2 et 64 (par pas de 2)
       Paramètre : DataFormat,  0, 1, 2 ou 3 suivant  logiciel de gestion des trains.

Plus d’info. sur le site de l’auteur :  http://lormedy.free.fr/S88.html

Je reste à votre disposition pour touts renseignements complémentaires.
Bien à vous.

2
Vos projets / Re : Booster La Box
« le: mai 20, 2025, 06:19:01 pm »
Ce fusible général se place en série avec le signal DCC, sa valeur dépend du nombre de locomotives en service. Valeur entre 5 et 10 Ampères.

3
Vos projets / Re : Booster La Box
« le: mai 19, 2025, 05:11:48 pm »
LaBox avec le Booster  IBT_2,   

L’équipe DCC-EX  propose également la carte moteur IBT_2  BTS7960 comme booster pour
EX-CommandStation (LaBox)

Voir ici, les recommandations et  restrictions.
https://dcc-ex.com/reference/hardware/motorboards/IBT_2-motor-board-setup.html#gsc.tab=0

Plus par expérimentations que par nécessité, j’ai installé ce Booster sur LaBox.

Modifications de LaBox :

Remplacer le L6203 par 2 rangées de connecteurs (pas 3,5mm) sur deux niveaux.
12 fils relient le module IBT_2  aux connecteurs. (voir la photo.)

Avec ce module, la détection de courant pour la lecture des CV et  court-circuits est beaucoup plus simple, de nombreux composants ne sont plus nécessaires et doivent être déssoudés.

Liste de composants à enlever:

IC2
R1, R2, R3, R4, R5, R10, R13, R14, R16, R17, R18, R19
C1, C2, C5, C8, C12
D1, D2, D4
Q1

Pour la détection de courant, comme proposé par l’équipe DCC-EX et suivant leur schéma, placer une résistance de 10K, une de 220 et une diode zener 3v3.
R5 ;   220   Ohms. 1/4W
R13 ; 10k.              1/4W
C8;    Zener 3v3.
Relier les pins 1 et 3  de IC2.

Modifications du fichier config.h ou config.LaBox.h

Le SenceFactor passe de 0.80 à 1.6 (double) .
5000 = 5A.  Courant max. dans cette exemple de configuration.
     
#define LABOX_MAIN_MOTOR_SHIELD F("LABOXMAIN"), \
new MotorDriver(32, 33, 27, UNUSED_PIN, 36, 1.6, 5000, UNUSED_PIN)           
#define LABOX_PROG_MOTOR_SHIELD F("LABOXPROG"), \
  NULL, \
new MotorDriver(32, 33, 27, UNUSED_PIN, 36, 1.6, 5000, UNUSED_PIN)   

#define MAX_CURRENT 6000
Ce paramètre est le courant maximum à 90% délivré par l’alimentation du Booster.

Suite à ces modifications, il faut aussi doubler la valeur de l’affichage du courant sur l’écran HMI.
Dans hmiConfig.h   
       
#define HMI_CurrentK    1.8  (Avant 0.9)      // Current scaling coefficient
Voilà, chez moi tout fonctionne, lecture et écriture des CV, détection RailCom, détection court-circuits, conduite des trains.
Pour bien faire, il faudrait une alimentation de 15Volts 10 Ampères.

Je reste à votre disposition pour touts renseignements complémentaires.
Bien à vous.


4
Vos projets / Re : Un écran plus grand pour Labox
« le: décembre 04, 2024, 06:49:15 pm »
Avec un écran encore plus grand, le SSD1309 de 2,42 pouces.

Il n’y a pas de librairie à modifier, simplement des contacts un peu plus longs pour surélever l‘écran car il déborde sur l’ESP32.

5
Vos projets / Re : LaBox" : Une Centrale DCC polyvalente et abordable
« le: décembre 01, 2024, 07:54:08 pm »
Bonjour, chez moi l'appli. Z21 fonctionne sous Android (Samsung)

6
Vos projets / Un écran plus grand pour Labox
« le: novembre 28, 2024, 03:39:47 pm »
Bonjour, Labox est dotée d'un écran OLED de 0,96 pouce.(SSD1306)

Je souhaite un écran plus grand, le OLED SH1106  1,3 pouce.
Son mode d’affichage est différent et nécessite une autre librairie.

Cependant, il est plus simple de modifier la librairie existante (Adafruit_SSD1306.cpp)

Modifications logicielles à effectuer dans la librairie Adafruit_SSD1306.cpp

-   Sur première ligne, écrire : #define SH1106
-   Dans la fonction : void Adafruit_SSD1306::display(void) ,  après la ligne :      uint8_t *ptr = buffer;
Insérer ce code :

#if defined (SH1106)
   for (int8_t i = 7; i >= 0; i--){
      ssd1306_command1(0xB0 + i);                           // Set row
      ssd1306_command1(0x02);                               // Set lower column address
      ssd1306_command1(SSD1306_SETHIGHCOLUMN);              // Set higher column address
     
      for (uint16_t j = SSD1306_LCDWIDTH; j > 0; j--){
        Wire.beginTransmission(i2caddr);
        WIRE_WRITE(0x40);
        for (uint8_t x=0; x<16; x++) {
          WIRE_WRITE(buffer[i * SSD1306_LCDWIDTH + SSD1306_LCDWIDTH - j]);
          j--;
        }
        j++;
        Wire.endTransmission();
      }
    }
  TRANSACTION_END
  return;
#endif

-     Reste à ajuster l’offset verticale.
      Dans : static const uint8_t PROGMEM init2[]    Changer valeur  0  (// no offset)   à 1

Modification matérielle.
D’origine, sur le SH1106, les Pins Gnd et Vcc sont inversées par rapport au SSD1306.
Il faut déplacer deux pontages au dos de l’afficheur pour que toutes les broches soient compatibles avec celles de Labox.


7
Débuter / Re : affichage LCD non fonctionnel...
« le: novembre 27, 2024, 12:10:16 pm »
Bonjour, il faut poster tous le code pour t'aider !

Et/ou tester le code suivant:

/**********************************************************************
  Filename    : Drive LiquidCrystal I2C to display characters
  Description : I2C is used to control the display characters of LCD1602.
  Auther      : www.freenove.com
  Modification: 2022/06/28
**********************************************************************/
#include <LiquidCrystal_I2C.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal_I2C lcd(0x27, 16, 2);

void setup() {
  if (!i2CAddrTest(0x27)) {
    lcd = LiquidCrystal_I2C(0x3F, 16, 2);
  }
  lcd.init();                // initialize the lcd
  lcd.backlight();           // Turn on backlight
  lcd.print("hello, world!");// Print a message to the LCD
}

void loop() {
  // (note: line 1 is the second row, since counting begins with 0):
  lcd.setCursor(0, 1);// set the cursor to column 0, line 1
  // print the number of seconds since reset:
  lcd.print("Counter:");
  lcd.print(millis() / 1000);
}

bool i2CAddrTest(uint8_t addr) {
  Wire.begin();
  Wire.beginTransmission(addr);
  if (Wire.endTransmission() == 0) {
    return true;
  }
  return false;
}

8
Vos projets / Re : LaBox" : Une Centrale DCC polyvalente et abordable
« le: novembre 23, 2024, 07:19:21 pm »
Je trouve qu’il manque une option dans le menu OLED pour mettre les rails sous tension manuellement.
En attendant j’ai mis cette ligne de code à la fin du Setup :

TrackManager::setMainPower(POWERMODE::ON);       // Power Tracks ON

9
Vos projets / Re : Carte détecteur de présence 16 entrées RailCom
« le: novembre 21, 2024, 12:27:38 pm »
Impossible de différencier deux locos sur une même zone avec le canal 1, ça a toujours été comme ça.

10
Vos projets / Re : Carte détecteur de présence 16 entrées RailCom
« le: novembre 20, 2024, 05:33:59 pm »
Attention.
Le canal 1 adresse bien les ID de chaque engin mais pas sur la même section RailCom et avec multiplexage des entrées.
Si deux engins se trouvent sur une même section, c'est le canal 2 et leurs Ack qui déterminent l'adresse des locos.

11
Vos projets / Re : Carte détecteur de présence 16 entrées RailCom
« le: novembre 20, 2024, 03:36:25 pm »
Bonjour, je vous communique les conclusions d’un petit test de détection.

Mise en service du réseau , le signal DCC est uniquement composé de trames IDLE (Préambl, 0xFF, 0x00, 0xFF)

Nous avons deux locomotives RailCom  canal 1 (Cv28 à 1) (Adr 1 et adr 4)

Dépose d’une loco sur les rails ;  Immédiatement reconnue par le détecteur, adresse 1.
Dépose de la deuxième sur un autre canton ; Immédiatement reconnue par le détecteur, adresse 4.

Conclusion : La détection  de la loco se fait sans besoin de l’adresser.

Conditions pour détecter deux locos sur un même tronçon :
1)   Adresser la loco. (vitesse ou fonctions)
2)   Activer bit 0, 1 et 7   du Cv28
Dans ces conditions le canal 2 envoi 6x   0xF0 (Ack) et le détecteur peut déterminer l’adresse des locos.


12
Vos projets / Re : Carte détecteur de présence 16 entrées RailCom
« le: novembre 14, 2024, 08:14:00 pm »
Bonjour.
Ce sont bien les convertisseurs Analogiques digitales qui échantillonnent le signal RailCom (250.000 Bauds)
Il y en a quatre et sont très rapides (2 millions de conversions par seconde)
Comme je peux le comprendre, il y a quand même un multiplexage.
Un convertisseur échantillonne à la fois deux trames RailCom en alternant deux entrées.
Ainsi, huit entrées sont analysées par trames.

Ici extrait du Datasheet de l'ATXMEGA128

25.2 Overview
The ADC converts analog signals to digital values. The ADC has 12-bit resolution and is capable of converting up to two
million samples per second (MSPS). The input selection is flexible, and both single-ended and differential measurements
can be done. For differential measurements, an optional gain stage is available to increase the dynamic range. In
addition, several internal signal inputs are available. The ADC can provide both signed and unsigned results.


Et dans la doc. de l'auteur (Traduite de l'allemand)

Plusieurs locomotives dans une section
Railcom reconnaît 2 canaux pour recevoir les messages en provenance des locomotives. Le canal 1 est un canal de diffusion (broadcast) dans lequel chaque décodeur envoie en continu sur son adresse. S'il y a plusieurs décodeurs dans une section, les signaux se chevauchent et interfèrent. Au contraire, dans le canal 2 seulement le décodeur adressé peut envoyer (diffuser) son adresse.

Le GBM16T reçoit sur deux canaux, et peut ainsi distinguer jusqu'à 4 locomotives. Si dans le canal 1 aucune erreur ne s'est produite sur trois annonces d'adresses successives, cette adresse est acceptée comme valable. De même l'adresse DCC actuelle est acceptée comme valable, si le canal 2 reçoit une réponse exacte.


L'auteur ne fourni plus le code source, uniquement .hex et .epp

Bien à vous.


13
Vos projets / Re : Carte détecteur de présence 16 entrées RailCom
« le: novembre 09, 2024, 02:38:43 pm »
Bonjour Dominique

Pour mon réseau, je n’utilise pas de PC, auparavant c’était un Arduino Uno qui gérait les signaux en 3 Bal et l’arrêt et le redémarrage des trains.
Cela fonctionnait correctement.
Actuellement je transcris le code pour l’ESP32 de LaBox, les premiers essais sont en cours.
Il est possible de remonter les messages d’occupations vers un logiciel PC à condition de connaître le protocol !
Je n’y connais rien en CAN, j’ignore si une transmission en 9 bits 250.000 Bauds est possible !
Ci-joint un schéma bloc de mon installation.

14
Vos projets / Re : Carte détecteur de présence 16 entrées RailCom
« le: novembre 09, 2024, 12:40:55 am »
Premier essai  de trois cartes 16 entrées RailCom, un Arduino Mega et LaBox.

(Voir image)

( Le Mega possède quatre entrées séries, trois sont programmées en entrées et reçoivent les données (9bits) des trois cartes, la quatrième programmée en sortie envoie les données (8bits) vers LaBox.)

Un nouveau fichier nommé Automat.cpp est ajouté  à LaBox.

Fonctions automate programmable.

Deux fonctions principales.

1)   Gestion des signaux automatiquement en mode 2 ou 3BAL.
             Arrêt des locos. devant un signal rouge
             Redémarrage des locos au signal orange (vitesse réduite) ou vert.

2)   Une loco entrant sur un canton peut déclencher des événements, par ex.:
-   Allumage des feux.  (Entrée tunnel (extinction à la sortie))
-   Modifier sa vitesse, sens  ou arrêt.
-   Changer de position un ou plusieurs aiguillages.
-   Gérer une autre locomotive.

Nombreuses possibilités en vue, sans câblage « type usine à gaz » et matériel coûteux…
 
A suivre…


15
Vos projets / Carte détecteur de présence 16 entrées RailCom
« le: novembre 09, 2024, 12:38:57 am »
Bonjour, ma dernière réalisation pour le suivi des trains dotés de la technologie RailCom ou non.
Détection de la présence de matériel roulant par consommation de courant et identification du numéro de loco. sur 16 canaux.

Le détecteur est composé d'une carte fille de chez Olimex  (processeurs Atmel ATXMEGA128A1) et de composants traversants.

C'est un clone du  GBM16T dont les plans, la construction et les fichiers sont libres de droits.

Pour les caractéristiques, je vous renvoie sur le site de l'auteur de la carte originale.
(16 entrées, faible insertion (0,3v), sensibilité ajustable, alimentation par DCC ou séparée, isolation galvanique des masses, etc…)

https://www.opendcc.de/s88/gbm_bidi/gbm_bidi_f.shtml

Je fournis le plan, la liste des composants, le fichier gerber (voir mon Github) ainsi qu’un support pour les interessés de cette réalisation.

https://github.com/Lebelge2/Carte-16-entrees-RailCom


La carte transmet les  rapports d'occupations et détection RailCom via son interface série isolée galvaniquement (9bits, 250.000 bauds)

Les messages peuvent être envoyés sur un logiciel de train tel que : CDM-Rail, JMRI, Rocrail ou LaBox.

La carte fille ATXMEGA128 est fournie sans Bootloader, un programmateur spécifique (PDI) est nécessaire. Voir la doc. (Programmer ATXMEGA128) sur mon Github.


Prix aproximatif des composants de la carte :

PCB carte mère (5 pièces JLCPCB)         5 €
ATXMEGA128 carte fille Olimex         15 €
1 ADUM 1201 (Isolateur magnétique)     1 €
33 diodes 1N5821 (lot de 50)                   4,15 €
32 résistances 1k (lot de 100)                   1,50 €
3 réseaux R1k (lot de 10)                          1,90 €
4 connecteurs mâles 2x10 (lot de 10)        2 €
20 LED 3mm (lot de 100)                         2 €
1 régulateur 7805 (lot de 10)                     1 €
21 borniers pich 5,08 (lot de 30)               3,40 €

Petit matériel
-----------------
1 transistor Mosfet BS170
2 condensateurs 22µF
2 condensateurs 100nF
1 diode Zener 3v3
1 résistance 100  Ohms
1 résistance 10K
1 résistance 20   Ohms 1W
1 Barette pico mâle et femelle 2,54

!!! Remarque :  Les frais de livraisons sont plus chères que le prix des pièces !!!

Démo. avec ce petit script à mettre dans le  void loop()  du  .ino
Affiche dans le moniteur les itinéraires  et numéros des locomotives.


unsigned long crT1 = 0;      // currentTime1
unsigned long pvT1 = 0;     // previousTime1
int DataTemp;
int Data[10];
int NbrData;
int i;

void setup() {   // Dans le setup configurer le sériél
  Serial1.begin(250000, SERIAL_8N1, 13, 14);   // Carte RailCom
//  Serial2.begin(250000, SERIAL_8N1, 15, 17);   // Carte RailCom
}

void loop() {  // A mettre à la fin du loop()

  if (Serial1.available()) {
    DataTemp = (Serial1.read());                 // Lit Data
    crT1 = millis();
    if ((crT1 - pvT1) > 10) {                    // >10ms,  Premier Data
      pvT1 = crT1;
      i = 0;                                     // Init tableau
      NbrData = DataTemp;                        // Nombre de Data dans trame
    }
    Data[i++] = DataTemp;                        // Mémorise les data
    if (i == NbrData + 1) {                      // Tous les Data reçus ?
      if (Data[1] == 2) {                        // Détection RailCom
        Serial.print("Loco n°");   Serial.print(Data[3]);
        if (Data[4] == 0)          Serial.print(" entre dans canton n°");
        else                       Serial.print(" entre à contre sens dans canton n°"); //0x80
        Serial.println(Data[2]+1);
      }
    }
  }
}

Bien à vous.

Pages: [1] 2 3 ... 6