Documentation F-Engrave en français

Préambule

L’un d’entre vous (pas de nom, j’suis pas une balance) m’a demandé un tuto en français sur le programme F-Engrave.
J’en avais parlé très rapidement dans cet article, mais je n’avais pas expliqué comment le programme fonctionne.
Comme je ne l’avais pas vraiment exploré à fond, je me suis dit que la première étape était de me taper la documentation, et tant qu’à faire, de la traduire en français pour nos amis non anglophones.
Ceci est donc la traduction française presque officielle du manuel de F-Engrave. J’ai contacté l’auteur, Scorch, qui m’a suggéré de l’héberger chez moi pour faciliter les futures corrections et mises à jour.

Alors en attendant le tutorial, voici déjà la documentation!
La version originale se trouve ici : http://www.scorchworks.com/Fengrave/fengrave_doc.html

Table des matières

Conseils de Scorch
Questions et réponses
Options de la ligne de commande
Raccourcis clavier
Souris
Fichier de configuration
Options de le fenêtre principale
Options générales
Paramètres V-Carve
Options PBM


Conseils de Scorch

Voici le conseil que je donnerais à un ami qui commence à utiliser F-Engrave.

Ouvrir des anciens fichiers .ngc

F-Engrave peut ouvrir des fichiers g-code (.ngc) sauvegardés par F-Engrave. Si vous avez aimé les résultats obtenus la dernière fois, ou que vous voulez juste faire de petites modifications, ouvrez le fichier précédemment enregistré et travaillez sur les paramètres existants. Donc, pas besoin de recommencer à partir de zéro.
Paramètres V-Carve:
« Sub-Step Length »
Le paramètre v-carve « Sub-Step Length » est important pour la gravure avec une fraise en V (v-carving). L’algorithme de v-carving calcule la position de l’outil et la profondeur selon un intervalle fixe. Cet intervalle fixe est le « Sub-Step Length ». Un grand substep length accélèrera le calcul, mais produira potentiellement des facettes au moment de la gravure.

Si vous utilisez des unités métriques, vous devriez augmenter la valeur par défaut de ce paramètre pour accélérer le calcul (une valeur de 0.25mm devrait suffire).

Paramètres V-Carve:
« Check all or Current Char Only »
Pour graver l’intérieur des caractères, laissez cette option à « Character only »

Si vous utilisez l’option « flip normals » pour graver l’extérieur des caractères, ce paramètre doit être « All »

Paramètres V-Carve:
« Inside corner angle »
« Outside corner angle »
Ne vous embêtez pas avec les paramètres « Inside corner angle » et « Outside corner angle ». Les valeurs par défaut sont très raisonnables pour la majorité des situations.

Je documenterai ces paramètres plus tard, mais pour le moment laissez-les tels quels.

Utilisez Potrace
pour transformer des images en fichiers DXF
Potrace crée des fichiers DXF constitués de boucles fermées, ce qui est idéal pour graver avec F-Engrave. De plus, Potrace donne en général de bons résultats et offre beaucoup d’options pour ajuster le résultat selon vos besoins. Si vous devez calculer des chemins d’outil à partir d’images DXF complexes, attendez-vous à ce que les calculs prennent du temps.





Questions et réponses


Comment faire fonctionner le programme ttf2cxf_stream?

En arrière plan, F-Engrave utilise le programme ttf2cxf_stream. Pour utiliser un fichier de police True Type (TTF), vous devez l’installer dans le dossier des polices (ou dans le dossier indiqué dans les options). Le fichier TTF devrait apparaître dans la liste des polices disponibles, pour autant que le programme ttf2cxf_stream fonctionne correctement et se trouve dans le même répertoire que F-Engrave. Si le programme ttf2cxf_stream n’est pas présent ou ne fonctionne pas, vous devriez voir un message dans la fenêtre de la console indiquant que ttf2cxf ne fonctionne pas. Plus d’information ici:F-Engrave Setup


Options de la ligne de commande

Usage python f-engrave-XX.py [-g fichier | -f dossier_polices ]
ou
f-engrave-XX.exe [-g fichier | -f dossier_polices ]
-g
(ou –gcode_file)
Fichier g-code de f-engrave à charger
-f
(ou –fontdir)
chemin vers le dossier des polices
-h
(ou –help)
affiche l’aide dans la console.
Exemple
(Utilise le script python avec une
distribution python préinstallée)
python f-engrave-XX.py -g mon_fichier.ngc -f /mon_rep_polices/sous_repertoire
Exemple
(Utilise l’exécutable
Windows précompilé)
f-engrave-XX.exe -g mon_fichier.ngc -f C:/mon_rep_polices/sous_repertoire




Raccourcis clavier

F1 Ouvre la fenêtre d’aide (il n’y a rien dans l’aide, à part un lien vers cette page web et mon adresse e-mail)
F2 Ouvre la fenêtre des paramètres généraux
F3 Ouvre la fenêtre des paramètres de V-Carving
F4 Ouvre la fenêtre des paramètres PBM
F5 Recalculer (c’est la même fonction que le bouton « recalculate » sur la page principale)
Ctrl + flèche du haut Fait défiler la liste des polices (selon le système d’exploitation)
Ctrl + flèche du bas Fait défiler la liste des polices (selon le système d’exploitation)
Page Up Zoom avant vers le centre de l’affichage.
Page Down

Zoom arrière vers le centre de l’affichage.






Souris

