J'utilise une carte Elegoo Uno R3
J'ai effectué le branchement, téléversé le code. celui ci fonctionne très bien lorseque le moteur n'est pas branché sur le L298 . Lorsque je branche le moteur ce dernier broute mais ne tourne pas. Aussi lors de l'appui sur les boutons, le systeme se réinitialise (que quand le moteur est branché)
J'alimente de 12v - 2A comme dans le tuto..
Est ce le moteur qui a un soucis ?
Mon but étant de contrôler la vitesse et le sens de rotation de ce moteur avec un potentiomètre et d'afficher une valeur correspondant à la vitesse et le sens.
merci d'avance pour votre aide !
Vous avez probablement un problème de masse, surtout si vous vous êtres inspiré de la photo qu'on voit sur le tuto pour le câblage de l'alimentation du L298...
Le L298 est un circuit pont en H qui est fait pour faire du hachage. Je ne sais pas comment vous l'interfacez avec l'arduino, mais le problème que pose cette bête est la remontée des parasites que crée le pont en H vers le système numérique. Les précautions à prendre sur les masses ne sont pas triviales.
Bonjour,
Je pense que le moteur pas à pas que vous utilisez n'est pas compatible avec le L298.
Votre moteur consomme 2A sous 2.8V.
Il faut certainement un autre driver type A4988 qui commande les bobines du moteurs en courant.
Leptro:
Bonjour,
Je pense que le moteur pas à pas que vous utilisez n'est pas compatible avec le L298.
Votre moteur consomme 2A sous 2.8V.
Il faut certainement un autre driver type A4988 qui commande les bobines du moteurs en courant.
Ou bien trouver un moteur pas à pas 12 ou 24V
Le L298 effectue bien une commande en courant, en hachant le courant dans chaque bobine. En général on le règle pour qu'il découpe sur une fréquence inaudible, de l'ordre de 20 kHz. J'ai utilisé ce truc, et je me souviens du luxe de précaution prises pour son alimentation, les plans de masse, etc.
Vous devriez nous indiquer ou on peut lire la doc du module que vous utilisez, avec ce L298. Il doit y avoir des indications sur les indications de la manière de câbler ça, surtout au niveau des masses.
Le L298 effectue bien une commande en courant, en hachant le courant dans chaque bobine.
Ce serait théoriquement faisable si on pouvait mesurer le courant. Avec cette carte c'est impossible.
En général on le règle pour qu'il découpe sur une fréquence inaudible, de l'ordre de 20 kHz.
Peut-tu citer une seule réalisation sur internet qui fait du découpage à 20kHz? je serai très curieux de voir cela.
Je pense que le moteur pas à pas que vous utilisez n'est pas compatible avec le L298.
Votre moteur consomme 2A sous 2.8V.
J'en suis sûr!
Il faut certainement un autre driver type A4988 qui commande les bobines du moteurs en courant.
dans un A4988, le courant maximal est théoriquement limité à 2A. MAIS les cartes le limitent souvent à moins, d'autant plus qu'à 2A, il chaufferait trop. De plus pour un moteur 2A, le courant de réglage semblerait être de 2,8A. Du coup, il y a deux solutions:
prendre quand même un A4988, en mettant moins de courant. Inconvénient, le couple est proportionnel au courant et on en a moins, avantage, le moteur reste froid et il a une durée de vie plus grande.
-prendre un circuit plus puissant (classique TB6600, mais il doit y e avoir d'autres).
Par contre les commandes pour ce type de moteur n'est pas du tout le même. Avec un L298 il faut commander le courant dans les deux bobines courant ou pas et sens (ici commande à 4 informations) alors qu'avec un A4988 ou un TB6600, il faut donner une impulsion step et dir (2 commandes). Le programme sans bibliothèque n'est donc jamais compatible.
En utilisant certaines bibliothèques, on peut dire quel type de commande on souhaite, et du coup il y a compatibilité du code.
Effectivement, je n'ai pas été précis. J'aurais dû écrire du même type que le A4998 mais avec les courants adaptés.
Le A4988 est très bien pour débuter. On ne va pas au maximum des possibilités, mais si c'est pour faire des essais et tourner à vide, je le conseillerai (1€!). C'est d'ailleurs ce que je fais chez moi.
Dans le même ordre d'idée, ce n'est pas parce que vous avez acheté une voiture 5 places que vous être obligé de trimballer la femme, sa soeur et son mari, et la belle mère et le chien, si vous voulez prendre l'air. (et avec le coffre plein!)
davidhtz:
Bonjour,
J'essaie de contrôler un moteur 17hs19-2004s grâce à ce tutoriel :
La demande semble claire, bien que seule la partie moteur soit exposée. Or un moteur sert forcément à faire tourner des trucs ...
Soit davidhtz a envie de jouer avec un moteur PàP, aidé d'un tutoriel, et dans ce cas il vaudrait mieux utiliser un moteur se rapprochant de celui du tutoriel.
Soit davidhtz a envie de jouer avec un moteur PàP qui traîne dans un tiroir, et dans ce cas il vaudrait mieux utiliser un driver adapté.
Soit davidhtz a un projet précis en tête et il serait bien de le décrire, afin que les intervenants puissent conseiller un moteur / driver / alimentation adaptés, ou invalider le choix proposé.
hbachetti:
Soit davidhtz a un projet précis en tête et il serait bien de le décrire, afin que les intervenants puissent conseiller un moteur / driver / alimentation adaptés, ou invalider le choix proposé.
Merci à tous pour vos réponses rapides :! c'est super encourageant ! En effet j'ai un projet précis, et j'ai un 17hs19-2004s qui traine dans un tiroir. Et je débute tout juste en arduino. C'est pourquoi pour l'instant j'essaie de faire ce tutoriel car il se rapproche bcp de ce que j'aimerai faire.
J'ajouterai aussi que le couple de 59Ncm me plait assez pour l'utilisation que je compte en faire.
Mon but est de contrôler le moteur à l'aide d'un potentiomètre afin de contrôler la vitesse et le sens. et aussi pouvoir afficher une valeur de la vitesse en % par exemple .
J'ai acquérit un driver a4988 mais étant super débutant vous (l'aurez compris^^) je cherchais en vain un turoriel me permettant d'accomplir ce projet.
prendre quand même un A4988, en mettant moins de courant. Inconvénient, le couple est proportionnel au courant et on en a moins, avantage, le moteur reste froid et il a une durée de vie plus grande.
-prendre un circuit plus puissant (classique TB6600, mais il doit y e avoir d'autres).
Par contre les commandes pour ce type de moteur n'est pas du tout le même. Avec un L298 il faut commander le courant dans les deux bobines courant ou pas et sens (ici commande à 4 informations) alors qu'avec un A4988 ou un TB6600, il faut donner une impulsion step et dir (2 commandes). Le programme sans bibliothèque n'est donc jamais compatible.
En utilisant certaines bibliothèques, on peut dire quel type de commande on souhaite, et du coup il y a compatibilité du code.
Merci !! je pense que je vais donc essayer avec un a4988 que je vais régler à 2A et le coder à l'aide de ce tuto : How To Control Stepper Motor with A4988 Driver and Arduino
. La question qui persiste est comment transférer la position d'un potentiomètre pour controler la vitesse et la direction? et aussi le reporter sur un écran digital?
vileroi:
Ce serait théoriquement faisable si on pouvait mesurer le courant. Avec cette carte c'est impossible.
Peut-tu citer une seule réalisation sur internet qui fait du découpage à 20kHz? je serai très curieux de voir cela.
J'en suis sûr!
Je ne connais pas cette carte en effet. J'ai utilisé un L298 et dans le montage il y avait deux résistances sur les broches de mesure de courant prévues sur ce circuit. On comparait la tension issue de chaque résistance avec une consigne pseudo sinusoidale (quart de pas je crois) et le 298 hachait pour que le courant réel suive cette consigne, sur une fréquence de l'ordre de 20 kHz. Ce n'était pas, bien évidemment, la fréquence des "pas" du moteur.
La question qui persiste est comment transférer la position d'un potentiomètre pour controler la vitesse et la direction? et aussi le reporter sur un écran digital?
Tu peux "t'inspirer" de la commande des "faux" servos appelés communément servo continu ou servo 360.
un potentiomètre câblé entre la masse et le Vcc
une entre analogique pour lire la tension sur le curseur du potentiomètre.
si la tension mesurée est entre Vcc/2 ± x mV : le moteur est arrêté.
si la tension est inférieure à Vcc/2 - x mV le moteur tourne dans un sens.
si la tension est supérieure à Vcc/2 + x mV le moteur tourne dans l'autre sens.
Plus la tension s'éloigne de Vcc/2 plus le moteur tourne rapidement.
--> 0V et Vcc correspondront à la vitesse maximale dans un sens ou dans l'autre.
Vcc/2 ± x mV
x mV forme une hystérésis (voir ce nom).
Sans hystérésis le moteur ne pourrait jamais être stoppé. Sur le bruit électrique ambiant il n'arrêterait pas de basculer entre les deux sens.
Ce n'était pas, bien évidemment, la fréquence des "pas" du moteur.
Non, bien évidemment! Quand je tourne à 25tr/s en mode 16 micros pas, la fréquence des pas est de 2516200=80kHz
La fréquence de 20kHz est bien inférieure.
La question qui persiste est comment transférer la position d'un potentiomètre pour controler la vitesse et la direction? et aussi le reporter sur un écran digital?
Dans le code de ton exemple, ils répètent { step haut, délai, step bas, délai }. Il suffit de choisir le délai en fonction de la valeur lue de ton potentiomètre.
vileroi:
Non, bien évidemment! Quand je tourne à 25tr/s en mode 16 micros pas, la fréquence des pas est de 2516200=80kHz
La fréquence de 20kHz est bien inférieure.
Pour moi "pas du moteur" = angle de pi/2 sur les alimentations des bobines. C'est un multiple du "step" du signal de commande d'une électronique en micro pas. Je n'ai plus le souvenir exact (je devrais l'avoir puisque c'est moi qui faisais le logiciel), mais on tournait au maxi à 15 ou 20 tr/s sur des moteurs à 200 pas/tour. Donc au maxi 4000 pas moteur / seconde, ce qui est bien inférieure à la fréquence de découpage qui tournait autour de 20 kHz. Je dis "tournait autour" car elle n'était pas fixe, dépendant de la vitesse et de la charge moteur. Cela provoquait d'ailleurs des phases de "crissement" de l'alimentation et du moteur très pénibles pour l'entourage ! Heureusement il ne s'agissait que d'un proto, qui n'a jamais été commercialisé.
Grâce à vos conseils j'ai suivi l'exemple avec le A4988 et ça fonctionne merci !
Par contre j'ai du brancher l'alimentation 12V sur le Vin du arduino sinon il ne s'allumait pas, quelqu'un saurait m'expliquer pourquoi ?
Oui la uno ne s'allumait pas mais elle n'était pas branchée du tout.. pardon pour cette erreur ^^ (no comment)
J'ai beaucoup avancé et j'ai réussi à contrôler la vitesse avec un potentiomètre, que j'ai branché sur 5V-A0-GND cependant ça broute et ça vibre beaucoup. Pour ma loop avec le potentiomètre j'ai mis ce code :
read_ADC = analogRead(potentiometer); // read analogue to digital value 0 to 1023
Speed = map(read_ADC, 0, 1023, 100, 0);
Speed_STEP = map(read_ADC, 0, 1023, 10000, 600);
digitalWrite(dirPin, HIGH);
digitalWrite(stepPin,HIGH);
delayMicroseconds(Speed_STEP);
digitalWrite(stepPin,LOW);
delayMicroseconds(Speed_STEP);
Serial.println(Speed_STEP);
Par contre si je n'utilise pas le potentiomètre et que je mets simplement ce code pour avoir une vitesse constante j'ai mis ce code dans la loop :
Là tout va bien ça tourne silencieusement sans soucis.
Je me demande pourquoi le fait d'utiliser le potentiomètre fait sauter des pas et brouter et vibrer le moteur?
Quelle serait la solution pour palier à ce problème ?
Serait ce une question d'accélération à devoir maîtriser ?
Je me demande pourquoi le fait d'utiliser le potentiomètre fait sauter des pas et brouter et vibrer le moteur?
Si le moteur broute, avec ce programme et pas avec l'autre, c'est en général parce que les pas ne sont pas réguliers. Mais dans le cas présent, on exécute toujours exactement la même chose. Il faudrait que je passe ce code sur un analyseur logique pour le voir, mais je n'aurais pas le temps avant lundi (je me barre de chez moi pour cause de confinement du WE)
Quelle serait la solution pour palier à ce problème ?
Si c'est les codes qui arrivent à une vitesse variables, on peut passer par interruption. Mais cela complique; Tout dépend de ce tu compte faire ensuite. Si tu ne fait que cela, c'est possible. Si tu compte rajouter des fonctionnalites, il faut alors voir le problème dans son ensemble. Mais avant il faut voir d'où vient le problème.
Serait ce une question d'accélération à devoir maîtriser ?
Absolument pas car le deuxième programme fonctionne et le moteur ne tourne pas vite. Il suit sans problème à cette vitesse. Or dans le premier il va plus lentement que dans le deuxième. On est obligé de mettre une accélération si on dépasse la vitesse maximale de démarrage direct.