Aller au contenu

GO Print

Mise au point Firmwares, EEPROM ...


Messages recommandés

Bonjour à tous,

Suite à de nombreuses demandes et bien que je ne pense pas être la personne la mieux placée pour le faire, je vais donc faire un petit rappel sur les notions de « firmware », « eeprom » et sur la façon d'interagir sur certains paramètres.

 

Avant de commencer ce tuto je me suis dit « C'est bien beau mais tu pars de ou ? ». Et puis je me suis rappelé de deux expériences récentes ou j'ai tenté, malgré mes faibles qualités de pédagogue (heureusement les élèves étaient doués !) d'aider deux personnes débutantes. Et je pense que le mieux est de partir zéro. Je m'excuse par avance pour les personnes expérimentées qui seraient à la recherche d'une petite info au passage, mais la lecture de ce post risque d'être ennuyeuse.

 

Pour commencer je tiens à préciser que les point abordés ici sont valables sur tout ce qui tourne avec un micro-contrôleur ATMEGA 2560. (ramps, trigorilla, mks-gen 1.3 et 1. 4 …)

Et donc par voie de conséquence toutes les imprimantes Anycubic actuelles. (I3 MEGA, KOSSEL, I3) Niveau firmware, je me bornerai à parler de ce que je connais le mieux, c'est à dire MARLIN.

 

Pour commencer chassons quelques idées reçues que j'ai cru parfois percevoir. Un ramp, une trigorilla, une mks gen c'est à 95 % la même chose. Le différence se limitera au design, aux ports d'extension placés sur la carte, à l'intensité disponible pour certaines extensions, au chip gérant la conversion des signaux vers le port usb de votre PC . Mais c'est tout.

 

Je suis prêt à croire que notre amis @slayer-fr va abandonner le Jack Daniel's pour le Chouchen mais qu'une Trigorilla à imprimé à 90mm/s là ou un ramp imprime à 60mm/s, je n'y croirais pas !

Et pour une seule raison, le micro-contrôleur est le même, le fameux ATMEGA 2560.

 

Sans vouloir vous donner un cours avancé (une fois de plus je ne pense pas avoir les connaissances nécessaires à cela) je pense qu'il est intéressant de comprendre ce que nous faisons. Et vu que nous ne sommes pas là pour nous prendre au sérieux, je vais quelque peu vulgariser mon explication.

 

Quelques généralités :

 

L'ATMEGA 2560 se présente un peu comme un condensé de votre PC. Il est à la fois le CPU, la RAM, et le disque dur de votre PC.

Pour fonctionner votre PC à besoin d'un système d'exploitation. L'ATMEGA aussi. Et dans notre cas, ce sera le firmware de notre imprimante.

 

L'ATMEGA n'est cependant pas un processeur comme celui de votre PC, sa fréquence est basse et il ne peut pas gérer une multitude de processus en parallèles.

 

L'ATMEGA ne comprends que du code machine et c'est ce code que vous trouvez dans les fichier « hex » des mises à jour officielles.

Cependant je ne sais pas pour vous mais moi j'ai du mal à comprendre l'hexadécimal ! :P

 

Je vous rassure nous ne sommes pas les seuls ! Mais le langage et la pensée humaine étants difficiles à traduire en langage machine, il fallait trouver un langage intermédiaire et c'est le C++ qui a été choisi.

 

Donc pour résumer quand on souhaite créer un nouveau firmware, on le pense, on l'encode en langage C++ qui reste compréhensible par l'humain, un programme le transforme en langage machine (fichier hex), on transfert le contenu du fichier hex dans l'ATMEGA.

 

Pour information il est très difficile voir impossible de transformer un fichier hex en un programme C++ parfaitement structuré et cohérent.

