Réaliser une Centrale Digitale compatible Motorola...Voir+

Voir le sujet précédent Voir le sujet suivant Aller en bas

Réaliser une Centrale Digitale compatible Motorola...Voir+

Message par De dutch le Ven 11 Nov 2011 - 11:47

Salut vous tous,
comme je l'avais dit recement ,je m’étais mis en tête de réaliser un montage électronique
a base de pic qui émulerait une centrale digitale Very Happy et qui bien sur(condition sine qua non )
ne coute pas grand chose car les composants eux même ne valent pas grand chose ou
peuvent etre récupérés,il faut quand même un programmateur de pic(30euros,0 si on le fabrique soi-même)
et un microcontroleur pic(4euros).
Ici je n'aborderais que le protocole motorola 1ere génération(le protocol 2e génération ne permet que d'avoir une vitesse en plus et de gérer 4fonctions non dispo sur mon décodeur) qui est celui utilise par marklin,mais le montage fonctionnerait
également pour le dcc,car les protocoles sont assez proches,il faudrait juste modifier le programme du pic
pour gérer en plus le dcc Very Happy
Alors faut pas vous attendre a une copie de je ne sais quelle centrale a 700 euros avec écran lcd.wifi etc...
J'ai juste fait quelque chose de fonctionnel,le but étant de comprendre comment ça fonctionne. Cool

Le but de la manoeuvre était de pouvoir contrôler mon petit locotracteur marklin dhg700
(que j'ai bien modifie au passage)configuré en mode digital et réglé sur l'adresse 80(une des 15 possibles
avec les décodeurs delta).

Voici la cible:


Je peux aujourd'hui dire que l'objectif est atteint
puisque je dispose de 14 vitesses,du changement de sens et de la fonction stop.
Je commande le tout avec la télécommande de ma xbox et cela fonctionne très bien,
il sera aussi possible de gérer la temporisation accel/freinage meme si le décodeur delta
ne dispose pas de cette fonction.



Je vais donc essayer d'expliquer au mieux comment tout fonctionne.

1ere difficulté:
générer un courant alternatif haute fréquence a partir d'un courant continu.
Le digital nécessite en effet un courant alternatif qui va véhiculer les ordres et en meme temps,
fournir la puissance pour les moteurs.
Pour realiser cela j'ai utilisé "un pont en H" qui est la combinaison de 4 transistors (npn dans mon cas)
qui selon le fait qu'on ouvre et ferme certains transistors,permet d'avoir une tension de sortie positive
ou négative.Dans notre cas cela me permettra de délivrer +20V ou -20V(entre le rail central et les autres rails)
qui est la tension requise pour que tout fonctionne bien,on peut utiliser des tensions plus basses mais
au prix d'une baisse des performances.
Un petit lien wikipedia pour bien comprendre:
http://fr.wikipedia.org/wiki/Pont_en_H

Le pont en H:

A la place des interrupteurs,j'ai utilise des transistors qui seront soit bloquants,soit passant.


Les bases des transistors seront donc reliées au microcontroleur a travers un étage intermédiaire composé de transistors et c'est donc lui qui pilotera le pont en H
de manière a envoyer les ordres dans les rails.
Ce qui est intéressant avec cette configuration,est que l'on peut utiliser des transistors qui supportent
des courants très élevés(certains vont jusque 60A Shocked )permettant de piloter un grand nombre de trains en meme temps What a Face .
Bon moi j'ai utilisé ce que j'avais sous la main,a savoir des bd135 bridés a 750ma ange3 (0,7A suffisant pour mon locotracteur).Voila pour l’étage de sortie,maintenant on peut envoyer les ordres et la puissance requise
pour alimenter les trains grâce au pont en H.

Voici a quoi ressemble la bete:


Et sa télécommande ergonomique Cool



2)Le protocol motorolla:
Un lien explicite(attention une erreur est présente au niveau de la représentation du 0 logique)
http://benoit.bouchez.free.fr/digitrain2.htm

