Messages récents

Pages: [1] 2 3 ... 10
1
Bonjour

Commençons par documenter un peu le sujet:
CAN <==>S88
Il s agit exclusivement de faire descendre l'info S88 sur le bus CAN avant de repasser celle ci du bus CAN vers une sortie en S88/S88n pour utilisation par des interfaces ( centrales) et logiciel supportant ce standard.

Pour la partie CAN vers S88 le sujet a déjà été abordé ici même:
https://www.locoduino.org/spip.php?article180

Hormis un hardware spécifique ( dont je peux me pencher sur la réalisation) il faudrait peut être une IHM pour programmer cela de manière plus "user friendly" ( ou une mega doc pour savoir tut ce qu il faut  ajouter/modiifer comme valeurs avant injection dans le nano ( ou 328P :) )
A défaut il suffira d aller poser les bonnes valeurs aux bon endroits dans le croquis avant injection. mais sans trame directrice ce n est pas encore à la portée du plus grand nombre.

Il conviendra de définir avec rigueur une plage réservée à l usage de la RETROSIGNALISATION et particulierement à la version S88 ici meme.

Passons à présent à la partie suivnate:
RS LENZ <==>:
A ma connaissance il n y a pas de bibliothèque dédiée.

En tout état de cause voici ce que j ai trouve sur ce protocol:

LENZ RS bus Specifications :

How does the RS-Bus work?
 
Pretty simple actually. LZ100 or something simular acts as a master and sends 130 pulses, around 109 us high and around 93 us low, with an interval of 7 seconds. The feedback moduls counts these pulses. When the number of pulses is equal to the address in the feedback module, the module sends one byte of data, and one byte only. Only the status of 4 ports can be sent in one byte, so if the modules need to send status for all the ports on one address, it will send two bytes. But the second byte will be sent the next time the master is sending out pulses
From an electronic point of view, this bus have a couple of advantages compared to other buses. The transfer is made thru current levels, and not voltage leves as in example S88. The data is also protected by a parity bit, and the bus wont be over flooded with data with alot of modules on it.
 
Protocol
The data is transered with the speed of 4800bits / s. It contains 8 bits of feedback data.
•   Startbit (0)
•   Parity (even)
•   2 TT bits (always 10 with a standard module)
•   Nibblebit (0 = input port 1-4, 1 = input port 5-8)
•   4 databits D3, D2, D1, D0
D0-D3 represent input 1 to 4, or 5 to 8 depending on the nibblebit. This is the reason why we need to send two bytes to return status for all 8 ports
The TT bit identify the type of feedback module.
00 – turnout decoder without feedback
01 – turnout decoder with feedback
10 – standard feedback (this is what we use)
11 – reserved for future use
It’s unknown why Lenz created this encoding. For standard feedback modules, we always send 10 in the TT bits.
These 8 bits are sent, the other way around compared to standard UARTS, with the P bit first, and the D0 last
P 1 (t), 0 (T), Nibble, D3, D2, D1, D0
 
Message example
The message is coded in the following way
S, P, T1, T0, N, D3, D2, D1, D0
S – Start bit (Low)
P – Parity(Even)
T1 – always 1 for feedback moduls
T0 – always 0 for feedback moduls
N – Nibble (0 for input 1-4, 1 for input 5-8)
D3 – Input 4 or 8
D2 – Input 3 or 7
D1 – Input 2 or 6
D0 – Input 1 or 5
Example:
No.   S   P   T1   T0   N   D3   D2   D1   D0   Description
1   0   0   1   0   0   0   0   0   0   Input 1, 2, 3 & 4 low
2   0   1   1   0   0   0   0   0   1   1 high, 2, 3 & 4 low
3   0   1   1   0   0   0   0   1   0   2 high, 1, 3 & 4 low
4   0   0   1   0   0   0   1   0   1   1 & 3 high, 2 & 4 low
5   0   0   1   0   1   0   0   0   1   5 high, 6, 7 & 8 low
6   0   0   1   0   1   1   0   0   0   8 high, 5, , & 7 low
7   0   1   1   0   1   0   0   0   0   input 5, 6, 7 & 8 low
8.1   0   1   1   0   0   0   0   0   1   2 messages: 1 and…
8.2   0   0   1   0   0   0   0   1   0   … 6 high, resten low
References
For additional information, and also the page where I learned about the RS-bus, I can recommend Der-Moba’s webpage.

Source:
http://www.der-moba.de/index.php/RS-R%C3%BCckmeldebus


Ici donc, comme pour le S88 on doit pouvoir convertir une entrée de signal RS provenant d un detecteur vers le BUS CAN, puis realiser l operation inverse: sortir du BUS CAN les info a passer au bus RS

Je présume que des mécanismes analogue a ceux du S88 pourront être adoptés.

Question qui de plus doué/qualifié que moi peut s y pencher?
La encore une fois cette partie traitée je veux bien m'occuper de la partie design de l'interface physique pour mettre la solution en oeuvre.

