LOCODUINO

Discussions Générales => Présentez vous ! => Discussion démarrée par: EMA883 le juillet 19, 2018, 09:39:53 pm

Titre: Hello world...
Posté par: EMA883 le juillet 19, 2018, 09:39:53 pm
Bonjour à tous, je m'appelle Eric,
je démarre la construction d'un réseau DCC piloté par PC avec CDM rail
j'ai découvert l'Arduino en construisant mes les décodeurs pour la commande des aigillages par servo-moteur
puis les modules de rétro-signalisation S-88 en me contentant de copier-coller le code...

 je sais c'est pas glorieux  :-[ mais bon on ne peut pas tout savoir! ;)

La ou les choses se compliquent c'est quand je veux "programmer" tout seul comme par exemple:
pour éviter un court circuit entre 2 cantons alimentés par des boosters différents,
permuter l'alimentation entre l'un ou l'autre des boosters en fonction du sens de circulation du train.     
Donc si vous le permettez j'aurai des questions à vous poser à ce sujet
A bientôt
Eric   
Titre: Re : Hello world...
Posté par: Thierry le juillet 20, 2018, 09:17:59 am
Bienvenue parmi nous.

C'est le rôle premier d'un forum comme le nôtre d'aider à concrétiser des projets ferroviaires utilisant l'Arduino. Nous serons donc heureux de répondre à tes questions.
Titre: Re : Hello world...
Posté par: Dominique le juillet 20, 2018, 01:33:00 pm
Bonjour Eric et bienvenue,

Oui tu vas trouver de l’aide ici,  peut-être avec un temps de réponse plus ou moins élevé en cette période de vacances.

Mais déjà je ne comprends pas pourquoi utiliser 2 générateurs DCC différents alors que le DCC est fait pour trouver son bonheur avec un seul et unique générateur.

Merci pour ton partage

Amicalement
Dominique
Titre: Re : Hello world...
Posté par: EMA883 le juillet 20, 2018, 05:20:49 pm
Bonjour,
merci pour vos messages

mon réseau comporte 200m de voies en HO et 10 rames peuvent circuler en même temps, si on considère a minima 1 ampère par rame  (sans décodeur sonore son et sans éclairage des voitures )
soit 10A,  c'est bien supérieur a ce que peut débiter ma centrale (Intellibox 65000), il faut donc découper en zones et ajouter des boosters pour amplifier le signal DCC de la centrale et l'intensité disponible sur l'ensemble du réseau .       

j'ai attaché le principe de base sur XL  cliquer sur les onglets pour voir l'animation
Mais je suppose qu'il y a des sections plus adaptées dans ce forum pour parler de cela en détail...

Cdt
 Eric
Titre: Re : Hello world...
Posté par: Tony04 le juillet 20, 2018, 07:17:58 pm
Bonjour Eric,

bienvenue sur ce "super" forum en espérant qu'il t'apporte autant de belles choses qu'il m'en a apporté.

Pour ton "gros" besoin de courant je te propose de faire comme moi en utilisant un module 43A (dont il était déjà question parfois) selon le schéma ci-dessous.
Le module comporte une protection interne et une sortie analogique pour la mesure du courant, je ne l'ai pas utilisé chez moi.
Tu peux le trouver un peu partout sur le Net, voici un exemple: https://fr.aliexpress.com/item/Double-BTS7960B-DC-43A-Stepper-Motor-Driver-H-Bridge-PWM-For-Arduino-smart-Car/2038552060.html

Bravo aussi pour ton utilisation "exotique" d'Excel, il fallait y penser.

Cordialement
Antoine
Titre: Re : Hello world...
Posté par: msport le juillet 21, 2018, 09:31:29 pm
... réseau DCC piloté par PC avec CDM rail ...

Bonjour et bienvenue,

