Vitesse pas à pas sur Motor Shield + pas à pas sur RAMPS 1.4

Bonsoir à tous !

Voilà, j'ai construis pour mes études la partie mécanique d'une imprimante 3D, et pour la revue de projet, je souhaite animer ma machine avec un Motor Shield R3.

Les déplacements horizontaux se faisant à l'aide de vis, la vitesse assez élevée des moteurs pas à pas ne me gène pas.
Or pour mon déplacement vertical, mon moteur actionne une courroie. Celui doit faire seulement 2 tours pour parcourir toute la hauteur.

Voilà pourquoi j'ai besoin de vous : il me faut réduire la vitesse de ce moteur à son minimum.

Je suis équipé de moteurs pas à pas NEMA 17, d'un Arduino Mega et d'un Motor Shield R3.

Voici le code qui fonctionne très bien et qui me permet d'actionner mes moteurs horizontaux :

#include <Stepper.h>

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

// initialize the stepper library on the motor shield
Stepper myStepper(stepsPerRevolution, 12,13); 

// give the motor control pins names:
const int pwmA = 3;
const int pwmB = 11;
const int brakeA = 9;
const int brakeB = 8;
const int dirA = 12;
const int dirB = 13;

int x = 0;
void setup () {
Serial.begin(9600);
// set the PWM and brake pins so that the direction pins // can be used to control the motor:
pinMode(pwmA, OUTPUT);
pinMode(pwmB, OUTPUT);
pinMode(brakeA, OUTPUT);
pinMode(brakeB, OUTPUT);
digitalWrite(pwmA, HIGH);
digitalWrite(pwmB, HIGH);
digitalWrite(brakeA, LOW);
digitalWrite(brakeB, LOW);

// initialize the serial port:
Serial.begin(9600);
// set the motor speed (for multiple steps only):
myStepper.setSpeed(200);

} void loop () {

myStepper.step(4000);
myStepper.step(-4000);

delay(0);
}

J'ai tenté d'abaisser la valeur de mySteeper.setSpeed, mais en dessous de 200, mon moteur décroche après quelques tours (2 ou 3), il vibre fortement et ne tourne plus, alors que les premiers tours sont parfaits. J'ai aussi essayé de baisser stepsPerRevolution, mais là aussi, même résultat.
De plus, lorsque j'insert des Delay, le même résultat se produit, le moteur décroche.

J'ai essayer toutes les combinaisons de câblage possible, et la configuration actuelle doit être la bonne puisque le moteur tourne parfaitement avec le code ci-dessus.
Mon alimentation est une alimentation 500W de PC.

Notez que mon moteur doit tourner très lentement, mais qu'il doit aussi être un minimum puissant.

Merci de me venir en aide, je suis totalement bloqué...

(PS : si j'avais su, j'aurais commandé un réducteur, mais il est trop tard ..)

bonjour,

Démultiplication mécanique -> fort couple et basse vitesse.

Bonjour, et merci de vous intéresser à mon problème.

J'ai déjà pensé à un réducteur, mais je n'ai malheureusement plus le temps d'en commander un.

J'ai réussi à abaisser la vitesse à un point qui me conviendrai, mais mon moteur se met toujours à vibrer après quelques tours. Auriez-vous une idée d'où cela peux venir ?

Merci.

soit il saute des pas, soit il a pas assez de puissance en A

Avec le programme collé ci-dessus, tout fonctionne très très bien, c'est seulement lorsque je veux baisser la vitesse ou le nombre de pas par révolution qu'après un tour il décroche et vibre.

Comment y remédier ?

faut pas baisser le nb de pas sinon oui il va en sauter.
tu envoie combien au nema?

Motor Shield R3
4 H-Bridges: L293D chipset provides 0.6A per bridge (1.2A peak)

NEAM17 Parameters - 5V and 1A

donc il a pas assez de patate pour ne pas vibrer.

sinon teste cette lib

Ok donc je laisse 200 pas par révolution. Mais en baissant la vitesse, même résultat.

Apparemment le fait de passer en demi-pas permettrait de baisser la vitesse est-ce vrai ? Quelqu'un serait-il capable d'intégrer les demi-pas à mon programme posté ci-dessus ?

Merci beaucoup d'avance ..

Edit : Donc le shield serait sous-dimentionné ? Bizarre qu'il tourne bien à vitesse 200 et qu'il rate des pas lorsque je baisse la valeur, non ?

Merci pour le lien, mais je suis totalement incapable de m'en servir, je suis en méca, pas en électronique .. :~

il y a la lib afmotor plus simple
https://github.com/adafruit/Adafruit-Motor-Shield-library/zipball/master

Tu es déjà au maxi de l'intensité ?

