Fraisage de PCB à domicile

image


Je n'aime pas graver des cartes de circuits imprimés. Eh bien, je n'aime pas le processus d'agitation avec du chlorure ferrique. Imprimez là, repassez ici, exposez la résine photosensible - toute l'histoire à chaque fois. Et puis réfléchissez à l'endroit où vidanger le chlorure ferrique. Je ne discute pas, c'est une méthode abordable et simple, mais personnellement j'essaye de l'éviter. Et puis mon bonheur est arrivé: j'ai terminé le routeur CNC. Immédiatement, la pensée a surgi: mais pas s'il fallait essayer de fraiser les circuits imprimés. Aussitôt dit, aussitôt fait. Je tire un simple adaptateur d'un esp-wroom-02 débordé et commence mon excursion dans le fraisage des cartes de circuits imprimés. Pistes spécialement conçues petites - 0,5 mm. Car si ceux-ci ne fonctionnent pas, eh bien, quoi pour cette technologie.


Ici, vous avez besoin d'une petite digression. Il y a plusieurs façons d'obtenir un ensemble de gcodes pour fraiser une carte de circuit imprimé à partir de cad. À mon avis, ils diffèrent selon le système de CAO que vous utilisez. Si vous êtes un fan d'Eagle, il existe des solutions spécialisées et bien intégrées: PCB-GCode , la possibilité d'ouvrir directement des fichiers BRD dans chilipeppr. Malheureusement, Autodesk a récemment changé la politique de licence pour l'aigle, et maintenant la communauté ne l'aime pas tellement (vous pouvez voir l' opinion d'un représentant éminent de la communauté ).


Étant donné que je fabrique personnellement des cartes de circuits imprimés tous les cinq ans lors des grandes vacances, KiCAD me suffit pour concevoir. Je n'ai pas trouvé de solutions pratiques spécialisées pour cela, mais il existe un moyen plus universel - en utilisant des fichiers Gerber. Dans ce cas, tout est relativement simple: prenez du pcb, exportez la couche souhaitée vers gerber (pas de mise en miroir et autre magie!), Exécutez pcb2gcode - et obtenez un fichier nc prêt à l'emploi qui peut être donné à la fraise. Comme toujours, la réalité est une infection perverse et tout se révèle un peu plus compliqué.


Obtention de gcode à partir de fichiers Gerber


Donc, je n'ai pas l'intention de décrire comment obtenir un fichier gerber, je pense que tout le monde sait comment. Ensuite, vous devez exécuter pcb2gcode. Il s'avère qu'il faut environ un million d'options de ligne de commande pour produire quelque chose d'acceptable. En principe, sa documentation n'est pas mauvaise, je l'ai maîtrisée et j'ai compris comment obtenir une sorte de gcode de cette façon, mais je voulais quand même de la désinvolture. Parce que l'interface graphique pcb2gcode a été trouvée. Comme son nom l'indique, il s'agit d'une interface graphique pour définir les paramètres de base de pcb2gcode avec des coches et même avec un aperçu.


image


En fait, à ce stade, une sorte de code est reçu et vous pouvez essayer de fraiser. Mais alors que j'ai fouillé dans les coches, il s'est avéré que la valeur par défaut de la profondeur que ce logiciel offre est de 0,05 mm. Par conséquent, la carte doit être installée dans le routeur au moins avec une précision supérieure à celle-ci. Je ne sais pas comment quelqu'un l’a, mais j’ai un ordinateur de bureau avec un moulin sensiblement plus incurvé. La solution la plus simple qui m'est venue à l'esprit était de placer du contreplaqué sacrificiel sur la table, en fraisant une poche à la taille des planches - et ce serait idéalement dans le plan de la fraise.