vous vous êtes peut-être également intéressé à la version de CDM-Rail qui dialogue avec une version spécifique de la BaseStation DCCpp_Uno intégrant le S88 (merci à Xavier) ?
http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=45&t=2723&start=150

Je la teste avec quelques difficultés avec les détecteurs de présence (sujet largement débattu ici).
Je suis bien sur intéressé par votre propre expérience

Coté CDM, il faut récupérer la dernière dll et l'installer avec ses sœurs (répertoire DDGI).

Merci pour un retour d'information.
Titre: Re : Re : Hello world...
Posté par: Dominique le juillet 21, 2018, 09:42:46 pm
Pour ton "gros" besoin de courant je te propose de faire comme moi en utilisant un module 43A (dont il était déjà question parfois) selon le schéma ci-dessous.
Le module comporte une protection interne et une sortie analogique pour la mesure du courant, je ne l'ai pas utilisé chez moi.
Tu peux le trouver un peu partout sur le Net, voici un exemple: https://fr.aliexpress.com/item/Double-BTS7960B-DC-43A-Stepper-Motor-Driver-H-Bridge-PWM-For-Arduino-smart-Car/2038552060.html

J’en ai acheté un pour voir mais je ne crois pas que je m’en serve un jour  ???

Si ça peut intéresser quelqu’un je le cède volontiers.
Titre: Re : Hello world...
Posté par: msport le juillet 21, 2018, 09:56:28 pm
Problème avec ce module ou manque de temps pour tout tester ?
Utilisation en lieu et place du LM18200 mais avec un MAX471 ?
Titre: Re : Hello world...
Posté par: EMA883 le juillet 21, 2018, 11:37:08 pm
Merci pour vos réponses et propositions,
pour l'alimentation le 43A m'inquiète un peu en terme de sécurité   :o, je vais donc poursuivre avec une alimentation découpée par zones alimentées par différents boosters de 2.5A.       
Pour mes détecteurs de présence S88 avec arduino j'utilise une Intellibox (IB65000) comme interface avec le PC,  je n'ai pas prévu de construire une centrale Arduino donc pas testé :-\.   

J'en reviens donc à mon shéma de principe sur XL:
ce que j'aimerai pouvoir faire c'est relier les 4 détecteurs par consommation de courant D1 D2 D3 D4  a 4 entrées d'un Arduino
et en fonction de ces entées piloter un relai bistable via ULN 2803 avec la séquence suivante:
Un convoi qui circule de droite à gauche active D1 qui permute le relai et "inhibe" le detecteur  D2 
puis le convoi active D3 qui permute le relai à nouveau et "inhibe" D4.... 
Voilà l'idée  :)   


 
 
             
 

Titre: Re : Hello world...
Posté par: Pierre59 le juillet 22, 2018, 09:29:13 am
Bonjour

Je me pose quelques questions sur ton schéma :

- je ne vois pas très bien de quoi il s'agit ni l'utilité, mais je dois être un peu obtus, est ce deux voies ou deux rails, sur quelles parties sont branchés les détecteurs de présence

- par principe je n'aime pas beaucoup les relais bistables, au démarrage ou après incident on ne sait plus trop dans quels états ils sont et cela ne marche plus. J'ai un ami qui on installé un BAL 3 feux avec des relais bistables selon un schéma paru dans LocoRevue, en cas d'incident il doit tout remettre en état à la main.

- je pense que l'Arduino peut très bien remplacer le (ou les) relais bistable(s) avec une variable booléenne, qui permet d'inhiber les détecteurs voulus, il faut un peut plus de programmation

Amicalement

Pierre

