stepper qui a des ratés !

Bonjour,

J’ai un moteur pas à pas que je lance avec ce code :

#include <Stepper.h>
 
 
// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,11,12,13);           
 
void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(180);
  // initialize the serial port:
  Serial.begin(57600);
  pinMode(9,OUTPUT);
  pinMode(10,OUTPUT);
  digitalWrite(9,HIGH);
  digitalWrite(10,HIGH);
}
 
void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(6);
}

Mon moteur fait 5 pas dans un sens puis revient de 1 pas en arrière !!!???
Avez vous une petite idée ?

bonjour,
ton stepsPerRevolution est déclaré ou?
a devrait donner un truc dans ce genre

#include <Stepper.h>

// the number of steps on your motor
#define stepsPerRevolution 200

// create an instance of the stepper class, specifying
// the number of steps of the motor and the pins it's
// attached to
Stepper stepper(stepsPerRevolution, 8,11,12,13);

Merci pour vos réponse

voici mon “vrai” code

#include <Stepper.h>

const int stepsPerRevolution = 6; // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution, 8,11,12,13);

void setup() {
// set the speed at 60 rpm:
myStepper.setSpeed(180);
// initialize the serial port:
Serial.begin(57600);
pinMode(9,OUTPUT);
pinMode(10,OUTPUT);
digitalWrite(9,HIGH);
digitalWrite(10,HIGH);
}

void loop() {
// step one revolution in one direction:
Serial.println(“clockwise”);
myStepper.step(stepsPerRevolution);
//delay(10);

//step one revolution in the other direction:
//Serial.println(“counterclockwise”);
//myStepper.step(-stepsPerRevolution);
//delay(10);
}

Sinon, quelles sont ces précautions à prendre ?
J’ai simplement pris un code sur le web et un moteur qui m’est tombé sous la main !

Quel code faut il utiliser si stepsPerRevolution n’est pas connu ?? (je l’avais pourtant copié collé d’un site qui le disait utilisable sur un pas à pas !! ?)

Bonsoir,

Aurais-tu la référence du moteur, et un schéma de câblage ?

J'ai récupéré quelques moteurs pas à pas, et le câblage n'est pas toujours le même ... la couleur des fils ne compte pas !

Jacques

voici le moteur http://www.eminebea.com/content/html/en/motor_list/pm_motor/pdf/pm35l048.pdf

c'est un 5 fils que j'ai branché :

ARDUINO -- M1- ---------------------------- moteur 1 -- M1+ ---------------------------- moteur 2 moteur 3 ---------- rien -- M2- ---------------------------- moteur 4 -- M2+ ---------------------------- moteur 5

sans vouloir te vexer pepe, il ne faut pas tomber dans des excès de zèle non plus. le but arduino est quand même d'utiliser ce qu'on a sous la main pour réaliser des projets marrants et sans trop se prendre le chou. ;) quitte a cramer des composants parfois, on est pas mal dans ce cas. c'est le but du DIY, non? moi le premier, j'utilise des moteurs de cd, dvd, imprimante et ce qui me tombe sous la main (pour pas cher, vive la récup et désespoir de nos dames parfois :) ) pour réaliser des tests et je me tape un peu de la dynamique au départ. le but est de faire fonctionner le projet sans sortir de st cyr ;) quand ca fonctionne, après, on peut approfondir. c'est quand même ludique avant tout, les erreurs formes la jeunesse.

https://llamnuds.wordpress.com/tag/pm35l-048/ pour ce moteur en l'occurence 48 (7.5deg/Step) http://www.eminebea.com/en/product/rotary/steppingmotor/pm/standard/pm35l-048.shtml les séquences http://datasheet.octopart.com/PM35L-048-HHC7-NMB-datasheet-8558557.pdf pour en revenir à ton code, const int stepsPerRevolution = 6; a remplacer par const int stepsPerRevolution = 48; essaye de changer myStepper.setSpeed(180); par une autre valeur, 20,50,80 par exemple

