Conception d'un logiciel pour CNC d'assemblage de pièces

  • Auteur de la discussion louloute30
  • Date de début
L

louloute30

Compagnon
Mach3 est un bon programme, mais hélas, il est limité à 1000 lignes de code (si on n'achète pas la version libre)

C'est alors que je me suis penché sur la question...

Il y a quelques temps, j'ai conçu un bon début de programme qui n'était pas du tout destiné à la CNC, mais il s'agissait d'entrer des coordonnées dans un système (X,Y,Z) et de voir le rendu en 3D:

Ensuite, il ne s'agira plus que d'expliquer au prog les possibilités de développer chaque pièce et de les découper sur une plaque de bois ou autre... Donc, vous l'aurez compris: c'est plus un logiciel de 2D que de 3D, mais conçu pour faire des pièces de machines à assembler.

Soit, je sors du programme un fichier Gcode, mais il risque à coup sur de dépasser les 1000 lignes, soit j'envoie le tout à la CNC directement par le port LPT.

Le soucis, c'est: Je sais travailler avec le port LPT directement via la prog, mais en revanche, comment le composant interprète t il les info?

En prog, voila ce qui est faisable: travailler en milliseconde, et mettre un 5V ou 0V sur l'une des pattes du port lpt1.
Alors mes questions sont les suivantes:
Est-ce que tous les composants de toutes les cartes interprètes les info de la même façon?
Est-ce qu'en envoyant un 5V sur une patte pendant 1 milliseconde, cela équivaut à la rotation d'1 pas sur un moteur?

Merci de m'éclaircir tout ça...

cnclog.jpg
 
O

ordinerf

Compagnon
chouette projet, en ce qui me concerne j'ai étudié l'inverse c'est à dire du G-codes à la machine et pour cela il faut utiliser le système de base d'envois d'info pour imprimante, c'est assez simple et en fait c'est juste d'envoyer les bonnes infos sur le LPT1 au rythme demandé par le programme et attendre que la carte te renvois l'info comme quoi elle a bien prit les infos.
la vitesse de déplacement des moteurs est géré par la fréquence d'envois des infos du pc.
par exemple si le moteur M1 doit tourner de 10 pas pendant que le moteur M2 tournera de 5 pas pour la même ligne de commande, et bien ton programme doit envoyer sur le port LPT1:
1 pas => M1 et 1 pas => M2
1 pas => M1 et 0 pas => M2
1 pas => M1 et 1 pas => M2
etc...
jusqu'à ce que le M1 ai fait ses 10 pas et le M2 ses 5 pas, ce qui normalement doit se finir en même temps vu que c'est rythmé et qu'on fini la ligne de commande pour passer à la seconde ligne :wink:

sachant que le programme est linéaire donc tu prend la ligne, tu la décompose puis tu fais tes boucles qui envois les infos quand il faut, une fois les boucles fini tu passes à la ligne suivante sans perdre l'emplacement X,Y et Z précédent.

bien évidemment tu dois prendre en compte les paramètre de ta machine comme la vivacité, le nombre de pas par mm, etc...

une fois que tu as chopé cela tu peux te faire un programme d'enfer même en basic...

le souchis c'est que certaine carte ont un mode un peu différent des autres, sinon en général elles suivent le principe de l'imprimante, la seule vrai différence c'est que les cartes n'ont pas de mémoire du coup le pc leur envois les infos en direct et en continu.

comme pour les imprimante, tout est question de drivers.

c'est assez simple en faite :)
 
J

jvr33

Ouvrier
bonjour
En prog, voila ce qui est faisable: travailler en milliseconde, et mettre un 5V ou 0V sur l'une des pattes du port lpt1.
Alors mes questions sont les suivantes:
Est-ce que tous les composants de toutes les cartes interprètes les info de la même façon?
Est-ce qu'en envoyant un 5V sur une patte pendant 1 milliseconde, cela équivaut à la rotation d'1 pas sur un moteur?

je pense que le système de transmission de données via le port lpt de l'ordi vers une carte de gestion de moteurs, doit être normalisé.
Car on trouve un grand nombre de cartes pour la gestion des moteurs, et toutes ou presque se connecte sur le port lpt de l'ordi.

fait une recherche sur Google du genre "normes gestion moteur pas a pas" :wink:
 
L

louloute30

Compagnon
exact jvr33. Merci

***(Pour moi :

http://www.vbfrance.com/forum/sujet-GES ... 07228.aspx

http://www.delporte.org/travaux/moteur.htm


)***

J'ai beau cherché, et je ne trouve pas grand chose.

Je vais donc partir sur ca:
a) 1 broche correspond au sens de rotation: 1 => horaire 0=> anti horaire
b) 1 seconde broche commande le nombre de rotation d'un pas: j'imagine une impulsion = 1 rotation d'un pas

