Auteur Sujet: transbordeur pour loco  (Lu 30320 fois)

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
transbordeur pour loco
« le: novembre 30, 2017, 12:41:26 am »
Bonsoir,
je suis perdu dans mon programme.
Le point origine se fait.
Le déplacement suivant la roue codeuse se fait pour les quatre positions, soit 47 tours moteur pour chaque déplacement.
Mais pour revenir de la position 2 à la position 1 le moteur fait 94 tours.
je joins le fichier du programme


Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : transbordeur pour loco
« Réponse #1 le: novembre 30, 2017, 08:44:33 am »
Bonjour,

Je viens d'examiner le programme et j'avoue que je suis également perdu. Il n'y a pas le moindre commentaire.
Il faudrait au minimum:
1 - une description du système.
2 - une description de chaque variable.
3 - une description précise de chaque fonction : que prend-elle en entrée ? que fait fait-elle ? que retourne-t-elle ?
4 - une trace de l'exécution fautive, je vois qu'il y a une série de print dans votre programme. Qu'est ce qui s'affiche ? qu'est ce qui devrait s'afficher ?
Cordialement

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #2 le: novembre 30, 2017, 10:40:39 am »
Bonjour,
Merci de votre réponse.
j'ai récupéré ce programme sur le site de  CC7107_76 Modélisme Ferroviaire et essayé de l'adapter à mon projet et à mon matériel ,moteur pap 17HS15-0404S + easy driver V4.4 .
Je suis retourné sur le site et la personne avait prévu de piloter le transbordeur par un petit logiciel ce qui explique les print.
Je joins le descriptif de ce que je voudrais faire.
Bonne journée.

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #3 le: novembre 30, 2017, 10:42:00 am »
Je joins le schéma

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : transbordeur pour loco
« Réponse #4 le: novembre 30, 2017, 03:24:12 pm »
A vrai dire, je suis même étonné que la prise d'origine fonctionne.

pom() est appelée au début, on cherche le fin de course et quand il est trouvé (pourquoi procéder par tour complet ?), on retourne à la voie 1 en faisant un step(offset_origine).

Or offset_origine vaut -75200 et step prend comme argument un entier 16 bits et donc une valeur comprise entre -32768 et 32767.

Mais le problème principal est sans doute que vous utiliser Stepper qui est une bibliothèque pour piloter un moteur pas-à-pas directement via un double pont en H et pas du tout avec un easydriver.

Pour moi il faut tout revoir de A à Z.
« Modifié: novembre 30, 2017, 03:39:40 pm par Jean-Luc »
Cordialement

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #5 le: novembre 30, 2017, 08:29:22 pm »
Bonsoir,

Je vais voir sur le site BRAINY-BITS il y a des exemples de programme avec des moteur pap + easy driver.
Mais faire un nouveau programme j'en suis incapable,nous avons tous nos limites.
Merci pour vos conseils.

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : transbordeur pour loco
« Réponse #6 le: novembre 30, 2017, 08:37:04 pm »
Mais on peut aider  ;)

Première question : lorsque le moteur est en mouvement, le système doit il répondre aux commandes de l’utilisateur ou non ?
« Modifié: novembre 30, 2017, 09:08:39 pm par Jean-Luc »
Cordialement

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #7 le: novembre 30, 2017, 11:00:10 pm »
Pour répondre à votre question non.
Ce que j'ai vu pendant mes essais.
Je positionne la roue codeuse sur 0 et je valide, le moteur tourne jusqu'à ce que le chariot actionne le fin de course xm- ,puis tourne dans l'autre sens pour venir en face du rail 1 le POM est fait, le moteur s’arrête.
je positionne la roue codeuse sur 2  je valide, le moteur tourne et effectue 47 rotations (47x 0,7=32,9 entraxe des rails).
Idem pour 3 et 4.
Mais le problème constaté est pour revenir de la position 4à3 ou 3à2 ou 2à1 là le moteur fait 94 tours;
Position 5 de la roue codeuse après validation va et vient .
Positions 6 et 7 pas testées

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : transbordeur pour loco
« Réponse #8 le: décembre 01, 2017, 06:57:32 am »
Bonjour,

Oui j’ai bien vu dans le programme que le mouvement était bloquant : pendant que le pont se déplace, l’Arduino ne fait rien d’autre.

Je voulais savoir ce que vous souhaitiez
Cordialement

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #9 le: décembre 01, 2017, 01:05:05 pm »
Bonjour,
J'ai modifié le programme en supprimant les print, mais j'ai gardé la bibliothèque stepper h, en la supprimant il y avait des messages d’erreurs au lignes mon stepper steps.
j'ai recâblé complètement.
Après essai le moteur effectue bien un nombre de tours identiques de la position 1 vers 2  ou de 2 vers 1 et bien le double 3 vers 1.
Le 6 de la roue codeuse donne une rotation anti-horaire manuelle par le bouton poussoir.
Le 7 de la roue codeuse donne une rotation horaire manuelle par le bouton poussoir.
A mon avis les positions 5 va et vient, les 6 et 7 avance manuelle sont inutiles dans mon cas,puisqu'il faut une position précise en face le rail d'entrée et de sortie.
Un programme nouveau intégrant l'easy driver sera mieux et plus fiable.
Bonne journée.
Michel

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #10 le: décembre 01, 2017, 10:46:10 pm »
Bonsoir,

