Controleur pas à pas à base de L297/L298

Bonjour à tous, Dans le cadre de mes études, je prépare un bras robotique 5 axes. J'utilise donc des moteurs pas à pas et j'ai voulu concevoir mes propres drivers avec le duo L297/L298. Pour cela, j'utilise le schéma de la datasheet que j'ai légèrement adapté à mon besoin (ajout de pins, etc...) Cependant, dès que je branche le tout, je me retrouve avec un L298 brulant en quelques secondes, et ce sans brancher le moteur, en analysant juste le signal à l'oscillo... Impossible donc de faire fonctionner le moteur. J'ai beau chercher, je ne trouve pas ce qui coince dans mon schéma et je compte donc sur votre expérience pour me dépanner sur ce coup ;-)

Je précise que j'alimente le circuit avec une vieille alim d'ordi pour le 12V et le 5V, les masses sont donc communes. Je génère le signal d'horloge à l'aide d'un arduino nano, je branche ENABLE au 5v, H/F au GND, CW/CCW au GND aussi

Merci d'avance pour l'aide que vous pourrez m'apporter !

EDIT: Avec le schéma c'est mieux:

Bonjour, il faut vérifier que ton L298 fonctionne : tu peux le faire pas à pas (sans jeu de mots ...) en le commandant directement par l'arduino

Ok mais les l298 sont neufs... Le schéma te semble correct ?

cela m'a l'air correct, si tu ne veux pas utiliser le 1/2 pas il faut donc revérifier ton câblage ...

Ok je vais revérifier tout ça alors :-)

Je te tient au courant

Bonjour;

En consultant le datasheet on remarque cette phrase au dessus de la figure 8. http://pdf1.alldatasheet.fr/datasheet-pdf/view/22437/STMICROELECTRONICS/L298.html

Sur la figure 8, on montre la conduite d'un moteur pas à pas bipolaire à deux phases; Les signaux nécessaires pour piloter les entrées du L298 sont générés, dans cet exemple, à partir du CI L297.

Quelle type de moteur pas à pas veut tu piloter?

Ce circuit entraîne des moteurs pas à pas bipolaires avec des courants d'enroulement jusqu'à 2 A. Les diodes sont des types rapides de 2 A.

Ne manque t'il pas des DIODES en fonction du type de moteur à piloter ?

Pour tes mesures de signaux à l'oscilloscope a tu mis une charge (résistance) aux bornes de sorties de ton L298 ? Je suppose bien-sur que tu veux mesurer la "forme" de la tension!

Ci joint le datasheet du L297 http://www.st.com/content/ccc/resource/technical/document/datasheet/f9/35/6e/3f/48/18/48/51/CD00000063.pdf/files/CD00000063.pdf/jcr:content/translations/en.CD00000063.pdf

Salutations.

L298 brulant en quelques secondes, et ce sans brancher le moteur

pour mémoire

manumanu: Bonjour;

En consultant le datasheet on remarque cette phrase au dessus de la figure 8. http://pdf1.alldatasheet.fr/datasheet-pdf/view/22437/STMICROELECTRONICS/L298.html

Sur la figure 8, on montre la conduite d'un moteur pas à pas bipolaire à deux phases; Les signaux nécessaires pour piloter les entrées du L298 sont générés, dans cet exemple, à partir du CI L297.

Quelle type de moteur pas à pas veut tu piloter?

Ce circuit entraîne des moteurs pas à pas bipolaires avec des courants d'enroulement jusqu'à 2 A. Les diodes sont des types rapides de 2 A.

Ne manque t'il pas des DIODES en fonction du type de moteur à piloter ?

Pour tes mesures de signaux à l'oscilloscope a tu mis une charge (résistance) aux bornes de sorties de ton L298 ? Je suppose bien-sur que tu veux mesurer la "forme" de la tension!

Ci joint le datasheet du L297 http://www.st.com/content/ccc/resource/technical/document/datasheet/f9/35/6e/3f/48/18/48/51/CD00000063.pdf/files/CD00000063.pdf/jcr:content/translations/en.CD00000063.pdf

Salutations.

Je veux conttoler un nema 17 ou 21, il me semble bien qu'ils sont bipolaires m, le confirmez-vous ? Les diodes sont a l'interieur du circuit 6210, en fait sur la datasheet du l297, les 8 diodes sont entourées d'un rectangle et il est indiqué qu'on peut directement utiliser un 6210

Merci de votre aide ! A bientot

Bonjour ! Je viens de tester en faisant un circuit imprimé nikel, plus d'echauffement du l298, le moteur fait un leger bruit mais ne tourne pas, on dirait qu'il manque de l'intensité...

J'ai entendu parler du pin Vref mais je ne sais pas comment l'utiliser...

Sur les shields du net, le L298n est monté sur un dissipateur .

De mon expérience , ce genre de shield est pas super adapté pour du PàP ... ça marche mais c'est pas génial. Perso pour éviter que ça chauffe inutilement, je coupais l'alimentation du shield via un transistor piloté par l'Arduino.

Par contre pour des moteurs DC, ça marche nickel !