Dans ce cas, le programme (même comme mach3 est qq ch de très rapide à faire.)

Voici alors mes pages:

1) Calibrage prise en compte des butées d’arrêt de fin de course, de l'accélération et de la vitesse, rectification des valeurs
2) Prise en compte des relais éventuellement

3) Page d'affichage 3D de la situation de la tête de fraise, vitesse, Arrêt d'urgence, mise à 0, mise à 0 provisoire, déplacement...

4) Page de conception: Calibrage de la largeur de la mèche, nombre de passe, vitesse des passes, simulation du temps de réalisation, et lancement
 
O

ordinerf

Compagnon
dans ton 1er lien il te dise en mieux ce que j'ai dis c'est à dire suivre le principe des imprimante, c'est tout pareil sauf que les données changent, en général de D0-D1 = moteur1, D2-D3= moteur2, D4-D5=moteur3 et D6-D7= moteur4.

tu n'as pas à te prendre la tête sur le voltage, c'est le pc et la carte qui font tout.

tu peux te faire un ti programme en Basic super simple pour envoyer une info à ta carte pour faire tourner un moteur de X pas et tu va voir que c'est simple, après à toi de modifier les infos pour changer le sens de rotation des moteurs, leur vitesse, etc...

après les fin de courses et autre info sont des élément à contrôler sans arrêt par le programme lors d'une pause cyclique dû à la vitesse de déplacement des moteurs, ainsi tu sais qu'au pire en cas de blocage un des moteurs n'aura fait qu'un pas de plus donc sans crainte pour la machine.

base toi sur ton 1er lien, tout est dit et c'est simple.
le plus long est l'aspect graphique du programme mais pas la partie gestion moteur et entrée-sortie des infos :wink:

PS: si tu maîtrise le binaire alors programme tes commandes du port LPT1 en binaire, c'est bien plus simple qu'en héxadécimal parce que tout saute au yeux, ce n'est qu'un remplissage de 0 ou de 1.
par exemple à l'adresse de D7 à D0 il est plus facile de mettre b00100101 pour demander aux moteur un pas en sens normal ou inverse plutot que de mettre h25 qui ne veut rien dire :rirecla:
 
L

louloute30

Compagnon
Oui, tout à fait. par contre, j'utilise VB pour faire la prog. et VB veut de l'hexa. Bref, j'ai donc rapidement créer une fonction qui permet de passer du binaire à l'hexa de facon à éviter de me tromper...

J'ai bien compris alors: 1 impulsion = 1 pas

Mais pour les demi pas? c'est la carte qui gère ca?, ou je dois jouer avec le prog:
11000000
01000000
en boucle?

Pour le reste, en fait, c'est facile... Y a plus qu'à déterminer la vitesse.. et tout est bon...
 
O

ordinerf

Compagnon
certe il veut de l'héxa mais rien ne t'empêche d'écrire en binaire et de le passer en héxa comme tu as dit, c'est pas lui qui commande :)

la vitesse est fonction de la fréquence de transmission des données, la carte s'en moque, c'est le pc qui gère tout, la carte est bête et ne fait que transmettre les ordres aux moteurs quand on lui demande.
donc quand la carte doit faire une pause le pc ne lui envois rien tant ou que du vide tant que la prochaine impulsion n'est pas demandé.
en faite c'est le "rien" qui détermine le temps qui s'écoule entre chaque pas et donc la vitesse de rotation du moteur.
il ne faut pas oublier que la VRAI vitesse c'est la fréquence moteur donc le nombre de pas par seconde, le fameux PPS qui au maxi tourne dans les 2000 pas/s pour un moteur classique.
si tu lui envois une info par minute, la vitesse de rotation sera donc de 1pas/min soit 0.0167 pas/s.
si le rapport est de 1mm/200pas alors tu auras une vitesse de déplacement de ton chariot de 0.0167x200=3.334mm/s soit 200mm/min

