Aller au contenu

GO Print

[TUTO] Installer et configurer Klipper


Nibb31

Messages recommandés

Bonjour,

Je vais vous faire part de mon expérience avec Klipper et vous expliquer comment l'installer et le configurer sur votre imprimante.

I - Introduction

Klipper est un firmware pour imprimante 3D comparable à Repetier ou Marlin. Son rôle est d'interpréter le Gcode en provenance du slicer et de le convertir en commandes qui permettent de piloter individuellement le hardware de l'imprimante. Pour certaines machines, comme les CoreXY ou les Delta, la cinématique est très complèxe, ce qui demande des calculs importants. Malheureusement, avec une carte 8-bits, la puissance du microcontroleur n'est pas super adaptée à ces calculs. Du coup, la vitesse sera limitée par la puissance du processeur et les calculs seront moins précis. C'est ce qui pousse certains à vouloir passer à une carte 32 bits. Nous allons voir que Klipper permet de s'affranchir de ces limitations.

1) Les fonctionnalités de Klipper

La particularité de Klipper est d'utiliser un ordinateur hôte pour faire tous ces calculs et de réserver le microcontroleur pour ce qu'il sait bien faire: gérer les entrées-sorties en temps réel. Ceci décharge le microcontroleur qui n'a plus que ça à faire, et l'hôte, qui est généralement un Raspberry Pi 3 avec un processeur ARM quad core, se charge des calculs, avec du multi-thread, plus de mémoire, et une interface graphique plus attrayante. Par ailleurs, Klipper s'interface avec Octoprint, ce qui permet d'utiliser sa partie graphique pour controler l'imprimante. On pourrait meme virer le LCD de l'imprimante et utiliser un écran tactile connecté au Raspberry.

Le résultat, c'est un surcroit de performances important. Avec une carte 8-bits, on a des performances supérieures à celles d'une carte 32-bits. Klipper utilise cette puissance pour calculer les trajectoires de façon plus souple, ce qui permet de gagner en précision, en fluidité, en bruit, et en vitesse d'impression. Avec Klipper, j'imprime en 120mm/s sans problème sur une imprimante cartésienne. Il semblerait que les gains sont encore plus importants sur des CoreXY ou Delta. Et bien sûr, une carte 32-bits permettra d'aller encore plus vite, mais on se limite alors à l'énergie cinétique que la mécanique de la machine peut encaisser.

Les firmware classiques ont aussi d'autres inconvénients: Ils se configurent en modifiant les fichiers de code source, ce qu'un utilisateur ne devrait jamais avoir à faire. Il faut ensuite les compiler et les flasher à chaque modification. Avec Klipper, on ne touche plus au firmware qui est sur le microcontroleur. Les modifications se font sur un fichier de configuration qui réside sur l'hôte, ce qui est instantané et beaucoup plus pratique.

Jusqu'à l'année dernière, Klipper était plutôt expérimental, mais depuis la version de décembre et l'introduction du bed levelling, le support BL Touch, le "pressure advance", la calibration delta, les écrans LCD, les protections thermiques, etc... c'est devenu parfaitement utilisable tous les jours.

Il y a deux étapes à l'installation de Klipper:

  • L'installation. C'est la partie la plus facile et on ne la fait qu'une fois.
  • La configuraton. Celle-ce se fait dans un fichier de config. Avec un plugin qui va bien dans Octoprint, on peut éditer ce fichier directement dans Octoprint.


2) Prérequis

Avant d'installer Klipper, il vous faut:

  • Une imprimante 3D. Ben oui, c'est pas pour les machines à laver. Il faut pouvoir flasher le firmware, donc on évitera les machines avec un hardware propriétaire. En principe, tout ce qui tourne avec Marlin peut tourner avec Klipper.
  • Un firmware basé sur Marlin. C'est plus simple, parce qu'on pourra récupérer un certain nombre de paramètres. Il est possible de se débrouiller autrement, mais il faudra connaître ou calculer les mm/step etc...
  • Un ordinateur hote sous Linux. Ici, on parlera de Raspberry, mais en théorie ça pourrait fonctionner avec n'importe quel PC sous Linux et Octoprint. Attention, il faut un Raspberry Pi 3 au minimum. Un Raspberry Zero ou un vieux Raspberry 1 vont trop ramer.
  •  Octoprint. Je ne vais pas détailler ici l'installation d'Octoprint. Il y a plein de tutos là dessus. On y installer un plugin OctoKlipper qui facilite la configuration de Klipper.
  • Des connaissances (basiques) en Linux. On va utiliser une ligne de commande SSH pour télécharger et installer Klipper.

