Faire tourner un moteur nema 17 (2)

Portrait de wolfram69

Le projet Faire tourner un moteur nema 17  étant inaccessible pour le moment je crée celui-ci

Donc voici le lien du Câblâge

Et le code :

/*Déclaration des varariables globales ( accessibles n'importe ou dans le code )*/

/* Dans cette variables nous allons stocker la valeur lue de la postion du potentiomètre*/

const int PinEna =  8; // PinEna sur la broche N°8
const int PinDir =  9; // Même logique
const int PinPas = 10; //  ""     ""
const int Facteur = 4; //  ""     ""
const long TempoInterImpulse = 1500; //3000 microsecondes ou 0.003 seconde mais passage à 400 pas par tour !
unsigned long DeclanchementImpulse; // Instant ou on déclanche une nouvelle impulsion ou un nouveau Pas

void setup() { /* Paramètrage des entrées ou sortie, de la vitesse en bauds du port de communication avec la console Série etc.. */
  pinMode(PinEna, OUTPUT);   // PinEna en sortie
  digitalWrite(PinEna, LOW); // Forçage de PinEna à l'état bas
  pinMode(PinDir, OUTPUT);   // Même logique
  digitalWrite(PinDir, HIGH);// Même logique
  pinMode(PinPas, OUTPUT);   // Même logique
  digitalWrite(PinPas, HIGH);// Même logique
}

void loop() { //Début du cycle(boucle)
  if (micros() >= DeclanchementImpulse) { // si le temps de fonctionnement est superieur ou égal à la prévision
    digitalWrite(PinPas, HIGH); // déclanchement du nouveau pas
    DeclanchementImpulse = micros() + (TempoInterImpulse + (analogRead(A0) - 511) / Facteur); /*Calcul de la nouvelle prévision
    avec ajustement par lepotentiomètre */
    digitalWrite(PinPas, LOW); // remise à l'état bas de la sortie du pas
  } // fin de la condition si le temps ....
} //Fin du cycle et retour au debut ce ce cycle (loop)

Explication de la ligne :

DeclanchementImpulse = micros () + (TempoInterImpulse + (analogRead(A0) - 511) / Facteur); //….

DeclanchementImpulse représente le moment en microsecondes ou le nouveau pas devra être envoyé au driver du moteur Pas à Pas qui sera comparé en début de cycle avec micros().

Je rappelle que l’instruction micros() retourne la valeur en microsecondes depuis que le programme a été lancé !

Donc on lit la position du potentiomètre par  analogRead(A0) qui retour une valeur entre  0 et 1023.
Si on enlève 511 à cette valeur on obtient une plage possible entre -511 et +512.
TempoInterImpulse représente le délai théorique entre deux PAS. Si on ajoute à cette valeur un nombre entre -511 et +512 on peut ainsi accélérer ou ralentir ce temps et ceci en fonction du  potentiomètre. Le Facteur par lequel on divise cette valeur en gros +/- 511 permet de diminuer la sensibilité du ce potentiomètre. Il est possible de changer la valeur ici de 4 par une valeur plus grande pour diminuer la sensibilité ou inversement !

Au retour en début de cycle on compare DeclanchementImpulse à micros() et si micros() est égal ou supérieur à  DeclanchementImpulse on envoie une impulsion via la PinPas driver sur son entrée STEP, puis on refait le calcul etc…

Les temps se chiffrant en microsecondes le temps de calcul de cette ligne est suffisamment long pour ne pas être obligé de créer un délai supplémentaire pour repasser PinPas à l’état bas.

Dans ce projet j’ai prévu de positionner les switches SW1 à SW6 comme suit :

ON OFF ON ON ON ON  ( un switch baissé comme la flèche de montre sur le driver correspond à ON !)

Les trois premiers pour augmenter le nombre de pas par tour du moteur pas à pas à 400 pas/tour. Ceci pour augmenter la fluidité de la rotation.

400 pas par tour soit 1500 microsecondes entre deux pas c’est la valeur attribuée à TempoInterImpulse. Les trois autres limites le courant dans le moteur qui chauffera moins mais il est possible d’augmenter cette valeur pour augmenter le couple !

