Auteur Sujet: Hello world...  (Lu 25145 fois)

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Hello world...
« Réponse #15 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.
Cordialement

Benoit92

  • Full Member
  • ***
  • Messages: 200
    • Voir le profil
Re : Hello world...
« Réponse #16 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.

EMA883

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Hello world...
« Réponse #17 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 ;)           

Benoit92

  • Full Member
  • ***
  • Messages: 200
    • Voir le profil
Re : Hello world...
« Réponse #18 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.

EMA883

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Hello world...
« Réponse #19 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
       

EMA883

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Hello world...
« Réponse #20 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   

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Hello world...
« Réponse #21 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.
Cordialement

Benoit92

  • Full Member
  • ***
  • Messages: 200
    • Voir le profil
Re : Hello world...
« Réponse #22 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?

EMA883

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Hello world...
« Réponse #23 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
 
       

EMA883

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Re : Hello world...
« Réponse #24 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.
 
     

EMA883

  • Newbie
  • *
  • Messages: 15
    • Voir le profil
Re : Hello world...
« Réponse #25 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 .  ;)