Bouton gauche Zoom avant et arrière. Maintenez le bouton gauche appuyé et déplacez la souris vers le haut ou le bas.
Bouton droit Déplacement. Maintenez le bouton gauche appuyé et déplacez la souris.
Molette Selon le sytème d’exploitation, la molette fait défiler la liste des polices.






Configuration File

config.ngc
ou
.fengraverc
Quand F-Engrave démarre, il cherche un fichier « config.ngc ». S’il le trouve, ce fichier est lu et toutes les options de F-Engrave sont initialisées selon les options trouvées dans ce fichier de configuration. F-Engrave recherche ce fichier dans le répertoire courant et dans le répertoire home de l’utilisateur (répertoire d’enregistrement par défaut). Le fichier de configuration peut s’appeler « config.ngc » ou « .fengraverc ». Si l’un des deux est trouvé, il sera utilisé pour initialiser les options if either of these are found it will be used to set the default settings. Seul le premier fichier est utilisé.

Pour créer un fichier de configuration avec vos options préférées, ouvrez simplement F-Engrave, changer les paramètres selon vos besoins, et enregistrez un fichier « config.ngc » dans votre répertoire utilisateur (répertoire d’enregistrement par défaut), ou dans le répertoire où se trouve F-Engrave. (Si vous n’utilisez pas la version précompilée pour Windows, vous pouvez aussi modifier directement les paramètres dans le fichier .py)


Fenêtre principale (mode Texte et mode Image)

F-Engrave - Text Mode
F-Engrave - Image Mode

Champ Description
Text Height
ou
Image Height
Hauteur des caractère pour une ligne de texte. Cette option contrôle aussi la hauteur des images (DXF ou PBM) importées. (F-Engrave traite les données DXF comme un caractère)
Line Thickness Epaisseur ou largeur des lignes pour afficher le texte. Pour prévisualiser ce qui sera gravé, ce paramètre doit être égal au diamètre de la fraise.

Quand l’option V-Carve est sélectionnée, ce paramètre n’a pas d’effet sur l’épaisseur des lignes affichées.

Text Width
ou
Image Width
C’est la largeur des caractères ou de l’image (DXF ou PBM). Si elle est de 100%, la largeur des caractères n’est pas modifiée. Pour des valeurs différentes de 100%, la largeur du caractère sera redimensionnée selon la valeur indiquée (i.e. les cercles deviennent des ellipses).
Char Spacing F-Engrave utilise un espacement constant entre tous les caractères. L’espacement entre les caractères est déterminé comme un pourcentage de la largeur maximale des caractères dans la police sélectionnée. Avec une valeur de 0%, tous les caractères se toucheront, et cela peut être utile dans certains cas spécifiques.
Word Spacing C’est l’espace entre les mots, ou la largeur du caractère « espace ». Il est déterminé comme un pourcentage de la largeur maximale des caractères dans la police sélectionnée.
Line Spacing C’est l’espacement vertical entre les lignes de texte. C’est un multiple de la hauteur des caractères définie précédemment. Un espacement vertical de 1.0 peut conduire à deux lignes de texte qui se touchent si le caractère le plus grand est juste en dessous du caractère qui descend le plus pas (par exemple un « g »)
Text Angle
ou
Image Angle
Rotation du texte ou de l’image (DXF or PBM) par rapport à l’horizontale.
Justify La justification aligne la gauche, droite ou le centre de plusieurs lignes de texte. Cette option n’a pas d’effet sur une seule ligne de texte.
Origin L’origine détermine la position relative du zéro (x,y) dans le g-code. La position actuelle de l’origine est affichée avec deux lignes, rouge et verte. La ligne rouge est l’axe x, la verte l’axe y.

Par défaut, l’origine est placée sur la position zéro du premier caractère. Si le texte est sur un cercle, cette option déplacera le centre du cercle.

Flip Text
ou
Flip Image
Bascule le texte ou l’image le long d’un axe horizontal. (comme « Mirror text », mais sur un axe horizontal)
Mirror Text
ou
Mirror Image
Bascule le texte ou l’image le long d’un axe vertical. (comme « Flip text », mais sur un axe vertical)
Circle Radius C’est le rayon du cercle sur lequel le texte est placé. Si le rayont vaut 0.0, le texte n’est pas placé sur un cercle.
Outside Circle Détermine si le texte est placé à l’intérieur ou à l’extérieur du cercle.
Top of Circle Détermine si le texte est placé en haut ou en bas du cercle. Si l’angle de texte est différent de 0.0, alors le haut et le bas du cercle seront pivotés de cet angle.
Feed Rate Détermine la vitesse d’avance de l’outil dans le fichier g-code.
Z Safe C’est l’emplacement z de l’outil à utiliser pour les déplacements rapides.
Cut Depth C’est la profondeur de coupe. Cette option n’a pas d’effet si l’option V-Carve est sélectionnée.
Font Files Cette liste affiche les noms de fichier des polices (CXF et TTF). Le répertoire des polices peut être changé dans la fenêtre « Settings/General settings ».
Show All Font Characters Cette option affiche temporairement tous les caractères disponibles dans la police sélectionnée.
Engrave/V-Carve Permet de travailler en mode « Gravure » ou « V-Carve ».
Calculate V-Carve Ce bouton lance le calcul pour le V-Carving. Le traitement peut être long.
Recalculate Racalcule l’affichage pour tous les options pour prévisualiser le résultat. Tout est recalculé, sauf le V-Carve.
Input Text C’est le texte qui sera affiché dans la prévisualisation, et exporté dans le fichier g-code.
Status Bar La barre d’état fournit quelques éléments d’information quand on travaille avec F-Engrave. Une des plus utiles est la taille de la boîte englobante (bounding box). Quand vous cliquez sur le bouton « Recalculate », la taille globale de la gravure ou du V-Carving est calculée et affichée dans la barre d’état, en termes de boite englobante (largeur et hauteur).
C’est très utile si vous avez une surface limitée.





