Problème d'alimentation ESP32 pour contrôler Nema42

Peut-être ici à propos du contrôlleur

Ou Vdc typique est de 48V dc
et Vdc max est de 70V DC

?

Bonsoir,

Suite à de nombreux tests voilà le montage qui fonctionne le mieux,
j'ai toujours un léger décalage 1 ou 2 mm sur 300 à 500 tours effectués.

Il y a des problèmes matériel et logiciel, la liaison UART et les deux écrans I2C provoquent vraisemblablement des perturbations, ralentissements.

Sans écrans et sans liaison rx-tx, c'est quasiment parfait, en tout cas dur de voir un décalage sur 600-800 tours.

Il faut que je fasse des tests voir si les différentes vitesse du moteur provoquent des perte de steps, ou si tout est ok quelque soit la vitesse.

Je vais reprendre un code simple sans écrans et un seul esp, puis rajouter petit à petit les éléments pour avoir un résultat presque parfait ou voir ce qui provoque les erreurs de steps.

J'ai refais des tests l'esp nano me génère des erreurs.

j'ai donc changé d'esp et de configuration, en gardant un seul esp, un écran, l'ULN2803, 12V d'alim et donc pas de liaison rxtx. Pas trop touché au code.

Test sur 2250 tours de moteur, vitesse entre 150 et 1050rpm 15 séries de 150 tours à différentes vitesses.

j'ai entre 10° à 15° d'erreur après 2250 tours.
c'est pas parfait, mais c'est déjà mieux !

Bonjour zum

Est tu câblé en servo?
Si c'est le cas, des décalages sont impossibles sauf problème mécanique ou électrique.
Câble l'alarme pour voir s'il y en a:

As tu essayé le câblage des signaux en anode commune, en mettant les PUL+ DIR+ et ENA+ à 5V (Sans ULN)

Cordialement
jpbbricole

C'est ce que j'avais proposé, mais depuis j'ai griffonné un schéma plus réaliste et ça va peut-être tomber en marche.

Le schéma est tiré de la doc du HBS86H.
Il y a utilisation d'un contrôleur avec des transistors "bipolaire" (sic) avec des collecteurs ouverts. C'est le schéma que reproduit l'ULN2803.

Or dans la doc du micro contrôleur ESP32, framework Arduino, je ne vois pas de possibilité d'avoir des transistors de sortie en drain ouvert, sauf pour le service de l'I2C.
Avec une sortie Mos complémentaire, la tension en entrée de l'opto variera entre 5V et 5V - 3,3V = 1,7 V.

La diode conduit-elle toujours avec 1,7 V ? Peut-elle se bloquer ?

On "aurait pu avoir une idée" en exploitant cet extrait déjà publié sur le forum en #24.
Je l'ai recopié en plus lisible pour la partie qui m'intéresse :

Il y a 3 équations pour deux inconnues, donc une de trop, mais on peut essayer de les prendre deux par deux et faire la moyenne des valeurs obtenues.
Forme générique : Vcc_1 = (R_1 + 0,27) * Id_1 + Vd_1
R_1 en kohms
Id_1 en mA

La tension de la diode apparaissant avec le même coefficient "x1" il suffit de soustraire les équations deux par deux pour éliminer Vd_x et obtenir simplement la valeur du courant.

Id_xy = (Vcc_y - Vcc_x) / (R_y - R_x)
Vd_xy = Vcc_y - R_y * Id

C'est simple, mais quand on fait le calcul, on met en doute la véracité des valeurs de R données dans la datasheet.

Équations :
[E1] → 5 = 0,27 * Id + Vd
[E2] → 12 = 1,27 * Id + Vd
[E3] → 24 = 2,27 * Id +Vd

Calcul avec [E2] et [E1]
Id = (12 - 5) / (1,27 - 0,27) = 7 mA
Vd = 5 - 0,27 * 7 = 3,11 V

Calcul avec [E3] et [E1]
Id =(24 - 5) / (2,27 - 0,27) = 9,5 mA
Vd = 5 - 0,27 * 9,5 = 2,43 V

Calcul avec [E3] et [E2]
Id = (24 - 12) / (2,27 - 1,7) = 12 mA
Vd = 12 - 1,27 * 12 = moins 3,24 V ! ! ! ! ! !

