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.
2-Fréquence des impulsions envoyées aux moteurs pas-à-pas
L'interface de génération du Gcode permet d'introduire les paramètres nécessaires à l'usinage:
Pour notre exemple 1793 instructions Gcode ont été générées.
L’exécution de ces étapes sera illustrée prochainement par une vidéo.
A suivre ...
Mon email : blogger.maroc@gmail.com
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
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) :
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 |
- 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é |
(Laissez moi un peu de temps pour procéder au
montage de la vidéo)
Mon email : blogger.maroc@gmail.com
bonjour
RépondreSupprimerJe suis intéréssé par la suite, quel algorithme utilisez vous ou avez vous fait pour ces différentes étapes.
cdlt
salut,
RépondreSupprimerl'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
bonjour,
RépondreSupprimerj'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.
belle réalisation ou on trouve le soft il et possible de fair sur un arduino
RépondreSupprimermerci
le soft je l'ai développé moi même. je n'ai jamais utilisé arduino
Supprimerje 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 ???
RépondreSupprimermerci
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 ???
RépondreSupprimermerci
Hi bloggermaroc , please share you VB6 CNC source-code? and others VB6 sources if you have? thanks !
RépondreSupprimerflaviohsilva007@gmail.com