Décodeur a base d'Arduino

Décodeur a base d'Arduino

Messagepar Xavier » 11 Août 2013, 22:02

Bonjour,

Pour ceux que cela pourrait intéresser, je suis en train de tester l'Arduino (Duemilanove) pour faire un décodeur pour mon pont tournant et mon pont transbordeur:
- Décodage des paquets DCC : ca marche!
- Commande RC5 (téléviseurs Philips entre autre) : ca fonctionne aussi
- Réception des commandes USB : pas de soucis.
- commande moteur CC via LD293 ! : ca marche encore
- détection de positionnement par barrière optique: c'est bon !
- commande de servo moteur: super !
- commande de moteur pas a pas : patience ... ca ne devrait pas tarder.
:cool:
Il reste a assembler les morceaux et remettre au propre le circuit imprimé ...
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Décodeur a base d'Arduino

Messagepar Guytoonet » 12 Août 2013, 16:22

Salut Xavier,

Sacré boulot et merci pour le partage.
Ça va en intéresser plus d'un mais dis-moi, le tout sera piloté, par un module?
Et au niveau servos, combien peut-il en commander?

Guy
‎"Il est bien des choses qui ne paraissent impossibles que tant qu'on ne les a pas tentées."
André Gide

Echelle N
Centrale CSX + GenLiS88
Rétrosignalisation LDT RM-GB-8-N
Moteurs d'appareils de voie "Seep" et décodeurs LENZ LS150
Guytoonet
 
Messages: 6231
Inscrit le: 09 Décembre 2009, 20:37
Localisation: Manage Belgique

Re: Décodeur a base d'Arduino

Messagepar Xavier » 12 Août 2013, 19:56

Bonsoir,

Et au niveau servos, combien peut-il en commander ... : cela dépends du nombre de sorties PWM de l'Arduino choisi!
- Arduino Uno / Duemilanove : 6 servos (20€)
- Arduino Mega: 15 servos (50€)
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Décodeur a base d'Arduino

Messagepar Guytoonet » 13 Août 2013, 20:00

Merci Xavier,

Ça commence à devenir intéressant, reste tout le côté programmation....... pour le nul que je suis :mrgreen:

Guy
‎"Il est bien des choses qui ne paraissent impossibles que tant qu'on ne les a pas tentées."
André Gide

Echelle N
Centrale CSX + GenLiS88
Rétrosignalisation LDT RM-GB-8-N
Moteurs d'appareils de voie "Seep" et décodeurs LENZ LS150
Guytoonet
 
Messages: 6231
Inscrit le: 09 Décembre 2009, 20:37
Localisation: Manage Belgique

Re: Décodeur a base d'Arduino

Messagepar Xavier » 16 Août 2013, 21:34

Bonsoir,

Ca y est ! Il fonctionne et permet de positionner le pont tournant, par le chemin le plus court :cool: . Je posterai une vidéo dès que possible.
Il est prévu pour piloter aussi les ponts transbordeurs ou stockeurs.

Juste un doute:
J'ai considéré que c'est un accessoire: l'adresse est donc calculée comme suit :
Adresse = 2 * Ad + Data % 2
Ainsi quand je commande l'aiguillage 12, suivant l'état je vais vers la voie 24 ou 25.
Cela est il cohérent ? JP a peut être des informations ... :help:

Comme CDM ne permet pas, à ma connaissance de commander ce type d'accessoire, j'utilise pour le moment la télécommande de la TV!
Il est aussi possible d'utiliser la communication série par USB pour toutes les commandes (les 3 premières sont disponibles sur un clavier déporté). Cela permet aussi d'afficher le déroulement du programme.
- CLW : un pas horaire
- CCW : un pas antihoraire
- REV : 1/2 tour
- GTO <nn> : aller à la voie nn
- PCV <cv> <val> : Programmer le CV cv avec la valeur val
- SCV : Sauvegarder le nouveau CV
- CCV : Annuler le nouveau CV
- ZER : Affecter la voie courante à ZERO (CV[2]=0)

J'ai même la possibilité de modifier les CV suivants :
- Adresse de base DCC
- Nombre de voies
- Type de pont (tournant/transbordeur/stockeur)
- Voie courante (pratique pour le calage initial !)
- vitesse rapide
- vitesse lente (pour atterrir en douceur à destination)
- Autorisation RC5