Voilà j’espère avoir été clair si vous avez des questions n’hésitez pas ! Walter se fera un plaisir de vous expliquer mon code !

Portrait de wolfram69

As-tu lu ce topic ?

Portrait de Patcubitus

Voilà, ok je l'ai!

Mais je ne vois absolument pas comment cela fonctionne pour le moment, car bien sur je n'ai pas encore reçu les éléments à brancher.

En tous cas merci, cela va me permettre en relisant beaucoup de fois, d'avoir une approche de ce matériel qui m'est inconnu.

Patrice

Portrait de wolfram69

Télécharge et installe le logiciel Aduino et le drivers de carte Arduino chinoise ! si dessous

Logiciel Arduino
Driver USB Chinois

Puis regarde cette vidéo

Tu auras déjà commencer lol !
Ne t'inquiète pas rien de compliqué !

Regarde ensuite cette autre vidéo

Tu devrais comencer à piger deux trois trucs, Alex a fait du super travail avec ces vidéos, je t'invite à en regarder le plus possible !

Portrait de Patcubitus

Bonjour Wolfram,

je n'arrivai plus a me connecter au site.

Merci pour ces videos que je vais potasser.

Je viens de télécherger le logiciel IDE arduino. Je vais télécherger l'autre.

Je n'aurai pas tous les composants avec une dizaine de jours je pense. Mais je vais visionner tout cela encore et encore. Merci

Bonne soirée

Patrice

Portrait de wolfram69

Pas de problème @+

Portrait de Patcubitus

Bonjour Wolfram,

Détails que j'ai oublié de mentionner, mais qui n'en sont pas, en fait.

C'est pour le suivi  d'un télescope de type Dobson.

Donc, il faut qu'il compense la rotation de la terre. Donc, dans l'idéal, il faudrait calculer la fréquence exacte pour compenser la rotation de la terre. Mais, bon, c'est peut être un peu trop compliqué?

Par contre ce qui est très important pour ce suivi, c'est qu'il faut, avec les renseignements pointus que j'ai, c'est qu'il soit en micropas 1/8, pour n'avoir aucune vibration à l'oculaire, et branché sur du 12V.

J'ai déjà la batterie 12V. Par contre en micropas 1/8, je ne sais pas du tout comment ça se goupille.

J'ai vu les vidéo sur le fait que se sont des moteurs qui sont très précis, justement parce que l'on peut les faire travailler pas à pas, suivant la vitesse et le sens que l'on désire. Enfin, pour celui qui maîtrise le truc! ;o)))

Donc, est que cela change quelque chose au shéma de branchements que tu m'as fournis?

Le fichier que tu m'as donné à télécharger  CH34x pour Driver USB Chinois est pour Windows, alors que je sous sous Ubuntu.L'as tu pour Ubuntu s'il te plaît?

Merci de m'avoir lu, et de m'expliquer tout cela.

Très cordialement

Patrice

Portrait de Patcubitus

... Doublon

Merci

Patrice

Portrait de wolfram69

Patrice étant donné que tu as un diviseur par 10 en sortie de ton moteur pas à pas le micro pas sera de 100*400 = 1/40000 ! je pense que sera suffisant car tu ne pourrais absolument pas pouvoir le réaliser avec ta mais aussi sensible soit elle. Si tu préfères cela représente une précision de 1/40.000 ème de tour toute les 1.5 /100 de seconde c'est montrueux comme réduction !

Mais dans le cas ou cela serait nécessaire on peut descendre à 1/8 éme de pas moteur avec le driver en modifiant :

const long TempoInterImpulse = 750 ;

et les switches 1 à 6 : OFF ON OFF ON ON ON  sur le driver pour atteindre 1/80.000 soir en gros 16.2 secondes d'angle à la sortie du réducteur  !!

Je viens de tester à :1/32 de pas avec :

int Facteur = 8;

const long TempoInterImpulse = 147 ;

 

OFF OFF OFF ON OFF ON ça marche ! Sans trop chauffer !

Mais on est à la limite pour ce qui est des +/- 10% !!

