Outils pour utilisateurs

Outils du site


projets:cristallographie:accueil

Cristallographie par Rhombo Eric

La cristallographie est la science qui s'attache à l'étude des cristaux. C'est la réalisation de matériel dédié à cette discipline qui est le coeur du projet Cristallographie.

Le projet a nucléé autour d'un premier voeux de fabriquer du matériel pédagogique trimensionnel : des modèles de cristallographie géométrique. Il s'est poursuivi par la réalisation de dessins brodés de cristaux.

 Logo cristallographie

Avant le passage en logiciel libre

Pour se faire, je comptais utiliser ma fraiseuse CNC personnelle: une Heiz-Z 400-S. J'ai acquis cette machine il y a plusieurs années dans le but unique de fabriquer des modèles de cristaux. Elle m'a été livrée avec un logiciel commercial de pilote et de calcul de parcours défectueux et inadapté à mon projet.

Depuis

J'ai jeté l'ensemble des logiciels et le sytème compliqué de commande de ma machine. J'utilise exclusivement Linux CNC et mes routines écrites en Python 3 pour concevoir mes objets, générer le G-code et l'exécuter. Maintenant quand la fraise n'a pas le comportement escompté, c'est simple : c'est mon G-code qui est à revoir. Plus de prise de tête à mettre des rustines sur des logiciels commerciaux bugués, bridés et surtout obsédés par leur licence et la vente de modules complémentaires miracle. Enfin je vois mes objets fabriqués comme je le veux. Et j'en suis fort satisfait.

Broderie

J'ai procédé de la même manière qu'avec la fraiseuse en écrivant des routines en Python 3 générant des fichiers de broderie. Ma brodeuse à commande numérique est une Janome Memory Craft 300E. Construire des fichiers compatibles avec ma brodeuse est aisé, le fabricant n'ayant pas cherché à nuire à ses clients en rendant la création de fichiers difficile. Nul procédé de cryptage, nul protocle torteux n'est employé. La philosophie choisie par le constructeur priviligie la machine, c'est tout. Elle s'éloigne de celle du G-code où un compromis homme-machine a été retenu. Dans cet esprit, le .jef use de fichiers binaires, facilement intelligible pour la machine.

Je la commande à l'aide de fichiers .jef construits de la façon suivante :

  • Mes fichiers comportent successivement 3 parties :
    1. Un préambule de présentation où des paramètres globaux sont indiqués : nombre de changements de couleurs, nombre de points …
    2. Un corps où sont décrits les points à broder.
    3. Une conclusion qui est libre et n'est pas prise en compte lors de la broderie. Elle permet d'adjoindre des commentaires au fichier de broderie ou toute autre information. Aucun format ne la contraint.
  • Mes fichiers sont des fichiers binaires dont l'unité de base est le mot de 16 bits subdivisé en deux octects significatifs. La dernière partie, la conclusion, peut comporter un nombre impair d'octects et donc ne pas se subdiviser en mots. Les deux premières parties comportent toujours un nombre pair d'octets, c'est-à-dire un nombre entier de mots.
  • Un changement de couleur consomme 4 mots, un point 1 mot.
  • La première partie, le préambule, est, dans mes fichiers, structurée de la façon suivante :
  1. Le préambule est formé d'unités de deux mots succesifs, c'est-à-dire 4 octects, 32 bits.
  2. La première unité est constituée d'un premier mot, le nombre d'octets constituant le préambule, suivi d'un mot nul. Le nombre d'octects du préambule est dans mes fichiers 116+8*nombre de changements de couleurs où la couleur initiale est comptée comme un changement de couleur. Le préambule d'un fichier monochrome comporte ainsi 124 octects.
  3. Je mets deux mots nuls dans la deuxième unité.
  4. Les 7 mots suivants comportent usuellement dans les fichiers .jef des indications de type date et heure codés en ASCII. Je fais de même. J'ajoute après ces 7 mots un mot nul.
  5. Le mot suivant est le nombre de changements de couleurs (la couleur initiale est comptée comme un changement de couleur). Il est suivi d'un mot nul qui permet de passer à l'unité suivante.
  6. Viens ensuite, codé sur un mot, le nombre de mots du corps du fichier .jef, c'est-à-dire aux mots d'instructions près, le nombre de points à broder. Un mot nul complète cette unité.
  7. Les 21 unités suivantes de 2 mots, soit 84 octets sont remplis par des octets nuls dans mes fichiers par flemme. Les informations usuellement présentes dans les fichiers .jef à ces emplacements, telles que longueur et hauteur en mm d'un rectangle contenant le motif à broder, ne sont pas nécessaires à la réalisation de la broderie. Ces valeurs sont codées sur les premiers mots des unités, le second étant nul. A l'instar de ce qui est fait pour les points, le codage d'information spatiales commence par un octet x (abscisse) suivi d'un octet y (ordonnée). Comme les valeurs totales peuvent excéder la capacité d'un octect, il arrive que l'unité suivante soit sollicitée pour compléter les valeurs tronquées.
  8. Enfin vient la dernière partie du préambule, celle consacrée aux couleurs. Elles sont indiquées dans l'ordre où elles doivent être brodées, chacune occupant 4 mots, c'est-à-dire, 2 unités. Le premier mot est le code de l'une des 78 couleurs Janome : 1 pour “Noir 002”, 2 pour “Blanc 001”, 3 pour “Jaune 204”, 4 pour “Orange 203”… Comme pour les unités précédentes, un mot nul clôt l'unité. La seconde et dernière unité d'une couleur dans mes fichiers comporte h0D=13=ASCII“fin de ligne” codé sur le premier mot suivi d'un mot nul.