Les valeurs indiquées dans la datasheet pour adapter à des tensions Vcc de 5, 12 et 24 V ne sont pas cohérentes, elles sont tirées d'un chapeau.

Les informations données par @zum sont incomplètes.
Dans ce qui va suivre je peux me tromper, si c'est le cas n'hésitez pas à corriger.
La datasheet du HBS86H (version Leadshine) indique :
Un nombre maximum de pas de 51200 .
Elle indique aussi une fréquence max de 200 kHz pour la commande des pas .

@zum tu indiques des essais à 1050 rpm tr/min (tours par minute), mais tu ne donnes pas le nombre de pas par tour.

1050 tr/min, c'est 17,5 tr/s
Avec un nombre de pas de 51200 cela "ferait" une fréquence de 896 kHz.

  1. je ne vois pas de cohérence entre 200 kHz et 51200 pas
    Probablement que le nombre de pas est plus faible.
  2. Du peu que j'ai pu apprendre sur les moteurs pas à pas le couple diminue avec la vitesse. Donc moins il y a de couple, plus on risque de perdre des pas.

C'était mes 5 cts sur le projet.

Pour ce qui est des pas le moteur fait 400 pas pour un tour.
soit à 1050 tr/min 17.5 tr/s -> 7000 pas/s soit 122.5kHz.

J'ai conscience de la perte de couple avec la vitesse, le nema34 est pour l'instant utilisé pour réalisé le système de commande qu'il me faut. Plus facile de travailler sur celui-ci que sur le servo de 3.8KW.

Au final le 3.8KW avec réducteur 4:1, les "données constructeur" disent que le couple commence à chuter entre 2500, 3000 tr/min, ce qui devrait me permettre d'atteindre la vitesse et le couple dont j'ai besoin.

je vais essayé de le faire, il me semble avoir essayé et çà ne fonctionnait pas bien.

Désolé, je ne comprends pas ce que tu veux faire ?

Donc, tu es en mode demi-pas seulement.

La vitesse de 1050 tr/min pour un Nema 42 ne correspond pas au tableau du site :
https://www.omc-stepperonline.com/fr/support/quelle-est-la-vitesse-maximale-frequence-la-plus-elevee-du-moteur-pas-a-pas

Motor Size Max. Speed (tr/min) Vitesse de travail recommandée (tr/min)
Nema 34 (86x86) 1000 100-400
Nema 42 (110x110) 500 100-300

Tu utilise un Nema 34 ou un Nema 42 ?
Dans le titre c'est Nema 42 !

De quel mode servo tu parles ?
Sais-tu à quoi correspond le mode boucle ouverte ou boucle fermée avec ce type de matériel ? La notice indigente d'à peine 10 pages, pour la version le plus copieuse, ne me permet pas de comprendre.

Désolé, c'est bien un nema42 (closed loop) je ne l'avais pas précisé.
20Nm, 0 à 2000 tr/min

Quelle est la différence entre un "closed" et un "open" ?

"Closed" me fait penser à boucle fermée et boucle fermée me fait penser à un asservissement : commande, boucle de retour, correction.

Mais asservir quoi ?
La position comme un vrai servo moteur, je ne crois pas, asservir en vitesse alors ?

Dans ce forum, il y a des compétences diverses, mais ce n'est pas un forum de professionnels des moteurs pas à pas.
Il faut que tu y mettes du tien pour donner toutes les informations.

Bonjour zum

Si ton moteur est câblé en servo:


