Mot-clé - fraiseuse

Fil des billets - Fil des commentaires

Dimanche, mai 20 2012

L’impression 3D, la « tête » d’impression et Openscad: l’OpenSource à la rescousse

Le tendeur en S dont j’avais évoqué l’idée dans le post précédent est maintenant réalisé. Il fonctionne à merveille :-)

Les pièces du tendeur

 

Tendeur en place

 

J’ai eu ensuite quelques déboires avec les axes X et Y. J’ai finalement réglé mes problèmes en remplaçant tous les paliers par des roulements à billes. En effet, les paliers glissent très bien mais dès que les courroies sont sous tension, les déplacements sont plus durs et ça fini a un moment ou à un autre par coincer provoquant ainsi des mouvements saccadés…

J’ai donc usiné des nouveaux supports pour y insérer des roulements à billes de rollers à la place des paliers.

 

Roulements

Pour les chariots, j’ai remplacé le double palier par une douille à billes prisonnière à l’intérieur du chariot.

Douille à billes

Après ces quelques modifications, tout fonctionne parfaitement ! Pour les déplacements en Y, j’ai fait des premiers tests, j’arrive à une vitesse de 12 000 mm / min. Je ne pense pas pouvoir imprimer à cette vitesse, mais la machine supporte sans problème  une vitesse de déplacement élevée.

 

Reste à réaliser le support de la tête d’impression… Ce n’est pas une mince affaire, la pièce est relativement complexe, et j’ai du mal à la visualiser et surtout à en estimer les mesures exactes. J’arrive à mes limites ;-)

Heureusement, l’ordinateur est là pour nous aider à simuler différents modèles de support. L’idéal pour moi étant de réaliser un modèle 3D qui me servira ensuite à projeter à plat les pièces pour pouvoir ensuite les fraiser.

 

Le premier « truc » qui vous vient à l’idée: SolidWorks ! Oui et bien c’est « très » cher et je ne l’ai pas. Sketchup alors ? Non, il ne tourne pas sous linux ( même avec Wine je n’y arrive pas ). Alors comme toujours on va regarder du côté des solutions opensource. J’en connais 4 que j’utilise régulièrement:

  • LibreCAD: Excellent outil mais qui se limite à la 2D, nous l’utiliserons pour compléter les projections 2D des pièces.
  • HeeksCAD: Pour ce qui est de la conception 3D, il le permet mais j’ai du mal avec son ergonomie…
  • FreeCAD: Très bien, dessin 3D paramétrique, pas trop dur à prendre en main. Mais il a un gros soucis pour le moment. Autant il permet de créer des pièces facilement autant il est très difficile de les assembler dans un modèle 3D complet. A surveiller dans les futures versions, il évolue assez vite.
  • OpenSCAD: Un outil atypique ! Il permet de dessiner des pièces complexes en 3D paramétrique, mais ici, point d’interface graphique, le dessin se fait à l’aide d’un langage de programmation.

 

Espace de travail

 

Mon choix s’est donc porté sur Openscad. Il présente aussi l’avantage de générer des fichiers STL qui seront utiles lors de l’utilisation de l’imprimante 3D. D’où l’intérêt de commencer à le maîtriser dès maintenant.

 

Openscad dispose d’un éditeur intégré mais celui-ci est peu évolué. Si vous voulez plus de convivialité, vous pouvez utiliser un éditeur externe. Pour celà, il faut « cacher » l’éditeur intégré et cocher l’option « Automatic reload and compile »

Option

 

Options

 

Si vous utilisez emacs comme moi, vous pouvez lui dire de traiter les fichier « scad » comme des fichiers C. Ça permet d’avoir une bonne indentation et une coloration syntaxique correcte.

Pour cela, il faut mettre les lignes suivantes dans le fichier « .emacs »

(add-to-list 'auto-mode-alist '("\\.scad$" . c-mode))

 

L’environnement est prêt, on peut commencer à travailler. Pour commencer par des choses simples, modélisons  une douille à bille.

// Linear Ball Bearing
include 
 
$fn=50;
$lbb_inner_diameter=8;
$lbb_outer_diameter=15;
$lbb_length=24;
 