BrUnO14200: Sur les shields du net, le L298n est monté sur un dissipateur .

De mon expérience , ce genre de shield est pas super adapté pour du PàP ... ça marche mais c'est pas génial. Perso pour éviter que ça chauffe inutilement, je coupais l'alimentation du shield via un transistor piloté par l'Arduino.

Par contre pour des moteurs DC, ça marche nickel !

Une idée du coup pour contrôler des nema avec un minimum de pins ?

J’ai entendu parler du pin Vref mais je ne sais pas comment l’utiliser…

si la tension aux bornes de l’une des résistances shunt est supérieure à Vref, le L297 coupe les 2 sorties correspondantes
il faux donc fixer Vref en fonction du courant maxi qui est de 2A pour le L298

on a donc Vref <ou= Vshunt
avec Vshunt = Rshunt * Imax
Rshunt = 0.5R ; Imax = 2A ; donc Vref <ou= 1V

Ok mais quand je branche tout, le moteur ne fais que "siffler" mais ne tourne pas, une idée d'où ça peut venir ?

Merci ! A bientôt

Bonjour; je raccroche le sujet ;

Un moteur pas à pas en position d’arrêt et alimenté vas forcément chauffé. Tu te retrouve dans le cas d’un moteur bloqué (mais pas vraiment). L’intensité et forte à cet instant.
Sont actionneur le L298 étant traversé par la même intensité vas faire de même.

Cela dit un moteur pàp chauffe de façon normale jusqu’à 60° il est capable et conçu pour le supporter. Au delà faut arrêter.

Si ton système est capable de maintenir son équilibre et sa position, il faut couper ou diminuer la puissance de pilotage quant tu as fini de positionner ton système mais cela risque de crée des pertes de pas. Si non tu y ajoute un frein (mécanique) de positionnement.

Salutations.

tu peux mémoriser les signaux avec ton oscillo ?

Bonjour, Mon oscillo ne me permet pas de memoriser les signaux... Mais d'où peut provenir le fait que le moteur ne tourne pas ? Manque d'intensité ? Tension trop faible (quelle doit être la tension aux bornes d'une bobine de moteur ?) ? J'avoue que je tourne un peu en rond en ce moment...

Merci ! A bientôt.

Bonjour,

certes, il vaudrait mieux que ce soit le moteur qui tourne en rond

pour tenter de répondre à tes questions, oui, toutes ces causes peuvent provoquer le non fonctionnement, donc il est difficile voir impossible de faire un diagnostic à distance

donc aussi, je réitère ma suggestion de faire un test en pilotant directement le L298 depuis larduino : tu as un moteur PAP, cela veut dire que tu peux expérimenter ton montage en le faisant progresser ... pas à pas, en faisant une pose pour regarder, mesurer ce qui se passe à chaque pas

adapte ton programme pour qu'il stoppe à chaque pas (au besoin écrit les séquences manuellement) et fais les investigations nécessaires à chaque fois : niveau logique, tension, intensité

Bonjour;

Voici un lien qui vas te permettre avant tout de comprendre le fonctionnement d'un moteur pas à pas.

http://eskimon.fr/290-arduino-603-petits-pas-le-moteur-pas-pas

Salutations.

Bonjour !

Je reviens à la charge (sans jeux de mots ;-)). J'ai réfléchi un peu, je me suis dit qu'en fait, pour un robot 5 axes avec 1 ou 2 servomoteurs, mes endstops + mes encodeurs d'asservissement, je pouvais directement me baser sur une RAMPS, shield qui permet l'utilisation de l'Arduino pour des CNC et Imprimante 3D.

Très bien... L'idée me semble bonne, qu'en pensez vous ? De plus, je suis, de fait, à la recherche d'indication pour programmer et utiliser les contrôleurs qui sont à bord. J'avais sous la main une RAMPS avec des controleurs A4988 au nombre de 5 montés dessus. Peut-on directement utiliser la librairie stepper avec ces contrôleurs ? Si non, quel est la "procédure" ?

Pour l'axe "X" par exemple, on trouve ce pinout:

define X_STEP_PIN 54

define X_DIR_PIN 55

define X_ENABLE_PIN 38

define X_MIN_PIN 3

define X_MAX_PIN 2

De là, et de manière intuitive, je déduis que, si je veux aller dans le sens des aiguilles d'une montre, j'aurai à faire: - 55 à HIGH ou LOW (déterminé selon des tests, pour choisir le sens de rotation) - 38 à HIGH (pour activer le module) - 54 à HIGH (lorsque je veux tourner d'un pas)

X_MIN_PIN et X_MAX_PIN étants, d'après la doc, les endstops de début et de fin de course, inutiles dans mon cas puisqu'il ne serviront plus directement à contrôler mon moteur, j'aurai une boucle PID à intercaler avant.

Que pensez-vous de toutes ces infos ? Ai-je raison ? Puis-je apporter des améliorations ?

Merci d'avance pour vos réponses qui m'ont toujours permis d'avancer !

A bientôt

Rapide correction, il semble que Enable soit "Active LOW", on le connecte donc au GND pour activer le module