Aller au contenu

GO Print

Marlin 1.1.8 pour I3 Mega V2 avec écran origine [BETA ] (remixé de Murdock et DerHopp)


systemic

Messages recommandés

Hello

J'ai créé un firmware pour la mega v2 (pas d'ABL, dual Z et carte trigorilla 8bits) qui est un mélange du travail de Murdock avec son écran TFT32 MKS et du travail d'un certain Derhopp de thingiverse. Cette version permet de passer en 1.1.8 en gardant l'écran de base de l'imprimante.

Les sources sont disponibles sur github ici : https://github.com/systemik/Marlin

Pour l'installer, c'est comme d'habitude, avec arduino pour la compilation et ensuite on pousse le tout sur l'imprimante. Moi je fais le fichier .hex et je l'envoi avec Octoprint (via le plugin firmware).

Les valeurs dans le fichier de conf pour le tuning ou les pas de l'extrudeur sont normalement bonnes pour commencer. Si besoin, un petit M502 et M500 pour mettre l'EEPROM a jour.

Pour revenir en arrière, il suffit de remettre le fichier original de Anycubic (sur leur site web).

Différence par rapport au firmware officiel anycubic:

  • Pas de music
  • Pas de reprise après coupure de courant
  • Reste des tests a faire pour voir si tout est ok

Nouveauté autre que marlin :

DerHopp a fait un menu special dans la partie SD. Si vous aller dans le menu print, vous pouvez sélectionner “Special Menu” en haut et appuyer sur le bouton rond/fleche pour entrer dans le menu. Depuis la, vous avez deja quelques entrées de configuré (read eeprom, save eeprom, auto bed …). Ça compense le manque de customisation du lcd. Et c’est facile d’en rajouter au besoin comme allumage des leds par exemple.

 

Au besoin, voila les deux manipulations à faire (même si vous utilisée un autre imprimante ou autre marlin c'est pareil) :

PID Tuning:

On part à froid et on fait un : M303 E0 S200 C8

On note les valeurs trouvé à la fin du genre :

Recv: PID Autotune finished! Put the last Kp, Ki and Kd constants from below into Configuration.h
Recv: #define  DEFAULT_Kp 14.23
Recv: #define  DEFAULT_Ki 1.03
Recv: #define  DEFAULT_Kd 49.32

et on fait un : M301 P14.23 I1.03 D49.32 

et on sauve avec un M500

 

Extrudeur Steps:

On note la valeur actuelle des pas à la commande M503 et on regarde la valeur trouvé pour le M92 derrière le paramètre E (92.6 par defaut sur la i3)

Pour régler son extrudeur, on fait une marque sur le filament depuis l'extrudeur sur 15 cm par exemple. On remet le compteur d'extrusion à zero avec un G92 E0

Ensuite on chauffe la hotend et on lance la commande suivante pour faire avancer de 10 cm le filament : G1 E10 F 92

Ensuite on mesure combien de centimètre il reste entre la marque et l'extrudeur et on calcul la nouvelle valeur de pas : Ex : 9.1 cm sont pris au lieu de 10 donc la valeur sera 92.6*100/91 = 102 (ancienne valeur * 100 / nombre de cm pris). 

On envoie la nouvelle valeur dans l'imprimante :  M92 E102

On sauve les valeurs : M500

 

Merci pour le retour si y'en a qui veulent tester. J'ai déja pas mal printé avec et j'ai pas eu de soucis (autre que le ventilo de refroidissement un peu trop puissant). Au besoin je peux mettre le .hex dans le topic pour ceux qui veulent pas s'embéter à compiler.

Sinon, du coté des autre développeurs, un d'eux fait des modification de l'ecran anycubic. Video de démo de ce qu'il n'a pas encore partager avec le grand public : https://www.youtube.com/watch?v=zVJC_jGTYwQ

 

Systemic

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Ah ben ça bouge un peu ici ... car plus grand chose ne se passe sur le forum Anycubic....

Tu n'expliques pas en revanche la partie écran.... ou est le nouveau firmware de l'écran avec son menu : "special menu" et comment l'installes tu? je suppose avec le lecteur microsd incorporé sur le board de l'écran...?? de plus, comment customises tu de nouveaux boutons avec de nouvelles fonctions...?

Lien vers le commentaire
Partager sur d’autres sites

Désolé, c'est vrai que j'en ai pas dis beaucoup sur le menu.

 

Donc : Aucune modification du firmware de l'écran et aucun bouton nouveau visible. Tout se passe dans un ajout du code du firmware de la trigorilla qui prend en charge l'écran.

 

L'idée de "génie" du dévelopeur c'est d'utiliser l'écran de choix de fichier sur la SD pour s'en servir de menu supplémentaire. Il ajoute au sommet du nom des fichier une entrée qui ressemble à un répertoire et qui s'appelle "special menu". Quand on va dedans on trouve alors une liste d'action possible. Je mets de phots pour mieux expliquer.

 

Si on veux ajouter/modifier ces entrées, il faut éditer le firmware et le renvoyer sur la trigorilla. Tout se passe dans le fichier AnycubicTFT.cpp :

 

dans la partie AnycubicTFTClass::Ls() on ajoute les entrée dans le menu (4 par page) du style <Auto Tune Hotend PID> et ensuite dans la partie AnycubicTFTClass::HandleSpecialMenu() on défini quelle commande(s) va être lancée : M303 C8 S200.

En espérant que ce soit plus clair.

 

Systemic

IMG_20180225_113717.jpg

IMG_20180225_113725.jpg

Lien vers le commentaire
Partager sur d’autres sites

Hello !

Pas bête en effet d'utiliser un "faux print" pour faire des macro gcode. Par fois on cherche compliqué alors qu'il y a une bidouille simple.

Joli boulot pour le firmware. :)