Titre: Re : Hello world...
Posté par: Benoit92 le juillet 22, 2018, 06:34:13 pm
Les 43A, tu peux les avoir que si ton alimentation 220V / 0-18V tient le coup. Si elle fait 18V /10A, tu ne pourras sortir que 10 A.
Sinon, tu peux utiliser plusieurs ponts en H moins puissants (à partir de L298N):
https://fr.aliexpress.com/item/L298N-DC-and-stepper-Motor-dual-drive-module-for-Arduino/2036890763.html?spm=a2g0w.10010108.1000013.1.7acb14f0a1DJgq&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.90158.0&scm_id=1007.13339.90158.0&scm-url=1007.13339.90158.0&pvid=9e30f5b3-79e7-4b28-afca-809e292c89bc
Pour le problème de court-circuit entre deux boosters, tu peux créer un canton neutre qui est alimenté par l'un ou l'autre des boosters suivant le sens de marche.
Le canton doit faire une "certaine" longueur.
La commutation entre les deux boosters est réalisée alors que le train est sur le canton "neutre".
Titre: Re : Hello world...
Posté par: Dominique le juillet 22, 2018, 07:46:50 pm
Mais si tu mets 10 booster de 2,5 A, ça fait quand même 25 A à sortir !

Je me demande si, en appliquant le même signal PWM + DIR fourni par l’Arduino, à travers des amplis rapides, à tous les ponts en H en même temps, ne suffit pas en fin de compte.

Les différences de tension au passage des jonctions doivent être minimes et très courtes et supportées par les ponts.

Titre: Re : Re : Hello world...
Posté par: Benoit92 le juillet 22, 2018, 08:49:35 pm
Mais si tu mets 10 booster de 2,5 A, ça fait quand même 25 A à sortir !

Je me demande si, en appliquant le même signal PWM + DIR fourni par l’Arduino, à travers des amplis rapides, à tous les ponts en H en même temps, ne suffit pas en fin de compte.

Les différences de tension au passage des jonctions doivent être minimes et très courtes et supportées par les ponts.
Chaque locomotive semble consommer 1 A (sans les éventuels éclairages de wagons et les aiguillages + signaux).
2,5 A : cela fait donc une marge "normale" de 2 qui permet de ne pas trop échauffer les composants (fiabilité).
25 A ou 10x2,5 A, il te faudra toujours 25x18V = environ 500W.
Si tu fais des modules de 2,5 A, cela permet en cas de panne de pouvoir continuer à jouer en mode dégradé.
Tu peux aussi prévoir des "spare" vu le prix d'un ponts en H L298N.
Titre: Re : Re : Hello world...
Posté par: EMA883 le juillet 24, 2018, 08:59:24 pm
Les 43A, tu peux les avoir que si ton alimentation 220V / 0-18V tient le coup. Si elle fait 18V /10A, tu ne pourras sortir que 10 A.
Sinon, tu peux utiliser plusieurs ponts en H moins puissants (à partir de L298N):
https://fr.aliexpress.com/item/L298N-DC-and-stepper-Motor-dual-drive-module-for-Arduino/2036890763.html?spm=a2g0w.10010108.1000013.1.7acb14f0a1DJgq&gps-id=pcDetailBottomMoreThisSeller&scm=1007.13339.90158.0&scm_id=1007.13339.90158.0&scm-url=1007.13339.90158.0&pvid=9e30f5b3-79e7-4b28-afca-809e292c89bc
Pour le problème de court-circuit entre deux boosters, tu peux créer un canton neutre qui est alimenté par l'un ou l'autre des boosters suivant le sens de marche.
Le canton doit faire une "certaine" longueur.
La commutation entre les deux boosters est réalisée alors que le train est sur le canton "neutre".

Merci,  créer un canton  de commutation entre deux boosters c'est exactement ce que je cherche à faire  :)
avec 4 détecteurs à consommation de courant en entrée sur un UNO et un relais piloté en sortie pour la commutation
reste à écrire le programme.... c'est a ce niveau que j'ai besoin d'aide  ::)
sur 4 entrées d'un Arduino ---- reste à écrire le programe 
Titre: Re : Hello world...
Posté par: Benoit92 le juillet 26, 2018, 07:29:16 pm

