Go Down

Topic: L293D et GRBL ?! (Read 7576 times) previous topic - next topic

legolas95

Aug 27, 2013, 10:12 am Last Edit: Aug 27, 2013, 10:14 am by legolas95 Reason: 1
Bonjour,

J'ai en ma possession quelques L293D et des moteurs pas à pas bipolaires. Je les contrôle parfaitement avec les exemples fournis dans l'ide (catégorie Stepper).

Je recherche un moyen pour les contrôler en utilisant du code GRBL. Je connais la librairie GRBL disponible ici, mais elle n'est pas compatible avec les ponts en h. Y a t'il un moyen d'interpréter le code GRBL avec l'arduino et de contrôlé un ou plusieurs moteurs pas à pas (sans driver) avec un L293D.

Merci  :)

skizoh

Salut, avant de te lancer dans des galères pareil, quel est le vrai point positif que tu a en plus avec cette lib? quel fonction ne peut tu pas déjà réaliser avec l'ancienne lib?

Souvent vaut mieux utiliser la lib qui marche et qui est sur plutôt que bidouiller et adapter un lib qui ne correspond pas..

à toi de voir si ta lib ne fait vraiment pas l'affaire ou si tu peut t'en contenter.

Skizo.

legolas95

Je monte actuellement une mini CNC . Je sais qu'il existe des drivers (type sparkfun , polulu , etc) mais j'aimerai utiliser les L293D qui sont à ma disposition pour envoyer du Gcode à l'aide Universal-G-Code-Sender sur mon arduino. Problème c'est qu'excepter la librairie citée plus haut je n'en connais pas d'autre.

De quelle ancienne librairie parles-tu ? Celle intégré a l'IDE ?

B@tto

Oué non la pour une CNC il faut GRBL :)

Tu ne pourras pas t'en servir directement car GRBL gère des drivers de pas-à-pas à impulsions. Il faut rajouter un L297 : http://www.positron-libre.com/electronique/moteur-pas-a-pas/circuit-commande-l297.php
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

pa44

Pour ma CNC GRBL au départ je pensais utiliser aussi des L293 mais j'ai laissé tomber et j'utilise des modules easydriver.

legolas95

C'est vrai qu'il sont bien les EasyDriver, mais j'essaye de faire avec ce que j'ai sous la main c'est surtout pour moi un bon apprentissage.