Pour ceux qui maîtrisent déjà bien le routeur, cette partie est sans intérêt. Après quelques expériences, j'ai découvert qu'il était nécessaire de fraiser une poche dans une direction (par exemple, en l'alimentant sur une dent) et avec un chevauchement d'au moins trente pour cent. Fusion 360 m'a d'abord offert trop peu écrasante et a fait des allers-retours. Dans mon cas, le résultat n'était pas satisfaisant.


Prise en compte de la courbure du PCB


En alignant le site, j'ai collé dessus un ruban adhésif double face, mis le textolite et commencé le fraisage. Voici le résultat:


image


Comme vous pouvez le voir, sur un bord de la planche, le couteau ne touche pratiquement pas le cuivre, de l'autre - il est allé trop profondément dans la planche, pendant le fraisage des miettes de PCB. En regardant attentivement la planche elle-même, j'ai remarqué qu'elle était initialement inégale: légèrement incurvée, et peu importe comment vous en souffrez, il y aura quelques écarts de hauteur. Ensuite, au fait, j'ai regardé et découvert que pour les cartes de circuits imprimés d'une épaisseur supérieure à 0,8 mm, une tolérance de ± 8% est considérée comme normale.


La première option qui vient à l'esprit est l'auto-étalonnage. Selon la logique des choses - ce qui est encore plus facile, la carte est cuivrée, le cutter est en acier, attaché un câblage au cuivre, l'autre au cutter - vous avez ici une sonde prête à l'emploi. Prenez et construisez la surface.


Ma machine est contrôlée par grbl sur un bouclier chinois bon marché. Grbl a un support de sonde sur la broche A5, mais pour une raison quelconque, il n'y a pas de connecteur spécial sur ma carte. Après l'avoir soigneusement examiné, j'ai néanmoins constaté que la broche A5 est sortie vers le connecteur du port SPI (signé comme SCL), il y a aussi un terrain à proximité. Il y a une astuce avec ce «capteur» - les fils doivent être torsadés ensemble. Dans la fraise, il est extrêmement facile à saisir, et sans cela, le capteur donnera constamment de faux positifs. Même après le tissage, il continuera, mais très, très rarement.


image


Donc, le capteur est assemblé, testé par le testeur, alors la question importante est de savoir comment vérifier grbl que tout est en ordre et je ne casserai pas un seul graveur. Une petite recherche sur Google a montré qu'il devait envoyer l'équipe G38.2 Z-10 F5.


L'équipe dit: commencez à descendre jusqu'à –10 en Z (hauteur absolue ou relative - cela dépend du mode dans lequel le firmware est maintenant). Il descendra très lentement - à une vitesse de 5 mm / min. En effet, les développeurs eux-mêmes ne garantissent pas que la descente s'arrête exactement au moment où le capteur est déclenché, et pas un peu plus tard. Par conséquent, il vaut mieux descendre lentement, afin que tout s'arrête à l'heure et n'ait pas le temps de monter à bord, alors ne jouez pas. Il est préférable d'effectuer le premier test en levant la tête à une hauteur bien supérieure à 10 mm et en laissant tomber le système de coordonnées. Dans ce cas, même si tout ne fonctionne pas et que vous n'avez pas le temps d'atteindre le bouton d'arrêt d'urgence, la fraise ne constipera pas. Vous pouvez effectuer deux tests: le premier - pour ne rien faire (et en atteignant –10 grbl donnera «Alarm: Probe Fail»), le second - pendant qu'il descend, fermez le circuit avec quelque chose et assurez-vous que tout s'arrête.


Ensuite, vous devez trouver une méthode sur la façon de mesurer réellement la matrice et de déformer le gcode selon les besoins. À première vue, pcb2gcode a une sorte de prise en charge de la mise à niveau automatique, mais il n'y a pas de prise en charge grbl. Il y a la possibilité de demander à l'équipe de faire le test avec vos mains, mais vous devez y faire face, et pour être honnête, j'étais trop paresseux. Un esprit curieux peut remarquer qu'avec LinuxCNC, l'exemple de commande run correspond à la commande grbl. Mais vient alors la différence irréparable: tous les interprètes gcode "adultes" enregistrent le résultat du test dans une variable machine, et grbl sort simplement la valeur sur le port.


Une légère recherche sur Google a suggéré qu'il y avait encore pas mal d'options différentes, mais le projet chillpeppr a attiré mon attention:


Il s'agit d'un système à deux composants conçu pour jouer avec le fer du Web. Le premier composant - Serial JSON Server, écrit en go, s'exécute sur une machine connectée directement au matériel et peut donner le contrôle du port série via des sockets Web. Le second fonctionne dans votre navigateur. Ils ont tout un cadre pour créer des widgets avec certaines fonctionnalités, qui peuvent ensuite être poussées sur la page. En particulier, ils ont déjà un espace de travail prêt à l'emploi (un ensemble de widgets) pour grbl et tinyg.


Et chillpeppr a un support de mise à niveau automatique. De plus, en apparence, il est beaucoup plus pratique que UniversalGcodeSender, que j'ai utilisé auparavant. Je mets le serveur, démarre la partie navigateur, passe une demi-heure à essayer de comprendre l'interface, charge le gcode de ma carte là-bas et vois des ordures:


image


Après avoir regardé le gcode lui-même, que pcb2gcode génère, je vois qu'il utilise la notation lorsque la commande (G1) n'est pas répétée sur les lignes suivantes, mais seules de nouvelles coordonnées sont données:


G00 X1.84843 Y34.97110 ( rapid move to begin. ) F100.00000 G01 Z-0.12000 G04 P0 ( dwell for no time -- G64 should not smooth over this point ) F200.00000 X1.84843 Y34.97110 X2.64622 Y34.17332 X2.69481 Y34.11185 X2.73962 Y34.00364 X2.74876 Y31.85178 X3.01828 Y31.84988 X3.06946 Y31.82249 X3.09684 Y31.77131 

A en juger par le fait que chilipeppr ne montre que des mouvements verticaux, il voit ici la ligne G01 Z-0.12, mais ne comprend pas tout ce qui vient après F200. Besoin de refaire la notation explicite. Bien sûr, vous pouvez travailler avec vos mains ou déposer un script de post-traitement. Mais personne n'a encore annulé le G-Code Ripper , qui, entre autres, peut battre des commandes gcode complexes (telles que les mêmes arcs) en commandes plus simples. Soit dit en passant, il sait également plier gcode dans la matrice de la sonde automatique, mais là encore, il n'y a pas de support intégré pour grbl. Mais vous pouvez faire la même séparation. Les réglages standard me convenaient tout à fait (sauf si dans la config je devais changer les unités en mm à l'avance). Le fichier résultant a commencé à s'afficher normalement dans chilipeppr:


image


Ensuite, exécutez la sonde automatique, sans oublier de spécifier la distance à partir de laquelle abaisser l'échantillon et sa profondeur. Dans mon cas, j'ai indiqué qu'elle devait être abaissée de 1 à –2 mm. La limite inférieure n'est pas si importante, elle peut être définie au moins –10, mais je ne conseillerais pas: quelques fois, j'ai sans succès défini le point de départ à partir duquel commencer le test, et les points extrêmes étaient en dehors de la planche. Si la profondeur est supérieure, le graveur peut être cassé. Et donc juste une erreur. Le niveau de la limite supérieure dépend directement de la durée de mesure de la surface. Dans mon cas, en réalité, la carte n'a presque jamais dépassé 0,25 mm vers le haut ou vers le bas, mais 1 mm est en quelque sorte plus fiable. Cliquez sur la course chérie et courez vers le routeur pour méditer:


image


Et dans l'interface chilipeppr, une surface légèrement mesurée apparaît:


image


Ici, il faut faire attention à ce que toutes les valeurs de Z soient multipliées par 50, afin de mieux visualiser la surface résultante. C'est un paramètre personnalisé, mais 10 et 50 fonctionnent bien à mon avis. Très souvent, je tombe sur le fait qu'un seul point est beaucoup plus élevé que ce que vous pourriez en attendre. Personnellement, j'attribue cela au fait que le capteur attrape la pointe et donne un faux positif. L'avantage de chilipeppr vous permet de décharger la carte de hauteur sous la forme de json, vous pouvez la réparer avec vos mains après cela, puis la charger avec vos mains. Ensuite, cliquez sur le bouton «Envoyer GCode de niveau automatique vers l'espace de travail» - et le code corrigé est déjà chargé dans pepper:


 N40 G1 X 2.6948 Y 34.1118 Z0.1047 (al new z) N41 G1 X 2.7396 Y 34.0036 Z0.1057 (al new z) N42 G1 X 2.7488 Y 31.8518 Z0.1077 (al new z) N43 G1 X 3.0183 Y 31.8499 Z0.1127 (al new z) N44 G1 X 3.0695 Y 31.8225 Z0.1137 (al new z) N45 G1 X 3.0968 Y 31.7713 Z0.1142 (al new z) 

Des mouvements de code Z ont été ajoutés au code, ce qui devrait compenser la rugosité de la surface.


Sélection des paramètres de fraisage


Je commence le fraisage, j'obtiens ce résultat:


image


Ici, vous pouvez voir trois points à la fois:


  1. Le problème de la rugosité de la surface a disparu: tout est coupé (plus précisément, rayé) à presque la même profondeur, il n'y a aucun espace nulle part, et nulle part il n'est trop enterré.
  2. Profondeur insuffisante: 0,05 mm n'est clairement pas suffisant pour cette feuille. Les planches, soit dit en passant, sont des bêtes inconnues chez AliExpress, l'épaisseur du cuivre n'y était pas indiquée. La couche de cuivre est différente, la plus courante - de 18 à 140 microns (0,018-0,14 mm).
  3. Les coups du graveur sont clairement visibles.

À propos de l'approfondissement. Il est facile de déterminer à quelle profondeur le graveur doit être abaissé. Mais il y a une spécificité. Le graveur conique a une forme triangulaire dans la projection. D'une part, l'angle d'information par rapport au point de travail détermine à quel point il est difficile de casser l'outil et sa durée de vie, et d'autre part, plus l'angle est grand, plus la coupe est large à une profondeur donnée.


image


La formule pour calculer la largeur de coupe pour une profondeur donnée ressemble à ceci (extraite impudiquement de reprap.org et fixe):


 2 * penetration depth * tangens (tool tip angle) + tip width 

Nous le considérons: pour un graveur avec un angle de 10 degrés et un point de contact de 0,1 mm avec une profondeur de 0,1 mm, nous obtenons une largeur de coupe de près de 0,15 mm. Sur cette base, au fait, nous pouvons estimer quelle distance minimale entre les pistes fera le graveur sélectionné sur la feuille de l'épaisseur sélectionnée. Et bien, même si vous n'avez pas besoin de très petites distances entre les chenilles, cela ne vaut toujours pas la peine d'abaisser le couteau trop profondément, car les couteaux en fibre de verre sont très brusques, même à partir d'alliages durs.


Eh bien, il y a encore un moment amusant. Supposons que nous ayons deux pistes espacées de 0,5 mm. Lorsque nous exécutons pcb2gcode, il examinera la valeur du paramètre de décalage de trajectoire d'outil (combien s'écarter de la piste lors du fraisage) et effectuera en fait deux passes entre les pistes, séparées par (0,5 - 2 * toolpath_offset) mm, entre elles il y aura (mais plutôt casser juste) un morceau de cuivre, et ce sera moche. Si toolpath_offset est plus grand que la distance entre les pistes, pcb2gcode donnera un avertissement, mais il ne générera qu'une seule ligne entre les pistes. En général, pour mes applications, ce comportement est plus préférable, car les pistes sont plus larges, le cutter coupe moins - beauté. Certes, il peut y avoir un problème avec les composants smd, mais il est peu probable.


Il y a un cas prononcé de ce comportement: si vous définissez un très grand toolpath_offset, alors nous obtenons une carte de circuit imprimé en vue du diagramme de Voronoi. Au moins - c'est beau;) Vous pouvez voir l'effet sur la première capture d'écran de pcb2gcode que j'ai donnée. Il montre à quoi il ressemblera.


Maintenant sur le passage à tabac du graveur. C'est ce que je les appelle en vain. La broche n'est pas mal du tout, et bien sûr, elle ne frappe pas si fort. Ici, plutôt, la pointe du graveur, en se déplaçant, se penche et saute entre les points, donnant ici cette image étrange avec des points. La première et principale idée est que le moulin n'a pas le temps de couper et donc de sauter. La recherche facile sur Google a montré que les gens fraisaient des cartes de circuits imprimés avec une broche à 50k tours à une vitesse d'environ 1000 mm / min. Ma broche donne 10k sans charge, et on peut supposer qu'il faut couper à une vitesse de 200 mm / min.


Résultats et conclusion


Compte tenu de tout cela, je mesure un nouveau morceau de PCB, commence à fraiser et j'obtiens ce résultat:


image


Celui du haut est exactement le même qu'il est sorti de la fraise, celui du bas - après l'avoir tenu avec une meule ordinaire à quelques reprises. Comme vous pouvez le voir, à trois endroits, les pistes n'ont pas traversé. En général, la largeur des pistes flotte sur toute la planche. Cela doit encore être réglé, mais j'ai une hypothèse sur la raison. Au début, j'ai fixé la planche sur un ruban adhésif double face, et elle partait souvent. Ensuite, à quelques endroits, j'ai saisi les bords des têtes des vis. Il semble rester mieux, mais joue encore un peu. Je soupçonne qu'au moment du fraisage, il est pressé sur le site et à cause de cela, en fait, il n'est pas coupé.


image


En général, tout cela a des perspectives. Une fois le processus terminé, la construction du DEM prend environ cinq à sept minutes, puis le fraisage lui-même prend quelques minutes. Il semble que vous puissiez expérimenter davantage. Mais alors vous pouvez faire du forage sur la même machine. Achetez toujours des rivets, et il y aura du bonheur! Si le sujet est intéressant, je peux écrire un autre article sur le forage, les planches bilatérales, etc.

Source: https://habr.com/ru/post/fr402047/


All Articles