As-tu un plan de ton réseau pour placer les cantons avec leurs longueurs ?
Je pense qu'il faudra pouvoir détecter le sens du train.
Les 4 capteurs peuvent être également des pédales reed ou des barrières infra-rouge.

(https://zupimages.net/up/18/30/9zt9.jpg) (http://zupimages.net/viewer.php?id=18/30/9zt9.jpg)
Titre: Re : Hello world...
Posté par: msport le juillet 27, 2018, 10:35:09 am
Bon, on va innover :

d'habitude, les intéressés écrivent leur programme, et les participants les corrigent.
En complément au schéma de Benoit92, un programme écrit vite fait, mal fait. Il a pour but d'inciter à se jeter à l'eau et à tester.
Il se compile sans erreur, ce qui ne veut pas dire qu'il fonctionne comme souhaité.
Il est fourni tel quel, sans engagement. Aucun support ultérieur. Prendre contact avec mon juriste.

Les cinq reed doivent être franchis dans l'ordre. Pas de retour en cours de parcours avec cette version basique.
Dans ce cas, le programme doit simplement détecter le sens et basculer un relais en fonction de ce sens :
Supposons 5 reed, deux dans le canton Booster 1, un dans le canton de commutation, et deux dans le canton Booster 2.

Donc cinq entrées et une sortie, un relais sur la pin 13 (led) pour pouvoir tester sans ce relais.
dans l'ordre :

D4 reedBooster11
D5 reedBooster12
D6 reedCommutation00
D7 reedBooster22
D8 reedBooster21

Le retour des reed sont à faire au GND de l'Arduino. (cf pullup). Le test peut être fait avec des fils.
Bien sur les reed peuvent être remplacés par tout détecteur d'occupation.
Titre: Re : Hello world...
Posté par: Benoit92 le juillet 27, 2018, 09:57:07 pm
1) Il ne faut pas oublier que les reeds peuvent rebondir donc il faut peut être intégrer une fonction "Bounce".

2) Il faut installer des aimants sous les locomotives

3) Dans mon schéma, je pensais à la répartition suivante pour les capteurs :
  - reed 1 sur le canton booster 1
  - reed 4 sur le canton booster 2
  - Reed 2 et 3 sur le canton de commutation
  - Reed 2 à une distance de reed 1 inférieure à la longueur de la locomotive la plus petite
  - Reed 3 à une distance de reed 4 inférieure à la longueur de la locomotive la plus petite

Logique :
Si reed 1 = 1 et les autres =0, on peut définir le sens de marche
On rentre dans la boucle de sens reed 1 (le canton de commutation passe sur booster1) et on oublie le reed 2
Quand la locomotive arrive à la reed 3, on commute et le canton de commutation passe sur booster 2

De même dans l'autre sens :
Si reed 4 = 1 et les autres =0, on peut définir le sens de marche
On rentre dans la boucle de sens reed 4 (le canton de commutation passe sur booster2) et on oublie le reed 3
Quand la locomotive arrive à la reed 2, on commute et le canton de commutation passe sur booster 1

On doit pouvoir utiliser le même principe pour les boucles de retournement

4) Je pense qu'au démarrage du réseau, il vaut mieux éviter que tous les relais commutent ensemble (risque de bruit) sauf à vérifier par l'oreille qu'ils fonctionnent.

5) Penses-tu utiliser ces cantons pour faire de la signalisation ?

6) Je ne t'écris pas le code car je ne suis pas informaticien et j'utilise encore la truelle.
Titre: Re : Hello world...
Posté par: EMA883 le juillet 28, 2018, 12:58:22 pm
Merci pour votre support  :)   

