mercredi 18 décembre 2013

L'extrudeur : la mollette d'entrainement

Petit focus sur un montage permettant le rainurage de la molette entrainement.

    

J'ai fait le choix d’entraîner le fil de PLA directement avec le moteur sans utiliser d'engrenage. Il me faut néanmoins une molette de diamètre 8 mm striée de rainures destinées à agripper fermement le fil de plastique.



Pour usiner les rainures qui happeront le fil, j'ai fabriqué un petit montage très simple avec deux cubes de bois percés au diamètre 22 mm et de profondeur 5 mm. Au fond de ces logements, j'ai mis une petite vis à tête ronde pour servir de butée. Enfin, j'y ai disposé un roulement 608ZZ. 



Le tout maintient une petite longueur de barre ronde en acier de diamètre 8 mm (récupérée dans un vieux photocopieur).



Ce montage est serré dans l'étau de ma perceuse à colonne.



L'utilisation d'un étau croisé aide à régler finement la profondeur des rainures. 



ATTENTION !

Si vous utilisez vos mains pour faire tourner le rond d'acier, ne portez pas de gants car ils pourraient être happés par le taraud et vous pourriez vous casser un doigt.


J'ai rainuré plusieurs fois pour trouver le bon taraud (M5) et la bonne profondeur.



J'ai coupé une longueur de 12 mm dans ma barre d'acier.



J'ai dressé les abouts de la molette contre une lime fermement bloquée dans l'étau de ma perceuse à colonne.
les striures d'usinage me donnent automatiquement un centre pour le perçage.



Un petit coup de pointeau sur chaque extrémité pour guider le perçage.



Ensuite, j'ai percé chaque coté à la moitié de la profondeur. Évidement, le perçage à la perceuse à colonne n'est pas parfaitement précis, mais cela crée un décalage qui permet d'avoir une molette qui rentre à force sur l'arbre du moteur. Donc, je n'ai pas besoin de vis de blocage.



Notes :

Sur les photos, les rainures ont été réalisées avec un taraud M7, mais à l'usage, j'ai remarqué que le crantage n'était pas assez régulier. C'est pourquoi, je vous recommande d'utiliser un filetage M5 qui est plus fin.


Au prochain billet, je vous présenterai la tête chauffante.

dimanche 8 décembre 2013

Un extrudeur ultra léger


Je vais entamer une série de billets sur mes tentatives pour concevoir une tête d'extrusion ultra légère pour ma delta.


 L'objectif est de construire un extrudeur le plus léger possible pour pouvoir entraîner un fil de PLA de 3 mm  en prise directe avec le moteur. L’intérêt est d'éviter l'utilisation d'un "Bowden" et de simplifier la construction de l'extrudeur.

La démarche est particulièrement hasardeuse, donc je ne vais pas présenter mes expérimentations sous forme de tutoriel. Je vais me contenter de vous présenter mes progrès et mes échecs éventuels au fur et à mesure de la construction.      

L'extrudeur s'articule autour de cette pièce en aluminium de 80 mm de long. Elle va servir de support moteur, de guide fil, de support de tête-chaude, de support de ressort et peut-être de dissipateur thermique. je vais l'appeler provisoirement "support principal"  



J'ai utilisé un profilé aluminium en L de 25 mm par 10 mm. 



Voici (en éclaté) les pièces de la partie "entrainement" de l'extrudeur.



J'utilise deux micro-roulements à bride d'un diamètre intérieur de 8 mm et de diamètre extérieur de 12 mm. Je les ai récupérés sur un vieux photocopieur donc je ne peux pas vous indiquer un fournisseur. 



Les deux roulements sont montés sur un axe de 8 mm serti sur le support principal. Une gorge permet de loger une bague d’arrêt. 



L'astuce est que les deux roulements ne sont pas serrés l'un contre l'autre. Un espace vide (d'un millimètre environ) crée une petite gorge qui guide le fil de PLA. 



Le moteur n'est contraint dans ses mouvements que par un boulon qui sert de pivot pour articuler le pincement du fil de PLA. Un autre boulon permet de fixer sur le moteur le ressort et le guide-fil. 
Un écrou supplémentaire sur la tige filetée permet le réglage du ressort.



Voici l'extrudeur posé provisoirement sur la nacelle. Je n'ai pas encore défini le mode de fixation. 
Je précise que c'est uniquement le support principal qui sera solidarisé avec l'effecteur et non le moteur. 
L’entraîneur pèse 220 g avec le moteur. Les rotules magnétiques n'ont aucun mal à supporter ce poids.



Maintenant, je dois plancher sur la partie chauffante de l'extrudeur.

dimanche 1 décembre 2013

Premier test de mouvement du robot delta

Nous allons maintenant, faire bouger le robot delta pour la première fois.

Préparation : 


Pour tester le robot delta, vous allez devoir mettre de côté l'aspect "imprimante" de la machine. 
En effet,  par mesure de sécurité Repetier bloque les mouvements du robot tant que les paramètres thermiques ne sont pas valides .  
Vous allez donc tromper Repetier en désactivant provisoirement (dans le firmware) le senseur thermique de l’imprimante. 