Pour ceux qui n auraient pas mesurer l apport de ces passerelles elles permettront par exemple de pouvoir utiliser les cartes SATELLITE V2 avec les équipements et logiciels "usuels" du monde DCC.

Pour la partie DCC en Split DCC accessoires vs DCC conduite des engins nous verrons cela dans un autre temps.
Idem pour la partie LOCONET qui est elle BIDIRECTIONNELLE.

Laurent






2
Vos projets / Re : Aiguillage + Arduino + DCC + Eclisse
« Dernier message par Jean-Luc le février 14, 2019, 12:17:04 pm »
Il manque les coupures sur les bretelles dans les deux schémas du dessous
3
Vos projets / Re : Aiguillage + Arduino + DCC + Eclisse
« Dernier message par CATPLUS le février 14, 2019, 11:01:44 am »
Bonjour
Cet article date de 1984 Model Railroader.
J'ai toujours appliqué cette méthode.
Cordialement
Marcel
4
Débuter / Re : Re : Problème de logique
« Dernier message par msport le février 14, 2019, 10:58:48 am »
la lecture de vitesse se fait en comptant les impulsions : un trou dans une roue passe devant un capteur fourche ?
/la valeur de la rotation mesuré = au nombre de fois où l'infrarouge lit un trou

Il y a effectivement un problème de logique :
avec une mesure analogique, difficile de compter un nombre de fois ...
5
Vos projets / Re : Aiguillage + Arduino + DCC + Eclisse
« Dernier message par sebyoga le février 14, 2019, 09:34:29 am »
Bonjour à tous,

Merci à tous les deux pour vos réponses, voici un plan du réseau que je souhaite mettre en place.

Les cantons doivent t'il inclure l'aiguillage ? Dans ce cas, ne doit-on pas détecter le sens de marche afin que la rétro-signalisation fonctionne ?

Les éclisses isolantes doivent-elles être positionnées à toutes les extrémités de chaque aiguillage ou cela dépend ? et dans ce dernier cas, de quoi ?

Je lis beaucoup d'articles sur votre site, et j'ai du mal à comprendre par moment, c'est très technique dans le cas d'électronique par exemple.

Comme je suis un vrai novice, j'essai de bien tout comprendre pour ne pas faire de chose absurde, et surtout, j'essai de comprendre ce que je fais, c'est bien plus plaisant par la suite.

Bonne journée à vous,

Cordialement,
Sébastien
6
Débuter / Re : Problème de programme
« Dernier message par Dominique le février 14, 2019, 12:47:56 am »
Êtes-vous certaine que la carte SD sert à quelque chose ?

On ne pourra sûrement pas vous aider sans le schéma de montage et un peu plus de détails, car on ne voit pas bien ce qui est mesuré toutes les 1/2 secondes.

7
Vos projets / Re : Satellite V2
« Dernier message par laurentr le février 13, 2019, 11:30:16 pm »
Bonsoir

inspection faite ça match bien!

Peut être la piste en entrée J/K a réduire et uniformiser?
Laurent
8
Débuter / Re : Problème de programme
« Dernier message par Jean-Luc le février 13, 2019, 11:28:41 pm »
Bonsoir

Juste pour être sûr, la lecture de vitesse se fait en comptant les impulsions : un trou dans une roue passe devant un capteur fourche ?
9
Débuter / Re : Problème d'attention
« Dernier message par msport le février 13, 2019, 09:59:08 pm »
J'ai l'impression qu'il manque dans le setup un petit morceau de l'exemple de la référence Arduino.
https://www.arduino.cc/reference/en/language/functions/digital-io/digitalread/

On vous laisse trouver quoi ?
10
Débuter / Re : Problème de programme
« Dernier message par LO le février 13, 2019, 07:46:58 pm »
Voici un programme modifié:

#include <SPI.h>;
#include <SD.h>;
File fichierSD;
const byte CARTE = 12; //brancher carte sd sur digital 12
const int AnalogIntensite = A0;
const int AnalogRotation = A5;
float Intensite = 0;
float Rotation = 0;
unsigned long t = 0;

void setup() {
Serial.begin(115200);
  SD.begin(CARTE);
  t = millis();

 }

void loop() {

 Intensite = analogRead(AnalogIntensite); // la valeur d'intensité varaible est ce qui est lu sur le signal
 Rotation = ((analogRead(AnalogRotation)/16)*100); /*la valeur de la rotation mesuré = au nombre de fois où
                                                     l'infrarouge lit un trou/ le nombre de trou*100(conversion en s*/
 //Ouverture du fichier ANALOG
 fichierSD = SD.open("analog.txt" , FILE_WRITE);

 //Test pour écriture
 if(fichierSD) {
  Serial.println(F("Ecriture en cours"));
 // Ecriture
 Serial.println("Courant =");
 Serial.println(Intensite);
 Serial.println("Rotation(tr/s) =");
 Serial.println(Rotation);
 Serial.println("Temps(m/s)");
 Serial.println(t);
 fichierSD.close();
 }

 delay(500);
 
 }

Pages: [1] 2 3 ... 10