Note importante: Avant de procéder à l'installation de Klipper, assurez-vous bien que tout l'ensemble Imprimante 3D + Octoprint  Raspberry fonctionne correctement et est parfaitement maîtrisé. Sinon, si un truc ne marche pas après, on ne pourra pas savoir si ça vient de Klipper ou de la configuration matérielle.

2ème note: Je vous conseille d'avoir toujours une stratégie de repli, autrement dit les moyens de pouvoir reflasher Marlin avec une configuration qui marche si pour une raison ou une autre Klipper ne vous convient pas.

  • J'aime 10
  • Merci ! 6
Lien vers le commentaire
Partager sur d’autres sites

II - L'installation

L'installation est la partie la plus simple. Il suffit de suivre les étapes, sans trop réfléchir.

1) Récuperer les paramètres  de Marlin

On part du principe qu'on a une installation Marlin qui fonctionne. On peut donc récupérer un certain nombre de données qui nous aideront à configurer Klipper.

  • Aller dans Octoprint et connecter l'imprimante.
  • Aller sur l'ongler Terminal et entrer M503. Ca va lister toute une série de lignes qui commencent par echo.
  • Copier le résultat du M503 et coller ce contenu dans un fichier texte à sauvegarder. On y reviendra plus tard.

2) Noter le port

L'imprimante est généralement connectée au Raspberry par le port /dev/ttyUSB0 ou /dev/ttyACM0 (ça dépend des machines).

  • Regarder les options de connexion d'Octoprint
  • Noter le port sur lequel Octoprint se connecte à l'imprimante.

3) Télécharger Klipper

Ceci va télécharger et installer le logiciel hôte Klipper (la partie qui s'installe sur le Raspberry).

  • Se connecter au Raspberry en SSH (user: pi et password: raspberry si vous ne l'avez pas changé - je vous conseille de le changer avec passwd ou raspi-config)
  • Entrer les deux commandes suivantes:
git clone https://github.com/KevinOConnor/klipper
./klipper/scripts/install-octopi.sh

4) Flasher le firmware sur le microcontroleur

  • Taper les commandes suivantes:
cd ~/klipper/
make menuconfig

Ceci ouvre un menu qui permet de régler les options de compilation. Choisissez d'abord le microcontrôleur. Si vous avez un Arduino/RAMPS ou dérivé (Anet, MKS Gen, etc...), laisser par défaut. Sinon, si vous avez une carte un peu plus exotique (32 bits ou autres...) il faudra plonger dans les options.

  • Sélectionner Save puis Exit.
  • Entrer la commande suivante
make
  • Et enfin, on va flasher le firmware avec les commandes suivantes:
sudo service octoprint stop
sudo service klipper stop
make flash FLASH_DEVICE=<port>
sudo service klipper start
sudo service octoprint start
  • Remplacer <port> par le port que vous avez noté, par exemple /dev/ttyUSB0 ou /dev/ttyACM0.

Attention: Sur les cartes Anet, il faut utiliser la commande suivante à la place de make flash:

avrdude -p atmega1284p -c arduino -b 57600 -P /dev/ttyUSB0 -U out/klipper.elf.hex

5) Installer le plugin OctoKlipper

Ce plugin va nous faciliter la vie en permettant, parmi d'autres choses, d'éditer la configuration de Klipper à travers l'interface web.

  • Dans Octoprint, aller dans Settings > Plugin Manager et cliquer sur Get More.
  • Rechercher le plugin OctoKlipper et Installer.

A partir de maintenant, Octoprint va se connecter à une imprimante virtuelle Klipper /tmp/printer au lieu de l'imprimante physique. Si ce n'est pas déjà configuré, modifier les options de connection.

Modifié (le) par Nibb31
  • J'aime 1
  • Merci ! 3
Lien vers le commentaire
Partager sur d’autres sites

II - Configuration de base