Dans l'onglet "Configuration.h" section "Thermal Settings" ligne 142, changez le -1 en 0 
142   #define TEMP_SENSOR_0 -1
143   #define TEMP_SENSOR_1 -1
144   #define TEMP_SENSOR_2 0
145   #define TEMP_SENSOR_BED 0

comme ceci :
142   #define TEMP_SENSOR_0 0
143   #define TEMP_SENSOR_1 -1
144   #define TEMP_SENSOR_2 0
145   #define TEMP_SENSOR_BED 0


Attention !

Vous pouvez enregistrer vos modifications, mais n'oubliez pas de choisir le numéro correspondant à votre matériel et de l’inscrire ligne 142 pour rétablir le senseur lorsque vous vous apprêterez à tester votre tête chaude !   


Téléversement :


Connectez la carte Minitronics à votre ordinateur à l'aide du cordon USB.
Vérifier tous vos branchements et je vous rappelle que vous ne devez jamais et sous aucun prétexte, débrancher ou brancher un moteur sous tension ! 

Dans Arduino, cliquez sur le bouton "Vérifier" pour compiler le croquis :



S'il n'y a pas d’erreur, Arduino affichera la taille du croquis comme suit :



Maintenant, vous allez téléverser le firmware dans la carte Minitronics.
Cliquez sur le bouton "Téléverser" (le rond avec une flèche). La carte doit clignoter pendant l’opération.



Normalement, Arduino confirme la fin du téléversement comme ceci :    



note : Une cause courante d'échec est que Repetier-Host utilise le port com en même temps qu'Arduino. Il suffit alors de déconnecter virtuellement l’imprimante dans le logiciel Repetier-Host.


Test des butées avec le GCode M119 :


Avant de faire bouger la machine, il faut être absolument sûr que les trois butées sont fonctionnelles.   

Pour cela, ouvrez Repetier-Host et normalement, c'est votre imprimante qui doit s'ouvrir par défaut. 
Ouvrez l'onglet "contrôle Manuel". 



Allumez l’alimentation de votre machine et profitez en pour vérifiez le bon fonctionnement du ventilateur de la carte.

Connectez l'imprimante avec le bouton "Connecter" (le gros bouton rouge en haut à gauche),  la carte doit clignoter et vous obtenez ceci :



Dans l'onglet "Contrôle Manuel",  vous avez un mini éditeur appelé "G-Code", tapez-y  la commande : 
M119 
(le m en majuscule)

Puis cliquez sur "Envoyer"

Normalement, vous devez voir apparaître l'état des butées dans la fenêtre des "Logs" comme ceci :

  
Vous devez impérativement obtenir ceci :

x_max: open
y_max: open
z_max: open
  