Maintenant plus qu'a prier qu'il n'y aura pas trop de modifs "lourdes"  sur marlin. :)

Cela faciliterait les futures Maj.

Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...
  • 1 month later...

Pour ceux qui veulent, j'ai faut des petites modifications et une faq sur le GitHub. Testé par pas mal de personnes du forum anglais avec succès. 

En anglais : 

Difference compared to anycubic official firmware:

  • No start music
  • No recovery after power failure
  • Thermal runaway active
  • ABL linear active (Touch mi setup)
  • Hotend limitation at 250°. (can be too small for petg and ABS but good limit for V5 hotend)
  • Hotend fan can run at 12V (maybe put 85-90% instead of 100% for the fan otherwise it cool to much)
  • Special menu from Derhopp active. New entry in the menu to put hotend in maintenance position
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

  • 2 weeks later...

Bonsoir systemic

J'ai une I3 mega V2.

Je suis débutant sur la compilation du firmware. 

Pourrais tu m'aider,

1) J'ai essayer de dowloader le ZIP file sur ta page github.

2) j'ai ouvert le Marlin.ino dans Arduino 1.8.5 

3) j'ai sélectionné la carte MEGA2560 et le processeur ATmega2560.

4) j'essaye de compiler avec la touche valider en haut à droite et à 88% j'ai le message suivant  :

"Global variables use 7210 bytes (88%) of dynamic memory, leaving 982 bytes for local variables. Maximum is 8192 bytes.
Low memory available, stability problems may occur."

Pourrais tu me dire quelle procédure je ne fais pas correctement ?

De plus je vais installer des TMC2208, Est ce que ton firmware est compatible avec c'est driver ?

Merci d'avance pour ta réponse

Lien vers le commentaire
Partager sur d’autres sites

Le 12/04/2018 at 23:15, systemic a dit :

Pour ceux qui veulent, j'ai faut des petites modifications et une faq sur le GitHub. Testé par pas mal de personnes du forum anglais avec succès. 

En anglais : 

