LOCODUINO

Parlons Arduino => Débuter => Discussion démarrée par: jeff22150 le novembre 18, 2019, 03:11:18 pm

Titre: Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 18, 2019, 03:11:18 pm
Bonjour
Tout d'abord, sachez que je débute dans ce qui est modélisme ferroviaire et l'électronique programmable. Je lis avec passion tout le contenu du site et du forum et souhaite me lancer dans un projet pour moi ambitieux : pour mon "village de noel" (et oui c'est la saison) je souhaite créer un va et vient sur une seule voie avec une gare centrale.
Pour cela j'ai lu (et relu, et rerelu) le projet de va et vient automatique et réaliste de Dominique (-> https://www.locoduino.org/spip.php?article232 (https://www.locoduino.org/spip.php?article232))

Les deux différences principales avec mon projet :
- Je souhaite faire cela en PWM (pas de DCC, inutile car il n'y aura qu'un seul train)
- La gare centrale

Dans mon "cahier des charges", je rajouerai :
- impossible de faire un anneau (pas assez de profondeur)
- On admettra que le train peut (pour cette année) rouler en "arrière" sans remettre la loco.

Sous le modèle de du projet cité ci-dessus, j'ai donc fait un schéma de ce que je pensai faire (en pièce jointe).
Voici le comportement que je souhaiterai :
En sens aller :

En sens retour

Temporisation entre deux trajets : 3 secondes



Mes questions sont les suivantes :
- pour créer "artificiellement" mon circuit électrique à partir de ma ligne droite, fait-il que je relie le coté gauche au coté droit grâce à un fil monobrun ? (je vous ai dit je débute  :-[ )
- Ai-je raison de créer deux partie dans la gare centrale pour que mon train s'arrête bien au niveau du quoi dans un sens comme dans l'autre ?
- Quel détecteur de présence me conseilleriez vous ?
- Est-ce qu'un nano va me suffir ?

Merci d'avance pour le temps que vous avez pris pour me lire et pour vos réponses
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le novembre 20, 2019, 07:41:17 pm
Mes questions sont les suivantes :
- pour créer "artificiellement" mon circuit électrique à partir de ma ligne droite, fait-il que je relie le coté gauche au coté droit grâce à un fil monobrun ? (je vous ai dit je débute  :-[ )
Là je ne comprends pas du tout ce « mono brin » !
Citer
- Ai-je raison de créer deux partie dans la gare centrale pour que mon train s'arrête bien au niveau du quai dans un sens comme dans l'autre ?
oui c’est une option possible, mais une seule zone serait aussi possible à condition d’ajouter des capteurs de position où la loco doit s’arrêter, dans les 2 sens. Si le convoi a plusieurs voitures et comme la loco est tantôt en tire, tantôt en pousse, c’est un poil plus compliqué.
Citer
- Quel détecteur de présence me conseilleriez vous ?
les détecteurs de consommation
 http://forum.locoduino.org/index.php?topic=558.0 (http://forum.locoduino.org/index.php?topic=558.0) ou
 http://forum.locoduino.org/index.php?topic=489.msg9143#msg9143 (http://forum.locoduino.org/index.php?topic=489.msg9143#msg9143)
Citer
- Est-ce qu'un nano va me suffire ?

Je pense que non : il faut compter tous les capteurs nécessaires + l’interface DCC + l’interface utilisateur. Um Mega serait le mieux.
Citer
Merci d'avance pour le temps que vous avez pris pour me lire et pour vos réponses
jeff22150

J’ajouterai que ce projet n’est pas la simple reproduction de mon article, il y a pas mal de modifications à faire, augmenter l’automate assez considérablement donc de la mise au point.
Pour débuter ce n’est pas facile sauf à être très méthodique et patient. La phase de préparation (papier) est très importante avant de se lancer.

Bon courage
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: CATPLUS le novembre 21, 2019, 08:44:31 am
Bonjour
Une autre approche
A l'Expo d'Orléans j'ai présenté sur le Stand de Locoduino ce mini module avec va et vient (Point to point, possibilité de régler des arrêts, temporisés)
J'ai repris la réalisation  de Dave Bodnar.

http://www.trainelectronics.com/DCC_Arduino/DCC++/IRThrottle/index.htm

Cordialement
Marcel
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le novembre 21, 2019, 10:02:03 am
Citer
- Je souhaite faire cela en PWM (pas de DCC, inutile car il n'y aura qu'un seul train)

Je parie que vous aurez envie de profiter de la gare au milieu pour croiser 2 trains en sens inverse, mais en DCC !

Cela dit, piloter en PWM est facile en première étape.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: CATPLUS le novembre 21, 2019, 11:40:33 am
Dominique

Tu as raison, après relecture  j'ai zappé le fait que la demande concernait le NON DCC, et voilà vitesse et précipitation.
Désolé.
Si pas nécessaire, je supprime cette réponse.
Marcel
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le novembre 21, 2019, 03:22:24 pm
Rappeller qu’il faut bien lire est toujours utile  ;D

Amicalement
Dominique
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 23, 2019, 01:35:19 pm
Bonjour et merci pour vos remarques.
Pour l'instant et pour l'avenir il n'y aura qu'un seul et unique train car c'est pour une sorte de village de noel.
Pour le coup de la boucle, je vous ai dit, je suis novice de chez novice. Je croyais qu'il fallait forcément créer une boucle "fermé sur le "+" et une autre sur le "-". Je me suis apparemment trompé...
Toujours en me basant sur le projet de va et vient de Dominique que je lis et relis.... j'ai fais mon chez de câblage électronique. J'ai normalement fait apparaître TOUS les fils. Pouvez vous me dire si j'ai fait une bétise (qui risquerait de griller l'un des composant). Ai-je oublié une ou plusieurs résistances ? un fil ? pb de fil créant un court circuit ?

Merci d'avance pour vos retours.

J'attaquerai ensuite la partie logicielle qui sera normalement beaucoup moins compliquée pour moi.
NB : j'ai prévois d'ajouter une petite fantaisie : en gare centrale, un tirage au sort permettra de connaître la prochaine destination (gare de gauche ou gare de droite).

Cordialement
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 23, 2019, 03:51:30 pm
Au premier coup d’œil, et sauf erreur :
les cantons ne sont pas alimentés, OUT2 est en l'air (au final il faut retrouver OUT1 sur un rail OUT2 sur l'autre, en passant via le détecteur.)
il faudrait les repères du MAX471
il y a un fil rouge et ses points communs qui n'est pas au bon endroit (OUT1 ?) = vers les cantons.
L'Arduino devrait être alimenté coté jack par 8/9V
le schéma est tronqué.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 24, 2019, 07:12:48 am
Bonjour et merci pour ces premières remarques.
J'ai refait mon image pour que l'on voit l'intégralité (en pièce jointe)
J'ai également rajouter les repères sur le MAX471 et le LMD18200

Sur les rails, les sens interdit représentent les coupures
Les optocoupleurs doivent-ils être "brancher" au 15V ou au 5V ?

Mes résistances sont elles les bonnes ? faut -il en rajouter ?

Je me pose aussi la question du max471 : est-il vraiment utile vu que je ne suis pas en DCC ?

Merci d'avance
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le novembre 24, 2019, 09:24:45 am
Bonjour,

Les détecteurs doivent être traversés par le courant d’alimentation des rails (du lmd18200),
Comme indiqué sur cette page :
 http://forum.locoduino.org/index.php?topic=558.msg6730#msg6730 (http://forum.locoduino.org/index.php?topic=558.msg6730#msg6730)

Attention au sens de branchement vu que vous êtes en analogique.

Du côté detection, toutes les entrées de l’Arduino et les anodes des transistors des optos sont reliées au 5v : ca ne va pas détecter ! Et les transistors des optos vont cramer à la première detection. Et l’Arduino aussi.

Et comme interface utilisateur, hormis la commande par encodeur, je ne vois pas comment l’opérateur peut voir ce qu’il fait (pas d’afficheur ni de leds !) et à quoi sert exactement l’encodeur (vitesse évidemment et direction ?) et comment faire la configuration : il y a encore plus de paramètres à configurer que dans mon projet !!!

Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 24, 2019, 11:20:02 am
Merci beaucoup...
J'ai bien fait de vous interroger.
J'ai, sur vos conseils, modifié mon schéma d'alimentation.
J'en a profité pour diminuer le nombre d'information (le nombre de détecteur) pour que ce soit plus lisible.
Vous le trouverez en pièce jointe.
Pouvez vous me dire si cette fois c'est juste ?
Si il y a une erreur, pouvez vous m'indiquer comment la corriger ?

Pour répondre à vos questions :
- le coté bouton poussoir de l'encodeur servira de "marche/arrêt"
- l'encodeur en lui même servira pour régler la vitesse de croisière.

Et c'est tout !

Le but est vraiment de faire quelque chose d'intégralement programmée par "logiciel". C'est pour cela qu'il n'y a pas de DEL car il n'y aura pas de poste opérateur.
Pour rappel c'est un petit train qui se ballade dans un village de noel.

Merci pour vos conseils
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 24, 2019, 11:33:37 am
Pas vraiment, vous soumettez les détecteurs directement à la tension de voie ! Or il faut que le courant de la locomotive y passe.

Si vous ne modifiez pas la vitesse, codez la en dur, et économisez le codeur en le remplaçant par un simple bouton.
Ou par un potentiomètre de 10Kohm sur une entrée analogique, c'est plus simple à mettre en œuvre, voir dans les exemples.
Ou en encore par un couple de bouton poussoir +/-.

Le MAX471 est utile pour protéger des court-circuits, mais vous pouvez limiter le courant au niveau de l'alimentation à 3A ou moins  pour le LMD18200.

Je vous propose le schéma joint, Dominique vérifiera.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Pierre59 le novembre 24, 2019, 11:43:30 am
Bonjour

Pour les détecteurs il faut une résistance de tirage au 5V (pullup) conformément au schéma suivant.
Cette résistance permet de régler la sensibilité du détecteur, les résistances de pullup de l'Arduino peuvent éventuellement êtres utilisées mais sans possibilité d'ajustage de la sensibilité.

Pierre
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 24, 2019, 12:13:14 pm
Encore merci.
J'ai modifié mon schéma simplifié grâce aux remarques de msport (je le mets en pièce jointe)
J'espère que cette fois ci ce sera bon.

Pour l'histoire de la résistance pull-up, il en faut une par détecteur ou une seule pour l'ensemble suffit ?
Quelle est sa valeur ?

Cordialement
jeff
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Pierre59 le novembre 24, 2019, 01:15:21 pm
Bonjour

Oui il faut une résistance par détecteur, pour détecter des engins moteurs j'utilise des 4700 ohms.
Mais pour détecter des véhicules à essieux graphités il faut plus.

Pierre
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 24, 2019, 03:41:40 pm
Re...
Je viens de rajouter mes résistances pull-up sur mon schéma "simplifié" (en pièce jointe).
Pouvez vous me dire si j'ai encore fait une bétise ?
J'ai peur que la liaison au 5V ne soit pas bonne.

Merci d'avance
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 24, 2019, 04:16:49 pm
OK pour le schéma.
Je pense que la question concerne les résistances (des optos) qui sont rappelées au +5V par l'Arduino par environ 10Kohm interne quand on les prévoit :
voir la référence de l'Arduino :
https://www.arduino.cc/reference/en/language/functions/digital-io/pinmode/
et qui se déclare avec :
  pinMode(5, INPUT_PULLUP);
Donc rien à mettre en externe.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Pierre59 le novembre 24, 2019, 05:00:52 pm
Il me semble que que les pullup, c'est plutôt de l'ordre de 35K pour un UNO.

Pierre
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 24, 2019, 05:42:39 pm
Re..
Le documentation officielle d'arduino (https://www.arduino.cc/en/Tutorial/DigitalPins (https://www.arduino.cc/en/Tutorial/DigitalPins)), il est écrit que ces résistances font entre 20kohms et 50 kohms.
Pour avoir une valeur précise, il faut consulter la datasheet.

Encore merci
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 24, 2019, 06:40:42 pm
C'était effectivement très environ.
Une mesure sur un montage avec un Nano m'a donné 40 Kohms par calcul.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 25, 2019, 10:43:16 am
Bonjour
Une autre question de "néophyte" (qui ne veut pas tout faire cramer).
Quelle section de fil dois-je employer :
- pour relier l'optocoupleur au rail ?
- pour relier le lmd18200 à l'optocoupleur ?
- pour relier le lmd18200 au rail ?

Si je voulais faire en sorte que ce soir "démontable", est-il possible d'utiliser des cosses males / femelles entre les optocoupleurs et les rails ?

Merci d'avance pour vos réponses.
Cordialement
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 25, 2019, 11:06:23 am
Chacun a ses habitudes ...
Quand on voit la section des fils des décodeurs, c'est que ça ne doit pas être critique (en tout cas pour de petites longueurs).
J'utilise du 24AWG silicone du fait d'achats sur Aliexpress ou eBay. (bien souple et résistant à la chaleur)
Et je fabrique mes connecteurs en retaillant des barrettes 2.54 et en isolant avec de la gaine thermorétractable.
https://www.ebay.fr/itm/5Pair-Male-Female-40pin-2-54mm-Header-Socket-Row-Strip-PCB-Connector/173401733427

Mais il vaut mieux aller faire un tour sur les forums  spécialisés pour prendre des idées.

Titre: Re : Va et vient avec gare centrale voie unique
Posté par: CATPLUS le novembre 25, 2019, 07:08:00 pm
Bonsoir

A relire

http://forum.locoduino.org/index.php?topic=356.0

http://teamtrack.soforums.com/t737-DCC-CIRCUIT-ELECTRIQUE.htm
http://teamtrack.soforums.com/t273-CABLAGE-EN-GENERAL.htm
http://teamtrack.soforums.com/t240-INSTALLATION-COMMANDE-DIGITRAX-AVEC-CENTRALE-ET-BOOSTER.htm

Bonne soirée
Cordialement
Marcel


Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 26, 2019, 06:47:01 pm
Bonsoir.
Je continue sur ma liste de course....

Puis je remplacer
- le lmd18200 par le OKY3195 : https://www.tme.eu/fr/details/oky3195/commandes-de-moteurs-modulaires/okystar/ (https://www.tme.eu/fr/details/oky3195/commandes-de-moteurs-modulaires/okystar/)
- le max471 par le oky 3319 : https://www.tme.eu/fr/katalog/?search=oky3319&cleanParameters=1 (https://www.tme.eu/fr/katalog/?search=oky3319&cleanParameters=1)

J'ai en effet du mal à trouver ces deux plaques sur un seul et même site (et qui livre dans un temps raisonnable)

Merci d'avance pour les réponses
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 26, 2019, 07:05:44 pm
Ces références sont celles de OKYSTAR qui met en œuvre des composants connus.

Le OKY3195 utilise un L298N qui est le circuit utilisé dans le shield moteur Arduino (2A) et permet de créer une base station DCC simplissime.
Mais le module peut être utilisé en PWM sans difficulté en lien avec un Arduino en laissant de nombreuses broches disponibles sur l'Arduino.

Le OKY3319 cache bien son jeu, mais je parie qu'il utilise un MAX471.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 26, 2019, 08:17:23 pm
Tout juste ...
Je viens de lire le détail sur le site officiel du constructeur :
https://okystar.com/product-item/voltage-and-current-sensor-consume-current-voltage-load-detection-module-oky3319/ (https://okystar.com/product-item/voltage-and-current-sensor-consume-current-voltage-load-detection-module-oky3319/)
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le novembre 28, 2019, 04:18:44 am
Bonjour.
Je continue mon projet... petit à petit.
Je viens de réaliser le modèle du montage avec fritzing (en pièce jointe)
Les "fils" ochre correspondent à des soudure par dessous.
Les fils rose sont des "vrai".
Pouvez vous me dire si cela semble correcte ?
(Il ne faut pas prêter attention aux valeurs des résistances de la partie basse)

Merci beaucoup pour tous votre aide.
cordialement
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le novembre 28, 2019, 09:36:58 am
Les pull-up coté Arduino ne servent à rien : internes (d'ailleurs pas 22 ohms)
Il faut faire figurer le retour GND et les OUT1/OUT2
je n'ai pas tout vérifié.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 09, 2019, 06:42:33 pm
Bonsoir.
Je continue mon projet.
J'aimerai juste testé mes détecteurs de courant (pour vérifier si mes soudures sont bonnes).
Comme je viens de griller mon max471 (ou OKY 3319) et qu'il va me falloir un peu de temps avant d'en recevoir un nouveau, je me permets de vous demander si je peux utiliser le schéma joint pour effectuer ces tests sans risque de tout griller (une nouvelle fois :) )
Merci d'avance pour vos réponses.
jeff22150
Titre: Re : Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 09, 2019, 08:26:45 pm

ce sera bon !


pour le message cité.

Mais ici la résistance de pullup externe (qui ne figure pas) manque entre le 5V et l'entrée de l'Arduino = grillage de l'entrée.
Elle n'est utile qu'en cas de fausses détections sinon elle ne sert à rien dans la mesure où on cherche en général à avoir la meilleure sensibilité.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le décembre 09, 2019, 09:38:48 pm
Effectivement, il ne faut pas relier la pin 13 au 5v mais la déclarer INPUT-PULLUP.

A part cela, au moindre court-circuit, tout grille ! Il faut une limitation de courant entre l’alim et les rails, d’où la nécessité du Max471 et du soft adéquate.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 10, 2019, 06:03:53 am
Bonjour.
Merci à msport et dominique.
Si j'ai compris,
- je n'ai pas besoin de l'alimentation 5V : je supprime cette liaison rouge.
- je déclare le pin13 avec pinMonde(13,INPUT_PULLUP)

Ca donne donc le schéma joint (j'aime bien le visuel)

Pour le fait de tout griller j'en suis bien conscient mais mon premier max471 ayant grillé, il me faut attendre la livraison d'un autre.

cordialement
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 10, 2019, 12:51:20 pm
Pour des tests, on pourrait se passer du MAX471, surtout qu'avec une seule locomotive on peut utiliser une toute petite alimentation de 1 A à 2 A qui se chargera de limiter le courant en dessous des 3A du LMD18200. En évitant quand même d'insister en cas de court-circuit.
On peut par ailleurs utiliser un petit fusible (ex : en verre) à défaut d'être patient.
De toute manière, en cas d'erreur de branchement ou de fausse manipulation, les 3A du MAX471 sont capables de rendre muet n'importe quel composant électronique dont l'Arduino.
Ce n'est pas une assurance tout risque.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 17, 2019, 06:30:41 am
Bonjour.
Je continue sur mon projet... j'ai presque fini les soudures de tous les détecteurs (toute le partie ltv824 avec diodes...)
Je voudrai maintenant tester chacun de ces détecteurs.

Puis-je juste mettre une pile 9V  (voire l'alim du train) à la place des rails et de l'autre coté mon arduino (branché à mon ordi) avec le progamme (très simple) suivant :
int val = LOW;

void setup() {
pinMode(12,INPUT_PULLUP);
pinMode(13,OUTPUTT);
}

void loop(){
if (digitalRead(12) == HIGH)
{
     val = LOW;
}
else
{
     val == HIGH;
}

digitalWrite(13, val);
}
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le décembre 17, 2019, 09:28:07 am
Il y aura une erreur à la vérification (compilation).
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 17, 2019, 09:38:22 am
effectivement il y avait quelques fautes de frappe.
Voici le code corrigé
int val = LOW;

void setup() {
pinMode(12,INPUT_PULLUP);
pinMode(13,OUTPUT);
}

void loop(){
if (digitalRead(12) == HIGH)
{     val = LOW; }
else
{     val = HIGH; }
digitalWrite(13,val);

}

Mon inquiétude était plutôt du coté rail : est-ce que simuler le train par une pile 9V est une bonne idée ou pas ?
Merci beaucoup pour votre aide.

jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le décembre 17, 2019, 10:33:12 am
essayez donc !
je ne vois pas votre câblage et il faut bien apprendre par vous-même par essais-erreurs.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 17, 2019, 10:48:04 am
Il faut simuler le train par une résistance ( 470 ohms - 2200 ohms par exemple )

Mettre la pile pour alimenter les rails (dernier schéma ->19V, en ne connectant rien d'autre)
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 18, 2019, 07:34:21 pm
Hourra !!!

Bonsoir à tous.
Ce petit message pour vous remercier car grâce à vous, tous mes détecteurs de consommation fonctionnent ! (après quelques résolutions de soudure mal faites quand même !)

Voici en photo ma plaque de prototypage.
L'encodeur est lui aussi pret et fonctionnel.
Il ne me reste plus qu'à mettre le capteur de courant (j'ai d'ailleurs changé pour une ACS712 au lieu du max471, on verra bien) et le L298 en route.
Je pense que le plus dure est fait.... mais on verra bien, j'aurai sans doute encore besoin de vous.
A+
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le décembre 18, 2019, 07:39:27 pm
bravo !
Titre: Re : Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 18, 2019, 09:34:40 pm
... j'ai d'ailleurs changé pour une ACS712 au lieu du max471 ...


Félicitations pour ce premier succès !

Au sujet du MAX471, les derniers que j'ai commandé en module ou en circuit sont tous défectueux * (je pense que le marquage est erroné).
Quand je vois que TME n'en a plus, j'imagine que les stocks de ce circuit déclaré obsolète sont épuisés et que ce sont les rebuts qui restent en vente. L'ACS712 le remplace sans problème mais le brochage est du circuit est différent.

Si quelqu'un connait une source fiable pour la version CMS (SMD) ...

(*) Mais aucun n'a explosé.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 20, 2019, 06:50:29 am
Bonjour.
Je suis désolé de faire appel à vous mais impossible de récupérer l'intensité à partir de mon nouvel ACS712.
À ce que j'ai compris, ce dernier se monte en série dans le montage.

J'ai donc réalisé le montage en pièce jointe.
Quand je mets mon alimentation des rails en route, pas de problème mon train roule.
Par contre, l'intensité affichée sur mon moniteur série est toujours et irrémédiablement égale à 0.

j'essaie d'utiliser cette bibliothèque pour ce capteur : https://github.com/muratdemirtas/ACS712-arduino-1 (https://github.com/muratdemirtas/ACS712-arduino-1)

J'utilise se sketch (qui provient directement d'un exemple de la bibliothèque)
#include "ACS712.h"

/*
  This example shows how to measure DC current
*/

// We have 30 amps version sensor connected to A1 pin of arduino
// Replace with your version if necessary
ACS712 sensor(ACS712_05B, A3);

void setup() {
  Serial.begin(9600);

  // This method calibrates zero point of sensor,
  // It is not necessary, but may positively affect the accuracy
  // Ensure that no current flows through the sensor at this moment
  sensor.calibrate();
}

void loop() {
  // Get current from sensor
  float I = sensor.getCurrentDC();
 
  // Send it to serial
  Serial.println(String("I = ") + I + " A");
 
  // Wait one second before the new cycle
  delay(1000);
}

Si quelqu'un voulait bien m'aider (encore) ce serait super.
Merci d'avance
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: Dominique le décembre 20, 2019, 08:33:36 am
Quel est ton modèle d'ACS712 ?
Ce circuit sert à mesurer des intensités de 20 ou 30 A
donc la lecture coté Arduino sera une valeur proche de 0 (zéro) du fait des faibles intensités sur ton réseau.
La mise au carré de cette lecture et le calcul de la racine carrée va encore accentuer cela.

DCC++ s'occupe de cette mesure dans l'onglet "currentMonitor.cpp"
current=analogRead(pin)*CURRENT_SAMPLE_SMOOTHING+current*(1.0-CURRENT_SAMPLE_SMOOTHING);        // compute new exponentially-smoothed currentTu peux t'en servir pour tester.
Mais il vaudrait mieux utiliser un Max471.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 20, 2019, 10:51:55 am
Merci pour ta réponse.
J'ai cette version : https://www.vs-elec.fr/fr/electricite/2185-robotdyn-capteur-de-courant-acs712-5a-3665662014528.html (https://www.vs-elec.fr/fr/electricite/2185-robotdyn-capteur-de-courant-acs712-5a-3665662014528.html)

Il est prévu pour 5A (mais il est vrai qu'il existe le même pour 20 et 30 A).
Mon dernier max471 a cramé et je n'ai pas trouvé de livraison dans des temps "raisonnable" de nouveaux max471. (en effet, tout ce que je fais est normalement pour animer un train de noel)

Pour vous le schéma de montage est bon ?
A quelle valeur d'intensité dois-je m'attendre ?
Merci encore pour votre aide
jeff22150
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 20, 2019, 12:24:28 pm
l'intensité affichée sur mon moniteur série est toujours et irrémédiablement égale à 0.

Normal, si il n'y rien sur les rails ... il n'y a pas de courant à mesurer.

Comme i = U / R, avec 470 ohms on devrait avoir environ 40 mA ...
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 20, 2019, 03:32:58 pm
Le truc j'ai fait testé avec le train sur les rails et en fonctionnement !
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 20, 2019, 05:48:26 pm
  sensor.calibrate();

// Cette méthode calibre le point zéro du capteur,

// Assurez-vous qu'aucun courant ne traverse le capteur à ce moment


On peut comprendre (?) que le capteur est étalonné pour indiquer zéro avec le courant de la loco posée sur les rails à ce moment là.

Comme il est dit  // Ce n'est pas nécessaire, ... Faire un essai en le supprimant.

Mais en fait, la bibliothèque de l'ACS712 n'est pas nécessaire, il suffit de lire la tension sur la broche A3,
L' ACS712 5A délivre 0,75V V / A
Le MAX471 0,5 mA / A soit 1V/A avec la résistance de 2K standard.

Il y a une tension à vide, la Base Station mesure la variation par rapport à ce talon, il suffit de le lire pendant le setup.

Edit tardif : la sensibilité est de 185mV /A et la tension à vide est de VCC / 2.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 24, 2019, 07:23:10 am
Bonjour
CA MARCHE !!!!

Juste à temps pour le réveillon, mon train fonctionne presque comme je le voulais...
Je n'arrive pas à modifier la vitesse de croisière mais je reverrai cela début janvier (la fin de l'année est très chargée)
Pour ceux qui le souhaite, voici mon programme arduino
#include <Encoder.h>
#include <ACS712.h>

//la représentation physique du rail
// G -- 1 -- 2 -- 3 -- C -- 4 -- 5 -- 6 -- 7 -- D

//Les pins
int pinZG = A0; /*détecteur gare G*/
int pinZ1 = A5; /*détecteur zone 1*/
int pinZ2 = 12; /*détecteur zone 2*/
int pinZ3 = 11; /*détecteur zone 3*/
int pinZC = A1; /*détecteur gare C*/
int pinZ4 = 10; /*détecteur zone 4*/
int pinZ5 = 9;  /*détecteur zone 5*/
int pinZ6 = 8;  /*détecteur zone 6*/
int pinZ7 = 7;  /*détecteur zone 7*/
int pinZD = A2; /*détecteur gare D*/
int pinACS = A3; /*capteur de courant*/
int pinEncP = 2; /*bouton poussoir de l'encodeur - AVEC UNE INTERRUPTION */
int pinEncS = 1; /*encodeur sens de rotation*/
int pinEncR = 3; /*encodeur rotation - AVEC UNE INTERRUPTION */
int pinPWM = 6; /*enB du OKY3195*/
int pinS1 = 5; /*sens direct du courant OKY3195 */ /*ATENTION : ne jamais avoir pinS1 et pinS2 à HIGH en même temps*/
int pinS2 = 4; /*sens opposé du courant OKY3195 */ /*ATENTION : ne jamais avoir pinS1 et pinS2 à HIGH en même temps*/
int pinSeed = A4; /*pour le grain de folie aléatoire*/
Encoder myEnc(pinEncS,pinEncR); /*déclaration de l'encodeur pour la bibliothèque Encoder.h*/
ACS712 sensor(ACS712_05B, pinACS); /* declaration du capteur de courant*/


//Les énumérations
enum zones {gareG,zone1,zone2,zone3,gareC,zone4,zone5,zone6,zone7,gareD}; /*les différentes zones (cantons)*/
enum vitesses {STOP, LENT, ACC, RAPIDE, RAL}; /*les différentes vitesses possibles*/
enum trajets {GC,CG,DC,CD,GD,DG}; /*Les différents trajets possibles (GC = de G à C)*/


/*les différentes allures en fonction des trajets*/
/*                            G       1      2        3      C      4      5      6      7      D      */
const int allures[][10] =   {{LENT , ACC  , RAPIDE , RAL  , STOP , STOP , STOP , STOP  , STOP , STOP},  /*le trajet GC*/
                            {STOP , RAL  , RAPIDE , ACC  , LENT , STOP , STOP , STOP  , STOP , STOP},  /*le trajet CG*/
                            {STOP , STOP , STOP   , STOP , STOP , LENT , RAL  , RAPIDE , ACC , LENT},  /*le trajet DC*/
                            {STOP , STOP , STOP   , STOP , LENT , LENT , ACC  , RAPIDE , RAL , STOP},  /*le trajet CD*/
                            {LENT , ACC  , RAPIDE , RAL  , LENT , LENT , ACC  , RAPIDE , RAL , STOP},  /*le trajet GD*/
                            {STOP , RAL  , RAPIDE , ACC  , LENT , LENT , RAL  , RAPIDE , ACC , LENT}}; /*le trajet DG*/

const int sens[6] = {1,-1,-1,1,1,-1}; /* les sens de trajet : 1 = de G vers D ; -1 = de D vers G */

//les variables
long maxSpeed = 200; /* la vitesse maximale (entre 0 et 250 en PWM) que pourra atteindre le train dans les phases RAPIDE*/
const long minSpeed = 100; /*la vitesse du train dans les phases LENT et au redémarrage*/
long theSpeed;
long stepSpeed =20;

boolean isON = true; /* pour le bouton poussoir : isON = true -> le train a le droit de rouler ; isON = false -> arret d'urgence (PWM à 0)*/

const unsigned long antiRebond = 3; /*délai pour l'anti rebond du bouton poussoir */

int currentTrip;
boolean endTrip;

int currentZone =-999;

//Les fonctions
/*pour changer l'aléatoire de random*/
byte getSeed()
{
  byte seed = 0;
  byte i = 8;
  while (i > 0)
  {
    byte firstBit = analogRead(pinSeed) & 0x01;
    byte secondBit = analogRead(pinSeed) & 0x01;
    if (firstBit != secondBit)
    {
      seed = (seed << 1) | firstBit;
      i--;
    }
  }
  return seed;
}

/*pour savoir où est le train*/
int WhereIsMyTrain(int theZone)
{
  switch(theZone)
  {
    case gareG:
      if (digitalRead(pinZ1)==0) {return zone1;}
      else {return currentZone;}
      break;
    case zone1:
      if (digitalRead(pinZG)==0) {return gareG;}
      else if(digitalRead(pinZ2)==0) {return zone2;}
      else {return currentZone;}
      break;
    case zone2:
      if (digitalRead(pinZ1)==0) {return zone1;}
      else if(digitalRead(pinZ3)==0) {return zone3;}
      else {return currentZone;}
      break;
    case zone3:
      if (digitalRead(pinZ2)==0) {return zone2;}
      else if(digitalRead(pinZC)==0) {return gareC;}
      else {return currentZone;}
      break;
    case gareC:
      if (digitalRead(pinZ3)==0) {return zone3;}
      else if(digitalRead(pinZ4)==0) {return zone4;}
      else {return currentZone;}
      break;
    case zone4:
      if (digitalRead(pinZC)==0) {return gareC;}
      else if(digitalRead(pinZ5)==0) {return zone5;}
      else {return currentZone;}
      break;
    case zone5:
      if (digitalRead(pinZ4)==0) {return zone4;}
      else if(digitalRead(pinZ6)==0) {return zone6;}
      else {return currentZone;}
      break;
    case zone6:
      if (digitalRead(pinZ5)==0) {return zone5;}
      else if(digitalRead(pinZ7)==0) {return zone7;}
      else {return currentZone;}
      break;
    case zone7:
    if (digitalRead(pinZ6)==0) {return zone6;}
      else if(digitalRead(pinZD)==0) {return gareD;}
      else {return currentZone;}
      break;
    case gareD:
      if (digitalRead(pinZ7)==0) {return zone7;}
      else {return currentZone;}
      break; 
    default:
      int firstDetection = -1;
      while(firstDetection == -1)
      {
        if(digitalRead(pinZG)==0) {firstDetection = gareG;}
        else if(digitalRead(pinZ1)==0) {firstDetection = zone1;}
        else if(digitalRead(pinZ2)==0) {firstDetection = zone2;}
        else if(digitalRead(pinZ3)==0) {firstDetection = zone3;}
        else if(digitalRead(pinZC)==0) {firstDetection = gareC;}
        else if(digitalRead(pinZ4)==0) {firstDetection = zone4;}
        else if(digitalRead(pinZ5)==0) {firstDetection = zone5;}
        else if(digitalRead(pinZ6)==0) {firstDetection = zone6;}
        else if(digitalRead(pinZ7)==0) {firstDetection = zone7;}
        else if(digitalRead(pinZD)==0) {firstDetection = gareD;}
      }
      return firstDetection;
  }
}

/*choix du trajet suivant*/
int NextTrip(int CurrentTrip)
{
  int newTrip;
  //choix aléatoire d'un nombre
  int choix = random(0,2);
  //choix du nouveau trajet
  if (CurrentTrip == GC || CurrentTrip == DC)
  {
    if (choix == 0) {newTrip = CG;}
    else {newTrip = CD;}
  }
  else if (CurrentTrip == CG || CurrentTrip == DG)
  {
    if (choix == 0) {newTrip = GC;}
    else {newTrip = GD;}
  }
  else if (CurrentTrip == CD || CurrentTrip == GD)
  {
    if (choix == 0) {newTrip = DC;}
    else {newTrip = DG;}
  }

  if (sens[CurrentTrip]!=sens[newTrip])
  {
    /*attention il est impossible d'avoir les deux à HIGH en même temps*/
    /* il faut inverser les deux*/
    if (digitalRead(pinS1)==HIGH)
    {
      digitalWrite(pinS1,LOW);
      digitalWrite(pinS2,HIGH);
    }
    else /*si ce n'est pas S1 à HIGH, c'est forcément S2*/
    {
      digitalWrite(pinS2,LOW);
      digitalWrite(pinS1,HIGH);
    }
  }
  return newTrip;
}


void setup() {
  // initialisation des pins de l'arduino
  pinMode(pinZG,INPUT_PULLUP);
  pinMode(pinZ1,INPUT_PULLUP);
  pinMode(pinZ2,INPUT_PULLUP);
  pinMode(pinZ3,INPUT_PULLUP);
  pinMode(pinZC,INPUT_PULLUP);
  pinMode(pinZ4,INPUT_PULLUP);
  pinMode(pinZ5,INPUT_PULLUP);
  pinMode(pinZ6,INPUT_PULLUP);
  pinMode(pinZ7,INPUT_PULLUP);
  pinMode(pinZD,INPUT_PULLUP);
  pinMode(pinACS,INPUT);
  pinMode(pinEncP,INPUT_PULLUP);
  //pinMode(pinEncS,INPUT); dans la définition de l'encodeur ligne 21
  //pinMode(pinEncR,INPUT); dans la définition de l'encodeur ligne 21
  pinMode(pinPWM,OUTPUT);
  pinMode(pinS1,OUTPUT);
  pinMode(pinS2,OUTPUT);
  pinMode(pinSeed,INPUT);

  randomSeed(getSeed()); /*pour l'aléatoire*/

  endTrip = false;
  currentTrip = GD;
  digitalWrite(pinS2,HIGH);
  digitalWrite(pinS1,LOW);
  theSpeed = minSpeed;
 
  //démarrage du train mais à PWM insuffisant pour faire avancer le train
  analogWrite(pinPWM,80);

  //détection de la zone où se situe le train
  currentZone = WhereIsMyTrain(currentZone);
  Serial.println(currentZone);
  analogWrite(pinPWM,theSpeed);
}

void loop() {

  if(endTrip == true) //le trajet est-il terminée
  {
    currentTrip = NextTrip(currentTrip); //choisir un nouveau trajet
    endTrip = false;
    delay(3000); //attendre trois secondes avant le redémarrage
  }
 
  currentZone = WhereIsMyTrain(currentZone);
 
  switch (allures[currentTrip][currentZone])
  {
    case LENT:
      if (theSpeed != minSpeed && isON == true) {theSpeed = minSpeed;}
      break;
    case RAPIDE:
      if (theSpeed != maxSpeed && isON == true) {theSpeed = maxSpeed;}
      break;
    case ACC:
      if ((theSpeed+stepSpeed)<=maxSpeed && isON == true) {theSpeed = theSpeed+stepSpeed;}
      break;
    case RAL:
      if ((theSpeed-stepSpeed)>=minSpeed && isON == true) {theSpeed = theSpeed-stepSpeed;}
      break;
    case STOP: /*le trajet est terminé*/
      theSpeed = 0;
      endTrip = true;
  }
  analogWrite(pinPWM,theSpeed);
 
}
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: msport le décembre 24, 2019, 10:47:50 am
Félicitations, et merci pour le partage.
Titre: Re : Va et vient avec gare centrale voie unique
Posté par: jeff22150 le décembre 24, 2019, 11:27:36 am
Pour ce qui est du partage, je vous ferai un retour plus approfondi début janvier avec tout le cablage...
Bonne fêtes de fin d'année.