Si rien n’apparaît, c'est que les butées ne sont pas détectées et sont inopérantes.
Dans ce cas, vérifiez le câblage (après avoir éteint l'alimentation) et vérifiez les paramètres dans "Mechanical Settings" de "Configuration.h" et  aussi dans "pins.h" 


Maintenant, vous allez appuyez avec votre doigt sur le microrupteur de la colonne X tout en relançant une commande M119. 
  

Vous devez voir apparaître ceci :

x_max: TRIGGERED
y_max: open
z_max: open 
Cela vous permet de vérifier que le microrupteur placé sur la colonne X est bien attribué à "x_max" et qu'il réagit correctement quand il est touché.

Réalisez le même test pour la colonne Y et Z. Si les trois butées fonctionnent correctement, vous pouvez passer à l'étape suivante.


Étalonnage : 


Commencez par repérer le bouton d’arrêt d'urgence situé en haut à droite. Et préparez-vous à devoir vous en servir ;-)



Positionnez à la main, les chariots dans une position intermédiaire (coupez l'alimentation si nécessaire) pour avoir le temps de stopper la machine si les mouvements ne sont pas conformes.

Dans l'onglet "Contrôle Manuel", cliquez sur la petite maison :



Les chariots doivent se déplacer en direction des butées (vers le haut).
Si ce n'est pas le cas, stoppez immédiatement la machine grâce au gros bouton d’arrêt d'urgence et vérifiez le firmware et/ou le sens de branchement des moteurs (hors tension).

Si c'est OK, restez attentif car au moment de toucher les butées, les chariots doivent avoir un mouvement de retrait et revenir doucement se repositionner contre les butées. Si ce n'est pas le cas, il est probable que le fil soit déjà cassé, mais je vous souhaite d'avoir appuyé sur le bouton d’arrêt d’urgence à temps.

Si le test s'est bien déroulé, la machine est étalonnée et les valeurs de positionnement des axes ont pris une teinte noire et ressemblent à ceci :


Contrôle manuel : 


Les grosses flèches colorées contrôlent le déplacement de l’effecteur dans l’espace de travail (et non le déplacement des chariots). Plus vous cliquez vers la pointe de la flèche, plus le déplacement sera important, alors commencez doucement.
Vous pouvez aussi contrôler si le déplacement réel de l'effecteur correspond à celui demandé.
Commander les chariots avec la flèche -Z et +Z et vérifiez qu'ils se déplacent de la hauteur demandée.


Problème de secousses :


Vous avez peut-être remarqué des saccades lors du déplacement de l'effecteur. C'est dû à la fonction "SlowDown" qui n'est pas supportée par les Deltas.
Dans le firmware, onglet "Configuration_adv.h" section "Mechanical Settigs" ligne 227, désactivez "SLOWDOWN"

226   // If defined the movements slow down when the look ahead buffer is only half full
227   #define SLOWDOWN

Passez la ligne 227 en commentaire :
226   // If defined the movements slow down when the look ahead buffer is only half full
227  // #define SLOWDOWN


Tant que vous êtes sur Arduino et si les tests se sont bien passés, profitez pour rétablir une vitesse d’étalonnage normale de "50*60" (Rappelez-vous, par précaution et pour vous laissez le temps d’appuyer sur le bouton d’arrêt d'urgence, vous aviez baissé la vitesse de homing).

Comme ceci :


349    //// MOVEMENT SETTINGS
350   #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
351   #define HOMING_FEEDRATE {50*60, 50*60, 50*60, 0}  // set the homing speeds (mm/min)


Téléversez de nouveau le firmware et normalement, l'effecteur doit se déplacer fluidement.   


J'espère que tout c'est bien déroulé et n'hésitez pas à donner vos commentaires pour que je puisse améliorer ce tutoriel. Pour finir, voici la vidéo de mon premier test du robot delta :



Je vais désormais pouvoir travailler sur la question de l'extrudeur.

dimanche 24 novembre 2013

Configuration de RepetierHost

Nous allons préparer Repetier Host pour permettre les premiers tests de mouvement du robot delta.
Pour commencer, ouvrez Repetier et allez dans l'onglet "configuration" et dans "paramètres imprimante"



 Choisir le type d'imprimante :


Vous allez dire à Repetier le type d'imprimante que vous voulez  utiliser.
Dans le menu déroulant "Pinter Type", choisissez "Imprimante Rostock (zone d'impression circulaire)"



Le volume de travail :


Vous allez pouvoir définir ici les points de references du volume de travail spécifique à une imprimante Delta.
Choisissez : Origine X : 0, Origine Y : 0 et Origine Z : Max

Puis, vous allez définir les dimensions du volume de travail.
Dans "Rayon imprimable", inscrivez : 90 et dans hauteur imprimable : 210.
Bien sur, vous devez si nécessaire, adapter ces valeurs au format de votre imprimante.



Nommez l'imprimante :


Vous allez nommer votre imprimante pour pouvoir sauvegarder vos paramètres.
Dans le haut de la fenêtre, dans le menu déroulant "Imprimante", vous inscrivez un joli nom pour votre machine, puis vous cliquez sur le bouton "Appliquer" et sur "OK". Au prochain démarrage, c'est votre imprimante qui sera ouverte automatiquement.     



Maintenant, l'interface de Repetier doit ressembler à ceci :



Les paramètres de communication :


Nous allons paramétrer la communication entre l'imprimante et l'ordinateur. 
Retournez dans "paramètres imprimante" et ouvrez l'onglet "Connexion



Dans le menu déroulant "Port", choisissez le port de communication que vous avez précédemment défini avec Arduino.  
Ensuite, dans l'onglet "Vitesse", choisissez  250000 bauds et cliquez sur "OK

Dans le prochain billet, nous tenterons de faire bouger l'imprimante pour la première fois. 

   






lundi 18 novembre 2013

Réglage du firmware, partie 6 : les réglages de mouvements

Les réglages de mouvements :

Nous allons régler les vitesses de notre machine, mais il s'agit d'une première approche en vue de la préparation des tests. En effet pour certains paramètres, il faudra procéder par tâtonnements et ajustements. Mais pour éviter la casse lors des essais, nous allons brider volontairement la machine.  
  
Dans l'onglet "Configuration.h", rendez-vous à la section "MOVEMENT SETTING" ligne 349/357
349    //// MOVEMENT SETTINGS
350   #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
351   #define HOMING_FEEDRATE {50*60, 50*60, 4*60, 0}  // set the homing speeds (mm/min)

La ligne 350 définit le nombre de moteurs et l'ordre dans lequel les réglages seront rangés dans la mémoire, c'est a dire : d'abord X puis Y puis Z et enfin E (pour l'extrudeur).

ATTENTION !
Pour une delta, les trois colonnes (X Y Z) doivent avoir les mêmes réglages, donc veillez à ce que les trois premières valeurs soient identiques.

Bridage provisoire du homig :

Par précaution et pour vous laissez le temps d’appuyer sur le bouton d’arrêt d'urgence de Repetier-Host,  vous allez baisser la vitesse de homing à 500 (50*10) sur les trois axes.
349    //// MOVEMENT SETTINGS
350   #define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E
351   #define HOMING_FEEDRATE {50*10, 50*10, 50*10, 0}  // set the homing speeds (mm/min)

J'ai cassé suffisamment de câble pour vous dire que cette précaution n'est pas superflue. Une fois seulement les tests des butées validés, vous pourrez rétablir la valeur 50*60 sur les trois axes.


Réglage des poulies :

Rendez-vous ligne 355 :
355   #define DEFAULT_AXIS_STEPS_PER_UNIT   {78.7402,78.7402,200.0*8/3,760*1.1}  // default steps per unit for Ultimaker

Vous pouvez utiliser la valeur de 310 si et seulement si vous avez utilisé mon système d'entrainement par câble autour d'une vis M8 :
355   #define DEFAULT_AXIS_STEPS_PER_UNIT   {310,310,310,760*1.1}  // default steps per unit for Ultimaker

Autrement, vous pouvez vous servir de Rep Rap Calculator pour définir la valeur correspondant à votre machine.

Autre méthode plus empirique : Choisissez arbitrairement une valeur pas trop élevée. Positionnez à la main les chariots au milieu des colonnes.  Ensuite, déplacez l'axe Z de 10 mm grâce au contrôle manuel de Repetier-Host et mesurez la distance parcourue par un chariot. si vous ne tombez pas directement sur la bonne valeur, augmentez la progressivement jusqu'à ce que le déplacement réel corresponde à celui demandé. Enfin, affinez le réglage en déplaçant le chariot sur une plus grande hauteur.    


Cohérence des axes :

Ensuite, pour respecter la  cohérence entre les trois axes de la delta, modifiez comme suit les lignes 356 et 357
356   #define DEFAULT_MAX_FEEDRATE          {500, 500, 5, 25}    // (mm/sec)

356   #define DEFAULT_MAX_FEEDRATE          {500, 500, 500, 25}    // (mm/sec)

et :
357   #define DEFAULT_MAX_ACCELERATION      {9000,9000,100,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.

357   #define DEFAULT_MAX_ACCELERATION      {9000,9000,9000,10000}    // X, Y, Z, E maximum start speed for accelerated moves. E default values are good for skeinforge 40+, for older versions raise them a lot.


Toujours dans ce même souci de cohérence entre les trois axes, rendez-vous dans l'onglet "Configuration_adv.h", section "Mechanical Settings", ligne 199 :
197   #define X_HOME_RETRACT_MM 5
198   #define Y_HOME_RETRACT_MM 5
199   #define Z_HOME_RETRACT_MM 1 

et modifiez comme ceci :
197   #define X_HOME_RETRACT_MM 5
198   #define Y_HOME_RETRACT_MM 5
199   #define Z_HOME_RETRACT_MM 5 

Il s'agit du petit mouvement de retrait que les chariots effectuent après avoir heurtés la première fois les butées lors de l’étalonnage (homing).


Toujours dans "Configuration_adv.h", section "Mechanical Settings", ligne 218 à 221 vous allez harmoniser la vitesse de déplacement en mode manuel :
218   // Feedrates for manual moves along X, Y, Z, E from panel
219   #ifdef ULTIPANEL
220   #define MANUAL_FEEDRATE {50*60, 50*60, 4*60, 60}  //set the speeds for manual moves (mm/min)
221   #endif

ligne 220, rectifiez la vitesse de Z (soit : 50*60) :
218   // Feedrates for manual moves along X, Y, Z, E from panel
219   #ifdef ULTIPANEL
220   #define MANUAL_FEEDRATE {50*60, 50*60, 50*60, 60}//set the speeds for manual moves (mm/min)
221   #endif


Maintenant, rendez-vous dans l'onglet "Configuration.h", section "Mechanical Settings" ligne 311 à 313
311   #define INVERT_X_DIR true    // for Mendel set to false, for Orca set to true
312   #define INVERT_Y_DIR false    // for Mendel set to true, for Orca set to false
313   #define INVERT_Z_DIR true     // for Mendel set to false, for Orca set to true
314   #define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
315   #define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
316   #define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false

Passez en "false" les lignes 311 312 et 313 :
311   #define INVERT_X_DIR false    // Delta n'inverse pas
312   #define INVERT_Y_DIR false
313   #define INVERT_Z_DIR false     
314   #define INVERT_E0_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
315   #define INVERT_E1_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false
316   #define INVERT_E2_DIR false // for direct drive extruder v9 set to true, for geared extruder set to false


Enfin, pour finir d’harmoniser les axes, toujours dans l'onglet "Configuration.h"  section "Mechanical Settings"
ligne 369 à 371, vous devez adapter ce paramètre qui lisse les déplacements des axes :
369   #define DEFAULT_XYJERK                20.0    // (mm/sec)
370   #define DEFAULT_ZJERK                 0.4     // (mm/sec)
371   #define DEFAULT_EJERK                 5.0    // (mm/sec)

Tapez la même valeur pour "ZJERK" que "XYJERK" soit ici 20.0 :
369   #define DEFAULT_XYJERK        20.0    // (mm/sec)
370   #define DEFAULT_ZJERK         20.0 // (mm/sec) doit être le même que XY pour Delta
371   #define DEFAULT_EJERK           5.0    // (mm/sec)



Au prochain billet, nous configurerons Repetier-Host pour tester les premiers mouvements de la delta.






vendredi 18 octobre 2013

Réglage du firmware, partie 5 : Limitation du déplacement

Limitation du déplacement après l'étalonnage :  

Vous devez limiter les déplacements de l’effecteur pour éviter qu'il s’écrase sur une tour ou sur la table.
Pour cela, il suffit de changer des valeurs en fonction de votre machine et de rajouter le nom d'une variable. Ces positions correspondent au volume de travail et non aux positions des chariots sur les tours. Par défaut, les réglages sont ceux d'une imprimante cartésienne.

Rendez-vous lignes 326/332 :
326   // Travel limits after homing
327   #define X_MAX_POS 205
328   #define X_MIN_POS 0
329   #define Y_MAX_POS 205
330   #define Y_MIN_POS 0
331   #define Z_MAX_POS 200
332   #define Z_MIN_POS 0

Contrairement à une machine cartésienne qui a une surface de travail rectangulaire, la surface de travail d'une delta est circulaire et le point de référence dans l'espace de travail se situe au centre du plateau.
Vous allez donc répartir le rayon de votre surface d'impression. Pour ma machine, mon volume imprimable a un diamètre de 180 mm (-90 minimum et 90 maximum) et une hauteur de 210 mm.
Pour la hauteur, le minimum reste 0, mais le maximum sera défini par une nouvelle variable qui s’appelle : MANUAL_Z_HOME_POS. Rajoutez la, à la ligne 331, comme ceci :
326   // Travel limits after homing
327   #define X_MAX_POS 90
328   #define X_MIN_POS -90
329   #define Y_MAX_POS 90
330   #define Y_MIN_POS -90
331   #define Z_MAX_POS MANUAL_Z_HOME_POS
332   #define Z_MIN_POS 0

Mais pour pouvoir utiliser "MANUAL_Z_HOME_POS", il vous faut d'abord dé-commenter cette ligne :
339  //#define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used

Comme ceci :
339  #define MANUAL_HOME_POSITIONS  // If defined, MANUAL_*_HOME_POS below will be used

Et rendez-vous lignes 342/347 où vous allez changer la valeur pour "Z" :
342   //Manual homing switch locations:
343   // For deltabots this means top and center of the cartesian print volume.

344   #define MANUAL_X_HOME_POS 0
345   #define MANUAL_Y_HOME_POS 0
346   #define MANUAL_Z_HOME_POS 0
347   //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.

Elle se définit en mesurant la distance entre la buse et la surface d'impression après l'étalonnage.
Changez la valeur à la ligne 346.
342   //Manual homing switch locations:
343   // For deltabots this means top and center of the cartesian print volume.

344   #define MANUAL_X_HOME_POS 0
345   #define MANUAL_Y_HOME_POS 0
346   #define MANUAL_Z_HOME_POS 210
347   //#define MANUAL_Z_HOME_POS 402 // For delta: Distance between nozzle and print surface after homing.

ENDSTOPS_ONLY_FOR_HOMING :

Attention, cela ne signifie pas que vous pourrez imprimer sur 210 mm de hauteur, car lorsque l'effecteur est auprès d'une tour (soit au bord de la zone imprimable), le chariot de cette tour sera beaucoup plus haut et dépassera la butée.
C'est pour cela que je trouve prudent de commenter la ligne 85 dans l'onglet "Configuration_adv.h" , section "Mechanical Settings", comme ceci :   
85   //#define ENDSTOPS_ONLY_FOR_HOMING // If defined the endstops will only be used for homing 

Cela permettra que les butées restent sensibles lors de l'impression.
Néanmoins, pensez que la hauteur de vos pièces imprimées ne devra pas excéder 180 mm de haut (dans mon cas).

Dans le prochain billet, nous définirons les "MOVEMENT SETTINGS".


mercredi 16 octobre 2013

Réglage du firmware, partie 4 : les butées

La configuration des butées :


Les butées de fin de course ou "ENDSTOPS" sont très importantes pour une Delta. En effet, la première action que la machine exécutera avant chaque travail sera de se caler contre chaque butée pour s'étalonner, c'est ce qu'on appelle le "homing". Cela lui donnera un point de référence pour chaque colonne (X Y et Z). Une delta a donc besoin de trois butées qui sont appelées : X_MAX, Y_MAX, et Z_MAX. Nous allons les configurer dans le cas particulier de la carte Minitronics.


Ordre des colonnes :

Avant de commencer à modifier Marlin, nous allons vérifier l'ordre de nos colonnes. En effet pour imprimer à l'endroit, la colonne X doit se trouver à gauche en regardant la machine, la colonne Y doit être à droite et la colonne Z doit se trouver au fond, comme ceci :



ATTENTION !

Vérifiez que les branchements x y z des butées correspondent bien aux axes. Et aussi double vérifiez que les branchements des moteurs sont bien sur les bonnes colonnes, sinon les butées qui ne seraient pas bien placées ne seraient jamais détectées et le chariot se crasherait et vous casseriez le câble.


Pins.h de la carte Minitronics


ATTENTION !

Cette manipulation des pins n'a de sens que pour les utilisateurs de la carte "Minitronics" de chez ReprapWorld !


Ouvrez l'onglet "Pins.h" et rendez-vous à la ligne numéro : 2010 



Nous avons là les déclarations d'entrées et de sorties des broches du microprocesseur de la carte Minitronics que le firmware va utiliser. Mais, il y a un petit problème. En effet, par défaut les pins qui correspondent au signal des butées sont nommés respectivement : X_MIN, Y_MIN et Z_MIN. Or, c'est embêtant car nous avons vu plus haut que les butées d'une delta sont nommées X_MAX, Y_MAX et Z_MAX.
2023   #define X_STEP_PIN 48
2024   #define X_DIR_PIN 47
2025   #define X_ENABLE_PIN 49
2026   #define X_MIN_PIN 5
2027   #define X_MAX_PIN -1 //2 //Max endstops default to disabled "-1", set to commented value to enable.

Effectivement, on peut lire à la ligne 2026 que le pin "5" est affecté à X_MIN et qu'à ligne 2027, le pin "-1" est affecté à X_MAX, or attribuer le pin "-1" revient à une désactivation.

Mais, nous n'avons pas besoin de butée X_MIN mais en revanche, il nous faut une butée X_MAX.

La solution que je vous propose est simplement d'inverser MIN et MAX, comme ceci :
2023   #define X_STEP_PIN 48
2024   #define X_DIR_PIN 47
2025   #define X_ENABLE_PIN 49
2026   #define X_MAX_PIN 5
2027   #define X_MIN_PIN -1 //2 //Max endstops default to disabled "-1", set to commented value to enable.

Désormais, nous avons une butée X_MAX qui est connectée sur le pin 5 du microprocesseur.  

Vous devez faire la même opération pour les deux autres butées, pour obtenir ceci :
 2029   #define Y_STEP_PIN 39 // A6
 2030   #define Y_DIR_PIN 40 // A0
 2031   #define Y_ENABLE_PIN 38
 2032   #define Y_MAX_PIN 2
 2033   #define Y_MIN_PIN -1 //15

et pour la butée Z :
 2035   #define Z_STEP_PIN 42 // A2
 2036   #define Z_DIR_PIN 43 // A6
 2037   #define Z_ENABLE_PIN 41 // A1
 2038   #define Z_MAX_PIN 6
 2039   #define Z_MIN_PIN -1

Nous voila avec trois butées MAX fonctionnelles.


Mechanical  Setting :

Retournez maintenant dans l'onglet "Configuration.h", à la ligne 292 de la section Mechanical setting, vous pouvez activer une fonction qui bloque les butées "MIN"
292   //#define DISABLE_MIN_ENDSTOPS

Il suffit de dé-commenter la ligne :
292   #define DISABLE_MIN_ENDSTOPS


Endstop Settings :

Toujours dans l'onglet "Configuration.h", rendez-vous à la section "Endstop Setting", ligne 318.



Aux lignes 320, 321 et 322, il est défini la direction vers laquelle se fait l’étalonnage. par défaut, il se fait vers les butées MIN (-1)
318   // ENDSTOP SETTINGS:
319   // Sets direction of endstops when homing; 1=MAX, -1=MIN

320   #define X_HOME_DIR -1
321   #define Y_HOME_DIR -1
322   #define Z_HOME_DIR -1

Vous devez modifier cela pour qu'il se fasse vers les butées MAX (1).
Remplacez "-1" par "1" comme ceci :
318   // ENDSTOP SETTINGS:
319   // Sets direction of endstops when homing; 1=MAX, -1=MIN

320   #define X_HOME_DIR 1
321   #define Y_HOME_DIR 1
322   #define Z_HOME_DIR 1


Vous en avez fini avec les butées, nous verrons plus tard comment vérifier leur bon fonctionnement avec la commande  "M119". Mais en attendant, dans le prochain billet, nous définirons les limitations de mouvements après l’étalonnage. 

vendredi 11 octobre 2013

Réglage du firmware, partie 3 : Delta Setting

Paramètres Delta


Nous allons activer la fonction Delta de Marlin.

Ouvrez l'onglet Configuration.h et rendez-vous à la section appelée "Delta Settings" (ligne 75) qui ressemble à ceci :

                                        note : N'hésitez pas à cliquer sur l'image pour l'agrandir ;-)


Rendre "Delta Setting" actif :



Allez à la ligne 78 et décommentez la, comme ceci : 
77 // Enable DELTA kinematics 78 //#define DELTA


77 // Enable DELTA kinematics 78 #define DELTA
Félicitation, vous venez de rendre actif tous les réglages relatifs à une imprimante 3D de type Delta.


Les paramètres de la Delta :


Nous allons maintenant régler les paramètres en fonction de notre machine. Les valeurs que je vais inscrire sont trouvées en fonction de ma machine. Vous devrez les définir en les mesurant vous même.  
Pour commencer, voici un schéma qui présente la théorie des mesures dont on a besoin. 

                                Source : 3D printer list

Prenons les dans l'ordre où elles apparaissent dans Arduino :

 
DELTA_DIAGONAL_ROD :



C'est la longueur théorique des bras qui relient les chariots à l'effecteur. La mesure se prend d'axe de rotation à axe de rotation, soit le centre des billes d'acier. Dans mon cas, c'est très facile de la mesurer grâce au montage que j'avais fait pour régler les bras.   



A la ligne 86, changez par la valeur trouvée.
85   // Center-to-center distance of the holes in the diagonal push rods.
86   #define DELTA_DIAGONAL_ROD 250.0 // mm
Notes : pour les nombres décimaux, utilisez toujours le point et non la virgule. 


DELTA _SMOOTH_ROD_OFFSET :

C'est la distance horizontale entre le centre de l'imprimante et l'axe d'une colonne.
Bon ! je suis d’accord, c'est un peu confus. le plus simple, c'est de voir cela sur une photo :


J'ai choisi arbitrairement le centre de la rainure comme repère, l'important est de garder la même référence pour la mesure du "delta_carriage_offset".

88   // Horizontal offset from middle of printer to smooth rod center.
89   #define DELTA_SMOOTH_ROD_OFFSET 183.5 // mm


DELTA_EFFECTOR_OFFSET :


C'est la distance entre le centre de l'effecteur et l'axe qui passe par le centre de deux rotules.



Ce n'est pas très évident à mesurer précisément. Je vous propose une méthode :

Premièrement, marquez chaque bille avec du crayon.



Ensuite, reportez par contact l'emplacement des billes sur une feuille de papier.



Enfin, reliez les points comme ci dessous, mesurez les trois cotés pour vérifier et faites une moyenne si elles ne sont pas identiques.



Notez la mesure à la ligne 92
91   // Horizontal offset of the universal joints on the end effector.
92   #define DELTA_EFFECTOR_OFFSET 33.5 // mm


DELTA_CARRIAGE_OFFSET :

C'est la mesure du décalage entre le centre d'une rotule avec l'axe d'une colonne (ici, le centre de la rainure).



Commencez par mesurer en vous calant sur le dessus de la bille puis soustrayez le rayon de la bille soit 6.15
ce qui donne : 31 - 6.15 = 24.85

94   // Horizontal offset of the universal joints on the carriages.
95   #define DELTA_CARRIAGE_OFFSET 24.85 // mm


DELTA_RADIUS :

97   // Effective horizontal distance bridged by diagonal push rods.
98   #define DELTA_RADIUS (DELTA_SMOOTH_ROD_OFFSET-DELTA_EFFECTOR_OFFSET-DELTA_CARRIAGE_OFFSET)

Là, il n'y a rien à changer le "delta_radius" sera calculé automatiquement à partir des trois valeurs précédentes.

Le prochain billet sera consacré à la calibration des butées.


jeudi 10 octobre 2013

Réglage du firmware, partie 2 : Arduino

Configurer Arduino :


Après avoir téléchargé et installé Arduino à partir de RepRapWold, vérifiez que vous avez la carte Minitronics sélectionnée dans Outil / Type de carte / Minitronics. 



Connectez la carte Minitronics à un port USB de votre ordinateur.

Avertissement ! 
Ne jamais brancher ou débrancher les moteurs lorsque la carte est sous tension ! 


Ensuite, sélectionnez le port com. En général, COM3 ou supérieur (COM1 et COM2 sont généralement réservés aux ports série matériels). Si vous hésitez, déconnectez la carte Minitronics et rouvrez le menu, l'entrée qui disparaît doit être celle de la carte. une fois le port défini, rebranchez la carte et sélectionnez le port (dans mon cas COM4).



Charger Marlin :


Maintenant (si ce n'est pas déjà fait), allez sur la page GitHub de Marlin et téléchargez le firmware en utilisant le bouton "Download Zip", décompressez le sur votre disque-dur.




A partir d'Arduino : faites Fichier / Ouvrir


Ouvrez le dossier "Marlin" pour obtenir cette fenêtre. Ensuite, cliquez sur le "Marlin" désigné par la flèche rouge :


Notes :
A la première ouverture, le raccourci a cet aspect :



Ensuite, il aura cet aspect :


Vous avez désormais le firmware Marlin sous les yeux. Il apparaît sous la forme de plusieurs onglets de fichier texte.



Pour pouvoir accéder à tous les onglets, vous devez utiliser la petite flèche en haut à droite :



Ainsi vous avez accès à tous les onglets, c'est assez impressionnant ; mais rassurez-vous, nous n'aurons à travailler que sur quelques onglets.


Pour pouvoir s'y retrouver dans le code, je vais utiliser les numéros de lignes. En bas de la fenêtre d'Arduino, vous trouverez affiché le numéro de ligne que vous avez sélectionné (ligne 12 dans cet exemple). Cela vous aidera à retrouver le code dont il est question. Mais attention, il est possible que suivant l’évolution de Marlin les numéros ne correspondent plus exactement.   





Notions de base :


Il y a deux sortes de texte dans le code. En premier, le "code" lui même qui doit obéir à une syntaxe très rigoureuse. La moindre faute empêchera Arduino de compiler le code (c'est pour cela qu'il y a une étape "Vérifier" à effectuer avant de téléverser le firmware dans la carte). Et il existe aussi une autre sorte de texte que l'on nomme "commentaire", il permet d'avoir des informations supplémentaires sur le code. les lignes qui sont commentées ne sont pas prises en compte par la machine. Cela permet aussi de mettre à l'écart des morceaux de code qui sont inutilisés. C'est très pratique car des options peuvent être activées et désactivées très facilement. Pour mettre un texte en commentaire, il suffit de taper au début de la ligne une double barre comme ceci : // . Pour réactiver un morceau de code, il suffit de supprimer la double barre. Le texte commenté prendra une teinte grise et le code décommenté sera en noir.     

Pour illustrer mes propos, nous allons vérifier la vitesse de transmission :

A la ligne 19, nous avons un commentaire qui explique que ce qui suit défini la vitesse de communication avec l'imprimante. Les lignes 20 et 21 sont deux options possibles, la double barre fonctionne comme un interrupteur. 
19   / / This determines the communication speed of the printer
20   # Define BAUDRATE 250000
21   / / # Define BAUDRATE 115200

Nous allons conserver la valeur de 250000 qui fonctionne avec la Minitronics.
Désormais, nous avons les connaissances de base pour démarrer notre configuration.



Configuration.h : 


Comme nous allons modifier le firmware, nous allons commencer par renommer notre version de Marlin.
Ouvrez l'onglet Comfiguration.h et à la ligne 12 remplacer "(none, default comfig)" par votre nom.  

8    // User-specified version info of this build to display in [Pronterface, etc] terminal window during
9    // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
10   // build by the user have been successfully uploaded into firmware.

11   #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
12   #define STRING_CONFIG_H_AUTHOR "(none, default config)" // Who made the changes.

Par exemple :
8    // User-specified version info of this build to display in [Pronterface, etc] terminal window during
9    // startup. Implementation of an idea by Prof Braino to inform user that any changes made to this
10   // build by the user have been successfully uploaded into firmware.

11   #define STRING_VERSION_CONFIG_H __DATE__ " " __TIME__ // build date and time
12   #define STRING_CONFIG_H_AUTHOR "(Les inventions de Nicolas)" // Who made the changes.

 

Cela est utile pour pouvoir vérifier la version du firmware qui est installée sur votre machine.



Choisir la carte Minitronics dans Configuration.h :


Il nous faut maintenant dire au programme quelle carte utiliser.
En commentaire, on trouve la liste des cartes supportées par cette version de Marlin.
Et à la ligne 58, vous pouvez voir la ligne de code qui définit la carte
50   // 701= Megatronics v2.0
51   // 702= Minitronics v1.0
52   // 90 = Alpha OMCA board
53   // 91 = Final OMCA board
54   // 301 = Rambo
55   // 21 = Elefu Ra Board (v3)

56
57   #ifndef MOTHERBOARD
58   #define MOTHERBOARD 7
59   #endif

 Vous devez y inscrire le numéro correspondant à la carte Minitronics, soit le numéro 702.

50   // 701= Megatronics v2.0
51   // 702= Minitronics v1.0
52   // 90 = Alpha OMCA board
53   // 91 = Final OMCA board
54   // 301 = Rambo
55   // 21 = Elefu Ra Board (v3)

56
57   #ifndef MOTHERBOARD
58   #define MOTHERBOARD 702
59   #endif

Avant d'enregistrer, nous allons vérifier le code pour savoir si nous n'avons pas fait de bêtises. Pour cela, appuyez sur le premier bouton rond en haut à gauche d'Arduino.




Arduino va vérifier ou "compiler" le code, en fait il le transforme en "langage machine" qui serait incompréhensible pour un humain (normal). Si tout se passe bien, il affichera la taille binaire du croquis, sinon, il y aura un message d'erreur.
Enregistrez votre travail sous un autre nom (par exemple : Malin_les_inventions_de_nicolas) pour conserver une version non modifiée (au cas où vous ne vous y retrouviez pas dans vos modifications).

Dans le prochain billet, nous définirons le type de l'imprimante, les butées et nous téléverserons le croquis pour les premiers tests.