
Mise en place d'un automatisme pour pont tournant - modelisme ferroviaire
Débuté par olivier31, févr. 05 2013 07:04
26 réponses à ce sujet
#21
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
}
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
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é.
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
#24
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
/> . 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
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

Merci d'avance
olivier
#25
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.
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
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
Répondre à ce sujet

1 utilisateur(s) li(sen)t ce sujet
0 members, 1 guests, 0 anonymous users