module linear_bearing_15_24()
{
  color(Aluminum) difference()
    {
      cylinder($lbb_length,$lbb_outer_diameter/2,$lbb_outer_diameter/2,center=true);
      cylinder($lbb_length+1,$lbb_inner_diameter/2,$lbb_inner_diameter/2,center=true);
    }
}
 
//For test
linear_bearing_15_24();

Linear ball bearing

C’est très simple, juste la différence entre 2 cylindres ! Là ou c’est génial: on ajuste les variables et hop on change les côtes.

 

Pour continuer, un peu plus compliqué: la tête chauffante. On va la modéliser rapidement pour qu’elle nous serve ensuite de repère pour la construction du support.

 

// HotEnd jhead MK IV
$fn=50;
 
$hotend_resistor_diameter=5;
$hotend_filament_diameter=3;
$hotend_outer_diameter=16;
$hotend_peek_length=50;
 
// Peek element
module peek() {
color(black) difference()
  {
    difference()
      {
	// Peek cylinder
	cylinder($hotend_peek_length,$hotend_outer_diameter/2,$hotend_outer_diameter/2);
	// Hole for filament
	translate([0,0,5]) cylinder($hotend_peek_length,$hotend_filament_diameter/2,$hotend_filament_diameter/2);
      }
 
    // Mount groove
    translate([0,0,$hotend_peek_length-10])
	{
	  difference()
	    {
	      cylinder(5,9,9);
	      cylinder(5,6,6);
	    }
	}
  }
 
}
 
module copper_end()
{
  translate([-5,-6.5,3])
    {
      difference()
	{
	  cube(size = [16,13,8]);
	  translate([12,15,4])
	    {
	      rotate([90,0,0])
		{
		  cylinder(20,$hotend_resistor_diameter/2,$hotend_resistor_diameter/2);
		}
	    }
	}
    }
  difference()
	{
	  cylinder(3,1,4.5);
	  cylinder(3,0.35,3);
	}
  translate([0,0,3])
    {
      difference()
	{
	  cylinder(20,4,4);
	  translate([0,0,1]) cylinder(21,3,3);
	}
    }
}
 
module hotend()
{
  translate([0,0,13])
    {
      peek();
    }
  copper_end();
}
 
// For test
hotend();

 

Hotend

 

Pas mal non ;-)

 

Et pour terminer le support. Grâce à openscad, on peut changer les côtes, déplacer les perçages… pour simuler tout ce qui nous passe par la tête !

Même si ça peut paraître compliqué au premier abord, c’est très agréable à utiliser. Je ne prétends pas maîtriser complètement l’outil, mais je me débrouille.

 

Autre point très intéressant, on peut utiliser des conditions et autres boucles. Ici j’utilise quelques variables qui si elles sont initialisées à 1 modifient le rendu pour me permettre d’obtenir rapidement les projections à plat.

 

// Hotend Mount
 
include ;
include ;
 
$top_length=50;
$top_width=50;
$side_height=50;
$hole_cable_diameter=15;
 
$fromA=0;
$fromB=0;
$fromtop=0;
 
module mount_top()
{
  difference()
    {
	cube(size = [$top_length,$top_width,15]);
	translate([15,15,-2]) cylinder(20,$hotend_outer_diameter/2,$hotend_outer_diameter/2);
    }
}
 
module mount_side_A()
{
  rotate([0,90,0])
    {
      difference()
	{
	  cube(size = [$side_height,$top_length+5,5]);
	  translate([25,40,0])
	    {
	      cylinder(15,$lbb_outer_diameter/2,$lbb_outer_diameter/2, center=true);  
 
	    }
	}
      if ($fromA==0)
	{
	  translate([25,40,5]) linear_bearing_15_24();
	}
    }
}
 
module mount_side_B()
{
  rotate([90,90,0])
    {
      difference()
	{
	  cube(size = [$side_height,$top_length,5]);
	  translate([40,35,0]) cylinder(15,$lbb_outer_diameter/2,$lbb_outer_diameter/2, center=true);
	  translate([30,15,1]) cylinder(10,$hole_cable_diameter/2,$hole_cable_diameter/2, center=true);        
 
	}
       if ($fromB==0)
	 {
      translate([40,35,0]) linear_bearing_15_24();
	 }
    }
}
 
module mount_complete()
{
  if ( $fromA==0 && $fromB==0 )
    {
      mount_top();
    }
 