Coté HARD j'ai fait un CI qui s’emboîte sur l'Arduino. Il comporte :
- un opto coupleur 6N137 (pour le DCC)
- un LD293 pour commander le moteur CC
- un récepteur IR du style TSOP4836
- quelques résistances et capacités
- les connecteurs suivant :
- moteur CC : 2 broches
- clavier déporté : 5 broches (1 led + 3 boutons)
- barrière IR : 3 broches ( détection du positionnement du pont par fentes dans un CD sur l'axe du pont)
- alimentation extérieure moteur CC

Le prochain décodeur sera pour des servos (signalisation mécanique oblige): Guy, patiente un peu !
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Décodeur a base d'Arduino

Messagepar Xavier » 17 Août 2013, 17:03

Comme promis, un petite vidéo du pont tournant !
Un soucis dans la vidéo avec le titre. Il faut lire:
Pont Tournant Arduino
- un pas sens antihoraire
- un demi tour
- un pas sens horaire

La mécanique n'est pas encore correctement positionnée, il reste des points où ça force un peu: le voies ne sont pas encore posées.

Il va sans dire que le code est disponible à ceux qui le demandent par MP, avec les schémas...

A bientôt pour la suite...

Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Décodeur a base d'Arduino

Messagepar Guytoonet » 17 Août 2013, 23:01

Bonsoir Xavier,

Bravo, ça c'est de l'application :thumb2:

Pour mieux comprendre comment ça marche, je vais commencer à casser les pieds :lol:
Ton pont est donc commandé par IR et télécommande de télé?
Finalement, tu utilises une motorisation pas-à-pas?

Même si CDM ne gère pas (pour l'instant), rien n'empêche d'isoler une partie du réseau, pour y créer une zone de manœuvres.
Ça ouvre de belles possibilités..... pont tournant, transbordeur..... etc

Merci pour ces développements!!!

Guy qui va essayer de comprendre :mrgreen:
‎"Il est bien des choses qui ne paraissent impossibles que tant qu'on ne les a pas tentées."
André Gide

Echelle N
Centrale CSX + GenLiS88
Rétrosignalisation LDT RM-GB-8-N
Moteurs d'appareils de voie "Seep" et décodeurs LENZ LS150
Guytoonet
 
Messages: 6231
Inscrit le: 09 Décembre 2009, 20:37
Localisation: Manage Belgique

Re: Décodeur a base d'Arduino

Messagepar Xavier » 18 Août 2013, 12:33

Pour les questions ... pas de soucis.

C'est un moteur à courant continu de marque minimotor (j'en ai un stock!)

Pour chaque cycle, j'envoie une impulsion de 2 ms puis rien pendant 60 ms (vitesse rapide) ou 150ms (vitesse lente)
Comme le moteur possède une inertie, pour le stopper net, j'envoie pour finir une impulsion en sens inverse de 1ms
Après chaque cycle, je teste si le capteur de position est en face d'une voie ou non.

Au démarrage, il faut d'abord sortir de l'encoche du capteur de position puis attendre de retrouver l'encoche suivante. On a alors fait un pas.
Il y a environ 15 cycles par pas.
On recommence jusqu'au nombre de pas souhaité. Dans le dernier pas, on passe en vitesse lente après le 7eme cycle.

Quand le pont est a l'arrêt, il attends les commandes :
- DCC (par interruption)
- Récepteur IR en provenance d'une télécommande TV RC5 ou RC6 ( par scrutation)
- USB selon la syntaxe donnée plus haut. (par interruption)

Une fois la commande reçue, il l’exécute en calculant préalablement le nombre de pas a effectuer et le sens de rotation.
A la fin de chaque mouvement, le numéro de la voie atteinte est enregistre dans le CV 2, ce qui permettra de repartir sans soucis même après coupure de l'alimentation.

J'espère être resté simple mais complet ...

Amicalement.

Xavier
Echelle N , Run depuis le 01/01/2013
Centrale NanoX/Roco + GenLiS88, Dcc++, Décodeurs Accessoires à base d'Arduino
Rétrosignalisation LDT RM-GB-8-N-B, Décodeur d'aiguillage LDT M-DEC-DC-B, Moteurs Conrad 219998
Club; AMFBC 73
Xavier
 
Messages: 465
Inscrit le: 11 Décembre 2009, 19:01
Localisation: Challes les eaux - Chambery (Savoie / Rhône Alpes)

Re: Décodeur a base d'Arduino

Messagepar jpp38 » 19 Août 2013, 07:47

Salut Xavier,

Je n'ai pas répondu plus tôt parce que j'étais en vacances, et non connecté, la semaine passée.

Très beau développement. :bravo2: :bravo2: :bravo2:
Je n'ai pas tout compris, mais je vais relire tout ça attentivement.
En tout cas, c'est très motivant pour aller un cran plus loin dans la gestion des ponts tournants via CDM. je vais commencer à réfléchir à la question.

JP
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Re: Décodeur a base d'Arduino

Messagepar jpp38 » 19 Août 2013, 07:50

Xavier a écrit:Juste un doute:
J'ai considéré que c'est un accessoire: l'adresse est donc calculée comme suit :
Adresse = 2 * Ad + Data % 2
Ainsi quand je commande l'aiguillage 12, suivant l'état je vais vers la voie 24 ou 25.
Cela est il cohérent ? JP a peut être des informations ... :help:


Je pense que rien n'empêche d'utiliser la commande d'accessoire de cette façon.
jpp38
 
Messages: 11187
Inscrit le: 31 Mars 2009, 10:15
Localisation: Grenoble (Isère / Rhône Alpes)

Suivant

Retourner vers Les accessoires "numériques" fixes (décodeurs d'aiguillages, de signaux, ...)

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron