Effervecreanet

Pour un monde plus net

Pilotage avec un PC

Photo: imprimante discoeasy 200 fournisseur dagoma

Tout ceci mérite quelques explications avec un peu d'histoire

Au commencement était le port série. De ce port série est né le port USB. Plus élégant que le port série, le port USB achemine dans bien des cas une communication série synchrone ou asynchrone. Le point d'entrée ou le fichier d'accès à une communication série est le fichier COMX oû X est le numéro du port série.

Pour établir une communication série, il suffit d'ouvrir le chemin de ce fichier et de lire ou écrire la data. Ici, la data est une suite d'instructions qu'une imprimante 3D peut comprendre. Sur une imprimante 3D, vous avez 3 axes de déplacement qui sont X, Y et Z. Et pour déplacer selon X alors je vais entrer l'instruction de déplacement G1 X0.10 suivie de G1 X0.20

Pour créer un ébauche manuel de ce que je veux imprimer comme je prendrais un stylo pour faire un écrit le projet dans sa définition très réduite est de relier les flèches du clavier à des déplacements simple comme avancer, reculer, aller à gauche ou droite et lever ou baisser. Le but est également de pouvoir enregistrer l'ébauche et de pouvoir le recharger plus tard.

J'ai vu que deux manières de faire ont l'une et l'autre leurs avantages. Ces deux modes, sont 1) la simulation d'impression et 2) l'impression. La simulation consiste à déplacer le moteur sans qu'il chauffe et sans extrusion de filement pour se faire une petite idée de l'impression future ou non.

C'est pas très sexy mais a le mérite de bien me rendre service.

Page gcode 1

Page gcode 2

Si ce que j'ai fait me convient je l'enregistre et fais ou pas un remplissage et imprime la pièce.

Exemple avec un rectangle creux

J'ai pour objectif ici d'imprimer un rectangle creux. Je commence par faire une simulation d'impression en 2 parties. La première partie est tout simplement le trait gauche qui va de l'avant vers le fond et le seconde le trait qui va de gauche à droite. Ce qui va me donner deux traits qui ont un angle de 90. Ensuite, je fais la même démarche pour la partie restante du rectangle.

Page gcode 3

Le premier trait a une longueur de 37.100 et le second va de gauche à droite sur une longueur de 2.540. C'est la même chose pour l'autre partie en sens inverse. Il ne reste plus qu'à faire l'épaisseur niveau par niveau en augmentant la hauteur à chaque fois.

Programmation et gcode

Une imprimante est un automate. Cet automate peut être programmé pour effectuer telle ou telle action. Connecté ou pas, il effectue des actions qui lui sont au préalable envoyé ou alors il va les chercher sur une carte SD. Dans ce paragraphe, je me borne à une utilisation avec le module SD de l’imprimante et j’écarte la partie connectée avec un fil branché sur le port USB.

La tête d’impression de l’imprimante avance par palier. Un palier peut être défini comme un cran ou étape qui sont représentés par un nombre avec virgule. Par exemple, si j'ai un cran, pas ou palier défini par le nombre 0.200 sur l’axe de déplacement horizontale, l’imprimante avancera de 0.000 à 0.200 à 0.400 à 0.600. Ainsi, j’aurais effectué un déplacement de 0.000 à 0.600.

Pour programmer ce déplacement, tous les langages de prog proposent des boucles pour répéter un pas de déplacement. Dans mon cas, la condition de départ pour effectuer mon déplacement est X = 0.000 et la condition de terminaison est que la boucle doit s’arrêter avant que X soit supérieur à 6.000 et cela s’écrit tant que X < 6.000.

Et dans le langage C, cela s’écrit :

for (X = 0.000; X < 6.000; X = X + 0.200)

            printf("G1 X%.3f\n", X) ;

Boucles de remplissage pour le rectangle

Avec un peu de connaissance en prog, je trouve les boucles de remplissages suivantes:

#include <stdio.h>

#define STEP_X 0.700

#define STEP_Y 0.200

#define STEP_Z 0.010

#define STEP_E 0.1

int main(int argc, char **argv) {

    static float X, Y, Z, E = 0.000;

    int layer = 0;

    printf("G90\n");

    printf("M106 S225\n");

    printf("M109 S225\n");

    printf("G1 E%.3f\n", E);

    E += 0.2;

    printf("G1 E%.3f\n", E);

    E += 0.2;

    

    while (layer < 21) {

/* mouvement trait gauche */

        for (X; X < 37.101; X += STEP_X)

            printf("G1 F200 X%.3f\n", X);

/* extrusion */

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

/* Et pareil pour les trois autres côtés */

        for (Z; Z > -0.501; Z -= STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z > -1.001; Z -= STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z > -2.001; Z -= STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z > -2.541; Z -= STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (X; X > -0.001; X -= STEP_X)

            printf("G1 F200 X%.3f\n", X);

        

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z < -2.539; Z += STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z < -1.001; Z += STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z < -0.499; Z += STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        for (Z; Z < 0.001; Z += STEP_Z)

            printf("G1 F200 Z%.3f\n", Z);

        printf("G1 E%.3f\n", E);

        E += 0.2;

        printf("G1 E%.3f\n", E);

        E += 0.2;

        Y += 0.200;

        printf("G1 F200 Y%.3f\n", Y);

        Y += 0.200;

        printf("G1 F200 Y%.3f\n", Y);

        Y += 0.200;

        printf("G1 F200 Y%.3f\n", Y);

        Y += 0.200;

        printf("G1 F200 Y%.3f\n", Y);

        

        layer++;

    }

    return 1;

}

Fichiers à télécharger: rect_creux.c (fichier source langage C) et rect_creux.g (fichier gcode) et rect_creux.txt (fichier gcode format texte) enfin rect_creux.exe (fichier exécutable)

Et le résultat que voici et incliné sur un mur:

Impression rectangle 3D finis

Lien connexe: http://www.effervecrea.net/pilotage-imprimante-neva

Lien connexe: http://www.effervecrea.net/dagopilote-pour-imprimante-discoeasy

Début de la page
contact  mentions légales