Ouf le préambule est terminé. Un exemple est donné ci-dessous en hexadécimal, il correspond à une broderie monochrome.

  1. En orange : h7C00 = 124. Le préambule comporte 124 octets. 124=116+8*1. La broderie est donc monochrome.
  2. En bleu : du blabla en ASCII “20150903broder” pour “3 septembre 2015” et “broder”. Le contenu de cette zone n'influe pas le processus de broderie proprement dit. J'y mets librement ce que j'ai envie.
  3. En jaune : h0100 = 1. La broderie comporte une seule couleur.
  4. En vert : h5515 = 5461. La broderie comporte 5461 points ou instructions.
  5. En rose : h2600 0D00. h2600=38. La seule couleur a pour n° Janome le 38. C'est donc “Rose Orchidee 240”.
  • J'utilise dans le corps du fichier 3 instructions : h8001, h8002, h8010. Les instructions débutent donc par un octet h80. C'est astucieux car les octets codant les points proprement dits sont signés de -127=h81 à +127=h7F. Il reste une des 256 valeurs disponibles : h80 dont le signe est ambigu, 128 ou -128. faire un choix de signe serait déplaisant car il induirait une disymétrie dans les possibilités de broder entre gauche et droite, ainsi qu'entre haut et bas. Réserver h80 pour indiquer une instruction est donc bien vu.
  • h8001 et h8002 indiquent un départ d'une portion du motif à broder.
  • h8001 indique en plus le passage à la couleur suivante. Ma brodeuse s'arrête et me demande d'installer la nouvelle couleur.
  • h8010 indique la fin du corps du fichier, la fin de la broderie. Sa présence est impérative sous peine de refus du fichier par la brodeuse bien qu'elle connaisse dès le préambule la taille du corps du fichier.
  • Les données spatiales du corps sont codées en déplacement (coordonnées des vecteurs de translation) et non pas en absolu (coordonnées des points) comme c'est la règle pour le G-code. Contrairement aux concepteurs de ce dernier, Janome n'a pas choisi un compromis entre simplicité pour la machine à commande numérique et lisibilité par un humain. C'est la machine qui est priviligiée, non l'humain. Les fichiers sont binaires, les coordonnées sont celles de déplacements…
  • La distance entre deux points successifs de broderie est courte sinon il y aurait de grands fils tendus. Aussi les déplacements sont petits alors que les coordonnées des positions peuvent être nettement plus imposantes. Par souci de compacité, il est donc pertinent de coder les déplacements plutôt que les positions. De plus, le nombre d'impulsions envoyées aux moteurs pas à pas est proportionnel au déplacement voulu, pas à la position recherchée. Du point de vue machine, coder les déplacements est plus direct.
  • L'échelle utilisée est d'environ 0,1 mm pour 1 unité.
  • Chaque déplacement se code sur un mot, le premier octet signé pour x (l'abscisse), le second pour y (l'ordonnée). Chacune des coordonnées prend une valeur entière entre -127 et 127. Il est impossible d'effectué directement des déplacement de plus grande ampleur (maximum environ 1,27 cm).
  • Le premier déplacement suivant une instruction h8001 ou h8002 n'est pas suivi d'un point machine. Il permet d'aller au départ de la séquence de broderie. Si le déplacement nécessaire excède la taille maximale autorisée d'un déplacement, il suffit d'empiler une séquence de (h8002 déplacement) pour positionner l'aiguille en n'importe quel point voulu du cadre de broderie.
  • A part le premier déplacement suivant une instruction h8001 ou h8002, tous les autres sont suivis d'un point machine.

Je n'en utilise pas plus pour broder sur ma machine.

projets/cristallographie/accueil.txt · Dernière modification: 2017/05/05 17:49 par qcarlier