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…

Vendredi, mars 11 2011

Quand la fraiseuse se met à jour

Lorsque j’ai fabriqué ma fraiseuse numérique, il y a certaines pièces, comme le support de DREMEL, qui ont été fabriquées rapidement pour pouvoir être remplacées plus tard.

La machine étant pleinement fonctionnelle, il est temps de l’améliorer en lui fabriquant de nouveaux supports de DREMEL en PEHD. Les 2 pièces à fabriquer présentent des profils simples, on va utiliser QCAD pour les dessiner.

 

A part l’espace intérieur qui a été calculé par rapport au diamètre d’une Dremel série 300, le reste est un peu dessiné au pifomètre. Vous pouvez télécharger le profil DXF ici dremel_mount.dxf

 

Pour mieux se rendre compte de ce que sera l’objet final, j’ai utilisé l’excellent OPENSCAD pour modéliser en 3D les 2 pièces. Ce logiciel permet de charger des profils 2D en DXF pour les « extruder » et les modifier à volonté. Sa particularité, c’est d’utiliser un langage de définition des objets et non une interface graphique pour dessiner. Rebutant au premier abord, c’est finalement génial, on peut modéliser à la volée des changements de taille, de diamètre de perçage par exemple… sans aucun risque d’erreur de placement.

Voici par exemple le fichier de définition de mes supports.

 

module dremel_mount_top ()
{
	difference()
	{
		dxf_linear_extrude(file="DREMEL_MOUNT.dxf",layer="MOUNT_TOP",height=15,center=true,$fn=100);

		rotate([90,0,0])
			{
				// drill left hole
				translate([40,0,0])
				{
					cylinder(r=2.5,h=100,center=true);
				}
				// drill right hole
				translate([-40,0,0])
				{
					cylinder(r=2.5,h=100,center=true);
				}

			}
			// drill hole
		rotate([0,90,0])
			{
				translate([0,38,0])
				{
					cylinder(r=2.5,h=100,center=true);
				}
			}
	}
}

module dremel_mount_bottom ()
{
	difference()
		{
		dxf_linear_extrude(file="DREMEL_MOUNT.dxf",layer="MOUNT_BOTTOM",height=15,center=true,$fn=100);

		rotate([90,0,0])
			{
				// drill left hole
				translate([24,0,0])
				{
					cylinder(r=2.5,h=100,center=true);
				}
				// drill right hole
				translate([-24,0,0])
				{
					cylinder(r=2.5,h=100,center=true);
				}

			}
		// drill hole
		rotate([0,90,0])
			{
				translate([0,22,0])
				{
					cylinder(r=2.5,h=100,center=true);
				}
			}
	}

}

dremel_mount_bottom();
translate([0,0,100])
{
	dremel_mount_top();
}

Et voilà le rendu final dans OpenSCAD

Plutôt réaliste non ?

De plus, le logiciel permettant d’exporter au format STL, vous pouvez imprimer les pièces en 3D si vous disposez d’une Reprap ou d’une MakerBot.

 

Pour usiner mes pièces, il faut transformer le profil en fichier de découpe interprétable par le logiciel EMC, c’est le langage G-CODE. J’ai utilisé l’excellent HeeksCNC pour celà.

 

 

Il est maintenant temps d’envoyer le fichier G-CODE sur la fraiseuse.

Une chute de PEHD de 15 mm est solidement fixée sur la table de fraisage. C’est parti pour une quinzaine de minutes d’usinage.

Le résultat final est à la hauteur de mes espérances

 

Il ne reste plus qu’à usiner la deuxième pièce et à monter le tout sur la machine, à la place de l’ancien système, peu pratique et peu esthétique.

 

Le projet ODCNC continue d’avancer, j’enrichis petit à petit la documentation au fur et à mesure de l’utilisation de la fraiseuse.

Samedi, février 5 2011

Fraiseuse CNC DIY v3 – Episode 2

Voilà la suite tant attendue ( par moi surtout ;-) ) de la construction de ma fraiseuse numérique.

En cours de conceptionLa voilà presque terminée. il me reste 1 moteur à câbler et la vis sans fin de l’axe des X à installer, tout le reste est en place. On est bien loin de l’épisode 1 avec ses quelques pièces éparses !

DIY CNC Parts