  if ($fromtop==0 && $fromB==0)
    {
      translate([-5,-5,15]) mount_side_A();
    }
  if ($fromtop==0 && $fromA==0)
    {
      translate([0,0,15]) mount_side_B();
    }
  if ($fromtop==0 && $fromA==0 && $fromB==0)
    {
      color(black) translate([15,15,-48]) #hotend();
    }
}
 
module mount_full()
{
 
  if ($fromtop==0 && $fromA==0 && $fromB==0)
    {
      // rod A
      rotate([0,90,0]) translate([10,35,-50]) cylinder(300,4,4);
      // rod B
      rotate([90,90,0]) translate([25,35,-150]) cylinder(300,4,4);
    }
  //Holes for hotend groove
  difference()
    {
      mount_complete();
      translate([23,-10,7.5]) rotate([-90,0,0]) cylinder(40,2.5,2.5);
      translate([7,-10,7.5]) rotate([-90,0,0]) cylinder(40,2.5,2.5);
    }
}
 
if ( $fromtop==1 )
  {
    projection(cut=false) mount_full();
  }
 
if ( $fromA==1 )
  {
    projection(cut=false) rotate([0,90,0]) mount_full();
  }
 
if ( $fromB==1 )
  {
    projection(cut=false) rotate([90,0,0]) mount_full();
 
  }
if ( $fromtop==0 && $fromA==0 && $fromB==0 )
  {
    mount_full();
  }

 

Hotend mount

 

Si l’on utilise les variables indiquées en haut du fichier, on obtient les projections à plat des 3 faces qui m’intéressent.

Si: $fromA=1;

fromA

Si $fromB=1;

 

FromB

 

Si $fromTop=1;

 

FromTOP

 

Le tout peut être exporté en DXF pour être ensuite utilisé dans LibreCAD puis HeeksCNC pour le fraisage des pièces. Seul petit bémol, les cercles et arcs de cercles sont des successions de segment ce qui n’est pas optimal. On peut facilement les reprendre dans Librecad.

Les différents plans sont regroupés dans un Zip si vous voulez jouer avec openscad.

Si un expert openscad passe par là, il peut nous donner des astuces dans les commentaires, je suis preneur ;-)

La suite sur la fraiseuse…

Dimanche, mai 6 2012

L’impression 3D, jeux de courroies

Après avoir monté le chassis et l’axe Z, il est temps de s’attaquer à une partie assez compliquée: les entraînements X et Y par courroies.

Ayant à ma disposition plusieurs jeux de poulies MXL provenant d’imprimantes et autres scanners, j’ai commandé les courroies correspondantes à cette norme anglo saxonne ( pas de 2.032 mm ). L’inconvénient vient du diamètre des mes poulies, un petit peu grand. Je pourrais éventuellement en imprimer par la suite si la machine marche bien. Par ailleurs, j’ai volontairement commandé des courroies un peu grandes pour me permettre de tester  l’entraînement direct par les moteurs.

 

Je dispose des quelques poulies crantées mais pas assez pour les 2 axes.

Poulie crantée

Il me faut donc fabriquer des poulies lisses pour les installer à l’opposé des poulies crantées. N’ayant pas de tour sous la main, j’ai usiné 2 flasques en PVC qui sont ensuite collées.

Flasques

 

Un coup de colle PVC et l’on dispose de belles poulies !

Poulies lisses

Les axes de guidage en acier de 8mm sont tenus sur le châssis par des supports usinés dans du PVC de 5mm.

Usinage en cours

Un palier en bronze permet d’assurer la rotation de l’axe. Une rondelle vient empêcher le guide de sortir du palier.

Support d'axe

 

Les moteurs sont installés dans des supports en PVC de 5 mm. Les courroies passent directement sur la poulie du moteur procurant ainsi un entraînement direct. Le support du moteur pouvant coulisser le long du chassis, il sert ainsi à tendre la courroie avant d’immobiliser le tout à l’aide des 2 vis 6 pans creux.

Moteur X

 

Moteur pour l'axe Y

 

Les poulies lisses sont installées à l’opposé des poulies crantées.

Poulies

 

Moteur Y

 