Pour convertir le C++ en langage machine (et souvent pour le transférer dans l'ATMEGA) on utilise le programme « Arduino ». Lors d'une de mes dernières tentative pour aider un débutant je me suis aperçu qu'il y avait parfois confusion entre le firmware et arduino.

 

Arduino n'est que l'outils de conversion (que l'on nomme compilation) et de transfert.

 

Pour simplifier au maximum pour les débutant je faire un rapide parallèle avec un autre logiciel :

Vous désirez faire un CV ou un courrier. Vous utilisez le programme « WORLD », vous créez votre CV, vous l'enregistrez. (Dans un fichier « cv.docx » par exemple)

Cependant votre document n'est pas le programme WORLD. C'est le fichier « cv.docx ».

 

Pour Arduino c'est pareil ! Arduino est l'équivalent de WORLD et le firmware est l'équivalent de votre document « cv.docx ».

 

Revenons maintenant sur notre sujet principal le firmware de l'I3 MEGA.

 

Notre ami @thsrp demandait comment entrer dans le firmware d'origine Anycubic.

La réponse est hélas très simple, on ne peut pas ! Eh oui comme je l'écrivais plus haut nous n'avons que le fichier hex. Pour pouvoir effectuer des modifications importantes il faut les fichiers C++ que l'on appel « les sources ».

 

Cependant nous pouvons effectuer quelques ajustements.

Le firmware de nos MEGA est basé sur le firmware MARLIN, ce dernier comporte un grand nombre de paramètres qui peuvent être modifiés avant transfert dans les fichiers source. Cependant, certains paramètres nécessitent d'êtres modifiés, testés, modifiés de nouveau, puis testés de nouveau … Cette procédure étant fastidieuse en passant à chaque fois par une compilation et un transfert intégral des sources, les développeurs de marlin on fait appel à une zone spécifique de l'ATMEGA nommée « eeprom ». Cette dernière, permet de stocker des informations et de les modifier sans avoir à transférer tout le reste du programme.

 

Pour effectuer ces modifications 2 options. Passer par l'envoie de commande GCODE via votre programme de pilotage préféré, (Pronterface, Repetier-Host …) ou utiliser la fonction simplifiée de Repetier-Host.

 

Mode commandes GCODE :

 

Lancer Pronterface et connectez-vous à votre imprimante.

 

Dans la zone entourée en rouge écrire M501 et cliquer sur « send ».

La zone entourée en bleu correspond au retour de la commande.

 

Pronter_1.thumb.png.9f59a0dceb232782edb6d40021c3334a.png

 

La commande M501 demande à la machine de retourner les paramètres contenus dans l'eeprom.

 

Si l'on analyse quelques paramètres de la réponse cela donne :

 

echo: M92 X80.00 Y80.00 Z400.00 E92.60

 

Cette ligne donne le nombre de steps par mm pour chacun des axes ainsi que pour l'extrudeur (E).

 

Pour changer par exemple la valeur de l'axe Y par 81, il vous suffit de rentrer dans la zone entourée en rouge ;

 

M92 Y81.00 sans le « echo » puis cliquez sur « send ».

 

Et maintenant il y a un piège. Si vous ne faites rien de plus, au prochaine redémarrage de votre carte, le ou les nouveaux paramètres seront perdus ! Pour qu'ils deviennent permanents, il vous rentrer la commande M500 dans la zone entourée en rouge et cliquer sur « send ».

 

Ce a quoi la machine répond quelque chose dans ce style « echo:Settings Stored (465 bytes; crc -22444) »

 

La configuration est maintenant permanente.

 

En reprenant la même logique, vous pouvez ajuster vos vitesses maximum avec la commande M203, les accélérations maximum, avec la commande M201, …

 

Reprenons un autre exemple détaillé avec la commande M206.

Lors d'un M501 la machine donne :

 

echo: M206 X0.00 Y0.00 Z0.00

 

Ceci signifie qu'aucun offset n 'est paramétré. Seulement, après avoir fait le réglage de votre bed, vous constatez que votre première couche est trop écrasée.

 

D'habitude vous tricheriez dans le trancheur. Seulement si au prochain réglage votre machine à bougée un peu, vous serez obligé de retrancher votre pièce pour compenser.

 

Ou bien vous joueriez sur vos endstops. Mais avec le dual z-endstop il est fastidieux d'avoir un réglage parfait des deux cotés tout en ayant le bon écrasement.

 

Ou pire vous recommenceriez le nivellement de votre lit jusqu'à l'écrasement idéal. Cette procédure peut vite devenir très rébarbative.

Il y a plus simple !

Dans la zone entourée en rouge saisissez :

M206 Z0.01 puis « send »

M500 puis « send »

 

Votre machine considérera désormais que le 0 de l'axe Z se trouvera à 0.01mm au dessus du déclenchement du endstop. Si l'écrasement est toujours trop important, recommencez avec comme valeur 0.02 et ainsi de suite.

 

echo: M206 X0.00 Y0.00 Z0.00

 

C'est plus simple et garde le gcode généré par le trancheur vierge de toute compensation liée au nivellement du lit.

 

Je ne détaillerais pas toutes les commandes mais je vous invite à consulter cette page pour plus d'informations.

 

http://reprap.org/wiki/G-code/fr

 

En revanche n'oubliez jamais de remettre l'offset de l'axe Z à 0.00 avant de refaire votre prochain nivellement du lit.

 

Pour les allergiques de la ligne de commande il y a encore plus simple !

Mode "Graphique" :

 

Installez Repetier-Host sur votre PC.

 

Configurez la connexion à votre imprimante comme ceci : (adaptez le port com)

 

Config_Repet.png.767e97aea13325f740cff9ea9331f837.png

 

Puis connectez l'imprimante.

Une fois la connexion établie, dans le menu « Configuration », choisissez « Configuration eeprom du firmware ». Vous arrivez dans l'écran suivant :

 

rep_eeprom.png.b19b239b7943af052fcaf06f23c10987.png

 

Cet écran vous permet de modifier, de façon « graphique », tous les paramètres de votre eeprom.

Un autre avantage de cette méthode est que les paramètres sont clairement nommés.

 

Dans cet écran vous pourrez également sauvegarder ces paramètres dans un fichier sur votre pc pour une restauration ultérieure via le bouton « Exporter valeurs EEPROM ».

 

Voilà pour ce rapide survol qui je l’espère n'était pas trop soporifique .

 

Si vous avez des questions, n'hésitez pas à les poster car il est toujours plus simple d'expliquer avec des cas concrets.

Modifié (le) par Murdock
  • J'aime 5
  • Merci ! 6
Lien vers le commentaire
Partager sur d’autres sites

il y a 9 minutes, Murdock a dit :

Et je pense que le mieux est de partir zéro

wahou tu m'as fait peur , j'ai bien cru que tu allais commencer par l'air des dinosaures

 

il y a 24 minutes, Murdock a dit :

Cependant je ne sais pas pour vous mais moi j'ai du mal à comprendre l'hexadécimal ! :P

heuu , perso , j'ai aucun problème pour le comprendre et le parler après un bon jack :13_upside_down:

 

 

par contre , Voilà un bon petit tuto simple à comprendre qui va permettre à de nombreux débutant que mieux comprendre le fonctionnent de leur bête à chagrin, et à certain plus ancien leur  apporter un petit rafraîchissement de la mémoire :P

 

Good job

 

 

ps: le Chouchen , c'est très bon , mais je reste fidèle à mon bon vieux jack :D

Lien vers le commentaire
Partager sur d’autres sites

Voila un excellent tuto pour démarrer je l'imprime tout de suite ... heu... avant faut que je trouve comment ??? y a pas moyen d'imprimer un post sur ce forum???

 

Bon ben un copier et coller dans un doc word...

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

Merci pour ce tuto

Les questions de novice commence ....

j'ai installé Host Repetier V1.6  /paramétré la partie connexion du paramétrage de l'imprimante ( vitesse de mon COM8 est de de 115200) / demarré dans Serveur, réseau local /Usb relié à la méga. 

Tmp repetier com8.pngpuis Connecté

tmp -Repetier-Host V1.6.0pas liaison epprom.pngLe menu "configuration EEprom du Firmware"  reste inactif

TMP  2017-09-04 21_20_15-Erreur de connexion.png

  Pourquoi  pas de liaison série ?  :S   Erreur Où ?

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

il y a 10 minutes, db42 a dit :

Pour la méga met la vitesse à 250000

 

il y a 10 minutes, Maxtor a dit :

Change de port peut être 

Après reboot : Idem

TMP vitesse COM8.png 

Je suis sous WIN8.1 et le port COM ne monte pas à 250000. Sous Cura je suis également à 115200

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

Port  Serveur Local Host Repetier ? ou Localhost ?

Problème de blocage du parfeu . Si oui comment faire ?

 

Tmp accès port COM8 refusé.png

TMP quel serveur LOCAL.png

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

Ignores ce que te dis Windows. Dans Repetier mets COM8 250000Bds.

La vitesse spécifiée dans windows n'est pas prise en compte.

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

il y a 4 minutes, Murdock a dit :

Ignores ce que te dis Windows. Dans Repetier mets COM8 250000Bds.

La vitesse spécifiée dans windows n'est pas prise en compte.

OK

il y a 5 minutes, doby02 a dit :

Si Un logiciel tel que Cura est en marche ferme le programme. Et essaies de changer de port usb.

Je viens de tester à nouveau en USB via Cura , cela ne fonctionne plus ...  Je cherche ...   Entre temps mis à jour majeur de la version du programme antivirus AVAST

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, slayer-fr a dit :

wahou tu m'as fait peur , j'ai bien cru que tu allais commencer par l'air des dinosaures

Nous aurions pu aussi disserter sur la question de qui est arrivé en premier, la poule ou l’œuf ?

Il y a 5 heures, slayer-fr a dit :

heuu , perso , j'ai aucun problème pour le comprendre et le parler après un bon jack :13_upside_down:

Perso j'ai essayé le décodage de  l'adsl à l'oreille, jusqu'à 17Méga avec un bon rhum ca passe, mais le vdsl2 ca veut pas ! :P

Il y a 5 heures, slayer-fr a dit :

ps: le Chouchen , c'est très bon , mais je reste fidèle à mon bon vieux jack :D

Toujours rester sur les valeurs sures ... 

Lien vers le commentaire
Partager sur d’autres sites

il y a 11 minutes, Tfou57 a dit :

Je viens de tester à nouveau en USB via Cura , cela ne fonctionne plus ...  Je cherche ...   Entre temps mis à jour majeur de la version du programme antivirus AVAST

Je suis également avec avast et pas de soucis. Essai de supprimer le périphérique com8 dans le gestionnaire de périphérique et redémarre ton PC.

Contrairement aux vieux modèles de modems série etc il ne faut jamais toucher aux paramètres série dans le gestionnaire de périphériques. 

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

Petites astuces dans ce genre de cas : 

Evitez les ports USB en façade du PC. (Globalement éviter tout port USB relié à la carte mère par un câble)

Evitez les ports USB situés tout en haut de la carte mère. (L'alimentation de ces ports est souvent partagée avec d'autre périphérique de la carte mère.)

Privilégiez les ports situés au même niveau que le connecteur ethernet intégré de votre carte mère. Et évitez les périphériques énergivores sur cette rangée de connecteurs.

Utilisez un câble USB de bonne qualité, le plus court possible, de préférence blindé.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 2 heures, Murdock a dit :

Ignores ce que te dis Windows. Dans Repetier mets COM8 250000Bds.

La vitesse spécifiée dans windows n'est pas prise en compte.

Désinstallation du driver / réinstallation à multiple reprise : Idem ouverture du port COM8 impossible

Attention , le dinosaure a fait un pas en avant !...

En fait dans Repetier-Host j'avais le serveur local ouvert.

En coupant le serveur local et en mettant 250000 bauds , le port COM8 s'ouvre ( prise verte à gauche de la barre d'icones)    

L'imprimante confirme en bas de l'afficheur : " USB OnLine"

tmp CONNECTION com8.png

Mais je n'ai toujours pas  au menu de "configuration de l'EEPROM du Firmware"

tMP connection COM8 mais pas accès EEPROM.png

Une petite piste ? pour le second pas du dinosaure ...

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

Il y a 4 heures, Tfou57 a dit :

Une petite piste ? pour le second pas du dinosaure ...

Ouep alors je dirais en premier, vérifier que les températures s'affichent bien en bas de la fenêtre et que quand tu demandes par exemple un home du x dans l'onglet contrôle manuel, la machine l’exécute bien. Si ca n'est pas le cas c'est que la connexion n'est pas correctement ouverte. Si par contre tout fonctionne et que tu n'as pas l'option dans le menu, c'est que tu utilise une version du firmware dans laquelle le support de l'eeprom n'est pas activée. Il me semble que c'était le cas sur la version dite "1.0.0.0" par Anycubic.

Lien vers le commentaire
Partager sur d’autres sites

Il y a 5 heures, Murdock a dit :

Ouep alors je dirais en premier, vérifier que les températures s'affichent bien en bas de la fenêtre et que quand tu demandes par exemple un home du x dans l'onglet contrôle manuel, la machine l’exécute bien. Si ca n'est pas le cas c'est que la connexion n'est pas correctement ouverte. Si par contre tout fonctionne et que tu n'as pas l'option dans le menu, c'est que tu utilise une version du firmware dans laquelle le support de l'eeprrrom n'est pas activée. Il me semble que c'était le cas sur la version dite "1.0.0.0" par Anycubic.

Après chaque lancement de Repetier_Host , je dois arrêter le serveur local pour pouvoir ouvrir le port Com8 . Cela se configure où .

Après ouverture du port Com8 : T° s'affiche , graphique des T° également . Les déplacements manuels de tous les axes sont OK

Côté Firmware l'imprimante a le V1.01, cela explique peut-être donc le menu EEpprom non actif.

J'ai remarqué que même connecté par le COM8 , Repetier n'arrive pas à extraire des infos, comme le firmware de l'imprimante

Tmp info retour Repetier sur I3.png

Si j'ai bien compris dans j'aurais injecté le firmware dual endstop , le menu "EEprom" dans Repetier-Host sera actif.

Le firmware à prendre est bien toujours celui en bas du post1 de @slayer-fr   ?

"dernier firmware en date fonctionnel modifier ( emplacement des 4 points de réglage du plateau plus cohérent que ceux d'origine)    i3-mega-special.hex '"

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

Oui celui -la va bien , c'est celui que j'ai mais a charger sur la carte que lorsque ton double endstop sera fonctionel... ce qui ne doit pas être encore le cas si tu as chargé la version 1.01

Lien vers le commentaire
Partager sur d’autres sites

Il y a 3 heures, Tfou57 a dit :

Après chaque lancement de Repetier_Host , je dois arrêter le serveur local pour pouvoir ouvrir le port Com8 . Cela se configure où .

C'est marrant moi même si il tourne, cela ne gène pas.

Colles ce lien dans ton gestionnaire de fichiers :

Panneau de configuration\Programmes\Programmes et fonctionnalités

Trouves la ligne Repetier-Server et désinstalles le.

Il y a 3 heures, Tfou57 a dit :

Côté Firmware l'imprimante a le V1.01, cela explique peut-être donc le menu EEpprom non actif.

Tout a fait.

Il y a 3 heures, Tfou57 a dit :

Si j'ai bien compris dans j'aurais injecté le firmware dual endstop , le menu "EEprom" dans Repetier-Host sera actif.

Tout à fait.

Il y a 3 heures, Tfou57 a dit :

Le firmware à prendre est bien toujours celui en bas du post1 de @slayer-fr   ?

"dernier firmware en date fonctionnel modifier ( emplacement des 4 points de réglage du plateau plus cohérent que ceux d'origine)    i3-mega-special.hex '"

Oui c'est bien celui-ci.

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

Il y a 1 heure, Murdock a dit :

C'est marrant moi même si il tourne, cela ne gène pas.

Colles ce lien dans ton gestionnaire de fichiers :

Panneau de configuration\Programmes\Programmes et fonctionnalités

Trouves la ligne Repetier-Server et désinstalles le.

Merci , c'est fait : Problème disparu ( COM8 toujours accessible!)

Lien vers le commentaire
Partager sur d’autres sites

Apres un tel TUTO ce qui devait arriver arriva...... on a envie d'en savoir plus et des questions se posent...

 

1- les logiciels:

a) Arduino sert donc a la fois a compiler les sources du firmware puis une fois le fichier .hex ainsi créé , le logiciel peut aussi le televerser (on va prendre un mot français) dans l' ATMEGA.