Pour autant que je sache (je n'ai pas ce type de moteur), le glissement ou perte de pas est "impossible". Partant de ce fait, s'il y en a à cause de problème électrique ou mécanique, il doit y avoir une alarme sur la sortie idoine (ALM).
Ca pourrai te donner des indications.

Cordialement
jpbbricole

Bonjour 68tjs

Open est un Nema "tout nu".
Closed il est équipé d'un circuit:


qui permet de contrôler sa position et qui se câble sur le driver:

C'est pourquoi on appelle ça un servo.

Bonne après-midi.
jpbbricole

il n'y a pas d'alarme visible, en tout cas la diode de l'alarme ne s'allume pas, je vais essayer de câbler ALM pour voir si çà donne quelque chose.

En gros, un moteur à boucle fermé avance à l'aveugle et un moteur à boucle fermé a un encodeur qui envois des infos au driver sur , entre autre, la position du moteur ce qui permet au driver d'ajuster suivant ce qui se passe.
Par exemple si tu bloque la rotation du moteur avec assez de couple, quand tu relâche le moteur va reprendre une rotation pour atteindre la position qu'il devait atteindre.

https://www.omc-stepperonline.com/fr/support/qu-est-ce-qu-un-moteur-pas-a-pas-en-boucle-fermee?srsltid=AfmBOoppa5GbX90LIY0yvsrrUpubXHLF-b7WnLEx0anmeUs1yLFun9H3

J'ai fait des essais avec un TC55V, tout est ok. Donc les problèmes sont avec l'esp et/ou l'alim et le code.
Le moteur, driver et leurs liaisons sont ok, la liaison driver->TC55V et driver->esp est la même.

Le TC55V est une solution de secours si je n'arrive pas à faire ce que je veux. Mais il est très limité au niveau de la programmation vitesse, couple, accélération, ... .

Je n'en suis pas si sûr.

  • Le code je n'ai pas d'avis.
  • L'ESP32 et l'alim sont, pour moi, totalement hors de cause.

Il reste :

  1. le câblage, tu dis qu'il est correct, personne n'a les moyens de le vérifier.
  2. l'adaptation des niveaux entre l'ESP32 et le HBS86H.

ESP32 sortie Drain ouvert.
Personne n'a répondu. On ne sait pas si c'est possible. Je rappelle que j'ai cherché, mais je n'ai pas trouvé l'information.

Entrées HBS86H
Ben c'est le bordel, ce qui tient lieu de datasheet contient des âneries, voir message #45.
On ne connait pas le courant minimal qui doit traverser la diode, ni la tension aux bornes de la diode.
La valeur de 3 V trouvée en utilisant les équations (1) et (2) ne me parait pas fiable.
Dans le silicium pour un optocoupleur, on utilise plutôt le proche infrarouge (0,8 µm ou 0,9 µm) et le Vd est plutôt proche de 1,2 V / 1,6 V.

Seule voie : demander des informations auprès du fabricant du HBS86H.
Au minimum obtenir la référence de l'optocoupleur ou ouvrir le boîtier et la relever.
Si ce n'est pas un CI chinois inconnu, on verra ce qu'il y a dans sa datasheet.

Éventuellement, dans la configuration avec un ULN2803 ou ULN2003 mesurer la tension aux bornes de la résistance R et compte tenu de sa valeur ohmique, calculer le courant qui traverse la diode.
Mesurer aussi la tension en entrée d'optocoupleur, si la résistance interne fait bien 270 ohms, je deviens méfiant, cela permettra de connaitre la tension Vd.

Mesures simples à faire en statique avec un voltmètre, ce serait mieux en dynamique avec un oscilloscope.

Bonsoir à tous,

J'ai étudié une autre piste, j' utilise les bibliothéques Stepper et AccelStepper dans mon code.

Je suis parti du principe que peut être les bibliothèques géraient mal les temps entre les impulsions pour ce driver.
J'ai donc commencer à réécrire le code sans bibliothèque, avec les temps trouvé dans le manuel du driver, pour tester si çà fait une différence.

Et donc après une série de 50 * (30 tours puis - 30 tours) soit 3000 tours de moteur, avec une alimentation 5V avec laquelle ca ne fonctionnait pas.

J'AI AUCUNE ERREUR DE POSITION !

(PULS sur ULN2803 en 5V le reste en 3.3V)

Je vais continuer les tests avec d'autres alimentation, et un montage tout en 5V mais vraisemblablement il y avait quelques nanosecondes en plus ou en moins au mauvais endroit qui générait de petites erreurs.

Le hic c'est qu'il faut entièrement recréer un code qui gère tout, accélérations, décélérations, ... Mais bon çà fonctionne !

J'ai essayé 1800 tours moteurs avec tout en 3.3V et une alimentation qui ne fonctionnait pas, aucune erreur.

Quand tu ne mets pas d'essence dans ta voiture et qu'elle ne démarre pas, tu dis qu'elle est en panne ?

Arrête d'accuser le matériel !
Le bug est toujours entre la chaise et le clavier.