le traitement de l'info par la carte demande un temps très court, voir infime mais de toute façon on s'en moque vu que même si il y a un décalage d'un temps T alors ce décalage sera aussi sur les autres infos mais sans qu'elles perdent leur fréquence donc pas de soucis à se faire :)

les demis pas ou 1/4 de pas c'est en fonction du nombre de pas/tour, sur certaine carte on doit annoncer à Mach3 (par exemple) 2 ou 4 fois le nombre de pas par mm ce qui donne, pour une vitesse de 20pas/mm, 40pas/mm ou 80pas/mm et ainsi la carte prendra les infos par demi ou quart de pas.
ne pas confondre avec le passage d'un pas à un autre par variation progressif du courant qui évite l'effet escalier du pas à pas, dans ce cas on envoit les infos normalement par pas et c'est la carte qui gère le passage de l'un à l'autre mais ce n'est pas du demi ou quart de pas, c'est du pas à pas avec variation progressif du courant, ça un nom mais je ne m'en rappel plus :oops:

de toute façon le plus simple est de faire un essais, si ton moteur à 200pas/tr, tu lui envois 200 infos et si il fait un tour c'est bon, si il en fait 1/2 alors tu es en demi pas et si il en fait 1/4 tu es en quart de pas :wink:
 
L

louloute30

Compagnon
Il est sur le point de se terminer... Seul pb:

J'attends d'avoir mes chaines et mes 4 poulies pour faire les premiers test (voir si ma prog est bonne...)

En fait, ca m'a pris qq heure à améliorer l'existant (mon prog 3D).

Je pourrais essayer dans le vide, mais de là à dire que c'est parfait, il y a une sacré différence...

Je vous tiens au courant...

Un prog que je mettrai probablement à la porté de tous une fois testé, et terminé. Comme ça, vous me direz ce que vous en pensez...
 
O

ordinerf

Compagnon
rien ne t'empêche de tester à vide, tu met du scotch sur l'axe des moteurs et tu vois si ils tournent bien comme il faut :wink:
 
L

louloute30

Compagnon
Voila que 2 images du prog pour le moment:

J'ai fais un rapide copier-coller de 2 page seulement, n'ayant pas eu trop le tps d'en faire plus. Mais le prog est bien plus complet que ces 2 pages.

Je les donne juste pour que vous puissiez donnez votre avis:

J'ai vu que sur mach3 il y avait plus de fonctionnalité sur l'écran principal, mais est-ce utile de les avoir en écran principal?

logcnc2.JPG
Étalonnage de la perpendicularité des axes X et Y

logcnc.JPG
Ecran principal lors du fraisage
 
E

erolhc

Guest
Faire tourner un moteur apres l'autre pas tres compliqué (relatif) mais quid si les moteurs doivent tourner en même temps (syncro pour faire un cercle)?
C'est la carte qui gere ou le programme ?
 
L

louloute30

Compagnon
C'est le programme chlore. Ce ne sont que des formules trigonométriques qui détermineront les coordonnées du point ou les moteurs devront se rendre.
 
L

louloute30

Compagnon
Voici une petite suite...

cnclog4.JPG
Etalonnage Z

cnclog3.JPG
Paramétrage des broches du port LPT1
 
H

horsot

Compagnon
Bonsoir,

Même pour faire une ligne droite ce n'est pas si évident que cela. En effet, il faut que tes axes qui ont le moins de chemin à faire "asservissent" leur vitesse pour suivre celui qui en a le plus. De manière générale il faut que tes axes puissent asservir leur vitesse et leur accélération à l'axe le plus contraint tout en garantissant la trajectoire.

Je ne vous parle pas de la "liaison" entre 2 mouvements sans faire de "stop" entre chacun des mouvements.