La valeur "6" c'est moi qui l'ai mis car c''est l'angle de rotation que je veux ! pour la vitesse j'ai effectivement essayé d'autres valeurs.

Ce que tu dis pepe , c'est exactement ce que je voudrais : pouvoir choisir un moteur en fonction de mon besoin. Mon problème c'est que j'ai décroché à Thales et Pytagore en 5ieme !!!! alors là..... Ceux qui, comme moi, essayent de prototyper une idée doivent bien se tourner vers quelqu'un si eux même ne sont pas des bètes en physique ? Si je vous montre un schèma de mon projet, seriez vous capable de m'orienter vers un moteur ?

azard: La valeur "6" c'est moi qui l'ai mis car c''est l'angle de rotation que je veux ! pour la vitesse j'ai effectivement essayé d'autres valeurs.

Ce que tu dis pepe , c'est exactement ce que je voudrais : pouvoir choisir un moteur en fonction de mon besoin. Mon problème c'est que j'ai décroché à Thales et Pytagore en 5ieme !!!! alors là..... Ceux qui, comme moi, essayent de prototyper une idée doivent bien se tourner vers quelqu'un si eux même ne sont pas des bètes en physique ? Si je vous montre un schèma de mon projet, seriez vous capable de m'orienter vers un moteur ?

c'est pas l'angle qu'il faut mettre, mais le nb de pas/tour ;) je suis d'accord pour le reste, MAIS, tant que tu ne comprends pas le principe du programme et comment le modifier, à quoi bon investir dans d'autres moteurs? il se peut qu'en expliquant ton projet, une autre solution sera trouvée et te conviendra plus facilement. pas besoin d'être une bête en physique, mécanique, etc... pour réaliser de supers projets, sinon il faudrait qu'on fasse math sup :) il suffit de voir ce que Artouste, Icare, B@tto, moi et d'autres réalisons pour s'apercevoir qu'on utilise de la récup dans nos tiroirs et boites à drouilles.

infobarquee: ... pour réaliser de supers projets, sinon il faudrait qu'on fasse math sup :)

Bonjour, Pas de chance, j'ai fait "math sup" (math sup = maternelle supérieure) :grin:

et moi mathématique superflue :)

je crois comprendre le programme !
ce que je voulais dire exactement c’est que 6 pas du moteur me donnent l’angle que je desire (une 20ene de degrés environ).
investir dans un moteur à 4€, je pense que je peux supporter le choc :slight_smile:
Je schematise mon projet sans vous devoiler l’idée car je voudrais la garder secrète (j’entends d’ici les ricanements !! :slight_smile: )
Si j’ai choisi ce mecanisme c’est pour l’economie “d’angle” par rapport à la distance parcourue de la charge.

schema.jpg

Re, Tu devrais faire une petite étude cinématique du dispositif pour voir qu'il y a des contraintes importantes au niveau du moteur.

sauf que les moteurs ne se pilotent pas en angle mais en pas. chaque pas recevant une impulsion pour faire tourner ton moteur les servos moteurs peuvent de mémoire. il faut X pas pour faire tourner l'axe pour un angle Y chaque pas ayant un déplacement de Z degrés connaissant les pas et l'angle pour chaque pas, une règle de trois et youpi.

je ne remets pas en doute tes capacités en la matière ni ta manière de faire, mais déjà si le programme ne correspond pas aux caractéristiques du moteur, ca ne risque pas de fonctionner. en l'occurence, il y a confusion entre le nb de pas et angle par pas. donc ca pose problème dès le départ. après pour son projet, c'est une autre chose, la question du début est pourquoi ca ne fonctionne pas comme prévu. aucune notion de mécanique ou de poids a soulever.la dedans. a partir du moment ou cela va fonctionner avec ce qu'il a sous la main, on peut évoluer vers son projet et l'orienter vers d'autres pistes en intégrant effectivement des notion de physique, mécanique, résistance au frottement, etc... et pourquoi pas l'orienter vers une autre manière de procéder, couroie, démultiplicateur, ou carrément changer son fusil d'épaule. c'est ma perception des choses. juste en exemple, après avoir fait ma première imprimante 3d maison en partant sur des bases existantes, la 2eme a été amélioré afin de mieux répondre a mes attentes et la première a servie de béta testeuse en gros. donc concentrons nous sur son problème pour faire fonctionner ce moteur avant de s'avancer sur autre chose.