Options générales

Champ Description
Units (inch/mm) Définit les unités utilisées par F-Engrave (pouces ou mm). Cette option affecte les unités affichées, et les unités de sortie du fichier g-code.
X Offset and Y Offset Sur la fenêtre principale, le champ « origin » détermine la position du zéro x et y dans le g-code, par rapport au texte ou au dessin DXF. Le décalage (offset) X et Y sont des modifications supplémentaires pour l’emplacement du zéro. Ces décalages sont ajoutés aux valeurs X et X dans le g-code. Par exemple, si le texte est sur un cercle de centre x=0,y=0 et qu’on indique un décalage (x,y) de (3,4), alors le texte sera centré autour de x=3 et y=4.
Arc Angle Tous les arcs, cercles et splines sont réduits à des segments individuels par F-Engrave.
Ce paramètre détermine combien de segments sont nécessaires pour décrire ces courbes. Si « arc angle » est de 90 degrés, un cercle sera représenté par un carré (coins de 90 degrés).
Si l’angle est de 60 degrés, un cercle sera représenté par un hexagone. Plus l’angle est petit, plus la représentation est précise (avec comme conséquence un temps de calcul plus long, et potentiellement une baisse de performances de la machine CNC).
Accuracy
(Nouveau dans la version 0.5)
La précision détermine la distance maximale entr edeux points considérés comme coïncidents. Ce paramètre peut être augmenté pour limiter les mouvement Z qui ne sont pas nécessaires, lorsque la fin d’une ligne et le début de la suivante sont très proches mais pas coïncidents. Cette option réduit aussi la semsibilité des splines DXF avec des boucles sur des coins aigus, quoi peuvent générer des chemins V-Carve erronnés. (J’ajouterai un exemple de ce cas de figure).
G Code Header Le texte saisi dans ce champ sera ajouté au début du fichier g-code. Les commandes sont interprétées telles quelles par la machine CNC. LRd valeurs par défaut (G17 G90 G64 M3 S3000 M7) sont expliquées ci-dessous:
G17

Utiliser le plan XY
G90

Cycle fixe, cycle simple, pour dégrossir (emphase sur l’axe Z)
G64 P0.003

G64 P- (tolérance pour la fusion des mouvements définie à 0.003) C’est la valeur par défaut dans le programme historique « engrave.py »
G64

G64 sans l’option P conserve la meilleure vitesse possible, peu importe la distance par rapport au point de destination.
M3 S3000

Démarrage de la broche à 3000
M7

Active la pompe de refroidissement (si disponible)

G Code Postscript Ce texte sera ajouté à la fin du fichier g-code. Les commandes sont interprétées par la machine CNC telles quelles. Les valeurs par défaut (M5 M9 M2) sont expliquées ci-dessous:
M5

Arrêt de la broche
M9

Arrête la pompe de refroidissement
M2

Fin du programme
Font Directory C’est le répertoire utilisé pour chercher les fichiers de police (TTF et CXF) et les fichiers DXF. Les fichiers avec une extension correcte sont affichés dans la liste « Font Files ». Si vous ouvrez un fichier DXF avec le menu, le répertoire « font directory » sera automatiquement modifié, et deviendra le répertoire qui contient votre fichier DXF.
Height Calculation
Max Used/Max All
La hauteur du texte peut être déterminée de deux façons. La première est la valeur saisie dans « Text height ». Dans ce cas, la hauteur maximum du texte est celle saisie.

La seconde option est « Max All ». Quand cette option est sélectionnée, c’est la hauteur maximale de tous les caractères de la police qui est utilisée pour déterminer la hauteur du texte. Quand « Max All » est utilisé, il est possible d’avoir une hauteur de texte en sortie plus petite que la hauteur entrée dans la fenêtre principale, car le caractère le plus grand de la police peut ne pas être utilisé dans le texte à graver.

Add Box/Circle Cette option ajoute une boîte englobante autour du texte. Si le texte est placé sur un cercle, alors un cercle englobant sera ajouté, plutôt qu’une boîte englobante.
Border Gap
(multiple of line thickness)
La marge de la bordure détermine la taille de la boîte englobante ajoutée avec l’option « Add Box/Circle ». L’espace entre le texte et la boîte englobante est défini en unités de longueur (pouces ou mm).





Paramètres V-Carve

Champ Description
V-Bit Angle L’angle de la fraise en V à utiliser.

Il est possible que l’angle réel de la fraise ne corresponde pas exactement à celui indiqué par le fabricant.
V-Bit Diameter Diamètre maximal de coupe avec la fraise.

Il peut être plus petit que le diamètre réel de la fraise, pour contrôler la largeur/profondeur de coupe.
Sub-Step Length

L’algorithme de v-carving calcule la position de l’outil et la profondeur selon un intervalle fixe. Cet intervalle fixe est le « Sub-Step Length ». Un grand substep length accélèrera le calcul, mais produira potentiellement des facettes au moment de la gravure. Si vous réduisez trop le « Sub-Step Length », le temps de calcul peut devenir très long, ainsi que la performance de la machine au moment de l’usinage (à cause de commandes G1 très courtes).
En cas de doute, commencez avec une valeur élevée, et diminuez jusqu’à obtenir des résultats corrects.

