Aller au contenu


Photo
- - - - -

Automatisme PN avec Arduino


23 réponses à ce sujet

#1 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 02 mars 2018 - 11:37

Bonjour,

je vous expose mon projet. Faire un passage à niveau automatique pour modélisme ferroviaire.  (Lorsqu' un train approche du PN les 2 barriéres se ferment,2 leds rouge clignotes  elles  s' ouvrent lorsque train est passé.

J ai déja fait de nombreux essais avec des exemples  sur divers sites mais ca ne fonctionne pas. et les explications trop complexent pour un novice comme moi

Mon gros point faible la programmation.

Mon materiel  ( carte ardouino uno   - servo moteur 90 gr et détecteurs diverses (HCSR 501 PIR  - TCRT 5000 et HC SR 04)

La programmation du couple 1 servo un détecteur le SR 04  ca va ma lorsque j ajoute le 2 éme servos, le  2 éme détecteur et les leds  c est la cata 

N auriez vous pas dans vos cartons un exemple complet de ce type de projet afin que je reparte de zéro  afin que je dissèque   chaque étape pour comprendre le fonctionnement et la programmation

Merci .

 


  • RobertMok , GalenSa , Keganmi et 3 autres aiment ceci

#2 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 02 mars 2018 - 01:34

Alors non moi perso je n'ai rien dans les carton et de mémoire j'ai pas vu ce genre de chose sur le forum mais on va pouvoir t'aider quand même ! =) 

En procédent étape par étape on va te faire le truc que tu veux. 
Par contre tout d'abord essaye d'expliquer ce que tu veux faire, ( genre si tu as des photo ou autre ça peut aider ) 
ce que tu as déjà fait, qu'est ce qui marche et qu'est ce qui ne marche pas comme tu veux / ce que tu veux ajouter par rapport à ce que tu as réussis 

hésite pas à poster ton code ;) 
 

Avec ça on aura de bonnes bases pour t'aider ! =) 


  • Oslo77 aime ceci

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#3 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 02 mars 2018 - 02:28

Bonjour
Merci pour votre aide.
Donc mon projet de PN
Lorsqu' un train arrive à proximité du passage à niveau il est détecté,
Les 2 leds rouge clignotent,les 2 barrières s
le train passé les barrières se relèvent et les 2 les s éteignent
Voilà,
Ps
Ce projet sera inclus dans un réseau ferroviaire en DCI HO que je fais avec mon fils
Je suis à votre disposition pour tout complément d info.

#4 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 02 mars 2018 - 02:29

Ci joint une photo du projet

#5 thermo_nono

thermo_nono

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 825 messages

Posté 02 mars 2018 - 05:35

j'imagine que l'approche du train est détectée par un contact du type "fin de course".
pour la structure de l’algorithme je partirais sur quelque chose du genre : 

void(loop) {
 SI (detection_train_a_gauche == vrai OU detection_train_a_droite == vrai) {
  mettre une variable_booléenne à 1   // pour mémoriser qu'on est en mode "un train passe"
  actionner barriere_1 vers le bas;
  actionner barrière_2 vers le bas;
  lancer la procédure de clignotement;
 }
 SINON (variable_booleenne == 1 ET detection_train_a_gauche == faux ET detection_train_a_droite == faux) {   //si le train n'est plus détecté
  variable_booleenne = 0;
  attendre quelques secondes;   // le temps nécessaire pour que la queue du train soit passée 
  actionner barrière_1 vers le haut;
  actionner barrière_2 vers le haut;
 }
}

procedure de clignotement {
  SI variable_booleenne == 1 {
    allumer la led_1;
    allumer la led_2;
    attendre 500 ms;
    eteindre la led_1;
    eteindre la led_2;
    attendre 500 ms;
  }
}

grosso modo



#6 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 571 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 02 mars 2018 - 08:54

Le clignotement commence avant l'abaissement des barrières :D

 

Un schéma du câblage pourrait être utile.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#7 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 02 mars 2018 - 09:27


Merci pour vos réponses.
Il est exact que le clignotement commence avant l abaissement des barrières.
comme je l ai indiqué , je recherche un modèle type et ne pas l utiliser bêtement sans comprendre.
Sur le modèle je souhaiterais le décortiquer en comprendre toutes ces fonctions .
Je me suis fait un tableau de marche
Les commentaires
Déclaration sur les variables
Les fonctions Void setup et void loop.
Je compte vraiment sur votre aide pour la réalisation de ce projet. Merci d avance

#8 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 02 mars 2018 - 09:40

L'image n'a pas été ajouté, dans le message plus haut, tu peux l'éditer pour remettre l'image. 

Vois le code que tu as déjà fais peut être utile pour t'aider tout comme le schémas de câblage si tu ne veux pas juste du " pseudo code" à décortique ;)

 

Pour avoir les bases avec arduino, si tu ne les a pas je te recommande la lecture de cet ouvrage pour débuter avec arduino   =) 


Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#9 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 02 mars 2018 - 10:21