Chaque axe disposant de 2 courroies, la première est tendue par la position du moteur. La deuxième dispose d’un tendeur improvisé à partir d’une poulie récupérée dans une imprimante.

Tendeur pour l'axe Y

 

La motorisation de l’axe Y est prête, reste à mettre en place les chariots supportant la barre de guidage Y. Les chariots sont usinés en 2 parties puis assemblés à l’aide de 3 boulons.

Demi chariot

L’axe est ainsi solidaire du chariot une fois les boulons serrés.

Un des chariots pour l'axe Y

 

La courroie est bloquée sous le chariot par une plaque usinée dans du PVC de 3mm et vissée à l’aide de 2 vis dans le PVC du chariot.

 

Un des chariots pour l'axe Y

 

Un des chariots pour l'axe Y

Les moteurs sont câblés avec des câbles RJ45 dont les conducteurs sont utilisés 2 par 2 pour permettre de disposer d’une plus grande section. Les câbles sont ensuite glissés dans les rainures du châssis.

Connecteurs

 

Connecteurs

 

L’axe X ne dispose pas encore de son tendeur. Il est plus compliqué à réaliser que pour l’autre axe étant donné la présence du moteur de l’axe Z qui va obliger à réaliser un tendeur en S pour abaisser la courroie sous le support du moteur.

 

Sketch

 

Le montage a bien avancé, les moteurs sont en place et l’axe des Y est complet. La barre de guidage de la tête d’extrusion se déplace suivant l’axe Y avec une vitesse importante et une grande fluidité. Le poids de la structure limite les vibrations mais des patins anti-vibration sous les pieds ne seraient pas de trop quand même.

 

 

Bientôt la suite avec je l’espère des tests d’impressions !

Vendredi, avril 27 2012

L’impression 3D, le châssis et l’axe Z

Le châssis de la future imprimante est constitué de profils d’aluminium de 20mm X 20mm. Les profilés ainsi que les noix de jonction ont été commandés sur le site Motedis. Bêtement j’ai commandé des barres de 1M au lieu de commander directement des tronçons de la bonne longueur. J’ai donc du les découper moi-même à la scie sauteuse pour avoir des coupes les plus droites possible. Une scie à onglet aurait été parfaite mais je n’en n’ai pas.

 

 

Les extrémités des barres sont taraudées à la main afin de pouvoir visser les noix de jonction. Après quelques minutes de montage, voilà un châssis très rigide de 330mmx400mm.

 

 

Le plateau supportant la pièce à extruder sera mobile sur l’axe Z. Son guidage sera assuré par 2 douilles à billes glissant sur des barres de 16mm de diamètre.

 

Les pièces venant se fixer sur le châssis seront usinées dans du PVC de 15mm, 5mm ou 3mm. Ici, les supports des barres de guidage proviennent d’une plaque de PVC de 15mm. Je mettrais les plans des différentes pièces dès que la machine sera terminée.

 

 

Le moteur ( un NEMA 23 ) est fixé sur le dessus de la machine à l’aide d’un support en PVC de 15mm.

Une tige fileté M6 au pas de 1mm sert d’entraînement pour l’axe Z.

 

Une pièce triangulaire en bas de la machine accueille un roulement de 6mm à l’extrémité de la tige filetée.

 

 

La plateforme Z constituée d’une plaque en MDF de 10mm sera supportée par des bras en PVC de 15mm venant se bloquer sur les douilles à billes.

Fraisage des supports

 

Les supports sont en 2 parties: un bras et une mâchoire permettant de serrer la douille à billes.

 

Supports Z

 

La plateforme est mise en place.

Plateforme Z

Malheureusement après quelques tests, il s’avère qu’il y a un jeu relativement important dans les douilles à billes (2) ! Peut-être une mauvaise qualité de ces douilles ou alors l’usage vertical n’est peut-être pas conseillé. Afin d’y remédier, j’ai placé une tige filetée à l’arrière des bras (1) pour « écraser » les douilles sur l’axe. Cette méthode m’a permis de réduire complètement le jeu au prix d’une légère augmentation du frottement des douilles sur les axes. Ce n’est pas bien grave, le moteur NEMA 23 ayant une force considérable pour cet usage ;-)

Correction du jeu

