Ma CNC avec un raspberry pi4

K

kooroshtux

Nouveau
Bonjour à tous!

Je me permets de poster car j'arrive toujours pas à comprendre le calcul pour determiner quelle alimentation externe avoir pour raccorder des moteur P.aP sur une raspberry.

J'ai consulté divers topic et site sur internet maistoujours obscure sachant que je compte procédé d'une manière assez unique car je suis entrain de créer mon propre logiciel CNC basé en Python V3 .

Je précise, ma cnc sera un prototype expérimental basé en Python.

Pour revenir sur les moteurs, je dois pouvoirs controler minimum 4 moteurs nema 17, et d'apres ce que j'ai lu , j'aurais besoin de deux cartes HAT ("https://boutique.semageek.com/fr/845-dc-stepper-motor-hat-pour-raspberry-pi.html") car evidement ma cnc feras plusieurs axes.

Voici moteur avec driver qui me parrait bien pour ma petite cnc labo (700mmx500mm)
("https://www.amazon.fr/TopDirect-56-...S6MYESSH0Q1&psc=1&refRID=XWN64JP2ES6MYESSH0Q1")

Ma question est: avec un Raspberry PI4 ou PI3, comment calculer l'intensité nécéssaire au bon fonctionnement de 4 moteurs PaP voir plus ?
je sais que la formule si je me trompe pas c'est : I = P / U mais en j'arrive toujours pas a calculer et choisir la bonne alimentation.

Merci de votre aide .
 
Dernière édition:
B

benguru

Nouveau
Salut,

Je ne suis pas un expert en machine CNC mais en revanche je me débrouille avec la loi d'Ohm :-D

Si tu utilises les éléments dont tu as mis les liens dans ton poste tu peu trouver les informations suivantes:
- Moteur pas à pas: Courant nominal (une phase): DC 1.7A
- Pilote du moteur pas à pas: Tension d'alimentation: DC 9V-42V & Courant de sortie: IOUT = 4.0A (crête, en 100ms)