La configuration, pour la majeur partie, va se faire par tatonnement. On va modifier une configuration, sauvegarder, et voir si ça marche...  On va généralement partir d'une configuration standard, mais il faudra souvent affiner ou modifer des trucs. Donc, plutôt que d'expliquer chaque paramètre, je vais vous expliquer les grands principes pour que vous vous débrouilliez vous-mêmes.

Chaque option est expliquée dans le fichier example.cfg dans le dossier config. Les options avancées (bed levelling, macros gcode, etc...) sont expliquées dans le fichier example_extras.cfg.

1) Choix du fichier de configuration

Ici, on a plusieurs possibilités:

  • Si votre imprimante est "standard", vous pouvez récupérer une configuration toute faite, et éventuellement la modifier.
  • Si, comme moi, votre machine est faite de bric et de broc, il faudra faire un peu plus de modifs sur un fichier existant ou partir du fichier par défaut (example.cfg). Il y a aussi des exemples pour des CoreXY et Delta.

Pour voir les le fichiers de configuration disponibles, entrer la commande suivante:

ls -l ~/klipper/config/

On peut aussi voir les fichiers ici:
https://github.com/KevinOConnor/klipper/tree/master/config

Une fois que vous avez choisi le fichier de config qui se rapproche le plus de votre configuration, entrer la commande suivante:

cp ~/klipper/config/example.cfg ~/printer.cfg

Ceci va copier le fichier et le renommer printer.cfg. C'est sur celui-ci qu'on va travailler.

Maintenant, on peut quitter la ligne de commande. Le reste de la configuration se fera dans Octoprint dans Settings > OctoKlipper > Klipper Configuration. Vous devez maintenant y voir le contenu du fichier.

2) Principes de la configuration

Le fichier de configuration est composé de blocs. Certains sont obligatoires d'autres optionnels. Chaque bloc commence par un titre entre crochets (par exemple [printer])

Les pins de la carte se définissent avec la syntaxe suivante:

pin: <numéro>
  • On utilise le préfixe "!" pour inverser la logique, par exemple pour inverser le sens de rotation d'un moteur (l'équivalent des variables INVERT dans Marlin)
  • On utilise le préfixe "^" pour utiliser la résistance en entrée, par exemple pour les switchs end stop.
  • Si on utilise les deux préfixes, le "^" doit précéder le "!".

Par exemple, dans la définition de l'écran on pourra trouver:

encoder_pins: ^ar31, ^ar33
click_pin: ^!ar35
kill_pin: ^!ar41

Si vous avez un doute sur la numérotation des pins, regardez un schéma, par exemple ici:
https://www.reprap.org/wiki/RepRap

3) Définir le microcontrôleur

Ce bloc définit le type de et le port. Sur serial, mettre le port utilisé à l'origine par Octoprint pour se connecter à l'imprimante.

[mcu]
serial: /dev/ttyUSB0

4) Définir les mm/step

C'est ici qu'on va utiliser les valeurs récupérées dans Marlin, principalement les valeurs indiquées sous Steps per unit.

Important: Marlin utilise l'unité steps/mm et Klipper utilise des mm/step. Il faut donc inverser (1/x) toutes les valeurs par rapport à Marlin. Par conséquent, là où on aura une valeur 200 dans Marlin, il faudra utiliser 1/200 = 0.005 dans Klipper.

Donc on va changer les lignes suivantes dans Klipper

[stepper_x]
...
step_distance: 0.005
...

[stepper_y]
...
step_distance: 0.005
...

[stepper_y]
...
step_distance: 0.005
...

[extruder]
...
step_distance: .001265

La valeur dans [extruder] sera la valeur à modifier pour calibrer l'extrudeur. On procédera de la même manière que sous Marlin (une règle de trois en mesurant le filament qui sort de l'extrudeur), mais an appliquant l'opération 1/x.

5) BLTouch et autres capteurs

Les BLTouch ou 3D Touch ou autres capteurs nécessitent beaucoup d'essais. Je conseille d'utiliser un switch endstop classique pour commencer, et de passer au capteur Z une fois que tout le reste est configuré.

Pour le BLTouch, dans la section [stepper_z] il faut supprimer la ligne position_endstop et modifier la ligne endstop_pin

endstop_pin: probe:z_virtual_endstop
#endstop_pin: ^ar18
#position_endstop: 0