Pour les valeurs de pas des déplacements qui sont élevées, j'ai été obligé de les multiplier par 100 pour avoir les courses de 33.9, idem pour la rotation moteur dans le programme j'en suis à 3600t/mn et le moteur tourne à 36 t/mn.
Pourquoi ?????? mystère.

Je joins un lien pour les vidéo des essais.

http://le-forum-du-n.forumotions.net/t24954p75-mon-premier-reseau-en-n#547903

Bonne soirée.
Michel

Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : transbordeur pour loco
« Réponse #11 le: décembre 02, 2017, 09:52:03 am »
Bonjour, l’easydriver est câblé comment désormais ? Ses broches sont passées comment a stepper ?
« Modifié: décembre 17, 2017, 10:21:27 am par Jean-Luc »
Cordialement

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #12 le: décembre 02, 2017, 11:24:56 am »
Bonjour,

STP easydriver à 9 arduino
DIR à 8
GND à GND à coté de 13
MS1 à10
MS2 à 11
Les positions non pas changées, j'ai seulement câblé proprement et refait des soudures et fixé l'arduino et easydriver sur une plaque en les isolant par des plots pvc.


Jean-Luc

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1714
    • Voir le profil
Re : transbordeur pour loco
« Réponse #13 le: décembre 02, 2017, 12:12:36 pm »
Voici l'analyse du comportement bizarre du moteur en se basant sur le programme que vous avez posté.

Vous connectez l'EasyDriver comme ceci à l'objet stepper :

dir_pin, MS1, step_pin, MS2

Pour rappel, MS1 et MS2 servent à déterminer le nombre de micro-pas par pas avec les correspondances suivantes :

MS1   MS2   Microstep Resolution
L   L   Full Step (2 Phase)
H   L   Half Step
L   H   Quarter Step
H   H   Eigth Step

Une fois ceci FIXÉ, dir sert à donner le sens de rotation et des impulsions LOW-HIGH-LOW sur step font progresser le moteur selon (MS1,MS2), l'EasyDriver appliquant la progression sur le front montant de step (donc de LOW à HIGH)

Pour faire tourner le moteur, stepper envoie la séquence suivante :

  Step C0 C1 C2 C3
     1  1  0  1  0
     2  0  1  1  0
     3  0  1  0  1
     4  1  0  0  1

Ce qui fait progresser le moteur de 4 pas. Pour le faire reculer, la séquence est appliquée à l'envers

Donc, en supposant que tout est L au départ et que dir = H est une rotation à droite et dir = 0 une rotation à gauche on a successivement :

dir = H, MS1=L, step = H, MS2 = L => le moteur va à droite d'un pas
dir = L, MS1=H, step = H, MS2 = L => rien ne se passe
dir = L, MS1=H, step = L, MS2 = H => rien ne se passe
dir = H, MS1=L, step = L, MS2 = H => rien ne se passe

Par ailleurs, stepper ne faisant pas changer les sorties simultanément, rien ne dit que les états intermédiaires ne provoquent pas des step à droite ou à gauche en 1/2, 1/4 ou 1/8 de pas

Conclusion : ça fait n'importe quoi et c'est normal. Stepper n'est PAS DESTINE A PILOTER UN EASYDRIVER et vous n'arriverez à rien en procédant de la sorte.

Donc, enlevez Stepper, la bibliothèque et également stepper.

Ecrivez une fonction qui fait simplement ceci et qui sera appelée au lieu de step :

void avanceMoteur(byte direction, unsigned long nombreDePas, unsigned long delaiInterPas)
{
    digitalWrite(dir_pin, direction);
    for (unsigned long pas = 0; pas < nombreDePas; pas++) {
        digitalWrite(step_pin, HIGH);
        digitalWrite(step_pin, LOW);
        delayMicroseconds(delaiInterPas);
    }
}

direction est la direction de déplacement, il faut tester si c'est HIGH ou LOW qui fait avancer dans le sens désiré. Je vous conseille de définir deux constantes :

const byte EN_AVANT = HIGH;
const byte EN_ARRIERE = LOW;

à changer en fonction de ce que vous observez. Mais ensuite dans le programme ça sera plus clair

nombreDePas, 200 = 1 tour moteur.

delaiInterPas, nombre de microsecondes entre 2 pas. Pour aller à 2mm/s, il faut 2 / 0,7 = 2,85714285714286 tours et donc ~571 pas et donc 1750µs de délai inter pas
Cordialement

MICH

  • Newbie
  • *
  • Messages: 12
    • Voir le profil
Re : transbordeur pour loco
« Réponse #14 le: décembre 02, 2017, 01:33:16 pm »
Merci pour votre réponse.
Avez vous visionné les vidéos que j'ai faites en suivant le lien que je vous ai donné.
Les mouvements effectués sont réalisés avec le programme que je vous ai transmis et le fonctionnement est normal depuis que j'ai tout recâblé,c'est à ne rien comprendre.
Les tests sont répétitifs et les déplacements non aléatoires.
Je vais modifier le programme suivant vos indications.
Bonne après midi.

Michel