Go Down

Topic: Accélération d'un moteur pas a pas - Programmation (Read 233 times) previous topic - next topic

Avironman

Jul 11, 2018, 03:29 pm Last Edit: Jul 11, 2018, 05:34 pm by Avironman
Bonjour !

Je suis tout nouveau sur ce forum, et c'est parce que je n'ai trouvé nul part ailleurs de solution que je vous demande. Je suis aussi un total débutant en programmation   :smiley-confuse:

Ce que j'ai :
-une carte programmable : Elegoo Uno R3 (équivalent en tout points à la Arduino Uno).
-un moteur pas a pas bas de gamme et son driver : 28BYJ-48 (4 pas, soit 2048 pas/tour car il y a un réducteur)
-les cables nécessaires
-je sais comment brancher tout ça

Ce que je veux faire :
-faire tourner le moteur à une vitesse de 0,88 tr/min au début, puis le faire accélérer tout doucement jusqu'à 1,04 tr/min au bout de 3h.

Là où j'en suis :
J'ai fait pas mal de recherches auparavant, et j'en suis venu à ce code :

Code: [Select]
#include <Stepper.h>

int nombreDePas = 1809;  //nombre de pas pour que la tige tourne à la bonne vitesse au début
int millisecondes = 32000;   //toutes les 32s je demande au moteur de tourner de 1pas/tr en plus
long depart = 0;             //j'initialise le temps

void setup()
{

}

void loop()
{


  if ((millis() - depart) >= millisecondes) { // si 32s ms se sont écoulées

    nombreDePas ++ ;// je rajoute 1 pas par minutes au moteur
    depart = millis(); //puis je réinitialise le temps à la date actuelle
  }
  else {                                   //sinon

    Stepper myStepper(nombreDePas, 9, 11, 10, 6);  //je déclare les sorties reliées au moteur
    myStepper.setSpeed(1);  //il tournera a une vitesse de "nombreDePas"pas/min
    myStepper.step(20);  //il tourne de 20 pas à la vitesse donnée, puis la boucle revient au début


  }
}




 
Je pense que vous comprendrez vite le principe : je dis au moteur de faire 1809 pas/min (soit 0,88 tour/min) au début, puis toutes les 32 sec, j'ajoute 1 pas. Donc 32 sec après le début, le moteur va faire 1810 pas/min. Et au bout de 3h, le moteur finit à la bonne vitesse de 1,04 tr/min.

Le problème de mon code :
J'ai fait ça en réfléchissant par moi-même, mais comme je suis totalement débutant, je pense que j'ai zappé des trucs essentiels.
Quand je lance le programme, j'ai l'impression que le moteur "patine", comme si il sautait des pas. Il tourne de manière irrégulière et donc plus lentement que ce que je lui demande de faire.

Ce que j'aimerai savoir :
Le fait que le moteur ne tourne pas de façon régulière, est-ce du à la qualité du moteur ou au programme ?

Si c'est le moteur, pouvez vous me conseiller un autre moteur pas a pas unipolaire pas cher ?
Si c'est le code, pouvez vous m'orienter vers un auto qui m'aurait échappé, où alors me faire une ébauche du code ?

J'espère que j'ai été clair dans la présentation de mon problème !  :)
Merci d'avance pour l'aide que vous apporterez à un débutant !  :)

Avironman

dfgh

hello
vas voir
"fichiers" "exemples" "stepper" "stepper speed control"

regardes et règles les paramètres pour ton moteur.

si tu n'as pas de potentiomètre pour mettre sur A0, tu remplaces la ligne :
int sensorReading = analogRead(A0);
par int sensorReading= 800 ( mettre une valeur entre 0 et 1023)
et constate que ton moteur tourne correctement

ensuite, tu pourras jouer avec le code pour adapter le prg à ce que tu veux faire

Avironman

#2
Jul 11, 2018, 07:25 pm Last Edit: Jul 11, 2018, 07:52 pm by Avironman
Merci beaucoup  :D !! Et dire que je n'avais jamais remarqué cet onglet "exemples" !  :smiley-eek:

Et la valeur de 0 à 1023, elle correspond à quoi ? J'en met une au pif dans cet intervalle ? Et si je diminue ou augmente la valeur, qu'est ce que ca fait ?

Merci !

Avironman

Bon du coup j'ai testé avec 800 comme valeur (comme dfgh me l'a conseillé), et ça marche a merveille.

Merci beaucoup !

Go Up