Il faut ensuite rajouter une section [bltouch] ou [probe] et renseigner le x, y, z_offset par rapport à la buse. Ca doit etre les mêmes valeurs que dans Marlin.

Par exemple:

[bltouch]
sensor_pin: ^ar18
control_pin: ar11
pin_move_time: 0.2
x_offset: 32
y_offset: 0
# Increase Z_Offset to lower nozzle closer to bed. PLA 2.6
z_offset: 2.7
speed: 60

La section [probe] pour les autres capteurs est un peu plus compliquée. Je vous conseille de regarder le fichier example_extras.cfg pour plus d'informations.

Augmenter la valeur z_offset va descendre la buse plus près du bed. Réduire la valeur mettra plus de distance.

Attention: Pour un 3D Touch ou clone de BL Touch, il faut rajouter les lignes suivantes:

pin_up_reports_not_triggered: False
pin_up_touch_mode_reports_triggered: False

6) Ecrans LCD

Le fichier examples_extras.cfg contient les configurations pour la plupart des écrans LCD courants. En principe, il suffit de copier/coller la section qui vous concerne.

7) Tester la configuration.

Dans Klipper, à chaque fois que vous sauvegardez la configuration, il faut redémarrer Klipper. Si vous utilisez OctoKlipper, il le fait automatiquement, sinon vous pouvez le faire manuellement en tapant FIRMWARE_RESTART dans l'onglet terminal ou la commande suivante en SSH:

sudo service klipper restart

En principe, le terminal doit envoyer régulièrement une ligne avec les températures. Si ce n'est pas le cas, vérifier les paramètres des pins pour les blocs [heater_bed] et [extruder].

Si les tempétures sont bien renvoyées, la première chose à faire est de taper une commande Gcode dans le terminal. Par exemple STATUS. S'il y a une erreur de syntaxe, ça enverra un message d'erreur avec un indice sur ce qu'il faut corriger.

S'il n'y a pas de message d'erreur, je vous conseille de procéder progressivement pour vérifier que tout est correctement branché:

  • Dans l'onglet Control, tester les axes X, Y, Z pour vérifier qu'ils se déplacent correctement dans les bons sens. Si ce n'est pas le cas, inverser les paramètres dir_pin en ajoutant ou supprimant le "!". Si le moteur ne répond pas du tout, vérifier que les bons pins sont renseignés dans step_pin et dir_pin.
  • S'ils marchent, commencer par un Home All. Si les endstops ne marchent pas, vérifier les valeurs de endstop_pin.
  • Vérifier la chauffe de la buse et du bed.
  • Une fois que la buse est chaude, essayer l'extrudeur, et si nécessaire, le calibrer avec la méthode habituelle. L'extrudeur ne marchera pas si la buse n'est pas chaude.
  • Si tout ceci fonctionne, vous pouvez lancer une premier impression de test.

Là, vous avez les billes pour démarrer et avoir une imprimante fonctionnelle. Dans la section suivante, on couvrira les options de configuration supplémentaires.

Modifié (le) par Nibb31
  • J'aime 4
  • Merci ! 3
Lien vers le commentaire
Partager sur d’autres sites

IV - Configuration avancée

Une fois que vous avez la configuration de base, il est assez facile de rajouter des options supplémentaires. Les exemples que je mets ici sont simplifiés et ne contiennent que les infos de base. D'autres options sont disponibles et documentés dans le fichier examples_extras.cfg.

1) Homing override

