1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

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

Discussion dans 'FAO général' créé par louloute30, 13 Novembre 2010.

  1. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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
     
  2. ordinerf

    ordinerf Compagnon

    Messages:
    3 990
    Inscrit:
    15 Février 2008
    Localité:
    aube
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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 :)
     
  3. jvr33

    jvr33 Compagnon

    Messages:
    542
    Inscrit:
    11 Avril 2009
    Localité:
    Merignac 33700
    Conception d'un logiciel pour CNC d'assemblage de pièces
    bonjour
    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:
     
  4. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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
     
  5. ordinerf

    ordinerf Compagnon

    Messages:
    3 990
    Inscrit:
    15 Février 2008
    Localité:
    aube
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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:
     
  6. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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...
     
  7. ordinerf

    ordinerf Compagnon

    Messages:
    3 990
    Inscrit:
    15 Février 2008
    Localité:
    aube
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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:
     
  8. ordinerf

    ordinerf Compagnon

    Messages:
    3 990
    Inscrit:
    15 Février 2008
    Localité:
    aube
  9. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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...
     
  10. ordinerf

    ordinerf Compagnon

    Messages:
    3 990
    Inscrit:
    15 Février 2008
    Localité:
    aube
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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:
     
  11. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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
     
  12. chlore

    chlore Compagnon

    Messages:
    2 329
    Inscrit:
    10 Mars 2007
    Localité:
    Candulonts
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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 ?
     
  13. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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.
     
  14. louloute30

    louloute30 Compagnon

    Messages:
    1 569
    Inscrit:
    5 Juillet 2010
  15. horsot

    horsot Compagnon

    Messages:
    768
    Inscrit:
    28 Mai 2009
    Localité:
    Toulouse
    Conception d'un logiciel pour CNC d'assemblage de pièces
    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
     
Chargement...

Partager cette page