Difference compared to anycubic official firmware:

  • No start music
  • No recovery after power failure
  • Thermal runaway active
  • ABL linear active (Touch mi setup)
  • Hotend limitation at 250°. (can be too small for petg and ABS but good limit for V5 hotend)
  • Hotend fan can run at 12V (maybe put 85-90% instead of 100% for the fan otherwise it cool to much)
  • Special menu from Derhopp active. New entry in the menu to put hotend in maintenance position

Salut Systemic, tu as fais quoi comme modif par rapport au code de derhopp ? (https://github.com/derhopp/Marlin-with-Anycubic-i3-Mega-TFT)

car effectivement il y a une sacré différence entre les deux compilations

le tient : 
Le croquis utilise 134136 octets (52%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 7210 octets (88%) de mémoire dynamique, ce qui laisse 982 octets pour les variables locales. Le maximum est de 8192 octets.
La mémoire disponible faible, des problèmes de stabilité pourraient survenir.

celui de derhopp :
Le croquis utilise 122220 octets (48%) de l'espace de stockage de programmes. Le maximum est de 253952 octets.
Les variables globales utilisent 5404 octets (65%) de mémoire dynamique, ce qui laisse 2788 octets pour les variables locales. Le maximum est de 8192 octets.

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, nico21311 a dit :

De plus je vais installer des TMC2208, Est ce que ton firmware est compatible avec ces drivers ?

salut,

les tmc2208 fonctionnent sans modif du firmware, ou si tu ne veux pas inverser physiquement les câbles des moteurs, tu peux le faire dans le firmware mais les modifs s’arrêtent là.

effectivement il y a dans Configuration_adv.h une section tmc2208, mais seulement si tu connectes les tmc2208 à une pin libre pour les configurer via SERIE (softserial).
mais ça ne fonctionne pas correctement car softserial ne gère pas correctement une multi connexion sur plusieurs pins, donc pas d’intérêt pour le moment.

(par contre les tmc2130 qui se pilotent en SPI, fonctionnent correctement (mais toujours en débug sur marlin 1.x et 2.x).

la seule chose qui fonctionne c'est de relier tout les tmc2208 sur la même pin et utiliser la config dans marlin pour programmer le courant sur les drivers de façon logiciel, mais vu le boxon de câblage, de prog, de déclaration, juste pour ne pas avoir à régler vref à la main ... ça vaut pas le coup !

donc tu remplaces simplement les pilotes existant par les tmc2208, tu règles correctement le vref et tu inverses les câbles moteurs (ou tu fait l'inversion soft dans marlin).

pour info, Vref pour tmc2208 sur la méga c'est 1.06V.

  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Merci pour tes réponses.

 

Pour ce qui est de la compilation du firmware, si j'ai bien compris compris, le firmware est bien compilé, mais au vue de sa taille, il y a des risque d'instabilité ?

Pour finir sur les tmc2208, j ai vue 2 vidéo ou les personne réglaient le vref entre 0.85v et 0.89v sur la même machine, est ce trop bas?

Merci d'avance pour votre réponse 

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

Hello

 

Alors la difference pour la compilation vient surement du fait de l'activation de l'ABL et de ce que je suis en train de rajouter dedans : La possibilité de récupérer un print après une coupure de courant. Comme le firmware original mais avec le dernier code en date du marlin officiel dans la nouvelle banche . (basé sur la CR-10S) et mixé avec la détection de perte de courant avec le code de anycubic. J'ai réutilisé pas mal de commit de la branch debug du marlin officiel donc ça jour aussi sur la compilation car ils ajoutent des tonnes de features et checks dans les derniers temps.

Il n'y aura aucun problème d'instabilité et beaucoup de gens utilise ce firmware maintenant sur le forum Anglais. J'ai eu aucun retour d'instabilité.

Pour les TMC, J'ai des 2208 et j'ai mis un vref a 1.06 en suivant les excellentes explications de stef_ladefense sur d'autres posts (avec les vrais calculs basés sur les données constructeur).

Voila les différences par rapport a la version original :

  • Une FAQ est dispo sur le github :-)
  • Je répond au questions :-)
  • Thermal runaway active.
  • ABL linear active (Touch mi setup).
  • Hotend limitation at 260°. (can be too small for petg and ABS but good limit for V5 hotend).
  • Hotend fan can run at 12V (do not put them at 100%. 85 is enough).
  • Special menu from Derhopp active. -> New entry in the menu to put hotend in maintenance position. + New entry to preheat at 200/60


Et la nouveauté qui va donc être bonne à tester dans les prochains jours : La reprise après coupure de courant. En gros voila ce que j'ai fait :

L'activation se fait avec un G6 an début de print (à la place du G5 qui est une fonction qui était canibalisée par anycubic). Au moins la, c'est des Gcode spéciaux.

Ensuite, plusieurs cas: si on imprime depuis la SD ou depuis Octoprint en SD, alors on peut reprendre le print directement en utilisant la commande G8 (ou via le menu special aussi).

Si on imprime avec une autre méthode comme par exemple octoprint ou depuis un slicer, alors on ne peux pas reprendre le print directement mais on peut avoir la dernière position et les autres infos (X,Y,Z,Temperatures,FANS,Gcode en queue ...) grâce à la commande G7.


Exemple :
Activation avec G6 :

Recv : G6 POWER LOSS RECOVERY ACTIVATED

Detection de coupure de courant et sauvegarde des infos sur la SD (et pas sur l'eeprom comme le faisait anycubic)

Recv: POWER LOSS RECOVERY LAUNCHED
Recv: Saving job_recovery_info
Recv: valid_head:1 valid_foot:1
Recv: current_position: -5.00: 0.00: 5.00: 0.00
Recv: feedrate: 3.33
Recv: target_temperature: 22
Recv: fanSpeeds: 0
Recv: leveling: 0 fade: 0
Recv: target_temperature_bed: 22
Recv: cmd_queue_index_r: 1
Recv: commands_in_queue: 4
Recv: > M27
Recv: > G1 X150 F200
Recv: > G1 Y150 F200
Recv: > G1 X-150 F200
Recv: sd_filename: /TESTING.GCO
Recv: sdpos: 367
Recv: print_job_elapsed: 14000
Recv: Writing to file: bin

Reprise du print avec un G8:

Recv: G8 POWER LOSS RECOVERY FROM SD
Recv: Init job recovery info. Size: 568
Recv: echo:enqueueing "M420 S0"
Recv: echo:enqueueing "M190 S22"
Recv: echo:enqueueing "M109 S22"
Recv: valid_head:1 valid_foot:1
Recv: current_position: -5.00: 0.00: 5.00: 0.00
Recv: feedrate: 3.33
Recv: target_temperature: 22
Recv: fanSpeeds: 0
Recv: leveling: 0 fade: 0
Recv: target_temperature_bed: 22
Recv: cmd_queue_index_r: 1
Recv: commands_in_queue: 0
Recv: > M420 S0 Z0
Recv: > G92.0 Z0
Recv: > G1 Z2
Recv: > G28 X Y
Recv: > M420 S0 Z
Recv: > G92.0 Z7.000 E0.000
Recv: > M117 Continuing...
Recv: > G1 X150 F200
Recv: > G1 Y150 F200
Recv: > G1 X-150 F200
Recv: > M27
Recv: sd_filename: /TESTING.GCO
Recv: sdpos: 367
Recv: print_job_elapsed: 14000
Recv: echo:Now fresh file: /TESTING.GCO
Recv: File opened: TESTING.GCO Size: 944
Send: M27
Recv: File selected
Recv: ok
Recv: echo:enqueueing "G28 X Y"
Recv: echo:Bed Leveling Off
Recv: echo:Fade Height Off
Recv: TFT Serial Debug: Bed is heating... J08
Recv: TFT Serial Debug: Bed heating is done... J09
Recv: TFT Serial Debug: Nozzle is heating... J06
Recv: TFT Serial Debug: Nozzle heating is done... J07
...

  • Merci ! 1
Lien vers le commentaire
Partager sur d’autres sites

@systemic
j'ai regardé vite fait, il faudrait coller tout les messages qui sont transmis à l'écran en progmem, ça permettra de gagner de la place en vive et surtout ne pas corrompre la pile.

sinon superbe boulot

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

J'ai regarder pour faire du F() aussi mais j'ai pas encore pris le temps de faire le tour pour voir ou je peux l'appliquer. Sinon j'ai déjà désactivé deux trois fonctions qui servent pas et aussi les directives de debug.  A voir dans les prochaines versions :-)

Lien vers le commentaire
Partager sur d’autres sites

a creuser en tout cas F(), car à 52% de place en prog, il y a de quoi en coller dedans.

je rebrancherais bien l'écran anycubic rien que pour tester mais je pars pour une quinzaine, alors au retour

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

Pour ne pas mixer les genres, j'ai fait une nouvelle branche github pour le power resume et le dev et je laisse la branche "stable" en défaut.

Donc plus de problème de mémoire pour ceux qui prennent la version github directement.

Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

Un peu de teasing: demain je donnerai une version 1.1.8 avec le M600 qui marche depuis l'écran tft, ou en usb ou déjà intégré dans le gcode. 

Un peu plus tard je partagerai la dernière bugfix (quasi 1.1.9) avec M600 (encore mieux que le 1.1.8) et power resume. Ya quelques bugs intermittents sur la branche marlin officiel qui empêchent de donner ça à tout le monde (layer shift mystérieux chez certains). 

Lien vers le commentaire
Partager sur d’autres sites

Alors là comment as tu pu implanter le M600 sur la I3 ??? parles en @Murdock il n'a jamais réussi ... 

M600 Intégré dans le gcode la Mega l'ignore royalement... avec le M25 elle bug et plante.... (idem M0) j'ai tout essayé... Tu as Cura ou S3D ? si tu as S3d quel script insères tu pour pour faire réagir la Mega ??

Lien vers le commentaire
Partager sur d’autres sites

Alors voila la chose que je viens de poster sur le forum anglais facebook. Je traduis pas tout mais l'idée doit être assez simple. ça marche bien chez moi et j'attends des retours des personnes qui vont tester. Il a fallut pas mal d'essai pour faire fonctionner les différents cas mais c'est prometteur. Il faut commencer simple avec un cube par exemple et faire une pause et une reprise manuelle via l'écran ou l'usb par exemple. Les sources sont disponibles pour ceux qui veulent voir comment j'ai galéré, raccourci certains controles, et qui veulent mettre les valeurs à leur sauce. J'ai tester beaucoup de choses mais je ne garanti pas encore un résultat pour toutes les combinaisons de pause et gcode. (e.g. problème de M108 dans le emergency parser de marlin)

 

M600 implementation (1.1.8) - Aka V7-M600

Current parameters : Load/unload is configured to 500 (approximate length of the Bowden tube). Filament prime is configure to 50. This will create a bunch of filament on the back left corner before restarting print.

Please TEST with simple print (e.g. cube) to check it is working as expecting and as you expect. You can find source code in the specific branch located here : https://github.com/systemik/Marlin/tree/1.1.x-m600-tft (with the documentation below)

This version is working mine on my printer but we need some testing of this group to consider this as a working feature.

Print started from SD with on demand TFT M600:

When the print is on, you can press the "pause" button on the screen and then the gcode buffer will finish few moves, the hotend will park, filament will unload, printer will bip.
You can then put new filament and press "continue" button.
Filament is then loaded (hotend heating will restart first if required as it stop after a defined idle time) and when ok, the head will continue the print. You can remove filament oozing on the file before hotend start printing again.
This can be repeated as many time as you want.
"Pause failed" message can appears on screen but this is cosmetic only and cannot be changed.

Print started from usb on demand M600 from TFT screen:

When the print is on, you can press the "M600 pause" entry in the special menu and then the gcode buffer will finish few moves, the hotend will park, filament will unload, printer will bip.
You can then put new filament and press "M600 resume" entry in the special menu.
Filament is then loaded (hotend heating will restart first if required as it stop after a defined idle time) and when ok, the head will continue the print. You can remove filament oozing on the file before hotend start printing again.
This can be repeated as many time as you want.

Print started from usb on demand M600 from usb serial command (need more test to make sure M108 is taken in account every time):

When the print is on, you can send M600 and then the gcode buffer will finish few moves, the hotend will park, filament will unload, printer will bip.
You can then put new filament and send M108 command to resume. (Alternatively, you can press "M600 resume" entry in the special menu)
Filament is then loaded (hotend heating will restart first if required as it stop after a defined idle time) and when ok, the head will continue the print. You can remove filament oozing on the file before hotend start printing again.
This can be repeated as many time as you want.

Print started from usb M600 in the gcode:

When the print is on, when M600 is seen, the hotend will park, filament will unload, printer will bip.
You can then put new filament and press "M600 resume" entry in the special menu.
Filament is then loaded (hotend heating will restart first if required as it stop after a defined idle time) and when ok, the head will continue the print. You can remove filament oozing on the file before hotend start printing again.
This can be repeated as many time as you want.

Print started from SD M600 in the gcode:
This is not possible for the time being.

Download link : https://www.dropbox.com/…/Marlin.i3.mega-1.1.8-systemic-V7-…
Source code : https://github.com/systemik/Marlin/tree/1.1.x-m600-tft

Have fun and give feedback of successes and issues.

Lien vers le commentaire
Partager sur d’autres sites

En français cela aurait été mieux... mais je vois que si on a un (ou plusieurs) M600 dans le gcode et sur la carte SD cela ne fonctionne pas... Et c'est bien là le problème .... que personne n'a résolu jusqu'à maintenant... A moins que tu ne trouves la solution... sinon des que j'ai un peu de temps je vais passer à la solution de @Murdock avec le double écran , écran tactile pour les impressions courantes ... et recours au 2è écran pour les choses plus compliquées M600 , baby step... etc...  

Enfin tient nous au courant... merci

Lien vers le commentaire
Partager sur d’autres sites

Désolé pour l'anglais mais je participe pas mal sur les forums internationaux et du coup c'est l'anglais qui sort en premier.

 

Pour la dernière combinaison, (M600 dans le gcode and SD) je voulais faire un bout de code qui regarde un des end stop. Du coup, quand tu mets ton filament, tu click sur le end stop a la main et ça repart. Si tu mets un endstop just pour ça ça doit être assez facile (je veux utiliser le test de filament pour ça) car si tu utilise un des endstop X, Y ou Z, l'imprimante peut potentiellement se mettre en erreur.

 

Je vais réfléchir a la question et faire un test pour voir si ça le fait.

Lien vers le commentaire
Partager sur d’autres sites

VICTOIRE.

Bon c'est plus que 2 lignes ... peut être 10 🙂 Mais fallait surtout une nuit de sommeil et avoir une idée différente ...

 

DONC: le sensor de filament OU l'utilisation du menu pendant un print USB OU l'envoi via command serial OU l'inclusion de la commande dans le GCODE en SD... Tout marche chez moi

En ce qui concerne le print via SD, on peut faire autant de pause qu'on veut. J'étais parti sur un truc compliqué mais j'ai changé pour un truc HYPER simple. Quand l'imprimante est en pause, on va dans le menu "Speed", on presse OK et ça repart 🙂

 

Je mets le code sur github de ce pas dans ma branche M600. 

Lien vers le commentaire
Partager sur d’autres sites

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
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • There was an error loading the RSS feed. Please check your settings and try again.
×
×
  • Créer...