(pas nécessaire si vous n'avez pas de sonde)

C'est l'équivalent du SAFE_HOMING dans Marlin: on veut redéfinir la position de l'opération Home pour s'assurer que la sonde BL Touch ou autre est au dessus du plateau et que la buse ne percute pas le plateau. Dans Klipper, on définit une séquence Gcode à définir lorsque le Home s'applique à un ou plusieurs axes.

Voici l'exemple qui marche chez moi, mais qui sera à adapter en fonction du placement de votre sonde par rapport à la buse:

[homing_override]
axes: z
set_position_z: 0.0
gcode:
  G90 
  G0 Z5 F600
  G28 X0 Y0
  G0 X-5 Y10 F3600
  G28 Z0
  G0 Z5 F600

Explication:

  • axes: définit l'axe sur lequel cet option s'applique. Ici, ça ne va s'appliquer que si on fait Home All ou Home Z.
  • set_position_z: Klipper refuse d'activer la sonde tant qu'on n'a pas défini un 0 pour l'axe. On définit donc le 0 (provisoire) à la position actuelle.
  • gcode: On execute le Gcode suivant:
    - G90: mode absolu
    - G0: monter 5mm au dessus (pour s'éloigner du plateau si on est en contact)
    - G28 X0 Y0: faire un Home sur X et Y
    - G0 X-5 Y10: mettez ici les coordonnées de la buse pour lesquels la sonde sera au dessus du plateau.
    - G28 Z0: faire le Home Z
    - G0 Z5: remonter à 5mm au dessus du plateau pour ne pas rester en contact

Vous pouvez bien sûr modifier le Gcode à votre convenance.

2) Bed leveling

Klipper propose le nivellage automatique du plateau et la compensation de l'inclinaison avec un capteur (défini dans les sections [bltouch] ou [probe]) Malheureusement, il faut choisir. Donc je choisis plutôt l'option bed leveling.

[bed_mesh]
speed: 100
probe_count: 3,3
min_point: -5,20
max_point: 160,200
horizontal_move_z: 6
samples: 1
sample_retract_dist: 6
  • probe_count sera la définition du nombre de points dans la grille de test.
  • min_point et max_point seront les coordonnées de la buse pour que la sonde soit placée dans les coins du plateau. Il faut donc tenir compte de l'offset.
  • samples permet de faire la moyenne entre plusieurs sondages à chaque point de la grille.
  • horizontal_move_z et sample_retract_dist définissent le mouvement en Z à chaque sondage.

Pour lancer le bed leveling, Klipper ne connait pas la commande G29 mais utilise la commande BED_MESH_CALIBRATE à la place. Il faut donc taper cette commande dans l'onglet Terminal. On peut aussi très bien créer une macro pour redéfinir G29.

3) Deux moteurs Z

Il est facile de rajouter un deuxième moteur sur l'axe Z qui utilise le même endstop, en rajoutant le bloc suivant:

[stepper_z1]
step_pin: ar36
dir_pin: !ar34
enable_pin: !ar30
step_distance: .00125

Il faut bien-sûr s'assurer que les pins sont corrects. La direction du dir_pin ("!" ou pas) ainsi que le step_distance doivent être les mêmes que dans stepper_z.

4) Commandes Klipper

Klipper est globalement compatible avec le Gcode Marlin, c'est à dire que du Gcode généré pour Marlin sera compris par Klipper. Cependant, il y a quelques commandes Marlin qui n'ont pas de sens sous Klipper (les options M50x) ou qui utilisent des commandes différentes (par exemple TURN_OFF_HEATERS au lieu de M108).

Vous pouvez aussi taper HELP dans le Terminal pour obtenir la liste des commandes de Klipper.

5) Macros

Il est possible de créer ses propres commandes ou raccourcis Gcode avec Klipper. On peut ensuite inclure la nouvelle commande dans son Gcode ou le taper dans l'onglet Terminal. La syntaxe est la suivante:

[gcode_macro <nom de la macro>]
gcode: 
   <Gcode>

On peut, par exemple, créer des commandes Gcode Marlin qui n'existent pas dans Klipper, ou créer des macros pour insérer le Start Gcode ou End Gcode du slicer directement dans Klipper. Par exemple, avec la configuration suivante, on peut mettre simplement les commandes START_PRINT et END_PRINT dans Cura et Klipper s'occupera d'effectuer les actions en début et en fin d'impression:

[gcode_macro G29]
gcode:
  BED_MESH_CALIBRATE

[gcode_macro PURGE]
gcode:
  M117 Purging...
  G1 X0 Y3 Z.10 F3600
  G92 E0
  G1 X40 E10 F500
  G92 E0
  G1 E-2 F500
  G1 X80 F4000
  G1 Z0.3

[gcode_macro START_PRINT]
gcode:
  M117 Bed leveling...
  G90
  G21
  M82
  M107
  G28
  G29
  PURGE

[gcode_macro END_PRINT]
gcode:
  M104 S0
  M140 S0
  G91
  G1 E-1 F300
  G0 Z+2 E-5 F600
  G90
  G0 X-5 Y200 F3600
  M84

6) Calibration du PID

