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.shtmlJe 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-RailComLa 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.