J'ai un L297 sous la main si cela marche bien j'en racheterai. Le soucis c'est que j'ai aucune idée comment le branché. (j'ai regardé la datasheet mais ca ne ma pas trop aidé)

J'utilise une Arduino avec la dernière version de la librairie Grbl , j'ai un L293D , L297 , un Moteur Bi-polaire 5V et une alim externe de 5V pour le moteur. J'utilise Universal Gcode Sender pour l'envoie du code sur l'arduino.

Voila une image de ce que j'ai en face moi :


Branchement Actuelle :

            L297                        L293D
A4 , A6 , A7 , A9 (A, B,C,D)    ==>        2,7,10,15 (input)

A5 (INH1)                             ==>         1 (enable 1,2)

A8 (INH2)                             ==>         9 (enable3,4)


L293D

4,5,12,13 (GND) ==> GND arduino + GND alim Moteur
3 , 6 (Ouput)     ==>  Bobine 1 moteur PaP
11 , 14 (Ouput)  ==>  Bobine 2 moteur PaP
8 (VCC1)           ==>  Alim Moteur+
16 (VCC2)         ==>  5v (ou arduino ou alim vu que c'est du 5V)

L297

Ici j'ai besoin de votre aide j'essaye de faire marcher l'axe des X dans un premier temps.
Si quelqu'un peut m'indiquer les branchement à faire et si ceux precedement fait sont bons.

Merci






legolas95

J'espere que je me suis bien fait comprendre. Si l'explication n'est pas clair dite le moi

Merci

pa44

Ce qui est sur c'est

arduino                        L297
5 direction X Axis     ---> cw/ccw (A14)
2 step pulse Xaxis    ---> clock (A13)
8 Stepper enable     ----> enable (A10)  ( voir ci dessous astuce)
L'axe  du moteur doit être dur a faire tourner à la main si enable ok

Regarde quand même les branchements des easydriver cela peut t'aider car le non des pins sont identique

Astuce: moi je n'utilise pas le stepper enable du grbl je passe par un inter 2 positions qui envoi le signal au driver ce qui me permet
mode ON fonctionnement normal 'usinage'
mode OFF je peux déplacer mon plateau X Y et mon outil Z librement à la main sans que le moteurs soient freinés

B@tto

#8
Aug 29, 2013, 09:43 am Last Edit: Aug 29, 2013, 10:01 am by B@tto Reason: 1
Blasé, hier je t'avais répondu et le message est pas passé ... Bref je synthétise :

Il faut également fixer les autres pins sur le L297 (pull up ou pull down de préférence).
SENSE ==> pull down
Reset ==> pull up
Vref ==> pull up
Half/full ==> Comme du veux (réglage pas ou demi pas)
Control ==> la je sais pas trop
OSC ==> celui j'avoue que je sais pas quoi te dire, apparemment il faut brancher un RC pour la génération du PWM pour commander le courant.

Le reste tu le branches à rien.

EDIT: j'ai trouvé ça, il y a un circuit assez complet : http://drachezoil.free.fr/fraiseuse/dossiers/electrique.doc
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

legolas95

Super Astuce ! merci.

Je n'est pas encore testé j'ai pas envie de grillé quelque chose.

Je vous propose un shema de mes branchements actuelle en esperant que çela aidera quelqu'un (si ils sont valides) :
Afin de facilité la lecture j'ai coloré les cables




Qu'est ce que vous en dite ? aucun risque ? y a t'il des erreurs ?

Je rappelle que j'utilise un alimentation externe de 5v et que l'arduino est alimenté séparément par USB.

Merci a tous.




legolas95

B@tto merci je viens de voir ton message après avoir posté le mien...

Quelques questions pour mieux comprendre le fonctionnement .

Reset ==> au pin A0 de l'arduino et je mets high ? 

Half/full ==> Y a t'il un pin sur l'arduino ? Où un interrupteur à l'entrée 5v ?

SENSE (sens1 et sens2) ---> Voir Vref

Vref ==> d'après ce que j'ai pu comprendre du datasheet , ça sert a limité le courant ...  on n'est pas obligé d'utilisé les Vref et les sense mais dans ce cas il faut bien choisir la tension d'alim des moteurs pour avoir une intensité inférieure au max du moteur.
En deux mots , après m'être documenté j'ai un peu mieux compris. La tension qui passe entre sens1 et sens2 est comparé a Vref si elle est supérieure alors son alimentation est coupée pendant un "certain temps" ce certain temps est déterminé par OSC et son circuit RC (j'imagine qu'un condensateur ferait l'affaire).
Dans le L298 (toujours d'après ce que j'ai compris) le pin 1 et 15 permettent de mesurer l'intensité qui passe dans chaque bobinage et ainsi lorsque le courant est dépassé je l297 coupe le courant. Donc si Vref>Sens 1 ou Vref > Sens 2 on coupe.
Étant donné que le L293D n'a pas cette possibilité, je pense qu'il n'y a pas besoin de le branché. 

Control ==> J'ai pu lire qu'en faite ça permettait en HIGH que le hacheur agit les pins ABCD du L297 . En LOW INH1 et INH2. (peut être je me trompe).A prori n'utlisant pas Vref pas besoin de control ?!

J'attend avec impatience vos réponses.

Merci pour votre aide j'espère que ça en aidera d'autre...

B@tto

En fait dans ton cas tu n'as pas à gérer le courant car tu utilises une tension qui limite d'elle même le courant max de tes moteurs. Normalement, on alimente le driver avec une tension supérieur, car avec les effet inductif, à partir d'une certaine vitesse la bobine s'oppose au courant et il faut compenser en augmentant la tension. C'est la qu'il fait une comparaison entre une tension image du courant (tu peux le faire en ajoutant une résistance de forte puissance entre les bobines et le GND) et une tension de référence qui est sensé être calibré sur le courant que tu souhaites avoir.

Comme ce n'est pas le cas ici, OSC ==> GND (pas sûr mais forte proba) et pour éviter tout problème Vre ==> pull up et Sense ==> pull down afin d'être certains que ça ne bloque pas. Et CONTROL rien à brancher.

Inutile de brancher les inh1 et 2. Le Enable se faisant par le L297. Mets les enable du L293 au 5V.

Reset ==> pull up, tu t'en fiches de faire un reset du L297
Half full ==> il suffit juste de relié au gnd ou au +5V suivant que tu souhaites faire du plein pas ou du demi-pas.
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

legolas95

#12
Sep 02, 2013, 11:46 am Last Edit: Sep 02, 2013, 11:48 am by legolas95 Reason: 1
Merci pour ta réponse.
Cela fonctionne, je fais, actuellement quelques améliorations.

J'ai une autre question à présent. J'ai récupéré de vieux lecteurs DVD je contrôle les moteurs a l'aide, du module précédemment crée et de la librairie Grbl précédemment évoquée.
Dans la configuration de la libraire il y a un paramètre (steps/mm) que je n'ai pu trouver n'ayant pas la dataSheet du moteur en question.
Comment puis-je le trouver ou le calculer ? Quelqu'un aurait'-il une idée ?



Autre sujet
Étant "têtu" j'ai réussi à trouver un moyen de guider mes moteurs à l'aide d'un L293D seulement. Je travail actuellement sur un programme étant capable de guidé manuellement ma CNC rien de bien compliqué (rf image). Le programme fonctionne, j'essaye, actuellement d'améliorer la précision.



B@tto



J'ai une autre question à présent. J'ai récupéré de vieux lecteurs DVD je contrôle les moteurs a l'aide, du module précédemment crée et de la librairie Grbl précédemment évoquée.
Dans la configuration de la libraire il y a un paramètre (steps/mm) que je n'ai pu trouver n'ayant pas la dataSheet du moteur en question.
Comment puis-je le trouver ou le calculer ? Quelqu'un aurait'-il une idée ?



Et bien c'est très simple et ça dit ce que ça dit : combien de pas faut-t-il pour effectuer un déplacement de 1 mm sur ton axe.

Exemple : si j'ai un moteur 200 pas/tour, une vis qui a un pas de 1.25 mm (donc 1 "tour" de vis effectuera un déplacement de 1.25 mm), et que je suis en mode demi pas :

Pour chaque révolution complète du moteur, soit 200 pas, il faudra 400 impulsions puisque je suis en demi pas. A chaque révolution complète, ma vis aura effectuer un déplacement du boulon de 1.25 mm. Donc 400/1.25 = 320 steps/mm
Blog électronique : battomicro.wordpress.com
Photographie : www.interactive-celebration.fr
Fablab de Montpellier : www.labsud.org

Go Up