Check all or Current Char Only

All/Character only
Pour calculer les chemins de V-carving, F-Engrave recherche les autres segments pour limiter la profondeur de gravure. Cette option détermine si F-Engrave doit regarder les autres segments dans le caractère uniquement, ou dans toue les autres caractères. Si vous faites du V-Carving sur l’intérieur des caractères uniquement, il n’y a aucune raison de vérifier les segments des autres caractères. Mais si vous enlevez la matière autour des caractères, alors il faut vérifier les autres segments pour éviter d’enlever de la matière sur un autre caractère. (Vérifier tous les caractères est bien plus lent que vérifier un caractère uniquement).
Flip Normals

(V-Carve Side)
F-Engrave présume que la police ou l’image (DXF) crée des chemins fermés, dans le sens des aiguilles d’une montre autour du dessin qui doit être gravé. Et par défaut, il va graver l’intérieur des caractères.
Cette option inverse le sens de traitement, et c’est donc l’extérieur des caractères ou du dessin DXF qui sera retiré.
Plot During V-Carve Calculation Active ou désactive le dessin pendant l’avancement des calculs de V-Carving. Désactivée, cette option accélère la vitesse de calcul sans affecter la sortie g-code.
Finish Pass Stock
et
Max Depth per Pass
Le « Finish Pass Stock » est la hauteur de matière qui restera pour la dernière passe.

F-Engrave laissera toujours cette épaisseur pour la dernière passe, même si « Max depth per pass » est supérieur à la profondeur de coupe maximale.

Si vos paramètres sont:

Finish Pass Stock = 0.03

Max Depth per Pass = 0.1

Et que votre profondeur maximale à un endroit du dessin est de 0.5, alors la profondeur de coupe pour les passes à cet endroit seront:

passe 1: 0.1

passe 2: 0.2

passe 3: 0.3

passe 4: 0.4

passe 5: 0.47

passe 6: 0.5 (c’est la passe de finition: 0.5 – 0.47 = 0.03)

Cleanup Cut Diameter Cette option définit le diamètre de la fraise de nettoyage. Indiquez simplement le diamètre de la fraise à utiliser.
Cleanup Cut Step Over C’est le taux de recouvrement pour les passes de nettoyage. Cette valeur est un pourcentage du diamètre de la fraise de nettoyage.
Cleanup Cut Directions Ces cases à cocher indiquent les types de chemins d’outils à utiliser pour nettoyer.
P: Coupe le long du périmètre de la surface à nettoyer
X: Coupe le long de l’axe X
Y: Coupe le long de l’axe Y

V-Bit Cleanup Step C’est le taux de recouvrement à utiliser pour nettoyer les zones qui ne peuvent pas être atteintes avec la fraise de nettoyage.
La coupe est destinée à être effectuée avec la même fraise en V que celle utilisée pour le V-Carving.
Ce recouvrement est indiqué dans l’unité de longueur sélectionnée.
V-Bit Cut Directions

Ces cases à cocher indiquent les types de chemins d’outils à utiliser avec la fraise en V.
P: Coupe le long du périmètre de la surface à nettoyer
X: Coupe le long de l’axe X
Y: Coupe le long de l’axe Y

Bouton:
Calculate Cleanup
Détermine la surface qui nécessite un nettoyage. Une fois cette surface déterminée, les parcours d’outil pour le nettoyage sont calculés selon les paramètres définis ci-dessus.
Le calcul de la surface est effectué seulement une fois, après le calcul des chemins pour le V-Carve.
F-Engrave se souviendra des résultats précédents et les utilisera jusqu’à ce qu’un nouveau calcul de chemin V-Carve soit effectué.

Bouton:
Save Cleanup G-Code
Ce bouton enregistre le G-Code de nettoyage dans un fichier.
Button:
Save V Cleanup G-Code
Ce bouton enregistre le G-Code de nettoyage (fraise en V) dans un fichier.





Options PBM

Champ Description
(Ces options sont transmises directement à Potrace. Pour plus d’information, consultez la documentation de Potrace)
Turn Policy Indique à Potrace comment résoudre les ambiguités dans la décomposition des chemins.
Turd Size Supprime les éventuelles petites taches jusqu’à cette taille.
Alpha Max Seuil pour les coins.
Long Curve Active/désactive l’optimisation des longue courbes. L’optimisation permet de diminuer le temps de calcul pour le V-Carve.
Opt Tolerance Tolérance pour l’optimisation des courbes.




Conseils d’utilisateurs

Un utilisateur a remarqué que sur Linux (Ubuntu), il avait besoin de rendre le fichier python exécutable et de retirer les sauts de ligne DOS pour arriver à faire tourner le programme. Je n’ai pas réussi à reproduire le problème, mais voici les étapes à suivres si vous avez des soucis:
$ chmod 755 f-engrave-08.py # rendre le fichier exécutable
$ sudo apt-get install tofrodos
$ fromdos f-engrave-08.py # convertir les fins de lignes dos en unix

Problèmes connus

  • F-Engrave génère une commande G1 pour chaque segment calculé quand on fait du V-Carving. Si la taille des segments (step size) est très petite, la machine CNC ne pourra jamais atteindre la vitesse indiquée dans le G-Code.

    – Tous les fichiers DXF ne sont pas supportés. Il y a énormément de types d’entités différents dans le format DXF, et tous ne sont pas supportés.

    – Toutes les polices TTF ne sont pas supportées. Certaines polices TTF encapsulent des images plutôt que des graphiques vectoriels. Les polices TTF basées sur des images ne sont pas supportées.