Les ordres en question sont donc définis par le format motorola qui définit les 1 et 0 logiques comme suit:

Un 1 logique est représenté par une impulsion positive(+20V) de 182us
suivie d'une impulsion négative(-20V) de 26us.

Un 0 logique est représenté par une impulsion positive(+20V) de 26us
suivie d'une impulsion négative(-20V) de 182us.

Il semble que les timings ne soient pas critiques,j'ai des fois des décalages de 2ou3 us par rapport
aux valeurs standards et cela est sans incidence.

Voici un autre lien (en allemand traduit via google) qui m'a bien aidé pour comprendre le protocole,
on y trouve notement une illustration de la trame servant a véhiculer les consignes:

http://translate.google.fr/translate?hl=fr&langpair=de%7Cfr&u=http://www.heise.de/ct/Redaktion/cm/buch/digit_1.html

En fait motorolla a décidé de regrouper les bits par groupes de 2 aussi appelés trits ou dibits permettant
de coder 3 informations différentes.

Trit '1' = Deux bits à 1 consécutifs (soit un codage binaire équivalent à 11)
Trit '0' = Deux bits à 0 consécutifs (soit un codage binaire équivalent à 00)
Trit 'ouvert'(représenté par la valeur 2) = Un bit à 1 suivi d'un bit à 0 (soit un codage binaire équivalent à 10)

Maintenant je vais détailler un peu le format de la trame que j'envoie dans les rails.
Tout d'abord,les trits sont toujours envoyés par paquets de 9 trits,soit 18 bits comme suit:

Quatre trits d'adresse (A1, A2, A3, A4), qui indiquent le destinataire du paquet,une loco par exemple
(donc adresse codée sur 8bits)

Un trit de fonction (F), permettant de déclencher 'quelque chose' sur le récepteur (éclairage, fumigène..), le cas échéant en fonction du sens de marche (codé sur 2bits)

Quatre trits de commande (S1, S2, S3, S4), permettant de gérer l'alimentation du moteur(code sur 8 bits)

Au total le pic enverra donc des paquets de 18 bits dans les rails dans l'ordre suivant:
8bits contenant l'adresse du décodeur cible(loco)
2bits de fonction permettant de déclencher un fonction
8bits contenant la vitesse.

L'envoi des données commence par l'envoi des bits de poids faible,autrement dit il faut envoyer les octets
a l'envers,par exemple on veut faire avancer le train réglé sur l'adresse 15 a la vitesse 9:

d'abord,il faut envoyer l'adresse,15 au format motorolla ça donne 0120(le 2 représente le trit ouvert donc 10) soit en binaire:
00 11 10 00 on envoie donc l'octet en commençant par les bits de poids faible,ce qui donne 00 01 11 00

Ensuite un trit de fonction,dans mon cas pas de fonction dispo sur mon décodeur donc le trit 0(fonction off) sera utilisé.On enverra donc 00.

Vient ensuite la vitesse,la vitesse 9 est ainsi codée-> 1010 soit en binaire 11 00 11 00,on enverra donc:
00 11 00 11.

Le paquet de données a envoyer sera donc(adresse15+fonction off+vitesse9):
00 01 11 00 00 00 11 00 11

Évidement ce serait trop simple de pouvoir controler une locomotive de la sorte,avec tous les problèmes
lies a la captation du courant par des roues qui tournent sur des rails,les données ont des chances d’être
corrompues ou incomplète,c'est pour cela qu'il faut renvoyer les données plusieurs fois pour être sur que le décodeur va bien les recevoir au moins une fois correctement.
En fait,il faut les envoyer au moins 2 fois pour que le décodeur compare les données pour détecter d’éventuelles erreurs de transmission.Voici ce qu'il se passe:

