StepperonLine DM320T

Bonjour à tous,

J'utilise un DM320T associé à un moteur bipolaire NEMA 42x48.
Dans mon montage le moteur tourne peu fréquemment, j'aimerais libérer l'arbre (qui reste bloqué) entre 2 utilisations
Y at'il une commande adaptée pour cette action ?
Merci d'avance

Bonjour

En mettant au niveau bas le signal ENA du DM320T, l'arbre du moteur pas à pas commandé devrait être libéré puisque le moteur ne sera alors plus alimenté si j'ai bien compris le manuel (pdf 776Ko).

Est-ce que tu veux écrire un tuto ?

Non alors il ne faut pas écrire dans tuto et cours mais très simplement dans le forum général.

La règle n'a pas changé depuis 3 ans.

Message déplacé.

Bonjour AC74

Utilises tu une bibliothèque pour commander ton moteur?
As tu un schéma du câblage entre l'Arduino et le DM320T?

Cordialement
jpbbricole

Bonjour,

L'idée est trés bonne je pense

Et pour réaliser cela, tout dépand du câblage adopté.

Si tu relie ENA à un niveau HAUT ou le laisse deconnecté, ton moteur est piloté.

Si tu relie ENA à un niveau bas, le moteur est "devérouillé".

Veut tu nous en dire plus sur ton câblage?

ATTENTION:

Ne pas confondre le modéle DM542 avec entrées différentielles

avec le modél DM320T entrées non différentielles

Bien vu!
Je me suis fait avoir avec la mauvaise image :woozy_face:, du coup je shoot mon post.

Ainsi, il faut un HIGH pour libérer le moteur.

Bonsoir,

Un HIGH ou un NO CONNECT pour VALIDER le moteur

Un LOW (ou GND) pour DÉVALIDER le moteur.

Selon les termes de la doc qui peuvent prêter à confusion.

VALIDER = VÉROUILLER ou DÉVEROUILLER, pour moi il y a un doute, la doc ne le dit pas je trouve.

Bonjour,

J'ai vu les différents posts de jpbbricole de jef59 de 68tjs de Amic. Merci à tous

J'ai voulu me faire ma propre religion.

Je rappelle que j'utilise le DM320T et pas le DM542 (entrées différentielles)

(Ce moteur est utilisé pour actionner un plateau tournant sur une mangeoire pour 2 chats avec 2 bols et une machine d'alimentation à vis sans fin qui utilise un autre moteur avec Stepper L298N

Donc mon moteur plateau tourne 4 fois par jour pour les 4 repas prévus.)

Lorsque je raccorde le moteur ainsi :

, et que le DM320T n'est pas relié à l'Arduino (ENA DIR PUL en l'air)

l'arbre est résistant quand 24V appliqué, sinon libre

  • D'abord sans librairie :

La commande digitalWrite(ENA_PIN, LOW) interdit la rotation mais ne débloque pas l'arbre , la commande digitalWrite(ENA_PIN, HIGH) bloque l'arbre et permet la rotation

Je n'ai pas trouvé de solution pour libérer l'arbre pendant la non utilisation du moteur.

  • Avec la librairie AccelStepper :

Toujours pas de libération de l'arbre et le fonctionnement de cette librairie est partiel

  • J'en conclus que le DM320T est plus simple que d'autres modèles et ne sait pas tout faire

Votre avis ?

Merci.

Bonjour AC74

Mets ton code en ligne afin que je puisse voir comment placer la fonction qui libère ton moteur.

A+
Cordialement
jpbbricole

Bonjour,

Tu as tout à fait raison, d'autant plus que le "Dieu" ici présent, c'est le fabricant, et la bible, son manuel.

Et sa bible n'est pas claire, cf post#5

Et comment interpreter ENA?

De tes essais, je conclut que la seule façon de liberer l'arbre est sans doute de ne pas alimenter le moteur pas à pas.

Par exemple en insérant entre de driver et le moteur un contacteur (ou relais) 4 contacts "Repos/Travail" dans l'idéal pour "desolidariser" les 4 broches du moteur du driver.

Ca c'est ma presentation de base de cette hypothése, en approfondisant peut être qu'on pourrait réduire à 2 contacts seulement.

Bonjour AC74

Avec AccelStepper, cette libération est totale, dans le courant de la matinée, je te fais un exemple.

Cordialement
jpbbricole

Bonjour AC74

Voilà un exemple avec AccelStepper

Le moteur va périodiquement dans un sens puis dans l'autre avec une pause de 10 secondes entre chaque mouvement.

Pendant cette pause le moteur est désactivé:
stepper.disableOutputs(); // Désactiver le moteur
Après la pause, le moteur est réactivé:
stepper.enableOutputs(); // Activer le moteur

Tout se règle ici:

stepper.setEnablePin(enaPin); // Définition de la pin ENA

//                       DIR    STEP   ENA
stepper.setPinsInverted(false, false, false);

Si le moteur ne tourne pas dans le bon sens, il faut inverser la booléenne sous DIR et la même chose pour le signal ENA, (ENA false = signal actif à HIGH).

Si le moteur ne tourne pas mais se libère toutes les 10 secondes, il faut inverser le signal ENA qui est, dans le programme ci-dessous, actif à HIGH ainsi:

stepper.setEnablePin(enaPin); // Définition de la pin ENA

//                       DIR    STEP   ENA
stepper.setPinsInverted(false, false, true);

Ainsi, le signal ENA est actif à LOW.
Voir schéma post#39.

A toi d'ajuster ces paramètres à ton installation:

const int dirPin = 5;
const int stepPin = 6;
const int enaPin = 7;

Le programme:

/*
    Name:       Test_MPAPenable.ino
    Created:	20.11.2024
    Author:     jpbbricole
*/

#include <AccelStepper.h> // https://github.com/waspinator/AccelStepper

const int dirPin = 5;
const int stepPin = 6;
const int enaPin = 7;

AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);

