Moteur pas-à-pas + shield L293d

Bonjour,

je suis nouveau ici, et je vient vers vous pour trouver de l'aide. Je suis photographe amateur et je vient de construire une table équatorial afin de faire de la photo astro. L'inclinaison de ma table sera piloté par un moteur pas-à-pas de 48 pas branché sur un arduino UNO + un shield L293D commander sur ebay. Pour exploiter ce shield je doit utiliser la librairie afmotor.h seulement mes premier test font faire des mouvements allez retour du moteur sans cesse. Comment faire pour faire tourner le moteur dans un seul sens à une vitesse bien précise.

Je précise que je suis complètement débutant et que j'utiliserai de l'arduino uniquement dans ce projet et ne cherche pas à devenir un pro de cet technologie. Je compte faire un code source pour un sens de rotation et un autre pour l'autre sens. Merci d'avance pour vos réponses.

Quelqu'un aurait le détail des commandes pour afmotor.h ?

Bonjour metalos,

Tu cherches à piloter ta table pour automatiser la MES ? Si j'ai bien compris.. Ton moteur fait 48 pas par tour ? -> Il nous faudrait un peu plus d'infos. Du reste un peu plus d'informations globalement sur tous les composants en jeu, le code que tu as essayé ainsi que sur l'application que tu cherches à réaliser car là c'est très (trop) vaste pour te dire quoi faire.

Sinon pour exploiter ce type de shield (à base de L293) il y a une foultitude d'exemples sur le web. En entrant les mots - arduino l293d shield - ou - arduino afmotor.h - dans ton moteur de recherche préféré tu auras de quoi faire et à coup sur comprendre comment le L293 fonctionne. Et il y a aussi ici dans le forum de nombreux fils de discussion à propos de L293. Dans les deux cas il y a aussi pas mal de solutions à des problèmes rencontrés.

En tout cas, vu que c'est un domaine que je pratique un peu, j'devrais être à même de te donner un coup de main. ;)

Merci ekaki pour ton aide. Je vais rassembler toutes les infos et te poster tous ça ici. Merci encore ;-)

J’utilise une carte Arduino UNO qui est couplé à une cate shield L293D acheté ici

http://cgi.ebay.fr/Motor-Drive-Shield-L293D-for-Arduino-Duemilanove-Mega-UNO-/170708951659

Sur cette carte et branché une moteur pas-à-pas bipolaire acheté ici

http://www.selectronic.fr/moteur-pas-a-pas-bipolaire-standard-48-pas-tour.html

J’utilise la librairie AfMotor.h téléchargé ici

J’ai testé avec ce code

#include <AFMotor.h>


AF_Stepper motor(48, 2);


void setup() {
  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Stepper test!");

  motor.setSpeed(10);  // 10 rpm   

  motor.step(100, FORWARD, SINGLE); 
  motor.release();
  delay(1000);
}

void loop() {
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 
}

Ce code fait tourner sur une courte distance le moteur dans les deux sens sans s’arrêter. J’aimerait pouvoir faire 2 programmes.

1er programme: qui permet de faire tourner le moteur dans le sens des aiguilles d’une montre à une certaine vitesse.
2eme programme: qui permet de faire tourner le moteur dans le sens inverse des aiguilles d’une montre à une certaine vitesse.

Pour le moment je ne connais pas encore la vitesse que doit avoir mon moteur. Je modifierais cette valeur pendant mes teste en direct.

Je n’y connait absolument rien en programmation et encore moin au langage arduino. C’est pour ca que je vient vers vous. Merci d’avance.

OK, donc en premier lieu ce que je vois c'est que :

_. Ce shield est fait pour piloter des moteurs jusqu'à 600mA par enroulement et que le moteur que tu as demande 750mA par phase, donc cela risque de soumettre le circuit de pilotage à une charge trop importante. Il y a des risques d'endommager des éléments ou que cela ne fonctionne pas correctement.

_. Ce shield est fait pour piloter des moteurs à partir de 4.5V, comme la majorité des shields à base de L293D, donc l'utiliser pour piloter un moteur qui demande 3.3V n'est pas non plus adapté. Il y a des risques d'endommager des éléments ou que cela ne fonctionne pas correctement.

_. Le code que tu utilises à l'air de fonctionner :

