Produire un circuit imprimé avec des zones de Voronoï

Je voulais faire un circuit imprimé pour le CoreXY, pour pouvoir ranger mon petit bazar dans un boitier propre et libérer ma plaque d’essais.

Le truc, c’est que ma fraiseuse CNC souffre d’imprécision… Et comme je dois tracer des pistes et pastilles pour les Pololu (connecteurs espacés de 2.54mm), j’ai un peu peur du résultat…

Et je n’ai toujours pas envie d’utiliser des produits chimiques.

Alors j’ai investigué et j’ai trouvé une technique redoutable de production de PCB, qui devrait être capable de compenser l’imprécision de la machine : les diagrammes de Voronoï.

L’idée est, plutôt que de tracer les contours précis de chaque piste et pastille, d’aller « au plus large », et isoler uniquement les zones nécessaires. Un dessin vaut mieux qu’une longue histoire:

voronoi pcb
Le circuit à graver

Les lignes fines qu’on voit entre les pistes sont celles qui vont être fraisées. Après tout, on n’a pas besoin de faire le tour de toutes les pistes avec précision pour les isoler les unes des autres.

1. Conception du circuit

J’ai tout d’abord conçu mon petit montage avec Fritzing.fritzingJ’y ai mis mes deux pololu, des connecteurs pour les moteurs, les alimentations et le signal.

On bascule en mode « circuit imprimé », simple couche. Avec l’autoroutage (ou pas… mon circuit était autorouté d’une façon très bizarre), on met en place les pistes de cuivre.

fritzing-pcb
Je n’ai pas pu éviter un jumper…

2. Export au format Gerber

Depuis le menu fichier>exporter pour la production>gerber étendu, nous pouvons exporter le circuit imprimé au format Gerber. On obtient un répertoire avec une tapée de fichiers, dont deux nous intéressent particulièrement : pcb_corexy_copperBottom.gbl et pcb_corexy_drill.txt.

Le premier contient les traces du circuit imprimé, et le second les coordonnées des trous à percer (en pouces… sympa les gars).

3. Traitement du fichier Gerber avec Visolate

Traumflug, un membre très actif de la communauté Reprap et coauteur de Teacup, a écrit un programme en java qui permet de générer des zones de Voronoi à partir d’un fichier Gerber.

Après avoir téléchargé Visolate, ouvrons notre fichier gbl.

visolate-1

Les pistes et les pastilles apparaissent, avec des couleurs j’te dis même pas. Bariolées. Chaque couleur correspondra à une zone de Voronoi. La première étape est donc de réunir ce qui doit être réuni, avec le bouton « fix topology ». Avant de cliquer, il faut zoomer un peu avec le slider « dpi ». Le programme va scanner le circuit et réunir les zones de notre circuit imprimé.

visolate-2Cool! Maintenant, cliquons sur « make toolpaths »: Visolate génère les parcours d’outil pour fraiser les zones de Voronoi. Il n’y a plus qu’à enregistrer le fichier avec « save G-Code » et on est paré. Enfin presque.

visolate-3

4. Génération du G-Code de perçage

Comme je le disais au-dessus, Fritzing génère les coordonnées des perçages en pouces. Il faut faire la conversion en mm. Ou basculer la machine en mode pouces. J’ai opté pour la conversion en mm.

Le fichier des perçages a cette allure:

[code]

; NON-PLATED HOLES START AT T1
; THROUGH (PLATED) HOLES START AT T100
M48
INCH
T100C0.038000
T101C0.041667
T102C0.035000
%
T100
X015681Y004991
X017681Y012991
X015681Y014991
X017681Y009991
X015681Y005991
X017681Y013991
X015681Y015991

etc.

[/code]

J’ai fait un programme qui convertit cette suite de coordonnées en G-Code, et en millimètres s’il vous plait : GerberDrill.

Désolé pour l’interface utilisateur toute pourrie… Le principe est simple: parcourir pour aller chercher le fichier drill.txt, définir le code à générer pour chaque trou et cliquer sur « Process drill file ». Le programme génère du G-Code pour se rendre à l’emplacement du trou, et percer à la profondeur indiquée.

5. Concaténation des deux fichiers G-Code et miroir

Je voulais tout faire d’une traite, c’est à dire fraiser les zones de Voronoi et marquer les points de perçage (puis percer à la main avec une mèche de 1mm avec la Dremel).

Donc dans un fichier texte, j’ai mis à la suite le G-Code généré par Visolate et celui généré par mon programme GerberDrill.

Etape importante : il faut mettre un effet miroir sur le G-Code, car la gravure va se faire sur la face inférieur du circuit. Pour cela, dans le fichier G-Code, remplacer tous les « X » par « X-« .

On enregistre le fichier et zou! balance la purée papa!

Le jeu de ma machine se remarque particulièrement au niveau des points de perçage, lorsqu’ils sont près d’une trace. J’ai dû les arranger à la cochon en en élargissant quelques uns… Hélas je n’ai pas pris de photo de la plaque juste après la gravure, mais voici la vue de dessous une fois les éléments soudés:

Désolé pour les soudures dégueulasses...
Désolé pour les soudures dégueulasses…

La prochaine fois je pense que je marquerai les perçages avant de faire les isolations. En tout cas j’ai bien contrôlé au multimètre et ça a l’air bon.

PCB CoreXY
Les connecteurs soudés
PCB CoreXY avec drivers
Les pololu montés

On peut voir à gauche les connecteurs pour les signaux step et direction. A droite les deux connecteurs de moteurs, et les deux connecteurs d’alimentation (5V en haut pour la logique, et 12V en bas pour les moteurs).

Il n’y a plus qu’à connecter la carte, mettre le jus et en avant!

2 pensées sur “Produire un circuit imprimé avec des zones de Voronoï”

  1. Bonjour,
    Je n’arrive pas à installer Visolate sous Windows 10 (problème de librairies ?)
    Avez-vous des infos ?
    Merci

    1. Salut Stéphane,

      Tu dois avoir java installé sur ta machine pour faire tourner Visolate, mais ce n’est pas tout. Il a aussi besoin de la librairie java3d, téléchargeable ici: https://java3d.java.net/binary-builds.html
      Dans le zip, il y a un autre zip, appelé j3d-jre.zip.
      Ce zip contient deux répertoires bin et lib, et tu doit extraire leur contenu respectivement dans les dossiers bin et lib de ton répertoire d’installation de java (probablement quelque chose comme c:\program files\java\jre_xxxx)

      Après ça, Visolate ne devrait plus t’embêter 🙂

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Es-tu capable de répondre à ça? * Time limit is exhausted. Please reload the CAPTCHA.