Le PID, c'est l'algorithme qui va contrôler la stabilité de température. Un PID mal calibré va donner une température qui va osciller entre une valeur au dessus et en dessous de la consigne. Pour calibrer le PID, on va lancer une calibration avec la commande suivante dans l'ongler Terminal:

PID_CALIBRATE HEATER=extruder TARGET=200

Klipper va faire lancer plusieurs cycles de température à 200°C et à la fin va lister  les valeurs pid_Kp, pid_Ki et pid_Kd dans le terminal. Il suffit de copier ces valeurs dans la section [extruder] du fichier de config.

Vous pouvez faire la même opération sur heater_bed.

7) Pressure Advance

Cette option est similaire au "Linear Advance" de Marlin. Elle permet de régler de façon dynamique le débit de la buse en fonction de la vitesse et de l'accélération de la tête. Sans cette option, par défaut, si vous faites un carré, il va y avoir une accumulation de matière dans les coins qui former une espèce de bourrelet vertical dans les coins.

  • Pour trouver la valeur optimale, on commence par régler la valeur à 0 en rajoutant la ligne pressure_advance dans le fichier de config:
[extruder]
pressure_advance: 0.000
  • Taper les commandes suivantes pour ralentir la tête dans les coins, ce qui va accentuer le problème pour mieux voir les effets:
SET_VELOCITY_LIMIT SQUARE_CORNER_VELOCITY=1
ACCEL=500
SET_PRESSURE_ADVANCE ADVANCE_LOOKAHEAD_TIME=0

 

 

 

 

 
Modifié (le) par Nibb31
  • Merci ! 3
Lien vers le commentaire
Partager sur d’autres sites

Salut 

 je suis entrain de suivre ton tuto pour installer klipper sur mon Anet A8 et je suis bloqué à l'etape du flash ligne :

 

make flash FLASH_DEVICE=<port>

 

j'ai bien remplacé <port> par  /dev/ttyUSB0 (port de connection donné dans octoprint) mais j'ai le message :  avrdude: stk500v2_ReceiveMessage(): timeout 

 


 

capt.png

Modifié (le) par Sol invictus
Lien vers le commentaire
Partager sur d’autres sites

il y a 25 minutes, Nibb31 a dit :

Bon ben je donne ma langue au chat.

Merci!  la solution à été trouver par Boris sur le groupe FB  il faut donc remplacer la ligne :

make flash FLASH_DEVICE=<port>

part la ligne :

avrdude -p atmega1284p -c arduino -b 57600 -P /dev/ttyUSB0 -U out/klipper.elf.hex

 

et la c'est good 

capt 2.png

capt 2.png

Lien vers le commentaire
Partager sur d’autres sites

@Nibb31 merci, effectivement super tuto, comme quoi c'est plus compréhensible en français ;)

dans les semaine à venir je vais voir pour adapter ça à une MKS SBASE 32bits... 

Modifié (le) par pascal_lb
Lien vers le commentaire
Partager sur d’autres sites

D'après la doc de Klipper, une carte 8 bits permet "175K steps par seconde" et sur des microcontroleurs 32-bits ont doit pouvoir monter à "500K steps par seconde". Mais je ne sais pas comment ça se traduit en vitesse d'impression (mm/s) dans la vie réelle, mais à 100 steps/mm, ça voudrait dire qu'on pourrait atteindre des vitesses théoriques de 1750 mm/s avec une carte 8 bits !!!

Je pense que dans la vie réelle, tu vas te heurter aux problèmes mécaniques (résistance, inertie, débit de la buse, ventilation...) bien avant d'atteindre ces limites. Du coup, j'aurais tendance à penser qu'il n'y aura pas trop de différence pour Klipper entre une carte 8-bits et une 32-bits. Donc le gain de passer à Klipper pour une carte 32-bits ne serait pas énorme en terme de performance. Ce serait intéressant d'essayer.

Par contre, il y a le gain indéniable en terme de facilité d'utilisation. Il y a peut-être aussi un gain sur la précision des algorithmes et le bruit, mais je ne connais pas assez les firmwares Smoothieboard ou Marlin 2.0 pour le dire.

Modifié (le) par Nibb31
Corrigé les steps/sec !
Lien vers le commentaire
Partager sur d’autres sites

Il y a 7 heures, Nibb31 a dit :

Il y a peut-être aussi un gain sur la précision des algorithmes