J’ai aussi tenté de remplacer les douilles par des bagues usinées dans du PEHD mais c’était pire que tout ! Il n’y avait pas trop de jeu mais les déplacements n’étaient pas fluides…

Bagues en PEHD

 

Pour compléter la plateforme, la plaque chauffante est posée sur un isolant thermique utilisé par les plombiers pour protéger les murs lors des soudures. Ça résistera sans problèmes aux 150° de la plaque chauffante !

 

 

Isolant sur la plateforme

Reste à mettre en place un jeu de vis / ressorts pour ajuster l’assiette de la plaque chauffante par rapport à l’extrudeur. Malgré les usinages précis des pièces, il y a toujours des petits défauts d’ajustement à corriger…

 

Par ailleurs, j’ai reçu l’extrudeur J Head MKIV-B Hot-End pour la suite des opération ;-) Il est de très bonne facture !

J HEAD MKIV

Mardi, mars 6 2012

Réparation d’un pilote automatique Raymarine ST2000+

Le pilote automatique est vraiment l’ami du marin à condition de pouvoir compter sur lui dans toutes les situations.

Nous avons un pilote automatique Raymarine ST2000+ qui nous a rendu de grands services depuis 3 ans. Seulement voilà, depuis quelques temps nous constatons un jeu anormal dans le bras du pilote avec de temps en temps un cap plus qu’aléatoire…

Après un démontage rapide de la bête, nous trouvons quelques morceaux de plastique qui traînent dans le corps du pilote.

  • Un joint torique ( celui qui assure l’étanchéité du bras ) est cassé. Les morceaux sont tombés dans le logement du compas et en perturbent le fonctionnement. Il faut les retirer à coup de pince brucelle.
  • Des petits bouts de plastique noir se promènent sous l’extrémité de la vis à bille. Rien de bien encourageant…

Voilà qui explique probablement le jeu dans le bras du pilote.

Il faut démonter entièrement le pilote pour réparer les différentes pièces. D’abord la vis à bille, il y a des morceaux de plastique qui en tombent et elle a un jeu excessif. Je décide alors de prendre le risque de la démonter intégralement sans savoir si j’arriverais ensuite à remettre tous les éléments !

Je me retrouve assez vite avec la vis d’un côté et une trentaine de billes d’1mm de diamètre qui ne demandent qu’à sauter partout sur mon espace de travail.

Il faut replacer les billes sur le pas du palier en bronze en les « collant » avec de la graisse. Mais avant celà je vais usiner une bague en DELRIN pour remplacer celle qui était cassée. A priori elle servait à limiter le jeu dans la vis.

Cette baque ressemble en plus large à celle en blanc sur cet éclaté de vis à bille.

 

Après un tour dans LibreCad / HeeksCad me voilà en possession d’une belle bague toute simple qui rentre parfaitement dans son logement. Vive la fraiseuse numérique !

 

 

La bague est collée à la sortie du palier avec de la résine époxy.

 

 

Voilà le palier est prêt à accueillir les billes. Reste un long travail de patience ! L’intérieur du pas de vis est badigeonné de graisse silicone et les billes sont placées une à une dans leur logement. Quel travail, il me faudra pas loin de 45 min pour tout remettre en place.

 

  1.  Les munitions
  2. L’arme fatale
  3. La cible

Ça y est, la vis est remontée, elle fonctionne parfaitement.Ouf !

 

Deuxième problème, le jeu d’1cm dans la barre. En démontant la tige filetée, je vois que le support du roulement à l’extrémité de la vis est cassé. En effet, lors des virements de bord, la vis vient « taper » sur le support du roulement ce qui fini par le fracturer. Le roulement n’est plus tenu et il se promène le long de la tige. Seule la poulie à l’extrémité de la vis vient buter sur le support en aluminium et empêche la vis de sortir complètement de son logement… Je ne suis pas le seul a avoir constaté ce problème ce qui me fait penser à un défaut de conception. Dommage qu’un pilote qui n’est quand même pas donné souffre d’un problème de fragilité d’une pièce en plastique qui doit coûter quelques euros à produire !

Je vais supprimer la partie cassée pour la remplacer par une pièce en DELRIN qui sera fixée à l’aide de 2 vis sur la plaque de support en aluminium.