void loop() {
  motor.step(100, FORWARD, SINGLE); 
  motor.step(100, BACKWARD, SINGLE); 
}

Pour moi cela fait tourner le moteur de 100 pas vers l'avant en pas plein, puis le fait tourner de 100 vers l'arrière en pas plein, et ceci en boucle. Donc cela correspond à ce que tu dis observer.

Ensuite, par rapport à ce que tu veux faire, il faut avant tout savoir ce que tu veux faire précisément. Si tu ne connais pas la finalité de ce que tu veux faire, c'est quasiment impossible de savoir comment y arriver. C'est pour piloter la MES ou c'est pour faire du suivi ? Mais en tout cas le moteur me semble faible pour les deux cas, s'il est utilisé tel quel (tu n'as pas parlé de moto-réduction).

Enfin, pour tout ce qui est de la programmation, il y a une règle de base : Il faut savoir ce que l'on fait. En gros, il faut potasser un minimum les documentations. C'est comme pour un langage (Français, Anglais, etc.) il faut savoir comment traduire ce que l'on veut dans la langue comprise par l'appareil afin qu'il l'exécute. Je te suggère en premier lieu de te documenter sur la programmation Arduino; c'est assez simple (c'est fait pour) afin de savoir dans les granges lignes ce que utilises (les fonctions de bases etc.). Et de même jeter un oeil dans la documentation de la librairie que tu utilises (il y a un dossier "doc" dans le paquet) afin de savoir comment utiliser ton shield. Idem, c'est assez simple, c'est le but; simplifier le pilotage. Sans ce minimum de base il va être très difficile pour nous de pouvoir te guider dans ton projet car nous allons te dire de faire des choses que tu ne comprendras pas.

Voici des photos du projet pour mieux comprendre.

Donc à priori c'est pour faire du suivi. La déclinaison est fixe, ajusté avec la rotule. Et il y a une moto-réduction. Il faut donc que tu calcules ton avance moteur en pas pour avoir 15.04" d'arc par seconde de rotation sur ta planche, et ensuite commander N pas par seconde en boucle via la librairie. Tu pourras ensuite ajouter un switch afin de commander une inversion du sens de rotation, pour utiliser ta planche dans l'hémisphère Sud -.^

Il faut que je change de moteur ? Si oui le quelle me conseille tu ?

Pour bien faire il faudrait un moteur qui ne demande pas plus de 600mA par phase. Le L293 ne chaufferait pas trop de cette manière, et tu pourras donc l’utiliser en toute fiabilité (tranquillité) pendant les nombreuses heures que demande l’astro-photographie. Voir ajouter un radiateur au L293 pour aider à son refroidissement.

Dans ce genre de moteur et vu que tu as pointé du matériel sur Selectronic, en voici un qui serait plus approprié :

http://www.selectronic.fr/moteur-pas-a-pas-modele-pap-2.html
• 12V - plus facile à utiliser et à mettre en oeuvre avec une batterie standard 12V
• 300mA par phase - donc largement dans les possibilités du L293
• 3.6kg.cm de couple - donc de quoi tourner ta VSF même si elle n’est pas monté sur roulement avec un APN+objo sur la planche
• 400 pas par tour - donc largement plus précis que celui que tu as (48 pas par tour) et donc plus adapté au suivi stellaire

Edit : Il y a aussi celui-là, un peu moins cher :

http://www.selectronic.fr/moteur-pas-a-pas-modele-pap-1.html
• 12V aussi
• 300mA par phase aussi
• 2.8kg.cm de couple - un peu moins coupleux que le précédent mais avec la moto-réduction c’est bon
• 200 pas par tour - un peu moins précis que le précédent mais vu que ce n’est pas pour faire du suivi de précision c’est bon, et il te permettra de “rembobiner” ta VSF plus vite

Si tu ne veux pas en acheter un, tu peux aussi voir pour en récupérer un sur un ancien lecteur de disquette 5"1/4 ou dans une vieille imprimante, du moment qu’il est de type “NEMA 17” ou équivalent, <600mA/phase et >5V tout ceux que tu trouves devraient être bon pour le service.

Merci de tous ces renseignements et de ton aide. Je vais commander un nouveau moteur et faire de nouveau essais. Encore merci.