Aller au contenu

Messages recommandés

Posté(e) (modifié)

Bonjour à tous,

Nouveau sur le forum, j'ai parcouru avec intérêt ces derniers mois divers thread qui m'ont pas mal dépanné lorsque j'ai eu des soucis avec ma D12 230, et j'aimerais à mon tour apporter ma pierre à l'édifice 🙂

Ayant rencontré un souci avec le firmware officiel de Wanhao suite à changement de carte mère en panne -  les axes devenaient inversés - je me suis rendu compte que le problème était simple à solutionner en recompilant Marlin soi-même - le support de Wanhao Europe ne semblant plus savoir le faire.

Ainsi je vous propose un Firmware Marlin pour la D12, basé sur le fork de NeoprodFX.

Wanhao Community Firmware Home Screen

Fonctionnalités

  • Passage en TFT_COLOR_UI pour avoir plus de fonctionnalités
  • Changement des codes couleur de l'UI pour plus de clarté et de cohérence avec le noir/orange de la D12
  • Support des cartes mères MKS v1.2, 1.3 et 3.0 (je n'ai testé qu'en 1.2)
  • Support des D12-230, 300, 500 (j'ai testé avec la 230)
  • Support du 3D touch avec amélioration de la fiabilité sur la procédure d'autoleveling
  • Support du Direct Drive (à tester)
  • Support du Dual Extrudeur (à tester)
  • Support de la configuration full TMC2209
  • Menu Maintenance : Autoleveling, load/unload filament
  • Exemples de gcode Start/End pour utiliser avec le slicer

La plupart de ces fonctionnalités sont là grâce au travail des diverses personnes qui sont passées par là avant moi. Je n'ai eu que peu de changements à faire pour que ma D12 soit de nouveau au top de sa forme 😉

TODO list

  • Activer et configurer le changement de filament en cours d'impression (M600)

Problèmes connus

  • Pas de gestion du Wi-Fi en mode TFT_COLOR_UI

Téléchargement et code source

Le firmware est disponible sur ce lien GitHub (en anglais) :

N'oubliez pas que vous installez le firmware sous votre propre responsabilité. Bien qu'il soit normalement aisé de revenir au firmware de base en le téléchargeant sur le site officiel, ne vous lancez là-dedans que si vous êtes à l'aise avec ça.

Pour le moment, à moins que vous ayez exactement la même configuration que moi (D12 230 / MKS v1.2 / 3D Touch), il vous faudra configurer et compiler le firmware en suivant les instructions présentes sur le dépôt. Moi aussi ça m'avait fait peur mais c'est plus simple que ça en a l'air, je vous assure !

L'objectif de ce dépôt communautaire est de permettre, si le firmware vous est utile, de l'améliorer à votre tour et d'y proposer des changements pour que tout le monde en profite, plutôt que de recommencer chacun de son côté. Par exemple, si vous compilez le firmware pour une configuration précise et que ça marche bien chez vous, n'hésitez pas à partager l'image à flasher en précisant votre configuration pour que je l'ajoute au dépôt 🙂

Remerciements

Je tiens à remercier les personnes suivantes dont les travaux m'ont beaucoup servi :

Modifié (le) par ORelio
  • J'aime 1
  • 3 weeks later...
Posté(e) (modifié)

Compiler le firmware

Mise en place de l'environnement

Testé sous Windows 10 sur la base de ce tutoriel rédigé par fran6p

  1. Installer Git for Windows. Dans la plupart des cas c'est le « 64-bit Git for Windows Setup » qu'il vous faudra. Les paramètres par défaut proposés pendant l'installation sont OK.
    • Si vous modifiez les paramètres pendant l'installation, assurez-vous de conserver Git dans le PATH : « Git from the command line and also 3rd-party software ».
  2. Installer Python. Assurez-vous de cocher la case « add python.exe to PATH » pendant l'installation
  3. Installer Visual Studio Code. Les paramètres par défaut sont OK. Lancez Visual Studio Code après l'installation
  4. Installer Auto Build Marlin dans Visual Studio Code
    • Utiliser le raccourci Ctrl+Shift+X et taper « Auto Build Marlin » dans le champ de recherche, puis cliquer sur « Install ». Attendre que l'installation se termine avant de passer à la suite.
  5. Installer PlatformIO IDE dans Visual Studio Code
    • Utiliser le raccourci Ctrl+Shift+X et taper « PlatformIO IDE » dans le champ de recherche, puis assurez-vous qu'il est déjà installé. Auto Build Marlin devrait l'avoir comme dépendance, donc Visual Studio Code devrait déjà l'avoir installé tout seul.
  6. Fermer Visual Studio Code pour s'assurer qu'il finisse d'installer les modules complémentaires

Ouvrir le projet

Il y a des étapes de configuration à faire lorsque vous ouvrez le projet pour la première fois :

  1. Cloner le dépôt (ou le télécharger en fichier zip)
    • Placer le dépôt dans un chemin simple comme par exemple « C:\MarlinFirmware » pour éviter les soucis avec les longs chemins d'accès, les espaces ou caractères spéciaux dans le chemin d'accès.
  2. Ouvrir le dossier du projet dans Visual Studio Code
    • Pour cela, utilisez le raccourci clavier Ctrl+K (rien ne se passe) puis le raccourci clavier Ctrl+O (invite à choisir un dossier). Accédez au dossier et cliquez sur Sélectionner.
  3. Visual Studio Code demande de faire confiance au dossier du projet. Ceci est nécessaire pour compiler le projet.
  4. Consultez la barre d'état de Visual Studio Code : les dépendances devraient être téléchargées et installées en arrière-plan. Attendez que ce processus soit terminé, cela peut prendre un certain temps.
    • Exemple : "« PlatformIO Installer: Installing PlatformIO Code ».
    • PlatformIO peut vous demander de redémarrer Visual Studio Code. Si tel est le cas, fermez-le et relancez-le pour continuer.
  5. Une fois que Visual Studio Code a terminé toutes les tâches, vous pouvez passer à la configuration du firmware.

Configuration du firmware

Une fois le projet ouvert dans Visual Studio Code, on va pouvoir le configurer pour votre imprimante :

1. Ouvrez platformio.ini et décommentez la bonne version de carte mère en enlevant le # devant :

default_envs = mks_robin_nano35 # For MKS Robin Nano V1.2
#default_envs = mks_robin_nano_v1_3_f4 # For MKS Robin Nano V1.3
#default_envs = mks_robin_nano_v3_usb_flash_drive # For MKS Robin Nano V3

Il doit y avoir exactement une ligne non commentée, assurez-vous de commenter les autres.

2. Dans le dossier Marlin ouvrez configuration.h, choisissez le modèle d'imprimante :

#define D12_230_v1_2
//#define D12_230_v1_3
//#define D12_500_Pro
//#define D12_300_Pro

Ajustez le modèle d'imprimante en supprimant les deux slash // en début de ligne.
Il doit y avoir exactement un modèle d'imprimante non commenté, assurez-vous de commenter les autres.

3. Toujours dans Marlin > configuration.h, activez ou désactiver les réglages de votre choix :

// Activez ceci si votre imprimante a un 3D Touch
#define BL_TOUCH

// Activez ceci si votre imprimante a un extrudeur Direct Drive
//#define Direct_Drive

// Activez ceci si vous avez remplacé les drivers A4988 par des TMC2209
//#define D12_230_FULL_TMC

// À activer pour les imprimantes capables de gérer deux extrudeurs
#define Dual_Extruder

Remarque : l'option Dual_Extruder peut être activée même si l'imprimante n'a pour le moment qu'un seul extrudeur installé.
Par contre, l
es autres paramètres doivent correspondre exactement à la configuration de votre imprimante.

Une fois le firmware configuré, on peut passer à la compilation à proprement parler.

Compilation

Générons à présent votre propre firmware :
  • Cliquez sur la petite coche ✔ dans la barre d'état ou utiliser le raccourci clavier Ctrl+Alt+B
  • Attendre que la création soit terminée. Cela peut prendre un certain temps.
  • Accédez dans le <dossier du projet>\.pio\build pour trouver votre firmware
    • Pour MKS Robin Nano V1.2, cela donne : <dossier du projet>\.pio\build\mks_robin_nano35\Robin_nano35.bin

Vous avez maintenant un fichier bin prêt à installer sur votre imprimante !

Installation

L'installation du firmware est assez simple :

  • Prendre une carte micro SD vide
  • Placer le fichier du firmware sur la carte SD
  • Insérer la carte SD dans l'imprimante 3D
  • Allumer l'imprimante 3D
  • Le firmware s'installe tout seul

Remarque : sur mon imprimante, j'ai parfois rencontré des blocages lors de l'installation du firmware. J'ai dû éteindre l'imprimante, réinsérer la carte micro SD dans l'ordinateur, supprimer tous les fichiers restants, recopier le fichier du firmware et réessayer de l'installer, ça a fini par passer. C'est peut-être dû à la faible qualité de la carte mémoire fournie avec l'imprimante.

_________________________________________________________________________________________________________________________________

Mode d'emploi du firmware

Calibration de l'écran tactile

Au premier démarrage, un petit symbole ➕ peut s'afficher à l'écran. Il sert pour le calibrage de l'écran tactile. Touchez le symbole, il se déplacera vers un autre endroit de l'écran. Répétez l'opération jusqu'à ce que l'étalonnage soit terminé.

Nivellement automatique

Si vous avez le 3D Touch, allumez l'imprimante, allez dans ⚙ > Maintenance > Autoleveling et lancez la procédure. Cela peut prendre un certain temps car cette procédure, plus lente, tient compte des astuces de fiabilisation du 3D touch partagées par Schyzo. Heureusement, il n'est pas nécessaire de refaire le nivellement automatique une fois par impression. Vous n'avez besoin de le refaire que si vous déplacez l'imprimante, ne l'utilisez pas pendant un certain temps, bref, seulement si le réglage du plateau est susceptible d'avoir changé.

Une fois la mise à niveau automatique terminée, faire un « home » de l'axe Z à l'aide des commandes de l'écran d'accueil et aller dans ⚙ > Configuration > Probe Z Offset. Ajustez le Z Offset jusqu'à ce que la tête atteigne la hauteur souhaitée (elle doit légèrement rayer une feuille de papier). Il n'est nécessaire de réajuster le Z Offset que si vous démontez le 3D Touch de la tête d'impression, ou enlevez la buse.

Chargement/Déchargement du filament

Vous pouvez utiliser les macros Filament Load / Filament Unload proposées dans ⚙ > Maintenance, ou bien régler manuellement la température de la buse vers 200°C puis actionner l'extrudeur via les commandes de l'écran d'accueil.

Gcode de début/fin d'impression

Je vous conseille d'utiliser les codes G de début/fin suivants dans votre slicer. N'hésitez pas à les personnaliser.

Gcode de début d'impression :
 
; === Start Gcode ===
M107 ; stop fan
M104 S200 ; Set nozzle temperature to 200°C and proceed
M190 S60 ; Wait for bed temperature to reach 60°C
M109 S200 ; Wait for nozzle temperature to reach 200°C
G28 ; home all axes
M420 S1 Z10 ; Retrieve previous autoleveling settings
M117 ; Purge extruder
G92 E0 ; Reset extruder
G1 Z1.0 F300 ; Move Z up a little to prevent scratching of surface
G1 X2 Y20 F3000.0 ; Move X/Y to start-line position
G1 Z0.3 F300.0 ; Move Z down to start-line height
G1 X2 Y200.0 Z0.3 F1500.0 E15 ; Draw 1st line
G1 X2 Y200.0 Z0.4 F3000.0 ; Move to side a little
G1 X2 Y20 Z0.4 F1500.0 E30 ; Draw 2nd line
G92 E0 ; Reset extruder
G1 Z1.0 F300 ; Move Z up little to prevent scratching of surface
; === End Start Gcode ===

Remarque : l'instruction « M420 S1 Z10 ; Retrieve previous autoleveling settings » ne devrait avoir aucun effet sur les imprimantes sans 3D Touch, mais vous pouvez le supprimer si vous n'avez pas de 3D Touch.

Gcode de fin d'impression :

; === End Gcode ===
M104 S0 ; turn off temperature
G28 X0  ; home X axis
M84     ; disable motors
; Play some Beeps at end of print
M300 P1000
G4 P2000
M300 P1000
G4 P2000
M300 P1000
; === End of End Gcode ===

Remarque : ce Gcode émet un signal sonore pour prévenir de la fin d'impression. Supprimez les instructions associées pour le désactiver.

Modifié (le) par ORelio
  • 5 months later...
Posté(e)

Bonjour, je trouve ce firmware super bien. Néanmoins je n'arrive pas à inverser la direction des moteurs Z et E.

J'ai exactement la même configuration que toi : 3D TOUCH - CM 1.2 - Direct Drive - Drivers TMC 2209 en X Y et E, mais pas en Z.

Peux tu m'aider à paramétrer ce petit point de détails stp ?

Merci d'avance.

Joffrey

Posté(e)

Bonjour Joffrey,

Concernant la configuration de mon imprimante, j'avais dans un premier temps essayé de la passer en full TMC2209, mais dans cette configuration mon extrudeur manquait de couple, il avait du mal à faire tourner la bobine de filament, je suis donc repassé comme d'origine avec X et Y en TMC2209, E0 et Z en A4988. J'ai bien le 3D Touch et une carte mère en version 1.2, mais je ne possède pas le Direct Drive. L'option était déjà présente dans le code de NeoprodFX donc je l'ai laissée à disposition sans pouvoir la tester. Pense à l'activer avant de compiler le firmware. Une fois que tu auras réglé tes soucis de sens des axes, ce sera sympa si tu peux me confirmer que Direct Drive fonctionne de ton côté.

Il est important de commencer par configurer le bon type de driver dans le firmware, car les axes peuvent se retrouver inversés simplement en ne configurant pas le bon type de driver. Puis, si les drivers sont bien configurés mais que les axes sont inversés, alors seulement modifier l'option pour inverser le sens d'un moteur.

Je te conseille d'activer l'option Direct Drive et configurer le type de tes drivers puis recompiler le firmware en suivant les instructions que j'ai mis plus haut, et enfin si cela ne suffit pas, inverser le sens des axes qui posent problème et compiler à nouveau. Pour ces deux manips, voici comment faire :

Pour configurer les types de drivers

Regarde dans le fichier configuration.h aux alentours des lignes ~950-980 :

// vers la ligne 60

//#define D12_230_FULL_TMC

// vers la ligne 950

#define X_DRIVER_TYPE  TMC2209_STANDALONE
#define Y_DRIVER_TYPE  TMC2209_STANDALONE

// vers la ligne 980

#if ENABLED(D12_230_v1_2)
  #if ENABLED(D12_230_FULL_TMC)
    #define Z_DRIVER_TYPE  TMC2209_STANDALONE
    #define E0_DRIVER_TYPE TMC2209_STANDALONE
    #define E1_DRIVER_TYPE TMC2209_STANDALONE
  #else
    #define Z_DRIVER_TYPE  A4988
    #define E0_DRIVER_TYPE A4988
    #define E1_DRIVER_TYPE A4988
  #endif
#endif

Dans tous les cas, X et Y sont en TMC2209, puis, si l'option D12_230_FULL_TMC est activée, alors Z et les extrudeurs sont aussi en TMC2209, sinon ils sont en A4988. Si tu as une configuration différente, je te conseille de ne pas activer l'option D12_230_FULL_TMC et d'aller directement éditer les drivers un par un.

Par exemple pour des TMC2209 en X Y et E, mais pas en Z, cela donnerait :

// vers la ligne 60

// ici laisser l'option désactivée
//#define D12_230_FULL_TMC

// vers la ligne 950

// ici on garde TMC2209 vu que X et Y sont en TMC2209
#define X_DRIVER_TYPE  TMC2209_STANDALONE
#define Y_DRIVER_TYPE  TMC2209_STANDALONE

// vers la ligne 980

#if ENABLED(D12_230_v1_2)
  #if ENABLED(D12_230_FULL_TMC) // L'option D12_230_FULL_TMC étant désactivée, pas besoin de toucher à cette partie
    #define Z_DRIVER_TYPE  TMC2209_STANDALONE
    #define E0_DRIVER_TYPE TMC2209_STANDALONE
    #define E1_DRIVER_TYPE TMC2209_STANDALONE
  #else // Ici on configure Z et les extrudeurs pour avoir TMC2209 pour les extrudeurs et A4988 pour l'axe Z :
    #define Z_DRIVER_TYPE  A4988
    #define E0_DRIVER_TYPE TMC2209_STANDALONE
    #define E1_DRIVER_TYPE TMC2209_STANDALONE
  #endif
#endif

À partir de là, plus qu'à recompiler le firmware et tester si cela fonctionne.

Pour inverser le sens d'un moteur

Regarde dans le fichier configuration.h aux alentours des lignes ~1430-1470 :

// vers la ligne 60

//#define D12_230_FULL_TMC

// vers la ligne 1430

#define INVERT_X_DIR false
#define INVERT_Y_DIR true

#if ENABLED(D12_230_v1_2)
  #if ENABLED(D12_230_FULL_TMC)
    #define INVERT_Z_DIR false
    #define INVERT_E0_DIR false
    #define INVERT_E1_DIR false
  #else
    #define INVERT_Z_DIR true
    #define INVERT_E0_DIR true
    #define INVERT_E1_DIR true
  #endif
#endif

On retrouve une syntaxe similaire à la configuration du type de driver. L'option D12_230_FULL_TMC étant désactivée, tu peux inverser l'axe de ton choix en remplaçant une valeur "true" en "false" et vice-versa, et ensuite recompiler :

// vers la ligne 60

// ici laisser l'option désactivée
//#define D12_230_FULL_TMC

// vers la ligne 1430

#define INVERT_X_DIR false // <= Ici mettre true pour inverser l'axe X
#define INVERT_Y_DIR true // <= Ici mettre false pour inverser l'axe Y

#if ENABLED(D12_230_v1_2)
  #if ENABLED(D12_230_FULL_TMC)
    #define INVERT_Z_DIR false
    #define INVERT_E0_DIR false
    #define INVERT_E1_DIR false
  #else
    #define INVERT_Z_DIR true // <= Ici mettre false pour inverser l'axe Z
    #define INVERT_E0_DIR true // <= Ici mettre false pour inverser l'extrudeur principal
    #define INVERT_E1_DIR true // <= Ici mettre false pour inverser le second extrudeur (si tu en as un)
  #endif
#endif

À partir de là, plus qu'à recompiler le firmware et tester si cela fonctionne.

Voilà, bon courage pour faire les ajustements pour ton imprimante, une fois qu'on a pris le coup de main ça se fait rapidement 😉

  • 3 weeks later...
Posté(e)

Hello !
Ce firmware semble super, mais je reste bloqué sur la configuration de l'écran tactile.
Il me redemande "Top Left" (alors que je viens de finir avec la boucle des Top et Bottom) mais rien ne se passe.
Pouvez-vous m'aider ?
Merci à vous

Posté(e)

Bonjour @Reredede,

C'est étrange, le mien m'a demandé d'appuyer à plein d'endroits à la première installation, y compris plusieurs fois les mêmes (au début n'ayant pas compris je n'avais pas appuyé sur la croix), mais ça avait fini par passer. La configuration semble stockée à côté du firmware car je n'ai pas besoin de recommencer à chaque fois que je met à jour le firmware. N'ayant pas du tout touché à cette partie du code source, je ne suis pas sûr de la cause de ton problème 🤔

  • 3 weeks later...
Posté(e) (modifié)

@Reredede En repensant à ton problème, je viens d'avoir une idée. Peut-être qu'un message d'erreur intéressant serait visible dans la sortie console de ton imprimante. Voici un tutoriel improvisé pour faire cela :

Accéder à la sortie console de son imprimante Wanhao

Câble USB

Pour relier l'imprimante Wanhao au PC, il faut un câble USB A vers USB B. On trouve souvent un câble de ce type fourni avec les imprimantes jet d'encre ou laser, et il me semble qu'il y en avait un fourni avec l'imprimante 3D Wanhao. Il ressemble à ceci :

usb-imprimante.jpg.a34c1fc03ad0864427524130f85601d4.jpg

Logiciel

Il existe différents logiciels pour accéder à une liaison série comme par exemple PuTTY, mais je recommanderais plutôt Arduino IDE, car son outil "Serial Monitor" se reconnecte automatiquement au port série lorsqu'on éteint et rallume l'imprimante, pratique pour ne pas manquer les message au démarrage. De plus il est plutôt simple à utiliser même si sa fonction première est de développer des firmwares pour les microcontrôleurs.

Mode opératoire

1. Lancer Arduino IDE

2. Brancher l'imprimante Wanhao en USB sur le PC. Elle devrait apparaitre dans le menu déroulant comme ceci, cliquer dessus :

debug-serial-1.png.696470f816cbd55585a232e259f2f5d4.png

3. Arduino IDE demande de quel type de carte il s'agit, mais cela importe peu pour notre usage, choisir Arduino par exemple

debug-serial-2.png.f720c8bff44ecf9f4fb7d0a4517985c3.png

4. Activer l'outil Serial Monitor

debug-serial-3.png.68cb75db07f9be82f935509932d95c47.png

5. Régler le Baud Rate. Dans le cas du firmware de ce topic c'est 250000, et il me semble que sur le firmware officiel de Wanhao est à 115200 mais pas sûr.

debug-serial-4.png.ee8eb00178340eb808c7fc63a5d07850.png

6. Redémarrez l'imprimante. Vous devriez maintenant voir sa sortie console :

debug-serial-5.png.d2f969ce24f8aca7ca08e9e18921f217.png

Dans le cas où il n'y a que des caractères illisibles, il est probable que le Baud Rate soit incorrectement configuré. Le changer et réessayer.

@Reredede N'hésite pas à poster ta sortie console, peut-être que cela donnera une piste pour savoir ce qui se passe avec ton souci de calibration de l'écran tactile.

Modifié (le) par ORelio

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...