Mais toujours avec 1mn et 40 sec pour faire un tour à la sortie du réducteur !

Portrait de Patcubitus

Bonjour Wolfram,

Ok, mais il me faudrait 1 tour par minute, avec la possibilité d'accélérer un peu ou de ralentir un peu.

En fait ce qu'explique les gars qui ont ce système, c'est qu'à 1/8 ou à la rigueur 1/16 de pas, ils n'ont aucune vibration à l'oculaire. Dans les autres configurations, ils ont des vibrations, ce qui est rédibitoire pour l'observation.

Merci pour toutes tes explications

Très cordialement

Patrice

Portrait de wolfram69

C'est bien ce que je t'ai dit ! Même jusqu'à 1/32 ème

Portrait de Patcubitus

Ok, merci .

Je n'avais pas compris , sorry

Patrice

Portrait de wolfram69

Faut apprendre à lire :o)

Portrait de Patcubitus

Bonjour Wolfram,

j'ai reçu tous les composants pour mon installation. Reste à voir comment brancher tout cela.

Je suppose que je fais les essais avec la Breadboard.

Sur le schéma de branchements que tu m'as envoyé, j'ai l'arduino uno, et sur ce que j'ai reçu, j'ai ces 2 composants.

img_20191209_091002_0.jpg

Je suppose qu'il vaut mieux entrer le programme d'abord dans l'arduino?

Pour le moment j'ai téléchargé le logiciel "chinois" CH344 SER, mais je n'arrive pas à l'installer. Je débute également avec Ubuntu.

Par contre le logiciel arduino est installé lui.

J'ai re regardé les vidéos que tu m'a conseillé.

Voilà ou j'en suis pour le moment

Très cordialement

Patrice

Portrait de wolfram69

Bonjour Patcubitus , tu dis ne pas pouvoir installé le driver Chinois, mais quel type d'ordinateur utilises tu ? PC avec Windows Unix, Linux ou encore un Apple Mac ... ?

Le driver que je t'ai donné c'est pour Windows !

Le circuit à droite sur ta photo, je crois reconnaitre une alimentation pour la Beadboard. Pour le projet qui nous intéresse ici nul besoin de cette breadboard c'est plus pour tester des montages en prototypes.

Pour tout autre OS les drivers ont ici !

Par contre je suis un inconditionnel de Windows alors ne me demande pas de renseignement pour les autres OS je n'y connais pas grand chose.

Quand je suis allé en formation UNIX le prof nous a vanté UNIX sous toutes les coutures en nous disant entre autre que c'était le plus stable des OS mais au cour de la formation les plantages d'UNIX étaient monnaie courante alors que je n'ai jamais vu planté Windows 10 sachant que je vais parfois assez loin dans le bidouillage de soft. Donc je me suis empressé d'oublier cette formation. Pour Ububtu j'espère pour toi que tu trouveras de l'aide ailleurs !

Portrait de Patcubitus

Bonjour Wolfram,

Je suis sous Linux, et j'ai réussi à installer le logiciel Arduino, donc ça devrait aller.

Voilà ce dont je dispose , conformément au schéma de cablage que tu m'as fourni:

img_20191209_185434.jpg

Plus bien sur une batterie.

J'entre d'abord le code dans l'arduino et je peux "attaquer" le cablage!

Bonne journée

Très cordialement

Patrice

Portrait de wolfram69

Oui c'est bon mais en ce qui concerne me moteur pas à pas tous non pas le même code de couleur alors si cela ne fonctionne pas bien ne t'inquiète pas et fais moi en part !

Je vois que tu as pris un potentiomètre multi tour ce n'était pas la peine c'est même plutôt pénalisant pour son utilisation !

Portrait de Patcubitus

OK, 

merci beaucoup pour tout ce que tu m'apprends.

Je vais brancher cela dès que j'aurai un peu de temps ce week end, et bien sûr je te tient au courant.

Pour le potentiomètre, je n'ai pas pensé une seconde à voir si il était multi tour ou pas, c'est te dire si je suis débutant! ;o)

Bonne journée à toi 

Très cordialement

Patrice