Ce site contient essentiellement des notes de travail. Le contenu est en constante évolution, et loin d'être achevé. (+ d'infos)
La plupart des documentations informatiques sont orientées Debian / Ubuntu.

Modélisme/Imprimantes 3D/Hardware/Anet A6/Firmware

De Ordinoscope.net
Sauter à la navigation Sauter à la recherche

Introduction

Le contrôleur fonctionne plutôt bien d'origine. Il y a toutefois quelques remarques à signaler:

  • le firmware n'a jamais été mis à jour
  • ce contrôleur ne peut pas supporter l'autolevel, car au final il n'a pas assez de mémoire (l'écran graphique est gourmand, contrairement à celui de la A8 qui est un 4x20)

Pour le simple besoin d'imprimer, contrairement à ma Wanhao qui avait des défauts d'impression dans les dernières lignes, ce contrôleur ne nécessite pas de mise à jour pour imprimer correctement. Toutefois, les mises à jour du firmware Marlin apportent quelques avantage à prendre en considération:

  • des sécurités sur les éléments de chauffe - lorsqu'un capteur de température n'est plus placé correctement (ex. sorti de son trou dans le bloc de chauffe), l'élément peut chauffer au point de fondre et déclencher un incendie. Ce type de comportement est détecté par le firmware et l'impression interrompue
  • l'auto-levelling - soit manuel, soit avec un capteur inductif ou un BL-Touch - à noter que cette imprimante est très stable, et une fois le plateau réglé, on peut imprimer des dizaines de fois sans plus rien toucher - certaines imprimantes, même avec l'auto-levelling, ne sont pas aussi stables

Skynet3D

Si vous chercher sur internet des références pour un firmware alternatif aux l'imprimantes ANET, vous trouverez forcément le nom de Skynet3D. Autrefois, Skynet3D avait modifié le firmware Marlin pour l'adapter au contrôleur ANET 1.0. Mais depuis 2017 les modifications de Skynet3D ont été importées dans Marlin. La dernière mise à jour de Skynet3D date de janvier 2017.

USBasp

Certaines opérations ci-après nécessitent un USBasp, ou équivalent. Vous en trouverez sur AliExpress [1][2] ou eBay [3], mais faites attention de prendre une version qui ait un jumper 3.3V / 5V, et de prendre en plus un réducteur 10pin ver 6pin.

exemple [4]

Voici comment l'utiliser:

  • désactiver l'alimentation POWER avant de brancher l'USBasp - si POWER + USBasp alimentent simultanément, vous allez faire péter le régulateur de tension vers la borne POWER
  • connecter l'USBasp avec le connecteur 6-pin, dans le logement 10-pin vers l'USB - attention au sens, il n'y a pas de détrompeur
ne jamais alimenter POWER lors du branchement de l'USBasp
observez le texte sur le réducteur 10-6 pins pour le brancher dans le bon sens

Flasher le firmware d'origine

Les lignes de commande ci-dessous sont pour Linux. Modifier le port (-P) par celui de votre machine, et adaptez la ligne de commande au besoin.

backup du firmware courant

avrdude -v -patmega1284p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:r:A6-firmware.hex:i

flasher le firmware d'origine

avrdude -v -patmega1284p -carduino -P/dev/ttyUSB0 -b57600 -D -Uflash:w:A6-FirmwareUpdate.hex:i 

Compiler un firmware custom

Marlin est distribué comme code source, avec des settings pour les imprimantes ANET. Pour un firmware de base, aucun problème. Il peut se flasher depuis l'IDE d'Arduino ou Platformio.

Le problème apparaît lorsqu'on active l'auto-levelling. Le firmware est trop gros d'env. 2k. A cela, 2 solutions:

  • désactiver le support de la carte SD (~ 18k) - convient pour ceux qui utilisent OctoPrint
  • utiliser le bootloader Optiboot (-3k) - mais nécessite de flasher avec un USBasp (flasher en mode sériel ne fonctionnera plus) [5]

Pour créer un firmware « custom », il faudra le configurer et le compiler soi-même.

Prérequis

Définition du board pour l'IDE Arduino

  • télécharger le projet https://github.com/SkyNet3D/anet-board
  • le dézipper dans ~/Arduino/hardware (créer le répertoire hardware au besoin)
    • Linux: ~ = home (ex. /home/username)
    • Windows / Mac = Mes Documents
  • redémarrer l'IDE

Marlin - code source

  • télécharger le code source depuis http://marlinfw.org/meta/download/
  • dézipper le fichier quelque part
  • aller dans Marlin/example_configurations, puis dans le répertoire correspondant à votre imprimante
  • copier les 2 fichiers de configuration et écrases ceux dans le répertoire Marlin

Configurer le firmware

  • ouvrir le fichier Marlin/Marlin.ino avec l'IDE Arduino
  • aller dans l'onglet Configuration.h et modifier les paramètres désirés

La configuration de base de l'imprimante a déjà été faite si vous avez bien copié les 2 fichiers de configuration.

Nozzle park (G27 [6])

Permet de définir une position de parcage (ex. détection de filament), ou à l'appel d'un G27 [6]

#define NOZZLE_PARK_FEATURE

#if ENABLED(NOZZLE_PARK_FEATURE)
// Specify a park position as { X, Y, Z }
#define NOZZLE_PARK_POINT { (X_MIN_POS + 10), (Y_MAX_POS - 10), 20 }
#define NOZZLE_PARK_XY_FEEDRATE 100   // X and Y axes feedrate in mm/s (also used for delta printers Z axis)
#define NOZZLE_PARK_Z_FEEDRATE 5      // Z axis feedrate in mm/s (not used for delta printers)
#endif

Nozzle clean (G12 [7])

#define NOZZLE_CLEAN_FEATURE

LCD language

#define LCD_LANGUAGE en

SD CARD

Le support pour la carte SD représente ~18 kB du firmware. Sur 128 kB, ce n'est pas négligeable. Si vous ne vous servez pas de la carte SD, la désactivation de son support vous permettra d'ajouter toutes les autres fonctionnalités, sans vous soucier de la taille du firmware.

#define SDSUPPORT

S CURVE

#define S_CURVE_ACCELERATION

LCD_SET_PROGRESS_MANUALLY (M73) - Configuration_adv.h

Cette option active la commande M73 [8], permettant de régler la progression manuellement.

Optiboot

Optiboot est un bootloader pour Arduino, permettant de gagner env. 3k, c'est à dire juste ce qui manque pour flasher un firmware avec le support d'auto-levelling.

Flasher le firmware avec le bootloader optiboot ne peut se faire qu'en USBasp. Procédure:

  • Sélectionner: Tools / Board / ANET V1.0 (Optiboot)
  • Sélectionner: Tools / Programmer/ USBasp
  • Flash le firmware avec le bootloader: Sketch / Upload using programmer

Unbrick

Que ce soit en commandant un nouveau contrôleur ANET (et ça m'est arrivé) ou en essayant de flasher son propre firmware, il se peut que le contrôleur ne démarrer plus.

Plusieurs méthodes sont possible dans ce cas:

  • essayer de reflasher le firmware - possible en USB, sauf pour un firmware optiboot
  • reflasher un firmware optiboot - en USBasp uniquement
  • reflasher le bootloader Arduino - en USBasp uniquement
  • réinstaller le firmware d'origine - en USBasp uniquement si le bootloader est corrompu, ou optiboot

Flasher le bootloader Arduino

Démarrer l'IDE Arduino, puis

  • Sélectionner Tools / Programmer / USBasp
  • Uploader le bootloader: Tools / Burn Bootloader

Références