On envoie un paquet de données comme celui du dessus par exemple,le décodeur le mémorise,ensuite
on renvoie le même paquet,le décodeur va alors comparer le paquet reçu avec celui qui a été mis en
mémoire precedement,il y a alors 2 possibilités,soit les 2 paquets correspondent et la commande est exécutée,soit il sont différent et alors les commandes sont ignorées.
Entre 2 paquets,on intercale une pause pendant laquelle on n'envoie plus rien,la tension dans les rails
ne varie plus et devient alors continue.La durée de cette pause est de 1525us,cette durée n'est pas critique.
Le format de la trame envoyée est donc le suivant:
paquet de données,pause1525us,paquet de données(répétition)
Dans l'exemple du dessus ça donne donc:

00 01 11 00 00 00 11 00 11 pause1525us 00 01 11 00 00 00 11 00 11
ce qui forme un paquet double.

Pour augmenter la probabilité de réception sans erreurs,on renvoie le tout une 2e fois avec une pause de
4025us entre les 2 paquets double,a noter que la durée de 4025us n'est pas critique puisque
j'ai abaissé cette durée a 2500us sans que cela ne soit gênant.
On a donc au final:

paquet de données,pause1525us,paquet de données,pause4025us,paquet de données,pause1525us,paquet de données

soit:
00 01 11 00 00 00 11 00 11 pause1525us 00 01 11 00 00 00 11 00 11 pause4025us
00 01 11 00 00 00 11 00 11 pause1525us 00 01 11 00 00 00 11 00 11

J'ai décidé pour maximiser les chances de réception sans problèmes d'envoyer le paquet double 4fois,
et tout fonctionne parfaitement.

3)L’état de repos
Même si l'on ne veut pas envoyer d'ordres dans les rails,il faut quand même envoyer des données
en permanence pour que les trains roulent.
Si l'on n'envoie rien du tout,la ligne présentera une tension continue et les trains ne rouleront pas,
j'ai été confronte a ce problème et rien ne fonctionnait au début puisque a part les ordres,je n'envoyait
rien d'autre.Il faut donc envoyer des données en permanence de manière a bien avoir une tension
alternative sur les rails.
D'apres ce que j'ai pu trouver comme documentation la dessus,il faut envoyer le paquet
dont l'adresse est quatre trits ouvert donc 2222 (10 10 10 10)qui semble être une adresse inutilisée,
et 5 trits a 0 pour les données (00 00 00 00 00).Il faut donc envoyer en boucle ce paquet sans pauses
intermédiaires,sauf quand on veut envoyer des ordres.


4)Les commandes utilisables avec le protocol marklin 1e génération.

Avec ce protocol on dispose de 14 vitesses,du changement de sens et de la commande stop.
Voici un tableau qui les récapitule toutes avec les trits qui permettent de les coder
et le code équivalant en binaire :

Commande: Trits : Code en binaire :
Vitesse 14 111111111111
Vitesse 131110 11111100
Vitesse 12 1101 11110011
Vitesse 11 1100 11110000
Vitesse 10 1011 11001111
Vitesse 9 1010 11001100
Vitesse 8 1001 11000011
Vitesse 7 1000 11000000
Vitesse 6 0111 00111111
Vitesse 5 0110 00111100
Vitesse 4 0101 00110011
Vitesse 3 0100 00110000
Vitesse 2 0011 00001111
Vitesse 1 0010 00001100
inversion sens de marche 0001 00000011
STOP 0000 00000000



5)Les adresses utilisables avec le protocol marklin.
Le protocol marklin permet d'adresser 80 adresses différentes(81-1 qui sert pour l’état de repos)
Voici un tableau qui les liste jusqu’à la 14 avec leur code sur 4trits:

Adresse : Code :
80 0000
1 0001
2 0002
3 0010
4 0011
5 0012
6 0020
7 0021
8 0022
9 0100
10 0101
11 0102
12 0110
13 0111
14 0112

Adresses utilisable en delta et positionnement des switchs:
Adr :Switch-on :
2 -234
61-34
8 --34
18 12-4
20 -2-4
24 1--4
26 ---4
54 123-
56 -23-
60 1-3-
62 --3-
72 12--
74 -2--
78 1---
80 1234