Scorch Works Home

[Tuto KiCad] Concevoir un circuit imprimé partie 1: le schéma

Salut les poilus!

Il y a un bon moment ce ça (oh la vache oui, été 2012), j’avais écrit cet article sur Fritzing.

C’est vrai que Fritzing c’est bien. Mais dès qu’on doit utiliser des composants qui ne sont pas dans sa bibliothèque, c’est vite TRÈS lourd. Il faut créer le composant, créer son empreinte au format SVG, et disons-le franchement: les interfaces de création ne sont pas géniales et j’ai autre chose à faire que de passer une heure à créer un relais ou quoi que ce soit d’autre.

J’avais testé vite fait KiCad et j’avais vite abandonné car pour le coup, Fritzing était plus facile à prendre en main. Mais frustrant. Mais plus facile à prendre en main. Alors bon.

Récemment j’ai attaqué la conception d’un circuit imprimé sur lequel sont implantés:

  • Une Teensy 3.2
  • Un lecteur de carte MicroSD
  • Un écran OLED

Et connaissant Fritzing et ses limitations, je n’ai même pas osé le démarrer et je me suis mis sérieusement à KiCad.

Héééé ben franchement je vais vous dire:

  1. ce n’est pas si compliqué
  2. je relègue définitivement Fritzing au placard, en le remerciant pour les services qu’il m’a rendus.

Avec KiCad, on a un véritable outil de conception de circuits imprimés, avec aussi sa bibliothèque de composants (fatalement limitée), mais quel plaisir de pouvoir créer un nouveau composant en 5 minutes s’il n’existe pas dans la bibliothèque de base!

Le truc avec KiCad, c’est que la prise en main n’est pas hyper intuitive au tout départ. Mais une fois qu’on a pris le temps de comprendre les quelques concepts de base, c’est tellement bon… Et c’est ce que je vais vous expliquer ici.

Pour aller plus loin évidemment, il y a la documentation officielle de KiCad

Créer un projet

KiCad manipule plusieurs types de fichiers, selon la tâche à effectuer (typiquement les schémas électroniques et les implantations physiques de composants). Tous ces fichiers sont regroupés dans un répertoire de projet.

La première étape, quand on veut concevoir un circuit, et donc de créer un projet: Fichier/Nouveau projet/Nouveau projet, et nous l’appelerons tuto-dm.

Dans le répertoire, il crée automatiquement 3 fichiers: tuto-dm.pro, tuto-dm.sch et tuto-dm.kicad_pcb.

Créer le schéma électronique

Pour ce tuto, nous allons créer un circuit imprimé contenant un atmega128 (DIP), un driver de moteur pas à pas Pololu A4988, et disons une LED et sa résistance. Le but de ce tutoriel n’est pas de réaliser un projet fonctionnel, mais d’apprendre les bases de la conception dans KiCad.

On va donc maintenant rentrer dans le dur, et créer notre schéma. Pour cela, dans KiCad, double-cliquons sur tuto-dm.sch

Nous avons droit à un bel écran de dessin technique, avec un cartouche en bas (spéciale dédicace aux cours de techno du collège).

Deux barres d’outils : à gauche, des options d’affichage (j’ai envie de dire: rien à péter pour l’instant); à droite, ce qui va nous intéresser: la barre d’outils de dessin.

Parmi les outils, trois vont nous intéresser:

  • le triangle avec les signes + et – (oui, c’est un ampli op! Bonne réponse de l’amiral) permet de placer des composants sur le schéma.
  • le symbole de masse nous permet de placer des symboles de type « power », c’est à dire tout ce qui est relatif à l’alimentation.
  • le segment vert permet de placer des fils, autrement dit de relier les composants entre eux.

Petite note sur le déplacement dans la vue:

  • Clic milieu + déplacement de la souris: panning
  • Molette : zoom

Placement des composants

Cliquons sur l’icône « placer un composant », puis quelque part sur le dessin. Une fenêtre s’ouvre, pour nous demander quel composant insérer.

Dans le champ de filtre, nous allons taper ATMEGA328, et sélectionner le premier de la liste (ATMEGA328-AU) en double-cliquant dessus. On peut positionner le microcontrôleur avec la souris, et cliquer pour valider.

Plaçons maintenant notre led et sa résistance. KiCad est encore en mode « placer un composant », donc il suffit de cliquer quelque part sur le schéma pour rouvrir la fenêtre de sélection de composant.

Dans le filtre, tapons R, et double-cliquons sur le 1er résultat :R [Resistor]. Avant de positionner la résistance, on peut la faire pivoter en appuyant sur la touche R du clavier (Rotate). Mettons-la à l’horizontale, et plaçons la à côté de la pin PB1 de l’ATMEGA328.

Même topo pour placer la LED (LED_GENERIC), et nous allons la positionner à côté de la résistance. Si vous avez déjà placé un composant et que son sens n’est pas bon, pas de problème! Il suffit de positionner le curseur de la souris au-dessus (pas besoin de cliquer) et d’appuyer sur la touche R du clavier jusqu’à obtenir l’orientation correcte.

Normalement on devrait en être là:

Placement des alimentations

Pour KiCad, une alimentation est un composant spécial, accessible avec le bouton

On va commencer par placer les masses à côté de la led, et l’ATMEGA328.
Cliquer sur [], et chercher GND dans la liste. Placer les différentes masses, et répéter l’opération pour le 5V sur l’ATMEGA328.

Votre schéma ressemble à ça? Très bien.