Quand on bricole sans avoir le matériel nécessaires, on s'expose à ne pas pouvoir atteindre les buts qu'on s'est fixé. Et quand on ne maîtrise pas les bases théoriques pour lire la notice ou pour le faire fonctionner, on peut tourner en rond longtemps avant de comprendre pourquoi ça ne marche pas comme prévu, et trouver les bons réglages qui pourraient convenir (quand ils existent).

ca s'appelle l'apprentissage sur le tas, et c'est là ou la matière grise intervient pour trouver des solutions pour que ca fonctionne. le gars qui a concu la prusa ixx n'avait pas tout sous la main au départ et a fait avec ce qu'il avait sous la main. idem pour les gars qui font des graveurs laser avec des bouts de lecteurs dvd. mais on s'écarte du sujet là.

bon.... je vais faire une question plus simple en reprenant tout à la base de mon projet : D'après le schèma et ce que doit faire le mécanisme (elever et abaisser une charge de 300 gr sur 20 cm) De plus, le mouvement doit être rapide (de l'ordre d'une 1/4 de seconde pour effectuer un aller simple) Quel type de moteur prendriez vous ? (le servo moteur semble indiqué mais 2 choses m'inquiètent : le prix de ces moteurs et la force qu'il peuvent deployer) Quand dites vous ?

PS : pepe tu as l'air hyper pointu sur ce type de questions donc tu dois pouvoir m'aider ! j'essaye d'être le plus précis possible pour mériter cette aide donc n'hesites pas à me m'aiguiller pour que je puisse t'apporter toutes les précisions dont tu as besoin.

Pour répondre à ta question. Quelque soit le moteur utilisé il faudra bien déterminer le couple à appliquer. Et que ce soit un servo ou un pas-à-pas le couple sera le même. Pour cela il faut connaitre la longueur des branches du parallélogramme déformable. La masse placée sur le point en haut du parallélogramme déformable se retrouve sur chacun des noeuds (les articulations) et en faisant abstraction des frottements. Donc on la retrouve sur le dernier noeuds qui forme un bras de levier avec l'axe moteur ce qui détermine le couple que devra vaincre le moteur. Je pense que ce montage n'est pas très efficace. Le couple à fournir par le moteur peut être important si le bras de levier est long. Le moteur peut difficilement conserver la position et s'il le fait ce sera en dépensant pas mal d'énergie. Ce genre de montage est habituellement utilisé avec une vis sans fin qui relie les 2 branches du parallélogramme. C'est le principe utilisé par pas mal de crics automobiles.

Re, Voir mon topic précédent. Il faut faire l'analyse de la chaine cinématique.

ah merci ! effectivement ton explication et ton exemple du cric automobile est totalement clair !
Les bras mesures exactement 74mm de noeud à noeud exterieurs.
Comme je l’ai dit, j’ai choisi ce mecanisme pour le rapport nombres de pas/ distance très efficace. car ce dont j’ai besoin c’est qu’en très peu de temps les 20 cm soient effectués.
Ca fait plusieurs mois que je planche sur mon idée et j’avais essayé un autre système qui ne marchait pas bien … comprenez bien que je parts de rien du tout et je ne veux pas que mon ignorance soit un frein à mes envies. Je ne veux pas que les forums fassent tout pour moi, je veux comprendre !

schema.jpg

je vais travailler sur un plan en 3D à partir de ce conseil du cric . je le posterai pour que vous puissiez me donner votre avis. d'ici là, si vous pouvez m'aider à calculer le couple....

ma réponse est partie chercher les fraises?????? bug du forum ou modération?