On voit la partie arrachée sur le support du roulement :(

 

Voilà une photo du résultat. Je n’ai pas fait de photos du remontage, j’étais pressé de tester !

  1. La plaque en delrin fraisée pour accueillir d’un côté les glissières de la vis à bille et de l’autre le roulement de 19mm.
  2. Encore un défaut, les support de vis cassent tous seuls sans même une intervention quelconque…

 

Après quelques tests tout fonctionne parfaitement. J’espère que les réparations faites seront durables et que les constructeurs prendront conscience de l’obsolescence programmée de leurs produits.

 

Ne jetez plus, réparez si vous le pouvez !!!

Mercredi, février 29 2012

Tamponne moi un barbu

Un petit tutoriel vidéo mettant en scène pas mal de logiciels libres pour créer des tampons à l’aide d’une fraiseuse numérique.

 

Avant le tutoriel en vidéo, voici la liste des outils utilisés:

  • Inkscape: Logiciel de dessin vectoriel utilisé ici pour vectoriser un fichier PNG.
  • LibreCad: Logiciel de CAD qui sert juste pour éditer le fichier DXF sortant d’inkscape.
  • F-engrave: L’outil indispensable pour la gravure numérique.
  • EMC: Le logiciel de pilotage de la fraiseuse.

Ne pas oublier le logo de @lagrottedubarbu

 
Le tutoriel en vidéo:

Samedi, janvier 21 2012

Petit tutoriel vidéo pour utiliser LibreCAD, HeeksCAD et HeeksCNC

Un tout petit tutoriel pour apprendre à créer des fichiers GCODE en 5 minutes avec LibreCAD, HeeksCAD et HeeksCNC.

A voir en 720p / FullScreen sur Youtube.

Dimanche, mai 29 2011

CNC, tests de précision

Maintenant que je dispose du petit palpeur pour l’axe des Z, je me lance dans une série de tests de précision de la machine. Notamment un test concernant l’axe des Z. L’axe est monté et descendu 150 fois pour mesurer l’éventuelle dérive de position.

Voilà le morceau de G-CODE utilisé.

G21   (mm)
F80    (probe speed)
(PROBEOPEN probe_point.txt)
#1=0 (counter)
#2=150 (number of points)

O1 while [#1 lt #2]
G0Z2
G38.2Z-10
#1=[#1+1]
O1 endwhile
G0Z2
(PROBECLOSE)
M2

Ainsi que le bout de programme gnuplot pour mettre tout ça en image.

set terminal png size 800,800
set output "point.png"
set title "Vérification des mesures sur un point"
#set xrange [0:5]
#set yrange [-2:2]
plot 'probe_point.txt' using 3  with lines

Et voilà le résultat:

Regardez bien l’échelle, on est au centième de millimètre… pas trop mal pour du DIY ;-)

Jeudi, mai 26 2011

Quand la fraiseuse se met à jour – Episode 2

Vous vous souvenez, il y a quelques temps ma fraiseuse s’est « mise à jour » en s’auto fabricant un support de DREMEL en PEHD. Et bien voilà qu’elle remet ça. Je me suis décidé à remplacer ma table de fraisage en bois par une en PVC avec un système de réglage de l’assiette afin de pouvoir corriger d’éventuels défauts d’alignement ( oui, oui, il y en a un peu… ). Mais avant de remplacer cette table, il faut régler un problème avec les supports des barres de guidage. Les supports sont surélevés avec des rondelles pour permettre le passage des chariots sur douilles à billes. Seulement voilà, avec le poids de la machine, les rondelles commencent à s’enfoncer dans le bois qui n’est pas assez dur (MDF).

J’ai donc entrepris de fraiser des semelles en PEHD pour les supports. Après de longues minutes d’attente voilà mes 4 pieds prêts à poser.

 

Les semelles sont parfaitement ajustées et répartissent le poids de la machine sur le socle en bois.

 

Les bases sont posées, on peut remplacer la table de fraisage. C’est une plaque de PVC très rigide de 15mm d’épaisseur. Elle est montée sur 4 tiges filetées de 6mm afin de pouvoir ajuster précisément sa hauteur. Le pas d’une vis M6 étant de 1mm, ça signifie qu’en serrant l’écrou de réglage d’1 tour je pourrais monter ou descendre la table d’1mm. L’ajustement est donc particulièrement précis.

 

 

Ma table étant ajustable, il faut trouver un moyen précis pour calculer la hauteur requise au 4 coins en corrigeant d’éventuels problèmes d’ajustement de la machine. Pour cela j’ai mis au point un palpeur à monter sur la dremel. Ce n’est rien d’autre qu’un micro interrupteur qui servira à mesurer la hauteur de la table en différents points.

Un petit tour dans les boites à récup et me voilà avec une fiche CINCH, un interrupteur, un cable de souris, un bout de tube et un écrou / boulon de 3mm.

Un petit coup de fer à souder… un petit coup de perceuse pour passer le câble…

Et on assemble le tout à grand coup de colle cyanolite

La fiche CINCH est soudée sur le cable.

Le palpeur est terminé. Je l’installe sur le mandrin de la Dremel et je branche le câble sur l’entrée de la carte de commande servant habituellement au « Homing » de l’axe Z.

 

Le côté mécanique étant terminé, il faut s’attaquer à la partie logicielle. Nous allons utiliser un peu de langage G-CODE pour effectuer une grille de hauteur de la table de fraisage.

(Configuration section)
G21   (mm)
F80    (probe speed)

#1=0  (X start)
#2=50 (X increment)
#3=5 (X count)

#4=0
#5=50
#6=5 (Y count)

#7=2 (Z safety)
#8=-10 (Z probe)
(End configuration section)

(PROBEOPEN probe_table_map.txt)
#9=0 #10=0
G0Z#7
O1 while [#9 lt #6]
#10=0
G0 Y[#4+#5*#9]
O2 while [#10 lt #3]
O3 if [[#9/2] - fix[#9/2] eq 0]
G0X[#1+#2*#10]
O3 else
G0X[#1+#2*[#3-#10-1]]
O3 endif
G38.2Z#8
G0Z#7
#10=[#10+1]
O2 endwhile
#9=[#9+1]
O1 endwhile

(PROBECLOSE)
G0Z#7
G0X#1Y#4
M2

Ce code va lancer des mesures sur un carré de 200 x 200 mm en effectuant une mesure tous les 50mm. Les valeurs sont stockées dans un fichier texte probe_table_map.txt. (Je n’ai rien inventé, j’ai honteusement pompé un exemple proposé avec EMC)

Après quelques minutes, nous disposons d’un fichier texte avec les valeurs mesurées.

0.000000 0.000000 -1.434338 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 0.000000 -1.495669 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 0.000000 -1.619665 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 0.000000 -1.763661 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 0.000000 -1.894324 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 50.000000 -2.024987 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 50.000000 -1.916990 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 50.000000 -1.795660 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 50.000000 -1.696996 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 50.000000 -1.632998 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 100.000000 -1.766328 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 100.000000 -1.834326 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 100.000000 -1.944989 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 100.000000 -2.528971 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 100.000000 -2.115651 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 150.000000 -2.167649 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 150.000000 -2.086318 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 150.000000 -2.014320 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 150.000000 -1.939656 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 150.000000 -1.842325 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
0.000000 200.000000 -1.882324 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
50.000000 200.000000 -1.975655 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
100.000000 200.000000 -2.020987 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
150.000000 200.000000 -2.104984 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000
200.000000 200.000000 -2.187648 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000

Ce n’est pas très parlant, mais gnuplot peut nous aider. Nous allons créer un petit programme gnuplot utilisant les fonctions pm3d pour mettre en image l’assiette de la table.

set terminal png size 800,800
set output "heatmmap.png"
set xrange [0:200]
set yrange [0:200]
set cbrange [1:-2]
set view map
set dgrid3d 100,100,2
set palette model RGB
set palette defined
#unset surface
set pm3d at s
splot 'probe_table_map.txt' using 1:2:3  with pm3d at s  notitle

Le résultat avec une table non équilibrée.
On voit immédiatement le déséquilibre, le coin devant/gauche est plus haut de 1mm que le coin derrière/droite !

En ajustant légèrement la vis de réglage devant à gauche, on peut corriger l’assiette.

Le résultat est encore imparfait ( j’ai réglé la table au pif ) mais la méthode fonctionne. C’est long et empirique mais l’essentiel c’est d’obtenir un résultat à la hauteur de ses espérances…

- page 1 de 2