Bonsoir
Ci joint le fichier du projet
Qu' est ce que tu entends par voir le code
J ai déjà lu 2 ouvrages sur ardouino
Le montage sur la breadboard via module Arduino est ok
C est la programmation qui est mon problème. Je pense que je n aurais jamais du me lancer.

20180302_135703.jpg


  • Mike118 aime ceci

#10 Mike118

Mike118

    Staff Robot Maker

  • Administrateur
  • PipPipPipPipPip
  • 9 934 messages
  • Gender:Male
  • Location:Anglet
  • Interests:Robotique, Entrepreneuriat, Innovation, Programmation, Résolution de problème, Recherche de solutions, Mécanique, Electronique, Créer, Concevoir

Posté 02 mars 2018 - 10:50

Mais si vous allez y arriver on va vous aider =). 

Si vous avez lu cet ouvrage pour débuter avec arduino vous aurez toutes les bases nécessaires pour suivre nos explications :) 

 

Par code, je voulais dire poster le code que vous avez utilisé par exemple : 

//Bibliothèque :
#include <Servo.h> //Ajoute la librairie Servo

//servo1 :
Servo servo1;    //Déclare un nouveau servomoteur nommé servo1
int pos = 0;     //Position initiale du servo
#define PAUSE 15000 //Symbolise la pause en ms entre chaque mouvements du servo
#define BAS  900 // Position basse en microseconde 
#define HAUT  1600 // Position haute en microseconde

void setup() {
  servo1.attach(9, BAS , HAUT); //Attache servo1 au pin 9 avec MIN et MAX  
}

void loop() {

  for (pos = 0; pos <= 180; pos++)
  {
    servo1.write(pos);
    delay(PAUSE);
  }
 
  for (pos = 180; pos >= 0; pos--)
  //Rejoins un angle de 0° depuis 180° par pas de 1°
  {
    servo1.write(pos);
    delay(PAUSE);
  }
 
}

Ce code là par exemple permet d'ouvrir et fermer la pince=) 

On peut facilement le modifier le code pour ajouter un deuxième servo =)


  • Forthman aime ceci

Si mon commentaire vous a plus laissez nous un avis  !  :thank_you:

Nouveau sur Robot Maker ? 

Jetez un oeil aux blogs, aux tutoriels, aux ouvrages, au robotscope  aux articles,  à la boutique  et aux différents services disponible !
En attendant qu'une bibliothèque de fichiers 3D soit mise en place n'hésitez pas à demander si vous avez besoin du fichier 3D d'un des produits de la boutique... On l'a peut être ! 
Si vous souhaitez un robot pilotable par internet n'hésitez pas à visiter www.vigibot.com et à lire le sous forum dédié à vigibot!

 

Les réalisations de Mike118  

 

 

 


#11 Forthman

Forthman

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 379 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 03 mars 2018 - 10:52

La détection du train se fait par ultrasons ?