Afin de préciser un peu les chose j'ai modifié mon premier schéma sur XL en intégrant l'arduino et les états des entées -sorties (cliquer sur les onglets pour faire défiler l'animation)
pour les capteurs je souhaite utiliser la consommation de courant que j'utilise déjà pour la réto-signalisation S88
pour le programme je pensais utiliser comme base de départ celui disponible sur le site pour la commande des aiguillages a solénoides pour pouvoir commander mon relai-bistable par impulsion
et bénéficier aussi de la temporisation anti-rebond pour filtrer un mauvais captage du courant par les essieux,
mais compte tenu de mes compétences en la matière ce n'est peut être pas une bonne idée ?   

Quelle que soit votre spécialité (programmeurs ou rois de la truelle) toute aide est la bienvenue ;)           
Titre: Re : Hello world...
Posté par: Benoit92 le juillet 28, 2018, 04:06:45 pm
1) Je pense que tu n'es pas obligé de couper le canton de commutation en deux parties pour ce qui concerne l'alimentation par les Booster.

2) N'oublies pas la Diode de Roue Libre (DRL) aux bornes du relais de commutation pour éviter les surtensions sur l'Arduino :
http://www.locoduino.org/spip.php?article29

3) Pour la mise au point de ton système, je te suggère de prendre une Breadboard et d'installer dessus :
  - Arduino (Nano ?)
  - 4 Boutons poussoir
  - 2 Leds (rouge + verte + résistance de 330 Ohm) pour simuler la commande du relais (Booster 1 ou 2)

4) Pour vérifier que ton code est robuste, tu pourras également essayer toutes les configurations possibles en :
  - appuyant sur plusieurs boutons à la fois,
  - appuyant successivement au hasard sur n’importe quel bouton,
Tu peux également réaliser la table de Carnaugh (4 entrées, 1 sortie) de ton automatisme pour y voir plus clair.
Titre: Re : Hello world...
Posté par: EMA883 le juillet 28, 2018, 11:38:30 pm
Bonsoir Benoit,

1) J'ai aménagé deux zones de détection aux extrémités du canton de commutation car j'ai besoin d'avoir toute la rame présente sur ce canton (y compris la dernière voiture avec les feux de fin de convoi) avant de permuter l'alimentation, et comme cela doit fonctionner dans les 2 sens de circulation il y a 2 zones de détection une à chaque extrémité du canton.

2) L'ULN 2803A est équipé de diodes sur chacune de ses sortie, il faut l'alimenter avec le + des bobines pour les mettre en service
       
Titre: Re : Hello world...
Posté par: EMA883 le juillet 29, 2018, 12:00:47 am
3) pour le matériel j'ai quelques "UNO"compatibles d'avance que je peux soumettre à la torture   
 il ne me manque plus que le relai (pas de bistable dans ma collection) mais je me demande si un vieux aiguillage jouef ne ferait pas l'affaire en attendant  ::)  en couplant 2 sorties de l'ULN 2803 il devrait pouvoir commuter 1A

4) Pour tester avec des boutons à la place des capteurs je suppose qu'il faut des inter à bascule qui puissent envoyer alternativement 0V ou +5V sur la broche d'entrée?
 je ne connais pas la table de Carnaugh (4 entrées, 1 sortie) mais je vais m'instruire sur le sujet.

J'ai chargé le code aimablement proposé par MSPORT et effectivement il se compile et se "téléverse" sans souci,
je reviens vers vous après les premiers tests  8)

Cdt Eric   
Titre: Re : Hello world...
Posté par: msport le juillet 29, 2018, 12:36:36 am
Vu la logique qui attend l'évènement suivant, pas besoin de gérer les rebonds. On peut appuyer n fois sur le bouton, il ne se passera rien de plus.

https://www.ebay.fr/itm/12V-1-2-4-8-16-Channel-Relay-Module-With-optocoupler-For-PIC-AVR-DSP-ARM-Arduino/232719486897
Ces petits relais ont la bonne idée de simplifier le câblage, au moins pour les tests :

