Nombre total de pages vues

Commande machine CNC par ordinateur

Après avoir décrit ma machine CNC maison ainsi que sa partie électronique(voir page principale de ce blog),  j’aimerais aborder ici le volet  informatique permettant de commander la machine.


Bien que le marché actuel offre plusieurs solutions (même gratuites parfois sur le Web),  j’ai voulu, après avoir construit ma machine CNC maison dans mon propre atelier, aller jusqu’au bout et développer une application informatique personnelle qui se plie à mes fantasmes. J’ai choisi donc comme outil de développement : VB6.

Description de l'application informatique

Brièvement, à partir d’une image, l'application informatique génère le Gcode nécessaire pour lancer l'usinage sur la machine CNC. Pour arriver à cette fin, l'application informatique est composée de modules développés permettant :

1-le paramétrage de la machine (assignation des fonctions aux pins du port parallèle)

2-le réglage de la fréquence des impulsions envoyées aux moteurs pas-à-pas en fonction de l’horloge de l’ordinateur utilisé

3-la pixellisation de l’image qui peut représenter un dessin à graver, une écriture dans toutes les langues, un circuit électronique (PCB) avec ses pistes et les trous des composants (la gravure de tels circuits se fait à l’anglaise) ou un dessin de pièces à découper, etc…

4-la génération du fichier des droites composant le dessin

5-l'optimisation du nombre de droites en vue de réduire le nombre d’instructions GCode

6-l'optimisation des déplacements de l’outil hors matière

7-la génération du fichier Gcode en le complétant par d’autres commandes (diamètre et changement de l’outil etc…)

8-la simulation de l’usinage

9-l'usinage proprement dit.


Détaillons ces modules ...
1-le paramétrage de la machine

La plupart des machines CNC pilotées via le port parallèle utilisent le registre de données  pour actionner les moteurs pas à pas.  J’ai fait de même pour la mienne qui  est dotées de 3 axes en utilisant :

Bit 0 : rotation de l’axe X
Bit 1 : sens de rotation de l’axe X
Bit 2 : rotation de l’axe Y
Bit 3 : sens de rotation de l’axe Y
Bit 4 : rotation de l’axe Z
Bit 5 : sens de rotation de l’axe Z

Les bits 6 et 7 restent inutilisés du moment que ma machine n’est dotée que de 3 axes. Mais il est tout à fait possible de leur assigner d’autres fonctions, il suffit que l’application informatique les prenne en considération sans interférer sur  le fonctionnement, parfois simultané, des moteurs. Ceci se traduit par le fait de changer l'état d'un bit du registre de données sans affecter l'état des autres. Un exemple qui illustre ce cas : on lance l'ordre de soulever l'outil pendant que le chariot X ou Y ou les deux sont en mouvement (Notez qu'on modifie les bits d'un même octet).  

En dehors de ces assignations de fonction à l’octet du registre de données, d’autres paramétrages sont nécessaires  au fonctionnement de la machine. L’interface suivante les relate :


Ce paramétrage  correspond aux caractéristiques des moteurs pas-à-pas installés présentement sur ma machine et qui ont un faible couple (on remarque  la faible vitesse de déplacement des axes X et Y). Il est à remarquer  que la vitesse de rotation des moteurs est inversement proportionnelle au  couple fourni. Voici les moteurs que j’utilise:






Ne répondant pas à mes attentes mais qui s’avèrent parfois idoines pour d’autres applications, ces moteurs ont été vite remplacés par les NEMA  57HS13, certes plus que 10 fois plus chers que mes premiers  moteurs, mais fournissent un couple plus important et suffisant pour mes projets :













2-Fréquence des impulsions envoyées aux moteurs pas-à-pas

Si l’on utilise un logiciel ne tenant pas compte des caractéristiques de l’ordinateur utilisé, on doit s’attendre à un désastre :  accrochage des moteurs, casse de la fraise, et dans certains cas une sous exploitation de la puissance réelle des moteurs (lenteur de l’opération d’usinage et de déplacement des chariots hors matière).

D’où l’utilité d’un tunning  ayant pour but  de rendre le logiciel capable de respecter les vitesses de déplacement  de l’outil  mentionnées dans son paramétrage sans risque d’accrochage.

Dans l’application informatique développée, ce tunning est constitué d’un traitement  qui se lance automatiquement à chaque changement d’ordinateur et qui dure 15 minutes. Les résultats de ce traitement  (voir l’interface ci-dessus :  Facteurs de vitesse) sont enregistrés dans une base de données associée à l’application informatique.  Je fais appel à ces facteurs chaque fois qu’un ordre est donné aux moteurs au lieu d’utiliser  le Timer de VB6 qui perd les pédales en dessous de 10 millisecondes.


3-Pixellisation des images et génération du Gcode

Fabriquer une machine CNC maison ou l'acheter est une chose, mais l’exploiter en est une autre. En effet, la machine CNC, considérée comme périphérique de l’ordinateur (au même titre qu’un imprimante, table traçante, etc..), est prête à exécuter des ordres.  Sans ces derniers, notre machine devient futile.

Les ordres exécutés par une machine CNC se traduisent par des impulsions envoyées aux moteurs pas-à-pas d’une durée et selon des fréquences bien déterminées. Ces impulsions sont générées par l’interprétation d’instructions écrites dans un langage normalisé communément appelé Gcode.