b) Pour le televersage on trouve aussi l'option dans Cura, Simplify 3D  , mais je ne le vois pas dans Repetier ??? (c'est un comble vu tout ce qu'il fait au niveau du firmware???) en tout cas je ne le vois pas..? je me trompe??

c) Petite precision pour Repetier ce dernier faisant a la fois l'interface "envoie de commande GCODE" et interface graphique autant avoir celui là non? dans l'interface graphique les changements sont automatiquement sauvegardés (le M500 se fait automatiquement) ?

d) être bien équipé au niveau logiciel veut dire:

-un bon slicer genre Cura , simplify 3D (celui de Repetier semble plus réduit)

-un bon logiciel pour gérer les envois de gcodes soit en commande soit en automatique: Repetier

-enfin Arduino pour pouvoir compiler le firmware quand on travaille dans les sources de ce dernier

 

2- l'eproom

a) Permet d'accéder à une partie du firmware, cela se réduit aux fonctions décrites après l'envoie dune commande M501 ? Tout le reste est inaccessible ?? (sans retravailler les sources et recompiler)

b) Avant toute chose et tout changement dans l'eproom via l'envoi de commandes ou via l'interface graphique il est judicieux de faire un "exporter valeurs eeprom" car si l'on rencontre des problèmes on peut revenir à 0 en réimportant les valeurs ?

 

3- Le firmware

a) Le firmware de la mega est a base de marlin dont les sources ne sont pas publiques et donc on ne peut le compiler...

b) les sources d'un marlin se composent de plusieurs fichiers certains doivent être optionnels je suppose mais a la base quels sont les fichiers INDISPENSABLES dans un marlin ? quels sont leurs fonctions ? et leur extensions ? Tous ces fichiers sont en C++ ?

 

Bon si on s'arrêtait là pour aujourd'hui....!!

  • J'aime 1
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
×
×
  • Créer...