Pourquoi ne pas utiliser EMC2? Il est modulaire et utilisé pour piloter des systèmes d'assemblages complexes.


Xavier
 
E

erolhc

Guest
louloute30 a dit:
C'est le programme chlore. Ce ne sont que des formules trigonométriques qui détermineront les coordonnées du point ou les moteurs devront se rendre.

Ok
Mach 3 prend quasiment la main sur windows pendant les opérations d'usinage car comme windows n'est pas un OS temps réel il risque d'y avoir des surprises sinon (je pense a des arrets des axes en court d'usinage par exemple parce que windows a décidé que le port LPT n'etait pas prioritaire et donc des défauts d'aspect etc ...)

Sinon moi ton prog m'intéresse mais pas pas pour usiner mais plus pour une machine de mesure tridi et là le probleme de la sychro est moins important
 
L

louloute30

Compagnon
Je n'ai jamais vraiment testé EMC2, puisqu'il ne fonctionne que sous linux, et je ne compte pas l'installer...

Je sais qu'il faut que je prenne en compte la vitesse max et l'accélération. D'ailleurs, je vais de suite le rajouter (Oubli de ma part, mais c'est aussi pour cela que je mets les pages du logiciel ici, pour que vous me le rappelez).

Pour ce qu'il s'agit des logiciels, en fait je n'en n'ai jamais trouvé un ou l'on pourrait créer un meuble en 3D par exemple, et lui décortique chaque pièce et les fabriquent sur une grande planche.
Ensuite, je n'ai jamais non plus trouvé de programme capable de reproduire un motif que l'on donnerai à la va vite (comme des losanges ou des cercles de hauteurs différente prise par une photo et d'intégrer les données afin de pondre un G-code.

Ensuite, mach3 est super pour la réalisation à partir d'un G-code, mais le problème, si l'on ne l'achète pas, on est limité à 1000 lignes.

Enfin, j'adore la prog, et si je pourrais relier un paquet de programme que j'ai réalisé durant des années, alors ça serait le top.
 
H

horsot

Compagnon
chlore a dit:
Mach 3 prend quasiment la main sur windows pendant les opérations d'usinage car comme windows n'est pas un OS temps réel il risque d'y avoir des surprises sinon (je pense a des arrets des axes en court d'usinage par exemple parce que windows a décidé que le port LPT n'etait pas prioritaire et donc des défauts d'aspect etc ...)

Le "quasiment" est à souligner. Sans réécrire le noyau de windows, mach3 ne sera jamais capable de garantir une quelconque trajectoire (et stabilité) sans carte d'interpolation. Lancer le moindre programme lorsque Mach3 est en route et vous verrez qu'il n'a pas du tout la main sur le système.

Je ne vais pas refaire le topo mais même EMC2 sous linux temps réel ne garanti la trajectoire qu'avec une incertitude. Dans ce cas incertitude est bornée et connue (lié à cause du "jitter" de ses "threads" temps réel).

Le meilleur système temps réel (largement connu et diffusé) reste DOS qui laisse complètement la main au programme qu'il lance. Mais c'est DOS avec ses fonctionnalités qu'il offre...

Xavier
 
L

louloute30

Compagnon
chlore a dit:
Mach 3 prend quasiment la main sur windows pendant les opérations d'usinage car comme windows n'est pas un OS temps réel il risque d'y avoir des surprises sinon (je pense a des arrets des axes en court d'usinage par exemple parce que windows a décidé que le port LPT n'etait pas prioritaire et donc des défauts d'aspect etc ...)

J'ai déjà utiliser le port LPT1 pour réguler un système d'éclairage de "soirée dansante", et je n'ai pas encore rencontrer de problème pour le moment...

Espérons qu'il n'y en aura pas... :oops: :cry:
 
E

erolhc

Guest
louloute30 a dit:
chlore a dit:
Mach 3 prend quasiment la main sur windows pendant les opérations d'usinage car comme windows n'est pas un OS temps réel il risque d'y avoir des surprises sinon (je pense a des arrets des axes en court d'usinage par exemple parce que windows a décidé que le port LPT n'etait pas prioritaire et donc des défauts d'aspect etc ...)