Création de composants personnalisés

Ok, donc il ne nous manque plus que le Pololu A4988. Cliquons sur le schéma, puis dans le filtre: POLO… Ah non. A49… Non plus.
Aha, je vous ai bien eus hein 😀

Ce serait trop facile…

Bon, hé bien il ne reste plus qu’à le créer puisqu’il n’existe pas en standard! z’allez voir, ça n’a rien de méchant.

On va commencer par cliquer, dans la barre d’outils du haut, sur le bouton « Editeur de librairie – créer et éditer des composants »

Arrive une page blanche, sur laquelle nous allons pouvoir dessiner notre Pololu A4988 dans sa version schématique.

Cliquons sur le bouton « Créer un nouveau composant »

  • Nom du composant »: POLOLU_A4988
  • Référence par défaut: DRV (Totalement arbitraire. DRV = Driver)

Laissons les autre champs tels quels et cliquons sur OK.

A l’écrans, nous avons maintenant deux blocs de texte superposés, que nous allons arranger un peu.

C’est l’occasion d’apprendre comment déplacer des éléments dans KiCad!
Il suffit de placer la souris au-dessus du texte, et appuyer sur la touche M. A partir de là, on peut déplacer le composant avec la souris, et quand c’est bon, on clique. C’est tout 🙂

Avant de créer les connexions, on va juste ajuster la grille avec un clic droit, Sélection grille, et sélectionner 2.54mm.

Ok, maintenant créons les 16 connexions de notre A4988, en commençant par la rangée de gauche(de haut en bas), puis la rangée de droite(de bas en haut). Pour rappel, voici un Pololu A4988 dans son milieu naturel:

http://www.arduino-projekte.de

Sur la barre d’outils de droite, cliquons sur le bouton Ajouter des pins au composant , puis quelque part sur la page. Pas d’inquiétude pour le positionnement du composant par rapport à l’origine, on pourra le replacer plus tard.

Après avoir cliqué sur la page, une fenêtre s’ouvre et nous demande plus d’informations sur la pin à créer.
La première s’appelle ENABLE avec une barre au-dessus (pour dire que le driver est activé si elle est à zéro volt). Dans le champ nom pin, tapons ~ENABLE~, les ~ servant à afficher la barre au-dessus du texte.

Numéro de pin: 1
Orientation: Droite
Type: Entrée

Clic sur OK, clic sur la page et hop! La première pin est créée.
Et on enchaine avec les suivantes:

Nom: MS1
Numéro de pin 2

Nom: MS2
Numéro de pin 3

Nom: DIR
Numéro de pin 8

C’est bon?

Alors avant de tout casser, nous allons sauver ce composant.
Il faut d’abord créer une librairie qui va le contenir: cliquons sur « Sauver le composant dans une nouvelle librairie ». On va parcourir le disque jusqu’à trouver le répertoire de notre projet et sauver sous le nom « pololu_a4988.lib ». Au message qui suit, répondons OK, puis allons dans le menu Préférences/Librairies de composants. Dans la liste du haut, cliquer sur Ajouter, et sélectionner le fichier pololu_a4988.lib fraichement créé. Bien!

Cliquons enfin sur « Sélection de la librairie de travail », et dans le filtre: pololu. Valider en double cliquant sur pololu_a4988.

Là, on est bien!

Allez, on va créer les 8 pins de droite en commençant par en bas. Plus aucune difficulté maintenant! Pensez juste à changer l’orientation des pins 😉

Nous n’avons plus qu’à dessiner un rectangle autour du Pololu, ramener les textes à côté avec la touche M, sauver avec un petit Ctrl+S et hop! C’est terminé.

On peut fermer l’éditeur de composant et revenir à notre schéma principal. Maintenant, si on clique sur « Placer un composant », dans la liste nous trouverons notre Pololu A4988. Plaçons-le à côté de l’ATMEGA328, sa pin 8 faisant face à la pin 11 de l’ATMEGA328.

N’oubliez pas d’alimenter le Pololu avec +5V et GND.

Liaison des composants

Bien! Nous avons placé nos composants, il faut maintenant câbler le schéma.

Commençons par cliquer sur le segment vert dans la barre d’outils de droite (placer un fil).
Le fonctionnement est simple: clic 1 sur la pin 1, clic 2 sur la pin 2. Les clics intermédiaires permettent d’ajouter des coudes au fil.

On va relier comme ça la résistance à la pin 13, la résistance à la LED, et les alimentations.

Assignation de valeurs aux composants

En regardant le schéma, on se rend compte que la valeur de la résistance n’a pas été définie. Nous allons placer la souris au-dessus de la résistance, et appuyer sur E (Edition).
Une fenêtre s’ouvre et nous propose (entre autres) de donner une valeur au composant.

Si jamais un menu « Clarification sélection » s’affiche, sélectionner « Champ valeur » et indiquer 220.

Bilan

Et voilà, après avoir raccordé le pololu à l’ATMEGA328, vous devriez avoir un schéma similaire à celui-ci.

Allez, ça ira pour l’instant 🙂

Prochaine étape: le circuit imprimé!

Plaque décorative de la comté

Pâques arrive avec son lot de chocolats, retrouvailles de famille et d’amis, et annonce une inexorable tôle pour le vendredi soir!

A l’occasion de nos retrouvailles annuelles, l’ami Geo m’a demandé si je pouvais lui fabriquer une plaque « Bag End » pour mettre devant chez lui, en référence à la maison de Bilbon Sacquet du même nom.