Malheureusement les specs ne précise pas sous quelle tension ce courant est délivré (du coup c'est nul... mais on peu faire des petites estimations)

Aussi on sait que la puissance est "en théorie" constante ainsi le driver ne tire le courant max (4 A) seulement pour les tensions faible d'alimentation; ainsi on a Pmax=U*I=9*4=36W.
Ainsi si tu alimente en 24V tu devrais n'avoir besoin que de 1.5A.
Bon après il y a des histoires de rendement et d'autre choses qui vont dépendre de la régulation en tension/courant faite par le driver (c'est au dela de mes compétences en la matière j'ai bien peur)

Prendre des marges de 2 pour la puissance est aussi une bonne pratique car cela réduira l'échauffement de tes alimentations.

Du coup récapitulons:

Pour la Raspberry tu as besoin de l'alimentation 5V 2A standard.

Pour 4 moteurs PaP tu auras besoin d'une alimentation capable de fournir P=4*marge*Pmax=4*2*36=288W
Ainsi si tu choisi une alimentation 12V capable de délivré 300W (soit 25A max) tu devrais être largement bon !
Plus tu choisiras un alimentation capable de fournir une grande puissance moins elle chauffera (en théorie).


Celle-ci ferais l'affaire selon moi, elle laisse même de la marge pour des futurs upgrades !

J'ai hâte de voir la suite de ton projet !
Bonne continuation.

Benjamin
 
P

picator

Ouvrier
Je m'abonne aussi à ce fil.
J'ai un Raspberry qui dort sur une étagère et j'ai beau arpenter tous les Github, je ne comprends rien à Python et lorsqu'il me semble que : ben non.
Le raisonnement et le calcul de Benguru me semble aussi juste. Donc pour faire pratique, une alimentation de micro-ordinateur dite à découpage délivre du 12 (rouge et noir), du 5 (jaune et noir), du moins 12 (ou 12 inversé), là je ne me souviens plus, etc.
Les grands standards font 400 watts et pour quelques euros, il y en a plein les brocantes. En plus, elles sont toutes ventilées.:-D
 
Dernière édition:
C

cr-_-

Compagnon
Bonjour,

Pour la partie alim 30A en 12v est très largement surdimensionné:
Un moteur pas à pas 17HS4401 supporte 1,7A/phase pour 1,5Ohms/phase ce qui donne selon P=UI et U=RI -> P=1.7*1.7*1.5 = 4.3 W pour une phase, comme au maximum deux phases sont alimentées ça donne à peut près 9w

En comptant large avec des drivers à faible rendement on prend 15w par moteur et donc pour 4 moteurs ça fait 60w


Par contre le pilotage de machine à commande numérique implique beaucoup de choses en particulier temps réel et je suis septique sur le fait de faire ça en python, pourquoi ne pas partir d'un soft déjà existant et de mettre ton interface graphique par dessus ?
typiquement un grbl pour la gestion des mouvements et ton interface lui envois ce qu'il doit faire ou un linuxCnc avec une ui plus adaptée ?

Encore autre chose, tu ne peux pas mettre deux hat comme ça il va y avoir conflit dans les signaux, le deuxième est mieux à voir si la puissance du moteur est suffisant pour ce que tu veux faire.
 
M

Momoclic

Compagnon
Salut,
Ces sujets sont pourtant récurrents,

@CNCSERV évoque souvent le problème de l'alimentation et spécifie qu'il faut raisonner en puissance. Ainsi pour des moteurs alimentés en 32 volts et nécessitant 1,5 ampères = 48 watts. Ici il n'est pas tenu compte des pertes diverses. Dans cet exemple une alimentation de 250 watts devrait faire l'affaire pour quatre moteurs PaP.

Mais avant toute chose tu dois avoir défini ton besoin en couple et vitesse, ces deux éléments te feront choisir moteurs pas-à-pas et leur tension d'alimentation. De la il te sera facile de choisir la bonne alimentation.
Un exemple : https://www.usinages.com/threads/re...e-cn-3-axes-pour-metaux-en-gros-tubes.101995/

Par contre des NEMA17 risquent de fournir des couples un peu léger, à moins que tu n'usines que du balsa ?
De même avec de telles courses quelle tension d'alimentation envisages-tu afin d'obtenir des vitesses d'avance raisonnables ?


REMARQUE : Pour les moteurs pas-à-pas il n'est jamais donné de tension de fonctionnement, seulement la tension d'isolement. Et ceci pour une bonne raison la tension d'utilisation détermine la vitesse de rotation. Tout comme l'intensité détermine le couple. Et cette tension doit être compatible avec le driver utilisé.
 
Dernière édition:
K

kooroshtux

Nouveau
oula avant de commencer, merci de votre forte présence sur mon topic :D .
Pour le choix des nema17, ma cnc sera un prototype c'est a dire que je ne vais pas tenter d'usiner comme des fraiseuses proprement parler.

le but de ce projet est d'expérimenter les micro-ordinateur (Raspberry) pour une utilisation temps réel. Mon objectif c'est de localisé les failles, puis trouver des correctifs voir concevoir des logiciels ou application pour y remédier c'est pour ca que j'ai employé le mot "expérimental".

Par contre votre idée de recupérer un soft tel que GRBL et de rajouter ma couche applicatif python est genial j'avais pas pensé à ca ! cela m'a donné beaucoup d'idée de conception par contre c vrai que je suis pas encore bien à l'aise avec les moteurs et leur branchement car d'apres ce que j'ai pu lire, je pouvais empiler plusieurs carte HAT les unes sur les autres mais si vous me dites que c'est pas possible alors y a un HIC et je devoir eclaircir ce trou noir .

Merci encore de votre réactivité :D
 
C

cr-_-

Compagnon
Après vérification les hat moteurs sont bien empilables, les drivers sont en i2c dont il suffit de changer l'adresse, par contre pour le temps réel on repassera du coup
 
J

Jmr06

Compagnon
Je ne comprend pas une chose :
Pour tes moteurs, tu indiques le lien d'un kit moteur + driver. Et tu indique aussi une carte HAT qui a également un driver. cela fait 2 drivers. On ne comprend plus ce que tu veux faire.

Deuxième interrogation. GRBL ne gère pas le temps réel. GRBL pilote une carte Arduino, et c'est le microcontrôleur (sur l’Arduino, c'est un contrôleur, pas un processeur, et c'est sans système d'exploitation) qui assure le temps réel. En Pytho, qu'est-ce que tu veux faire, la sur-couche applicative ou le pilotage temps réel ?