Je m’arrête ici pour l'instant,mine de rien ça m'a pris pas mal de temps pour realiser le montage,
programmer le pic et écrire ce qui est au dessus.Je me suis limité au protocol motorolla de 1ere
génération,le protocol de 2e génération n'est pas très différent,c'est juste la façon de coder les vitesses
qui change avec l'envoi des fonctions.
J’espère que ce topic servira au amateurs d’électronique et de modélisme a expérimenter
la réalisation d'une centrale digitale par chère et fonctionnelle Cool.
J'ai rassemblé ici toutes les infos qui m'ont été indispensable pour mener a bien ce projet,
cela évitera quelques heures de recherche aux personnes intéressées par ce type de montage.

J'ai peut être oublié certaines choses ou pas assez détaillé certaines autres,aussi si vous avez des
questions ou des suggestions,n’hésitez pas a poster,j’éditerai alors si c'est possible.
@+


Dernière édition par de dutch le Sam 12 Nov 2011 - 18:08, édité 1 fois
avatar
De dutch
Mécanicien de manoeuvre

Date d'inscription : 06/04/2007
Echelle(s) que je pratique : H0
Digital - Analogique : Alimentation à impulsions fait maison

Revenir en haut Aller en bas

Re: Réaliser une Centrale Digitale compatible Motorola...Voir+

Message par Marc72 le Sam 12 Nov 2011 - 8:21

bonjour
superb ce tuto , mais est il possible que tous les menbres peuvent faire cette centrale digitale ?
sinon est il possible que tu puisse mettre en ligne tout se qui faut acheter ou récupérer , enfin et sourtout la procédure d'élaboration de cette centrale , car je pense que certaines personnes vous faire de meme
avatar
Marc72
Chef de manoeuvre

Date d'inscription : 21/11/2010
Echelle(s) que je pratique : H0
Digital - Analogique : Analogique

Revenir en haut Aller en bas

Re: Réaliser une Centrale Digitale compatible Motorola...Voir+

Message par De dutch le Sam 12 Nov 2011 - 10:09

Salut,oui tout le monde peut realiser une centrale de ce type,a condition de savoir souder.
Il faudrait pour cela que je mette en ligne le fichier .hex qui
contient le programme du pic et que je joigne aussi le schéma d'implantation
des composants.La principale difficulté pour les novices en électronique sera
de programmer le pic a bon prix car il faut pour cela disposer d'un port série,
sinon il faut acheter un programmateur.En fait je ne l'avais pas dit mais il
est possible de piloter la centrale de 2 manières différentes,soit avec la
télécommande soit avec le pc avec le port série a travers un petit soft Very Happy
avatar
De dutch
Mécanicien de manoeuvre

Date d'inscription : 06/04/2007
Echelle(s) que je pratique : H0
Digital - Analogique : Alimentation à impulsions fait maison

Revenir en haut Aller en bas

Re: Réaliser une Centrale Digitale compatible Motorola...Voir+

Message par Swiss-loc le Sam 19 Nov 2011 - 8:56

C'est ce qui s'appel se lâcher. Mes respects.
avatar
Swiss-loc
Résponsable du wagon bar

Date d'inscription : 10/11/2007
Echelle(s) que je pratique : H0 3RD, H0m
Digital - Analogique : Digital, RRTC, ESU

Revenir en haut Aller en bas

Re: Réaliser une Centrale Digitale compatible Motorola...Voir+

Message par De dutch le Lun 5 Déc 2011 - 11:31

Merci
Je viens de rajouter quelques fonctionnalités comme le pilotage automatique et aussi des vitesses intermédiaires ce qui permet de doubler le nombre de vitesses disponibles a la base Cool ->28 contre 14.C'est l'avantage de ce type de montage,on fait ce qu'on veut car c'est modifiable a souhait et très évolutif.
avatar
De dutch
Mécanicien de manoeuvre

Date d'inscription : 06/04/2007
Echelle(s) que je pratique : H0
Digital - Analogique : Alimentation à impulsions fait maison

Revenir en haut Aller en bas

Re: Réaliser une Centrale Digitale compatible Motorola...Voir+

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum