Forums LR PRESSE

Où il est question de trains, petits et grands

  • Advertisement

Arduino - Bloc automatique

Toutes les discussions sur l'Arduino !

Modérateur: MOD

Re: Arduino - Bloc automatique

Publié: Mar 14 Oct 2014, 10:35 
Bonjour,
puis-je me permettre quelques améliorations ?
Le programme est simple mais répétitif.
Pour les variables int avec low et high, tu peux les remplacer par des variables booléennes. high == 1 et low == 0
Tu peux utiliser des boucles for dans ton setup pour éviter les répétitions.
Mais il y a surtout les répétitions dans le loop avec les différents digitalWrite qui sont exactement les mêmes, il serait intérréssant de les rassembler dans une fonction void avec les variables par exemple pour le 1er cadre dans loop.
feux(1,0,0,0,1,0);

Par contre, tu ouvres une voie série pour rien dans ton programme, tu prends de la place pour rien, certes tu en as mais à mon avis.

Ce sont des améliorations pas des corrections après une lecture rapide du code, il faudrait que je regardes plus en avant pour comprendre les différentes boucles. Chacun le voit comme il veut.
Guillaume22
Papotier
 
Messages: 145
Inscrit le: Dim 29 Sep 2013, 09:20

Re: Arduino - Bloc automatique

Publié: Mar 14 Oct 2014, 11:30 
Guillaume22 a écrit:Bonjour,
puis-je me permettre quelques améliorations ?
Le programme est simple mais répétitif.
Pour les variables int avec low et high, tu peux les remplacer par des variables booléennes. high == 1 et low == 0
Tu peux utiliser des boucles for dans ton setup pour éviter les répétitions.
Mais il y a surtout les répétitions dans le loop avec les différents digitalWrite qui sont exactement les mêmes, il serait intérréssant de les rassembler dans une fonction void avec les variables par exemple pour le 1er cadre dans loop.
feux(1,0,0,0,1,0);

Par contre, tu ouvres une voie série pour rien dans ton programme, tu prends de la place pour rien, certes tu en as mais à mon avis.

Ce sont des améliorations pas des corrections après une lecture rapide du code, il faudrait que je regardes plus en avant pour comprendre les différentes boucles. Chacun le voit comme il veut.


Je suis assez d'accord avec toi sur ce point, mais, ce que je trouve intéressant, surtout pour les débutants, c'est :

1) Avoir le programme tel qu'il est présenté (avec toutes les boucles for et toute les initialisations)
2) Avoir dessous, le même programme finalisé avec les explications.

Car j'avoue avoir plutôt galéré ne connaissant pas la programmation orientée objets. Maintenant ça vas un peut mieux heureusement.

Le programme présenté a le mérite d'être facile a suivre dans son fonctionnement par un débutant ce qui n'est pas forcement le cas pour un programme finalisée.

Mais j'avoue m'être fait la même réflexion que toi en voyant toutes les boucles for et répétitions. :mdr2:

Se mettre au niveau d'un débutant réserve parfois quelques surprises. :siffle:
Cordialement,

Christian.
Avatar de l’utilisateur
likiki
Causant
 
Messages: 268
Inscrit le: Dim 29 Avr 2012, 15:21
Localisation: Corbeil Essonne
Âge: 51
Echelle pratiquée: H0 3R
Prénom: Christian

Re: Arduino - Bloc automatique

Publié: Mar 14 Oct 2014, 22:51 
Pas de réponse à ma question :cry:
Merci
Le Belge
Avatar de l’utilisateur
Le Belge
Ingénieur des ponts
 
Messages: 3623
Inscrit le: Dim 26 Nov 2006, 11:04

Re: Arduino - Bloc automatique

Publié: Mar 14 Oct 2014, 23:54 
le belge a écrit:Bonsoir,
Ayant un petit réseau Marklin (oui oui ne me jetez pas :ange: ) ,pour détecter la présence d'un train il suffit de couper un rail et de l'isoler ou non et de le relier à la borne du transfo (16V ~).
Donc des que la loco ou les wagons passent ,le courant passe par ce rail.
Un relais de type Roco marche mais de temps en temps il y a des faux contacts et cela met la m..... :cry:
Pour le moment j'ai 4 blocs avec des relais Roco qui fonctionnent une fois sur deux sans parler des problèmes de sens de passage .
Alors venons au fait ,comment utiliser ce type de contact pour fiabiliser mon affaire avec Arduino ?
Quelqu'un pourrait il me conseiller et me proposer un petit schéma avec les composants qui vont bien pour pouvoir raccorder chaque détection à une entrée Arduino ??


le belge a écrit:Pas de réponse à ma question :cry:


Bonjour,

On va essayer de te donner une réponse, en tout cas étudier le problème.
Créer et isoler une coupure de rail sur lequel on récupère une tension quand le train passe dessus est simple en théorie, un peu plus compliqué dans la réalité. Pourquoi ? Parce que les roues ne font pas un bon contact avec le rail et que le signal obtenu n'a pas la forme idéale d'un créneau comme on l'imagine. Le signal est trop parasité pour être exploité comme cela.
Voilà pourquoi ton système fonctionne une fois sur deux !
Remède : utiliser un trigger de Schmitt qui va nettoyer le signal en quelques sortes.
Le trigger de Schmitt se comporte comme un inverseur mais il change instantanément d'état à partir d'une certaine valeur de tension pour ne plus changer ensuite jusqu'à la coupure du signal d'entrée. Il peut donc remettre en forme un signal bruité et le transformer en signal suffisamment stable pour être exploité par de l'électronique ou un module Arduino.
Où trouve-t-on cette bête : le circuit intégré 7414 en comporte 6 d'un coup, ce qui permet donc de traiter 6 contacts de voie ! Comme tout CI TTL, il s'alimente en 5 V.
Le montage est un peu particulier et dépasse le cadre du forum ; si l'aventure te tente, on peut en reparler par MP.

Christian
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Bloc automatique

Publié: Mer 15 Oct 2014, 05:46 
J'ai fait ça il y a longtemps en voie K... ça marche, mais... la prise de courant est moins bonne parce qu'elle se fait sur un seul rail de masse au lieu de deux... et ça ne marche pas sur les aiguilles. Un relais avec une capa, c'est très bien... ton arduino après le relais. J'ai encore un tas de voie K, un peu rouillée...
Avatar de l’utilisateur
Ramboman
Disert
 
Messages: 423
Inscrit le: Lun 23 Oct 2006, 18:13
Localisation: Waterloo, Belgique
Âge: 74
Echelle pratiquée: LGB

Re: Arduino - Bloc automatique

Publié: Mer 15 Oct 2014, 11:05 
ramboman a écrit:J'ai fait ça il y a longtemps en voie K... ça marche, mais... la prise de courant est moins bonne parce qu'elle se fait sur un seul rail de masse au lieu de deux... et ça ne marche pas sur les aiguilles. Un relais avec une capa, c'est très bien... ton arduino après le relais. J'ai encore un tas de voie K, un peu rouillée...

Bonjour
Merci pour votre réponse :applause:
Comment montez la capacité entre rail et relais ?
Quelle caractéristique faut il prévoir ?
Un petit croquis ce serait top
Pour les les rail suis toujours preneur :ange:
Merci
Le Belge
Avatar de l’utilisateur
Le Belge
Ingénieur des ponts
 
Messages: 3623
Inscrit le: Dim 26 Nov 2006, 11:04

Re: Arduino - Bloc automatique

Publié: Mer 15 Oct 2014, 11:07 
Arduino a écrit:
le belge a écrit:Bonsoir,
Ayant un petit réseau Marklin (oui oui ne me jetez pas :ange: ) ,pour détecter la présence d'un train il suffit de couper un rail et de l'isoler ou non et de le relier à la borne du transfo (16V ~).
Donc des que la loco ou les wagons passent ,le courant passe par ce rail.
Un relais de type Roco marche mais de temps en temps il y a des faux contacts et cela met la m..... :cry:
Pour le moment j'ai 4 blocs avec des relais Roco qui fonctionnent une fois sur deux sans parler des problèmes de sens de passage .
Alors venons au fait ,comment utiliser ce type de contact pour fiabiliser mon affaire avec Arduino ?
Quelqu'un pourrait il me conseiller et me proposer un petit schéma avec les composants qui vont bien pour pouvoir raccorder chaque détection à une entrée Arduino ??


le belge a écrit:Pas de réponse à ma question :cry:


Bonjour,

On va essayer de te donner une réponse, en tout cas étudier le problème.
Créer et isoler une coupure de rail sur lequel on récupère une tension quand le train passe dessus est simple en théorie, un peu plus compliqué dans la réalité. Pourquoi ? Parce que les roues ne font pas un bon contact avec le rail et que le signal obtenu n'a pas la forme idéale d'un créneau comme on l'imagine. Le signal est trop parasité pour être exploité comme cela.
Voilà pourquoi ton système fonctionne une fois sur deux !
Remède : utiliser un trigger de Schmitt qui va nettoyer le signal en quelques sortes.
Le trigger de Schmitt se comporte comme un inverseur mais il change instantanément d'état à partir d'une certaine valeur de tension pour ne plus changer ensuite jusqu'à la coupure du signal d'entrée. Il peut donc remettre en forme un signal bruité et le transformer en signal suffisamment stable pour être exploité par de l'électronique ou un module Arduino.
Où trouve-t-on cette bête : le circuit intégré 7414 en comporte 6 d'un coup, ce qui permet donc de traiter 6 contacts de voie ! Comme tout CI TTL, il s'alimente en 5 V.
Le montage est un peu particulier et dépasse le cadre du forum ; si l'aventure te tente, on peut en reparler par MP.

Christian

:applause: :applause:
Merci Christian pour ces infos
Ok pour échanger sur MP
Dans l 'attente de te lire :moi:
Merci
Le Belge
Avatar de l’utilisateur
Le Belge
Ingénieur des ponts
 
Messages: 3623
Inscrit le: Dim 26 Nov 2006, 11:04

Re: Arduino - Bloc automatique

Publié: Mer 15 Oct 2014, 21:05 
Bonsoir,
merci pour ces remarques, pour le programme c'est très basic je vous avais
prévenu dans mon premier message (il y a 2 mois à peine, je ne connaissais pas
le langage arduino), je retiens vos remarques, mais je ne maitrise pas trop
les boucles for pour les déclarations dans le setup et par contre pour la voie série j'ai oublié de la retirer.
Pour les activation des sorties par digitalWrite , je comprends pas trop votre
suggestion pour les rassembler. Je suis preneur pour des exemples car c'est
plus concret.
Autrement sur le déroulement du programme, pensez-vous que j'ai oublié
quelques fonctions sur la gestion des cantons.
Encore merci de vos remarques.
A++

Ps: je m'excuse pour le signal orange dans le programme, il faut lire jaune!
(je vous avais prévenu pour la signalisation SNCF; c'est pas mon fort!)
Luc Diouc
 
Messages: 13
Inscrit le: Lun 06 Oct 2014, 23:27
Echelle pratiquée: HO/N
Club: Brunoy Rail

Re: Arduino - Bloc automatique

Publié: Mer 15 Oct 2014, 23:54 
Pas de souci
Pour les boucles
de pin 3 à pin 8 c'est une sortie output (à supposer que c'est tout ca)
Code: Tout sélectionner
for(int i = 3; i<9;i++){
pinMode(i, OUTPUT);}

Plus d'explications ici : http://fr.openclassrooms.com/sciences/cours/arduino-pour-bien-commencer-en-electronique-et-en-programmation/le-langage-arduino-2-2

Pour les fonctions, cela permet d'empaqueter un code afin que l'écriture soit simplifiée, en clair finalement c'est utiliser une fonction chaque fois qu'une partie de code est répétée.
Dans ce cas, c'est une fonction vide que l'on utilisera, pas besoin de retourner une valeur quelconque.
on l'appelle feux
pour la définition :
Code: Tout sélectionner
void feux(boolean x, boolean y, boolean z){
digital write(feu1, x);
digital write(feu2, y);
digital write(feu3, z);
}


et on appelle cette fonction par
Code: Tout sélectionner
feux(1,0,1);


L'explication est sur cette même page.

Pour le programme en lui-même, je n'y connais rien du tout pour le moment.
Guillaume22
Papotier
 
Messages: 145
Inscrit le: Dim 29 Sep 2013, 09:20

Re: Arduino - Bloc automatique

Publié: Ven 17 Oct 2014, 22:13 
Bonsoir,
comme quoi un exemple et bien plus explicite; je comprends à peu prêt le fonctionnement de la boucle for pour adresser les sorties ainsi que les commandes des feux. Effectivement c'est bien plus simple.
Je vais m'atteler à réécrire le programme.
Merci encore pour ces explications.
A++
Luc Diouc
 
Messages: 13
Inscrit le: Lun 06 Oct 2014, 23:27
Echelle pratiquée: HO/N
Club: Brunoy Rail

Re: Arduino - Bloc automatique

Publié: Sam 18 Oct 2014, 11:33 
Arduino a écrit:
le belge a écrit:Bonsoir,
Ayant un petit réseau Marklin (oui oui ne me jetez pas :ange: ) ,pour détecter la présence d'un train il suffit de couper un rail et de l'isoler ou non et de le relier à la borne du transfo (16V ~).
Donc des que la loco ou les wagons passent ,le courant passe par ce rail.
Un relais de type Roco marche mais de temps en temps il y a des faux contacts et cela met la m..... :cry:
Pour le moment j'ai 4 blocs avec des relais Roco qui fonctionnent une fois sur deux sans parler des problèmes de sens de passage .
Alors venons au fait ,comment utiliser ce type de contact pour fiabiliser mon affaire avec Arduino ?
Quelqu'un pourrait il me conseiller et me proposer un petit schéma avec les composants qui vont bien pour pouvoir raccorder chaque détection à une entrée Arduino ??


le belge a écrit:Pas de réponse à ma question :cry:


Bonjour,