Ces instructions Gcode ne sont en fait (du moins une partie) qu’une traduction du dessin (2 dimensions) ou de l’objet (3 dimensions)  qu’on souhaite reproduire sur un matériau (bois, aluminium, etc…) . En langage commun il s’agit de dire à la machine :

Déplacer la faiseuse aux coordonnées (x1,y1)
Baisser l’outil à la profondeur z1
Commencer l’usinage jusqu’aux coordonnées (x2,y2)
Continuer l’usinage jusqu’aux coordonnées (x3,y3)
Lever l’outil
Déplacer la faiseuse aux coordonnées (x4,y4)
Baisser l’outil à la profondeur z1
Commencer l’usinage jusqu’aux coordonnées (x5,y5)
Etc …

En réalité, ces instructions ne font que décrire le dessin à faire reproduire par la machine.
A ce type d’instructions  il faut ajouter d’autres instructions comme par exemple :

Mettre sous tension la fraiseuse
Monter un foret de n diamètre
Mettre hors tension la faiseuse
Etc
Etc
Etc

Effectuez une recherche sur votre moteur de recherche pour s’apercevoir de la richesse du langage Gcode.

Mais….Encore faut-il écrire ces instructions !!!


Ecrire les instructions Gcode à la main est une opération longue est fastidieuse. Il faut donc trouver un moyen qui permet à partir d’une image bitmap de générer automatiquement le Gcode correspondant.


J’ai opté pour la solution qui consiste à détecter les pixels qui m’intéressent (ayant une couleur déterminée), d’enregistrer leurs coordonnées dans un fichier (pixellisation), de les trier, de former des droites quand les pixels sont alignés, et d’optimiser les déplacement de l’outil hors matière avant de lancer la génération du Gcode.



A titre d'exemple, supposons qu’on veuille graver sur une planche en bois l’inscription ‘Ma CNC’. Avec mon traitement de texte je tape ces mots, je choisi la police et la taille des caractères, puis je sauvegarde l’inscription sous forme d’image Bmp.  On obtient l’image suivante :



Exemple d'inscription à graver sur une machine CNC



On remarque que le fond est blanc uni, et la couleur des caractères est rouge uni. J’insiste sur le mot uni.

Ensuite je charge cette image dans mon application informatique pour subir les différents traitements nécessaires à la génération des instructions Gcode.


Quelques photos qui illustrent les différentes étapes (Cliquez pour zoomer) :
Importation de l'image dans le programme

Résultat de la pixellisation 








Génération des droites de déplacement de l'outil hors matière

Génération du Gcode
L'interface de génération du Gcode permet d'introduire les paramètres nécessaires à l'usinage:

  • Les dimensions réelles (dans notre cas la largeur de l'inscription)
  • Nature de la matière à usiner (Bois Alu, etc...). en fonction de la matière, le programme d'usinage choisi la vitesse d'usinage appropriée
  • Diamètre de la fraise
  • Diamètre des trous des composants électroniques (s'il s'agit d'un PCB)









Pour notre exemple 1793 instructions Gcode ont été générées.


Le Gcode généré


L’exécution de ces étapes sera illustrée prochainement par une vidéo.


(Laissez moi un peu de temps pour procéder au montage de la vidéo) 


A suivre ...






Mon email : blogger.maroc@gmail.com







8 commentaires:

  1. bonjour

    Je suis intéréssé par la suite, quel algorithme utilisez vous ou avez vous fait pour ces différentes étapes.

    cdlt

    RépondreSupprimer
  2. salut,
    l'application informatique a été développée en VB6 et la base de données associée est en Access.
    j'avoue que je n'ai pas compris votre question car j'ai utilisé plusieurs algorithmes qui traitent, chacun en ce qui le concerne une fonction bien déterminée.
    j'espère que j'ai été clair

    RépondreSupprimer
  3. bonjour,
    j'ai un bungard pcb, mais ne je pas de logiciel pour piloter la machine, j'ai généré les g codes par mastercam milling, mais quand je faire execution y ce passe rien..aider moi que dois-je faire?
    merci d'avance
    vivement la suite la suite.

    RépondreSupprimer
  4. belle réalisation ou on trouve le soft il et possible de fair sur un arduino
    merci

    RépondreSupprimer
    Réponses
    1. le soft je l'ai développé moi même. je n'ai jamais utilisé arduino

      Supprimer
  5. je suis débutant dans ce domaine et je veux savoir comment convertir le Gcode en binaire (impulsions) pour l'envoyer vers le port parallèle , d'une autre façon que fait le logiciel de contrôle cnc (par exemple Mach3) après qu'il reçoit le fichier Gcode ???
    merci

    RépondreSupprimer
  6. je suis débutant dans ce domaine et je veux savoir comment convertir le Gcode en binaire (impulsions) pour l'envoyer vers le port parallèle , d'une autre façon que fait le logiciel de contrôle cnc (par exemple Mach3) après qu'il reçoit le fichier Gcode ???
    merci

    RépondreSupprimer
  7. Hi bloggermaroc , please share you VB6 CNC source-code? and others VB6 sources if you have? thanks !
    flaviohsilva007@gmail.com

    RépondreSupprimer