#12 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 03 mars 2018 - 11:29

Bonjour Forthman

Pour répondre à ta question oui .détecteur ultra son HC SR O4

#13 Forthman

Forthman

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 1 379 messages
  • Gender:Not Telling
  • Location:Montauban (82)

Posté 03 mars 2018 - 06:28

Donc pour résumer :

Le capteur ultrasons est placé en amont, suffisamment  loin des barrières, et à la suite du front descendent du capteur,

il faudra une temporisation pour autoriser la réouverture de ces dernières.

 

La séquence serait donc :

Si détection capteur ultrasons
  lancer le clignotement des LEDs
  temporisation
  fermeture des barrières
 attendre fin de détection du train
  temporisation (pour être sûr que le train soit passé)
  arrêter le clignotement des LEDs
  remonter les barrières

Pour que le mouvement des barrières soit réaliste, il va falloir modifier la position des servo petit à petit (comme dans l'exemple de Mike)

Par contre, pour le clignotement des LEDs, j'utiliserais soit un timer, soit une variable incrémentée à chaque boucle,

et ajusterais les seuils pour allumer/éteindre les LEDs

 



#14 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 03 mars 2018 - 06:40

Si on met 2 capteurs, un en amont, un en aval, le 2eme pourra détecter quand le train est passé effectivement. Sans avoir une temporisation.



#15 levend

levend

    Pilier du forum

  • Membres
  • PipPipPipPipPip
  • 5 571 messages
  • Gender:Male
  • Location:Vendée
  • Interests:Robotique, informatique, architecture et patrimoine...

Posté 03 mars 2018 - 07:59

A mon avis il prévoyait deux capteurs mais un par voie pour détecter l'arrivée du train sur une voie ou sur l'autre mais si chaque capteur peut détecter le train sur les deux voies ton idée n'est pas mauvaise puisqu'on se moque du sens du train qui arrive au passage à niveau, dans tous les cas il faut abaisser les barrières et au moins on est sûr que le train est entièrement passé.


Imprimante 3D : Prusa i3 (MK1) + CR-10S + CR-10 S5 + Artillery Sidewinder X2 + CR-30 + Elegoo Mars + Anycubic Wash & cure 2 + Phrozen Sonic Mega 8K + Phrozen Cure Mega

#16 Path

Path

    Made By Humans

  • Modérateur
  • PipPipPipPipPip
  • 2 504 messages
  • Gender:Male
  • Location:Paris

Posté 03 mars 2018 - 08:05

Oui, cest un capteur de distance assez précis. Il peut detecter la voie :)

#17 Oslo77

Oslo77

    Nouveau membre

  • Membres
  • 8 messages
  • Gender:Male
  • Interests:ILE DE FRANCE 77

Posté 03 mars 2018 - 09:01

Bonsoir à toutes et à tous,
Je viens de prendre connaissance de vos discussions .C'est l automatisme que je recherche pour ce projet.
Quel forum super.

#18 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 03 mars 2018 - 09:13

Pourquoi utiliser des capteurs US et non pas des interrupteurs ?

#19 thermo_nono

thermo_nono

    Membre chevronné

  • Membres
  • PipPipPipPip
  • 825 messages

Posté 03 mars 2018 - 11:39

je pense qu'un détecteur US est à la fois plus discret et plus facile à installer puisque ne nécessitant aucun contact physique pour être actionné. 

 



#20 Oracid

Oracid

    Pilier du forum

  • Modérateur
  • PipPipPipPipPip
  • 6 732 messages
  • Gender:Male

Posté 04 mars 2018 - 06:58

je pense qu'un détecteur US est à la fois plus discret et plus facile à installer puisque ne nécessitant aucun contact physique pour être actionné.

Mais puisque on est dans le maquettisme, dans la vraie vie, comment fonctionne un passage à niveau, avec un capteur US ?



Répondre à ce sujet



  


0 utilisateur(s) li(sen)t ce sujet

0 members, 0 guests, 0 anonymous users