N’ayant pas eu le temps de faire un article à chaque étape de l’avancement de la construction, j’ai mis en place un Wiki dans lequel je vais essayer de documenter l’ensemble du projet afin d’aider ceux qui comme moi veulent se lancer dans la fabrication d’un tel outil. Le wiki est « ouvert », si vous aussi vous construisez une machine et que voulez m’aider à documenter, je peux vous donner un accès en écriture. Pour le moment il n’y a pas grand chose, mais je compte l’enrichir régulièrement et je compte aussi sur votre aide !

L’adresse du projet: http://odcnc.equinoxefr.org


Dimanche, novembre 22 2009

Fraiseuse CNC DIY v3 – Episode 1

Vous vous souvenez de ma « fraiseuse CNC v1« , c’était une première version, pas vraiment fonctionnelle mais qui m’a permis de me familiariser avec la fabrication d’une telle machine.

CNC Mill

CNC Mill

Ensuite, j’ai fabriqué la version actuelle, estampillée V2, tout à fait opérationnelle celle là.

Cnc mill

Cnc mill

Cependant, avec l’expérience, elle souffre de quelques limitations:

  • La première, la plus gênante est la surface de la table de fraisage, beaucoup trop restreinte ( 12 x 12 cm) alors que l’encombrement de la machine est assez conséquent. C’est essentiellement du à la conception de type fraiseuse avec une table X / Y mobile et un axe Z fixe.
  • Le deuxième soucis vient de la précision, elle est très bonne, mais encore insuffisante. J’arrive sans problème à faire des circuit imprimés mais ils ne sont pas parfaits. On doit pouvoir faire mieux.

Partant de ce constat, j’ai décidé de me lancer dans une 3° version qui j’espère sera plus performante. Avec toutefois 2 contraintes:

  • Le prix devra rester raisonnable
  • La fraiseuse devra pourvoir rentrer dans le caisson anti-bruit que j’ai fabriqué pour la V2. Ça limite la surface totale de la table de fraisage à une taille de 40x40cm ce qui, si je ne fais pas d’erreur de conception, devrait donner une surface utile d’environ 30x30cm ce qui est bien plus grand que la précédente.

Pour arriver à un bon résultat, j’ai cherché du matériel me permettant d’obtenir des mouvements linéaires très précis sans pour autant êtres ruineux. Pour cela, j’ai trouvé sur Ebay des arbres de précision avec des paliers en aluminium équipés de douilles à billes. Pour la structure de la machine et les différentes pièces mécaniques, je me suis orienté vers du polyéthylène haute densité ou PEHD, moins cher que le DELRIN. C’est un plastique très dur, facile à fraiser / couper qui sert notamment dans le domaine alimentaire pour faire des planches à découper la viande. Je vais utiliser la fraiseuse V2 pour fabriquer les petites pièces plastiques de la V3. Concernant les entrainements, je pense rester sur des tiges filetées de 6mm, même si le rendement n’est que de 30%, elles sont d’un coût < à 1€ / m alors que les vis à billes sont de l’ordre de 100 € / m…

Les premières pièces:

DIY CNC Parts

DIY CNC Parts

Voilà deux exemples glanés sur le net de ce que pourrait être la machine finale:

aliversionwk9

drawingfi4

Il ne me reste plus qu’à valider quelques « concepts » côté mécanique avant de me lancer dans la construction. La suite au prochain numéro.

Mercredi, mai 27 2009

Fraisage d’un engrenage sur ma CNC.

Après quelques tests, j’ai quelque peu amélioré ma fraiseuse. L’axe des Z, peu précis a été remplacé. La précision est maintenant au rendez-vous. J’ai usiné plusieurs circuits imprimés sans problème. Le seul soucis rencontré est venu du réglage du zéro sur l’axe des Z ce qui conditionne la précision pour ôter le cuivre d’un circuit imprimé sans pour autant emporter l’époxy de la plaque. Le réglage manuel étant impossible pour obtenir une bonne précision, j’ai utilisé un réglage automatique par contact. J’ai utilisé une broche libre de la carte d’interface pour réaliser un contact de calibrage. Une petite plaque conductrice est posée sur la matière à usiner, une pince est fixée sur la fraise, machine éteinte. Ensuite EMC2 pilote la machine jusqu’à ce que le contact avec la pièce soit établi. Le zero est alors calculé en déduisant l’épaisseur de ma plaque conductrice.

Voilà la démo en video:

Pour ce qui est du fraisage de pièces, je n’ai pas trouvé sous linux de programme satisfaisant permettant de créer des « pocket », je ne sais faire que des fraisages simples. J’ai donc utilisé un freeware « Cambam » pour windows au travers de Virtualbox. Les dessins sont fait avec QCAD sous linux puis convertis en GCODE par Cambam. L’ensemble est ensuite usiné avec EMC2 sous Linux.