Le petit challenge, c’est que les dimensions demandées ne me permettaient pas de fabriquer la pièce en une fois.
Alors j’ai fait un petit assemblage façon puzzle (j’vais lui montrer qui c’est Raoul!), histoire que les deux morceaux ne s’écartent pas trop avec le temps et l’humidité, et que ça ne devienne pas tout dégueulasse.

La pièce mesure 51x30cm.

Détail de la gravure

Raccord pas trop vilain

Le making of !

Chaque moitié a été usinée de la manière suivante:

  1. Contour à la fraise ronde pour la moulure (4mm de profondeur, fraise de 1/4 de pouce)
  2. Découpage à la fraise droite de 1/4 de pouce (passes de 3mm, avec des tenons pour éviter que ça se barre à l’étape 3)
  3. Gravure du texte à la fraise conique de 120°
Moulure gravée à la fraise ronde
Brut de décoffrage
Les deux parties après nettoyage. Évidemment il a fallu poncer un peu au niveau de l’assemblage pour que ça rentre…
Et paf! un peu de colle, deux serre-joints, et une bonne nuit de sommeil…

Et le résultat final

L’ami Geo s’est ensuite attelé à arranger le panneau pour le vieillir et lui donner un air authentique. Il a noirci l’intérieur des lettres, il y est même allé au chalumeau le cochon. Puis ponçage, vernis, ponçage, vernis (répéter jusqu’à ce que le pot soit vide). Il explique ça bien plus en détails ici.

Le résultat est vraiment mortel!

Ça a de la gueule!

Module SD universel pour Reprap: premier test grandeur nature !

Après une longue phase de debugging et d’incantations aux dieux de l’électronique, j’ai finalement osé tester mon petit montage sur l’imprimante 3D! (rappel des faits)

J’avais une boîte à imprimer pour madame, et j’ai profité de l’occasion pour essayer le bazar. Je ne vous cacherai pas qu’il y a eu quelques faux départs et réglages avant d’arriver à cette impression impeccable de 2h50 🙂

Le montage est connecté au port AUX1 de la carte RAMPS (connexion qu’on ne voit absolument pas sur cette photo…)

L’unique connexion se fait par 4 fils avec le port AUX1 du RAMPS. Ces 4 fils correspondent au +5V, 0V, Rx et Tx.

Donc ce module n’a pas besoin d’alimentation externe, ce qui est plutôt cool!

Et voilà une belle boîte pour ranger le mascara et autres poupouilles de salle de bain 🙂

Déclencheur pour réflex Canon à base d’Arduino

  • Bonjour Pierre, vous connaissez ma femme?

  • Oui, chef…

  • Elle est belle hein?

  • Oui, chef…

Et en plus d’être belle, elle a des envies lubies obsessions photographiques très précises, comme prendre des dominos en train de tomber, pour figer le mouvement.

Le truc, c’est que prendre ce genre de photos, c’est assez chaud, pour les raisons suivantes:

  1. Déclencher l’ouverture à la main avec précision est… très difficile,
  2. Pouvoir répéter une photo est… impossible,
  3. Les dominos se cassent la gueule pour un oui ou pour un non,
  4. Ma femme n’est pas patiente DU TOUT.

Pour ces raisons, je lui ai fabriqué un déclencheur automatique, à base de barrière infrarouge et d’Arduino.

Le principe

La barrière IR est constituée d’une pièce en U imprimée en 3D, dans laquelle sont insérées face à face une LED IR et une photodiode.

Le principe est simple: on cale notre premier domino au fond de la boîte, et en tombant il va couper le faisceau infrarouge. Coupure de faisceau qui déclenche l’appareil photo après un délai soigneusement choisi (ou disons que le terme « empiriquement » serait plus approprié).

L’électronique

C’est une Arduino Uno qui gère le capteur et le déclenchement.

Voici l’interface entre l’arduino et l’appareil photo:

connecteur jack arduino canon eos 500D
Figure 1: schéma extrêmement académique et normalisé de la connexion

 

Le résultat final

Le résultat final, avec le dernier domino en suspension…

Précisions sur les réglages de l’appareil

Les dominos tombent très vite. j’ai calculé, ça fait 20ms par domino. Selon mes savants calculs, l’extrémité supérieure du dernier domino se déplace à la vitesse infraluminique (le contraire vous aurait étonnés, hein) de 3.5m/s.

Alors si vous êtes comme ma femme et que vous voulez que le dernier domino soit parfaitement net, il va falloir adopter une vitesse méga rapide de 1/2000ème de seconde.

Autant dire qu’à cette vitesse, il vaut mieux éclairer fort (ici, c’était en extérieur), et on était à 400 ISO.

Copinage

Si vous êtes intéressés par un blog de photographe en plein apprentissage, assistée par un technicien aussi patient que la photographe est pointilleuse, allez faire un tour loin du tumulte!

Créer des templates dans Atom

Salut les barbus!

Vous qui programmez (et je sais qu’il y en a, pas la peine vous cacher!), peut-être utilisez-vous l’éditeur Atom?

C’est ce que j’utilise, en tout cas pour développer en C++ sur mes différents joujoux (choux, cailloux, genoux, hiboux, joujoux, poux… oui c’est bien un x… Mais c’est bizarre à lire quand même), Arduino, ESP8266 et Teensy.

Et s’il y a bien une chose qui me fatigue, c’est de devoir toujours taper la même chose à chaque fois que je crée une nouvelle classe:

maclassequitue.h:

maclassequitue.cpp:

Ce n’est pas grand chose, mais c’est monstre rébarbatif de devoir se taper ça à chaque fois.

