Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Dim 5 Fév 2017 - 12:53
Bonjour, voici ce que je propose pour les gares :
Gestion des gares :
Gare « manuelle » : Le système permet la gestion de voies de gare de manière manuelle, si celles-ci restent insérées dans la zone 3 d’un canton. Il suffit d’arrêter le train manuellement, de couper l’alimentation (« + ») de sa voie, de changer les aiguilles, d’alimenter une autre voie, et de libérer le canton concerné pour permettre de reprendre la circulation (Fonction libération), ou de récupérer un train précédemment garé, prenant la place de celui qu’on vient d’arrêter (Fonction récupération). Ces gares manuelles peuvent se trouver sur n’importe quel canton et contenir autant de voies que nécessaire, le programme ne gérant que la sécurité du canton et la mémorisation des trains garés.
Gare « automatisée » : Le système permet de configurer, via le pupitre, des gares automatisées. Elles peuvent être cachées ou visibles (avec gestion d’un feu par voie). Pour cela, il suffit de lui donner le numéro du canton concerné et le nombre de voies contenues dans cette gare. Pour les gares automatisées, il faut que chaque voie contienne les 3 zones du canton, car l’arrêt des trains sera basé sur la présence dans les zones de freinage et d’arrêt. L’arrivée d’un train sur une voie libre, le fera s’arrêter sur cette voie, puis basculera l’alimentation « + » sur la voie suivante, changera les aiguilles, et, si un train est présent sur cette voie, il démarrera, sinon, le système attendra l’arrivée du train suivant. Les gares automatisées peuvent être mise en mode ON ou OFF, permettant ainsi de les utiliser ou de les laisser inactives. Le basculement de l’alimentation et les aiguilles seront commandés par des relais, eux-mêmes pilotés par le système. La lecture de la présence des trains se fera par la même détection que le canton. Cette carte optionnelle (1 carte par gare automatisée) permettra à la gare de contenir jusqu’à 16 voies. Le nombre de gares automatisées maximum est de 8. NOTE : Le système reste limité à 50 trains maximum mémorisés, il ne sera donc possible de stocker que 49 trains (répartis sur un maximum de 8 gares). Exemple : 3 gares automatisées contenant chacune 10 voies, représentent la possibilité de stocker 27 trains (3x9, car il faut laisser une voie de circulation libre dans chaque gare).
Qu'en pensez-vous ?
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Lun 6 Fév 2017 - 18:37
Bonsoir,
reçus ce jour 4 TLC5940, aucun ne fonctionne, ou alors, je ne sais pas... Je perds patience avec ces trucs... Électronicien dans le coin qui veut m'aider ?
DMARRION Membre
Age : 66 Localisation : THEZEY ST MARTIN (54) Nombre de messages : 4342 Date d'inscription : 27/12/2010
Sujet: Re: La gestion des cantons par Arduino !! Lun 6 Fév 2017 - 22:06
Si tu as réussi à faire fonctionner au moins 1 fois le montage, il n'y a pas de raison de le remettre en question. Où as-tu commandé tes TLC5940 ? C'est une boite sérieuse ou pas ? Perso, je commande chez RScomposant ou chez Farnell. Ce n'est peut-être pas les meilleurs prix, mais ça tient la route.
Demain et mercredi, je serai pas mal pris par d'autres obligations, mais si tu veux je peux passer jeudi, je ne suis pas du tout spécialiste de ce genre de composant mais on pourrait jeter un œil ensemble.
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Lun 6 Fév 2017 - 22:31
Je les ai acheté sur la baie en Espagne... J'en avais pris 4 pour avoir de la réserve... Lorsque j'ai mis le premier, il ne fonctionnait que sur 1 des 6 sorties que j'utilisais, et ne chauffait pas du tout. Je l'ai remplacé par un autre pour voir, et celui-là a chauffé immédiatement ! J'ai trouvé un site en anglais où ils disent qu'il y a énormément de précautions à prendre avec ce composant, comme ne pas mettre sous tension ce qui est branché sur les sorties tant que le composant lui-même n'est pas alimenté ! Et plein d'autres choses... Le lien Alors, j'ai mis un 3eme puis un 4eme, qui ont chauffé eux aussi ( et quand je dis chauffé, c'est au point où tu ne poses plus le doigt dessus !!) Alors j'ai tout stoppé, pour chercher une solution dans les méandres des sites d'électronique en english bien sûr !! Pas bcp de solutions ! A part une : se créer ses propres sorties PWM, avec registre 595 classique, commandées par l'horloge interne de l'arduino, en utilisant une interruption... Pas évident avec un programme qui prend 5ms par scrutation !!! Je vais réfléchir... Je te redis pour jeudi, ce serait sympa (y'a peut-être mon père qui peut passer...)
tram47 Membre
Age : 77 Localisation : Lot & Garonne Nombre de messages : 149 Date d'inscription : 14/11/2009
Sujet: Re: La gestion des cantons par Arduino !! Mar 7 Fév 2017 - 11:20
une très bonne adresse en catalogne :
j'y passe tous les deux mois!!!!
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Mar 7 Fév 2017 - 11:44
Bonjour,
J'ai tenté la création de mes propres PWM ! Pour le moment, ça fonctionne...
J'utilise une seule sortie PWM de l'Arduino, configurée en 3900Hz. Je boucle cette sortie vers une entrée digitale (n'importe laquelle). Je place ma sortie PWM à 50% et j'attache une interruption sur l'entrée de la boucle. (ce qui me donne une interruption toutes les 128µs.)
J'utilise un compteur dans cette interruption qui va de 0 à 78 (78x128=environ 10ms) afin d'avoir une fréquence de PWM de 100Hz environ.
Puis, je règle la consigne entre 0 et 78. L'interruption passera la sortie PWM (une sortie digitale classique) à 0 lorsque le compteur dépassera la consigne, et repassera à 1 au reset du compteur.
Je peux utiliser la même interruption pour plusieurs sorties en mettant une boucle. Ce que j'ai fait pour mes 6 cantons.
J'ai poussé le vice en utilisant un registre 74HC595 afin d'éviter d'utiliser 6 sorties de l'Arduino. J'utilise 3 sorties digitales pour commander le registre, qui peut avoir 8 sorties, et qui peut être chaîner (comme les leds des feux ou du TCO)
Le temps de scrutation du programme général a un peu augmenté mais je reste sous les 10ms quoi qu'il arrive...(même avec l'affichage)
J'ai moins de précision qu'avant puisque j'utilise maintenant 78 valeurs au lieu de 255 pour la vitesse, mais, ça fait 15mV par point, ce qui reste raisonnable !
Je vous mets le code de ma fonction interruption pour ceux que ça intéresse :
Code:
/*------------------------------------------------------------------------------------------- * FONCTION PWM *-----------------------------------------------------------------------------------------*/ void pwm(){
//Booléen pour écriture si changement de valeur change=false;
//Incrémentation du compteur compt_pwm++;
//Si compteur=78 if(compt_pwm==NbImpulsions){
//Remise à zéro du compteur compt_pwm=0;
//Boucle pour les cantons for(int i=0;i<NbCantons;i++){
//Si la consigne est >0 et que la sortie est à zéro, alors sortie à 1 et booléen=vrai if(valeurPWM[i]>0 and regis[i]==LOW){ regis[i]=HIGH; change=true; } } }
//Boucle pour les cantons for(int i=0;i<NbCantons;i++){
//Si le compteur > consigne et que la sortie est à 1, alors sortie à 0 et booléen vrai if(compt_pwm>valeurPWM[i] and regis[i]==HIGH){ regis[i]=LOW; change=true; } }
//Si booléen vrai, changement en cours, on écrit les nouvelles valeurs vers le 74HC595 if(change){ digitalWrite(35,LOW); for(int i=NbCantons-1;i>=0;i--){ digitalWrite(37,LOW); digitalWrite(33,regis[i]); digitalWrite(37,HIGH); } digitalWrite(35,HIGH); } }
A+
DMARRION Membre
Age : 66 Localisation : THEZEY ST MARTIN (54) Nombre de messages : 4342 Date d'inscription : 27/12/2010
Sujet: Re: La gestion des cantons par Arduino !! Mar 7 Fév 2017 - 12:32
Ben dis donc, avec toi ça ne traine pas ! Hier soir tu dis que tu vas réfléchir à un truc, et ce midi c'est fait !!! Quand je cogite, c'est en général beaucoup, beaucoup plus long !
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Mar 7 Fév 2017 - 12:39
J'ai eu toute la nuit pour réfléchir !!! Et quand j'ai un truc en tête en général, je ne suis pas très patient...
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Mar 7 Fév 2017 - 17:32
Petit schéma de mon futur plateau de test avec 12 cantons, une gare manuelle et une gare automatisée (2 m x 2 m):
Echelle : 1 carreau = 5 cm Longueur mini canton : 2 m (normalement) Diamètre mini = 70 cm (rayon 35 cm) Circulation région Alsace/Moselle bien évidemment !
PtitLouis58 Membre
Age : 70 Localisation : Fourchambault 58 Nombre de messages : 802 Date d'inscription : 08/07/2008
Sujet: Re: La gestion des cantons par Arduino !! Mer 8 Fév 2017 - 10:12
[quote (y'a peut-être mon père qui peut passer...)[/quote] Oui,oui je confirme
DMARRION Membre
Age : 66 Localisation : THEZEY ST MARTIN (54) Nombre de messages : 4342 Date d'inscription : 27/12/2010
Sujet: Re: La gestion des cantons par Arduino !! Mer 8 Fév 2017 - 10:39
PtitLouis58 a écrit:
[quote (y'a peut-être mon père qui peut passer...)
Oui,oui je confirme[/quote] Alors à jeudi !
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Mer 8 Fév 2017 - 10:42
Vous avez du mal avec les citations aujourd'hui !! Cot cot !!
Murphy Membre
Age : 79 Localisation : Doubs, Montbéliard Nombre de messages : 3232 Date d'inscription : 20/08/2007
Sujet: Re: La gestion des cantons par Arduino !! Mer 8 Fév 2017 - 13:29
nicozea57 a écrit:
Petit schéma de mon futur plateau de test avec 12 cantons, une gare manuelle et une gare automatisée (2 m x 2 m):
Echelle : 1 carreau = 5 cm Longueur mini canton : 2 m (normalement) Diamètre mini = 70 cm (rayon 35 cm) Circulation région Alsace/Moselle bien évidemment !
C'est le pays où les trains roulent à droite
J'aurai bien vu une voie d'évitement dans les boucles de retournement.
sierramike Membre
Age : 44 Localisation : 67000 STRASBOURG Nombre de messages : 4563 Date d'inscription : 29/10/2015
Sujet: Re: La gestion des cantons par Arduino !! Mer 8 Fév 2017 - 20:16
Ca va finir par être un vrai réseau à force d'agrandir tes plateaux d'essais
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Mer 8 Fév 2017 - 23:10
sierramike a écrit:
Ca va finir par être un vrai réseau à force d'agrandir tes plateaux d'essais
Oui !! Un beau réseau d'expo pour montrer comme mon système est génial !!!!
Murphy a écrit:
J'aurai bien vu une voie d'évitement dans les boucles de retournement.
Pourquoi pas, mais ça serait un doublon avec ma gare automatisée ! Si ça marche pour 1 gare, ça marchera pour "n" gares !
Sinon, j'ai reçu mon module Bluetooth ce matin, très facile à brancher et à mettre en oeuvre. La création de l'application Android est en bonne voie ! Une petite vidéo, dès que je peux !! (car je trouve ça GENIAL !! )
Mais, il faudra que je filme avec mon téléphone, l'application sera sur la tablette...Je n'aurai pas assez de 2 mains !!
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 8:35
nicozea57 a écrit:
Bonjour,
J'ai tenté la création de mes propres PWM ! Pour le moment, ça fonctionne...
J'utilise une seule sortie PWM de l'Arduino, configurée en 3900Hz. Je boucle cette sortie vers une entrée digitale (n'importe laquelle). Je place ma sortie PWM à 50% et j'attache une interruption sur l'entrée de la boucle. (ce qui me donne une interruption toutes les 128µs.)
Bonjour,
C'est un peu tordu de faire comme ça :-)
Tu peux utiliser un timer pour générer ton interruption toutes les 128µs
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 8:47
Merci jlb pour cette histoire de timer, je vais regarder ça de plus près...
Pour la fréquence, j'avais essayé d'autres fréquences mais les résultats n'étaient pas bons (voir plus haut dans le fil)... Toutes les machines que j'ai testé pour le moment ne chauffent pas spécialement ! Je connais très bien cet article, je l'ai lu au moins 6 fois déjà !
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 9:14
C'est ton matériel, tu fais comme tu le sens Après entre test quelques minutes et exploitation quelques heures, ce n'est pas la même chose.
Pour générer des PWM sans consommer des sorties, tu peux aussi utiliser un TLC5940. C'est un composant qui gère 16 PWM et qui est connecté en SPI.
On le trouve sur eBay pour environ 1 à 2€ pièce selon la quantité.
SavignyExpress Membre
Age : 61 Localisation : yyy Nombre de messages : 2043 Date d'inscription : 10/10/2010
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 11:57
jlb a écrit:
Pour générer des PWM sans consommer des sorties, tu peux aussi utiliser un TLC5940. C'est un composant qui gère 16 PWM et qui est connecté en SPI...
Je crois que Michael a acquis pas mal d'expérience avec le TLC5940 et son échauffement, raison pour laquelle il investigue des solutions alternatives.
jlb Membre
Age : 60 Localisation : Ici Nombre de messages : 1544 Date d'inscription : 31/12/2011
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 12:07
J'avoue j'ai pas tout lu. Mais une chose est sûre, on ne peut pas piloter un moteur directement avec la sortie d'une TLC5940, il faut un étage de puissance
AH oui c'est juste au dessus.
Pour ma part, j'en ai quelques un qui fonctionnent parfaitement.
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 12:20
Qui fonctionne parfaitement ? Je suis preneur de quelques explications ou schéma éventuels !!! J'avais mis un transistor sur la sortie avec une résistance de tirage de 1500Ohms... Mais, pas moyen de l'utiliser correctement !!!
christ71 Membre
Age : 71 Localisation : bourgogne Nombre de messages : 453 Date d'inscription : 30/10/2013
Sujet: Re: La gestion des cantons par Arduino !! Jeu 9 Fév 2017 - 17:27
bonjour, Sur le réseau du club du Creusot (et sur mon réseau perso avant passage au digital), j'ai mis en place une commande PWM avec une fréquence d'environ 100hz il y a maintenant plus de 15 ans. Ce réseau a fait au moins une cinquantaine d'expos avec des journées de 8/10H non stop. Nous n'avons jamais eu de problème d'échauffement d'un moteur de loco, que ce soit sur du matériel ancien ou récent.
Après peut-être que nous avons eu de la chance d'avoir une fréquence particulière ou des conditions de fonctionnement spécifiques ??
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Ven 10 Fév 2017 - 14:15
Bonjour à tous !
Petite vidéo pour vous montrer l'utilisation de la tablette Android pour la commande d'un réseau !! (Ne faites pas attention à ma voix, je suis enrhumé !)
nicozea57 Membre
Age : 49 Localisation : goin Nombre de messages : 579 Date d'inscription : 03/08/2016
Sujet: Re: La gestion des cantons par Arduino !! Sam 11 Fév 2017 - 17:30
Bonjour,
Qui, parmi vous, a déjà utilisé ce composant : 74HC259 ?
Il m'a l'air très intéressant pour gérer les sorties PWM, en effet, ceux sont des sorties adressables et mémorisables... On choisit quelle sortie on veut modifier, on la modifie et elle reste dans cet état jusqu'à un "reset" ou un nouveau changement...
Je pense que cela peut être beaucoup plus rapide à gérer dans le programme que les 74HC595 qui demande à ce qu'on ré-écrive toutes les valeurs, même si on ne doit en changer qu'une seule...
Je vais en commander et faire des tests car je pense que cela peut être une solution alternative au TLC5940, et en plus, bien moins gourmande en ressources processeur !!
8 de ces composants, couplés à un décodeur 8 bits (74HC138 par exemple), me permettraient de gérer "facilement" 64 sorties en PWM..
J'ose même imaginer les utiliser aussi pour la gestion des feux et du TCO !!
Juste un petit exemple de calcul pour les 74HC595 actuellement : Pour mes 6 feux (18 leds), il faut 3 registres, même si je ne veux changer qu'un feu (soit 2 leds à modifier), je dois envoyer les 18 informations à la suite. En sachant qu'il faut valider les informations par une autre entrée qui passe d'abord à l'état bas puis à l'état haut, cela fait 3 x 18 écritures à réaliser. La fonction "digitalWrite" sur Arduino prend 5µs chacune, j'utilise donc 270µs pour changer la couleur d'un seul feu !! Je vous laisse imaginer le temps nécessaire si le réseau compte 20 ou 40 cantons !!!!
DMARRION Membre
Age : 66 Localisation : THEZEY ST MARTIN (54) Nombre de messages : 4342 Date d'inscription : 27/12/2010
Sujet: Re: La gestion des cantons par Arduino !! Dim 12 Fév 2017 - 9:37
Bonjour Michael
J'ai jeté un coup d'œil sur la doc du 74HC259. Je vois bien comment tu pourrais l'utiliser pour les LED des signaux et du TCO, en revanche je ne vois pas du tout pour les sorties PWM.
Ce circuit est un latch (bascule D) combiné à un démultiplexeur, il te permet donc de sélectionner une sortie parmi 8 qui sera assujettie à l'entrée D lorsque la patte "Enable input" n'est pas à 0, mais il s'agit de données "statiques" 0 ou 1 et non d'une trame PWM (ou j'ai mal traduit l'anglais, ce qui est fort probable vu mon piètre niveau). Evidemment, rien ne t'empêche d'envoyer une trame PWM sur l'entrée D, et de l'aiguiller sur l'une des 8 sorties, mais pendant ce temps les 7 autres sorties ne vont pas continuer à produire la trame PWM qu'elles produisaient lorsqu'elles étaient sélectionnées, elles seront figées sur le dernier 0 ou le dernier 1 de la trame qu'elles ont reçue juste avant d'être désélectionnées (je ne sais pas si je suis bien clair...).