Pour l'alimentation, c'est très simple :
Pour la tension V : tu regardes la tension max acceptable par le driver. Tu choisies une alim avec cette tension moins une marge (par exemple, les 3/4 de la tension max)
Pour le courant I : Tu regarde le couple en N.m et tu multiplie par 100, cela te donne environ la puissance du moteur en W. Tu multiplies par le nombre de moteurs, tu divises par la tension V de l'alim, cela te donne un courant en ampère. Tu choisis une alim qui a au moins ce courant, plus une marge d'environ 20%.

En général, on n'a pas la courbe couple/vitesse des moteurs, ou leur puissance. C'est pour cela que je prend le couple de maintien multiplié par 100. C'est la puissance comme si le couple à l’arrêt était maintenu jusqu'à 1000 tr/min (100 c'est environ 2.pi.1000/60), cela donne une vague idée du la puissance moteur. Mais si on a les courbes, alors bien sur il faut regarder les courbes.

Ça, c'est pour la théorie. Ceci dit, tu peux bien utiliser une alim très surdimensionnée comme proposée par certain plus haut. Vu les petites puissances de tes moteurs, tu ne perdra pas beaucoup de sous. Si tu veux juste un truc qui bouge, une alim de PC avec son 12 V fait l'affaire. Si tu veux un truc dynamique, qui fait des mouvements rapides, il faut monter en tension à la limite de ton drivers que tu as mis en lien. Et là, mieux vaut ne pas trop surdimensionner pour économiser son argent.

Bonne suite pour ton projet en Python.
 
V

vres

Compagnon
La puissance d'un moteur calculée avec la resistance ne donne qu'une puissance équivalente au perte joules dissipée sous forme de chaleur.Il faut ajouter bien entendu la puissance restituée par le moteur P = C.ω. Par exemple si le moteur délivre 1Nm à 600rpm c'est déjà 63W et le double à 1200rpm. (ça confirme les chiffres de jmr06)

Comme les phases sont alimentées en sinus/cosinus on a toujours l'equivalent de puissance d'une seule phase, on ne multiplie pas par deux.
 
Dernière édition:
K

kooroshtux

Nouveau
Parfait , je vais pouvoir m'entrainer théoriquement sur d'autre exemple de moteur pour mieux comprendre ce principe fondamental.

Pour mon projet, un passionné des pays de l'est à réussi a peut pret a faire ce projet en python mais uniquement sur du gravage, imprimante 3d sauf que moi je veux tout réadapté pour de la CNC donc je prefere me basé sur un code tout propre de zero.

voici le lien de ce passionné que je tire mon chapeau : https://www.hackster.io/devicehive/cnc-controller-in-python-e6e020
et voici son github: https://github.com/Nikolay-Kha/PyCNC
 
V

vres

Compagnon
En principe le pilotage n'est pas directement dépendant du courant ou de la puissance des moteurs.
 
O

Otatiaro

Compagnon
Salut,

L'IHM n'est que la partie visible de l'iceberg ... le vrai morceaux de choix c'est l'interpolateur, tu compte gérer combien d'axes synchronisés ? interpolation linéaire, mais aussi circulaire, hélicoïdale, etc ? Synchro d'un ou plusieurs axes sur un capteur de broche ?
Gestion de cycles plus complexes (tous les cycles de perçage spécifiques), voir de cycles de palpage automatisés ?
Gestion du jerk, smoothing entre segments successifs (G187 sur Haas) ?

Pour référence du peux télécharger le manuel de l'opérateur des fraiseuses Haas en ligne, ça te donnera une idée du nombre de g-codes disponibles.

C'est un projet que j'ai aussi, sur le très long terme (mais pas en python ...), et l’interpolateur ne sera très certainement pas sur un raspi mais sur une plateforme dédiée (Cortex-M boosté aux hormones, voir les derniers STM32H7 en M4+M7, le M7 étant réservé à l'interpolateur).
L'IHM n'est pas simple, mais sans interpréteur de g-code, ne sert à rien.

Après tu as la possibilité de te baser sur un hardware déjà existant pour l’interpréteur, et ton IHM ne fera que lui envoyer les données (via une API par exemple), par contre tu risques d'avoir de sérieuses limitations.

Thomas.
 
Haut