On va essayer de te donner une réponse, en tout cas étudier le problème.
Créer et isoler une coupure de rail sur lequel on récupère une tension quand le train passe dessus est simple en théorie, un peu plus compliqué dans la réalité. Pourquoi ? Parce que les roues ne font pas un bon contact avec le rail et que le signal obtenu n'a pas la forme idéale d'un créneau comme on l'imagine. Le signal est trop parasité pour être exploité comme cela.
Voilà pourquoi ton système fonctionne une fois sur deux !
Remède : utiliser un trigger de Schmitt qui va nettoyer le signal en quelques sortes.
Le trigger de Schmitt se comporte comme un inverseur mais il change instantanément d'état à partir d'une certaine valeur de tension pour ne plus changer ensuite jusqu'à la coupure du signal d'entrée. Il peut donc remettre en forme un signal bruité et le transformer en signal suffisamment stable pour être exploité par de l'électronique ou un module Arduino.
Où trouve-t-on cette bête : le circuit intégré 7414 en comporte 6 d'un coup, ce qui permet donc de traiter 6 contacts de voie ! Comme tout CI TTL, il s'alimente en 5 V.
Le montage est un peu particulier et dépasse le cadre du forum ; si l'aventure te tente, on peut en reparler par MP.

Christian




IMPOSSIBLE de t'envoyer un mail je t'ai communiqué mes coordonnées par MP :moi:
Merci
Le Belge
Avatar de l’utilisateur
Le Belge
Ingénieur des ponts
 
Messages: 3623
Inscrit le: Dim 26 Nov 2006, 11:04

Re: Arduino - Bloc automatique

Publié: Lun 20 Oct 2014, 10:06 
Je viens d'y répondre et pour les schémas, je t'envoie cela au plus vite.

Cordialement.

Christian
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

Re: Arduino - Bloc automatique

Publié: Sam 25 Oct 2014, 13:58 
Bonjour

Oui oui bien reçu il y a un nouveau message sur ta boîte :ange3: :siffle:
Merci
Le Belge
Avatar de l’utilisateur
Le Belge
Ingénieur des ponts
 
Messages: 3623
Inscrit le: Dim 26 Nov 2006, 11:04

Re: Arduino - Bloc automatique

Publié: Lun 30 Mars 2015, 22:31 
Bonjour,
de retour après quelques mois qui mon permis de concrétiser mon système de bloc automatique avec un arduino.
j'ai conçu quelques blocs pour essayer ( sur plaques d'essais) puis
après des résultats concluants, j'ai crée un circuit intégrant la partie détection et un arduino micro.
Avec ce système de blocs installé sur un réseau N de 6 cantons puis un autres de 9 cantons, j'ai mis en tests depuis 2 mois et aucun disfonctionnements ni bug sur la partie électronique et la partie logiciel.
Je joints un photo de mon bloc terminé ( bloc simple et bloc double).
Le prix du système et dérisoire par rapport à tout les systèmes que j'ai essayé;
partie électronique avec l'arduino moins de 5 euros, partie connecteurs pour le câblage environ 8 euros (j'ai préfère des borniers au départ c'est plus facile pour les essais mais plus chère).
Les possibilités du bloc sont extensibles, car il reste 4 sorties numériques et toutes les sorties analogique disponible; par exemples commander un passage à niveau automatique, allumages d'animations ou de bâtiments, etc.. sur des blocs bien précis.
Voila je voulais vous tenir au courant de la suite et fin de création d'une BAL
avec un arduino.
A+
ps: j'espères que la photo et enregistré dans le message.Image
Luc Diouc
 
Messages: 13
Inscrit le: Lun 06 Oct 2014, 23:27
Echelle pratiquée: HO/N
Club: Brunoy Rail

Re: Arduino - Bloc automatique

Publié: Lun 30 Mars 2015, 23:35 
Bonjour Luc,

Content de te revoir et en plus de constater que tu es arrivé au bout de ton projet.

Si tu veux en faire profiter la communauté (principe de l'Open Source), il faudrait maintenant que tu publies le schéma électronique de ton block (simple et double), les deux typons, comment il est relié au canton et au feu et surtout que tu donnes le programme qui va avec. Ainsi, chacun peut reproduire dans un premier temps, puis améliorer ensuite ton montage. :wink:

Je te propose pour cela d'ouvrir un nouveau fil, ce qui permettra à chacun de poser des questions et à toi d'y répondre. Et si tu veux convaincre, le mieux est une petite vidéo si tu en as la possibilité.

En tout cas, toutes mes félicitations. :applause:
Avatar de l’utilisateur
Arduino
Prolixe
 
Messages: 1690
Inscrit le: Mer 25 Sep 2013, 17:14

PrécédentSuivant

Retour vers Arduino

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 6 invité(s)