La forme à fraiser.

Cambam1

Le chemin de l’outil en vert.

Cambam2

Et voilà la séquence d’usinage. Vous remarquerez facilement qu’il y a une erreur dans mon test, j’aurais du commencer par le centre de la pièce et non par les bords… mais bon, pour un test, le résultat est très concluant, la machine a réalisé 6 passes de 1 mm pour découper la plaque de plastique.

Lundi, octobre 6 2008

Fraiseuse CNC sous Linux, « Do It Yourself »

Après quelques tests sur ma précédente fraiseuse, je me suis rendu compte que le manque de précision était fatal à ce genre de machine. Bien décidé à ne pas laisser tomber, j’ai décidé d’en reconstruire une nouvelle beaucoup plus précise.

Le cahier des charges est assez simple:

  • La machine doit rester bon marché
  • Il s’agit d’une petite fraiseuse de bureau et non d’un routeur de 2x3m
  • Elle devra fonctionner sous EMC2 (Linux Ubuntu 8.04)
  • Elle devra être suffisement précise pour réaliser des gravures de circuits imprimés.
  • La conception se fera au feeling, je suis incapable de concevoir une telle machine sur plans.

J’ai choisi des matériaux faciles à trouver, il s’agit de tube carré en aluminium vendu en barres de 1 mètre chez LeroyMerlin, de tige filetée de 6mm, de boulons de 6mm et de roulements à billes de roller et d’autres récupérés dans des imprimantes ainsi que du tube de 25mm en acier pour la potence de l’axe Z.

La motorisation est assurée par 3 moteurs pas à pas unipolaires 4.1V 1.1A acheté chez Technimaniacs, les prix sont très corrects et le service parfait :-) à recommander. Je n’ai pas réutilisé les anciens moteurs, ils nécessitaient d’être démultipliés ce qui me faisait perdre en précision, de plus, leur puissance était vraiment limite.

Pour ce qui est de l’électronique, il s’agit de la même carte que ma première fraiseuse, un kit de chez HobbyCnc. Elle a le mérite de bien fonctionner et d’être très bon marché par rapport à la concurrence. Le pilotage ce fait cette fois sous linux avec EMC2. Un excellent logiciel opensource de pilotage de fraiseuse.

La chaine logiciel (opensource)utilisée est la suivante:

  • Qcad pour le dessin des pièces. Les fichiers sont enregistrés en DXF

  • Gcnccam pour générer le GCODE

  • Ensuite c’est axis qui est utilisé comme interface à EMC2.

EMC2 est installé sur une ubuntu 8.04 avec un noyau temps réel RTLinux. C’est absolument nécessaire sur ce type de machine afin de garantir la précision du fraisage.

Pour la gravure de circuits imprimés, il y a Eagle et un script de génération du Gcode. Je ne suis pas certain que ce soit facilement faisable avec Kicad :-(

Voici quelques photos de la machine construite. Le seul gros problème rencontré: un axe des Z trop souple donc une machine très imprécise. Je l’ai donc entièrement refait en acier soudé au chalumeau. Il est maintenant très rigide. Pour le reste, c’est assez simple, un châssis rectangulaire en aluminium dans lequel vient coulisser le mobile de l’axe des Y. C’est sur ce mobile Y que vient glisser le plateau de fraisage. L’axe des Z qui porte la dremel est guidé par des rails en alu. Des roulements de roller maintiennent le chariot Z en place.

Cnc mill Z axis Z axis IMG_5911 Z axis Z axis IMG_5913 Ball bearing from rollers IMG_5916 Aluminium rails Y stepper mount Unipolar steppers IMG_5917 ball bearing from old printers Limit switch from old printers Electronics Electronics Plugs Power supply 12v 80Va First test

Voilà une petite vidéo de test avec le fichier de démo d’Axis. Le fraisage ne se termine pas la course de ma machine étant trop limitée. Pour un premier test, la précision est au rendez-vous.

Dimanche, mars 30 2008

Elle marche !!!

Me revoilà avec mes histoires de fraiseuse CNC.

Et voilà, après quelques tests de calibrage, me voilà en train de lancer un premier test: un cercle en 2D. Le troisième axe étant réglé à la main ( il n’est pas encore correctement calibré ). C’est plutôt positif. La précision est au rendez-vous.

- page 2 de 3 -