Ces relais alimentés en 12V sont commandés en 5V par les sorties arduino en étant opto isolées. Ils consomment 37,5 mA par bobine en 12V.
Il suffit de commander les deux relais par la même sortie 13 de l'arduino.
La gestion par programme est simple.

Les mêmes relais en 5V consomment un peu trop pour être raisonnablement alimentés par le 5V de l'arduino ~100 mA.
Pour la sortie de l'arduino ce serait OK car ils sont pilotés par transistor (isolé aussi).

Donc  une version modifiée pour relais bistable, la deuxième bobine est sur la pin 12.
Mais cette version ne fonctionne pas correctement, le bistable booster2 est commandé à chaque passage en zone de commutation.
Voila à un beau sujet de débogage ...

PS : mettre "reference arduino pullup" dans google  pour voir qu'il n'y a pas besoin de résistance, juste une mise au GND. Les reed n'ont qu'un contact.
De simple LED (avec résistance) sur les sorties permettent de visualiser ces sorties.
Titre: Re : Hello world...
Posté par: Benoit92 le juillet 29, 2018, 12:42:50 pm
Pour l'installation physique de ton réseau, tu penses tout centraliser (par paquet de 8 optocoupleurs - ULN 2803A)
ou bien répartir (1 ou 2 Optocoupleurs - 6N136 ou 6N137) l'électronique (+ arduino)  à coté du canton lui-même?
Titre: Re : Hello world...
Posté par: EMA883 le juillet 30, 2018, 03:49:32 pm
Bonjour,
ci-joint les premiers tests en imag:e

A gauche les 2 led d'activation des bobines du relai  B2 et B1
A droite   les 4 led pour les détecteurs D21 D12 D22 D11

Test 1:  2 trains en ses inverse: cela semble fonctionner (commute dans les 2 sens au niveau du 3 eme détecteur rencontré)
http://dl.free.fr/fHYPkPlLP 

Test 2: 2 trains dans le meme sens: commutation sur le 2eme détecteur et le 3 eme détecteur...
http://dl.free.fr/wdnT6wKE3

C'est un bon début mais je n'exclue pas des erreurs au niveau du cablage  ::)
NB: les 2 sorties bobine étaient affectée à la pin 13, je me suis permis de corriger (12 et 13) 

Encore merci de a bientôt
Eric
 
       
Titre: Re : Re : Hello world...
Posté par: EMA883 le juillet 30, 2018, 09:42:49 pm
Pour l'installation physique de ton réseau, tu penses tout centraliser (par paquet de 8 optocoupleurs - ULN 2803A)
ou bien répartir (1 ou 2 Optocoupleurs - 6N136 ou 6N137) l'électronique (+ arduino)  à coté du canton lui-même?

En principe je répartis mes modules (boosters,  decodeurs d'aigulllages, retro-signalisation... ) tout autour du réseau mais pour les cantons de commutation  il se trouve qu'ils sont tous au même endroit, (a droite sur le plan ) il y a 6 zones de commutation soit 24 detecteurs que je vais donc regrouper le plus possible.
 
     
Titre: Re : Hello world...
Posté par: EMA883 le juillet 31, 2018, 09:53:24 pm
Bonsoir,
erreurs de cablage il y avait en effet... :-[
1) La sortie bistable pin 12 n'était pas reliée à l'entrée pin 06 donc pas facile pour le programme de connaître la position du relai  :o
2) Les entrées des 4 détecteurs étaient parfaitement dans le désordre > Solution: 4 5 7 8  dans cet ordre !

Cela étant fait                         :D :D :D :D :D!!!!CA MARCHE!!!!  :D :D :D :D :D

 dans tous les cas possibles:                  2 trains à droite
                                                           2 trains à gauche
                                                           1 train à droite puis un train à gauche
                                                           1 train à gauche puis un train à droite
Encore merci pour votre aide, cela donne envie de persévérer afin de comprendre un peu mieux ce qui se passe dans le programme .  ;)