c'est surtout pour ça que je suis intéressé, car pour la vitesse... si la qualité suit oui sinon ça n'a pas d'intérêt...

 

Il y a 9 heures, miserovitch a dit :

je suis intéressé pour la MKS Sbase.

ok mais c'est pas pour tout de suite, mais c'est dans les projets

Lien vers le commentaire
Partager sur d’autres sites

Hello,

très intéressant ce tuto

Il y a 8 heures, Nibb31 a dit :

une carte 8 bits permet "175 steps par seconde" et sur des microcontroleurs 32-bits ont doit pouvoir monter à "500 steps par seconde"

il doit manquer quelques zéros, sinon la vitesse en mm/s est ridiculement basse !

Il y a 8 heures, Nibb31 a dit :

mais à 100 steps/mm, ça voudrait dire qu'on pourrait atteindre des vitesses théoriques de 17500 mm/s avec une carte 8 bits !!!

je ne comprends pas ce calcul et ce  résultat.

Modifié (le) par trotro
Lien vers le commentaire
Partager sur d’autres sites

Tu as raison, je m'ai complètement gourré ! Déjà, c'est 175K steps/seconde. Du coup, si on a 100 steps/mm, ça ferait au maxi 175000/100 = 1750 mm/s.

J'ai bon ?

Il y a des benchmarks selon les cartes ici: https://github.com/KevinOConnor/klipper/blob/master/docs/Features.md

C'est sans tenir compte de l'accélération et la distance. Dans tous les cas, déjà avec une carte 8 bits, on est bien au delà de ce que la mécanique peut encaisser et que l'extrudeur peut envoyer !

Modifié (le) par Nibb31
  • +1 1
Lien vers le commentaire
Partager sur d’autres sites

Je confirme le calcul de @Nibb31

Plus que le 8bit c'est surtout la fréquence qui va influencer la vitesse. Les RAMPS, MKS GEN, etc. sont en 16MHz. Effectivement d'après la doc Klipper ces cartes peuvent aller à 150kstep/s sur un seul stepper ou 100kstep/s avec 3 steppers. Sur une config avec 3 TMC2208 à 16ustep réels, des moteurs 1.8°, des poulies 20T pour courroies GT2, bref du classique, on obtient 1250mm/sec max théorique (=100x10^3 * 40 / (16*200)). Rien qu'à voir les tests à 450mm/sec, on sait qu'on ira pas beaucoup plus loin.

Modifié (le) par Tircown
Lien vers le commentaire
Partager sur d’autres sites

Notez qu'il y a aussi une histoire de bande passante USB, limité à 250000bps sur la plupart des cartes 8 bits (je ne sais pas ce qu'il en est pour les cartes 32 bits).

Le plugin OctoKlipper permet d'afficher des graphs de performance avec CPU, la bande passante, le buffer, etc...

Modifié (le) par Nibb31
Lien vers le commentaire
Partager sur d’autres sites

En réalité ce n'est pas l'USB qui est limitant, mais l'UART qui est derrière. Si ma mémoire est bonne, la valeur "standard" maximum est de 115200bps. Parfois le hardware permet de monter autour de 1Mbps, mais alors survient généralement deux autres soucis :

  • La fréquence du microcontrôleur qui ne permet pas toujours de tomber sur les multiples commun avec le PC (ne pas oublier que c'est une liaison asynchrone, donc sans horloge commune), c'est souvent spécifié en % d'erreur dans les datasheet.
  • Plus on va vite, plus le CPU est chargé, car il doit traiter l'envoi et la réception des messages dans des temps plus court pour ne rien rater. Les micro 32bits on généralement des capacités hardware plus importante, notamment des DMA plus évoluées qui permettent de soulager le CPU.

D'une manière générale, ce protocole à déjà atteint ses limites sur nos machines quand des arcs sont slicés en segments très courts. C'est très bien pour piloter ou monitorer la machine avec un RPi, mais plus très adapté à l'envoi des G-Code.

Les cartes SD sont plus efficaces car c'est du SPI (donc synchrone) et en générale sur un micro 8bits ça tourne à 8-10MBps. Les micro 32bits eux peuvent souvent exploiter le protocole natif des cartes SD et là les débits s'envolent.

Sinon il reste aussi l'USB natif, mais personne ne s'y est penché encore. 🙂

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...