Aller au contenu


Photo
- - - - -

Mise en place d'un automatisme pour pont tournant - modelisme ferroviaire


26 réponses à ce sujet

#21 olivier31

olivier31

    Membre

  • Membres
  • 16 messages
  • Gender:Male
  • Location:toulouse

Posté 23 février 2013 - 03:28

Bonjour,
Christian, en réponse a ton post, j'ai pris en compte 1/30 pour éviter les décimales. J'ai donc modifié ton programme, en prenant 1/60 et j'ai modifié les sorties, car sur le programme du clavier il y avait une sortie pour 2 fonctions. Est ce que la modif fonctionne en l'état. J'ai une autre question, pour la connestique, il y a des prises qui s'adapte, par exemple sur le driver du moteur ( 4 connecteurs et 2 connecteur)
Ci dessous le programme modifié en rouge

//**************************************************************
//Commande de moteur pas-à-pas 4 fils
//Christian 02/2013
//**************************************************************

//Inclure la librairie stepper.h
#include <Stepper.h>
#define STEPS 100

// Créer une instance de la classe stepper
// Le moteur (fils 1 2 3 4) est branché sur les sorties 2 3 10 11 de l'Arduino (et sur GND, +V)
Stepper small_stepper(STEPS, 2, 3, 10, 11); // Sens horaire
//Stepper small_stepper(STEPS, 11, 10, 3, 2); // Sens anti-horaire en inversant 2 et 11 (si on préfère)
int Steps2Take = 0; //Nombre de pas de rotation demandé au moteur

//************************************************************
// Pour un moteur de ce type : http://tiptopboards....troller=product
// 64 pas par tour, 4 phases, angle de 5.625° selon les spécifications du moteur
// Démultiplication 1:64 pour ce moteur réducté mécaniquement
// 360° / 6° * 60 = 3600 angles avec la démultiplication
// 360° / 6° * 64 * 4 bobines / 2 bipolaire = 1800 step / tour


void setup()
{
Serial.begin(9600); // 9600 bps
Serial.println("Test de moteur pas a pas ");
}

void loop()
{
Serial.println("Moteur en marche ");
//Faire tourner le moteur
small_stepper.setSpeed(25); //Vitesse de 25 (max) réduire ce chiffre pour un mouvement plus lent

Steps2Take = 1800; // Une rotation complète avec 1800 pas (1 tour environ 54sec)
//Pour tourner à l'envers de 6 fois 1/30eme de tour, simplement multiplier Steps2Take par 6/30 et mettre un moins pour inverser le sens
// Exemple Steps2Take = -6*1800/30;
small_stepper.step(Steps2Take); //Ca tourne
delay(2000); //pause
}
olivier

#22 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)

Posté 23 février 2013 - 04:56

Je ne vois pas le rouge sur mon écran. Mais il n'y a pas de risque de tester "en vrai".
Avant de souder ou monter des prises j'utilise plutôt une breadboard (plaquette de montage sans soudure) et des fils à enficher dessus.
je ne passe à la soudure que quand tout est validé.
Christian

#23 olivier31

olivier31

    Membre

  • Membres
  • 16 messages
  • Gender:Male
  • Location:toulouse

Posté 23 février 2013 - 05:42

J'ai fais du copier coller sur un fichier Word et le rouge est parti. Par contre pour le breadboard et les fils, tu peux me donner les ref comme cela je les commande dans la foulée.

Olivier
olivier

#24 olivier31

olivier31

    Membre

  • Membres
  • 16 messages
  • Gender:Male
  • Location:toulouse

Posté 06 mars 2013 - 06:41

bonjour,

C'est bon, j'ai reçu tout le matériel, et je viens de faire un essais.J'ai utilisé le programme de Christian tel quel. J'ai donc branché les fils du driver dans l'ordre; 1moteur sur 8 arduino, 2 sur 9, 3 sur 10 et 4 sur 11. le 5V et masse sur arduino. Le moteur tourne, bonne nouvelle :lex_14:/> . Par contre avant de se positionner il fait des aller/retour comme si il cherchait sa position, ensuite il s’arrête 2 seconde (normal) et fait la même chose. Est ce que quelqu'un peut m'expliquer le phénomène. PB de branchement ou situation normale

Merci d'avance
olivier

#25 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)

Posté 06 mars 2013 - 08:46

Si tu branches 1-2-3-4 du moteur sur pin 8-9-10-11 de l'arduino il faut dans le programme avoir
Stepper small_stepper(STEPS, 8, 10, 9, 11);
(attention à l'ordre de 10 et 9)

Pour tester les phases, met une vitesse très lente comme :
small_stepper.setSpeed(3)
Tu dois alors voir les 4 leds de contrôle s'allumer en séquence, comme un chenillard.
Christian

#26 olivier31

olivier31

    Membre

  • Membres
  • 16 messages
  • Gender:Male
  • Location:toulouse

Posté 07 mars 2013 - 07:33

Si tu branches 1-2-3-4 du moteur sur pin 8-9-10-11 de l'arduino il faut dans le programme avoir
Stepper small_stepper(STEPS, 8, 10, 9, 11);
(attention à l'ordre de 10 et 9)

Pour tester les phases, met une vitesse très lente comme :
small_stepper.setSpeed(3)
Tu dois alors voir les 4 leds de contrôle s'allumer en séquence, comme un chenillard.


Bonjour,
Christian, j'ai fait comme tu m'as dit, avec une vitesse de 100 cela fonctionne très bien, le moteur fait 1 tour et s’arrête 2 secondes,et refait un tour dans le même sens..... Maintenant il faut que je puisse faire une rotation de l'angle voulu, le problème, c'est que pour installer l’écran, il utilise les broches "// Sélection des pins utilisee par l'écran LCD
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
donc les mêmes que le moteur, est ce que cela pose un problème, si j'utilise les broches 2,3,11 et 12 en changeant le programme du moteur.Ensuite on verra pour l'affichage de la voie donc de l'angle demande

Merci d'avance pour votre aide précieuse

Olivier
olivier

#27 ChristianR

ChristianR

    Membre passionné

  • Membres
  • PipPipPip
  • 474 messages
  • Gender:Male
  • Location:Isère (38)

Posté 07 mars 2013 - 09:20

Oui il faut utiliser des pins différentes pour l'écran et pour le moteur.
Christian



Répondre à ce sujet



  


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

0 members, 0 guests, 0 anonymous users