void setup()
{
	Serial.begin(115200);
	
	stepper.setEnablePin(enaPin); // Définition de la pin ENA
	//                       DIR    STEP   ENA
	stepper.setPinsInverted(false, false, false); // https://www.airspayce.com/mikem/arduino/AccelStepper/classAccelStepper.html#ac62cae590c2f9c303519a3a1c4adc8ab

	stepper.enableOutputs(); // Activer le moteur

	stepper.setMaxSpeed(800);
	stepper.setAcceleration(160);
	stepper.moveTo(500);
}

void loop()
{
	// If at the end of travel go to the other end
	if (stepper.distanceToGo() == 0)
	{
		Serial.println(F("Stepper STOP"));
		
		stepper.disableOutputs(); // Désactiver le moteur
		delay(10000);

		Serial.println(F("Stepper START"));
		stepper.enableOutputs(); // Activer le moteur
		stepper.moveTo(-stepper.currentPosition());
	}

	stepper.run();
}

A+
Cordialement
jpbbricole

Merci pour l'exemple

J'ai testé ce code

Ce code fait avancer le moteur pas par pas (1/200éme dans mon cas) avec affichage série START/STOP

J'ai ajouté un compteur de pas pour vérifier sur un tour

Aucun déblocage de l'arbre pendant le stop

As tu un schéma de ton montage ou une photo en gros plan.

J'ai testé ce programme avec un driver A4988.

Bonjour @AC74 et @jpbbricole

La bibliothéque, c'est une chose, le DM420 et son mode d'emploi, une autre.

Et le DM420 ne fonctionne oas comme le driver A4988.

Fiez vous au mode d'emploi du DM420

Je suis persuadé que pour libérer le moteur, il faut ouvrir la commande de puissance de ses bobines.

Alors quelle serait la fonction du signal ENA?

Voici le code

/*
Name: Test_MPAPenable.ino
Created: 20.11.2024
Author: jpbbricole
*/
#include <AccelStepper.h> // https://github.com/waspinator/AccelStepper
const int dirPin = 2;
const int stepPin = 1;
const int enaPin = 0;
int nbPas=1;
AccelStepper stepper(AccelStepper::DRIVER, stepPin, dirPin);

le raccordement

le schéma ATTENTION je n'ai pas trouvé le fzz du A320T => DM960A qui est différent
ENA=>0
DIR => 1
PUL => 2
OPTO=> 3

En toute sincérité, je ne peux pas dire autre chose que ce que dit le manuel utilisateur.

En plus, n'ayant pas le materiel sous la main, je ne peux pas faire d'essais.

Sauf si eventuellement @AC74 accepte de mesurer en volts les tensions en A+ A- B+ B- quand ENA est non connecté et quand ENA est à 0V.

Rajout

L'idée de ces mesures est de savoir si les bobines du p à p sont électriquement vérouillées ou non en fonction de ENA.

Bonjour AC74

Le tout premier "truc" qui vient, sauf si tu y est obligé, n'utilises pas les pin 0 et 1, c'est sur ces 2 pin que passent les signaux du port USB (console)

Pour essayer l'ENA, tu le déconnectes de l'Arduino et le bout du fil tu le mets une fois à GND et une fois à +5V et tu vois quelle position débloque ton moteur.

PS:
Quel est le type exacte de ton NEMA?

A+
jpbbricole