Sinon on peut utiliser une rampe progressive au démarrage. Mais au risque de perdre des pas, ce n'est pas idéal d'être en limite de fonctionnement.

L'entrainement étant par courroie, on peut facilement remplacer un pignon, c'est à mon à avis plus efficace qu'une rustine logiciel.

Malheureusement non, je ne peux plus toucher à ma structure au niveau mécanique.
Niveau intensité je ne sais pas, comment le savoir ?

Donc concrètement niveau logiciel, je ne peux rien faire pour baisser (même un peu) la vitesse de ce moteur ? D'ailleurs ce qui m'étonne, c'est que mon code précédent fonctionne, mais a partir du moment où j'insert un Delay, mon moteur recommence ces caprices.

J'ai une carte RAMPS 1.4 à disposition, si quelqu'un pense que ça peux servir ..

si tu pars sur une imprimante 3d et que tu as une ramps avec les drivers, pourquoi tu te paluche les neurones avec un motor shield?
pars avec la ramps et ses drivers et marlin.

le motor shield est bien pour des moteurs d'imprimante ou de lecteur cd ou dvd, paspour un nema.
s'il a pas la puissance derrière il fera rien.
à vue de nez il lui manque minimum 0.4A :slight_smile:

Bonjour,
Juste une petite mise au point, le nombre de pas d'un PAP est une donnée de construction et donc non modifiable.
La commande de ces moteurs en mode 1/2 pas ou moins est en général confiée au driver de ce moteur (le plus part du temps par l'intermédiaire de mini-interrupteurs).
@+

Justement infobaquee, j'ai essayer de la câbler avec le RAMPS et Marlin, mais impossible de faire bouger quoi que se soit. Le Motor Shield m'a paru plus simple à mettre en place et il fonctionne avec le moteur horizontal.

Le deuxième souci, c'est que je n'ai pas d'extrudeur monté, pas de sonde et pas de endstop, donc pour Marlin ça risque de coincer .. des connaisseurs par ici ?

bonjour
Si la mecanique est mal conçue à la base , il est quasi toujours illusoire de vouloir pallier au defaut originel par une solution electronique.
si je ne m'abuse la quasi totalité des imprimantes 3D DIY fonctionnent par couches
l'axe Z etant seulement sollicité à la fin de chaque "couche" , le microstepping fonctionne bien en regime dynamique entretenu, mais n'est pas adapté à un fonctionnement à reccurence lente.

suffit de mettre les mains dans marlin et de mettre -1 pour les sondes et extrudeurs.
mais la ramps prend le gcode avec marlin.
ca serait bien d'expliquer un peu plus ce que tu veux faire exactement.
j'ai une atmega sur le bureau avec une ramps et je fais ce que je veux en squizant les choses qui bloquent.

infobarquee:
suffit de mettre les mains dans marlin et de mettre -1 pour les sondes et extrudeurs.
mais la ramps prend le gcode avec marlin.
ca serait bien d'expliquer un peu plus ce que tu veux faire exactement.
j'ai une atmega sur le bureau avec une ramps et je fais ce que je veux en squizant les choses qui bloquent.

[HUM]
:grin:
faut pas jouer au plus marlin des deux ----> []

:grin:

Concrètement il n'y a pas de problème au niveau mécanique, seulement dans mon cas j'aurais du commander un réducteur, chose que je n'ai pas fait, pensant à tord que le réglage de la vitesse des pas à pas était aisée.

Je désire simplement faire une démo des déplacements de la machine (mon moteur horizontal fait 4000 pas dans un sens, puis 4000 dans l'autre, indéfiniment, pour montrer le mouvement et le guidage).

Mon moteur vertical doit faire seulement 2 tours pour que le déplacement arrive en bout de course, vous comprendrez donc pourquoi je désire avec une très basse vitesse.

On peut voir sur les photos ci-jointes les deux systèmes.

Si quelqu'un est capable de me modifier un firmware Marlin afin de commander un pas à pas NEMA 17 sur Y et un pas à pas NEMA 17 sur Z pour l'utiliser sur une RAMPS 1.4 + Arduino Mega, le tout sans extrudeur, ni sondes, ni endstop (juste en manuel quoi), j'en serait vraiment très très reconnaissant ...

Merci à tous.

mathieuchabod:
Concrètement il n'y a pas de problème au niveau mécanique, seulement dans mon cas j'aurais du commander un réducteur,

un reducteur mecanique "oublié" dans la cinematique donc ?
si oui il y a bien concretement un probleme d'erreur de conception au niveau mecanique :grin:
un lien vers le moteur Z ? rapport de transmision courroie actuel ? 1/1 ? autres ?

ici comme ailleurs , les simples lois de la physique s'appliquent