J’ai trouvé un plugin Atom permettant de créer des templates pour générer ce qu’on veut en deux coups de cuillère à pot. Il s’appelle Atom Smart Templates.

Une fois installé, voici comment j’ai créé ma template pour générer les deux fichiers à partir d’un nom de classe:

  • Menu Packages/Smart Templates/Open templates folder
  • Dupliquer le répertoire de la template de base (BaseTemplate), et l’appeler cpp (nom totalement arbitraire)
  • Virer tout sauf le fichier index.js (qui contient la configuration de notre template)
  • Créer deux fichiers: header.template et implementation.template (noms tout aussi arbitraires)

Le plus gros est fait 🙂

Voici le contenu de mon index.js:

La variable params contient la liste des paramètres à demander à l’utilisateur pour pouvoir générer les fichiers.

Chaque item généré dans la fonction rules prend en source nos deux fichiers .template, et construit leurs noms finaux en fonction du paramètre ClassName qui a été saisi.

Ensuite, nous devons créer notre fichier header.template:

Et le fichier implementation.template:

Facile, non?
Et surtout maintenant, quand je veux créer une nouvelle classe, je n’ai qu’à faire un clic droit dans le répertoire concerné, Create files from template, clic sur C++ class, je rentre le nom de ma classe et paf!

Prototype de contrôleur à base de carte SD pour Teacup

Salut!

Comme je l’expliquais dans mon précédent article, je suis passé sur Teacup et mon contrôleur LCD/SD d’origine n’est pas compatible avec ce firmware. Et je n’ai pas du tout envie que mon imprimante 3D soit dépendante d’un PC pour pouvoir fonctionner.

Teacup gèrerait a priori la présence d’une carte SD, mais visiblement il  faut envoyer du G-Code pour lister les fichiers (via un PC, donc…), et l’ensemble n’est pas vraiment documenté. Même chose pour l’affichage.

Alors je me suis lancé dans la conception d’un contrôleur qui discutera avec le firmware de la machine, quel qu’il soit. Rien que ça, mon pote!

Idéalement, il disposera d’une interface web (ESP8266 powaaa!), mais pour le moment j’ai fait un proof of concept avec une Teensy 3.2, un afficheur OLED SSD1306 et un lecteur de carte microSD. Et le pire dans tout ça, c’est que ça a l’air de marcher!

Voici le montage en mode breadboard:

A gauche, l’écran, au milieu le lecteur microSD, à droite la Teensy, et en haut l’Arduino Mega 2560 (avec Teacup). Au dessus de tout ça, un sacré bordel de fils. A gauche, une résistance de 220Ω qui n’a rien à faire dans le montage, mais oh, je suis encore chez moi, non?!

La communication entre mon petit bazar et Teacup se fait par port série. Après l’envoi de chaque commande, le programme attend l’acknowledgement du firmware (un bête « ok ») avant d’envoyer la commande suivante.

Pour le moment, j’affiche juste la ligne courante sur l’écran, mais je vais faire évoluer ça pour afficher les températures et l’avancement de l’impression.

Changement forcé de firmware sur l’imprimante 3D

Une nouvelle année s’ouvre à nous, et je vous la souhaite bien bonne!

Pour démarrer en beauté, j’ai commencé par « casser » mon imprimante 3D. Bravo champion!

L’histoire a commencé (enfin c’est ce que je pense) alors que je regardais jusqu’où je pouvais pousser mon plateau Y, dans l’idée d’imprimer une pièce assez grande (une pièce de quadricoptère, mais j’aurai tout loisir de revenir là-dessus dans les mois à venir!)

Bref, suite à ça, je vais pour imprimer une petite pièce en PLA, et là, paf! le plateau ne chauffe pas. Je contrôle la résistance du plateau, 1Ω et quelques (correct), mais à la sortie du RAMPS, j’avais 2 pauvres volts qui se couraient après pour alimenter le plateau (normalement on est à 12…)

Visiblement un fusible ou un Mosfet a grillé à cause d’un court circuit que je suppose provoqué par ma poussée un peu extrême du plateau (oui, les connexions sont artisanales…)

Alors je ne me démonte pas de souci, je remplace le RAMPS par un deuxième que j’avais en stock. Je rebranche tout mon petit bazar, j’allume, et là… j’ai plus rien compris au fonctionnement des moteurs. X et Y nickel, par contre Z et extrudeur ne tournaient plus. Ou si. Ah, et puis finalement non.

J’ai flashé l’Arduino avec la dernière version de Marlin, pas mieux. Alors après analyse, un des Pololus avait grillé, mais même en le remplaçant, j’avais un fonctionnement totalement aléatoire des moteurs Z et E…

Au bout d’une journée et demie d’agacement intensif et d’une envie (heureusement réprimée) de sauter dessus à pieds joints, j’ai décidé d’installer un autre firmware déjà essayé dans le passé sur une autre machine: Teacup.

Hé ben tu l’crois, tu l’crois pas: tout est rentré dans l’ordre. Les 4 axes fonctionnent, les endstops aussi, le plateau chauffant et la buse aussi, il n’y a plus qu’à tout recalibrer (depuis l’écriture ce cet article, c’est fait et ça marche nickel).

Des fois faut pas trop chercher… En tout cas pour moi, Marlin, c’est fini. Non Marlin, ne dis rien, je ne t’écouterai pas! Mais il va quand même que je trouve un palliatif pour pouvoir imprimer depuis une carte SD parce que là, je dois me brancher en USB depuis le PC…