J'ai déjà utiliser le port LPT1 pour réguler un système d'éclairage de "soirée dansante", et je n'ai pas encore rencontrer de problème pour le moment...

Espérons qu'il n'y en aura pas... :oops: :cry:

Ce n'est pas vraiment le même ordre de fréquence (200 pas par tour en 1 s = 200 allumages extinctions des lumières .... c'est pire que de la stroboscopie de boite de nuit :-D ) enfin bon tu verras bien si l probleme se pose

Par ailleurs il faut bien que tu gere la vitesse de déplacement et si windows "bufferise" (ce qui est probable sinon perte d'informations) le port LPT cela va faire désordre en cours d'usinage si les step partent d'un seul coup
 
L

louloute30

Compagnon
oui chlore :lol:... j'improviserai si le cas se présente.



La vitesse et l'accélération n'est pas vraiment ce qu'il y a de plus compliquer à expliquer à un programme:
vitesse max = B (une constante)

accélération= A * x (Linéaire)

Pour ce qui est de relier plusieurs axe avec pour contrainte majeur l'accélération maximum:
la formule de l'accélération de(s) axe(s) mobile sera alors le A le plus faible (des axes mobile), avec pour limite le B le plus faible des axes mobile

(Je sais pas si j'ai été assez clair, mais bon, s'il y a qq'un qui m'a compris, pourrai-t-il alors me confirmer ma théorie?

cnclog5.JPG
Modification Etalonnage moteurs X et Y

cnclog6.JPG
 
E

erolhc

Guest
J'arrete de faire le rabat joie :-D

Je comprend pas bien ta question

L'accélération et la vitesse max ne sont pas liée mais en cas d'interpolation circulaire l'accélération maxi sera (devra) celle la plus faible des deux axes et la vitesse max sera celle la plus petite des deux

Tu peux prévoir aussi le backlash éventuel par axe dans ton etalonnage
 
O

ordinerf

Compagnon
je donne mes avis mais de façon non visé, juste pour complété ce sujet :oops:
je pense qu'il faut un peu quitter le concept de Mach3 pour viser autre chose, voir la présentation et l'usinage sous un autre angle, sinon autant prendre Mach3.
je confirme que Mach3 n'est pas priortaire sur windows, il fait des trucs très bizarre si on lance un logiciel en même temps et pire si on va sur internet, c'est pour cela que j'ai un pc uniquement fait pour contrôler les machines et il n'a ni internet ni rien d'autre.
ainsi pas de soucis.
concernant le programme pour contrôler les moteurs PAP c'est de principe très simple mais comme tout programme il faut savoir le faire bien et donc bien géré les infos entrée/sortie et les données qui définissent l'usinage.
après ça roule tout seul, qu'on est 1 ou 4 moteurs ce n'est pas un soucis.
 
E

erolhc

Guest
Tant que tu adresses le port // pour faire de l'usinage tu fais du mach3. Après que la présentation (look) soit différent

Mach3 ou autre n'est pas la question : c'est le principe même d'utiliser le port parallèle sous windows qui peut poser problème ... a moins de hacker windows comme font mach3 et consorts pour avoir un minimum de performance ... ou d'avoir une électronique au cul du port LPT qui va palier aux problèmes engendrés par windows (ou autre OS préamptif) mais dans ce cas là autant utiliser le port série

Tant que tu utilise le standard windows tu ne gères pas les entrées sorties c'est lui qui gère. Après il faut voir les performance attendues en terme de vitesse (fréquence des pulse/dir)

Comme dit Louloute30 il verra bien le moment venu
 
L

louloute30

Compagnon
De toute évidence, il y a une sérieuse ressemblance avec mach3.

Mais je suis obliger de passer par ces détails pour arriver à autre chose. Mach3 est bien, mais ne fait que de l'usinage à partir du g-code.
et il faut dire que ayant quasiment terminé la prog des pages montré ci-dessus, je peux vous dire que sincèrement, même en y rajoutant plusieurs données, j'ai un peu de mal à concevoir que le tarif réclamé (pr mach3 illimité) soit à la hauteur de la prog (bien trop cher).
Mais dès lors que ce que j'ai fait est fonctionnel, alors, je pourrai rajouter au logiciel des info supplémentaires à prendre en charge.
C'est vrai, c'est un peu plus un prog pour moi, que pour tous (quoi qu'encore) mais il sera bien différent en ce point des autres:

Ce que je compte faire, c'est plus un logiciel qui permet de réaliser un meuble en 3D (association de 10 planches par ex pr étagères, cotés...), et le prog déterminera alors les découpes, perçages et/ou motif à sculpter sur les parois, ainsi que le nombre de planche nécessaire... Bref, un bon petit truc.
Il réalisera alors un puzzle sur une planche pour faire les 10 (si elles passent toutes)

La partie réalisation du meuble en prog a déjà était faite, reste à ce que j'améliore un peu la déco (quoi qu'encore si c'est clair, on s'en fou un peu).

ordinef => Comme je sais que tu as l'habitude d'utiliser mach3 ou similaire, c'est vrai que j'attends de toi (et de tout le monde aussi) de me guider, aider sur les choses intéressantes à mettre et celles à éviter
 
O

ordinerf

Compagnon
je précise bien que je ne critiquais pas ton travail mais que je parlais de façon général en comparaison avec ce qui se fait actuellement dans ce type de logiciel :wink:
 
M

MJL

Ouvrier
louloute30 a dit:
Je n'ai jamais vraiment testé EMC2, puisqu'il ne fonctionne que sous linux, et je ne compte pas l'installer...

Pas besoin de l'installer, tu lances le liveCD, tu fais ce que tu as a faire, puis tu redemarre ton windows.

Mon avis est, bien que tu as l'air de bien maitriser la programmation windows, tu réinvente la roue. Pour une fois, qu'il existe un logiciel gratuit et tres performant pour faire ce que tu veux faire, pourquoi ne pas l'utilisé ...

Faire une interpolation linéaire suivant une courbe d'acceleration est simple (du moins en 2D), ca se complique en 3D et c'est franchement autre chose quand on fais de l'interpol circulaire ou helicoidale ...

Pour ton histoire de meuble, il existait un add-on a sketchup qui faisait des eclaté 2d de forme 3d mais je ne me souviens plus du mon désolé.
 
L

louloute30

Compagnon
Sinon, en attendant que je finisse mon premier prog, voila un petit utilitaire qui peut être sympa pour les utilisateurs de mach3 par exemple... Pour les autres aussi...

Je l'ai fait rapido...

Explication:

Vous souhaitez créer un G-code à partir d'une image Bitmap (.BMP uniquement ). Sur cette image vous avez 4 couleurs (jaune, noir, rouge, et bien sur blanc pour le fond)
Vous pouvez alors indiquez à l'utilitaire quel profondeur vous souhaitez avoir pour la couleur indiquée
ex: jaune -5mm
noir -10mm
rouge: -7mm
et blanc (la couleur d'origine du Z) +1 qui permet de passer au dessus de l'objet...

Le prog créera alors votre code G-code que vous pourrez copier collé dans un fichier .txt ou autre...
Au passage, le prog peut aussi changer l'échelle de votre dessin, effectivement, il lit le pixel, donc si vous avec un fichier de 2000px*2000px, il vaudra mieux peut être modifier l'échelle :lol:
PS: L'échelle ne dépend pas de la taille de l'image, mais multiplie le pixel par la valeur souhaité. Aussi, il est préférable d'utiliser tjrs des valeurs inf à 0, comme le prog ne crée pas encore de G2 (Il ne travaille que sur le G0 et G1)...

Je vais rajouter plus d'option au fil du temps (Le G2, et créer un générateur de motif par lui même).
ex:


PS: Je n'ai pas testé le G-code obtenu, mais à la lecture à vu, il me semble bon.

PS2: Le programme peut parfois s'avérer TRES long (plusieurs minutes) pour pondre le G-Code... alors vous pouvez faire autre chose en attendant... Voir la pièce jointe générateur de G code.rar
 

Sujets similaires

laurenttanguy
Réponses
0
Affichages
1 063
laurenttanguy
laurenttanguy
R
Réponses
11
Affichages
1 654
Rico le bricolo
R
Haut